diff --git a/INSTALL.md b/INSTALL.md index 7f1d47879..f6434c07b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -451,6 +451,13 @@ Replace `` 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: @@ -527,7 +534,7 @@ devkitARM is now installed. devkitARM is now installed. -### Installing devkitARM on Arch Linux +## 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. @@ -545,7 +552,7 @@ devkitARM is now installed. devkitARM is now installed. -### Other toolchains +## 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 @@ -557,14 +564,6 @@ 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 diff --git a/Makefile b/Makefile index c36cc8e93..6283a87fe 100644 --- a/Makefile +++ b/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 +override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g 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))" diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 62df0878b..a3052dfc4 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1729,6 +1729,28 @@ .2byte \quantity .endm + @ sets an NPC up to follow the player + .macro setfollower localId:req, flags:req + .byte 0xe3 + .byte \localId + .2byte \flags + .endm + + @ remove the following NPC (assumes there will only ever be one) + .macro destroyfollower + .byte 0xe4 + .endm + + @ makes the player and follower face one another + .macro facefollower + .byte 0xe5 + .endm + + @ checks if you have a follower. returns the result to VAR_RESULT + .macro checkfollower + .byte 0xe6 + .endm + @ Supplementary diff --git a/asm/macros/trainer_hill.inc b/asm/macros/trainer_hill.inc index 988e2867a..65c8c6bef 100644 --- a/asm/macros/trainer_hill.inc +++ b/asm/macros/trainer_hill.inc @@ -100,9 +100,9 @@ special CallTrainerHillFunction .endm - @ 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 + @ 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 special CallTrainerHillFunction .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index eff53de84..1cfc5230c 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -763,7 +763,7 @@ Move_TAKE_DOWN: setalpha 12, 8 createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10 delay 35 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 1 @@ -783,14 +783,14 @@ Move_TAKE_DOWN: Move_DOUBLE_EDGE: loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish delay 10 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 16, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 16, 16, RGB_WHITE createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 3 waitforvisualfinish @@ -802,7 +802,7 @@ Move_DOUBLE_EDGE: createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 0 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1 @@ -860,7 +860,7 @@ Move_FIRE_BLAST: call FireBlastRing call FireBlastRing delay 24 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 0, 8, RGB_BLACK waitforvisualfinish delay 19 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 20, 1 @@ -882,7 +882,7 @@ Move_FIRE_BLAST: delay 3 call FireBlastCross waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 2, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 2, 8, 0, RGB_BLACK waitforvisualfinish end FireBlastRing: @@ -941,17 +941,17 @@ Move_MEGA_PUNCH: loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, RGB_BLACK setalpha 12, 8 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE delay 50 call SetImpactBackground createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -984,18 +984,18 @@ Move_MEGA_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, RGB_BLACK setalpha 12, 8 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE delay 50 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call SetImpactBackground createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -1054,21 +1054,21 @@ SonicBoomHit: Move_THUNDER_SHOCK: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -44, 0 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1076,7 +1076,7 @@ Move_THUNDERBOLT: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SHOCK_3 loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 24, -52, 0 @@ -1088,9 +1088,9 @@ Move_THUNDERBOLT: createvisualtask AnimTask_ElectricBolt, 5, 0, -60, 1 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 44, 0, 0, 3 @@ -1104,20 +1104,20 @@ Move_THUNDERBOLT: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 224, 40, 2, -32765 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 0 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 6, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 6, RGB_BLACK waitforvisualfinish delay 20 waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1125,7 +1125,7 @@ Move_THUNDER_WAVE: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_SPARK_H - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -48, 0 @@ -1138,7 +1138,7 @@ Move_THUNDER_WAVE: delay 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, 16 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1247,10 +1247,10 @@ Move_REVERSAL: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB_WHITE, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB_WHITE, 8, RGB_BLACK, 0 waitforvisualfinish delay 30 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 31, 3, 2, 0, 10, RGB_WHITE delay 10 playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 @@ -1264,7 +1264,7 @@ Move_REVERSAL: createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 8 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 8, RGB_BLACK, 0 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10, 1, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 @@ -1348,7 +1348,7 @@ Move_PSYCH_UP: delay 4 playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 9, F_PAL_ATTACKER, 2, 10, 0, RGB_YELLOW + createvisualtask AnimTask_BlendBattleAnimPal, 9, 2, 2, 10, 0, RGB_YELLOW delay 30 clearmonbg ANIM_ATK_PARTNER blendoff @@ -1446,18 +1446,18 @@ FuryCutterRight: createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 1 goto FuryCutterContinue FuryCutterMedium: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 FuryCutterStrong: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 FuryCutterStrongest: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 Move_SELF_DESTRUCT: loadspritegfx ANIM_TAG_EXPLOSION - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 9, RGB_RED createvisualtask AnimTask_ShakeMon2, 5, 4, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 6, 0, 38, 1 @@ -1466,7 +1466,7 @@ Move_SELF_DESTRUCT: call SelfDestructExplode call SelfDestructExplode waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 9, 0, RGB_RED end SelfDestructExplode: playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER @@ -1623,7 +1623,7 @@ RisingWaterHitEffect: Move_EXPLOSION: loadspritegfx ANIM_TAG_EXPLOSION - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 createvisualtask AnimTask_ShakeMon2, 5, 4, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 8, 0, 40, 1 @@ -1632,9 +1632,9 @@ Move_EXPLOSION: call Explosion1 call Explosion1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 16, 16, RGB_WHITE delay 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 16, 0, RGB_WHITE end Explosion1: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER @@ -1678,16 +1678,16 @@ Move_PROTECT: Move_DETECT: loadspritegfx ANIM_TAG_SPARKLE_4 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 9, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 9, RGB_WHITE delay 18 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 20, -20 waitforvisualfinish delay 10 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 9, 0, RGB_BLACK - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 9, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 9, 0, RGB_WHITE waitforvisualfinish end @@ -1709,7 +1709,7 @@ Frustration_Continue: Frustration_Strongest: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 0, 9, 31 waitforvisualfinish delay 20 playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1740,12 +1740,12 @@ Frustration_Strongest: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 9, 0, 31 goto Frustration_Continue Frustration_Strong: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 0, 9, 31 waitforvisualfinish delay 20 playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1766,7 +1766,7 @@ Frustration_Strong: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, -6, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 9, 0, 31 goto Frustration_Continue Frustration_Medium: playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1808,7 +1808,7 @@ Move_SAFEGUARD: createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 0, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 10, 0, 2, 0, 10, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -1864,13 +1864,13 @@ Move_GUILLOTINE: playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 16, RGB_BLACK delay 9 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 23, 1 delay 46 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 8, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -1900,7 +1900,7 @@ Move_PAY_DAY: Move_OUTRAGE: loadspritegfx ANIM_TAG_SMALL_EMBER loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 8, 3 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 2, 5, 3, 8, RGB(14, 13, 0) + createvisualtask AnimTask_BlendColorCycle, 2, 7, 2, 5, 3, 8, RGB(14, 13, 0) createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 5, 4 delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3 @@ -1946,25 +1946,25 @@ Move_SPARK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) delay 10 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) delay 20 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 7, 7, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 7, 7, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 @@ -1976,14 +1976,14 @@ Move_SPARK: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, -31, 2, 0, 6, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 4, -31, 2, 0, 6, RGB(31, 31, 22) call ElectricityEffect waitforvisualfinish end @@ -2014,7 +2014,7 @@ Move_ATTRACT: createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90 delay 75 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 4, 4, 0, 10, RGB(31, 25, 27) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 4, 4, 0, 10, RGB(31, 25, 27) end Move_GROWTH: @@ -2024,7 +2024,7 @@ Move_GROWTH: waitforvisualfinish end GrowthEffect: - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_ATTACKER, 0 return @@ -2084,12 +2084,12 @@ Move_MEAN_LOOK: loadspritegfx ANIM_TAG_EYE monbg ANIM_DEF_PARTNER playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, RGB_BLACK loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET, 15, 4 waitplaysewithpan SE_M_LEER, SOUND_PAN_TARGET, 85 createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2 delay 120 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK delay 30 clearmonbg ANIM_DEF_PARTNER waitforvisualfinish @@ -2229,7 +2229,7 @@ Move_ICY_WIND: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_ICE_SPIKES monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 11, 4, 0, 4, RGB_BLACK fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_ICY_WIND, 0 @@ -2246,7 +2246,7 @@ Move_ICY_WIND: clearmonbg ANIM_DEF_PARTNER restorebg waitbgfadeout - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 11, 4, 4, 0, RGB_BLACK waitbgfadein end IcyWindSwirlingSnowballs: @@ -2601,9 +2601,9 @@ Move_EARTHQUAKE: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50 playsewithpan SE_M_EARTHQUAKE, 0 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 end Move_FISSURE: @@ -2614,11 +2614,11 @@ Move_FISSURE: delay 8 call FissureDirtPlumeFar delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeClose delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeFar delay 50 @@ -2846,7 +2846,7 @@ SkullBashAttack: playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish playse SE_BANG - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1 createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 0 @@ -2892,7 +2892,7 @@ Move_GLARE: createvisualtask AnimTask_GlareEyeDots, 5, 0 playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 @@ -2901,7 +2901,7 @@ Move_GLARE: delay 2 createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 0, 16, 0, RGB_BLACK end Move_BARRAGE: @@ -2926,17 +2926,17 @@ SkyAttackSetUp: jumpretfalse SkyAttackSetUpAgainstOpponent goto SkyAttackSetUpAgainstPartner SkyAttackSetUpAgainstOpponent: - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 1, 0, 12, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 27, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 8, 0, RGB_BLACK createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 loopsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER, 4, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 15, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_PARTNER | F_PAL_DEF_PARTNER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 25, 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -2945,13 +2945,13 @@ SkyAttackSetUpAgainstPartner: createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 8, 0, RGB_BLACK createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 15, 0, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 1, 8, 0, RGB_BLACK waitforvisualfinish @@ -2963,7 +2963,7 @@ SkyAttackUnleash: loadspritegfx ANIM_TAG_BIRD call SetSkyBg monbg ANIM_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 16, RGB_WHITE delay 4 createvisualtask AnimTask_AttackerFadeToInvisible, 5, 0 waitforvisualfinish @@ -2975,7 +2975,7 @@ SkyAttackUnleash: delay 20 createvisualtask AnimTask_AttackerFadeFromInvisible, 5, 1 delay 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 15, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATTACKER call UnsetSkyBg @@ -3025,7 +3025,7 @@ Move_SUPER_FANG: createsprite gSuperFangSpriteTemplate, ANIM_TARGET, 2 playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB(31, 2, 2), 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB(31, 2, 2), 14, RGB_WHITE, 14 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 7, 12, 1 waitforvisualfinish blendoff @@ -3113,7 +3113,7 @@ Move_SPITE: playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 6, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 6, 0, 8, RGB_WHITE createvisualtask AnimTask_SpiteTargetShadow, 2 loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3 waitforvisualfinish @@ -3198,7 +3198,7 @@ Move_ENDURE: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -3332,9 +3332,9 @@ MagnitudeIntense: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50 loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 goto MagnitudeEnd Move_RAPID_SPIN: @@ -3361,7 +3361,7 @@ Move_MOONLIGHT: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR setalpha 0, 16 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, RGB_BLACK waitforvisualfinish createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 @@ -3484,12 +3484,12 @@ Move_HEAT_WAVE: Move_HAIL: loadspritegfx ANIM_TAG_HAIL loadspritegfx ANIM_TAG_ICE_CRYSTALS - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 0, 6, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_Hail, 5 loopsewithpan SE_M_HAIL, 0, 8, 10 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 6, 0, RGB_BLACK end Move_TORMENT: @@ -3567,7 +3567,7 @@ Move_CHARGE: loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -3591,7 +3591,7 @@ Move_CHARGE: createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff end @@ -3721,13 +3721,13 @@ BrickBreakNormal: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, RGB_BLACK delay 37 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 10, 1, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET end @@ -3747,7 +3747,7 @@ BrickBreakShatteredWall: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, RGB_BLACK delay 37 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 10, 1, 0 @@ -3759,7 +3759,7 @@ BrickBreakShatteredWall: createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET end @@ -3798,7 +3798,7 @@ Move_ENDEAVOR: Move_ERUPTION: loadspritegfx ANIM_TAG_WARM_ROCK - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 2, 0, 4, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 2, 0, 4, RGB_RED waitforvisualfinish createvisualtask AnimTask_EruptionLaunchRocks, 2 waitplaysewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER, 60 @@ -3818,7 +3818,7 @@ Move_ERUPTION: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 8, 60 loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, F_PAL_BG | F_PAL_BATTLERS, 4, 4, 0, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, 31, 4, 4, 0, RGB_RED end Move_SKILL_SWAP: @@ -3873,13 +3873,13 @@ Move_CAMOUFLAGE: monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER setalpha 16, 0 - createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 3, 0, 14 + createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14 delay 16 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 4 playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER waitforvisualfinish delay 8 - createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 0, 0, 0 + createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 0, 0, 0 waitforvisualfinish createvisualtask AnimTask_AttackerFadeFromInvisible, 2, 1 waitforvisualfinish @@ -3891,13 +3891,13 @@ Move_TAIL_GLOW: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK waitforvisualfinish createsprite gTailGlowOrbSpriteTemplate, ANIM_ATTACKER, 66, ANIM_ATTACKER delay 18 loopsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER, 16, 6 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff delay 1 @@ -3955,15 +3955,15 @@ Move_MIST_BALL: waitforvisualfinish playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 10, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 delay 0 playsewithpan SE_M_HAZE, 0 createvisualtask AnimTask_LoadMistTiles, 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 3, 0, 16, RGB_WHITE delay 8 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0 delay 70 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 16, 0, RGB_WHITE end Move_FEATHER_DANCE: @@ -4133,7 +4133,7 @@ Move_AROMATHERAPY: loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 0, 7, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 0, 7, RGB(13, 31, 12) delay 1 monbg ANIM_ATTACKER delay 1 @@ -4151,7 +4151,7 @@ Move_AROMATHERAPY: waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 7, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 7, 0, RGB(13, 31, 12) delay 1 playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER createvisualtask AnimTask_StatusClearedEffect, 2, 1 @@ -4162,7 +4162,7 @@ Move_AROMATHERAPY: createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_ANIM_1, 3, 10, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 43, 3, 10, 0, RGB(13, 31, 12) createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 waitforvisualfinish end @@ -4223,13 +4223,13 @@ Move_ODOR_SLEUTH: waitforvisualfinish clearmonbg ANIM_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_WHITEALPHA, 16, RGB_WHITEALPHA, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_WHITEALPHA, 16, RGB_WHITEALPHA, 0 playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER end Move_GRASS_WHISTLE: loadspritegfx ANIM_TAG_MUSIC_NOTES - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB(18, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB(18, 31, 12) waitforvisualfinish createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish @@ -4260,19 +4260,19 @@ Move_GRASS_WHISTLE: delay 4 waitforvisualfinish createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB(18, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB(18, 31, 12) waitforvisualfinish end Move_TICKLE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, RGB_BLACK waitforvisualfinish delay 20 createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, ANIM_ATTACKER @@ -4351,7 +4351,7 @@ Move_AERIAL_ACE: playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER delay 5 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -4361,7 +4361,7 @@ Move_AERIAL_ACE: Move_IRON_DEFENSE: loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 waitforvisualfinish end @@ -4414,7 +4414,7 @@ Move_VOLT_TACKLE: loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 8, RGB_BLACK waitforvisualfinish createsprite gVoltTackleOrbSlideSpriteTemplate, ANIM_ATTACKER, 1 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -4451,7 +4451,7 @@ Move_VOLT_TACKLE: delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 8, 0, RGB_BLACK waitforvisualfinish end @@ -4547,7 +4547,7 @@ Move_SHOCK_WAVE: loadspritegfx ANIM_TAG_LIGHTNING monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 20, 0, 2 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -4561,10 +4561,10 @@ Move_SHOCK_WAVE: playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 6, 18, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 3, 16, 0, RGB_WHITE - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 16, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 5, 4, 0, 16, 16, RGB_BLACK delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 0, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, 4, 0, 0, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff @@ -4629,7 +4629,7 @@ Move_MIND_READER: createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5 delay 40 playsewithpan SE_M_LEER, SOUND_PAN_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 1, 2, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, 1, 1, 2, 0, 10, RGB_BLACK call MindReaderEyeSpikeEffect waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -4665,8 +4665,8 @@ Move_ICE_PUNCH: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB(12, 26, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 9, RGB(12, 26, 31) delay 20 playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 0 @@ -4688,9 +4688,9 @@ Move_ICE_PUNCH: delay 15 call IceCrystalEffectShort delay 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 9, 0, RGB(12, 26, 31) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 9, 0, RGB(12, 26, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -4712,7 +4712,7 @@ Move_CONFUSION: call SetPsychicBackground setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE waitforvisualfinish playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 15, 1 @@ -4729,7 +4729,7 @@ Move_PSYCHIC: call SetPsychicBackground setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB(31, 23, 0) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB(31, 23, 0) waitforvisualfinish loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 @@ -4754,7 +4754,7 @@ FutureSight: call SetPsychicBackground setalpha 8, 8 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_ATTACKER, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -4767,7 +4767,7 @@ Move_THUNDER: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1 waitbgfadein - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK delay 16 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET @@ -4811,7 +4811,7 @@ Move_THUNDER: delay 2 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 2, 16, 0, RGB_BLACK waitforvisualfinish restorebg waitbgfadeout @@ -4825,7 +4825,7 @@ Move_THUNDER_PUNCH: loadspritegfx ANIM_TAG_LIGHTNING monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK waitforvisualfinish playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 @@ -4845,7 +4845,7 @@ Move_THUNDER_PUNCH: createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK delay 20 waitforvisualfinish clearmonbg ANIM_TARGET @@ -4931,7 +4931,7 @@ Move_DRAGON_BREATH: delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 0, 9, RGB_RED createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 21, 1 @@ -4951,7 +4951,7 @@ Move_DRAGON_BREATH: delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -5031,17 +5031,17 @@ Move_LIGHT_SCREEN: end SpecialScreenSparkle: - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, ANIM_ATTACKER, 1 delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, ANIM_ATTACKER, 1 delay 5 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, ANIM_ATTACKER, 1 delay 7 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, ANIM_ATTACKER, 1 delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, ANIM_ATTACKER, 1 delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, 1 return Move_MIRROR_COAT: @@ -5064,11 +5064,11 @@ Move_REFLECT: waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 15 createsprite gReflectWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_BLUE_LIGHT_WALL delay 20 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, ANIM_ATTACKER, TRUE + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, ANIM_ATTACKER, 1 delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, ANIM_ATTACKER, TRUE + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, ANIM_ATTACKER, 1 delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, ANIM_ATTACKER, TRUE + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, ANIM_ATTACKER, 1 waitforvisualfinish delay 1 blendoff @@ -5135,7 +5135,7 @@ Move_SMOG: call SmogCloud delay 120 loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 18, 2 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(26, 0, 26) delay 10 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 15, 1 waitforvisualfinish @@ -5269,14 +5269,14 @@ Move_DRAGON_RAGE: Move_RAIN_DANCE: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 delay 120 delay 30 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 4, 0, RGB_BLACK waitforvisualfinish end @@ -5347,7 +5347,7 @@ Move_ICE_BEAM: splitbgprio ANIM_TARGET setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK waitforvisualfinish createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 4, 4, 0, 10 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20 @@ -5356,7 +5356,7 @@ Move_ICE_BEAM: call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, -31, 0, 7, RGB(0, 20, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, -31, 0, 7, RGB(0, 20, 31) createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 25, 1 call IceBeamCreateCrystals call IceBeamCreateCrystals @@ -5372,9 +5372,9 @@ Move_ICE_BEAM: waitforvisualfinish delay 20 call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 5, 7, 0, RGB(0, 20, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -5437,7 +5437,7 @@ SolarBeamEnd: SolarBeamSetUp: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 1, 4, 0, 11, RGB(31, 31, 11) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 1, 4, 0, 11, RGB(31, 31, 11) playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call SolarBeamAbsorbEffect waitforvisualfinish @@ -5482,7 +5482,7 @@ SolarBeamUnleash: delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 10, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 0, 10, RGB(25, 31, 0) createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 delay 4 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1 @@ -5497,7 +5497,7 @@ SolarBeamUnleash: call SolarBeamUnleash1 call SolarBeamUnleash1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 10, 0, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 10, 0, RGB(25, 31, 0) call UnsetSolarBeamBg goto SolarBeamEnd SolarBeamUnleash1: @@ -5572,7 +5572,7 @@ BlizzardAgainstPlayer: Move_POWDER_SNOW: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 0, 3, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, RGB_BLACK waitforvisualfinish panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call PowderSnowSnowballs @@ -5584,7 +5584,7 @@ Move_POWDER_SNOW: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 20 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 3, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 3, 0, RGB_BLACK end PowderSnowSnowballs: createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1 @@ -5665,7 +5665,7 @@ Move_SIGNAL_BEAM: call SignalBeamOrbs call SignalBeamOrbs createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 25, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 8, 5, RGB_RED, 8, RGB(1, 30, 0), 8 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 8, 5, RGB_RED, 8, RGB(1, 30, 0), 8 call SignalBeamOrbs call SignalBeamOrbs call SignalBeamOrbs @@ -5698,7 +5698,7 @@ Move_ABSORB: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 @@ -5711,7 +5711,7 @@ Move_ABSORB: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5751,7 +5751,7 @@ Move_MEGA_DRAIN: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 8, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 @@ -5764,7 +5764,7 @@ Move_MEGA_DRAIN: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 8, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5812,7 +5812,7 @@ Move_GIGA_DRAIN: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 12, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 @@ -5825,7 +5825,7 @@ Move_GIGA_DRAIN: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 12, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 12, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5891,14 +5891,14 @@ Move_LEECH_LIFE: delay 2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK waitforvisualfinish call AbsorbEffect waitforvisualfinish delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5906,7 +5906,7 @@ Move_LEECH_LIFE: Move_SYNTHESIS: loadspritegfx ANIM_TAG_SPARKLE_2 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 16, RGB(27, 31, 18) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 16, RGB(27, 31, 18) playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish @@ -5948,7 +5948,7 @@ Move_SLUDGE: createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 waitforvisualfinish createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, RGB(30, 0, 31) call PoisonBubblesEffect waitforvisualfinish end @@ -5966,7 +5966,7 @@ Move_SLUDGE_BOMB: call SludgeBombProjectile call SludgeBombProjectile createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, RGB(30, 0, 31) createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 @@ -6010,7 +6010,7 @@ Move_ACID: delay 15 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 10, 1 createvisualtask AnimTask_ShakeMon2, 5, ANIM_DEF_PARTNER, 2, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 2, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 20, 2, 2, 0, 12, RGB(30, 0, 31) createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 @@ -6060,7 +6060,7 @@ Move_BONE_CLUB: delay 12 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, RGB_BLACK, 10, RGB_BLACK, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -6124,7 +6124,7 @@ MegahornContinue: createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 4, 1, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, -4, 1, 12, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 delay 3 @@ -6266,7 +6266,7 @@ Move_CRABHAMMER: createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 waitforvisualfinish delay 8 @@ -6362,14 +6362,14 @@ Move_WHIRLPOOL: splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23) playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1 call WhirlpoolEffect call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -6469,7 +6469,7 @@ Move_CROSS_CHOP: createsprite gCrossChopHandSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1 delay 40 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 10, RGB_BLACK, 10 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 10, RGB_BLACK, 10 createsprite gCrossImpactSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 20 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 7, 0, 9, 1 waitforvisualfinish @@ -6721,7 +6721,7 @@ Move_SUNNY_DAY: loadspritegfx ANIM_TAG_SUNLIGHT monbg ANIM_ATK_PARTNER setalpha 13, 3 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 0, 6, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 0, 6, RGB_WHITE waitforvisualfinish panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 call SunnyDayLightRay @@ -6729,7 +6729,7 @@ Move_SUNNY_DAY: call SunnyDayLightRay call SunnyDayLightRay waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 6, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 6, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -6929,7 +6929,7 @@ Move_MIST: call MistCloud call MistCloud delay 32 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 8, 2, 0, 14, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 10, 8, 2, 0, 14, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -6945,9 +6945,9 @@ Move_HAZE: playsewithpan SE_M_HAZE, 0 createvisualtask AnimTask_HazeScrollingFog, 5 delay 30 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x780, 2, 0, 16, RGB_BLACK delay 90 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 1, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x780, 1, 16, 0, RGB_BLACK end Move_FIRE_PUNCH: @@ -6956,7 +6956,7 @@ Move_FIRE_PUNCH: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 9, RGB_RED createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 0 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 64 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 128 @@ -6970,7 +6970,7 @@ Move_FIRE_PUNCH: delay 4 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -7099,7 +7099,7 @@ Move_POISON_GAS: createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 40 loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 28, 6 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 6, 2, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 6, 2, 0, 12, RGB(26, 0, 26) waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER @@ -7133,7 +7133,7 @@ Move_PSYBEAM: call PsybeamRings call PsybeamRings createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, ANIM_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 18, 31) call PsybeamRings call PsybeamRings call PsybeamRings @@ -7158,7 +7158,7 @@ Move_HYPNOSIS: call HypnosisRings call HypnosisRings call HypnosisRings - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 18, 31) waitforvisualfinish delay 1 call UnsetPsychicBackground @@ -7178,7 +7178,7 @@ Move_PSYWAVE: createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 9, 0, 10 call PsywaveRings call PsywaveRings - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 4, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 4, 0, 12, RGB(31, 18, 31) call PsywaveRings call PsywaveRings call PsywaveRings @@ -7314,7 +7314,7 @@ Move_NIGHT_SHADE: createvisualtask AnimTask_NightShadeClone, 5, 85 delay 70 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 12, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 2, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 2, 0, 13, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 @@ -7376,7 +7376,7 @@ Move_FOCUS_ENERGY: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_WHITE createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -7389,7 +7389,7 @@ Move_BIDE: end BideSetUp: loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish end @@ -7399,7 +7399,7 @@ BideUnleash: monbg ANIM_DEF_PARTNER setalpha 12, 8 loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 4 @@ -7418,7 +7418,7 @@ BideUnleash: delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 11, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 11, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -7429,7 +7429,7 @@ Move_STRING_SHOT: loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK waitforvisualfinish loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 call StringShotThread @@ -7461,7 +7461,7 @@ Move_STRING_SHOT: clearmonbg ANIM_DEF_PARTNER delay 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK end StringShotThread: @@ -7474,7 +7474,7 @@ Move_SPIDER_WEB: loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK waitforvisualfinish splitbgprio ANIM_TARGET loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 @@ -7498,7 +7498,7 @@ Move_SPIDER_WEB: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK end SpiderWebThread: @@ -7566,7 +7566,7 @@ Move_RECOVER: monbg ANIM_ATK_PARTNER setalpha 12, 8 loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 6, 0, 11, RGB(31, 31, 11) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 6, 0, 11, RGB(31, 31, 11) call RecoverAbsorbEffect call RecoverAbsorbEffect call RecoverAbsorbEffect @@ -7608,7 +7608,7 @@ Move_MIMIC: setarg 7, 0xFFFF waitforvisualfinish playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE waitforvisualfinish clearmonbg_static ANIM_DEF_PARTNER blendoff @@ -7655,7 +7655,7 @@ CurseGhost: createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 16, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -7673,7 +7673,7 @@ CurseStats: CurseStats1: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_DrawFallingWhiteLinesOnAttacker, 5 - createvisualtask AnimTask_BlendColorCycle, 5, F_PAL_ATTACKER, 4, 2, 0, 10, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, RGB_RED return Move_SOFT_BOILED: @@ -7688,7 +7688,7 @@ Move_SOFT_BOILED: delay 120 delay 7 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 8 createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 @@ -7703,7 +7703,7 @@ Move_HEAL_BELL: loadspritegfx ANIM_TAG_BELL loadspritegfx ANIM_TAG_MUSIC_NOTES_2 loadspritegfx ANIM_TAG_THIN_RING - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 0, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 0, 0, 10, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_LoadMusicNotesPals, 5 createsprite gBellSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 1 @@ -7741,12 +7741,12 @@ Move_HEAL_BELL: loadspritegfx ANIM_TAG_THIN_RING playsewithpan SE_SHINY, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 10, 0, RGB(12, 24, 30) - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 10, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 3, 10, 0, RGB_WHITE createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 end HealBellRing: createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 8, 0, RGB(12, 24, 30) - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 2, 10, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 3, 2, 10, RGB_WHITE createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 0, 1 playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER return @@ -7759,12 +7759,12 @@ Move_FAKE_OUT: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE end Move_SCARY_FACE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 0, 16, RGB_BLACK playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitforvisualfinish delay 10 @@ -7776,7 +7776,7 @@ Move_SCARY_FACE: waitforvisualfinish createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 16, 0, RGB_BLACK waitforvisualfinish end @@ -7920,7 +7920,7 @@ PresentHeal: Move_BATON_PASS: loadspritegfx ANIM_TAG_POKEBALL playsewithpan SE_M_BATON_PASS, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 2, 0, 11, RGB(31, 22, 30) + createvisualtask AnimTask_BlendColorCycle, 2, 31, 1, 2, 0, 11, RGB(31, 22, 30) createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2 end @@ -7946,13 +7946,13 @@ Move_PERISH_SONG: delay 20 panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 0 delay 100 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 1 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 1 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 1 @@ -8027,7 +8027,7 @@ Move_TRI_ATTACK: delay 20 createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 6, 0, 7 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK delay 16 loadspritegfx ANIM_TAG_FIRE createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0 @@ -8063,7 +8063,7 @@ Move_TRI_ATTACK: waitforvisualfinish loadspritegfx ANIM_TAG_ICE_CRYSTALS call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK waitforvisualfinish end @@ -8149,7 +8149,7 @@ Move_TRICK: Move_WISH: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK waitforvisualfinish panse_adjustall SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40 @@ -8158,19 +8158,19 @@ Move_WISH: loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 3 call GrantingStarsEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, RGB_BLACK waitforvisualfinish end Move_STOCKPILE: loadspritegfx ANIM_TAG_GRAY_ORB playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 8, 1, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 8, 1, 0, 12, RGB_WHITE createvisualtask AnimTask_StockpileDeformMon, 5 call StockpileAbsorb call StockpileAbsorb waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 12, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 12, 0, RGB_WHITE end StockpileAbsorb: createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13 @@ -8288,7 +8288,7 @@ Move_MORNING_SUN: loadspritegfx ANIM_TAG_BLUE_STAR createvisualtask AnimTask_MorningSunLightBeam, 5 delay 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 8, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 8, 0, 12, RGB_WHITE delay 14 call MorningSunStar call MorningSunStar @@ -8305,7 +8305,7 @@ Move_MORNING_SUN: call MorningSunStar call MorningSunStar call MorningSunStar - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 3, 12, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 3, 12, 0, RGB_WHITE waitforvisualfinish waitsound call HealingEffect @@ -8324,7 +8324,7 @@ Move_SWEET_SCENT: call SweetScentEffect createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 setpan SOUND_PAN_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 1, 5, 5, 13, RGB(31, 21, 21) + createvisualtask AnimTask_BlendColorCycle, 2, 20, 1, 5, 5, 13, RGB(31, 21, 21) call SweetScentEffect waitforvisualfinish end @@ -8355,7 +8355,7 @@ SweetScentEffect: Move_HYPER_BEAM: loadspritegfx ANIM_TAG_ORBS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 0, 16, RGB_BLACK waitforvisualfinish delay 10 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER @@ -8371,7 +8371,7 @@ Move_HYPER_BEAM: call HyperBeamOrbs call HyperBeamOrbs createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 50, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 11, RGB(25, 25, 25) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 11, RGB(25, 25, 25) call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs @@ -8393,9 +8393,9 @@ Move_HYPER_BEAM: call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(25, 25, 25) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 11, 0, RGB(25, 25, 25) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 16, 0, RGB_BLACK end HyperBeamOrbs: createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 @@ -8450,17 +8450,17 @@ CreateFlatterConfetti: Move_ROLE_PLAY: monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_WHITE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 10, RGB_BLACK waitforvisualfinish playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_DETECT, SOUND_PAN_ATTACKER, 30 createvisualtask AnimTask_RolePlaySilhouette, 2 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 16, 0, RGB_WHITE delay 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 10, 0, RGB_BLACK end Move_REFRESH: @@ -8473,7 +8473,7 @@ Move_REFRESH: call GrantingStarsEffect waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 end @@ -8485,13 +8485,13 @@ Move_BLAZE_KICK: setalpha 12, 8 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET createsprite gSpinningHandOrFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 30 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE delay 30 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 14, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 call FireSpreadEffect waitforvisualfinish clearmonbg ANIM_TARGET @@ -8510,7 +8510,7 @@ Move_HYPER_VOICE: end HyperVoiceEffect: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 8, 0, RGB_YELLOW + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, RGB_YELLOW createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0 createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 @@ -8521,14 +8521,14 @@ HyperVoiceEffect: Move_SAND_TOMB: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(19, 17, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 43, 1 playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish end @@ -8627,7 +8627,7 @@ Move_DRAGON_CLAW: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_CLAW_SLASH playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 0, 8, RGB(31, 19, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 4, 0, 8, RGB(31, 19, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 15, 1 call DragonClawFireSpiral call DragonClawFireSpiral @@ -8664,7 +8664,7 @@ Move_DRAGON_CLAW: createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 8, 0, RGB(31, 19, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 4, 8, 0, RGB(31, 19, 0) waitforvisualfinish end DragonClawFireSpiral: @@ -8747,7 +8747,7 @@ Move_REVENGE: playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createsprite gRevengeSmallScratchSpriteTemplate, ANIM_ATTACKER, 2, 10, -10 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 4, 2, 8, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 4, 2, 8, RGB_RED waitforvisualfinish unloadspritegfx ANIM_TAG_PURPLE_SCRATCH loadspritegfx ANIM_TAG_PURPLE_SWIPE @@ -8777,7 +8777,7 @@ Move_POISON_FANG: delay 10 createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 3, 0, 10, 1 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 4, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 4, 0, 12, RGB(26, 0, 26) call PoisonBubblesEffect waitforvisualfinish end @@ -8793,7 +8793,7 @@ Move_FRENZY_PLANT: monbg ANIM_TARGET splitbgprio ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 0, 5, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, RGB_BLACK waitforvisualfinish createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100 playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER @@ -8841,7 +8841,7 @@ Move_FRENZY_PLANT: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, ANIM_TARGET, 1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 5, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 5, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -8983,7 +8983,7 @@ ReturnStrong: createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 goto ReturnContinue ReturnStrongest: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 6, RGB_BLACK waitforvisualfinish createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER @@ -9040,7 +9040,7 @@ ReturnStrongest: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, ANIM_TARGET, 0 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6, 0, RGB_BLACK goto ReturnContinue ReturnStrongestHit: createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 3, ANIM_ATTACKER @@ -9170,7 +9170,7 @@ Move_SILVER_WIND: createvisualtask AnimTask_StartSlidingBg, 5, 1536, 0, 0, -1 SilverWindContinue: delay 0 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 4, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 4, 4, RGB_BLACK waitbgfadein createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 @@ -9284,7 +9284,7 @@ Move_OVERHEAT: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 18 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 5, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 5, RGB(28, 0, 0) waitforvisualfinish createvisualtask AnimTask_AllocBackupPalBuffer, 5 waitforvisualfinish @@ -9295,7 +9295,7 @@ Move_OVERHEAT: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_CopyPalUnfadedToBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 1, 0, 13, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 1, 0, 13, RGB(28, 0, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1 waitforvisualfinish playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER @@ -9341,12 +9341,12 @@ Move_OVERHEAT: playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, -1, 0, 13, RGB(18, 18, 18) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 0, 13, RGB(18, 18, 18) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 3, 0, 15, 1 waitforvisualfinish createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 0, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 5, 0, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 5, 0, RGB(28, 0, 0) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -9354,7 +9354,7 @@ Move_OVERHEAT: delay 15 createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 13, 0, RGB(18, 18, 18) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 13, 0, RGB(18, 18, 18) waitforvisualfinish createvisualtask AnimTask_FreeBackupPalBuffer, 5 waitforvisualfinish @@ -9498,7 +9498,7 @@ Move_WATER_PULSE: monbg ANIM_TARGET splitbgprio ANIM_TARGET playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 7, RGB(0, 25, 28) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, RGB(0, 25, 28) delay 10 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1 @@ -9518,7 +9518,7 @@ Move_WATER_PULSE: delay 13 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 8, 18, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB(0, 25, 28) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, RGB(0, 25, 28) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -9531,7 +9531,7 @@ Move_PSYCHO_BOOST: createvisualtask AnimTask_FadeScreenToWhite, 5 waitbgfadein delay 6 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 2, 8, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, RGB_BLACK delay 0 splitbgprio ANIM_ATTACKER setalpha 8, 8 @@ -9558,7 +9558,7 @@ Move_KNOCK_OFF: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET createsprite gKnockOffStrikeSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 @@ -9576,7 +9576,7 @@ Move_DOOM_DESIRE: delay 1 monbg ANIM_ATK_PARTNER createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB_BLACK waitforvisualfinish setalpha 8, 8 playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER @@ -9584,7 +9584,7 @@ Move_DOOM_DESIRE: waitforvisualfinish delay 20 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, TRUE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -9836,7 +9836,7 @@ Move_WEATHER_BALL: waitforvisualfinish delay 15 playsewithpan SE_M_DETECT, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish createvisualtask AnimTask_GetWeather, 2 delay 1 @@ -10218,7 +10218,7 @@ UnsetSolarBeamBg: Status_Poison: loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 18, 2 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 12, RGB(30, 0, 31) end Status_Confusion: @@ -10320,13 +10320,13 @@ General_StatsChange: General_SubstituteFade: monbg ANIM_ATTACKER createvisualtask AnimTask_SubstituteFadeToInvisible, 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 16, RGB_WHITE waitforvisualfinish delay 1 clearmonbg ANIM_ATTACKER delay 2 blendoff - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 0, RGB_WHITE createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE end @@ -10389,13 +10389,13 @@ Status_Whirlpool: splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23) playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish stopsound clearmonbg ANIM_DEF_PARTNER @@ -10420,13 +10420,13 @@ Status_Clamp: Status_SandTomb: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(19, 17, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish stopsound end @@ -10448,7 +10448,7 @@ General_HeldItemEffect: call GrantingStarsEffect waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 3, 7, 0, RGB(17, 31, 25) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 3, 7, 0, RGB(17, 31, 25) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 waitforvisualfinish end @@ -10492,11 +10492,11 @@ General_SmokeballEscape: end General_FocusBand: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 7, 0, 9, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 7, 0, 9, RGB_RED playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_SlideMonForFocusBand, 5, 30, 128, 0, 1, 2, 0, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 4, 9, 0, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 4, 9, 0, RGB_RED waitforvisualfinish delay 6 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15 @@ -10505,13 +10505,13 @@ General_FocusBand: General_Rain: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 delay 50 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 4, 0, RGB_BLACK waitforvisualfinish end @@ -10595,7 +10595,7 @@ General_FutureSightHit: General_DoomDesireHit: createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2 loadspritegfx ANIM_TAG_EXPLOSION - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_WHITE waitforvisualfinish delay 10 createvisualtask AnimTask_DoomDesireLightBeam, 5 @@ -10622,7 +10622,7 @@ General_DoomDesireHit: playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE waitforvisualfinish end @@ -10631,7 +10631,7 @@ General_FocusPunchSetUp: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -10644,7 +10644,7 @@ General_IngrainHeal: loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish delay 3 call AbsorbEffect @@ -10652,7 +10652,7 @@ General_IngrainHeal: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -10660,7 +10660,7 @@ General_IngrainHeal: General_WishHeal: loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK waitforvisualfinish playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect @@ -10669,7 +10669,7 @@ General_WishHeal: loadspritegfx ANIM_TAG_BLUE_STAR call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, RGB_BLACK end SnatchMoveTrySwapFromSubstitute: diff --git a/data/event_scripts.s b/data/event_scripts.s index 1f3db6aa2..66877b25c 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -53,6 +53,7 @@ #include "constants/union_room.h" #include "constants/vars.h" #include "constants/weather.h" +#include "constants/follow_me.h" .include "asm/macros.inc" .include "asm/macros/event.inc" .include "constants/constants.inc" diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 49fcf798b..277cbb376 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -72,6 +72,9 @@ gFieldEffectScriptPointers:: .4byte gFieldEffectScript_RayquazaSpotlight @ FLDEFF_RAYQUAZA_SPOTLIGHT .4byte gFieldEffectScript_DestroyDeoxysRock @ FLDEFF_DESTROY_DEOXYS_ROCK .4byte gFieldEffectScript_MoveDeoxysRock @ FLDEFF_MOVE_DEOXYS_ROCK + .4byte gFieldEffectScript_TracksSlither @ FLDEFF_TRACKS_SLITHER + .4byte gFieldEffectScript_TracksBug @ FLDEFF_TRACKS_BUG + .4byte gFieldEffectScript_TracksSpot @ FLDEFF_TRACKS_SPOT gFieldEffectScript_ExclamationMarkIcon1:: field_eff_callnative FldEff_ExclamationMarkIcon @@ -128,6 +131,18 @@ gFieldEffectScript_JumpTallGrass:: gFieldEffectScript_SandFootprints:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_SandFootprints field_eff_end + +gFieldEffectScript_TracksBug:: @ 82DBB42 + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksBug + field_eff_end + +gFieldEffectScript_TracksSpot:: @ 82DBB42 + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSpot + field_eff_end + +gFieldEffectScript_TracksSlither:: @ 82DBBFF + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSlither + field_eff_end gFieldEffectScript_JumpBigSplash:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_JumpBigSplash diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index def903b1d..406ab46ae 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -5,10 +5,6 @@ .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 @@ -16,6 +12,10 @@ 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 diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc index 3e729e212..320e12d99 100644 --- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc @@ -364,8 +364,7 @@ BattleFrontier_BattlePikeLobby_Text_AwardYouTheseBattlePoints2: @ Unused BattleFrontier_BattlePikeLobby_Text_ReachedBattlePointLimit: .string "You appear to have reached the limit\n" - .string "for Battle Points…\p" - .string "Please exchange some Battle Points\n" + .string "for Battle Points…\pPlease exchange some Battle Points\n" .string "for prizes, then return…$" BattleFrontier_BattlePikeLobby_Text_FailedToSaveBeforeQuitting: diff --git a/data/maps/BattleFrontier_Lounge2/scripts.inc b/data/maps/BattleFrontier_Lounge2/scripts.inc index 12eda4a5e..8efc17293 100644 --- a/data/maps/BattleFrontier_Lounge2/scripts.inc +++ b/data/maps/BattleFrontier_Lounge2/scripts.inc @@ -22,20 +22,18 @@ BattleFrontier_Lounge2_EventScript_AlreadyMetManiac:: end BattleFrontier_Lounge2_EventScript_GiveAdvice:: - 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 + 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 special ShowFrontierManiacMessage waitmessage waitbuttonpress diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json index deee3e264..c7bf196ef 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json @@ -91,6 +91,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "LittlerootTown_ProfessorBirchsLab_EventScript_Chikorita", "flag": "FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_POKEBALL_CHIKORITA" + }, + { + "graphics_id": "OBJ_EVENT_GFX_VAR_1", + "x": 6, + "y": 6, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "FLAG_UNUSED_0x020" } ], "warp_events": [ diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index 3026b0708..efa55aabb 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -29,6 +29,7 @@ LittlerootTown_ProfessorBirchsLab_MapScripts:: LittlerootTown_ProfessorBirchsLab_OnTransition: call Common_EventScript_SetupRivalGfxId call ProfBirch_EventScript_UpdateLocation + setflag FLAG_UNUSED_0x020 goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 6, LittlerootTown_ProfessorBirchsLab_EventScript_SetAfterJohtoStarterLayout goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 4, LittlerootTown_ProfessorBirchsLab_EventScript_SetJohtoStarterLayout goto_if_eq VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 3, LittlerootTown_ProfessorBirchsLab_EventScript_CheckReadyForJohtoStarter diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc index 2dd001a3b..8989883e4 100644 --- a/data/maps/TrainerHill_Entrance/scripts.inc +++ b/data/maps/TrainerHill_Entrance/scripts.inc @@ -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_setmode VAR_RESULT + trainerhill_settag VAR_RESULT setvar VAR_TRAINER_HILL_IS_ACTIVE, 1 setvar VAR_TEMP_5, 0 special HealPlayerParty diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 51b7f966e..7d52b8c8d 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -227,6 +227,10 @@ gScriptCmdTable:: .4byte ScrCmd_warpwhitefade @ 0xe0 .4byte ScrCmd_buffercontestname @ 0xe1 .4byte ScrCmd_bufferitemnameplural @ 0xe2 + .4byte ScrCmd_setfollower @ 0xe3 + .4byte ScrCmd_destroyfollower @ 0xe4 + .4byte ScrCmd_facefollower @ 0xe5 + .4byte ScrCmd_checkfollower @ 0xe6 gScriptCmdTableEnd:: .4byte ScrCmd_nop diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index 3e99fc08e..14570cf99 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -287,3 +287,69 @@ EventScript_FailSweetScent:: Text_FailSweetScent: .string "Looks like there's nothing here…$" + +FollowerPositionFixScript:: + setvar 0x8000 0x0 + callnative FollowerTrainerSightingPositionFix + compare VAR_RESULT 0xFFFF + goto_if_eq FollowerPositionFixScriptReturn + call WalkCall + setvar 0x8000 0x1 + callnative FollowerTrainerSightingPositionFix +FollowerPositionFixScriptReturn: + return + +FollowerIntoPlayerScript:: + setvar 0x8000 0x0 + callnative FollowerIntoPlayer + compare VAR_RESULT 0xFFFF + goto_if_eq FollowerPositionFixScriptReturn + setvar 0x8005 0xFE @ follower + call WalkCall + setvar 0x8000 0x1 + callnative FollowerIntoPlayer + return + +WalkCall: + compare VAR_RESULT 0x0 + call_if_eq WalkDownCall + compare VAR_RESULT 0x1 + call_if_eq WalkUpCall + compare VAR_RESULT 0x2 + call_if_eq WalkLeftCall + compare VAR_RESULT 0x3 + call_if_eq WalkRightCall + waitmovement 0x8005 + return + +WalkDownCall: + applymovement 0x8005 WalkDown + return + +WalkUpCall: + applymovement 0x8005 WalkUp + return + +WalkLeftCall: + applymovement 0x8005 WalkLeft + return + +WalkRightCall: + applymovement 0x8005 WalkRight + return + +WalkDown: + walk_down + step_end + +WalkUp: + walk_up + step_end + +WalkLeft: + walk_left + step_end + +WalkRight: + walk_right + step_end diff --git a/data/scripts/gift_altering_cave.inc b/data/scripts/gift_altering_cave.inc index 0ea69aac0..65ff87068 100644 --- a/data/scripts/gift_altering_cave.inc +++ b/data/scripts/gift_altering_cave.inc @@ -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" diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc index 948c19922..e57e76a52 100644 --- a/data/text/contest_strings.inc +++ b/data/text/contest_strings.inc @@ -4,192 +4,145 @@ gText_HighlyAppealingMove:: .string "A highly appealing move.$" gText_UserMoreEasilyStartled:: - .string "After this move, the user is\n" - .string "more easily startled.$" + .string "After this move, the user is\nmore easily startled.$" gText_GreatAppealButNoMoreToEnd:: - .string "Makes a great appeal, but\n" - .string "allows no more to the end.$" + .string "Makes a great appeal, but\nallows no more to the end.$" gText_UsedRepeatedlyWithoutBoringJudge:: - .string "Can be repeatedly used\n" - .string "without boring the JUDGE.$" + .string "Can be repeatedly used\nwithout boring the JUDGE.$" gText_AvoidStartledByOthersOnce:: - .string "Can avoid being startled\n" - .string "by others once.$" + .string "Can avoid being startled\nby others once.$" gText_AvoidStartledByOthers:: - .string "Can avoid being startled\n" - .string "by others.$" + .string "Can avoid being startled\nby others.$" gText_AvoidStartledByOthersLittle:: - .string "Can avoid being startled\n" - .string "by others a little.$" + .string "Can avoid being startled\nby others a little.$" gText_UserLessLikelyStartled:: - .string "After this move, the user is\n" - .string "less likely to be startled.$" + .string "After this move, the user is\nless likely to be startled.$" gText_SlightlyStartleFrontMon:: - .string "Slightly startles the\n" - .string "POKéMON in front.$" + .string "Slightly startles the\nPOKéMON in front.$" gText_SlightlyStartleAppealed:: - .string "Slightly startles those\n" - .string "that have made appeals.$" + .string "Slightly startles those\nthat have made appeals.$" gText_StartleAppealedBeforeUser:: - .string "Startles the POKéMON that\n" - .string "appealed before the user.$" + .string "Startles the POKéMON that\nappealed before the user.$" gText_StartleAllAppealed:: - .string "Startles all POKéMON that\n" - .string "have done their appeals.$" + .string "Startles all POKéMON that\nhave done their appeals.$" gText_BadlyStartleFrontMon:: - .string "Badly startles the\n" - .string "POKéMON in front.$" + .string "Badly startles the\nPOKéMON in front.$" gText_BadlyStartleAppealed:: - .string "Badly startles those that\n" - .string "have made appeals.$" + .string "Badly startles those that\nhave made appeals.$" gText_StartleAppealedBeforeUser2:: - .string "Startles the POKéMON that\n" - .string "appealed before the user.$" + .string "Startles the POKéMON that\nappealed before the user.$" gText_StartleAllAppealed2:: - .string "Startles all POKéMON that\n" - .string "have done their appeals.$" + .string "Startles all POKéMON that\nhave done their appeals.$" gText_ShiftJudgesAttentionFromOthers:: - .string "Shifts the JUDGE's\n" - .string "attention from others.$" + .string "Shifts the JUDGE's\nattention from others.$" gText_StartleMonHasJudgesAttention:: - .string "Startles the POKéMON that\n" - .string "has the JUDGE's attention.$" + .string "Startles the POKéMON that\nhas the JUDGE's attention.$" gText_JamOthersMissesTurn:: - .string "Jams the others, and misses\n" - .string "one turn of appeals.$" + .string "Jams the others, and misses\none turn of appeals.$" gText_StartleMonsMadeSameTypeAppeal:: - .string "Startles POKéMON that\n" - .string "made a same-type appeal.$" + .string "Startles POKéMON that\nmade a same-type appeal.$" gText_BadlyStartleCoolAppeals:: - .string "Badly startles POKéMON\n" - .string "that made COOL appeals.$" + .string "Badly startles POKéMON\nthat made COOL appeals.$" gText_BadlyStartleBeautyAppeals:: - .string "Badly startles POKéMON\n" - .string "that made BEAUTY appeals.$" + .string "Badly startles POKéMON\nthat made BEAUTY appeals.$" gText_BadlyStartleCuteAppeals:: - .string "Badly startles POKéMON\n" - .string "that made CUTE appeals.$" + .string "Badly startles POKéMON\nthat made CUTE appeals.$" gText_BadlyStartleSmartAppeals:: - .string "Badly startles POKéMON\n" - .string "that made SMART appeals.$" + .string "Badly startles POKéMON\nthat made SMART appeals.$" gText_BadlyStartleToughAppeals:: - .string "Badly startles POKéMON\n" - .string "that made TOUGH appeals.$" + .string "Badly startles POKéMON\nthat made TOUGH appeals.$" gText_MakeMonAfterUserNervous:: - .string "Makes one POKéMON after\n" - .string "the user nervous.$" + .string "Makes one POKéMON after\nthe user nervous.$" gText_MakeAllMonsAfterUserNervous:: - .string "Makes all POKéMON after\n" - .string "the user nervous.$" + .string "Makes all POKéMON after\nthe user nervous.$" gText_WorsenConditionOfThoseMadeAppeals:: - .string "Worsens the condition of\n" - .string "those that made appeals.$" + .string "Worsens the condition of\nthose that made appeals.$" gText_BadlyStartleMonsGoodCondition:: - .string "Badly startles POKéMON in\n" - .string "good condition.$" + .string "Badly startles POKéMON in\ngood condition.$" gText_AppealGreatIfPerformedFirst:: - .string "The appeal works great if\n" - .string "performed first.$" + .string "The appeal works great if\nperformed first.$" gText_AppealGreatIfPerformedLast:: - .string "The appeal works great if\n" - .string "performed last.$" + .string "The appeal works great if\nperformed last.$" gText_AppealAsGoodAsThoseBeforeIt:: - .string "Makes the appeal as good\n" - .string "as those before it.$" + .string "Makes the appeal as good\nas those before it.$" gText_AppealAsGoodAsOneBeforeIt:: - .string "Makes the appeal as good\n" - .string "as the one before it.$" + .string "Makes the appeal as good\nas the one before it.$" gText_AppealBetterLaterItsPerformed:: - .string "The appeal works better\n" - .string "the later it is performed.$" + .string "The appeal works better\nthe later it is performed.$" gText_AppealVariesDependingOnTiming:: - .string "The appeal's quality varies\n" - .string "depending on its timing.$" + .string "The appeal's quality varies\ndepending on its timing.$" gText_WorksWellIfSameTypeAsBefore:: - .string "Works well if it's the same\n" - .string "type as the one before.$" + .string "Works well if it's the same\ntype as the one before.$" gText_WorksWellIfDifferentTypeAsBefore:: - .string "Works well if different in\n" - .string "type than the one before.$" + .string "Works well if different in\ntype than the one before.$" gText_AffectedByAppealInFront:: - .string "Affected by how well the\n" - .string "appeal in front goes.$" + .string "Affected by how well the\nappeal in front goes.$" gText_UpsConditionHelpsPreventNervousness:: - .string "Ups the user's condition.\n" - .string "Helps prevent nervousness.$" + .string "Ups the user's condition.\nHelps prevent nervousness.$" gText_AppealWorksWellIfConditionGood:: - .string "The appeal works well if the\n" - .string "user's condition is good.$" + .string "The appeal works well if the\nuser's condition is good.$" gText_NextAppealMadeEarlier:: - .string "The next appeal can be\n" - .string "made earlier next turn.$" + .string "The next appeal can be\nmade earlier next turn.$" gText_NextAppealMadeLater:: - .string "The next appeal can be\n" - .string "made later next turn.$" + .string "The next appeal can be\nmade later next turn.$" gText_TurnOrderMoreEasilyScrambled:: - .string "Makes the next turn's order\n" - .string "more easily scrambled.$" + .string "Makes the next turn's order\nmore easily scrambled.$" gText_ScrambleOrderOfNextAppeals:: - .string "Scrambles the order of\n" - .string "appeals on the next turn.$" + .string "Scrambles the order of\nappeals on the next turn.$" gText_AppealExcitesAudienceInAnyContest:: - .string "An appeal that excites the\n" - .string "audience in any CONTEST.$" + .string "An appeal that excites the\naudience in any CONTEST.$" gText_BadlyStartlesMonsGoodAppeals:: - .string "Badly startles all POKéMON\n" - .string "that made good appeals.$" + .string "Badly startles all POKéMON\nthat made good appeals.$" gText_AppealBestMoreCrowdExcited:: - .string "The appeal works best the\n" - .string "more the crowd is excited.$" + .string "The appeal works best the\nmore the crowd is excited.$" gText_TemporarilyStopCrowdExcited:: - .string "Temporarily stops the\n" - .string "crowd from growing excited.$" + .string "Temporarily stops the\ncrowd from growing excited.$" @ Unused move names diff --git a/data/text/pc_transfer.inc b/data/text/pc_transfer.inc index 3fa255340..53a82c8f1 100644 --- a/data/text/pc_transfer.inc +++ b/data/text/pc_transfer.inc @@ -5,8 +5,7 @@ gText_PkmnTransferredSomeonesPC:: .string "BOX “{STR_VAR_1}.â€�$" gText_PkmnTransferredLanettesPC:: - .string "{STR_VAR_2} was transferred to\n" - .string "LANETTE'S PC.\p" + .string "{STR_VAR_2} was transferred to\nLANETTE'S PC.\p" .string "It was placed in \n" .string "BOX “{STR_VAR_1}.â€�$" diff --git a/data/text/pokedex_rating.inc b/data/text/pokedex_rating.inc index 175aaccc6..fcb26bc7d 100644 --- a/data/text/pokedex_rating.inc +++ b/data/text/pokedex_rating.inc @@ -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.$" diff --git a/data/text/surf.inc b/data/text/surf.inc index 13854f7aa..453a3d5b1 100644 --- a/data/text/surf.inc +++ b/data/text/surf.inc @@ -1,6 +1,5 @@ gText_WantToUseSurf:: - .string "The water is dyed a deep blue…\n" - .string "Would you like to SURF?$" + .string "The water is dyed a deep blue…\nWould you like to SURF?$" gText_PlayerUsedSurf:: .string "{STR_VAR_1} used SURF!$" diff --git a/data/text/tv.inc b/data/text/tv.inc index 6cfc289d2..68b842158 100644 --- a/data/text/tv.inc +++ b/data/text/tv.inc @@ -166,7 +166,7 @@ BattleFrontier_BattleTowerLobby_Text_LookingForwardToNextBattle:: .string "I'll be looking forward to your\n" .string "next battle!$" -BravoTrainerBattleTower_Text_Intro:: +gTVBravoTrainerBattleTowerText00:: .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 @@ BravoTrainerBattleTower_Text_Intro:: .string "For the challenge, {STR_VAR_1} entered\n" .string "one wicked {STR_VAR_2}.$" -BravoTrainerBattleTower_Text_NewRecord:: +gTVBravoTrainerBattleTowerText01:: .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!$" -BravoTrainerBattleTower_Text_Lost:: +gTVBravoTrainerBattleTowerText02:: .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 @@ BravoTrainerBattleTower_Text_Lost:: .string "We asked the TRAINER for impressions\n" .string "on the match with {STR_VAR_1}.$" -BravoTrainerBattleTower_Text_Won:: +gTVBravoTrainerBattleTowerText03:: .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 @@ BravoTrainerBattleTower_Text_Won:: .string "We asked the TRAINER for impressions\n" .string "on the moment of glory.$" -BravoTrainerBattleTower_Text_LostFinal:: +gTVBravoTrainerBattleTowerText04:: .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 @@ BravoTrainerBattleTower_Text_LostFinal:: .string "We asked the TRAINER for impressions\n" .string "on battling the celebrity pair.$" -BravoTrainerBattleTower_Text_Satisfied:: +gTVBravoTrainerBattleTowerText05:: .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 @@ BravoTrainerBattleTower_Text_Satisfied:: .string "I found out exactly how satisfied\n" .string "when I heard the TRAINER say this:$" -BravoTrainerBattleTower_Text_Unsatisfied:: +gTVBravoTrainerBattleTowerText06:: .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 @@ BravoTrainerBattleTower_Text_Unsatisfied:: .string "Anyway, I found out how dissatisfied\n" .string "our TRAINER was when I heard this:$" -BravoTrainerBattleTower_Text_None1:: +gTVBravoTrainerBattleTowerText07:: .string "None$" -BravoTrainerBattleTower_Text_None2:: +gTVBravoTrainerBattleTowerText08:: .string "None$" -BravoTrainerBattleTower_Text_None3:: +gTVBravoTrainerBattleTowerText09:: .string "None$" -BravoTrainerBattleTower_Text_None4:: +gTVBravoTrainerBattleTowerText10:: .string "None$" -BravoTrainerBattleTower_Text_Response:: +gTVBravoTrainerBattleTowerText11:: .string "“{STR_VAR_1}.â€�$" -BravoTrainerBattleTower_Text_ResponseSatisfied:: +gTVBravoTrainerBattleTowerText12:: .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 @@ BravoTrainerBattleTower_Text_ResponseSatisfied:: .string "end… It really was what you'd call\l" .string "“{STR_VAR_1}â€�!$" -BravoTrainerBattleTower_Text_ResponseUnsatisfied:: +gTVBravoTrainerBattleTowerText13:: .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 @@ BravoTrainerBattleTower_Text_ResponseUnsatisfied:: .string "{STR_VAR_2}'s disappointment comes across\n" .string "loud and clear, I'd say!$" -BravoTrainerBattleTower_Text_Outro:: +gTVBravoTrainerBattleTowerText14:: .string "Bravo, {STR_VAR_1}!\n" .string "Bravo, {STR_VAR_2}!\p" .string "I hope we can count on seeing\n" diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md new file mode 100644 index 000000000..ce06c1489 --- /dev/null +++ b/docs/bugs_and_glitches.md @@ -0,0 +1,51 @@ + +# 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) + ... +``` diff --git a/gflib/bg.h b/gflib/bg.h index 02ff07369..d8b5a5404 100644 --- a/gflib/bg.h +++ b/gflib/bg.h @@ -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 val, u8 mode); +u8 Unused_AdjustBgMosaic(u8 a1, u8 a2); void SetBgTilemapBuffer(u8 bg, void *tilemap); void UnsetBgTilemapBuffer(u8 bg); void* GetBgTilemapBuffer(u8 bg); diff --git a/gflib/sprite.c b/gflib/sprite.c index 6ba366105..411e7d3b8 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -96,7 +96,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*, s32, s32); +static void UpdateSpriteMatrixAnchorPos(struct Sprite* sprite, s32 a1, s32 a2); typedef void (*AnimFunc)(struct Sprite *); typedef void (*AnimCmdFunc)(struct Sprite *); @@ -634,11 +634,14 @@ void DestroySprite(struct Sprite *sprite) } } -void ResetOamRange(u8 start, u8 end) +void ResetOamRange(u8 a, u8 b) { u8 i; - for (i = start; i < end; i++) + + for (i = a; i < b; i++) + { gMain.oamBuffer[i] = *(struct OamData *)&gDummyOamData; + } } void LoadOam(void) @@ -1045,7 +1048,7 @@ void AnimCmd_frame(struct Sprite *sprite) else sprite->y2 = -1; } - + if (!(sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)) SetSpriteOamFlipBits(sprite, hFlip, vFlip); diff --git a/gflib/sprite.h b/gflib/sprite.h index f7ef16532..e53737981 100644 --- a/gflib/sprite.h +++ b/gflib/sprite.h @@ -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 start, u8 end); +void ResetOamRange(u8 a, u8 b); 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); diff --git a/gflib/text.c b/gflib/text.c index c400c0582..557c11704 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -326,14 +326,14 @@ void RunTextPrinters(void) { if (sTextPrinters[i].active) { - u16 renderCmd = RenderFont(&sTextPrinters[i]); - switch (renderCmd) + u16 temp = RenderFont(&sTextPrinters[i]); + switch (temp) { case RENDER_PRINT: CopyWindowToVram(sTextPrinters[i].printerTemplate.windowId, COPYWIN_GFX); case RENDER_UPDATE: - if (sTextPrinters[i].callback != NULL) - sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, renderCmd); + if (sTextPrinters[i].callback != 0) + sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, temp); break; case RENDER_FINISH: sTextPrinters[i].active = FALSE; diff --git a/graphics/door_anims/abandoned_ship.png b/graphics/door_anims/abandoned_ship.png index 0030246b4..e46aca9ba 100644 Binary files a/graphics/door_anims/abandoned_ship.png and b/graphics/door_anims/abandoned_ship.png differ diff --git a/graphics/door_anims/abandoned_ship_room.png b/graphics/door_anims/abandoned_ship_room.png index 006922f5b..a5284af7e 100644 Binary files a/graphics/door_anims/abandoned_ship_room.png and b/graphics/door_anims/abandoned_ship_room.png differ diff --git a/graphics/door_anims/battle_arena.png b/graphics/door_anims/battle_arena.png index ad3350a59..ef6652815 100644 Binary files a/graphics/door_anims/battle_arena.png and b/graphics/door_anims/battle_arena.png differ diff --git a/graphics/door_anims/battle_arena_lobby.png b/graphics/door_anims/battle_arena_lobby.png index 78c344070..b9a2134e3 100644 Binary files a/graphics/door_anims/battle_arena_lobby.png and b/graphics/door_anims/battle_arena_lobby.png differ diff --git a/graphics/door_anims/battle_dome.png b/graphics/door_anims/battle_dome.png index 4bc9fab94..729385b3f 100644 Binary files a/graphics/door_anims/battle_dome.png and b/graphics/door_anims/battle_dome.png differ diff --git a/graphics/door_anims/battle_dome_corridor.png b/graphics/door_anims/battle_dome_corridor.png index 78e77869e..198ad9acc 100644 Binary files a/graphics/door_anims/battle_dome_corridor.png and b/graphics/door_anims/battle_dome_corridor.png differ diff --git a/graphics/door_anims/battle_dome_lobby.png b/graphics/door_anims/battle_dome_lobby.png index 631cdecce..bd4e4e895 100644 Binary files a/graphics/door_anims/battle_dome_lobby.png and b/graphics/door_anims/battle_dome_lobby.png differ diff --git a/graphics/door_anims/battle_factory.png b/graphics/door_anims/battle_factory.png index 1d74d8b58..7ed6c876b 100644 Binary files a/graphics/door_anims/battle_factory.png and b/graphics/door_anims/battle_factory.png differ diff --git a/graphics/door_anims/battle_frontier.png b/graphics/door_anims/battle_frontier.png index c3dcd4324..bf758c03e 100644 Binary files a/graphics/door_anims/battle_frontier.png and b/graphics/door_anims/battle_frontier.png differ diff --git a/graphics/door_anims/battle_frontier_sliding.png b/graphics/door_anims/battle_frontier_sliding.png index 1359f4725..a43cf519d 100644 Binary files a/graphics/door_anims/battle_frontier_sliding.png and b/graphics/door_anims/battle_frontier_sliding.png differ diff --git a/graphics/door_anims/battle_palace_lobby.png b/graphics/door_anims/battle_palace_lobby.png index a4aa998d4..f106ae960 100644 Binary files a/graphics/door_anims/battle_palace_lobby.png and b/graphics/door_anims/battle_palace_lobby.png differ diff --git a/graphics/door_anims/battle_tent.png b/graphics/door_anims/battle_tent.png index b278e3310..a0a88e4c5 100644 Binary files a/graphics/door_anims/battle_tent.png and b/graphics/door_anims/battle_tent.png differ diff --git a/graphics/door_anims/battle_tent_interior.png b/graphics/door_anims/battle_tent_interior.png index 036ec9d5a..f8edb5a1a 100644 Binary files a/graphics/door_anims/battle_tent_interior.png and b/graphics/door_anims/battle_tent_interior.png differ diff --git a/graphics/door_anims/battle_tower.png b/graphics/door_anims/battle_tower.png index 3ec2b59bb..3b9fe547c 100644 Binary files a/graphics/door_anims/battle_tower.png and b/graphics/door_anims/battle_tower.png differ diff --git a/graphics/door_anims/battle_tower_corridor.png b/graphics/door_anims/battle_tower_corridor.png new file mode 100644 index 000000000..06ad24c9f Binary files /dev/null and b/graphics/door_anims/battle_tower_corridor.png differ diff --git a/graphics/door_anims/battle_tower_elevator.png b/graphics/door_anims/battle_tower_elevator.png index fed07182e..1d95b5b6a 100644 Binary files a/graphics/door_anims/battle_tower_elevator.png and b/graphics/door_anims/battle_tower_elevator.png differ diff --git a/graphics/door_anims/battle_tower_multi_corridor.png b/graphics/door_anims/battle_tower_multi_corridor.png index cb32fbc70..145dea7a5 100644 Binary files a/graphics/door_anims/battle_tower_multi_corridor.png and b/graphics/door_anims/battle_tower_multi_corridor.png differ diff --git a/graphics/door_anims/battle_tower_old.png b/graphics/door_anims/battle_tower_old.png index 326763f56..645c00613 100644 Binary files a/graphics/door_anims/battle_tower_old.png and b/graphics/door_anims/battle_tower_old.png differ diff --git a/graphics/door_anims/birchs_lab.png b/graphics/door_anims/birchs_lab.png index 0df0383c9..69bd93f89 100644 Binary files a/graphics/door_anims/birchs_lab.png and b/graphics/door_anims/birchs_lab.png differ diff --git a/graphics/door_anims/cable_club.png b/graphics/door_anims/cable_club.png index 3b45cb101..a1dfd7bc2 100644 Binary files a/graphics/door_anims/cable_club.png and b/graphics/door_anims/cable_club.png differ diff --git a/graphics/door_anims/contest.png b/graphics/door_anims/contest.png index 8719b23ad..dc466be11 100644 Binary files a/graphics/door_anims/contest.png and b/graphics/door_anims/contest.png differ diff --git a/graphics/door_anims/cycling_road.png b/graphics/door_anims/cycling_road.png index cb1fb3034..0c22c9182 100644 Binary files a/graphics/door_anims/cycling_road.png and b/graphics/door_anims/cycling_road.png differ diff --git a/graphics/door_anims/fallarbor_light_roof.png b/graphics/door_anims/fallarbor_light_roof.png index a4c959f88..4c81ba10e 100644 Binary files a/graphics/door_anims/fallarbor_light_roof.png and b/graphics/door_anims/fallarbor_light_roof.png differ diff --git a/graphics/door_anims/general.png b/graphics/door_anims/general.png index 7c9b7d64d..fdab84132 100644 Binary files a/graphics/door_anims/general.png and b/graphics/door_anims/general.png differ diff --git a/graphics/door_anims/gym.png b/graphics/door_anims/gym.png index 065181a9d..fce000751 100644 Binary files a/graphics/door_anims/gym.png and b/graphics/door_anims/gym.png differ diff --git a/graphics/door_anims/lilycove.png b/graphics/door_anims/lilycove.png index 17a120a32..ad5e43cc3 100644 Binary files a/graphics/door_anims/lilycove.png and b/graphics/door_anims/lilycove.png differ diff --git a/graphics/door_anims/lilycove_dept_store.png b/graphics/door_anims/lilycove_dept_store.png index 7c64ab6da..4f036c51d 100644 Binary files a/graphics/door_anims/lilycove_dept_store.png and b/graphics/door_anims/lilycove_dept_store.png differ diff --git a/graphics/door_anims/lilycove_wooden.png b/graphics/door_anims/lilycove_wooden.png index 7c3680c28..99b94e72d 100644 Binary files a/graphics/door_anims/lilycove_wooden.png and b/graphics/door_anims/lilycove_wooden.png differ diff --git a/graphics/door_anims/mauville.png b/graphics/door_anims/mauville.png index fec5f344f..63167408a 100644 Binary files a/graphics/door_anims/mauville.png and b/graphics/door_anims/mauville.png differ diff --git a/graphics/door_anims/mossdeep_space_center.png b/graphics/door_anims/mossdeep_space_center.png index c778b1718..4f2ccb6ff 100644 Binary files a/graphics/door_anims/mossdeep_space_center.png and b/graphics/door_anims/mossdeep_space_center.png differ diff --git a/graphics/door_anims/pacifidlog.png b/graphics/door_anims/pacifidlog.png index 841c31658..3e0528825 100644 Binary files a/graphics/door_anims/pacifidlog.png and b/graphics/door_anims/pacifidlog.png differ diff --git a/graphics/door_anims/petalburg_gym.png b/graphics/door_anims/petalburg_gym.png deleted file mode 100644 index 42a1e1dfd..000000000 Binary files a/graphics/door_anims/petalburg_gym.png and /dev/null differ diff --git a/graphics/door_anims/poke_center.png b/graphics/door_anims/poke_center.png index 8bf5cb146..865810714 100644 Binary files a/graphics/door_anims/poke_center.png and b/graphics/door_anims/poke_center.png differ diff --git a/graphics/door_anims/pokemon_league.png b/graphics/door_anims/pokemon_league.png index 34419ac0a..cac740f56 100644 Binary files a/graphics/door_anims/pokemon_league.png and b/graphics/door_anims/pokemon_league.png differ diff --git a/graphics/door_anims/rustboro_gray.png b/graphics/door_anims/rustboro_gray.png index 99211c11a..2cf62b6da 100644 Binary files a/graphics/door_anims/rustboro_gray.png and b/graphics/door_anims/rustboro_gray.png differ diff --git a/graphics/door_anims/rustboro_tan.png b/graphics/door_anims/rustboro_tan.png index 7a0ba149c..d8a1b185e 100644 Binary files a/graphics/door_anims/rustboro_tan.png and b/graphics/door_anims/rustboro_tan.png differ diff --git a/graphics/door_anims/safari_zone.png b/graphics/door_anims/safari_zone.png index eae6a0e3e..89807f843 100644 Binary files a/graphics/door_anims/safari_zone.png and b/graphics/door_anims/safari_zone.png differ diff --git a/graphics/door_anims/sootopolis.png b/graphics/door_anims/sootopolis.png index 3b3833daa..faac1f59d 100644 Binary files a/graphics/door_anims/sootopolis.png and b/graphics/door_anims/sootopolis.png differ diff --git a/graphics/door_anims/sootopolis_peaked_roof.png b/graphics/door_anims/sootopolis_peaked_roof.png index 7d8ea1f33..b4ccfb5f9 100644 Binary files a/graphics/door_anims/sootopolis_peaked_roof.png and b/graphics/door_anims/sootopolis_peaked_roof.png differ diff --git a/graphics/door_anims/trainer_hill_lobby_elevator.png b/graphics/door_anims/trainer_hill_lobby_elevator.png index bdd1c3b27..aeb7eaf26 100644 Binary files a/graphics/door_anims/trainer_hill_lobby_elevator.png and b/graphics/door_anims/trainer_hill_lobby_elevator.png differ diff --git a/graphics/door_anims/unused_battle_frontier.png b/graphics/door_anims/unknown.png similarity index 100% rename from graphics/door_anims/unused_battle_frontier.png rename to graphics/door_anims/unknown.png diff --git a/graphics/field_effects/pics/bug_tracks.png b/graphics/field_effects/pics/bug_tracks.png new file mode 100644 index 000000000..b7062d253 Binary files /dev/null and b/graphics/field_effects/pics/bug_tracks.png differ diff --git a/graphics/field_effects/pics/slither_tracks.png b/graphics/field_effects/pics/slither_tracks.png new file mode 100644 index 000000000..7c8247c34 Binary files /dev/null and b/graphics/field_effects/pics/slither_tracks.png differ diff --git a/graphics/field_effects/pics/spot_tracks.png b/graphics/field_effects/pics/spot_tracks.png new file mode 100644 index 000000000..cd8c9c0cf Binary files /dev/null and b/graphics/field_effects/pics/spot_tracks.png differ diff --git a/graphics/object_events/palettes/followers/aggron.pal b/graphics/object_events/palettes/followers/aggron.pal new file mode 100644 index 000000000..285abfd63 --- /dev/null +++ b/graphics/object_events/palettes/followers/aggron.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 145 +73 65 81 +209 209 217 +1 1 1 +65 97 129 +105 145 201 +169 57 57 +49 41 57 +177 177 193 +209 89 89 +233 233 249 +145 145 153 +105 97 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/aipom.pal b/graphics/object_events/palettes/followers/aipom.pal new file mode 100644 index 000000000..f658712e1 --- /dev/null +++ b/graphics/object_events/palettes/followers/aipom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 97 +169 137 201 +97 81 65 +225 209 161 +185 201 225 +113 73 145 +1 1 1 +81 41 113 +233 233 249 +137 105 169 +137 113 81 +137 153 185 +201 177 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ampharos.pal b/graphics/object_events/palettes/followers/ampharos.pal new file mode 100644 index 000000000..17ad1d495 --- /dev/null +++ b/graphics/object_events/palettes/followers/ampharos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 25 +185 57 17 +113 129 153 +49 57 65 +1 1 1 +185 201 225 +241 89 81 +129 25 9 +81 97 113 +241 209 89 +105 89 9 +233 233 249 +201 161 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/anorith.pal b/graphics/object_events/palettes/followers/anorith.pal new file mode 100644 index 000000000..34717ba7c --- /dev/null +++ b/graphics/object_events/palettes/followers/anorith.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 153 113 +65 65 73 +201 201 217 +73 113 57 +161 161 177 +137 25 57 +129 169 121 +233 233 249 +193 113 105 +49 41 49 +105 105 113 +169 65 81 +217 217 233 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ariados.pal b/graphics/object_events/palettes/followers/ariados.pal new file mode 100644 index 000000000..ebc2b6797 --- /dev/null +++ b/graphics/object_events/palettes/followers/ariados.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 137 1 +97 33 169 +129 97 9 +1 1 1 +201 65 57 +49 41 33 +169 185 209 +113 17 25 +145 81 225 +233 233 249 +249 193 9 +73 73 73 +241 97 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/armaldo.pal b/graphics/object_events/palettes/followers/armaldo.pal new file mode 100644 index 000000000..9ca50cb6f --- /dev/null +++ b/graphics/object_events/palettes/followers/armaldo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 129 9 +17 65 97 +97 145 177 +193 65 105 +193 193 209 +49 49 49 +233 201 73 +57 105 145 +113 113 121 +1 1 1 +233 233 249 +161 41 81 +129 169 201 +81 81 81 +145 145 161 diff --git a/graphics/object_events/palettes/followers/articuno.pal b/graphics/object_events/palettes/followers/articuno.pal new file mode 100644 index 000000000..417a8deb9 --- /dev/null +++ b/graphics/object_events/palettes/followers/articuno.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +49 177 193 +161 225 249 +57 57 41 +57 129 137 +177 177 209 +217 249 249 +49 105 153 +161 33 49 +201 185 73 +1 1 1 +121 201 249 +105 161 233 +49 65 89 +233 233 249 diff --git a/graphics/object_events/palettes/followers/bagon.pal b/graphics/object_events/palettes/followers/bagon.pal new file mode 100644 index 000000000..cb37d7d6a --- /dev/null +++ b/graphics/object_events/palettes/followers/bagon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 17 +65 137 161 +201 201 201 +121 121 121 +185 185 185 +41 65 105 +233 233 249 +193 161 73 +1 1 1 +121 193 249 +105 169 225 +153 153 153 +73 81 105 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/barboach.pal b/graphics/object_events/palettes/followers/barboach.pal new file mode 100644 index 000000000..ccc983a79 --- /dev/null +++ b/graphics/object_events/palettes/followers/barboach.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 145 153 +233 233 249 +89 145 185 +49 65 81 +121 177 209 +89 97 113 +1 1 1 +153 161 177 +57 113 153 +185 185 201 +25 65 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bayleef.pal b/graphics/object_events/palettes/followers/bayleef.pal new file mode 100644 index 000000000..bdfc636fc --- /dev/null +++ b/graphics/object_events/palettes/followers/bayleef.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 9 +217 217 217 +169 153 89 +161 193 81 +65 81 1 +201 185 89 +177 81 121 +233 233 249 +233 217 89 +1 1 1 +97 81 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/beautifly.pal b/graphics/object_events/palettes/followers/beautifly.pal new file mode 100644 index 000000000..1f2c4405a --- /dev/null +++ b/graphics/object_events/palettes/followers/beautifly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 169 49 +97 97 105 +81 145 225 +41 41 49 +209 209 217 +185 49 73 +1 1 1 +217 89 97 +177 177 177 +249 217 105 +97 73 33 +49 97 153 +233 233 249 +65 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/beldum.pal b/graphics/object_events/palettes/followers/beldum.pal new file mode 100644 index 000000000..2ed964eb8 --- /dev/null +++ b/graphics/object_events/palettes/followers/beldum.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 129 169 +65 65 65 +185 185 201 +177 57 57 +113 161 209 +17 73 105 +153 217 241 +137 41 41 +1 1 1 +41 41 49 +97 97 105 +233 233 249 +153 201 233 +145 145 161 +65 97 121 diff --git a/graphics/object_events/palettes/followers/bellossom.pal b/graphics/object_events/palettes/followers/bellossom.pal new file mode 100644 index 000000000..d6249f109 --- /dev/null +++ b/graphics/object_events/palettes/followers/bellossom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 161 65 +233 233 249 +17 65 41 +57 137 89 +241 193 57 +233 81 57 +113 33 9 +217 137 25 +1 1 1 +97 89 9 +193 41 25 +73 105 25 +153 193 113 +217 153 17 +0 0 0 diff --git a/graphics/object_events/palettes/followers/blastoise.pal b/graphics/object_events/palettes/followers/blastoise.pal new file mode 100644 index 000000000..020dadbe0 --- /dev/null +++ b/graphics/object_events/palettes/followers/blastoise.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 81 +145 137 233 +129 81 9 +241 201 81 +97 97 169 +49 57 89 +137 137 137 +233 233 249 +81 81 81 +185 185 185 +1 1 1 +73 41 9 +177 113 25 +201 169 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/blaziken.pal b/graphics/object_events/palettes/followers/blaziken.pal new file mode 100644 index 000000000..723203d09 --- /dev/null +++ b/graphics/object_events/palettes/followers/blaziken.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 169 17 +33 97 185 +1 1 1 +97 73 1 +169 25 25 +209 185 89 +241 225 153 +113 89 65 +177 129 81 +249 97 89 +241 233 225 +105 17 1 +233 49 41 +249 209 81 +185 169 161 diff --git a/graphics/object_events/palettes/followers/blissey.pal b/graphics/object_events/palettes/followers/blissey.pal new file mode 100644 index 000000000..e169adc07 --- /dev/null +++ b/graphics/object_events/palettes/followers/blissey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 145 169 +169 185 209 +65 73 97 +1 1 1 +225 81 97 +233 233 249 +105 17 65 +249 121 185 +249 169 201 +185 89 137 +201 209 233 +145 65 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/breloom.pal b/graphics/object_events/palettes/followers/breloom.pal new file mode 100644 index 000000000..811a70749 --- /dev/null +++ b/graphics/object_events/palettes/followers/breloom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 137 57 +49 81 33 +233 233 249 +129 193 89 +201 65 65 +97 33 33 +1 1 1 +73 113 49 +161 41 41 +129 105 57 +233 209 145 +105 169 65 +33 57 17 +209 185 113 +81 73 49 diff --git a/graphics/object_events/palettes/followers/butterfree.pal b/graphics/object_events/palettes/followers/butterfree.pal new file mode 100644 index 000000000..9d7c7c4e3 --- /dev/null +++ b/graphics/object_events/palettes/followers/butterfree.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 145 +50 65 145 +105 201 249 +97 97 97 +249 113 137 +193 40 65 +81 145 225 +185 193 225 +65 40 89 +161 105 225 +233 233 249 +113 81 201 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/camerupt.pal b/graphics/object_events/palettes/followers/camerupt.pal new file mode 100644 index 000000000..da482a575 --- /dev/null +++ b/graphics/object_events/palettes/followers/camerupt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 137 81 +201 73 25 +249 249 249 +73 65 49 +73 145 161 +89 97 97 +161 49 25 +1 1 1 +161 153 121 +217 105 49 +89 33 33 +129 113 81 +193 185 153 +49 57 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/carvanha.pal b/graphics/object_events/palettes/followers/carvanha.pal new file mode 100644 index 000000000..cb0714f8c --- /dev/null +++ b/graphics/object_events/palettes/followers/carvanha.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 9 +17 97 185 +49 121 233 +145 49 9 +1 1 1 +105 81 1 +241 193 17 +233 233 249 +169 177 185 +49 57 65 +201 57 33 +249 81 41 +249 217 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/caterpie.pal b/graphics/object_events/palettes/followers/caterpie.pal new file mode 100644 index 000000000..68f678aba --- /dev/null +++ b/graphics/object_events/palettes/followers/caterpie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 153 41 +169 233 65 +65 89 33 +249 121 113 +81 81 81 +161 49 73 +169 153 65 +249 233 97 +1 1 1 +129 97 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/celebi.pal b/graphics/object_events/palettes/followers/celebi.pal new file mode 100644 index 000000000..50b97151d --- /dev/null +++ b/graphics/object_events/palettes/followers/celebi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 81 +25 169 225 +121 185 73 +249 249 193 +1 89 137 +33 41 41 +145 153 153 +137 185 241 +193 225 113 +233 233 249 +1 1 1 +33 65 33 +81 177 209 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/charizard.pal b/graphics/object_events/palettes/followers/charizard.pal new file mode 100644 index 000000000..e817695ce --- /dev/null +++ b/graphics/object_events/palettes/followers/charizard.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 129 +161 161 161 +97 49 1 +249 185 17 +41 73 89 +201 89 41 +1 1 1 +145 65 33 +217 217 249 +249 121 57 +193 17 33 +241 209 113 +217 169 49 +97 65 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/charmander.pal b/graphics/object_events/palettes/followers/charmander.pal new file mode 100644 index 000000000..8df0fb2ef --- /dev/null +++ b/graphics/object_events/palettes/followers/charmander.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +167 177 129 +249 137 57 +97 65 33 +233 233 249 +1 1 1 +185 89 33 +225 41 41 +217 169 49 +41 73 89 +241 209 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/charmeleon.pal b/graphics/object_events/palettes/followers/charmeleon.pal new file mode 100644 index 000000000..108320b28 --- /dev/null +++ b/graphics/object_events/palettes/followers/charmeleon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 169 49 +41 105 129 +177 185 249 +241 209 113 +201 17 41 +145 145 145 +185 65 57 +97 25 33 +233 233 249 +249 105 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chimecho.pal b/graphics/object_events/palettes/followers/chimecho.pal new file mode 100644 index 000000000..cfbd41a93 --- /dev/null +++ b/graphics/object_events/palettes/followers/chimecho.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 57 +161 169 193 +193 57 57 +1 1 1 +121 129 153 +209 209 233 +89 97 121 +113 33 33 +249 217 89 +137 105 33 +233 233 249 +209 161 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chinchou.pal b/graphics/object_events/palettes/followers/chinchou.pal new file mode 100644 index 000000000..23a92cfb2 --- /dev/null +++ b/graphics/object_events/palettes/followers/chinchou.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 17 +97 137 225 +41 57 113 +193 201 217 +81 65 9 +1 1 1 +113 169 241 +185 49 41 +249 209 97 +89 89 161 +129 105 25 +233 233 249 +193 185 217 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/clamperl.pal b/graphics/object_events/palettes/followers/clamperl.pal new file mode 100644 index 000000000..8ff612cf1 --- /dev/null +++ b/graphics/object_events/palettes/followers/clamperl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 169 +49 65 105 +1 1 1 +169 65 105 +137 161 209 +49 49 65 +73 97 137 +161 193 241 +233 121 161 +137 33 73 +201 89 129 +209 217 233 +97 105 129 +153 169 201 +0 0 0 diff --git a/graphics/object_events/palettes/followers/claydol.pal b/graphics/object_events/palettes/followers/claydol.pal new file mode 100644 index 000000000..2c319666c --- /dev/null +++ b/graphics/object_events/palettes/followers/claydol.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 25 +137 137 153 +57 49 41 +137 121 89 +193 73 121 +217 185 89 +233 233 249 +89 81 65 +137 41 65 +185 185 193 +233 137 113 +1 1 1 +113 89 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/clefable.pal b/graphics/object_events/palettes/followers/clefable.pal new file mode 100644 index 000000000..a9968049c --- /dev/null +++ b/graphics/object_events/palettes/followers/clefable.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 129 169 +73 57 57 +1 1 1 +217 81 121 +121 97 73 +201 201 201 +225 145 153 +121 57 73 +249 193 193 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cloyster.pal b/graphics/object_events/palettes/followers/cloyster.pal new file mode 100644 index 000000000..b15a51ee6 --- /dev/null +++ b/graphics/object_events/palettes/followers/cloyster.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +97 97 97 +57 57 57 +233 233 249 +193 177 233 +145 113 185 +41 41 49 +1 1 1 +81 81 81 +97 89 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/corphish.pal b/graphics/object_events/palettes/followers/corphish.pal new file mode 100644 index 000000000..4fe98b274 --- /dev/null +++ b/graphics/object_events/palettes/followers/corphish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 145 +89 81 65 +233 233 249 +177 177 193 +193 73 33 +161 153 129 +89 25 1 +121 113 97 +233 137 97 +217 105 65 +153 49 9 +1 1 1 +57 73 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/corsola.pal b/graphics/object_events/palettes/followers/corsola.pal new file mode 100644 index 000000000..caf141ec5 --- /dev/null +++ b/graphics/object_events/palettes/followers/corsola.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 145 185 +169 185 209 +73 81 97 +1 1 1 +233 233 249 +169 65 89 +121 33 65 +233 129 161 +241 169 193 +217 105 129 +193 209 233 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cradily.pal b/graphics/object_events/palettes/followers/cradily.pal new file mode 100644 index 000000000..9b10b1bbe --- /dev/null +++ b/graphics/object_events/palettes/followers/cradily.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 129 89 +33 89 49 +241 185 1 +97 169 97 +49 41 49 +193 65 97 +241 209 97 +137 25 57 +209 105 137 +153 217 153 +161 49 89 +1 1 1 +129 113 65 +89 81 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/crawdaunt.pal b/graphics/object_events/palettes/followers/crawdaunt.pal new file mode 100644 index 000000000..cd8f78f0c --- /dev/null +++ b/graphics/object_events/palettes/followers/crawdaunt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 41 +49 57 73 +41 129 169 +201 81 65 +169 153 145 +113 89 25 +233 233 249 +169 169 185 +249 217 89 +89 41 9 +145 57 33 +249 105 97 +89 81 65 +57 145 201 +1 1 1 diff --git a/graphics/object_events/palettes/followers/crobat.pal b/graphics/object_events/palettes/followers/crobat.pal new file mode 100644 index 000000000..35a380e27 --- /dev/null +++ b/graphics/object_events/palettes/followers/crobat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +73 25 121 +41 145 185 +17 97 145 +233 233 249 +121 81 145 +161 49 57 +233 217 97 +169 185 209 +161 113 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/croconaw.pal b/graphics/object_events/palettes/followers/croconaw.pal new file mode 100644 index 000000000..f1504a314 --- /dev/null +++ b/graphics/object_events/palettes/followers/croconaw.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 161 89 +73 65 17 +57 169 193 +41 65 97 +113 25 41 +225 209 121 +121 105 41 +233 233 249 +65 105 137 +169 41 65 +113 193 225 +1 1 1 +137 73 1 +209 49 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cyndaquil.pal b/graphics/object_events/palettes/followers/cyndaquil.pal new file mode 100644 index 000000000..58b2aa207 --- /dev/null +++ b/graphics/object_events/palettes/followers/cyndaquil.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 25 +73 73 113 +129 25 25 +97 129 225 +89 65 17 +1 1 1 +209 57 49 +169 185 209 +233 233 249 +33 49 81 +249 209 97 +81 97 161 +161 41 41 +57 65 81 +241 161 17 diff --git a/graphics/object_events/palettes/followers/delcatty.pal b/graphics/object_events/palettes/followers/delcatty.pal new file mode 100644 index 000000000..a31726030 --- /dev/null +++ b/graphics/object_events/palettes/followers/delcatty.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 73 +193 145 217 +65 49 105 +225 185 57 +153 105 201 +1 1 1 +81 73 57 +233 233 249 +233 209 129 +97 73 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/delibird.pal b/graphics/object_events/palettes/followers/delibird.pal new file mode 100644 index 000000000..899736131 --- /dev/null +++ b/graphics/object_events/palettes/followers/delibird.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +129 105 17 +137 1 1 +145 161 177 +185 25 25 +193 209 233 +249 217 89 +73 73 73 +233 233 249 +153 1 1 +201 25 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/deoxys.pal b/graphics/object_events/palettes/followers/deoxys.pal new file mode 100644 index 000000000..a02008116 --- /dev/null +++ b/graphics/object_events/palettes/followers/deoxys.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 105 +121 65 129 +57 57 57 +161 177 129 +249 129 81 +225 73 65 +97 17 17 +81 89 97 +233 233 249 +1 1 1 +185 89 209 +65 169 153 +185 41 41 +33 73 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/diglett.pal b/graphics/object_events/palettes/followers/diglett.pal new file mode 100644 index 000000000..761624524 --- /dev/null +++ b/graphics/object_events/palettes/followers/diglett.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 3 +113 113 113 +65 49 17 +1 1 1 +65 65 65 +169 169 169 +153 33 73 +153 121 57 +209 65 105 +233 113 153 +201 201 201 +113 73 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dodrio.pal b/graphics/object_events/palettes/followers/dodrio.pal new file mode 100644 index 000000000..183414bf0 --- /dev/null +++ b/graphics/object_events/palettes/followers/dodrio.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 73 +121 81 41 +177 177 153 +129 129 129 +65 49 33 +137 97 41 +193 161 65 +1 1 1 +233 233 249 +97 25 33 +185 65 89 +225 129 145 +249 177 49 +57 57 57 +137 113 41 diff --git a/graphics/object_events/palettes/followers/donphan.pal b/graphics/object_events/palettes/followers/donphan.pal new file mode 100644 index 000000000..df25c4cb5 --- /dev/null +++ b/graphics/object_events/palettes/followers/donphan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 137 153 +73 65 73 +249 249 249 +1 1 1 +25 41 57 +121 121 129 +73 89 113 +185 185 193 +137 25 25 +137 1 1 +153 153 161 +49 73 81 +185 185 201 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dragonair.pal b/graphics/object_events/palettes/followers/dragonair.pal new file mode 100644 index 000000000..5f7e4eaa8 --- /dev/null +++ b/graphics/object_events/palettes/followers/dragonair.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +209 209 209 +65 65 65 +41 121 169 +81 145 217 +233 233 249 +105 105 105 +89 177 217 +145 41 33 +161 201 249 +49 65 105 +113 177 241 +81 113 177 +241 241 241 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dragonite.pal b/graphics/object_events/palettes/followers/dragonite.pal new file mode 100644 index 000000000..c17cc58ce --- /dev/null +++ b/graphics/object_events/palettes/followers/dragonite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 65 +145 153 161 +241 177 81 +65 57 33 +57 129 113 +1 1 1 +41 97 81 +233 233 249 +185 193 209 +153 97 49 +153 153 153 +233 201 153 +97 97 97 +209 169 121 +217 137 65 diff --git a/graphics/object_events/palettes/followers/dratini.pal b/graphics/object_events/palettes/followers/dratini.pal new file mode 100644 index 000000000..b8472f998 --- /dev/null +++ b/graphics/object_events/palettes/followers/dratini.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 65 65 +193 193 217 +97 113 169 +129 137 209 +105 105 105 +217 217 217 +145 41 33 +153 161 225 +233 233 249 +57 65 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dugtrio.pal b/graphics/object_events/palettes/followers/dugtrio.pal new file mode 100644 index 000000000..19bbad592 --- /dev/null +++ b/graphics/object_events/palettes/followers/dugtrio.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 105 57 +57 41 17 +1 1 1 +113 113 113 +65 65 65 +129 17 49 +169 169 169 +153 121 57 +209 65 105 +233 121 153 +201 201 201 +113 73 33 +153 33 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dunsparce.pal b/graphics/object_events/palettes/followers/dunsparce.pal new file mode 100644 index 000000000..9cc03ea9e --- /dev/null +++ b/graphics/object_events/palettes/followers/dunsparce.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 169 1 +1 1 1 +137 185 225 +25 57 73 +217 193 1 +233 233 249 +249 225 161 +185 209 241 +249 233 113 +153 137 105 +81 161 185 +65 81 97 +65 57 57 +121 193 217 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dusclops.pal b/graphics/object_events/palettes/followers/dusclops.pal new file mode 100644 index 000000000..30d44a7a9 --- /dev/null +++ b/graphics/object_events/palettes/followers/dusclops.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 113 +185 185 185 +73 65 49 +161 161 161 +209 97 97 +1 1 1 +225 217 217 +105 89 81 +145 33 33 +169 177 201 +233 233 249 +185 177 177 +65 65 65 +121 121 121 +0 0 0 diff --git a/graphics/object_events/palettes/followers/duskull.pal b/graphics/object_events/palettes/followers/duskull.pal new file mode 100644 index 000000000..5f79a1d4e --- /dev/null +++ b/graphics/object_events/palettes/followers/duskull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 113 +73 65 49 +1 1 1 +193 57 57 +145 33 33 +217 113 113 +81 89 113 +201 185 185 +33 41 57 +225 217 217 +105 113 145 +57 65 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dustox.pal b/graphics/object_events/palettes/followers/dustox.pal new file mode 100644 index 000000000..72e80bb45 --- /dev/null +++ b/graphics/object_events/palettes/followers/dustox.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 57 +73 57 113 +161 145 217 +137 185 105 +57 57 57 +169 217 89 +185 49 73 +241 105 105 +121 97 169 +105 153 41 +65 89 33 +97 73 33 +241 217 105 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/eevee.pal b/graphics/object_events/palettes/followers/eevee.pal new file mode 100644 index 000000000..c04ada4ee --- /dev/null +++ b/graphics/object_events/palettes/followers/eevee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 65 +225 209 169 +97 65 57 +185 161 97 +129 97 49 +65 49 25 +193 145 81 +233 233 249 +1 1 1 +121 97 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ekans.pal b/graphics/object_events/palettes/followers/ekans.pal new file mode 100644 index 000000000..b163ae5c8 --- /dev/null +++ b/graphics/object_events/palettes/followers/ekans.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 161 49 +113 97 41 +201 129 193 +121 81 121 +97 49 105 +249 217 65 +1 1 1 +145 97 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/electrike.pal b/graphics/object_events/palettes/followers/electrike.pal new file mode 100644 index 000000000..5d0115cfa --- /dev/null +++ b/graphics/object_events/palettes/followers/electrike.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 137 65 +233 233 249 +249 209 65 +129 169 97 +33 57 9 +153 201 97 +193 145 41 +1 1 1 +113 81 25 +177 225 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/entei.pal b/graphics/object_events/palettes/followers/entei.pal new file mode 100644 index 000000000..934782cde --- /dev/null +++ b/graphics/object_events/palettes/followers/entei.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 25 +97 65 49 +113 137 145 +49 57 81 +249 217 57 +217 73 33 +169 25 1 +89 81 25 +169 193 209 +1 1 1 +73 49 41 +233 233 249 +89 97 121 +169 121 81 +129 89 57 diff --git a/graphics/object_events/palettes/followers/espeon.pal b/graphics/object_events/palettes/followers/espeon.pal new file mode 100644 index 000000000..814e30a6e --- /dev/null +++ b/graphics/object_events/palettes/followers/espeon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +49 33 121 +241 201 233 +233 137 177 +57 113 177 +225 177 217 +201 57 49 +81 41 121 +169 105 161 +233 233 249 +201 145 209 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/exeggutor.pal b/graphics/object_events/palettes/followers/exeggutor.pal new file mode 100644 index 000000000..9e45a52b5 --- /dev/null +++ b/graphics/object_events/palettes/followers/exeggutor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 169 41 +161 161 161 +57 81 41 +129 217 89 +201 137 89 +201 89 121 +145 97 57 +209 161 89 +233 233 249 +65 41 41 +249 201 89 +1 1 1 +89 73 65 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/exploud.pal b/graphics/object_events/palettes/followers/exploud.pal new file mode 100644 index 000000000..000d9c38f --- /dev/null +++ b/graphics/object_events/palettes/followers/exploud.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 49 +105 73 33 +137 129 185 +81 73 105 +41 49 65 +233 233 249 +105 97 153 +233 209 105 +1 1 1 +169 177 193 +113 33 49 +185 65 105 +177 169 225 +105 113 137 +137 41 65 diff --git a/graphics/object_events/palettes/followers/farfetchd.pal b/graphics/object_events/palettes/followers/farfetchd.pal new file mode 100644 index 000000000..5c23264c2 --- /dev/null +++ b/graphics/object_events/palettes/followers/farfetchd.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 33 +169 169 169 +249 201 49 +81 81 81 +153 161 113 +241 225 161 +1 1 1 +177 145 41 +73 57 41 +233 233 249 +137 113 65 +209 209 193 +177 129 73 +217 169 121 +201 185 121 diff --git a/graphics/object_events/palettes/followers/fearow.pal b/graphics/object_events/palettes/followers/fearow.pal new file mode 100644 index 000000000..04f68a619 --- /dev/null +++ b/graphics/object_events/palettes/followers/fearow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 145 33 +241 129 153 +193 65 1 +225 129 97 +185 185 185 +65 65 65 +89 57 17 +185 169 113 +233 233 249 +177 81 121 +177 113 17 +89 17 9 +225 201 169 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/feebas.pal b/graphics/object_events/palettes/followers/feebas.pal new file mode 100644 index 000000000..f5ca9d67c --- /dev/null +++ b/graphics/object_events/palettes/followers/feebas.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 73 +113 161 209 +73 57 33 +1 1 1 +49 81 113 +81 121 161 +233 233 249 +17 41 65 +193 65 105 +193 193 209 +169 153 89 +105 89 49 +201 185 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/feraligatr.pal b/graphics/object_events/palettes/followers/feraligatr.pal new file mode 100644 index 000000000..043239005 --- /dev/null +++ b/graphics/object_events/palettes/followers/feraligatr.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 41 +81 129 185 +73 65 17 +185 161 89 +161 209 241 +169 41 65 +225 193 121 +161 177 201 +17 65 97 +97 33 41 +65 105 137 +233 233 249 +1 1 1 +113 177 233 +209 49 73 diff --git a/graphics/object_events/palettes/followers/flaaffy.pal b/graphics/object_events/palettes/followers/flaaffy.pal new file mode 100644 index 000000000..3e934d7da --- /dev/null +++ b/graphics/object_events/palettes/followers/flaaffy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 185 89 +57 153 193 +97 201 241 +49 57 65 +225 145 185 +33 89 145 +185 201 225 +185 97 129 +113 41 65 +249 185 217 +233 233 249 +89 105 121 +137 153 177 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/flareon.pal b/graphics/object_events/palettes/followers/flareon.pal new file mode 100644 index 000000000..df0c348e5 --- /dev/null +++ b/graphics/object_events/palettes/followers/flareon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 49 +233 217 153 +73 57 41 +153 65 41 +217 169 73 +233 233 249 +217 89 33 +249 129 73 +1 1 1 +217 193 193 +81 65 65 +193 65 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/flygon.pal b/graphics/object_events/palettes/followers/flygon.pal new file mode 100644 index 000000000..3ed7c9537 --- /dev/null +++ b/graphics/object_events/palettes/followers/flygon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 65 +65 105 57 +185 193 209 +129 33 33 +161 193 97 +1 1 1 +249 129 153 +169 49 65 +249 249 249 +49 73 49 +193 217 153 +97 97 97 +209 65 89 +121 145 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/forretress.pal b/graphics/object_events/palettes/followers/forretress.pal new file mode 100644 index 000000000..12bb3be0e --- /dev/null +++ b/graphics/object_events/palettes/followers/forretress.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 137 +89 65 105 +225 209 249 +105 17 25 +185 153 185 +137 113 145 +49 49 49 +1 1 1 +217 97 65 +193 49 57 +209 185 217 +233 233 249 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gardevoir.pal b/graphics/object_events/palettes/followers/gardevoir.pal new file mode 100644 index 000000000..7fc27c511 --- /dev/null +++ b/graphics/object_events/palettes/followers/gardevoir.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 57 +169 169 177 +17 65 33 +73 177 89 +129 33 57 +129 129 145 +233 233 249 +241 105 105 +1 1 1 +201 201 217 +73 73 81 +105 201 129 +185 49 73 +145 145 145 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gastly.pal b/graphics/object_events/palettes/followers/gastly.pal new file mode 100644 index 000000000..e3337fe80 --- /dev/null +++ b/graphics/object_events/palettes/followers/gastly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 137 +73 73 73 +65 17 57 +233 233 249 +41 41 57 +1 1 1 +113 89 153 +81 57 105 +153 9 5 +185 185 185 +137 113 161 +57 57 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gengar.pal b/graphics/object_events/palettes/followers/gengar.pal new file mode 100644 index 000000000..374fed5aa --- /dev/null +++ b/graphics/object_events/palettes/followers/gengar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 97 97 +153 153 153 +81 57 105 +185 185 185 +145 121 161 +41 41 57 +217 97 97 +1 1 1 +249 169 161 +105 81 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/girafarig.pal b/graphics/object_events/palettes/followers/girafarig.pal new file mode 100644 index 000000000..5d0e01229 --- /dev/null +++ b/graphics/object_events/palettes/followers/girafarig.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 81 +33 65 121 +249 209 97 +73 49 17 +185 81 105 +161 177 201 +41 49 57 +201 161 81 +233 233 249 +233 113 185 +57 113 161 +105 81 57 +1 1 1 +73 81 89 +97 113 153 diff --git a/graphics/object_events/palettes/followers/glalie.pal b/graphics/object_events/palettes/followers/glalie.pal new file mode 100644 index 000000000..8938d2810 --- /dev/null +++ b/graphics/object_events/palettes/followers/glalie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 137 +1 1 1 +57 57 73 +153 161 177 +41 41 57 +41 129 193 +193 201 217 +81 81 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gligar.pal b/graphics/object_events/palettes/followers/gligar.pal new file mode 100644 index 000000000..74a83d573 --- /dev/null +++ b/graphics/object_events/palettes/followers/gligar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 145 169 +89 41 97 +241 193 217 +9 89 129 +161 89 137 +1 1 1 +233 233 249 +201 113 177 +137 33 57 +225 153 209 +177 73 121 +209 105 153 +169 185 161 +201 209 217 +17 97 129 diff --git a/graphics/object_events/palettes/followers/goldeen.pal b/graphics/object_events/palettes/followers/goldeen.pal new file mode 100644 index 000000000..3e9389b60 --- /dev/null +++ b/graphics/object_events/palettes/followers/goldeen.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 113 +177 177 177 +233 73 33 +249 233 161 +217 161 81 +97 17 1 +81 81 81 +241 129 161 +233 233 249 +1 1 1 +201 89 121 +161 33 17 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/golduck.pal b/graphics/object_events/palettes/followers/golduck.pal new file mode 100644 index 000000000..c1568e666 --- /dev/null +++ b/graphics/object_events/palettes/followers/golduck.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 185 65 +81 121 169 +241 49 113 +65 65 65 +249 233 137 +233 233 249 +1 1 1 +177 177 209 +89 17 33 +121 161 249 +249 193 81 +49 57 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/golem.pal b/graphics/object_events/palettes/followers/golem.pal new file mode 100644 index 000000000..d2852e60c --- /dev/null +++ b/graphics/object_events/palettes/followers/golem.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 105 +89 81 57 +193 193 193 +153 153 153 +121 113 81 +49 49 49 +1 1 1 +105 17 25 +233 233 249 +193 153 121 +113 89 73 +145 113 97 +161 161 161 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gorebyss.pal b/graphics/object_events/palettes/followers/gorebyss.pal new file mode 100644 index 000000000..af3c25028 --- /dev/null +++ b/graphics/object_events/palettes/followers/gorebyss.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 121 137 +81 57 129 +209 217 233 +145 129 217 +121 105 185 +97 105 129 +49 49 65 +1 1 1 +153 169 201 +185 81 97 +201 89 113 +137 33 73 +169 153 241 +233 145 161 +233 233 249 diff --git a/graphics/object_events/palettes/followers/granbull.pal b/graphics/object_events/palettes/followers/granbull.pal new file mode 100644 index 000000000..ed5998bfc --- /dev/null +++ b/graphics/object_events/palettes/followers/granbull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 121 137 +177 193 209 +49 65 81 +129 89 137 +1 1 1 +233 233 249 +193 145 209 +225 185 241 +161 113 169 +105 65 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/groudon.pal b/graphics/object_events/palettes/followers/groudon.pal new file mode 100644 index 000000000..28f20e54a --- /dev/null +++ b/graphics/object_events/palettes/followers/groudon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 129 145 +217 73 65 +145 153 177 +137 25 17 +57 65 81 +33 41 57 +209 193 49 +185 201 217 +1 1 1 +129 113 25 +97 105 121 +233 233 249 +89 17 9 +73 81 97 +177 33 33 diff --git a/graphics/object_events/palettes/followers/grovyle.pal b/graphics/object_events/palettes/followers/grovyle.pal new file mode 100644 index 000000000..d1df22d69 --- /dev/null +++ b/graphics/object_events/palettes/followers/grovyle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 121 65 +41 57 17 +1 1 1 +105 25 25 +97 153 73 +153 201 121 +153 41 41 +65 105 41 +249 217 89 +185 49 49 +113 153 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/grumpig.pal b/graphics/object_events/palettes/followers/grumpig.pal new file mode 100644 index 000000000..0563b27ca --- /dev/null +++ b/graphics/object_events/palettes/followers/grumpig.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +121 65 145 +73 81 89 +153 89 185 +105 25 65 +185 73 129 +49 57 65 +193 193 193 +249 249 249 +113 121 121 +193 121 225 +145 49 97 +225 97 161 +81 41 105 +137 73 169 diff --git a/graphics/object_events/palettes/followers/gulpin.pal b/graphics/object_events/palettes/followers/gulpin.pal new file mode 100644 index 000000000..28cdbf17d --- /dev/null +++ b/graphics/object_events/palettes/followers/gulpin.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 121 41 +57 97 17 +233 185 65 +57 73 81 +105 153 65 +1 1 1 +33 49 17 +169 129 57 +113 89 41 +137 193 113 +73 89 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gyarados.pal b/graphics/object_events/palettes/followers/gyarados.pal new file mode 100644 index 000000000..3019ff479 --- /dev/null +++ b/graphics/object_events/palettes/followers/gyarados.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 129 1 +41 129 129 +193 193 209 +137 97 33 +73 177 225 +1 1 1 +33 97 129 +249 201 105 +185 65 105 +49 57 81 +217 113 153 +233 233 249 +137 145 145 +177 137 49 +65 121 153 diff --git a/graphics/object_events/palettes/followers/hariyama.pal b/graphics/object_events/palettes/followers/hariyama.pal new file mode 100644 index 000000000..9ae8eaef4 --- /dev/null +++ b/graphics/object_events/palettes/followers/hariyama.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 33 +105 129 177 +25 41 89 +73 57 9 +217 185 65 +217 201 153 +185 153 105 +105 81 65 +233 233 249 +65 81 137 +185 89 17 +1 1 1 +97 33 9 +241 233 193 +209 129 57 diff --git a/graphics/object_events/palettes/followers/haunter.pal b/graphics/object_events/palettes/followers/haunter.pal new file mode 100644 index 000000000..aab1166f2 --- /dev/null +++ b/graphics/object_events/palettes/followers/haunter.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 161 +73 73 73 +233 233 249 +65 17 57 +1 1 1 +97 73 105 +65 49 57 +153 153 153 +185 185 185 +129 97 129 +97 33 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/heracross.pal b/graphics/object_events/palettes/followers/heracross.pal new file mode 100644 index 000000000..26bd7164c --- /dev/null +++ b/graphics/object_events/palettes/followers/heracross.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 137 9 +81 153 177 +153 89 1 +249 249 249 +17 73 97 +129 193 201 +57 121 145 +1 1 1 +241 177 65 +33 97 121 +153 169 185 +185 201 217 +57 73 81 +17 17 17 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmonchan.pal b/graphics/object_events/palettes/followers/hitmonchan.pal new file mode 100644 index 000000000..7c6c8e38c --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmonchan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 105 +113 81 57 +145 25 41 +233 233 249 +73 49 49 +161 137 201 +113 105 129 +1 1 1 +225 57 57 +153 113 65 +57 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmonlee.pal b/graphics/object_events/palettes/followers/hitmonlee.pal new file mode 100644 index 000000000..16a145cac --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmonlee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 49 +161 161 161 +1 1 1 +89 73 41 +177 145 129 +161 129 81 +201 201 209 +97 97 97 +73 49 49 +233 233 249 +121 97 57 +209 185 113 +153 137 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmontop.pal b/graphics/object_events/palettes/followers/hitmontop.pal new file mode 100644 index 000000000..cb5c2f1ee --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmontop.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 73 +97 153 209 +89 73 25 +209 161 105 +233 233 249 +57 113 161 +25 57 105 +177 185 193 +1 1 1 +129 81 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ho_oh.pal b/graphics/object_events/palettes/followers/ho_oh.pal new file mode 100644 index 000000000..dcc241696 --- /dev/null +++ b/graphics/object_events/palettes/followers/ho_oh.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 153 1 +57 57 57 +1 1 1 +161 57 25 +129 201 81 +169 185 209 +81 25 1 +169 105 1 +97 121 121 +217 233 249 +57 97 17 +249 209 97 +217 81 49 +97 41 1 +233 233 249 diff --git a/graphics/object_events/palettes/followers/hoothoot.pal b/graphics/object_events/palettes/followers/hoothoot.pal new file mode 100644 index 000000000..bf367bd48 --- /dev/null +++ b/graphics/object_events/palettes/followers/hoothoot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 113 113 +65 81 89 +1 1 1 +225 169 169 +81 41 9 +217 81 73 +137 73 57 +233 217 161 +169 185 209 +41 41 41 +177 129 89 +105 41 41 +137 89 65 +201 177 121 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hoppip.pal b/graphics/object_events/palettes/followers/hoppip.pal new file mode 100644 index 000000000..7dade5208 --- /dev/null +++ b/graphics/object_events/palettes/followers/hoppip.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 201 1 +225 105 129 +49 89 17 +97 153 65 +1 1 1 +169 65 89 +89 9 3 +113 193 81 +241 145 193 +201 89 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/horsea.pal b/graphics/object_events/palettes/followers/horsea.pal new file mode 100644 index 000000000..4a5c74fdb --- /dev/null +++ b/graphics/object_events/palettes/followers/horsea.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 97 +97 153 193 +25 57 97 +233 233 249 +65 65 65 +249 209 161 +169 185 209 +145 17 17 +41 89 137 +1 1 1 +145 185 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/huntail.pal b/graphics/object_events/palettes/followers/huntail.pal new file mode 100644 index 000000000..f89eadd28 --- /dev/null +++ b/graphics/object_events/palettes/followers/huntail.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 81 49 +153 201 225 +49 49 65 +97 153 217 +49 97 137 +233 233 249 +121 185 217 +129 49 25 +185 65 113 +153 41 89 +217 113 73 +209 217 233 +177 193 217 +0 0 0 diff --git a/graphics/object_events/palettes/followers/igglybuff.pal b/graphics/object_events/palettes/followers/igglybuff.pal new file mode 100644 index 000000000..0d5864b65 --- /dev/null +++ b/graphics/object_events/palettes/followers/igglybuff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 145 169 +169 81 97 +249 201 217 +89 41 65 +225 113 121 +1 1 1 +233 233 249 +169 49 57 +201 113 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/illumise.pal b/graphics/object_events/palettes/followers/illumise.pal new file mode 100644 index 000000000..33284a660 --- /dev/null +++ b/graphics/object_events/palettes/followers/illumise.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 41 +201 121 201 +65 65 73 +161 193 233 +113 89 57 +89 161 233 +201 185 89 +49 65 105 +41 41 49 +169 169 201 +233 233 249 +105 105 113 +1 1 1 +209 177 233 +105 57 105 diff --git a/graphics/object_events/palettes/followers/ivysaur.pal b/graphics/object_events/palettes/followers/ivysaur.pal new file mode 100644 index 000000000..db3e0fda9 --- /dev/null +++ b/graphics/object_events/palettes/followers/ivysaur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 169 17 +73 169 153 +49 89 25 +105 209 193 +201 89 121 +137 225 33 +145 65 33 +65 129 121 +241 129 161 +201 201 217 +1 1 1 +105 33 41 +233 233 249 +41 65 65 +65 65 65 diff --git a/graphics/object_events/palettes/followers/jigglypuff.pal b/graphics/object_events/palettes/followers/jigglypuff.pal new file mode 100644 index 000000000..cf6b522cc --- /dev/null +++ b/graphics/object_events/palettes/followers/jigglypuff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +97 73 65 +113 161 249 +81 81 121 +97 41 65 +249 169 185 +145 73 89 +233 233 249 +209 113 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jirachi.pal b/graphics/object_events/palettes/followers/jirachi.pal new file mode 100644 index 000000000..4611f22c6 --- /dev/null +++ b/graphics/object_events/palettes/followers/jirachi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 1 +89 161 145 +121 201 177 +73 65 17 +217 185 65 +177 185 185 +33 89 81 +1 1 1 +57 129 113 +209 209 225 +169 113 9 +249 217 89 +233 233 249 +81 105 105 +137 153 153 diff --git a/graphics/object_events/palettes/followers/jolteon.pal b/graphics/object_events/palettes/followers/jolteon.pal new file mode 100644 index 000000000..1398b039a --- /dev/null +++ b/graphics/object_events/palettes/followers/jolteon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 161 33 +169 169 193 +65 57 41 +249 249 81 +1 1 1 +209 225 233 +169 105 33 +249 201 25 +73 65 81 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jumpluff.pal b/graphics/object_events/palettes/followers/jumpluff.pal new file mode 100644 index 000000000..63bedfafd --- /dev/null +++ b/graphics/object_events/palettes/followers/jumpluff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +41 81 137 +249 249 201 +113 113 97 +33 57 97 +97 153 225 +121 17 9 +193 185 161 +57 113 217 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jynx.pal b/graphics/object_events/palettes/followers/jynx.pal new file mode 100644 index 000000000..10f616466 --- /dev/null +++ b/graphics/object_events/palettes/followers/jynx.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 25 +153 153 185 +105 73 137 +193 193 209 +65 57 57 +249 225 33 +137 97 193 +233 233 249 +1 1 1 +177 57 33 +249 89 73 +249 233 185 +249 209 97 +241 129 161 +201 89 121 diff --git a/graphics/object_events/palettes/followers/kabuto.pal b/graphics/object_events/palettes/followers/kabuto.pal new file mode 100644 index 000000000..aa01d9002 --- /dev/null +++ b/graphics/object_events/palettes/followers/kabuto.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 97 65 +49 41 41 +233 185 89 +209 65 65 +169 129 57 +89 73 57 +137 25 25 +49 57 73 +1 1 1 +153 121 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kabutops.pal b/graphics/object_events/palettes/followers/kabutops.pal new file mode 100644 index 000000000..10c3bb588 --- /dev/null +++ b/graphics/object_events/palettes/followers/kabutops.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 73 +89 57 33 +193 193 201 +105 105 121 +137 97 41 +153 153 153 +65 65 65 +49 41 41 +233 233 249 +1 1 1 +105 73 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kangaskhan.pal b/graphics/object_events/palettes/followers/kangaskhan.pal new file mode 100644 index 000000000..131f73a28 --- /dev/null +++ b/graphics/object_events/palettes/followers/kangaskhan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 121 41 +89 73 41 +169 185 209 +209 169 97 +113 113 113 +65 49 33 +73 73 73 +249 201 121 +233 233 249 +185 121 113 +105 9 1 +1 1 1 +57 57 65 +129 113 145 +121 81 57 diff --git a/graphics/object_events/palettes/followers/kecleon.pal b/graphics/object_events/palettes/followers/kecleon.pal new file mode 100644 index 000000000..4adc1da0a --- /dev/null +++ b/graphics/object_events/palettes/followers/kecleon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 129 41 +233 233 249 +145 193 89 +89 81 41 +1 1 1 +185 225 105 +33 57 17 +121 169 49 +153 41 65 +249 193 65 +129 113 65 +217 169 33 +249 225 121 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kingdra.pal b/graphics/object_events/palettes/followers/kingdra.pal new file mode 100644 index 000000000..53a982441 --- /dev/null +++ b/graphics/object_events/palettes/followers/kingdra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 41 +73 121 161 +137 97 33 +169 185 209 +25 57 97 +233 233 249 +1 1 1 +193 209 233 +113 153 201 +113 17 17 +73 73 73 +217 161 57 +41 81 129 +145 193 233 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kyogre.pal b/graphics/object_events/palettes/followers/kyogre.pal new file mode 100644 index 000000000..da6327faa --- /dev/null +++ b/graphics/object_events/palettes/followers/kyogre.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 129 +129 113 25 +65 129 193 +153 25 25 +129 185 217 +57 57 57 +225 193 33 +97 161 193 +41 97 153 +1 1 1 +201 217 241 +201 41 41 +89 17 9 +25 57 89 +153 169 177 diff --git a/graphics/object_events/palettes/followers/lanturn.pal b/graphics/object_events/palettes/followers/lanturn.pal new file mode 100644 index 000000000..c2a012f36 --- /dev/null +++ b/graphics/object_events/palettes/followers/lanturn.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 17 +97 137 225 +17 33 89 +185 201 217 +81 65 9 +225 233 241 +1 1 1 +185 49 41 +65 97 169 +249 209 97 +129 105 25 +113 177 241 +161 209 241 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lapras.pal b/graphics/object_events/palettes/followers/lapras.pal new file mode 100644 index 000000000..cb7e199bd --- /dev/null +++ b/graphics/object_events/palettes/followers/lapras.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 73 +89 129 177 +105 81 17 +145 153 161 +193 201 209 +49 73 105 +49 57 57 +249 209 105 +97 177 233 +113 113 129 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/latias.pal b/graphics/object_events/palettes/followers/latias.pal new file mode 100644 index 000000000..e65c159fc --- /dev/null +++ b/graphics/object_events/palettes/followers/latias.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 169 1 +65 129 169 +57 65 65 +185 201 209 +97 25 17 +1 1 1 +193 65 65 +33 41 41 +105 121 121 +233 233 249 +153 169 177 +233 89 89 +129 145 153 +145 41 41 +0 0 0 diff --git a/graphics/object_events/palettes/followers/latios.pal b/graphics/object_events/palettes/followers/latios.pal new file mode 100644 index 000000000..a50cfc45c --- /dev/null +++ b/graphics/object_events/palettes/followers/latios.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 121 121 +89 193 249 +57 65 65 +49 129 193 +129 33 33 +9 57 89 +1 1 1 +185 201 209 +33 113 169 +65 153 217 +33 41 41 +233 233 249 +153 169 177 +129 145 153 +193 33 33 diff --git a/graphics/object_events/palettes/followers/ledian.pal b/graphics/object_events/palettes/followers/ledian.pal new file mode 100644 index 000000000..95b25de50 --- /dev/null +++ b/graphics/object_events/palettes/followers/ledian.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 89 +137 65 1 +17 129 193 +65 65 97 +241 209 81 +177 41 49 +1 1 1 +185 201 225 +249 97 121 +113 97 73 +17 105 153 +233 233 249 +209 177 81 +225 33 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ledyba.pal b/graphics/object_events/palettes/followers/ledyba.pal new file mode 100644 index 000000000..4540e80b7 --- /dev/null +++ b/graphics/object_events/palettes/followers/ledyba.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 177 49 +81 89 201 +129 113 49 +193 201 225 +169 33 9 +1 1 1 +105 33 41 +233 233 241 +241 225 129 +249 113 49 +225 57 33 +57 57 57 +225 201 41 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lickitung.pal b/graphics/object_events/palettes/followers/lickitung.pal new file mode 100644 index 000000000..7c028935c --- /dev/null +++ b/graphics/object_events/palettes/followers/lickitung.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 129 129 +161 161 161 +233 233 249 +177 97 121 +233 185 201 +217 201 49 +217 153 177 +89 49 73 +1 1 1 +241 169 169 +169 89 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lileep.pal b/graphics/object_events/palettes/followers/lileep.pal new file mode 100644 index 000000000..80228afba --- /dev/null +++ b/graphics/object_events/palettes/followers/lileep.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 57 +41 33 89 +137 97 177 +161 49 89 +113 89 49 +209 185 73 +89 17 41 +97 57 145 +209 105 137 +161 145 217 +1 1 1 +41 25 41 +81 57 81 +193 65 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/linoone.pal b/graphics/object_events/palettes/followers/linoone.pal new file mode 100644 index 000000000..f7daf07d4 --- /dev/null +++ b/graphics/object_events/palettes/followers/linoone.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 185 +81 73 65 +113 105 89 +169 185 209 +41 81 121 +1 1 1 +121 89 65 +105 105 121 +233 233 249 +65 41 17 +217 209 185 +185 177 169 +153 113 89 +65 73 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lombre.pal b/graphics/object_events/palettes/followers/lombre.pal new file mode 100644 index 000000000..22a7e49bb --- /dev/null +++ b/graphics/object_events/palettes/followers/lombre.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +9 131 3 +121 153 137 +41 81 33 +145 209 17 +233 233 249 +129 41 17 +105 153 65 +1 1 1 +233 89 65 +113 169 17 +73 113 65 +153 193 161 +169 49 25 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lotad.pal b/graphics/object_events/palettes/followers/lotad.pal new file mode 100644 index 000000000..d3457a4ec --- /dev/null +++ b/graphics/object_events/palettes/followers/lotad.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 129 25 +81 145 193 +33 57 17 +113 169 17 +41 97 137 +1 1 1 +41 97 65 +145 209 17 +233 233 249 +25 49 89 +233 185 65 +169 121 25 +97 65 9 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ludicolo.pal b/graphics/object_events/palettes/followers/ludicolo.pal new file mode 100644 index 000000000..87294c677 --- /dev/null +++ b/graphics/object_events/palettes/followers/ludicolo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 57 +161 161 161 +33 57 17 +121 177 33 +97 73 49 +1 1 1 +145 209 17 +137 105 81 +233 233 249 +209 129 9 +49 41 9 +137 65 1 +209 177 65 +233 201 121 +65 65 73 diff --git a/graphics/object_events/palettes/followers/lugia.pal b/graphics/object_events/palettes/followers/lugia.pal new file mode 100644 index 000000000..adf9c9f0e --- /dev/null +++ b/graphics/object_events/palettes/followers/lugia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +201 209 217 +41 49 113 +41 121 193 +73 73 89 +153 161 169 +233 233 249 +49 97 193 +137 169 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/luvdisc.pal b/graphics/object_events/palettes/followers/luvdisc.pal new file mode 100644 index 000000000..4275e201b --- /dev/null +++ b/graphics/object_events/palettes/followers/luvdisc.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 129 153 +97 105 129 +249 193 185 +1 1 1 +49 49 65 +233 145 145 +209 97 137 +137 33 73 +233 233 249 +249 177 145 +161 49 97 +217 105 153 +233 153 161 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machamp.pal b/graphics/object_events/palettes/followers/machamp.pal new file mode 100644 index 000000000..a84bfe10a --- /dev/null +++ b/graphics/object_events/palettes/followers/machamp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +129 129 145 +249 209 9 +233 201 153 +65 65 65 +177 153 113 +209 185 73 +233 233 249 +193 41 65 +241 233 113 +161 161 201 +81 89 105 +201 201 201 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machoke.pal b/graphics/object_events/palettes/followers/machoke.pal new file mode 100644 index 000000000..4585ebaa7 --- /dev/null +++ b/graphics/object_events/palettes/followers/machoke.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +129 129 145 +73 73 73 +249 209 9 +233 201 153 +177 153 113 +97 105 129 +193 41 65 +1 1 1 +233 233 249 +161 161 201 +209 161 17 +89 89 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machop.pal b/graphics/object_events/palettes/followers/machop.pal new file mode 100644 index 000000000..828328b78 --- /dev/null +++ b/graphics/object_events/palettes/followers/machop.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 129 137 +233 201 153 +57 57 57 +1 1 1 +193 41 65 +177 153 113 +233 233 249 +73 97 105 +137 169 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magby.pal b/graphics/object_events/palettes/followers/magby.pal new file mode 100644 index 000000000..8a53eb769 --- /dev/null +++ b/graphics/object_events/palettes/followers/magby.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 33 +105 73 1 +177 185 193 +129 1 1 +65 65 73 +1 1 1 +153 41 57 +249 81 121 +233 233 249 +241 193 57 +81 89 105 +209 41 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magcargo.pal b/graphics/object_events/palettes/followers/magcargo.pal new file mode 100644 index 000000000..04fdccbae --- /dev/null +++ b/graphics/object_events/palettes/followers/magcargo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 121 25 +41 49 57 +1 1 1 +177 57 49 +73 1 1 +105 113 137 +249 153 1 +73 81 97 +249 209 89 +225 81 73 +121 25 17 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magikarp.pal b/graphics/object_events/palettes/followers/magikarp.pal new file mode 100644 index 000000000..d29c0357d --- /dev/null +++ b/graphics/object_events/palettes/followers/magikarp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +185 65 105 +145 145 145 +137 41 25 +1 1 1 +81 33 17 +249 193 17 +217 113 153 +193 193 209 +233 233 249 +121 33 65 +233 169 73 +233 97 65 +49 49 49 +201 57 17 diff --git a/graphics/object_events/palettes/followers/magmar.pal b/graphics/object_events/palettes/followers/magmar.pal new file mode 100644 index 000000000..ce9d6c30d --- /dev/null +++ b/graphics/object_events/palettes/followers/magmar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 9 +49 49 49 +145 145 145 +201 89 129 +193 193 209 +185 57 25 +129 1 1 +241 209 1 +241 185 201 +233 233 249 +113 81 17 +225 153 17 +105 33 17 +1 1 1 +241 73 33 diff --git a/graphics/object_events/palettes/followers/magnemite.pal b/graphics/object_events/palettes/followers/magnemite.pal new file mode 100644 index 000000000..041b62f37 --- /dev/null +++ b/graphics/object_events/palettes/followers/magnemite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 145 +193 209 217 +81 81 81 +73 137 233 +233 65 65 +153 169 185 +57 57 57 +1 1 1 +113 113 121 +233 233 249 +177 177 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/makuhita.pal b/graphics/object_events/palettes/followers/makuhita.pal new file mode 100644 index 000000000..681982bc5 --- /dev/null +++ b/graphics/object_events/palettes/followers/makuhita.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 57 +73 57 9 +57 65 81 +137 41 65 +225 201 105 +185 65 105 +25 33 41 +1 1 1 +113 97 17 +81 89 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/manectric.pal b/graphics/object_events/palettes/followers/manectric.pal new file mode 100644 index 000000000..5d93d7697 --- /dev/null +++ b/graphics/object_events/palettes/followers/manectric.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 33 +81 153 185 +97 73 49 +249 249 145 +193 57 57 +1 1 1 +129 185 217 +33 121 153 +161 217 249 +25 49 89 +225 193 73 +161 161 161 +233 233 249 +65 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mankey.pal b/graphics/object_events/palettes/followers/mankey.pal new file mode 100644 index 000000000..91522b4e5 --- /dev/null +++ b/graphics/object_events/palettes/followers/mankey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 49 +241 129 161 +73 65 57 +1 1 1 +145 17 49 +153 121 97 +233 233 249 +177 105 129 +177 177 209 +177 169 129 +233 217 137 +137 105 57 +121 41 65 +209 177 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mantine.pal b/graphics/object_events/palettes/followers/mantine.pal new file mode 100644 index 000000000..62f32dc56 --- /dev/null +++ b/graphics/object_events/palettes/followers/mantine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 137 153 +217 209 225 +17 65 105 +81 121 185 +177 169 185 +49 49 73 +209 233 249 +49 89 145 +1 1 1 +121 161 217 +57 81 121 +137 177 217 +41 65 73 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mareep.pal b/graphics/object_events/palettes/followers/mareep.pal new file mode 100644 index 000000000..04d1d5345 --- /dev/null +++ b/graphics/object_events/palettes/followers/mareep.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 1 +1 1 1 +105 89 9 +169 145 73 +249 249 177 +49 57 65 +81 129 185 +89 105 121 +241 201 81 +121 169 233 +233 233 249 +225 113 1 +137 5 7 +233 209 105 +249 169 1 diff --git a/graphics/object_events/palettes/followers/marshtomp.pal b/graphics/object_events/palettes/followers/marshtomp.pal new file mode 100644 index 000000000..828789299 --- /dev/null +++ b/graphics/object_events/palettes/followers/marshtomp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +129 161 177 +73 57 17 +33 81 89 +65 129 129 +233 233 249 +89 185 177 +161 73 17 +1 1 1 +177 193 209 +193 89 17 +97 121 129 +49 81 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/masquerain.pal b/graphics/object_events/palettes/followers/masquerain.pal new file mode 100644 index 000000000..366b9fb54 --- /dev/null +++ b/graphics/object_events/palettes/followers/masquerain.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +81 81 89 +137 177 201 +65 81 113 +161 209 225 +137 33 89 +161 65 49 +217 105 121 +105 25 33 +225 161 185 +89 113 153 +233 233 249 +201 89 73 +177 217 233 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mawile.pal b/graphics/object_events/palettes/followers/mawile.pal new file mode 100644 index 000000000..6751c3e12 --- /dev/null +++ b/graphics/object_events/palettes/followers/mawile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 169 89 +81 73 57 +177 185 201 +249 217 129 +129 105 73 +193 57 57 +145 145 145 +41 41 41 +233 233 249 +1 1 1 +113 113 113 +73 73 73 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/medicham.pal b/graphics/object_events/palettes/followers/medicham.pal new file mode 100644 index 000000000..c0ba10536 --- /dev/null +++ b/graphics/object_events/palettes/followers/medicham.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 25 +152 152 145 +113 81 17 +193 193 185 +57 57 65 +1 1 1 +185 81 105 +233 137 161 +233 233 249 +249 217 89 +113 113 97 +49 25 33 +193 161 17 +145 57 89 +201 97 129 diff --git a/graphics/object_events/palettes/followers/meditite.pal b/graphics/object_events/palettes/followers/meditite.pal new file mode 100644 index 000000000..5c7838281 --- /dev/null +++ b/graphics/object_events/palettes/followers/meditite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 153 +217 225 233 +57 57 65 +1 1 1 +65 105 153 +89 145 193 +81 81 89 +185 49 41 +177 185 201 +161 161 177 +41 65 97 +233 233 249 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/meganium.pal b/graphics/object_events/palettes/followers/meganium.pal new file mode 100644 index 000000000..0e95eb9ff --- /dev/null +++ b/graphics/object_events/palettes/followers/meganium.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 41 +201 177 185 +137 97 1 +129 161 89 +177 81 121 +161 185 81 +233 233 249 +73 89 41 +105 41 81 +241 209 49 +1 1 1 +193 209 81 +209 97 145 +105 105 65 +185 177 201 diff --git a/graphics/object_events/palettes/followers/meowth.pal b/graphics/object_events/palettes/followers/meowth.pal new file mode 100644 index 000000000..1c7fd519a --- /dev/null +++ b/graphics/object_events/palettes/followers/meowth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 129 49 +81 57 25 +217 177 65 +121 105 81 +1 1 1 +169 121 81 +153 81 25 +169 33 81 +241 217 129 +249 201 33 +177 89 81 +217 145 25 +65 57 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/metang.pal b/graphics/object_events/palettes/followers/metang.pal new file mode 100644 index 000000000..819ca143b --- /dev/null +++ b/graphics/object_events/palettes/followers/metang.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 129 169 +193 193 193 +65 65 65 +105 145 209 +233 233 249 +121 33 33 +1 1 1 +150 150 161 +41 41 49 +65 97 121 +145 193 233 +153 217 241 +255 255 255 +33 65 81 +153 41 41 diff --git a/graphics/object_events/palettes/followers/mew.pal b/graphics/object_events/palettes/followers/mew.pal new file mode 100644 index 000000000..d99299b99 --- /dev/null +++ b/graphics/object_events/palettes/followers/mew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 129 +201 201 249 +97 97 97 +1 1 1 +233 233 249 +177 105 169 +89 49 81 +249 209 233 +217 161 185 +113 89 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mewtwo.pal b/graphics/object_events/palettes/followers/mewtwo.pal new file mode 100644 index 000000000..6f5afee0f --- /dev/null +++ b/graphics/object_events/palettes/followers/mewtwo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 121 153 +137 73 137 +217 201 217 +65 65 65 +153 153 153 +177 153 193 +65 49 81 +185 89 209 +97 97 97 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mightyena.pal b/graphics/object_events/palettes/followers/mightyena.pal new file mode 100644 index 000000000..38610816d --- /dev/null +++ b/graphics/object_events/palettes/followers/mightyena.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 113 113 +1 1 1 +49 57 57 +145 153 161 +225 65 65 +177 185 193 +81 81 89 +129 33 33 +249 217 89 +129 121 137 +169 161 185 +65 57 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/milotic.pal b/graphics/object_events/palettes/followers/milotic.pal new file mode 100644 index 000000000..d012770f9 --- /dev/null +++ b/graphics/object_events/palettes/followers/milotic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 65 +33 57 89 +233 217 169 +241 105 113 +129 9 73 +81 129 169 +81 73 153 +185 49 81 +1 1 1 +113 161 209 +97 89 65 +249 241 217 +241 105 153 +57 89 129 +185 49 113 diff --git a/graphics/object_events/palettes/followers/miltank.pal b/graphics/object_events/palettes/followers/miltank.pal new file mode 100644 index 000000000..e64e3f03d --- /dev/null +++ b/graphics/object_events/palettes/followers/miltank.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 89 +81 65 33 +169 185 209 +41 65 81 +1 1 1 +121 73 81 +33 49 65 +233 233 249 +209 137 161 +73 97 121 +177 97 121 +241 169 193 +57 65 73 +89 41 57 +209 185 121 diff --git a/graphics/object_events/palettes/followers/misdreavus.pal b/graphics/object_events/palettes/followers/misdreavus.pal new file mode 100644 index 000000000..64f7bcb41 --- /dev/null +++ b/graphics/object_events/palettes/followers/misdreavus.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 1 +33 81 97 +201 73 105 +105 129 161 +33 49 89 +97 1 3 +65 105 137 +217 97 161 +233 233 249 +225 177 41 +1 1 1 +193 65 129 +81 113 153 +89 9 3 +0 0 0 diff --git a/graphics/object_events/palettes/followers/moltres.pal b/graphics/object_events/palettes/followers/moltres.pal new file mode 100644 index 000000000..524c5a1d4 --- /dev/null +++ b/graphics/object_events/palettes/followers/moltres.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 137 33 +177 177 209 +65 65 65 +249 185 33 +233 73 49 +1 1 1 +161 25 41 +249 137 121 +233 233 249 +65 49 49 +185 113 97 +249 201 121 +233 177 81 +201 129 57 +113 73 57 diff --git a/graphics/object_events/palettes/followers/mr_mime.pal b/graphics/object_events/palettes/followers/mr_mime.pal new file mode 100644 index 000000000..156deec2c --- /dev/null +++ b/graphics/object_events/palettes/followers/mr_mime.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 161 +33 65 89 +241 193 201 +145 65 81 +41 49 65 +1 1 1 +49 97 113 +233 233 249 +169 105 121 +201 201 233 +209 65 89 +105 105 105 +193 145 145 +73 49 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mudkip.pal b/graphics/object_events/palettes/followers/mudkip.pal new file mode 100644 index 000000000..ad2e4fc26 --- /dev/null +++ b/graphics/object_events/palettes/followers/mudkip.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +73 57 17 +73 137 177 +41 73 121 +233 233 249 +65 65 81 +89 177 217 +1 1 1 +113 105 145 +161 73 17 +177 177 209 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/murkrow.pal b/graphics/object_events/palettes/followers/murkrow.pal new file mode 100644 index 000000000..3f8fb5c91 --- /dev/null +++ b/graphics/object_events/palettes/followers/murkrow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +17 33 73 +121 153 193 +49 49 49 +49 65 113 +1 1 1 +233 233 249 +201 57 49 +145 33 25 +113 89 9 +177 193 217 +225 177 41 +73 89 137 +33 49 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/natu.pal b/graphics/object_events/palettes/followers/natu.pal new file mode 100644 index 000000000..e3133ef1c --- /dev/null +++ b/graphics/object_events/palettes/followers/natu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 73 +49 49 49 +113 129 153 +129 193 113 +65 81 105 +121 17 33 +1 1 1 +97 81 1 +185 201 225 +217 73 89 +241 209 97 +233 233 249 +177 41 57 +185 153 49 +57 81 33 diff --git a/graphics/object_events/palettes/followers/nidoking.pal b/graphics/object_events/palettes/followers/nidoking.pal new file mode 100644 index 000000000..0f1679f32 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 169 153 +201 201 201 +217 153 241 +49 113 105 +185 129 185 +1 1 1 +65 49 81 +241 233 225 +153 105 161 +89 25 25 +161 161 161 +233 233 249 +169 169 153 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoqueen.pal b/graphics/object_events/palettes/followers/nidoqueen.pal new file mode 100644 index 000000000..9fb7ed22a --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoqueen.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +97 137 177 +89 65 49 +201 201 201 +241 193 121 +73 65 121 +233 233 249 +97 41 25 +129 177 217 +193 161 81 +169 97 49 +169 201 241 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoran_f.pal b/graphics/object_events/palettes/followers/nidoran_f.pal new file mode 100644 index 000000000..a268e55b6 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoran_f.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 169 137 +49 89 73 +153 241 225 +161 81 105 +17 153 241 +1 1 1 +217 105 137 +161 33 17 +65 81 137 +233 233 249 +161 161 161 +241 121 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidorina.pal b/graphics/object_events/palettes/followers/nidorina.pal new file mode 100644 index 000000000..f59ffda8b --- /dev/null +++ b/graphics/object_events/palettes/followers/nidorina.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 137 209 +113 193 225 +1 1 1 +49 89 105 +153 225 249 +169 169 193 +161 41 33 +81 161 177 +241 161 153 +233 233 249 +49 97 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nincada.pal b/graphics/object_events/palettes/followers/nincada.pal new file mode 100644 index 000000000..359d3480f --- /dev/null +++ b/graphics/object_events/palettes/followers/nincada.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 65 +33 73 25 +153 145 161 +97 89 113 +121 177 89 +49 41 65 +57 113 41 +233 233 249 +185 177 193 +97 89 65 +121 113 137 +1 1 1 +145 129 89 +65 57 41 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ninetales.pal b/graphics/object_events/palettes/followers/ninetales.pal new file mode 100644 index 000000000..393b1073b --- /dev/null +++ b/graphics/object_events/palettes/followers/ninetales.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 1 +193 65 105 +1 1 1 +89 57 49 +233 233 249 +185 161 105 +145 113 73 +233 217 153 +137 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ninjask.pal b/graphics/object_events/palettes/followers/ninjask.pal new file mode 100644 index 000000000..c1e058ac4 --- /dev/null +++ b/graphics/object_events/palettes/followers/ninjask.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 65 +201 201 201 +193 57 57 +233 193 49 +113 33 33 +233 233 249 +97 89 113 +1 1 1 +145 97 17 +57 49 73 +241 225 73 +217 217 225 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/noctowl.pal b/graphics/object_events/palettes/followers/noctowl.pal new file mode 100644 index 000000000..05f350df8 --- /dev/null +++ b/graphics/object_events/palettes/followers/noctowl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 97 +97 65 17 +169 185 209 +201 185 121 +65 81 89 +225 169 169 +105 41 41 +209 161 113 +201 113 113 +233 233 249 +225 217 161 +97 73 57 +129 97 81 +1 1 1 +169 49 49 diff --git a/graphics/object_events/palettes/followers/nosepass.pal b/graphics/object_events/palettes/followers/nosepass.pal new file mode 100644 index 000000000..391eef08c --- /dev/null +++ b/graphics/object_events/palettes/followers/nosepass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +17 33 73 +209 49 73 +113 25 41 +65 73 81 +81 129 185 +41 49 57 +41 57 97 +113 177 233 +65 89 137 +161 33 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/numel.pal b/graphics/object_events/palettes/followers/numel.pal new file mode 100644 index 000000000..ba92ab59c --- /dev/null +++ b/graphics/object_events/palettes/followers/numel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 49 +217 225 185 +137 201 65 +49 81 25 +73 121 33 +177 185 137 +89 73 57 +1 1 1 +249 249 249 +217 185 73 +241 217 89 +121 97 73 +185 145 57 +65 73 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nuzleaf.pal b/graphics/object_events/palettes/followers/nuzleaf.pal new file mode 100644 index 000000000..ae9bbd957 --- /dev/null +++ b/graphics/object_events/palettes/followers/nuzleaf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 9 +89 73 9 +233 233 249 +1 1 1 +65 105 9 +33 57 9 +145 209 17 +97 65 33 +161 137 65 +161 113 49 +233 201 121 +73 49 25 +121 81 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/octillery.pal b/graphics/object_events/palettes/followers/octillery.pal new file mode 100644 index 000000000..78b4092d3 --- /dev/null +++ b/graphics/object_events/palettes/followers/octillery.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 25 +129 105 17 +153 161 177 +137 1 1 +1 1 1 +137 25 1 +201 89 73 +233 233 249 +249 217 89 +177 41 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/omanyte.pal b/graphics/object_events/palettes/followers/omanyte.pal new file mode 100644 index 000000000..121eb8cc6 --- /dev/null +++ b/graphics/object_events/palettes/followers/omanyte.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 129 161 +233 201 153 +81 65 57 +73 169 217 +145 113 73 +1 1 1 +121 201 241 +177 153 105 +233 233 249 +169 169 177 +105 105 105 +49 73 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/omastar.pal b/graphics/object_events/palettes/followers/omastar.pal new file mode 100644 index 000000000..1f042f749 --- /dev/null +++ b/graphics/object_events/palettes/followers/omastar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 145 65 +57 129 161 +81 65 57 +249 225 105 +233 225 185 +129 105 81 +177 153 105 +73 169 217 +121 201 241 +233 201 153 +1 1 1 +105 105 105 +49 65 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pelipper.pal b/graphics/object_events/palettes/followers/pelipper.pal new file mode 100644 index 000000000..a1e730a7e --- /dev/null +++ b/graphics/object_events/palettes/followers/pelipper.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 41 +81 137 169 +105 81 17 +180 193 211 +201 177 57 +81 81 89 +105 161 217 +233 233 249 +145 145 145 +1 1 1 +65 105 145 +225 209 73 +137 105 25 +137 137 153 +49 73 113 diff --git a/graphics/object_events/palettes/followers/persian.pal b/graphics/object_events/palettes/followers/persian.pal new file mode 100644 index 000000000..16d9b1527 --- /dev/null +++ b/graphics/object_events/palettes/followers/persian.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 3 +1 1 1 +81 57 25 +145 129 73 +185 65 113 +233 233 249 +193 169 121 +241 217 129 +145 105 81 +161 129 105 +65 57 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/phanpy.pal b/graphics/object_events/palettes/followers/phanpy.pal new file mode 100644 index 000000000..fa6f2ba20 --- /dev/null +++ b/graphics/object_events/palettes/followers/phanpy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +33 57 105 +185 201 217 +137 1 1 +81 129 177 +153 33 33 +249 249 249 +137 177 209 +209 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pichu.pal b/graphics/object_events/palettes/followers/pichu.pal new file mode 100644 index 000000000..ec7bc91d9 --- /dev/null +++ b/graphics/object_events/palettes/followers/pichu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 57 +81 81 81 +225 121 161 +49 49 49 +1 1 1 +97 89 41 +193 169 65 +193 81 137 +233 233 249 +249 217 105 +65 65 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgeot.pal b/graphics/object_events/palettes/followers/pidgeot.pal new file mode 100644 index 000000000..22828bc3f --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgeot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 137 1 +241 105 225 +145 89 49 +1 1 1 +177 65 97 +193 153 65 +129 25 113 +209 113 41 +233 233 249 +241 209 113 +249 193 49 +81 57 25 +225 113 113 +201 73 33 +161 161 161 diff --git a/graphics/object_events/palettes/followers/pidgeotto.pal b/graphics/object_events/palettes/followers/pidgeotto.pal new file mode 100644 index 000000000..03725fd2b --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgeotto.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 129 33 +153 153 153 +97 65 33 +233 233 249 +225 113 113 +241 209 113 +241 137 225 +201 73 33 +161 33 161 +193 153 65 +1 1 1 +177 81 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgey.pal b/graphics/object_events/palettes/followers/pidgey.pal new file mode 100644 index 000000000..f843a7e59 --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 65 +217 145 177 +97 65 33 +241 209 113 +233 233 249 +201 113 33 +153 57 97 +1 1 1 +185 185 185 +185 89 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pikachu.pal b/graphics/object_events/palettes/followers/pikachu.pal new file mode 100644 index 000000000..987f609d0 --- /dev/null +++ b/graphics/object_events/palettes/followers/pikachu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 65 +113 81 57 +233 233 249 +49 49 49 +249 209 81 +153 113 57 +1 1 1 +201 89 57 +145 57 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/piloswine.pal b/graphics/object_events/palettes/followers/piloswine.pal new file mode 100644 index 000000000..a9806b257 --- /dev/null +++ b/graphics/object_events/palettes/followers/piloswine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 89 +121 73 49 +169 185 209 +73 41 9 +1 1 1 +201 97 113 +49 49 65 +233 137 161 +233 233 249 +153 105 65 +145 41 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pineco.pal b/graphics/object_events/palettes/followers/pineco.pal new file mode 100644 index 000000000..b01042837 --- /dev/null +++ b/graphics/object_events/palettes/followers/pineco.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 129 169 +17 81 129 +233 233 249 +1 1 1 +201 65 73 +97 113 153 +81 177 193 +17 89 129 +161 177 201 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/politoed.pal b/graphics/object_events/palettes/followers/politoed.pal new file mode 100644 index 000000000..113eb9ff2 --- /dev/null +++ b/graphics/object_events/palettes/followers/politoed.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 9 +249 129 177 +105 185 65 +49 81 17 +209 185 65 +189 203 220 +33 65 81 +1 1 1 +137 57 73 +201 89 137 +65 113 121 +89 153 57 +233 233 249 +153 217 113 +241 201 73 diff --git a/graphics/object_events/palettes/followers/poliwag.pal b/graphics/object_events/palettes/followers/poliwag.pal new file mode 100644 index 000000000..207b398d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/poliwag.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 121 121 +89 89 89 +233 233 233 +121 129 233 +25 41 57 +1 1 1 +65 89 153 +97 49 65 +177 177 209 +241 121 161 +177 65 105 +49 49 49 +233 233 249 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/poochyena.pal b/graphics/object_events/palettes/followers/poochyena.pal new file mode 100644 index 000000000..53d5307c0 --- /dev/null +++ b/graphics/object_events/palettes/followers/poochyena.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 113 113 +49 57 57 +1 1 1 +193 57 57 +81 81 89 +185 185 185 +137 41 41 +145 145 145 +249 217 89 +65 57 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/porygon.pal b/graphics/object_events/palettes/followers/porygon.pal new file mode 100644 index 000000000..a9a1804e9 --- /dev/null +++ b/graphics/object_events/palettes/followers/porygon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 137 153 +41 97 97 +81 217 217 +1 1 1 +177 49 105 +41 65 73 +249 153 209 +233 105 161 +233 233 249 +41 185 193 +97 25 49 +161 185 201 +209 65 137 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/porygon2.pal b/graphics/object_events/palettes/followers/porygon2.pal new file mode 100644 index 000000000..b70e67bb6 --- /dev/null +++ b/graphics/object_events/palettes/followers/porygon2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 153 193 +17 73 121 +145 233 249 +1 1 1 +113 17 49 +225 81 137 +249 153 209 +169 41 81 +41 121 169 +185 201 217 +249 249 249 +89 185 217 +193 57 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/primeape.pal b/graphics/object_events/palettes/followers/primeape.pal new file mode 100644 index 000000000..38020a677 --- /dev/null +++ b/graphics/object_events/palettes/followers/primeape.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 49 +241 129 161 +65 57 49 +1 1 1 +105 105 105 +209 169 113 +233 233 249 +121 41 65 +177 177 209 +137 105 57 +233 217 137 +153 121 97 +177 105 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/quilava.pal b/graphics/object_events/palettes/followers/quilava.pal new file mode 100644 index 000000000..20abfb6b8 --- /dev/null +++ b/graphics/object_events/palettes/followers/quilava.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 81 +73 65 17 +49 137 153 +241 201 41 +161 17 25 +33 81 89 +209 177 89 +217 81 81 +233 233 249 +25 57 73 +41 113 121 +249 209 97 +185 49 49 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/qwilfish.pal b/graphics/object_events/palettes/followers/qwilfish.pal new file mode 100644 index 000000000..3606f4b28 --- /dev/null +++ b/graphics/object_events/palettes/followers/qwilfish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 65 +73 145 193 +57 57 25 +225 209 137 +17 49 105 +1 1 1 +233 233 249 +33 73 129 +249 129 161 +153 33 57 +49 105 153 +193 177 97 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/raichu.pal b/graphics/object_events/palettes/followers/raichu.pal new file mode 100644 index 000000000..a131215ea --- /dev/null +++ b/graphics/object_events/palettes/followers/raichu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 121 33 +1 1 1 +113 73 41 +209 177 25 +249 233 209 +121 105 73 +249 225 9 +73 41 25 +249 145 1 +249 193 65 +233 233 249 +137 89 25 +193 177 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/raikou.pal b/graphics/object_events/palettes/followers/raikou.pal new file mode 100644 index 000000000..07b95381f --- /dev/null +++ b/graphics/object_events/palettes/followers/raikou.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 17 +65 33 97 +161 185 201 +33 57 65 +49 81 105 +185 49 49 +1 1 1 +233 233 249 +233 185 65 +161 89 185 +73 89 89 +113 57 145 +89 65 41 +57 97 97 +153 201 201 diff --git a/graphics/object_events/palettes/followers/raticate.pal b/graphics/object_events/palettes/followers/raticate.pal new file mode 100644 index 000000000..75f836e6c --- /dev/null +++ b/graphics/object_events/palettes/followers/raticate.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 145 57 +225 201 169 +89 65 25 +185 169 113 +233 233 249 +137 49 121 +201 201 201 +177 97 57 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rattata.pal b/graphics/object_events/palettes/followers/rattata.pal new file mode 100644 index 000000000..79c244a7b --- /dev/null +++ b/graphics/object_events/palettes/followers/rattata.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 81 +169 129 217 +57 49 89 +233 217 177 +185 169 129 +217 217 217 +225 57 33 +105 89 153 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rayquaza.pal b/graphics/object_events/palettes/followers/rayquaza.pal new file mode 100644 index 000000000..93c0e8a41 --- /dev/null +++ b/graphics/object_events/palettes/followers/rayquaza.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 81 +49 105 49 +153 169 177 +153 25 25 +121 185 113 +49 49 49 +241 201 49 +201 217 241 +153 225 145 +193 161 41 +145 121 25 +201 41 41 +17 65 25 +89 17 9 +1 1 1 diff --git a/graphics/object_events/palettes/followers/regice.pal b/graphics/object_events/palettes/followers/regice.pal new file mode 100644 index 000000000..ea013d68a --- /dev/null +++ b/graphics/object_events/palettes/followers/regice.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 169 89 +97 145 185 +177 225 249 +233 233 137 +41 73 97 +217 201 113 +121 169 209 +1 1 1 +65 105 145 +145 185 225 +201 241 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/regirock.pal b/graphics/object_events/palettes/followers/regirock.pal new file mode 100644 index 000000000..bbbdd8d21 --- /dev/null +++ b/graphics/object_events/palettes/followers/regirock.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 113 89 +1 1 1 +137 65 41 +161 145 129 +57 41 33 +201 185 169 +113 89 81 +217 113 73 +233 217 201 +177 89 57 +177 161 145 +97 41 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/registeel.pal b/graphics/object_events/palettes/followers/registeel.pal new file mode 100644 index 000000000..f01e24f60 --- /dev/null +++ b/graphics/object_events/palettes/followers/registeel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 121 121 +57 65 65 +185 201 209 +1 1 1 +193 57 57 +33 41 41 +129 145 153 +81 89 97 +209 105 105 +233 233 249 +153 169 177 +97 41 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/relicanth.pal b/graphics/object_events/palettes/followers/relicanth.pal new file mode 100644 index 000000000..9caac6b77 --- /dev/null +++ b/graphics/object_events/palettes/followers/relicanth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 97 +97 65 57 +1 1 1 +177 41 81 +57 41 33 +121 89 73 +169 153 129 +193 177 153 +73 73 97 +217 201 169 +49 49 65 +73 49 41 +105 97 81 +137 121 105 +0 0 0 diff --git a/graphics/object_events/palettes/followers/remoraid.pal b/graphics/object_events/palettes/followers/remoraid.pal new file mode 100644 index 000000000..379f4e4f6 --- /dev/null +++ b/graphics/object_events/palettes/followers/remoraid.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 121 161 +169 185 209 +105 25 81 +233 233 249 +73 73 73 +1 1 1 +193 209 233 +25 57 105 +113 153 201 +41 81 129 +145 193 233 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rhydon.pal b/graphics/object_events/palettes/followers/rhydon.pal new file mode 100644 index 000000000..d8b41c6ea --- /dev/null +++ b/graphics/object_events/palettes/followers/rhydon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 49 +185 185 185 +65 57 25 +137 137 137 +217 217 217 +121 105 57 +137 33 57 +217 177 89 +1 1 1 +65 65 65 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/roselia.pal b/graphics/object_events/palettes/followers/roselia.pal new file mode 100644 index 000000000..4a0189e95 --- /dev/null +++ b/graphics/object_events/palettes/followers/roselia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 17 +33 57 17 +81 145 209 +25 49 89 +41 97 137 +233 185 65 +1 1 1 +89 17 49 +201 65 113 +169 129 57 +57 97 17 +145 41 81 +161 201 145 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sableye.pal b/graphics/object_events/palettes/followers/sableye.pal new file mode 100644 index 000000000..beadb4681 --- /dev/null +++ b/graphics/object_events/palettes/followers/sableye.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 153 121 +65 49 105 +233 233 249 +81 121 185 +233 89 113 +49 81 137 +121 161 225 +193 57 57 +1 1 1 +121 97 177 +89 65 145 +145 129 217 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/salamence.pal b/graphics/object_events/palettes/followers/salamence.pal new file mode 100644 index 000000000..76afcbc8f --- /dev/null +++ b/graphics/object_events/palettes/followers/salamence.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 145 169 +57 57 65 +81 185 201 +161 65 65 +1 1 1 +233 233 249 +193 81 97 +97 33 33 +129 129 145 +49 73 113 +161 161 177 +153 201 209 +217 89 121 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sandshrew.pal b/graphics/object_events/palettes/followers/sandshrew.pal new file mode 100644 index 000000000..ac1703261 --- /dev/null +++ b/graphics/object_events/palettes/followers/sandshrew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +129 177 169 +185 137 41 +161 161 161 +225 217 169 +97 65 33 +185 169 137 +1 1 1 +33 97 121 +217 169 57 +233 233 249 +121 105 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sandslash.pal b/graphics/object_events/palettes/followers/sandslash.pal new file mode 100644 index 000000000..d11a2ce3b --- /dev/null +++ b/graphics/object_events/palettes/followers/sandslash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 131 3 +153 153 153 +97 65 33 +233 225 153 +89 89 89 +177 177 177 +201 137 49 +1 1 1 +233 233 249 +137 97 41 +49 33 17 +41 105 129 +225 169 65 +193 161 137 +161 105 33 diff --git a/graphics/object_events/palettes/followers/sceptile.pal b/graphics/object_events/palettes/followers/sceptile.pal new file mode 100644 index 000000000..806146f2d --- /dev/null +++ b/graphics/object_events/palettes/followers/sceptile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 49 +41 81 17 +161 209 105 +105 25 25 +1 1 1 +201 161 57 +121 105 25 +65 49 9 +129 177 73 +249 217 89 +153 41 41 +65 89 25 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/scizor.pal b/graphics/object_events/palettes/followers/scizor.pal new file mode 100644 index 000000000..ee3678e0c --- /dev/null +++ b/graphics/object_events/palettes/followers/scizor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 137 1 +137 89 1 +129 25 17 +1 1 1 +185 201 217 +41 49 65 +81 89 113 +209 57 57 +233 233 249 +145 153 177 +89 17 9 +105 113 137 +161 33 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/scyther.pal b/graphics/object_events/palettes/followers/scyther.pal new file mode 100644 index 000000000..b279ae4cd --- /dev/null +++ b/graphics/object_events/palettes/followers/scyther.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 161 65 +177 169 201 +1 1 1 +41 65 33 +129 129 129 +233 233 249 +153 209 105 +177 153 41 +241 217 73 +81 65 17 +177 177 201 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seadra.pal b/graphics/object_events/palettes/followers/seadra.pal new file mode 100644 index 000000000..cd2bb36c4 --- /dev/null +++ b/graphics/object_events/palettes/followers/seadra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 97 +89 145 217 +1 1 1 +233 233 249 +65 65 73 +169 185 209 +73 137 169 +249 209 161 +49 81 113 +121 185 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seaking.pal b/graphics/object_events/palettes/followers/seaking.pal new file mode 100644 index 000000000..7cc446f83 --- /dev/null +++ b/graphics/object_events/palettes/followers/seaking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 161 81 +169 57 49 +177 177 177 +249 233 161 +249 81 41 +49 49 49 +241 129 161 +113 25 17 +233 233 249 +1 1 1 +97 97 97 +193 65 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sealeo.pal b/graphics/object_events/palettes/followers/sealeo.pal new file mode 100644 index 000000000..4efd9fd5a --- /dev/null +++ b/graphics/object_events/palettes/followers/sealeo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 153 +217 209 153 +81 81 57 +73 153 201 +49 65 105 +137 193 241 +185 169 113 +49 113 145 +209 217 233 +177 185 209 +121 113 81 +233 233 249 +81 81 105 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seedot.pal b/graphics/object_events/palettes/followers/seedot.pal new file mode 100644 index 000000000..7aff4c0af --- /dev/null +++ b/graphics/object_events/palettes/followers/seedot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 113 49 +73 49 25 +177 161 65 +65 57 57 +129 113 113 +89 73 9 +1 1 1 +97 89 81 +33 33 25 +233 201 121 +121 81 41 +65 65 73 +137 121 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seel.pal b/graphics/object_events/palettes/followers/seel.pal new file mode 100644 index 000000000..dad2284d8 --- /dev/null +++ b/graphics/object_events/palettes/followers/seel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 153 9 +225 129 145 +113 89 33 +249 241 185 +73 81 121 +49 49 81 +1 1 1 +225 225 241 +161 169 209 +193 65 89 +81 33 33 +233 201 97 +97 97 97 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sentret.pal b/graphics/object_events/palettes/followers/sentret.pal new file mode 100644 index 000000000..7e9a52ae0 --- /dev/null +++ b/graphics/object_events/palettes/followers/sentret.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 89 +81 65 57 +241 225 193 +73 41 9 +1 1 1 +161 65 113 +129 97 73 +217 193 129 +49 33 25 +233 233 249 +137 33 49 +209 169 129 +89 73 57 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seviper.pal b/graphics/object_events/palettes/followers/seviper.pal new file mode 100644 index 000000000..276c88dc2 --- /dev/null +++ b/graphics/object_events/palettes/followers/seviper.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 113 25 +81 89 105 +33 41 57 +113 121 137 +217 169 73 +161 49 57 +249 217 89 +121 33 33 +169 113 241 +145 89 185 +1 1 1 +209 73 81 +57 65 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sharpedo.pal b/graphics/object_events/palettes/followers/sharpedo.pal new file mode 100644 index 000000000..5381c6030 --- /dev/null +++ b/graphics/object_events/palettes/followers/sharpedo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 49 +97 81 17 +89 145 193 +33 65 105 +1 1 1 +193 89 113 +57 65 73 +233 233 249 +129 137 145 +65 113 161 +113 25 49 +249 209 81 +161 169 177 +33 89 137 +73 81 89 diff --git a/graphics/object_events/palettes/followers/shedinja.pal b/graphics/object_events/palettes/followers/shedinja.pal new file mode 100644 index 000000000..05d9d168e --- /dev/null +++ b/graphics/object_events/palettes/followers/shedinja.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 65 +105 81 17 +153 145 161 +241 217 121 +97 89 113 +65 57 33 +201 177 105 +233 233 249 +121 105 65 +185 177 193 +121 113 137 +57 49 73 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shelgon.pal b/graphics/object_events/palettes/followers/shelgon.pal new file mode 100644 index 000000000..bea7288b0 --- /dev/null +++ b/graphics/object_events/palettes/followers/shelgon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 65 +161 161 185 +65 65 81 +201 201 217 +209 177 97 +113 113 137 +129 41 41 +185 185 201 +233 233 249 +89 89 105 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shellder.pal b/graphics/object_events/palettes/followers/shellder.pal new file mode 100644 index 000000000..b48549223 --- /dev/null +++ b/graphics/object_events/palettes/followers/shellder.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +73 73 161 +233 233 249 +129 129 201 +41 41 49 +233 153 217 +57 57 73 +1 1 1 +193 89 177 +161 161 241 +73 33 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shiftry.pal b/graphics/object_events/palettes/followers/shiftry.pal new file mode 100644 index 000000000..cea3ce83c --- /dev/null +++ b/graphics/object_events/palettes/followers/shiftry.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 137 9 +129 137 145 +97 65 33 +1 1 1 +137 97 41 +65 41 9 +145 209 17 +233 233 249 +161 177 185 +161 137 65 +81 81 89 +233 201 121 +33 57 9 +161 113 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shroomish.pal b/graphics/object_events/palettes/followers/shroomish.pal new file mode 100644 index 000000000..203fd57ea --- /dev/null +++ b/graphics/object_events/palettes/followers/shroomish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 105 73 +121 177 89 +225 201 145 +73 65 49 +81 137 65 +193 161 129 +49 89 41 +145 129 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shuckle.pal b/graphics/object_events/palettes/followers/shuckle.pal new file mode 100644 index 000000000..ecf1abe78 --- /dev/null +++ b/graphics/object_events/palettes/followers/shuckle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 49 +73 57 57 +1 1 1 +89 25 17 +241 217 81 +209 57 57 +233 209 201 +201 177 65 +113 97 33 +161 33 33 +201 169 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skarmory.pal b/graphics/object_events/palettes/followers/skarmory.pal new file mode 100644 index 000000000..5d54ff7e1 --- /dev/null +++ b/graphics/object_events/palettes/followers/skarmory.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 169 17 +33 49 105 +121 145 193 +161 25 49 +1 1 1 +201 57 89 +209 233 249 +73 1 1 +65 97 153 +249 209 97 +153 177 217 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skiploom.pal b/graphics/object_events/palettes/followers/skiploom.pal new file mode 100644 index 000000000..6d538d4e6 --- /dev/null +++ b/graphics/object_events/palettes/followers/skiploom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 153 33 +185 201 225 +233 193 25 +129 193 81 +185 49 177 +249 217 81 +121 81 9 +169 121 9 +41 113 9 +233 233 249 +1 1 1 +185 217 121 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/slaking.pal b/graphics/object_events/palettes/followers/slaking.pal new file mode 100644 index 000000000..40eca9702 --- /dev/null +++ b/graphics/object_events/palettes/followers/slaking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 97 +97 73 73 +217 201 161 +1 1 1 +209 113 137 +129 105 89 +73 57 41 +145 137 153 +193 193 209 +233 233 249 +169 81 105 +121 57 73 +201 177 153 +169 129 105 +81 73 89 diff --git a/graphics/object_events/palettes/followers/slakoth.pal b/graphics/object_events/palettes/followers/slakoth.pal new file mode 100644 index 000000000..12c49947a --- /dev/null +++ b/graphics/object_events/palettes/followers/slakoth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 89 +81 65 65 +185 177 193 +169 57 57 +1 1 1 +129 89 81 +145 137 153 +89 81 97 +233 233 249 +121 33 33 +209 89 89 +225 201 145 +185 153 113 +113 65 57 +113 97 89 diff --git a/graphics/object_events/palettes/followers/slowbro.pal b/graphics/object_events/palettes/followers/slowbro.pal new file mode 100644 index 000000000..f6c55d4cd --- /dev/null +++ b/graphics/object_events/palettes/followers/slowbro.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 193 89 +73 81 89 +241 169 177 +145 121 49 +241 241 169 +177 97 105 +153 153 153 +233 233 249 +113 49 57 +193 65 65 +193 201 209 +217 113 97 +1 1 1 +209 121 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/slowking.pal b/graphics/object_events/palettes/followers/slowking.pal new file mode 100644 index 000000000..30d658e9b --- /dev/null +++ b/graphics/object_events/palettes/followers/slowking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 41 +153 161 169 +113 49 57 +1 1 1 +73 81 89 +193 201 209 +209 121 129 +153 65 73 +209 17 17 +121 89 17 +233 233 249 +233 201 97 +241 169 177 +201 161 65 +201 81 97 diff --git a/graphics/object_events/palettes/followers/slowpoke.pal b/graphics/object_events/palettes/followers/slowpoke.pal new file mode 100644 index 000000000..324117fbd --- /dev/null +++ b/graphics/object_events/palettes/followers/slowpoke.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 121 129 +241 217 145 +209 169 97 +105 81 17 +233 233 249 +161 169 177 +193 193 193 +97 41 49 +153 89 97 +241 153 161 +1 1 1 +249 193 177 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/smeargle.pal b/graphics/object_events/palettes/followers/smeargle.pal new file mode 100644 index 000000000..380390f8e --- /dev/null +++ b/graphics/object_events/palettes/followers/smeargle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 177 65 +177 185 193 +41 113 41 +161 153 105 +217 217 185 +97 89 73 +1 1 1 +65 57 49 +233 233 249 +113 97 33 +185 185 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/smoochum.pal b/graphics/object_events/palettes/followers/smoochum.pal new file mode 100644 index 000000000..79f273b2d --- /dev/null +++ b/graphics/object_events/palettes/followers/smoochum.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 137 25 +249 153 201 +113 33 97 +1 1 1 +177 65 153 +129 81 1 +249 193 49 +233 233 249 +217 65 105 +177 185 193 +153 97 41 +225 161 105 +153 49 81 +201 129 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sneasel.pal b/graphics/object_events/palettes/followers/sneasel.pal new file mode 100644 index 000000000..d3e0617ce --- /dev/null +++ b/graphics/object_events/palettes/followers/sneasel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 137 17 +57 73 81 +81 153 177 +89 97 105 +121 1 1 +249 249 249 +1 1 1 +25 81 121 +201 49 73 +169 185 201 +241 177 65 +57 113 137 +129 145 169 +153 9 3 +25 89 113 diff --git a/graphics/object_events/palettes/followers/snorlax.pal b/graphics/object_events/palettes/followers/snorlax.pal new file mode 100644 index 000000000..204900db7 --- /dev/null +++ b/graphics/object_events/palettes/followers/snorlax.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 81 +161 161 185 +65 65 65 +1 1 1 +249 225 169 +137 105 73 +41 49 49 +81 129 145 +233 233 249 +65 105 121 +193 193 201 +217 193 121 +41 73 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/snorunt.pal b/graphics/object_events/palettes/followers/snorunt.pal new file mode 100644 index 000000000..283587f32 --- /dev/null +++ b/graphics/object_events/palettes/followers/snorunt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 57 +89 65 57 +169 73 65 +41 129 193 +97 97 121 +33 33 41 +249 217 89 +145 105 57 +233 233 249 +169 169 185 +1 1 1 +241 105 89 +49 49 65 +65 65 81 +193 81 65 diff --git a/graphics/object_events/palettes/followers/snubbull.pal b/graphics/object_events/palettes/followers/snubbull.pal new file mode 100644 index 000000000..36e6c87a4 --- /dev/null +++ b/graphics/object_events/palettes/followers/snubbull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 153 +49 65 81 +209 193 145 +1 1 1 +185 73 113 +121 33 65 +177 193 209 +73 153 193 +241 145 185 +233 233 249 +209 105 145 +33 81 113 +161 49 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spearow.pal b/graphics/object_events/palettes/followers/spearow.pal new file mode 100644 index 000000000..2c7f13b8a --- /dev/null +++ b/graphics/object_events/palettes/followers/spearow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 33 +81 57 17 +249 137 145 +233 121 89 +65 65 65 +201 57 25 +185 169 113 +145 41 17 +233 233 249 +161 81 105 +129 89 33 +137 121 65 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spheal.pal b/graphics/object_events/palettes/followers/spheal.pal new file mode 100644 index 000000000..637a19fa1 --- /dev/null +++ b/graphics/object_events/palettes/followers/spheal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 113 +217 201 161 +81 81 57 +105 137 185 +49 65 105 +1 1 1 +209 217 233 +137 169 225 +81 97 145 +121 113 81 +177 185 209 +233 233 249 +81 81 105 +193 177 137 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spinarak.pal b/graphics/object_events/palettes/followers/spinarak.pal new file mode 100644 index 000000000..2f09009e2 --- /dev/null +++ b/graphics/object_events/palettes/followers/spinarak.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 137 33 +113 137 153 +81 57 1 +121 185 33 +233 233 249 +65 97 89 +169 185 209 +161 217 97 +209 65 105 +1 1 1 +113 17 25 +193 137 1 +225 193 9 +33 81 33 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spinda.pal b/graphics/object_events/palettes/followers/spinda.pal new file mode 100644 index 000000000..97d7f9ff1 --- /dev/null +++ b/graphics/object_events/palettes/followers/spinda.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 113 +81 73 57 +145 65 65 +1 1 1 +129 105 89 +209 105 105 +217 193 169 +121 49 49 +177 81 81 +193 169 145 +57 65 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spoink.pal b/graphics/object_events/palettes/followers/spoink.pal new file mode 100644 index 000000000..652308e48 --- /dev/null +++ b/graphics/object_events/palettes/followers/spoink.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 137 +145 49 97 +49 57 65 +97 105 105 +249 249 249 +105 25 65 +1 1 1 +185 73 129 +225 97 161 +73 81 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/squirtle.pal b/graphics/object_events/palettes/followers/squirtle.pal new file mode 100644 index 000000000..8d090127d --- /dev/null +++ b/graphics/object_events/palettes/followers/squirtle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 121 25 +57 137 185 +217 169 49 +233 233 249 +33 73 97 +185 185 185 +1 1 1 +161 9 3 +89 185 241 +241 209 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/stantler.pal b/graphics/object_events/palettes/followers/stantler.pal new file mode 100644 index 000000000..ca315697f --- /dev/null +++ b/graphics/object_events/palettes/followers/stantler.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 25 +89 73 9 +169 185 209 +201 145 89 +73 65 57 +225 209 81 +97 49 9 +1 1 1 +233 233 249 +185 97 49 +137 33 49 +113 89 81 +201 177 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sudowoodo.pal b/graphics/object_events/palettes/followers/sudowoodo.pal new file mode 100644 index 000000000..a16242e5e --- /dev/null +++ b/graphics/object_events/palettes/followers/sudowoodo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 153 65 +1 1 1 +201 169 1 +25 81 17 +161 129 89 +121 209 121 +129 105 65 +185 153 89 +233 233 249 +225 121 121 +89 65 17 +225 193 1 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/suicune.pal b/graphics/object_events/palettes/followers/suicune.pal new file mode 100644 index 000000000..2ec7c2b8c --- /dev/null +++ b/graphics/object_events/palettes/followers/suicune.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 153 137 +65 33 97 +97 201 193 +81 81 97 +97 153 193 +185 49 49 +129 153 153 +185 201 201 +25 57 89 +161 97 177 +233 233 249 +113 57 137 +49 97 137 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sunflora.pal b/graphics/object_events/palettes/followers/sunflora.pal new file mode 100644 index 000000000..34210aafa --- /dev/null +++ b/graphics/object_events/palettes/followers/sunflora.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 137 49 +225 185 17 +89 185 81 +1 1 1 +41 81 17 +201 129 33 +241 225 113 +233 193 33 +121 209 113 +225 161 41 +129 73 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sunkern.pal b/graphics/object_events/palettes/followers/sunkern.pal new file mode 100644 index 000000000..8184c4986 --- /dev/null +++ b/graphics/object_events/palettes/followers/sunkern.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 9 +233 233 249 +89 65 1 +113 193 81 +73 97 113 +1 1 1 +153 105 9 +241 217 113 +33 49 57 +105 161 57 +217 185 49 +41 81 17 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/surskit.pal b/graphics/object_events/palettes/followers/surskit.pal new file mode 100644 index 000000000..40ff84b78 --- /dev/null +++ b/graphics/object_events/palettes/followers/surskit.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 33 +105 81 17 +97 145 185 +185 169 49 +41 73 97 +145 41 41 +233 233 249 +1 1 1 +33 41 57 +193 57 57 +225 209 73 +73 105 137 +121 177 225 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swalot.pal b/graphics/object_events/palettes/followers/swalot.pal new file mode 100644 index 000000000..ed14e5df2 --- /dev/null +++ b/graphics/object_events/palettes/followers/swalot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 57 +137 105 161 +65 41 97 +233 185 65 +57 73 81 +161 129 193 +97 73 121 +161 25 25 +1 1 1 +217 105 105 +185 145 217 +121 89 145 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swampert.pal b/graphics/object_events/palettes/followers/swampert.pal new file mode 100644 index 000000000..351f6cc11 --- /dev/null +++ b/graphics/object_events/palettes/followers/swampert.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +89 121 161 +161 73 17 +129 185 241 +49 57 81 +1 1 1 +97 161 209 +49 73 113 +89 105 129 +249 193 129 +201 201 225 +161 161 193 +193 89 17 +49 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swellow.pal b/graphics/object_events/palettes/followers/swellow.pal new file mode 100644 index 000000000..4a366df34 --- /dev/null +++ b/graphics/object_events/palettes/followers/swellow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 41 +89 81 17 +105 137 193 +49 73 113 +209 209 233 +17 49 73 +225 209 73 +65 65 65 +217 81 89 +185 185 193 +1 1 1 +73 105 153 +177 65 81 +105 33 65 +233 233 249 diff --git a/graphics/object_events/palettes/followers/swinub.pal b/graphics/object_events/palettes/followers/swinub.pal new file mode 100644 index 000000000..1ac67e68b --- /dev/null +++ b/graphics/object_events/palettes/followers/swinub.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 97 57 +185 153 105 +113 89 81 +201 97 113 +145 41 65 +73 41 9 +169 129 73 +1 1 1 +233 137 161 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/taillow.pal b/graphics/object_events/palettes/followers/taillow.pal new file mode 100644 index 000000000..c01cf137c --- /dev/null +++ b/graphics/object_events/palettes/followers/taillow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 41 +105 81 17 +105 137 193 +49 73 113 +225 209 73 +193 73 89 +17 49 73 +233 233 249 +121 121 129 +1 1 1 +145 49 81 +73 105 153 +169 169 177 +65 65 65 +241 105 105 diff --git a/graphics/object_events/palettes/followers/tangela.pal b/graphics/object_events/palettes/followers/tangela.pal new file mode 100644 index 000000000..eec939132 --- /dev/null +++ b/graphics/object_events/palettes/followers/tangela.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 145 +233 233 249 +65 65 65 +121 145 177 +161 49 41 +1 1 1 +25 33 33 +89 113 113 +169 185 209 +105 161 169 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tauros.pal b/graphics/object_events/palettes/followers/tauros.pal new file mode 100644 index 000000000..9d198490e --- /dev/null +++ b/graphics/object_events/palettes/followers/tauros.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 73 +113 129 169 +73 65 65 +201 153 65 +193 193 209 +105 97 89 +1 1 1 +41 33 17 +145 145 145 +233 233 249 +81 81 105 +225 169 73 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/teddiursa.pal b/graphics/object_events/palettes/followers/teddiursa.pal new file mode 100644 index 000000000..10b1388ec --- /dev/null +++ b/graphics/object_events/palettes/followers/teddiursa.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 121 33 +177 185 193 +225 201 97 +89 73 65 +241 225 193 +1 1 1 +89 49 17 +233 161 57 +153 97 33 +233 233 249 +201 209 225 +217 201 137 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tentacool.pal b/graphics/object_events/palettes/followers/tentacool.pal new file mode 100644 index 000000000..ebde6755c --- /dev/null +++ b/graphics/object_events/palettes/followers/tentacool.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 3 +73 145 161 +65 65 65 +121 193 241 +145 25 89 +177 121 73 +249 161 161 +41 105 121 +233 233 249 +65 49 41 +209 169 97 +1 1 1 +209 209 209 +225 49 97 +57 73 97 diff --git a/graphics/object_events/palettes/followers/tentacruel.pal b/graphics/object_events/palettes/followers/tentacruel.pal new file mode 100644 index 000000000..5eb5f673e --- /dev/null +++ b/graphics/object_events/palettes/followers/tentacruel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 3 +1 1 1 +65 65 65 +233 233 249 +121 193 241 +169 169 169 +145 25 89 +153 121 89 +41 105 121 +185 161 121 +81 153 169 +225 49 97 +249 161 161 +57 73 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/togepi.pal b/graphics/object_events/palettes/followers/togepi.pal new file mode 100644 index 000000000..52fd5d0ed --- /dev/null +++ b/graphics/object_events/palettes/followers/togepi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 73 +97 169 225 +233 217 89 +49 57 41 +193 177 73 +217 209 209 +217 81 89 +113 97 49 +233 121 145 +153 153 145 +249 233 145 +233 233 249 +121 201 241 +81 81 81 +1 1 1 diff --git a/graphics/object_events/palettes/followers/torkoal.pal b/graphics/object_events/palettes/followers/torkoal.pal new file mode 100644 index 000000000..fab0f050a --- /dev/null +++ b/graphics/object_events/palettes/followers/torkoal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 113 65 +145 97 57 +137 33 49 +121 129 129 +97 41 41 +1 1 1 +209 137 81 +89 97 105 +209 57 81 +185 185 185 +49 57 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/totodile.pal b/graphics/object_events/palettes/followers/totodile.pal new file mode 100644 index 000000000..1a7c37644 --- /dev/null +++ b/graphics/object_events/palettes/followers/totodile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 81 +65 73 81 +81 129 185 +113 25 41 +41 57 97 +169 185 209 +209 49 73 +1 1 1 +233 233 249 +113 177 233 +65 97 137 +121 105 41 +161 33 57 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/trapinch.pal b/graphics/object_events/palettes/followers/trapinch.pal new file mode 100644 index 000000000..410b897fd --- /dev/null +++ b/graphics/object_events/palettes/followers/trapinch.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 153 113 +169 89 73 +201 121 81 +41 41 41 +249 249 249 +1 1 1 +105 105 105 +121 121 121 +113 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/treecko.pal b/graphics/object_events/palettes/followers/treecko.pal new file mode 100644 index 000000000..e5b4b2e4c --- /dev/null +++ b/graphics/object_events/palettes/followers/treecko.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 169 33 +49 73 25 +249 217 89 +105 25 25 +57 137 105 +65 105 41 +185 49 49 +49 89 57 +1 1 1 +201 217 121 +145 33 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tropius.pal b/graphics/object_events/palettes/followers/tropius.pal new file mode 100644 index 000000000..af8de33ba --- /dev/null +++ b/graphics/object_events/palettes/followers/tropius.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 9 +161 161 161 +209 169 25 +25 57 33 +129 185 97 +65 145 73 +41 105 57 +65 49 1 +233 233 249 +249 209 33 +161 121 81 +121 97 73 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/typhlosion.pal b/graphics/object_events/palettes/followers/typhlosion.pal new file mode 100644 index 000000000..eeacd5c1f --- /dev/null +++ b/graphics/object_events/palettes/followers/typhlosion.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 81 +73 65 17 +57 137 169 +241 201 41 +25 57 73 +161 17 25 +209 185 97 +217 81 81 +233 233 249 +57 97 121 +1 1 1 +105 89 57 +185 49 49 +249 209 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tyranitar.pal b/graphics/object_events/palettes/followers/tyranitar.pal new file mode 100644 index 000000000..4dadfce81 --- /dev/null +++ b/graphics/object_events/palettes/followers/tyranitar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 121 81 +137 185 105 +57 49 105 +121 137 145 +33 41 41 +161 185 201 +113 161 89 +41 73 49 +81 105 169 +233 233 249 +177 217 121 +1 1 1 +97 137 193 +49 65 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tyrogue.pal b/graphics/object_events/palettes/followers/tyrogue.pal new file mode 100644 index 000000000..e0f3829ec --- /dev/null +++ b/graphics/object_events/palettes/followers/tyrogue.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 145 153 +193 57 57 +177 185 193 +89 49 105 +169 121 177 +73 89 105 +97 25 25 +1 1 1 +233 233 249 +137 97 9 +201 161 217 +145 41 41 +113 81 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/umbreon.pal b/graphics/object_events/palettes/followers/umbreon.pal new file mode 100644 index 000000000..83c9ac129 --- /dev/null +++ b/graphics/object_events/palettes/followers/umbreon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 17 +129 89 9 +209 25 25 +233 233 249 +225 177 41 +25 41 57 +65 73 81 +1 1 1 +249 217 89 +105 113 121 +137 57 1 +41 57 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ursaring.pal b/graphics/object_events/palettes/followers/ursaring.pal new file mode 100644 index 000000000..36e1ff602 --- /dev/null +++ b/graphics/object_events/palettes/followers/ursaring.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 57 +161 169 185 +121 73 49 +1 1 1 +145 105 57 +209 161 97 +233 233 249 +73 41 9 +217 201 137 +193 193 201 +177 129 89 +89 73 65 +153 105 65 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vaporeon.pal b/graphics/object_events/palettes/followers/vaporeon.pal new file mode 100644 index 000000000..e28edebe1 --- /dev/null +++ b/graphics/object_events/palettes/followers/vaporeon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +9 131 5 +33 145 137 +129 201 233 +81 73 57 +89 177 225 +1 1 1 +177 153 57 +209 209 209 +33 57 105 +17 113 121 +225 201 105 +233 233 249 +73 137 177 +161 161 161 +49 105 137 diff --git a/graphics/object_events/palettes/followers/venomoth.pal b/graphics/object_events/palettes/followers/venomoth.pal new file mode 100644 index 000000000..558651bc1 --- /dev/null +++ b/graphics/object_events/palettes/followers/venomoth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 65 +209 153 249 +105 97 137 +233 233 249 +73 65 89 +1 1 1 +193 193 193 +161 105 241 +113 113 113 +233 185 249 +217 185 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/venonat.pal b/graphics/object_events/palettes/followers/venonat.pal new file mode 100644 index 000000000..b1281ab1c --- /dev/null +++ b/graphics/object_events/palettes/followers/venonat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 145 81 +73 57 129 +201 201 201 +129 97 33 +1 1 1 +137 1 1 +137 137 137 +113 73 209 +169 49 81 +49 33 65 +233 233 249 +161 105 241 +233 129 153 +217 185 129 +249 201 201 diff --git a/graphics/object_events/palettes/followers/venusaur.pal b/graphics/object_events/palettes/followers/venusaur.pal new file mode 100644 index 000000000..46f21dc4a --- /dev/null +++ b/graphics/object_events/palettes/followers/venusaur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 129 41 +241 121 161 +137 225 33 +145 65 33 +65 153 97 +105 217 193 +233 193 113 +201 73 129 +233 233 249 +105 33 41 +97 169 17 +161 161 161 +1 1 1 +65 97 49 +249 225 9 diff --git a/graphics/object_events/palettes/followers/vibrava.pal b/graphics/object_events/palettes/followers/vibrava.pal new file mode 100644 index 000000000..4402c3530 --- /dev/null +++ b/graphics/object_events/palettes/followers/vibrava.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 97 +217 225 185 +41 105 25 +185 193 209 +121 185 113 +73 73 73 +1 1 1 +57 57 57 +249 249 249 +105 105 105 +81 89 57 +97 161 97 +161 177 137 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/victreebel.pal b/graphics/object_events/palettes/followers/victreebel.pal new file mode 100644 index 000000000..90de7ab6a --- /dev/null +++ b/graphics/object_events/palettes/followers/victreebel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 153 57 +241 121 161 +81 65 49 +137 217 81 +1 1 1 +169 65 113 +121 9 5 +185 137 57 +193 193 193 +233 233 249 +33 33 33 +65 89 41 +241 225 73 +185 161 49 +129 97 41 diff --git a/graphics/object_events/palettes/followers/vigoroth.pal b/graphics/object_events/palettes/followers/vigoroth.pal new file mode 100644 index 000000000..446f1e8d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/vigoroth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 129 121 +65 57 73 +97 89 105 +217 209 217 +97 49 49 +1 1 1 +169 57 57 +209 89 89 +105 25 25 +177 169 177 +233 233 249 +121 81 73 +145 105 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/volbeat.pal b/graphics/object_events/palettes/followers/volbeat.pal new file mode 100644 index 000000000..f78520d3b --- /dev/null +++ b/graphics/object_events/palettes/followers/volbeat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 57 +65 65 73 +177 177 193 +225 185 65 +209 73 81 +121 33 49 +105 105 113 +1 1 1 +233 233 249 +137 137 153 +41 41 49 +225 113 121 +177 57 65 +225 209 89 +97 81 49 diff --git a/graphics/object_events/palettes/followers/vulpix.pal b/graphics/object_events/palettes/followers/vulpix.pal new file mode 100644 index 000000000..9c57ccda9 --- /dev/null +++ b/graphics/object_events/palettes/followers/vulpix.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 137 73 +169 81 25 +217 113 49 +233 233 249 +121 73 57 +89 57 49 +1 1 1 +185 89 57 +241 201 153 +89 65 73 +137 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wailmer.pal b/graphics/object_events/palettes/followers/wailmer.pal new file mode 100644 index 000000000..4104dc7f0 --- /dev/null +++ b/graphics/object_events/palettes/followers/wailmer.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 97 +65 73 81 +193 185 121 +65 129 193 +41 97 137 +33 65 97 +185 201 217 +105 161 225 +137 121 73 +81 65 33 +217 233 249 +137 153 169 +49 105 161 +1 1 1 +97 113 121 diff --git a/graphics/object_events/palettes/followers/wailord.pal b/graphics/object_events/palettes/followers/wailord.pal new file mode 100644 index 000000000..8168289fe --- /dev/null +++ b/graphics/object_events/palettes/followers/wailord.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 201 217 +33 65 105 +65 129 193 +57 73 81 +137 161 177 +217 233 249 +41 105 153 +105 161 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/walrein.pal b/graphics/object_events/palettes/followers/walrein.pal new file mode 100644 index 000000000..1543eafcf --- /dev/null +++ b/graphics/object_events/palettes/followers/walrein.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 25 +129 137 153 +177 185 209 +81 81 57 +1 1 1 +105 161 217 +209 217 233 +49 65 105 +249 217 89 +137 185 249 +81 129 177 +81 81 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wartortle.pal b/graphics/object_events/palettes/followers/wartortle.pal new file mode 100644 index 000000000..d4d157193 --- /dev/null +++ b/graphics/object_events/palettes/followers/wartortle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +161 161 161 +65 81 153 +57 57 73 +233 233 249 +1 1 1 +65 121 217 +161 89 25 +161 9 3 +241 209 113 +113 153 225 +65 65 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/weepinbell.pal b/graphics/object_events/palettes/followers/weepinbell.pal new file mode 100644 index 000000000..c6ea065e7 --- /dev/null +++ b/graphics/object_events/palettes/followers/weepinbell.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 153 57 +241 121 161 +81 65 49 +137 217 81 +89 89 89 +1 1 1 +185 137 57 +185 185 185 +233 233 249 +121 9 5 +169 65 113 +65 89 41 +241 225 73 +185 161 49 +129 97 41 diff --git a/graphics/object_events/palettes/followers/whiscash.pal b/graphics/object_events/palettes/followers/whiscash.pal new file mode 100644 index 000000000..70c9415af --- /dev/null +++ b/graphics/object_events/palettes/followers/whiscash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 57 +65 129 185 +25 33 105 +233 233 249 +177 161 73 +97 161 217 +33 97 161 +97 81 33 +1 1 1 +49 65 137 +209 193 97 +177 177 193 +105 129 193 +73 97 161 +9 5 9 diff --git a/graphics/object_events/palettes/followers/whismur.pal b/graphics/object_events/palettes/followers/whismur.pal new file mode 100644 index 000000000..f353acb32 --- /dev/null +++ b/graphics/object_events/palettes/followers/whismur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 41 +209 121 169 +81 57 9 +225 209 73 +1 1 1 +65 73 89 +97 41 73 +193 169 49 +233 161 201 +161 89 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wingull.pal b/graphics/object_events/palettes/followers/wingull.pal new file mode 100644 index 000000000..676a03740 --- /dev/null +++ b/graphics/object_events/palettes/followers/wingull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 41 +137 137 153 +161 201 225 +105 81 17 +177 185 201 +81 81 89 +225 209 73 +105 161 217 +1 1 1 +65 105 145 +233 233 249 +81 145 185 +49 73 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wurmple.pal b/graphics/object_events/palettes/followers/wurmple.pal new file mode 100644 index 000000000..a6f96b9dc --- /dev/null +++ b/graphics/object_events/palettes/followers/wurmple.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 153 57 +121 97 25 +137 137 145 +1 1 1 +81 81 81 +129 33 57 +169 169 177 +241 105 105 +241 217 105 +249 209 185 +185 49 73 +177 145 129 +113 89 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wynaut.pal b/graphics/object_events/palettes/followers/wynaut.pal new file mode 100644 index 000000000..b73b089b8 --- /dev/null +++ b/graphics/object_events/palettes/followers/wynaut.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 137 153 +25 65 81 +193 57 57 +137 209 225 +49 105 121 +41 41 49 +105 177 193 +33 81 97 +1 1 1 +233 233 249 +113 33 33 +97 97 121 +65 65 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/xatu.pal b/graphics/object_events/palettes/followers/xatu.pal new file mode 100644 index 000000000..399c787a2 --- /dev/null +++ b/graphics/object_events/palettes/followers/xatu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 145 57 +113 129 153 +49 49 49 +129 193 113 +65 81 97 +176 198 222 +121 17 33 +1 1 1 +233 233 249 +217 73 89 +97 81 1 +241 209 97 +177 41 57 +185 153 49 +57 81 33 diff --git a/graphics/object_events/palettes/followers/yanma.pal b/graphics/object_events/palettes/followers/yanma.pal new file mode 100644 index 000000000..40a8c8679 --- /dev/null +++ b/graphics/object_events/palettes/followers/yanma.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 121 49 +41 105 9 +185 201 225 +81 97 137 +113 193 81 +185 65 17 +145 49 9 +97 25 25 +1 1 1 +241 105 81 +161 233 129 +57 73 73 +233 233 249 +217 73 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zangoose.pal b/graphics/object_events/palettes/followers/zangoose.pal new file mode 100644 index 000000000..2736e0cb2 --- /dev/null +++ b/graphics/object_events/palettes/followers/zangoose.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 137 +161 49 97 +41 49 65 +209 209 209 +225 113 129 +1 1 1 +161 49 57 +121 33 33 +73 81 97 +241 113 185 +233 233 249 +153 161 177 +209 73 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zapdos.pal b/graphics/object_events/palettes/followers/zapdos.pal new file mode 100644 index 000000000..037f1b687 --- /dev/null +++ b/graphics/object_events/palettes/followers/zapdos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 1 +1 1 1 +65 65 65 +249 209 1 +225 169 25 +177 177 209 +161 113 73 +57 41 25 +233 233 249 +225 145 73 +249 217 65 +89 81 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zigzagoon.pal b/graphics/object_events/palettes/followers/zigzagoon.pal new file mode 100644 index 000000000..a2d068ced --- /dev/null +++ b/graphics/object_events/palettes/followers/zigzagoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 89 +89 73 33 +169 185 209 +1 1 1 +41 33 25 +65 73 81 +121 129 145 +153 97 57 +233 233 249 +217 209 153 +73 49 25 +201 177 121 +121 73 41 +153 137 89 +65 49 41 diff --git a/graphics/object_events/pics/pokemon/followers/aggron.png b/graphics/object_events/pics/pokemon/followers/aggron.png new file mode 100644 index 000000000..1a72691c9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/aggron.png differ diff --git a/graphics/object_events/pics/pokemon/followers/aipom.png b/graphics/object_events/pics/pokemon/followers/aipom.png new file mode 100644 index 000000000..76dd6b92b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/aipom.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ampharos.png b/graphics/object_events/pics/pokemon/followers/ampharos.png new file mode 100644 index 000000000..8fbb26f04 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ampharos.png differ diff --git a/graphics/object_events/pics/pokemon/followers/anorith.png b/graphics/object_events/pics/pokemon/followers/anorith.png new file mode 100644 index 000000000..62e93257e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/anorith.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ariados.png b/graphics/object_events/pics/pokemon/followers/ariados.png new file mode 100644 index 000000000..6a6431a13 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ariados.png differ diff --git a/graphics/object_events/pics/pokemon/followers/armaldo.png b/graphics/object_events/pics/pokemon/followers/armaldo.png new file mode 100644 index 000000000..0ba9f344e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/armaldo.png differ diff --git a/graphics/object_events/pics/pokemon/followers/articuno.png b/graphics/object_events/pics/pokemon/followers/articuno.png new file mode 100644 index 000000000..da3cc960e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/articuno.png differ diff --git a/graphics/object_events/pics/pokemon/followers/bagon.png b/graphics/object_events/pics/pokemon/followers/bagon.png new file mode 100644 index 000000000..bb4964436 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/bagon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/barboach.png b/graphics/object_events/pics/pokemon/followers/barboach.png new file mode 100644 index 000000000..710fe09e5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/barboach.png differ diff --git a/graphics/object_events/pics/pokemon/followers/bayleef.png b/graphics/object_events/pics/pokemon/followers/bayleef.png new file mode 100644 index 000000000..5d1fa7bd2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/bayleef.png differ diff --git a/graphics/object_events/pics/pokemon/followers/beautifly.png b/graphics/object_events/pics/pokemon/followers/beautifly.png new file mode 100644 index 000000000..33e2eccef Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/beautifly.png differ diff --git a/graphics/object_events/pics/pokemon/followers/beldum.png b/graphics/object_events/pics/pokemon/followers/beldum.png new file mode 100644 index 000000000..c0662fc9a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/beldum.png differ diff --git a/graphics/object_events/pics/pokemon/followers/bellossom.png b/graphics/object_events/pics/pokemon/followers/bellossom.png new file mode 100644 index 000000000..bd2232f01 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/bellossom.png differ diff --git a/graphics/object_events/pics/pokemon/followers/blastoise.png b/graphics/object_events/pics/pokemon/followers/blastoise.png new file mode 100644 index 000000000..018f03869 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/blastoise.png differ diff --git a/graphics/object_events/pics/pokemon/followers/blaziken.png b/graphics/object_events/pics/pokemon/followers/blaziken.png new file mode 100644 index 000000000..7c49d9dcf Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/blaziken.png differ diff --git a/graphics/object_events/pics/pokemon/followers/blissey.png b/graphics/object_events/pics/pokemon/followers/blissey.png new file mode 100644 index 000000000..ba65960e2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/blissey.png differ diff --git a/graphics/object_events/pics/pokemon/followers/breloom.png b/graphics/object_events/pics/pokemon/followers/breloom.png new file mode 100644 index 000000000..a133c90b6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/breloom.png differ diff --git a/graphics/object_events/pics/pokemon/followers/butterfree.png b/graphics/object_events/pics/pokemon/followers/butterfree.png new file mode 100644 index 000000000..1d19c4f9f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/butterfree.png differ diff --git a/graphics/object_events/pics/pokemon/followers/camerupt.png b/graphics/object_events/pics/pokemon/followers/camerupt.png new file mode 100644 index 000000000..89db8f6b8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/camerupt.png differ diff --git a/graphics/object_events/pics/pokemon/followers/carvanha.png b/graphics/object_events/pics/pokemon/followers/carvanha.png new file mode 100644 index 000000000..ceba6596d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/carvanha.png differ diff --git a/graphics/object_events/pics/pokemon/followers/caterpie.png b/graphics/object_events/pics/pokemon/followers/caterpie.png new file mode 100644 index 000000000..af99246e6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/caterpie.png differ diff --git a/graphics/object_events/pics/pokemon/followers/celebi.png b/graphics/object_events/pics/pokemon/followers/celebi.png new file mode 100644 index 000000000..faec94798 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/celebi.png differ diff --git a/graphics/object_events/pics/pokemon/followers/charizard.png b/graphics/object_events/pics/pokemon/followers/charizard.png new file mode 100644 index 000000000..d435a4f3f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/charizard.png differ diff --git a/graphics/object_events/pics/pokemon/followers/charmander.png b/graphics/object_events/pics/pokemon/followers/charmander.png new file mode 100644 index 000000000..7634ecdab Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/charmander.png differ diff --git a/graphics/object_events/pics/pokemon/followers/charmeleon.png b/graphics/object_events/pics/pokemon/followers/charmeleon.png new file mode 100644 index 000000000..c2b311e77 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/charmeleon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/chimecho.png b/graphics/object_events/pics/pokemon/followers/chimecho.png new file mode 100644 index 000000000..336a5656d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/chimecho.png differ diff --git a/graphics/object_events/pics/pokemon/followers/chinchou.png b/graphics/object_events/pics/pokemon/followers/chinchou.png new file mode 100644 index 000000000..abf39ef13 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/chinchou.png differ diff --git a/graphics/object_events/pics/pokemon/followers/clamperl.png b/graphics/object_events/pics/pokemon/followers/clamperl.png new file mode 100644 index 000000000..a5addc63e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/clamperl.png differ diff --git a/graphics/object_events/pics/pokemon/followers/claydol.png b/graphics/object_events/pics/pokemon/followers/claydol.png new file mode 100644 index 000000000..45cb9b9f0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/claydol.png differ diff --git a/graphics/object_events/pics/pokemon/followers/clefable.png b/graphics/object_events/pics/pokemon/followers/clefable.png new file mode 100644 index 000000000..7c7fa0cc2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/clefable.png differ diff --git a/graphics/object_events/pics/pokemon/followers/cloyster.png b/graphics/object_events/pics/pokemon/followers/cloyster.png new file mode 100644 index 000000000..4515f8a21 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/cloyster.png differ diff --git a/graphics/object_events/pics/pokemon/followers/corphish.png b/graphics/object_events/pics/pokemon/followers/corphish.png new file mode 100644 index 000000000..00c485b72 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/corphish.png differ diff --git a/graphics/object_events/pics/pokemon/followers/corsola.png b/graphics/object_events/pics/pokemon/followers/corsola.png new file mode 100644 index 000000000..62c09dd48 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/corsola.png differ diff --git a/graphics/object_events/pics/pokemon/followers/cradily.png b/graphics/object_events/pics/pokemon/followers/cradily.png new file mode 100644 index 000000000..e53d6af1c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/cradily.png differ diff --git a/graphics/object_events/pics/pokemon/followers/crawdaunt.png b/graphics/object_events/pics/pokemon/followers/crawdaunt.png new file mode 100644 index 000000000..df86b8aba Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/crawdaunt.png differ diff --git a/graphics/object_events/pics/pokemon/followers/crobat.png b/graphics/object_events/pics/pokemon/followers/crobat.png new file mode 100644 index 000000000..214a0be7e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/crobat.png differ diff --git a/graphics/object_events/pics/pokemon/followers/croconaw.png b/graphics/object_events/pics/pokemon/followers/croconaw.png new file mode 100644 index 000000000..0d8e05efa Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/croconaw.png differ diff --git a/graphics/object_events/pics/pokemon/followers/cyndaquil.png b/graphics/object_events/pics/pokemon/followers/cyndaquil.png new file mode 100644 index 000000000..df71eedac Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/cyndaquil.png differ diff --git a/graphics/object_events/pics/pokemon/followers/delcatty.png b/graphics/object_events/pics/pokemon/followers/delcatty.png new file mode 100644 index 000000000..9896fa836 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/delcatty.png differ diff --git a/graphics/object_events/pics/pokemon/followers/delibird.png b/graphics/object_events/pics/pokemon/followers/delibird.png new file mode 100644 index 000000000..ce37055ba Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/delibird.png differ diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_attack.png b/graphics/object_events/pics/pokemon/followers/deoxys_attack.png new file mode 100644 index 000000000..92b16a9f6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/deoxys_attack.png differ diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_defense.png b/graphics/object_events/pics/pokemon/followers/deoxys_defense.png new file mode 100644 index 000000000..18b24d75c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/deoxys_defense.png differ diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_normal.png b/graphics/object_events/pics/pokemon/followers/deoxys_normal.png new file mode 100644 index 000000000..000d6ec50 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/deoxys_normal.png differ diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_speed.png b/graphics/object_events/pics/pokemon/followers/deoxys_speed.png new file mode 100644 index 000000000..01817fbe8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/deoxys_speed.png differ diff --git a/graphics/object_events/pics/pokemon/followers/diglett.png b/graphics/object_events/pics/pokemon/followers/diglett.png new file mode 100644 index 000000000..958ca3dac Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/diglett.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dodrio.png b/graphics/object_events/pics/pokemon/followers/dodrio.png new file mode 100644 index 000000000..c25503d7d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dodrio.png differ diff --git a/graphics/object_events/pics/pokemon/followers/donphan.png b/graphics/object_events/pics/pokemon/followers/donphan.png new file mode 100644 index 000000000..c585893cf Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/donphan.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dragonair.png b/graphics/object_events/pics/pokemon/followers/dragonair.png new file mode 100644 index 000000000..01c13c028 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dragonair.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dragonite.png b/graphics/object_events/pics/pokemon/followers/dragonite.png new file mode 100644 index 000000000..aedbf448f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dragonite.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dratini.png b/graphics/object_events/pics/pokemon/followers/dratini.png new file mode 100644 index 000000000..1ab1aa034 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dratini.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dugtrio.png b/graphics/object_events/pics/pokemon/followers/dugtrio.png new file mode 100644 index 000000000..b60c3fb73 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dugtrio.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dunsparce.png b/graphics/object_events/pics/pokemon/followers/dunsparce.png new file mode 100644 index 000000000..2a886d622 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dunsparce.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dusclops.png b/graphics/object_events/pics/pokemon/followers/dusclops.png new file mode 100644 index 000000000..472bffdaf Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dusclops.png differ diff --git a/graphics/object_events/pics/pokemon/followers/duskull.png b/graphics/object_events/pics/pokemon/followers/duskull.png new file mode 100644 index 000000000..faeed6a20 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/duskull.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dustox.png b/graphics/object_events/pics/pokemon/followers/dustox.png new file mode 100644 index 000000000..b46a878e6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dustox.png differ diff --git a/graphics/object_events/pics/pokemon/followers/eevee.png b/graphics/object_events/pics/pokemon/followers/eevee.png new file mode 100644 index 000000000..6f69d899a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/eevee.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ekans.png b/graphics/object_events/pics/pokemon/followers/ekans.png new file mode 100644 index 000000000..dc315987a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ekans.png differ diff --git a/graphics/object_events/pics/pokemon/followers/electrike.png b/graphics/object_events/pics/pokemon/followers/electrike.png new file mode 100644 index 000000000..e0c1b95f1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/electrike.png differ diff --git a/graphics/object_events/pics/pokemon/followers/entei.png b/graphics/object_events/pics/pokemon/followers/entei.png new file mode 100644 index 000000000..5ce920b92 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/entei.png differ diff --git a/graphics/object_events/pics/pokemon/followers/espeon.png b/graphics/object_events/pics/pokemon/followers/espeon.png new file mode 100644 index 000000000..7d2fd7f5d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/espeon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/exeggutor.png b/graphics/object_events/pics/pokemon/followers/exeggutor.png new file mode 100644 index 000000000..22a94424b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/exeggutor.png differ diff --git a/graphics/object_events/pics/pokemon/followers/exploud.png b/graphics/object_events/pics/pokemon/followers/exploud.png new file mode 100644 index 000000000..fe13983e1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/exploud.png differ diff --git a/graphics/object_events/pics/pokemon/followers/farfetchd.png b/graphics/object_events/pics/pokemon/followers/farfetchd.png new file mode 100644 index 000000000..d4eb66b53 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/farfetchd.png differ diff --git a/graphics/object_events/pics/pokemon/followers/fearow.png b/graphics/object_events/pics/pokemon/followers/fearow.png new file mode 100644 index 000000000..99508e3be Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/fearow.png differ diff --git a/graphics/object_events/pics/pokemon/followers/feebas.png b/graphics/object_events/pics/pokemon/followers/feebas.png new file mode 100644 index 000000000..0ccd33d43 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/feebas.png differ diff --git a/graphics/object_events/pics/pokemon/followers/feraligatr.png b/graphics/object_events/pics/pokemon/followers/feraligatr.png new file mode 100644 index 000000000..b685b622c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/feraligatr.png differ diff --git a/graphics/object_events/pics/pokemon/followers/flaaffy.png b/graphics/object_events/pics/pokemon/followers/flaaffy.png new file mode 100644 index 000000000..57e8ee502 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/flaaffy.png differ diff --git a/graphics/object_events/pics/pokemon/followers/flareon.png b/graphics/object_events/pics/pokemon/followers/flareon.png new file mode 100644 index 000000000..280b5f450 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/flareon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/flygon.png b/graphics/object_events/pics/pokemon/followers/flygon.png new file mode 100644 index 000000000..c10bcc0b3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/flygon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/forretress.png b/graphics/object_events/pics/pokemon/followers/forretress.png new file mode 100644 index 000000000..286ecb983 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/forretress.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gardevoir.png b/graphics/object_events/pics/pokemon/followers/gardevoir.png new file mode 100644 index 000000000..a1fcb56e4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gardevoir.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gastly.png b/graphics/object_events/pics/pokemon/followers/gastly.png new file mode 100644 index 000000000..157f271be Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gastly.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gengar.png b/graphics/object_events/pics/pokemon/followers/gengar.png new file mode 100644 index 000000000..d061034a8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gengar.png differ diff --git a/graphics/object_events/pics/pokemon/followers/girafarig.png b/graphics/object_events/pics/pokemon/followers/girafarig.png new file mode 100644 index 000000000..8dd1087aa Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/girafarig.png differ diff --git a/graphics/object_events/pics/pokemon/followers/glalie.png b/graphics/object_events/pics/pokemon/followers/glalie.png new file mode 100644 index 000000000..b2e15e52e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/glalie.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gligar.png b/graphics/object_events/pics/pokemon/followers/gligar.png new file mode 100644 index 000000000..6d17b0e3a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gligar.png differ diff --git a/graphics/object_events/pics/pokemon/followers/goldeen.png b/graphics/object_events/pics/pokemon/followers/goldeen.png new file mode 100644 index 000000000..9400c02fe Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/goldeen.png differ diff --git a/graphics/object_events/pics/pokemon/followers/golduck.png b/graphics/object_events/pics/pokemon/followers/golduck.png new file mode 100644 index 000000000..a7ff8edaa Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/golduck.png differ diff --git a/graphics/object_events/pics/pokemon/followers/golem.png b/graphics/object_events/pics/pokemon/followers/golem.png new file mode 100644 index 000000000..20b619d6c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/golem.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gorebyss.png b/graphics/object_events/pics/pokemon/followers/gorebyss.png new file mode 100644 index 000000000..08c8e2f59 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gorebyss.png differ diff --git a/graphics/object_events/pics/pokemon/followers/granbull.png b/graphics/object_events/pics/pokemon/followers/granbull.png new file mode 100644 index 000000000..037d321f7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/granbull.png differ diff --git a/graphics/object_events/pics/pokemon/followers/groudon.png b/graphics/object_events/pics/pokemon/followers/groudon.png new file mode 100644 index 000000000..242241c16 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/groudon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/grovyle.png b/graphics/object_events/pics/pokemon/followers/grovyle.png new file mode 100644 index 000000000..4b2a2df58 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/grovyle.png differ diff --git a/graphics/object_events/pics/pokemon/followers/grumpig.png b/graphics/object_events/pics/pokemon/followers/grumpig.png new file mode 100644 index 000000000..8f757d50c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/grumpig.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gulpin.png b/graphics/object_events/pics/pokemon/followers/gulpin.png new file mode 100644 index 000000000..320f5fce9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gulpin.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gyarados.png b/graphics/object_events/pics/pokemon/followers/gyarados.png new file mode 100644 index 000000000..33cb2b888 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gyarados.png differ diff --git a/graphics/object_events/pics/pokemon/followers/hariyama.png b/graphics/object_events/pics/pokemon/followers/hariyama.png new file mode 100644 index 000000000..541c6a2f5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/hariyama.png differ diff --git a/graphics/object_events/pics/pokemon/followers/haunter.png b/graphics/object_events/pics/pokemon/followers/haunter.png new file mode 100644 index 000000000..84df6caf2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/haunter.png differ diff --git a/graphics/object_events/pics/pokemon/followers/heracross.png b/graphics/object_events/pics/pokemon/followers/heracross.png new file mode 100644 index 000000000..3699497b4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/heracross.png differ diff --git a/graphics/object_events/pics/pokemon/followers/hitmonchan.png b/graphics/object_events/pics/pokemon/followers/hitmonchan.png new file mode 100644 index 000000000..852fbad16 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/hitmonchan.png differ diff --git a/graphics/object_events/pics/pokemon/followers/hitmonlee.png b/graphics/object_events/pics/pokemon/followers/hitmonlee.png new file mode 100644 index 000000000..4d6ae60d1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/hitmonlee.png differ diff --git a/graphics/object_events/pics/pokemon/followers/hitmontop.png b/graphics/object_events/pics/pokemon/followers/hitmontop.png new file mode 100644 index 000000000..9a64f87a5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/hitmontop.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ho_oh.png b/graphics/object_events/pics/pokemon/followers/ho_oh.png new file mode 100644 index 000000000..714171a55 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ho_oh.png differ diff --git a/graphics/object_events/pics/pokemon/followers/hoothoot.png b/graphics/object_events/pics/pokemon/followers/hoothoot.png new file mode 100644 index 000000000..991e214d0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/hoothoot.png differ diff --git a/graphics/object_events/pics/pokemon/followers/hoppip.png b/graphics/object_events/pics/pokemon/followers/hoppip.png new file mode 100644 index 000000000..90dc9f126 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/hoppip.png differ diff --git a/graphics/object_events/pics/pokemon/followers/horsea.png b/graphics/object_events/pics/pokemon/followers/horsea.png new file mode 100644 index 000000000..068020595 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/horsea.png differ diff --git a/graphics/object_events/pics/pokemon/followers/huntail.png b/graphics/object_events/pics/pokemon/followers/huntail.png new file mode 100644 index 000000000..9e09fc66e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/huntail.png differ diff --git a/graphics/object_events/pics/pokemon/followers/igglybuff.png b/graphics/object_events/pics/pokemon/followers/igglybuff.png new file mode 100644 index 000000000..915796964 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/igglybuff.png differ diff --git a/graphics/object_events/pics/pokemon/followers/illumise.png b/graphics/object_events/pics/pokemon/followers/illumise.png new file mode 100644 index 000000000..b48a801f2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/illumise.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ivysaur.png b/graphics/object_events/pics/pokemon/followers/ivysaur.png new file mode 100644 index 000000000..fda631a53 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ivysaur.png differ diff --git a/graphics/object_events/pics/pokemon/followers/jigglypuff.png b/graphics/object_events/pics/pokemon/followers/jigglypuff.png new file mode 100644 index 000000000..ea877a890 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/jigglypuff.png differ diff --git a/graphics/object_events/pics/pokemon/followers/jirachi.png b/graphics/object_events/pics/pokemon/followers/jirachi.png new file mode 100644 index 000000000..c47a1fe89 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/jirachi.png differ diff --git a/graphics/object_events/pics/pokemon/followers/jolteon.png b/graphics/object_events/pics/pokemon/followers/jolteon.png new file mode 100644 index 000000000..c75292549 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/jolteon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/jumpluff.png b/graphics/object_events/pics/pokemon/followers/jumpluff.png new file mode 100644 index 000000000..3755edb04 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/jumpluff.png differ diff --git a/graphics/object_events/pics/pokemon/followers/jynx.png b/graphics/object_events/pics/pokemon/followers/jynx.png new file mode 100644 index 000000000..e2c243069 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/jynx.png differ diff --git a/graphics/object_events/pics/pokemon/followers/kabuto.png b/graphics/object_events/pics/pokemon/followers/kabuto.png new file mode 100644 index 000000000..5eed0306d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/kabuto.png differ diff --git a/graphics/object_events/pics/pokemon/followers/kabutops.png b/graphics/object_events/pics/pokemon/followers/kabutops.png new file mode 100644 index 000000000..bb5c7b0e3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/kabutops.png differ diff --git a/graphics/object_events/pics/pokemon/followers/kangaskhan.png b/graphics/object_events/pics/pokemon/followers/kangaskhan.png new file mode 100644 index 000000000..9faf8c2ad Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/kangaskhan.png differ diff --git a/graphics/object_events/pics/pokemon/followers/kecleon.png b/graphics/object_events/pics/pokemon/followers/kecleon.png new file mode 100644 index 000000000..22540441b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/kecleon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/kingdra.png b/graphics/object_events/pics/pokemon/followers/kingdra.png new file mode 100644 index 000000000..8043bb032 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/kingdra.png differ diff --git a/graphics/object_events/pics/pokemon/followers/krabby.png b/graphics/object_events/pics/pokemon/followers/krabby.png new file mode 100644 index 000000000..bee310360 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/krabby.png differ diff --git a/graphics/object_events/pics/pokemon/followers/kyogre.png b/graphics/object_events/pics/pokemon/followers/kyogre.png new file mode 100644 index 000000000..5af391b30 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/kyogre.png differ diff --git a/graphics/object_events/pics/pokemon/followers/lanturn.png b/graphics/object_events/pics/pokemon/followers/lanturn.png new file mode 100644 index 000000000..2c42ca35b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/lanturn.png differ diff --git a/graphics/object_events/pics/pokemon/followers/lapras.png b/graphics/object_events/pics/pokemon/followers/lapras.png new file mode 100644 index 000000000..f55e3028d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/lapras.png differ diff --git a/graphics/object_events/pics/pokemon/followers/latias.png b/graphics/object_events/pics/pokemon/followers/latias.png new file mode 100644 index 000000000..9e6ad4240 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/latias.png differ diff --git a/graphics/object_events/pics/pokemon/followers/latios.png b/graphics/object_events/pics/pokemon/followers/latios.png new file mode 100644 index 000000000..553453a31 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/latios.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ledian.png b/graphics/object_events/pics/pokemon/followers/ledian.png new file mode 100644 index 000000000..d8651c2ff Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ledian.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ledyba.png b/graphics/object_events/pics/pokemon/followers/ledyba.png new file mode 100644 index 000000000..32e858e2b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ledyba.png differ diff --git a/graphics/object_events/pics/pokemon/followers/lickitung.png b/graphics/object_events/pics/pokemon/followers/lickitung.png new file mode 100644 index 000000000..715f9a5b9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/lickitung.png differ diff --git a/graphics/object_events/pics/pokemon/followers/lileep.png b/graphics/object_events/pics/pokemon/followers/lileep.png new file mode 100644 index 000000000..6c2d81c1c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/lileep.png differ diff --git a/graphics/object_events/pics/pokemon/followers/linoone.png b/graphics/object_events/pics/pokemon/followers/linoone.png new file mode 100644 index 000000000..d161d709f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/linoone.png differ diff --git a/graphics/object_events/pics/pokemon/followers/lombre.png b/graphics/object_events/pics/pokemon/followers/lombre.png new file mode 100644 index 000000000..72b9f1bad Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/lombre.png differ diff --git a/graphics/object_events/pics/pokemon/followers/lotad.png b/graphics/object_events/pics/pokemon/followers/lotad.png new file mode 100644 index 000000000..3e81947f9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/lotad.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ludicolo.png b/graphics/object_events/pics/pokemon/followers/ludicolo.png new file mode 100644 index 000000000..d31ae4366 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ludicolo.png differ diff --git a/graphics/object_events/pics/pokemon/followers/lugia.png b/graphics/object_events/pics/pokemon/followers/lugia.png new file mode 100644 index 000000000..0ac53eff1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/lugia.png differ diff --git a/graphics/object_events/pics/pokemon/followers/luvdisc.png b/graphics/object_events/pics/pokemon/followers/luvdisc.png new file mode 100644 index 000000000..29d568c35 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/luvdisc.png differ diff --git a/graphics/object_events/pics/pokemon/followers/machamp.png b/graphics/object_events/pics/pokemon/followers/machamp.png new file mode 100644 index 000000000..13c746ddb Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/machamp.png differ diff --git a/graphics/object_events/pics/pokemon/followers/machoke.png b/graphics/object_events/pics/pokemon/followers/machoke.png new file mode 100644 index 000000000..634906d65 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/machoke.png differ diff --git a/graphics/object_events/pics/pokemon/followers/machop.png b/graphics/object_events/pics/pokemon/followers/machop.png new file mode 100644 index 000000000..37f625a5d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/machop.png differ diff --git a/graphics/object_events/pics/pokemon/followers/magby.png b/graphics/object_events/pics/pokemon/followers/magby.png new file mode 100644 index 000000000..aa824e4c4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/magby.png differ diff --git a/graphics/object_events/pics/pokemon/followers/magcargo.png b/graphics/object_events/pics/pokemon/followers/magcargo.png new file mode 100644 index 000000000..a64af468e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/magcargo.png differ diff --git a/graphics/object_events/pics/pokemon/followers/magikarp.png b/graphics/object_events/pics/pokemon/followers/magikarp.png new file mode 100644 index 000000000..9af8fc807 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/magikarp.png differ diff --git a/graphics/object_events/pics/pokemon/followers/magmar.png b/graphics/object_events/pics/pokemon/followers/magmar.png new file mode 100644 index 000000000..3c41115da Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/magmar.png differ diff --git a/graphics/object_events/pics/pokemon/followers/magnemite.png b/graphics/object_events/pics/pokemon/followers/magnemite.png new file mode 100644 index 000000000..5d1d932c3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/magnemite.png differ diff --git a/graphics/object_events/pics/pokemon/followers/magneton.png b/graphics/object_events/pics/pokemon/followers/magneton.png new file mode 100644 index 000000000..75f67de25 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/magneton.png differ diff --git a/graphics/object_events/pics/pokemon/followers/makuhita.png b/graphics/object_events/pics/pokemon/followers/makuhita.png new file mode 100644 index 000000000..4728f5901 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/makuhita.png differ diff --git a/graphics/object_events/pics/pokemon/followers/manectric.png b/graphics/object_events/pics/pokemon/followers/manectric.png new file mode 100644 index 000000000..effb66258 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/manectric.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mankey.png b/graphics/object_events/pics/pokemon/followers/mankey.png new file mode 100644 index 000000000..dd57bbd42 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mankey.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mantine.png b/graphics/object_events/pics/pokemon/followers/mantine.png new file mode 100644 index 000000000..1710e8e92 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mantine.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mareep.png b/graphics/object_events/pics/pokemon/followers/mareep.png new file mode 100644 index 000000000..5cce3787a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mareep.png differ diff --git a/graphics/object_events/pics/pokemon/followers/marshtomp.png b/graphics/object_events/pics/pokemon/followers/marshtomp.png new file mode 100644 index 000000000..5b04823a6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/marshtomp.png differ diff --git a/graphics/object_events/pics/pokemon/followers/masquerain.png b/graphics/object_events/pics/pokemon/followers/masquerain.png new file mode 100644 index 000000000..5be0f3064 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/masquerain.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mawile.png b/graphics/object_events/pics/pokemon/followers/mawile.png new file mode 100644 index 000000000..504ba9c32 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mawile.png differ diff --git a/graphics/object_events/pics/pokemon/followers/medicham.png b/graphics/object_events/pics/pokemon/followers/medicham.png new file mode 100644 index 000000000..25f063da4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/medicham.png differ diff --git a/graphics/object_events/pics/pokemon/followers/meditite.png b/graphics/object_events/pics/pokemon/followers/meditite.png new file mode 100644 index 000000000..69d936343 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/meditite.png differ diff --git a/graphics/object_events/pics/pokemon/followers/meganium.png b/graphics/object_events/pics/pokemon/followers/meganium.png new file mode 100644 index 000000000..982865273 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/meganium.png differ diff --git a/graphics/object_events/pics/pokemon/followers/meowth.png b/graphics/object_events/pics/pokemon/followers/meowth.png new file mode 100644 index 000000000..13cfac090 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/meowth.png differ diff --git a/graphics/object_events/pics/pokemon/followers/metang.png b/graphics/object_events/pics/pokemon/followers/metang.png new file mode 100644 index 000000000..76bfae1f7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/metang.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mew.png b/graphics/object_events/pics/pokemon/followers/mew.png new file mode 100644 index 000000000..3ae89a52f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mew.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mewtwo.png b/graphics/object_events/pics/pokemon/followers/mewtwo.png new file mode 100644 index 000000000..e871d9a26 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mewtwo.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mightyena.png b/graphics/object_events/pics/pokemon/followers/mightyena.png new file mode 100644 index 000000000..324429876 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mightyena.png differ diff --git a/graphics/object_events/pics/pokemon/followers/milotic.png b/graphics/object_events/pics/pokemon/followers/milotic.png new file mode 100644 index 000000000..724a2011f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/milotic.png differ diff --git a/graphics/object_events/pics/pokemon/followers/miltank.png b/graphics/object_events/pics/pokemon/followers/miltank.png new file mode 100644 index 000000000..09393dfbc Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/miltank.png differ diff --git a/graphics/object_events/pics/pokemon/followers/misdreavus.png b/graphics/object_events/pics/pokemon/followers/misdreavus.png new file mode 100644 index 000000000..89b91ee03 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/misdreavus.png differ diff --git a/graphics/object_events/pics/pokemon/followers/moltres.png b/graphics/object_events/pics/pokemon/followers/moltres.png new file mode 100644 index 000000000..70d6298ea Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/moltres.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mr_mime.png b/graphics/object_events/pics/pokemon/followers/mr_mime.png new file mode 100644 index 000000000..ce52c1f03 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mr_mime.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mudkip.png b/graphics/object_events/pics/pokemon/followers/mudkip.png new file mode 100644 index 000000000..3e957c321 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mudkip.png differ diff --git a/graphics/object_events/pics/pokemon/followers/murkrow.png b/graphics/object_events/pics/pokemon/followers/murkrow.png new file mode 100644 index 000000000..c714663ab Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/murkrow.png differ diff --git a/graphics/object_events/pics/pokemon/followers/natu.png b/graphics/object_events/pics/pokemon/followers/natu.png new file mode 100644 index 000000000..7f276ac10 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/natu.png differ diff --git a/graphics/object_events/pics/pokemon/followers/nidoking.png b/graphics/object_events/pics/pokemon/followers/nidoking.png new file mode 100644 index 000000000..20045f13e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/nidoking.png differ diff --git a/graphics/object_events/pics/pokemon/followers/nidoqueen.png b/graphics/object_events/pics/pokemon/followers/nidoqueen.png new file mode 100644 index 000000000..dd252d981 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/nidoqueen.png differ diff --git a/graphics/object_events/pics/pokemon/followers/nidoran_f.png b/graphics/object_events/pics/pokemon/followers/nidoran_f.png new file mode 100644 index 000000000..55a16243f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/nidoran_f.png differ diff --git a/graphics/object_events/pics/pokemon/followers/nidorina.png b/graphics/object_events/pics/pokemon/followers/nidorina.png new file mode 100644 index 000000000..cc84925f3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/nidorina.png differ diff --git a/graphics/object_events/pics/pokemon/followers/nincada.png b/graphics/object_events/pics/pokemon/followers/nincada.png new file mode 100644 index 000000000..1a55d84f2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/nincada.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ninetales.png b/graphics/object_events/pics/pokemon/followers/ninetales.png new file mode 100644 index 000000000..88c1d95fe Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ninetales.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ninjask.png b/graphics/object_events/pics/pokemon/followers/ninjask.png new file mode 100644 index 000000000..640c5ca0a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ninjask.png differ diff --git a/graphics/object_events/pics/pokemon/followers/noctowl.png b/graphics/object_events/pics/pokemon/followers/noctowl.png new file mode 100644 index 000000000..e7fc38c3d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/noctowl.png differ diff --git a/graphics/object_events/pics/pokemon/followers/nosepass.png b/graphics/object_events/pics/pokemon/followers/nosepass.png new file mode 100644 index 000000000..c407b3892 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/nosepass.png differ diff --git a/graphics/object_events/pics/pokemon/followers/numel.png b/graphics/object_events/pics/pokemon/followers/numel.png new file mode 100644 index 000000000..96307f136 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/numel.png differ diff --git a/graphics/object_events/pics/pokemon/followers/nuzleaf.png b/graphics/object_events/pics/pokemon/followers/nuzleaf.png new file mode 100644 index 000000000..2e60c01fe Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/nuzleaf.png differ diff --git a/graphics/object_events/pics/pokemon/followers/octillery.png b/graphics/object_events/pics/pokemon/followers/octillery.png new file mode 100644 index 000000000..261f3a46a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/octillery.png differ diff --git a/graphics/object_events/pics/pokemon/followers/omanyte.png b/graphics/object_events/pics/pokemon/followers/omanyte.png new file mode 100644 index 000000000..c20f2bf69 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/omanyte.png differ diff --git a/graphics/object_events/pics/pokemon/followers/omastar.png b/graphics/object_events/pics/pokemon/followers/omastar.png new file mode 100644 index 000000000..5f32df5ec Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/omastar.png differ diff --git a/graphics/object_events/pics/pokemon/followers/pelipper.png b/graphics/object_events/pics/pokemon/followers/pelipper.png new file mode 100644 index 000000000..b4097c06c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/pelipper.png differ diff --git a/graphics/object_events/pics/pokemon/followers/persian.png b/graphics/object_events/pics/pokemon/followers/persian.png new file mode 100644 index 000000000..4ec83aea5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/persian.png differ diff --git a/graphics/object_events/pics/pokemon/followers/phanpy.png b/graphics/object_events/pics/pokemon/followers/phanpy.png new file mode 100644 index 000000000..c3f9fb8f3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/phanpy.png differ diff --git a/graphics/object_events/pics/pokemon/followers/pichu.png b/graphics/object_events/pics/pokemon/followers/pichu.png new file mode 100644 index 000000000..67d6c4b6d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/pichu.png differ diff --git a/graphics/object_events/pics/pokemon/followers/pidgeot.png b/graphics/object_events/pics/pokemon/followers/pidgeot.png new file mode 100644 index 000000000..cdcdce3cd Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/pidgeot.png differ diff --git a/graphics/object_events/pics/pokemon/followers/pidgeotto.png b/graphics/object_events/pics/pokemon/followers/pidgeotto.png new file mode 100644 index 000000000..cdf9865eb Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/pidgeotto.png differ diff --git a/graphics/object_events/pics/pokemon/followers/pidgey.png b/graphics/object_events/pics/pokemon/followers/pidgey.png new file mode 100644 index 000000000..cd924a5dd Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/pidgey.png differ diff --git a/graphics/object_events/pics/pokemon/followers/pikachu.png b/graphics/object_events/pics/pokemon/followers/pikachu.png new file mode 100644 index 000000000..a6883c7d0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/pikachu.png differ diff --git a/graphics/object_events/pics/pokemon/followers/piloswine.png b/graphics/object_events/pics/pokemon/followers/piloswine.png new file mode 100644 index 000000000..00942dede Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/piloswine.png differ diff --git a/graphics/object_events/pics/pokemon/followers/pineco.png b/graphics/object_events/pics/pokemon/followers/pineco.png new file mode 100644 index 000000000..37f7f0d7c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/pineco.png differ diff --git a/graphics/object_events/pics/pokemon/followers/politoed.png b/graphics/object_events/pics/pokemon/followers/politoed.png new file mode 100644 index 000000000..0180446b3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/politoed.png differ diff --git a/graphics/object_events/pics/pokemon/followers/poliwag.png b/graphics/object_events/pics/pokemon/followers/poliwag.png new file mode 100644 index 000000000..0705bfe2f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/poliwag.png differ diff --git a/graphics/object_events/pics/pokemon/followers/poochyena.png b/graphics/object_events/pics/pokemon/followers/poochyena.png new file mode 100644 index 000000000..2c92a6b8f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/poochyena.png differ diff --git a/graphics/object_events/pics/pokemon/followers/porygon.png b/graphics/object_events/pics/pokemon/followers/porygon.png new file mode 100644 index 000000000..04115d119 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/porygon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/porygon2.png b/graphics/object_events/pics/pokemon/followers/porygon2.png new file mode 100644 index 000000000..18def8ef6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/porygon2.png differ diff --git a/graphics/object_events/pics/pokemon/followers/primeape.png b/graphics/object_events/pics/pokemon/followers/primeape.png new file mode 100644 index 000000000..1a4d7c813 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/primeape.png differ diff --git a/graphics/object_events/pics/pokemon/followers/quilava.png b/graphics/object_events/pics/pokemon/followers/quilava.png new file mode 100644 index 000000000..00fad810b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/quilava.png differ diff --git a/graphics/object_events/pics/pokemon/followers/qwilfish.png b/graphics/object_events/pics/pokemon/followers/qwilfish.png new file mode 100644 index 000000000..97f777495 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/qwilfish.png differ diff --git a/graphics/object_events/pics/pokemon/followers/raichu.png b/graphics/object_events/pics/pokemon/followers/raichu.png new file mode 100644 index 000000000..1887d9a74 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/raichu.png differ diff --git a/graphics/object_events/pics/pokemon/followers/raikou.png b/graphics/object_events/pics/pokemon/followers/raikou.png new file mode 100644 index 000000000..9f092fbc5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/raikou.png differ diff --git a/graphics/object_events/pics/pokemon/followers/raticate.png b/graphics/object_events/pics/pokemon/followers/raticate.png new file mode 100644 index 000000000..691a58a66 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/raticate.png differ diff --git a/graphics/object_events/pics/pokemon/followers/rattata.png b/graphics/object_events/pics/pokemon/followers/rattata.png new file mode 100644 index 000000000..e3b389ef6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/rattata.png differ diff --git a/graphics/object_events/pics/pokemon/followers/rayquaza.png b/graphics/object_events/pics/pokemon/followers/rayquaza.png new file mode 100644 index 000000000..5a1a1e547 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/rayquaza.png differ diff --git a/graphics/object_events/pics/pokemon/followers/regice.png b/graphics/object_events/pics/pokemon/followers/regice.png new file mode 100644 index 000000000..149cee401 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/regice.png differ diff --git a/graphics/object_events/pics/pokemon/followers/regirock.png b/graphics/object_events/pics/pokemon/followers/regirock.png new file mode 100644 index 000000000..7f7985681 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/regirock.png differ diff --git a/graphics/object_events/pics/pokemon/followers/registeel.png b/graphics/object_events/pics/pokemon/followers/registeel.png new file mode 100644 index 000000000..ad188426f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/registeel.png differ diff --git a/graphics/object_events/pics/pokemon/followers/relicanth.png b/graphics/object_events/pics/pokemon/followers/relicanth.png new file mode 100644 index 000000000..10c4c9943 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/relicanth.png differ diff --git a/graphics/object_events/pics/pokemon/followers/remoraid.png b/graphics/object_events/pics/pokemon/followers/remoraid.png new file mode 100644 index 000000000..e1cef6015 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/remoraid.png differ diff --git a/graphics/object_events/pics/pokemon/followers/rhydon.png b/graphics/object_events/pics/pokemon/followers/rhydon.png new file mode 100644 index 000000000..b606f11f8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/rhydon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/roselia.png b/graphics/object_events/pics/pokemon/followers/roselia.png new file mode 100644 index 000000000..5c067a5ee Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/roselia.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sableye.png b/graphics/object_events/pics/pokemon/followers/sableye.png new file mode 100644 index 000000000..97f7ccfc2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sableye.png differ diff --git a/graphics/object_events/pics/pokemon/followers/salamence.png b/graphics/object_events/pics/pokemon/followers/salamence.png new file mode 100644 index 000000000..ae088c7f4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/salamence.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sandshrew.png b/graphics/object_events/pics/pokemon/followers/sandshrew.png new file mode 100644 index 000000000..182bfe82a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sandshrew.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sandslash.png b/graphics/object_events/pics/pokemon/followers/sandslash.png new file mode 100644 index 000000000..7977fb8fc Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sandslash.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sceptile.png b/graphics/object_events/pics/pokemon/followers/sceptile.png new file mode 100644 index 000000000..60e0bfff5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sceptile.png differ diff --git a/graphics/object_events/pics/pokemon/followers/scizor.png b/graphics/object_events/pics/pokemon/followers/scizor.png new file mode 100644 index 000000000..645617819 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/scizor.png differ diff --git a/graphics/object_events/pics/pokemon/followers/scyther.png b/graphics/object_events/pics/pokemon/followers/scyther.png new file mode 100644 index 000000000..7ed877482 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/scyther.png differ diff --git a/graphics/object_events/pics/pokemon/followers/seadra.png b/graphics/object_events/pics/pokemon/followers/seadra.png new file mode 100644 index 000000000..64c61f85f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/seadra.png differ diff --git a/graphics/object_events/pics/pokemon/followers/seaking.png b/graphics/object_events/pics/pokemon/followers/seaking.png new file mode 100644 index 000000000..6277a9291 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/seaking.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sealeo.png b/graphics/object_events/pics/pokemon/followers/sealeo.png new file mode 100644 index 000000000..b2a929d2d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sealeo.png differ diff --git a/graphics/object_events/pics/pokemon/followers/seedot.png b/graphics/object_events/pics/pokemon/followers/seedot.png new file mode 100644 index 000000000..da9a45795 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/seedot.png differ diff --git a/graphics/object_events/pics/pokemon/followers/seel.png b/graphics/object_events/pics/pokemon/followers/seel.png new file mode 100644 index 000000000..f5d2cca52 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/seel.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sentret.png b/graphics/object_events/pics/pokemon/followers/sentret.png new file mode 100644 index 000000000..0c51731d0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sentret.png differ diff --git a/graphics/object_events/pics/pokemon/followers/seviper.png b/graphics/object_events/pics/pokemon/followers/seviper.png new file mode 100644 index 000000000..e8282af5e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/seviper.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sharpedo.png b/graphics/object_events/pics/pokemon/followers/sharpedo.png new file mode 100644 index 000000000..8edfa2042 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sharpedo.png differ diff --git a/graphics/object_events/pics/pokemon/followers/shedinja.png b/graphics/object_events/pics/pokemon/followers/shedinja.png new file mode 100644 index 000000000..34c74185d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/shedinja.png differ diff --git a/graphics/object_events/pics/pokemon/followers/shelgon.png b/graphics/object_events/pics/pokemon/followers/shelgon.png new file mode 100644 index 000000000..5d959acda Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/shelgon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/shellder.png b/graphics/object_events/pics/pokemon/followers/shellder.png new file mode 100644 index 000000000..53e2f9db5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/shellder.png differ diff --git a/graphics/object_events/pics/pokemon/followers/shiftry.png b/graphics/object_events/pics/pokemon/followers/shiftry.png new file mode 100644 index 000000000..42f0df537 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/shiftry.png differ diff --git a/graphics/object_events/pics/pokemon/followers/shroomish.png b/graphics/object_events/pics/pokemon/followers/shroomish.png new file mode 100644 index 000000000..2f915128c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/shroomish.png differ diff --git a/graphics/object_events/pics/pokemon/followers/shuckle.png b/graphics/object_events/pics/pokemon/followers/shuckle.png new file mode 100644 index 000000000..01fe3ce73 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/shuckle.png differ diff --git a/graphics/object_events/pics/pokemon/followers/skarmory.png b/graphics/object_events/pics/pokemon/followers/skarmory.png new file mode 100644 index 000000000..0c3183449 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/skarmory.png differ diff --git a/graphics/object_events/pics/pokemon/followers/skiploom.png b/graphics/object_events/pics/pokemon/followers/skiploom.png new file mode 100644 index 000000000..f9ac8a5d9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/skiploom.png differ diff --git a/graphics/object_events/pics/pokemon/followers/slaking.png b/graphics/object_events/pics/pokemon/followers/slaking.png new file mode 100644 index 000000000..da2a67f1f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/slaking.png differ diff --git a/graphics/object_events/pics/pokemon/followers/slakoth.png b/graphics/object_events/pics/pokemon/followers/slakoth.png new file mode 100644 index 000000000..c11600681 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/slakoth.png differ diff --git a/graphics/object_events/pics/pokemon/followers/slowbro.png b/graphics/object_events/pics/pokemon/followers/slowbro.png new file mode 100644 index 000000000..0c6d926c1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/slowbro.png differ diff --git a/graphics/object_events/pics/pokemon/followers/slowking.png b/graphics/object_events/pics/pokemon/followers/slowking.png new file mode 100644 index 000000000..b4b09b11f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/slowking.png differ diff --git a/graphics/object_events/pics/pokemon/followers/slowpoke.png b/graphics/object_events/pics/pokemon/followers/slowpoke.png new file mode 100644 index 000000000..c57aeaf7d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/slowpoke.png differ diff --git a/graphics/object_events/pics/pokemon/followers/smeargle.png b/graphics/object_events/pics/pokemon/followers/smeargle.png new file mode 100644 index 000000000..675fbced2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/smeargle.png differ diff --git a/graphics/object_events/pics/pokemon/followers/smoochum.png b/graphics/object_events/pics/pokemon/followers/smoochum.png new file mode 100644 index 000000000..973d42d24 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/smoochum.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sneasel.png b/graphics/object_events/pics/pokemon/followers/sneasel.png new file mode 100644 index 000000000..d512ecb66 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sneasel.png differ diff --git a/graphics/object_events/pics/pokemon/followers/snorlax.png b/graphics/object_events/pics/pokemon/followers/snorlax.png new file mode 100644 index 000000000..c2c911a60 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/snorlax.png differ diff --git a/graphics/object_events/pics/pokemon/followers/snorunt.png b/graphics/object_events/pics/pokemon/followers/snorunt.png new file mode 100644 index 000000000..1dc16c717 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/snorunt.png differ diff --git a/graphics/object_events/pics/pokemon/followers/snubbull.png b/graphics/object_events/pics/pokemon/followers/snubbull.png new file mode 100644 index 000000000..d220f10bc Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/snubbull.png differ diff --git a/graphics/object_events/pics/pokemon/followers/spearow.png b/graphics/object_events/pics/pokemon/followers/spearow.png new file mode 100644 index 000000000..fc34bc4ee Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/spearow.png differ diff --git a/graphics/object_events/pics/pokemon/followers/spheal.png b/graphics/object_events/pics/pokemon/followers/spheal.png new file mode 100644 index 000000000..94699cc83 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/spheal.png differ diff --git a/graphics/object_events/pics/pokemon/followers/spinarak.png b/graphics/object_events/pics/pokemon/followers/spinarak.png new file mode 100644 index 000000000..2ac886f3b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/spinarak.png differ diff --git a/graphics/object_events/pics/pokemon/followers/spinda.png b/graphics/object_events/pics/pokemon/followers/spinda.png new file mode 100644 index 000000000..e97ec4bbd Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/spinda.png differ diff --git a/graphics/object_events/pics/pokemon/followers/spoink.png b/graphics/object_events/pics/pokemon/followers/spoink.png new file mode 100644 index 000000000..d7256004d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/spoink.png differ diff --git a/graphics/object_events/pics/pokemon/followers/squirtle.png b/graphics/object_events/pics/pokemon/followers/squirtle.png new file mode 100644 index 000000000..dbf56fd5a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/squirtle.png differ diff --git a/graphics/object_events/pics/pokemon/followers/stantler.png b/graphics/object_events/pics/pokemon/followers/stantler.png new file mode 100644 index 000000000..e6c5e8a82 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/stantler.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sudowoodo.png b/graphics/object_events/pics/pokemon/followers/sudowoodo.png new file mode 100644 index 000000000..419eb917e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sudowoodo.png differ diff --git a/graphics/object_events/pics/pokemon/followers/suicune.png b/graphics/object_events/pics/pokemon/followers/suicune.png new file mode 100644 index 000000000..50d87cd23 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/suicune.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sunflora.png b/graphics/object_events/pics/pokemon/followers/sunflora.png new file mode 100644 index 000000000..defe0b6fc Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sunflora.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sunkern.png b/graphics/object_events/pics/pokemon/followers/sunkern.png new file mode 100644 index 000000000..f19116651 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sunkern.png differ diff --git a/graphics/object_events/pics/pokemon/followers/surskit.png b/graphics/object_events/pics/pokemon/followers/surskit.png new file mode 100644 index 000000000..8ebf3a22e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/surskit.png differ diff --git a/graphics/object_events/pics/pokemon/followers/swalot.png b/graphics/object_events/pics/pokemon/followers/swalot.png new file mode 100644 index 000000000..31f2741f0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/swalot.png differ diff --git a/graphics/object_events/pics/pokemon/followers/swampert.png b/graphics/object_events/pics/pokemon/followers/swampert.png new file mode 100644 index 000000000..11de991d4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/swampert.png differ diff --git a/graphics/object_events/pics/pokemon/followers/swellow.png b/graphics/object_events/pics/pokemon/followers/swellow.png new file mode 100644 index 000000000..241233381 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/swellow.png differ diff --git a/graphics/object_events/pics/pokemon/followers/swinub.png b/graphics/object_events/pics/pokemon/followers/swinub.png new file mode 100644 index 000000000..5d02fb7d6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/swinub.png differ diff --git a/graphics/object_events/pics/pokemon/followers/taillow.png b/graphics/object_events/pics/pokemon/followers/taillow.png new file mode 100644 index 000000000..d2a8afac0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/taillow.png differ diff --git a/graphics/object_events/pics/pokemon/followers/tangela.png b/graphics/object_events/pics/pokemon/followers/tangela.png new file mode 100644 index 000000000..a20ce784c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/tangela.png differ diff --git a/graphics/object_events/pics/pokemon/followers/tauros.png b/graphics/object_events/pics/pokemon/followers/tauros.png new file mode 100644 index 000000000..bb730a117 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/tauros.png differ diff --git a/graphics/object_events/pics/pokemon/followers/teddiursa.png b/graphics/object_events/pics/pokemon/followers/teddiursa.png new file mode 100644 index 000000000..e43906549 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/teddiursa.png differ diff --git a/graphics/object_events/pics/pokemon/followers/tentacool.png b/graphics/object_events/pics/pokemon/followers/tentacool.png new file mode 100644 index 000000000..0ac8ba162 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/tentacool.png differ diff --git a/graphics/object_events/pics/pokemon/followers/tentacruel.png b/graphics/object_events/pics/pokemon/followers/tentacruel.png new file mode 100644 index 000000000..9f203530e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/tentacruel.png differ diff --git a/graphics/object_events/pics/pokemon/followers/togepi.png b/graphics/object_events/pics/pokemon/followers/togepi.png new file mode 100644 index 000000000..d588b9b44 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/togepi.png differ diff --git a/graphics/object_events/pics/pokemon/followers/torkoal.png b/graphics/object_events/pics/pokemon/followers/torkoal.png new file mode 100644 index 000000000..1e5835f1f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/torkoal.png differ diff --git a/graphics/object_events/pics/pokemon/followers/totodile.png b/graphics/object_events/pics/pokemon/followers/totodile.png new file mode 100644 index 000000000..7973715de Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/totodile.png differ diff --git a/graphics/object_events/pics/pokemon/followers/trapinch.png b/graphics/object_events/pics/pokemon/followers/trapinch.png new file mode 100644 index 000000000..4a27dff40 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/trapinch.png differ diff --git a/graphics/object_events/pics/pokemon/followers/treecko.png b/graphics/object_events/pics/pokemon/followers/treecko.png new file mode 100644 index 000000000..fe54a0804 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/treecko.png differ diff --git a/graphics/object_events/pics/pokemon/followers/tropius.png b/graphics/object_events/pics/pokemon/followers/tropius.png new file mode 100644 index 000000000..d05213868 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/tropius.png differ diff --git a/graphics/object_events/pics/pokemon/followers/typhlosion.png b/graphics/object_events/pics/pokemon/followers/typhlosion.png new file mode 100644 index 000000000..9a836bf56 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/typhlosion.png differ diff --git a/graphics/object_events/pics/pokemon/followers/tyranitar.png b/graphics/object_events/pics/pokemon/followers/tyranitar.png new file mode 100644 index 000000000..ec13b289d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/tyranitar.png differ diff --git a/graphics/object_events/pics/pokemon/followers/tyrogue.png b/graphics/object_events/pics/pokemon/followers/tyrogue.png new file mode 100644 index 000000000..dfa25a19b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/tyrogue.png differ diff --git a/graphics/object_events/pics/pokemon/followers/umbreon.png b/graphics/object_events/pics/pokemon/followers/umbreon.png new file mode 100644 index 000000000..d15f9abcf Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/umbreon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ursaring.png b/graphics/object_events/pics/pokemon/followers/ursaring.png new file mode 100644 index 000000000..564c10a17 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ursaring.png differ diff --git a/graphics/object_events/pics/pokemon/followers/vaporeon.png b/graphics/object_events/pics/pokemon/followers/vaporeon.png new file mode 100644 index 000000000..3dcb12af6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/vaporeon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/venomoth.png b/graphics/object_events/pics/pokemon/followers/venomoth.png new file mode 100644 index 000000000..5d7f1ff73 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/venomoth.png differ diff --git a/graphics/object_events/pics/pokemon/followers/venonat.png b/graphics/object_events/pics/pokemon/followers/venonat.png new file mode 100644 index 000000000..ce5727068 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/venonat.png differ diff --git a/graphics/object_events/pics/pokemon/followers/venusaur.png b/graphics/object_events/pics/pokemon/followers/venusaur.png new file mode 100644 index 000000000..9b6e57ac8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/venusaur.png differ diff --git a/graphics/object_events/pics/pokemon/followers/vibrava.png b/graphics/object_events/pics/pokemon/followers/vibrava.png new file mode 100644 index 000000000..466a1de0d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/vibrava.png differ diff --git a/graphics/object_events/pics/pokemon/followers/victreebel.png b/graphics/object_events/pics/pokemon/followers/victreebel.png new file mode 100644 index 000000000..dcec3333b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/victreebel.png differ diff --git a/graphics/object_events/pics/pokemon/followers/vigoroth.png b/graphics/object_events/pics/pokemon/followers/vigoroth.png new file mode 100644 index 000000000..4aad2e9b6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/vigoroth.png differ diff --git a/graphics/object_events/pics/pokemon/followers/volbeat.png b/graphics/object_events/pics/pokemon/followers/volbeat.png new file mode 100644 index 000000000..59a0ebd3c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/volbeat.png differ diff --git a/graphics/object_events/pics/pokemon/followers/vulpix.png b/graphics/object_events/pics/pokemon/followers/vulpix.png new file mode 100644 index 000000000..a96fcc781 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/vulpix.png differ diff --git a/graphics/object_events/pics/pokemon/followers/wailmer.png b/graphics/object_events/pics/pokemon/followers/wailmer.png new file mode 100644 index 000000000..ea637a5e2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/wailmer.png differ diff --git a/graphics/object_events/pics/pokemon/followers/wailord.png b/graphics/object_events/pics/pokemon/followers/wailord.png new file mode 100644 index 000000000..a27912ba7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/wailord.png differ diff --git a/graphics/object_events/pics/pokemon/followers/walrein.png b/graphics/object_events/pics/pokemon/followers/walrein.png new file mode 100644 index 000000000..9f5c364c5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/walrein.png differ diff --git a/graphics/object_events/pics/pokemon/followers/wartortle.png b/graphics/object_events/pics/pokemon/followers/wartortle.png new file mode 100644 index 000000000..2d23e30b2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/wartortle.png differ diff --git a/graphics/object_events/pics/pokemon/followers/weepinbell.png b/graphics/object_events/pics/pokemon/followers/weepinbell.png new file mode 100644 index 000000000..f21e1a243 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/weepinbell.png differ diff --git a/graphics/object_events/pics/pokemon/followers/whiscash.png b/graphics/object_events/pics/pokemon/followers/whiscash.png new file mode 100644 index 000000000..d364f4936 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/whiscash.png differ diff --git a/graphics/object_events/pics/pokemon/followers/whismur.png b/graphics/object_events/pics/pokemon/followers/whismur.png new file mode 100644 index 000000000..0c336b3ef Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/whismur.png differ diff --git a/graphics/object_events/pics/pokemon/followers/wingull.png b/graphics/object_events/pics/pokemon/followers/wingull.png new file mode 100644 index 000000000..bb40e942b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/wingull.png differ diff --git a/graphics/object_events/pics/pokemon/followers/wurmple.png b/graphics/object_events/pics/pokemon/followers/wurmple.png new file mode 100644 index 000000000..443a8b8da Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/wurmple.png differ diff --git a/graphics/object_events/pics/pokemon/followers/wynaut.png b/graphics/object_events/pics/pokemon/followers/wynaut.png new file mode 100644 index 000000000..e90e1c811 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/wynaut.png differ diff --git a/graphics/object_events/pics/pokemon/followers/xatu.png b/graphics/object_events/pics/pokemon/followers/xatu.png new file mode 100644 index 000000000..25b7621b4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/xatu.png differ diff --git a/graphics/object_events/pics/pokemon/followers/yanma.png b/graphics/object_events/pics/pokemon/followers/yanma.png new file mode 100644 index 000000000..71a518105 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/yanma.png differ diff --git a/graphics/object_events/pics/pokemon/followers/zangoose.png b/graphics/object_events/pics/pokemon/followers/zangoose.png new file mode 100644 index 000000000..323463b67 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/zangoose.png differ diff --git a/graphics/object_events/pics/pokemon/followers/zapdos.png b/graphics/object_events/pics/pokemon/followers/zapdos.png new file mode 100644 index 000000000..281e5f3d6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/zapdos.png differ diff --git a/graphics/object_events/pics/pokemon/followers/zigzagoon.png b/graphics/object_events/pics/pokemon/followers/zigzagoon.png new file mode 100644 index 000000000..78759aa8b Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/zigzagoon.png differ diff --git a/graphics/trainer_hill/maps_expert/floor_0/collision.bin b/graphics/trainer_hill/maps_expert/floor_0/collision.bin deleted file mode 100755 index ca6e4ca28..000000000 Binary files a/graphics/trainer_hill/maps_expert/floor_0/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_expert/floor_0/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_0/metatiles.bin deleted file mode 100755 index c7a43d4c6..000000000 --- a/graphics/trainer_hill/maps_expert/floor_0/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_1/collision.bin b/graphics/trainer_hill/maps_expert/floor_1/collision.bin deleted file mode 100755 index ef5851500..000000000 Binary files a/graphics/trainer_hill/maps_expert/floor_1/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin deleted file mode 100755 index a89a14c69..000000000 --- a/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9989:;;;‘FFFFFFFFFFFFFx‘F›|›››}›|›{›z›‘F}FFFFFFFFFFFF‘F›~›››}›~›³›››‘FFFFFFFFFFFFF›‘F›}›|›{›z›|›››‘F›FFFFFFFFFFFF‘F›|›}›~›››}›~›‘FFFFFFFFFFFFF³‘Ö–››–ÖÛÖ–››–Ö›Ö–››–ÖÛÛÛÖ–››–Ö–››–ÖÛÛÛÛÛÖ–››–Ö–››–ÖÛÛÛÖ–››–Ö‘Ö–››–ÖÛÖ–››–Ö› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_2/collision.bin b/graphics/trainer_hill/maps_expert/floor_2/collision.bin deleted file mode 100755 index 891a7f2c1..000000000 --- a/graphics/trainer_hill/maps_expert/floor_2/collision.bin +++ /dev/null @@ -1 +0,0 @@ -�áñù>ù>}~=x½=x}~y>ù>ñá \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin deleted file mode 100755 index 7164f059d..000000000 --- a/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -ÑÛÛÛÙÙ˜™š›››ÑÛÛÛÕÕÃù†Ž•››››ÑÛÛÕËËËû‹‹‹•›››ÑÛÕËËËËû‹‹‹‹•››ÑÛËËËËËû‹‹‹‹‹››ÑÕËËËËËûŒ‹‹‹‹•›ÑËËËËÌÌûûŒ‹‹‹‹›ÑÌÌÌÌûõûõû‹‹‹‹›ÑÕÕÕÕûìûìû‹‹‹‹›ÑËËËËõõûûõ‹‹‹‹›ÑÌËËËËËûû‹‹‹‹Œ›ÑÛËËËËËûõ‹‹‹‹››ÑÛÌËËËËû‹‹‹‹Œ››ÑÛÛÌËËËû‹‹‹Œ›››ÑÛÛÛÌÌËûŒŒŒ››››ÑÛÛÛÛÛÌû››››››› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_3/collision.bin b/graphics/trainer_hill/maps_expert/floor_3/collision.bin deleted file mode 100755 index 3d25428f1..000000000 Binary files a/graphics/trainer_hill/maps_expert/floor_3/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin deleted file mode 100755 index f2200b713..000000000 --- a/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9999:;;;–ûöýööûFûööýöû›û›ûöûûûFûûûöû›ûöû›ûûFF›FFûû›ûöýöû›F66›66F›ûöýöûûF›FFÛFF›FûûööûF6F›ÛÖÛ›F6FûöûûF6›ÛÖÖÖÛ›6Fûû–››››ÖÖ–ÖÖÛ›››–ûûF6›ÛÖÖÖÛ›6FûûöûF6F›ÛÖÛ›F6FûööûûF›FFÛFF›Fûûöýöû›F66›66F›ûöýöû›ûûFF›FFûû›ûöû›ûöûûûFûûûöû›û–ûöýööûFûööýöû› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_0/collision.bin b/graphics/trainer_hill/maps_jp/floor_0/collision.bin deleted file mode 100755 index 817f4f54c..000000000 --- a/graphics/trainer_hill/maps_jp/floor_0/collision.bin +++ /dev/null @@ -1 +0,0 @@ -�ÁoAcA`ADAUAUÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin b/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin deleted file mode 100755 index 8d1787efd..000000000 --- a/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -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?;;;? \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_1/collision.bin b/graphics/trainer_hill/maps_jp/floor_1/collision.bin deleted file mode 100755 index 58f80b49b..000000000 Binary files a/graphics/trainer_hill/maps_jp/floor_1/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin b/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin deleted file mode 100755 index 951723792..000000000 --- a/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;5;9&%9:;5;1;+;;+++++;;;+;1;+;;+++++>>;+;1;+;;+++++;;;+;?;+;;+++++;>>+;1;+;;++,++;;;+;1?+;;,,;,,>>;+;1;+5555;55555+;?;,,,,,;,,,,,,;1;??;55;55555551???;++5+++++++1??;;++++++++++1;;;?,,,,,,,,,, \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_0/collision.bin b/graphics/trainer_hill/maps_normal/floor_0/collision.bin deleted file mode 100755 index 80213aaae..000000000 --- a/graphics/trainer_hill/maps_normal/floor_0/collision.bin +++ /dev/null @@ -1 +0,0 @@ -�å?í½%„½ß!~A } ÷Aùyÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin deleted file mode 100755 index 658a5ace6..000000000 --- a/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -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;;;,;;;;;;;;;, \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_1/collision.bin b/graphics/trainer_hill/maps_normal/floor_1/collision.bin deleted file mode 100755 index fb3f6aec0..000000000 --- a/graphics/trainer_hill/maps_normal/floor_1/collision.bin +++ /dev/null @@ -1 +0,0 @@ -�ûs @ @ëQ‹S»Q‹QëQ‹Q»QPPÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin deleted file mode 100755 index 52af9cfdc..000000000 --- a/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -ÑÕÕÕÙÙÅÆÎÕÛÕÑËÄÄÛÛÄÄÄÌÌÌËÛËÑËÛÛÛÛÛÛÛËÛËÑËÛÕÕÕÕÕßËÛËÑËÛËËËÄÄÛËÛËÑËÛËÛÛÄËËßÕÕËÛËÑËÛËÛÛÛËËÛÄÄËÛËÑËÛËÛÛÛËËÕÕßËÛËÑËÛËÛÛÛËËÄÄÛËÛËÑËÛËÛÛÛËËßÕÕËÛËÑËÛËÛÛÛÄÄÛÄÄÄÛËÑËÛË››››››ÛÕÕÕËÑÄÛËÛÛÛÛÛ›ÛËËËËÑÛÛËÛÛÛÛÛ›ÛËËËËÑÛÛÄÛÛÛÛÛ›ÛÄÄÄÄ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_2/collision.bin b/graphics/trainer_hill/maps_normal/floor_2/collision.bin deleted file mode 100755 index b3ccacdd4..000000000 Binary files a/graphics/trainer_hill/maps_normal/floor_2/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin deleted file mode 100755 index bf2b52c32..000000000 --- a/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1555&&8&.55;icddddqqqrdddcsicssssssssssscsicssssssssssscsicCA@ABAAJBAAcsicsssssssdssscsicACKCCABB@A@csicssdsssssssscsicA@BBAABJBABcsicsssssssdssscsicABACKAAA@CAcsicssssdsssssscsicA@CABBAJBABcsidsssssssdsssdsiCCABBACAA@BABsiBsssssssssssBs \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_3/collision.bin b/graphics/trainer_hill/maps_normal/floor_3/collision.bin deleted file mode 100755 index f4c47254c..000000000 Binary files a/graphics/trainer_hill/maps_normal/floor_3/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_normal/floor_3/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_3/metatiles.bin deleted file mode 100755 index f81c9ef4e..000000000 --- a/graphics/trainer_hill/maps_normal/floor_3/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9&%9:;;;+$$$+;;;;;3+;;;+55;553+;;;+,,;,,3+;;;+4,+;;;,,;;;;;;;3+;;;54+;;;+,;;++;;;+,,+;;;+;;3+;;;+;+;3+555+;,;4,,,,, \ No newline at end of file diff --git a/graphics/trainer_hill/maps_unique/floor_0/collision.bin b/graphics/trainer_hill/maps_unique/floor_0/collision.bin deleted file mode 100755 index e4a3b5a15..000000000 Binary files a/graphics/trainer_hill/maps_unique/floor_0/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_unique/floor_0/metatiles.bin b/graphics/trainer_hill/maps_unique/floor_0/metatiles.bin deleted file mode 100755 index ab592413f..000000000 --- a/graphics/trainer_hill/maps_unique/floor_0/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -ñõûõææøùúûûûñëûëìììùæîõõõõõñëûëû››ûëìììììëñëûë›ÛÛ›ìûõõõûëñëûëõ••õõõëìëûëíëûìììììììëûëûëôëûõõõõõõõëûëûëñëûëìììììììûëûìñëûëûõõõõõõõëõûñìûëûììììììììëûñõõëõõõõõõõõûëûñììììììììììëûëûñõõõõõõõõõõëûëûñìììììììììììûìûñûûûûûûûûûûûûûû \ No newline at end of file diff --git a/graphics/trainer_hill/maps_unique/floor_1/collision.bin b/graphics/trainer_hill/maps_unique/floor_1/collision.bin deleted file mode 100755 index 00c559422..000000000 Binary files a/graphics/trainer_hill/maps_unique/floor_1/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_unique/floor_1/metatiles.bin b/graphics/trainer_hill/maps_unique/floor_1/metatiles.bin deleted file mode 100755 index 43e94bb09..000000000 --- a/graphics/trainer_hill/maps_unique/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9&%9:;;;-;;;5,#$#,5;;;;”‡›‡Œ‡‹‡Œ‡Œ‡•‡›‘�›�›�Œ�›�›�Œ�•�—•—›—•—•—›—›—Œ”‡Œ‡›‡Œ‡‹‡›››‡›‘�›�•�›�Œ�•›•�›‘—•—Œ—•—•—Œ›Œ—•‘‡Œ‡›‡Œ‡‹‡›‡•‡Œ��›�•�›�Œ�›�Œ�›”—•—Œ—›—•—•—›—›‘‡Œ‡•‡•‡‹‡Œ‡›‡›‘�•�‹�Œ�Œ�›�•�›‘—Œ—Œ—›—›—›—‹—›‘›››››››››››Œ›› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_unique/floor_2/collision.bin b/graphics/trainer_hill/maps_unique/floor_2/collision.bin deleted file mode 100755 index ada48a189..000000000 Binary files a/graphics/trainer_hill/maps_unique/floor_2/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_unique/floor_2/metatiles.bin b/graphics/trainer_hill/maps_unique/floor_2/metatiles.bin deleted file mode 100755 index 9b9057e15..000000000 --- a/graphics/trainer_hill/maps_unique/floor_2/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9989:;;;iFFFFFFFFFFFF|FiFzsssysss}sssFiFsFFFFFFFFFFFFiFss{s|s{szsssFiFFFFFFFFFFFFzFiFsssss}|s|s{sFiFFFFFF|FFFFFFF‘F›››F;;;F››››F‘F›››F;;;F››››F‘F›››F;;;F››››FñFFFFFFxFFFFFFFñFûûûûûûzûûûûû|ñFFFFFFFFFFFFFû|û{ûzûyû³û}û~û} \ No newline at end of file diff --git a/graphics/trainer_hill/maps_unique/floor_3/collision.bin b/graphics/trainer_hill/maps_unique/floor_3/collision.bin deleted file mode 100755 index e234fbe0c..000000000 Binary files a/graphics/trainer_hill/maps_unique/floor_3/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin b/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin deleted file mode 100755 index 66840137c..000000000 --- a/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -ñûûûùùåæîõûûíõõõûûìììëìììûûôìììûûûûûëûûûûûñõõõõõõõûëûõõõõñëìììëììûìûììììñëûûûëûõûõûûûûûñëûõûëûëûëõõõûûñëûëûëûëûëìììûûñëûëûëûëûëûõõõõñëûëûëûëûëûììììñëûëûëûëûëûûûûûñëûëûëûëûëõõõõûñìûëûìûëûìììììûñûûëûûûëûûûûûûûñûûìûûûìûûûûûûû \ No newline at end of file diff --git a/graphics/trainer_hill/maps_variety/floor_0/collision.bin b/graphics/trainer_hill/maps_variety/floor_0/collision.bin deleted file mode 100755 index 24fc2ea1e..000000000 Binary files a/graphics/trainer_hill/maps_variety/floor_0/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_variety/floor_0/metatiles.bin b/graphics/trainer_hill/maps_variety/floor_0/metatiles.bin deleted file mode 100755 index af741b7eb..000000000 --- a/graphics/trainer_hill/maps_variety/floor_0/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/graphics/trainer_hill/maps_variety/floor_1/collision.bin b/graphics/trainer_hill/maps_variety/floor_1/collision.bin deleted file mode 100755 index 27f945b28..000000000 Binary files a/graphics/trainer_hill/maps_variety/floor_1/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin b/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin deleted file mode 100755 index c5a9aa5d4..000000000 --- a/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9989:;;;‘›œ–@@–›–@@–›œ›œ›–@ÛÛ@–@ÛÛB–››‘–@ÛÛÛÛÛÛÛÛÛB–œ‘BÛÛÖÖÖÛÖÖÖÛÛB›–BÛÖÖÖÖÖÖÖÖÖÛB––BÛÖÖÖÖÖÖÖÖÖÛB––BÛÖÖÖÖÖÖÖÖÖÛB––BÛÛÖÖÖÖÖÖÖÛÛB–‘–BÛÛÖÖÖÖÖÛÛB–›‘›–BÛÛÖÖÖÛÛB–›œœ››–BÛÛÖÛÛB–›››–›››–AÛÛÛB–››œ–Ö–œ››–AÛB–›››–֖֜›œ›–@–›œ›–Öœ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_variety/floor_2/collision.bin b/graphics/trainer_hill/maps_variety/floor_2/collision.bin deleted file mode 100755 index 606249b2a..000000000 Binary files a/graphics/trainer_hill/maps_variety/floor_2/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_variety/floor_2/metatiles.bin b/graphics/trainer_hill/maps_variety/floor_2/metatiles.bin deleted file mode 100755 index fcb1d4f61..000000000 --- a/graphics/trainer_hill/maps_variety/floor_2/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9989:;;;‘›››››„„„š›››››²¡¡¡¡¡¡¡¡¡°²¡»»²¡¡¡¡¡¡¡¡¡°²¡»»²¡¡¡¡¡¡¡¡¡°²¡»»²¡¡¡¡¡¡¡¡¡°²¡»»²¡¡¡¡¡¡¡¡¡°²¡»»²¡¡¡¡¡¡¡¡¡°²¡»²¡¡¡¡¡¡¡¡¡°²¡»»»»»»»»»»»»» \ No newline at end of file diff --git a/graphics/trainer_hill/maps_variety/floor_3/collision.bin b/graphics/trainer_hill/maps_variety/floor_3/collision.bin deleted file mode 100755 index 153a26637..000000000 Binary files a/graphics/trainer_hill/maps_variety/floor_3/collision.bin and /dev/null differ diff --git a/graphics/trainer_hill/maps_variety/floor_3/metatiles.bin b/graphics/trainer_hill/maps_variety/floor_3/metatiles.bin deleted file mode 100755 index b1b32f520..000000000 --- a/graphics/trainer_hill/maps_variety/floor_3/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9989:;;;i@mAsA^AqBEEEEECsdsCsdsAsEEEEEe@sBmBsBmBEEEEElsAsds@sds@sBsAi@mAs@mCsCmBsBm@sdsCsdsAsdsAsdeBsBmAs@mBsAmBslsAsdsBsdsBsdsBi@mAsAmBsCmAsCm@sdsCsdsCsdsBsdeBsBmCsBmBsAm@sls@sdsAsdsBsdsBi@mBsBmCs@mAs@m@sds@sds@sdsCsd \ No newline at end of file diff --git a/include/battle_anim.h b/include/battle_anim.h index c98766ea8..d8b2cd4db 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -62,7 +62,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible) bool8 IsContest(void); s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); -s16 KeepPanInRange(s16 panArg, int oldPan); +s16 KeepPanInRange(s16 a, int oldPan); s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); void RelocateBattleBgPal(u16 paletteNum, u16 *dest, u32 offset, bool8 largeScreen); void ResetBattleAnimBg(bool8); @@ -91,14 +91,14 @@ bool8 AnimTranslateLinear(struct Sprite *sprite); void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId); void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite); -u16 ArcTan2Neg(s16 x, s16 y); -void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation); +u16 ArcTan2Neg(s16 a, s16 b); +void TrySetSpriteRotScale(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation); void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite); void TranslateSpriteLinearAndFlicker(struct Sprite *sprite); void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite); void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite); -void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset); -s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr); +void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 a2); +s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 a2); u8 GetBattlerYCoordWithElevation(u8 battlerId); void WaitAnimForDuration(struct Sprite *sprite); void AnimTravelDiagonally(struct Sprite *sprite); @@ -109,7 +109,7 @@ void *LoadPointerFromVars(s16 bottom, s16 top); void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr); void InitPrioritiesForVisibleBattlers(void); void GetBattleAnimBg1Data(struct BattleAnimBgData*); -void GetBattleAnimBgData(struct BattleAnimBgData*, u32 bgId); +void GetBattleAnimBgData(struct BattleAnimBgData*, u32 arg1); u8 GetBattlerSpriteSubpriority(u8 battlerId); bool8 TranslateAnimHorizontalArc(struct Sprite *sprite); void TranslateSpriteLinearByIdFixedPoint(struct Sprite *sprite); @@ -118,7 +118,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); void InitSpriteDataForLinearTranslation(struct Sprite *sprite); void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode); void SetBattlerSpriteYOffsetFromRotation(u8 spriteId); -u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2); +u32 GetBattleBgPalettesMask(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7); u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLeft, u8 opponentRight); u8 AnimDummyReturnArg(u8 battler); s16 CloneBattlerSpriteWithBlend(u8); @@ -129,7 +129,7 @@ void AnimLoadCompressedBgGfx(u32, const u32*, u32); void UpdateAnimBg3ScreenSize(bool8); void TranslateSpriteInGrowingCircle(struct Sprite *); void SetBattlerSpriteYOffsetFromYScale(u8 spriteId); -void PrepareEruptAnimTaskData(struct Task *task, u8 spriteId, s16 xScaleStart, s16 yScaleStart, s16 xScaleEnd, s16 yScaleEnd, u16 duration); +void PrepareEruptAnimTaskData(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7); u8 UpdateEruptAnimTask(struct Task *task); void DestroyAnimSpriteAndDisableBlend(struct Sprite *); void AnimLoadCompressedBgTilemap(u32 bgId, const void *src); @@ -146,7 +146,7 @@ void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union Aff bool8 RunAffineAnimFromTaskData(struct Task *task); void AnimThrowProjectile(struct Sprite *sprite); void GetBgDataForTransform(struct BattleAnimBgData *dest, u8 battlerId); -u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm); +u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm); void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite); void TradeMenuBouncePartySprites(struct Sprite *sprite); void DestroyAnimVisualTaskAndDisableBlend(u8 taskId); @@ -181,7 +181,7 @@ enum u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId); bool8 IsBattlerSpritePresent(u8 battlerId); -void ClearBattleAnimBg(u32 bgId); +void ClearBattleAnimBg(u32 arg0); u8 GetAnimBattlerSpriteId(u8 wantedBattler); bool8 IsDoubleBattle(void); u8 GetBattleBgPaletteNum(void); @@ -209,11 +209,11 @@ void AnimTask_HorizontalShake(u8 taskId); void TryShinyAnimation(u8 battler, struct Pokemon *mon); u8 ItemIdToBallId(u16 itemId); u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId); -u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 spritePalNum, u32 selectedPalettes, u8 ballId); +u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId); // battle_anim_utility_funcs.c void InitStatsChangeAnimation(u8); -void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette); +void StartMonScrollingBgMask(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *arg8, const u32 *arg9, const u32 *palette); // battle_anim_effects_1.c void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite); @@ -227,9 +227,9 @@ void AnimWaterPulseRing(struct Sprite *sprite); void DestroyAnimSpriteAfterTimer(struct Sprite *sprite); // battle_anim_smokescreen.c -u8 SmokescreenImpact(s16 x, s16 y, bool8 persist); +u8 SmokescreenImpact(s16 x, s16 y, u8 a3); -u32 UnpackSelectedBattlePalettes(s16); +u32 UnpackSelectedBattleBgPalettes(s16); u8 GetBattlerSpriteFinal_Y(u8, u16, u8); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 5b6ba30bd..9d9fba1b4 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -222,7 +222,7 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId); void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId); void BtlController_EmitYesNoBox(u8 bufferId); void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); -void BtlController_EmitChooseItem(u8 bufferId, u8* battlePartyOrder); +void BtlController_EmitChooseItem(u8 bufferId, u8* arg1); void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8* data); void BtlController_EmitCmd23(u8 bufferId); // unused void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue); @@ -233,11 +233,11 @@ void BtlController_EmitStatusXor(u8 bufferId, u8 b); // unused void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data); void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data); // unused -void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data); // unused -void BtlController_EmitTwoReturnValues(u8 bufferId, u8 ret8, u16 ret16); -void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battlePartyOrder); -void BtlController_EmitOneReturnValue(u8 bufferId, u16 ret); -void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret); +void BtlController_EmitCmd32(u8 bufferId, u16 size, void *c); // unused +void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2); +void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c); +void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1); +void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b); void BtlController_EmitClearUnkVar(u8 bufferId); // unused void BtlController_EmitSetUnkVar(u8 bufferId, u8 b); // unused void BtlController_EmitClearUnkFlag(u8 bufferId); // unused @@ -254,7 +254,7 @@ void BtlController_EmitHidePartyStatusSummary(u8 bufferId); void BtlController_EmitEndBounceEffect(u8 bufferId); void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); -void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 mode, bool32 record); +void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 record); void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId); void BtlController_EmitEndLinkBattle(u8 bufferId, u8 battleOutcome); diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 2a848e3d9..383facd69 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -19,7 +19,7 @@ void DecompressTrainerBackPic(u16 backPicId, u8 battlerId); void BattleGfxSfxDummy3(u8 gender); void FreeTrainerFrontPicPalette(u16 frontPicId); bool8 BattleLoadAllHealthBoxesGfx(u8 state); -void LoadBattleBarGfx(u8 unused); +void LoadBattleBarGfx(u8 arg0); bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId); void ClearSpritesHealthboxAnimData(void); void CopyAllBattleSpritesInvisibilities(void); diff --git a/include/battle_interface.h b/include/battle_interface.h index c4816e8da..3145939d0 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -71,10 +71,10 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority); void InitBattlerHealthboxCoords(u8 battler); void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); void SwapHpBarsWithHpText(void); -u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart); +u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart); void Task_HidePartyStatusSummary(u8 taskId); void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); -s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 unused); +s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 arg3); u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u8 GetHPBarLevel(s16 hp, s16 maxhp); diff --git a/include/battle_setup.h b/include/battle_setup.h index ee2837927..8f78bba3c 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -28,7 +28,7 @@ void BattleSetup_StartLegendaryBattle(void); void StartGroudonKyogreBattle(void); void StartRegiBattle(void); u8 BattleSetup_GetTerrainId(void); -u8 GetSpecialBattleTransition(s32 id); +u8 GetSpecialBattleTransition(s32 arg0); void ChooseStarter(void); void ResetTrainerOpponentIds(void); void SetMapVarsToTrainer(void); diff --git a/include/battle_util.h b/include/battle_util.h index d15d4583e..914e44c04 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -66,7 +66,7 @@ void PressurePPLoseOnUsingPerishSong(u8 attacker); void PressurePPLoseOnUsingImprison(u8 attacker); void MarkAllBattlersForControllerExec(void); // unused void MarkBattlerForControllerExec(u8 battlerId); -void MarkBattlerReceivedLinkData(u8 battlerId); +void MarkBattlerReceivedLinkData(u8 arg0); void CancelMultiTurnMoves(u8 battlerId); bool8 WasUnableToUseMove(u8 battlerId); void PrepareStringBattle(u16 stringId, u8 battlerId); diff --git a/include/constants/battle.h b/include/constants/battle.h index 31bc7fa3f..d87a800e2 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -319,7 +319,7 @@ #define B_WIN_TYPE_NORMAL 0 #define B_WIN_TYPE_ARENA 1 -// Window Ids for sStandardBattleWindowTemplates / sBattleArenaWindowTemplates +// Window Ids for gStandardBattleWindowTemplates / gBattleArenaWindowTemplates #define B_WIN_MSG 0 #define B_WIN_ACTION_PROMPT 1 // "What will {x} do?" #define B_WIN_ACTION_MENU 2 // "Fight/Pokémon/Bag/Run" menu diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 00ad083eb..2ff9318be 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -413,21 +413,4 @@ #define ANIM_WEATHER_SANDSTORM 3 #define ANIM_WEATHER_HAIL 4 -// Flags given to various functions to indicate which palettes to consider. -// Handled by UnpackSelectedBattlePalettes -#define F_PAL_BG (1 << 0) -#define F_PAL_ATTACKER (1 << 1) -#define F_PAL_TARGET (1 << 2) -#define F_PAL_ATK_PARTNER (1 << 3) -#define F_PAL_DEF_PARTNER (1 << 4) -#define F_PAL_ANIM_1 (1 << 5) // Palette set for GetBattleAnimBg1Data/GetBgDataForTransform. Only used (ineffectually?) by Aromatherapy. -#define F_PAL_ANIM_2 (1 << 6) // Palette set for GetBattleAnimBgData/GetBgDataForTransform. Unused. -#define F_PAL_ATK_SIDE (F_PAL_ATTACKER | F_PAL_ATK_PARTNER) -#define F_PAL_DEF_SIDE (F_PAL_TARGET | F_PAL_DEF_PARTNER) -#define F_PAL_BATTLERS (F_PAL_ATK_SIDE | F_PAL_DEF_SIDE) -// The below are only used by AnimTask_BlendBattleAnimPal to get battler sprite palettes by position rather than by role. -// It's redundant with F_PAL_BATTLERS, because they're only ever used together to refer to all the battlers at once. -#define F_PAL_BATTLERS_2 (1 << 7 | 1 << 8 | 1 << 9 | 1 << 10) - - #endif // GUARD_CONSTANTS_BATTLE_ANIM_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 6cfdc7931..b6d15e6b2 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -1,8 +1,6 @@ #ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_H #define GUARD_CONSTANTS_BATTLE_FRONTIER_H -#include "constants/pokemon.h" - #define FRONTIER_CHALLENGE(facility, mode) ((facility << 8) + mode) // Battle Frontier facility ids. @@ -48,14 +46,6 @@ #define MAX_BATTLE_FRONTIER_POINTS 9999 #define MAX_STREAK 9999 -#define FRONTIER_MAX_LEVEL_50 50 -#define FRONTIER_MIN_LEVEL_OPEN 60 -#define FRONTIER_MAX_LEVEL_OPEN MAX_LEVEL - -// This is the default number of battles (or floors, in Battle Pyramid) per challenge. -// There are 2 facilities that differ: Battle Dome (DOME_ROUNDS_COUNT) and Battle Pike (NUM_PIKE_ROOMS). -#define FRONTIER_STAGES_PER_CHALLENGE 7 - // These sets of facility ids would be redundant if the order was consistent // The order is important for this set so that all the non-link records can be continuous #define RANKING_HALL_TOWER_SINGLES 0 diff --git a/include/constants/battle_pike.h b/include/constants/battle_pike.h index eebfd741a..76309436e 100644 --- a/include/constants/battle_pike.h +++ b/include/constants/battle_pike.h @@ -1,8 +1,6 @@ #ifndef GUARD_CONSTANTS_BATTLE_PIKE_H #define GUARD_CONSTANTS_BATTLE_PIKE_H -#define NUM_PIKE_ROOMS 14 - #define PIKE_ROOM_SINGLE_BATTLE 0 #define PIKE_ROOM_HEAL_FULL 1 #define PIKE_ROOM_NPC 2 diff --git a/include/constants/battle_pyramid.h b/include/constants/battle_pyramid.h index 297f3b1ff..ebb753882 100644 --- a/include/constants/battle_pyramid.h +++ b/include/constants/battle_pyramid.h @@ -14,13 +14,6 @@ #define HINT_EXIT_FAR_REMAINING_TRAINERS 7 #define HINT_EXIT_FAR_REMAINING_ITEMS 8 -#define MAX_PYRAMID_TRAINERS 8 - -// Each floor of the Battle Pyramid is 32x32 metatiles, subdivided into a 4x4 grid of 8x8 metatile squares -#define PYRAMID_FLOOR_SQUARES_WIDE 4 -#define PYRAMID_FLOOR_SQUARES_HIGH 4 -#define NUM_PYRAMID_FLOOR_SQUARES (PYRAMID_FLOOR_SQUARES_WIDE * PYRAMID_FLOOR_SQUARES_HIGH) - #define OBJ_TRAINERS 0 #define OBJ_ITEMS 1 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index ae18b61ef..d5d0698b9 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -599,6 +599,4 @@ #define B_MSG_REF_DRAW 7 #define B_MSG_REF_COMMENCE_BATTLE 8 -#define NUM_TRAPPING_MOVES 6 - #endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H diff --git a/include/constants/battle_tent.h b/include/constants/battle_tent.h index 6f9989b7a..666ada6bd 100644 --- a/include/constants/battle_tent.h +++ b/include/constants/battle_tent.h @@ -1,12 +1,6 @@ #ifndef GUARD_CONSTANTS_BATTLE_TENT_H #define GUARD_CONSTANTS_BATTLE_TENT_H -#define TENT_MIN_LEVEL 30 - -// The number of battles in each Battle Tent challenge. -// Battle Tent equivalent of FRONTIER_STAGES_PER_CHALLENGE. -#define TENT_STAGES_PER_CHALLENGE 3 - #define VERDANTURF_TENT_FUNC_INIT 0 #define VERDANTURF_TENT_FUNC_GET_PRIZE 1 #define VERDANTURF_TENT_FUNC_SET_PRIZE 2 diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h old mode 100644 new mode 100755 index 013dfa14d..c3d775714 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -82,7 +82,8 @@ #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP 0x4E #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT 0x4F #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT 0x50 -#define NUM_MOVEMENT_TYPES 0x51 +#define MOVEMENT_TYPE_FOLLOWING_POKEMON 0x51 +#define NUM_MOVEMENT_TYPES 0x52 #define MOVEMENT_ACTION_FACE_DOWN 0x0 #define MOVEMENT_ACTION_FACE_UP 0x1 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index a24c2cd5d..b2b6a2c6c 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -926,11 +926,15 @@ #define TRACKS_NONE 0 #define TRACKS_FOOT 1 #define TRACKS_BIKE_TIRE 2 +#define TRACKS_SLITHER 3 +#define TRACKS_SPOT 4 +#define TRACKS_BUG 5 #define FIRST_DECORATION_SPRITE_GFX OBJ_EVENT_GFX_PICHU_DOLL // Special object event local ids #define OBJ_EVENT_ID_PLAYER 0xFF +#define OBJ_EVENT_ID_FOLLOWER 0xFE #define OBJ_EVENT_ID_CAMERA 0x7F // Object event local ids referenced in C files diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index a62040947..b7195e2bd 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -68,6 +68,9 @@ #define FLDEFF_RAYQUAZA_SPOTLIGHT 64 #define FLDEFF_DESTROY_DEOXYS_ROCK 65 #define FLDEFF_MOVE_DEOXYS_ROCK 66 +#define FLDEFF_TRACKS_SLITHER 67 +#define FLDEFF_TRACKS_SPOT 68 +#define FLDEFF_TRACKS_BUG 69 #define FLDEFFOBJ_SHADOW_S 0 #define FLDEFFOBJ_SHADOW_M 1 @@ -106,6 +109,9 @@ #define FLDEFFOBJ_BUBBLES 34 #define FLDEFFOBJ_SMALL_SPARKLE 35 #define FLDEFFOBJ_RAYQUAZA 36 +#define FLDEFFOBJ_TRACKS_SLITHER 37 +#define FLDEFFOBJ_TRACKS_SPOT 38 +#define FLDEFFOBJ_TRACKS_BUG 39 #define FLDEFF_PAL_TAG_CUT_GRASS 0x1000 #define FLDEFF_PAL_TAG_SECRET_POWER_TREE 0x1003 diff --git a/include/constants/flags.h b/include/constants/flags.h index 8fbc24630..eacb2426d 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1634,7 +1634,7 @@ #define FLAGS_COUNT (DAILY_FLAGS_END + 1) -// Special Flags (Stored in EWRAM (sSpecialFlags), not in the SaveBlock) +// Special Flags (Stored in EWRAM (gSpecialFlags), not in the SaveBlock) #define SPECIAL_FLAGS_START 0x4000 #define FLAG_HIDE_MAP_NAME_POPUP (SPECIAL_FLAGS_START + 0x0) #define FLAG_DONT_TRANSITION_MUSIC (SPECIAL_FLAGS_START + 0x1) diff --git a/include/constants/follow_me.h b/include/constants/follow_me.h new file mode 100644 index 000000000..cc6b044e2 --- /dev/null +++ b/include/constants/follow_me.h @@ -0,0 +1,19 @@ +#ifndef GUARD_CONSTANTS_FOLLOW_ME_H +#define GUARD_CONSTANTS_FOLLOW_ME_H + +#define FOLLOWER_FLAG_HAS_RUNNING_FRAMES 0x1 +#define FOLLOWER_FLAG_CAN_BIKE 0x2 +#define FOLLOWER_FLAG_CAN_LEAVE_ROUTE 0x4 // teleport, dig, fly, etc +#define FOLLOWER_FLAG_CAN_SURF 0x8 +#define FOLLOWER_FLAG_CAN_WATERFALL 0x10 +#define FOLLOWER_FLAG_CAN_DIVE 0x20 +#define FOLLOWER_FLAG_CAN_ROCK_CLIMB 0x40 // need rock climb implemented +#define FOLLOWER_FLAG_CLEAR_ON_WHITE_OUT 0x80 +#define FOLLOWER_FLAG_CUSTOM_FOLLOW_SCRIPT 0x100 // follower has custom script while following (use loadword prior to setfollower) + +#define FOLLOWER_FLAG_ALL_WATER FOLLOWER_FLAG_CAN_SURF | FOLLOWER_FLAG_CAN_WATERFALL | FOLLOWER_FLAG_CAN_DIVE +#define FOLLOWER_FLAG_ALL_LAND FOLLOWER_FLAG_HAS_RUNNING_FRAMES | FOLLOWER_FLAG_CAN_BIKE | FOLLOWER_FLAG_CAN_LEAVE_ROUTE +#define FOLLOWER_FLAG_ALL FOLLOWER_FLAG_ALL_WATER | FOLLOWER_FLAG_ALL_LAND | FOLLOWER_FLAG_CLEAR_ON_WHITE_OUT + + +#endif // GUARD_CONSTANTS_FOLLOW_ME_H diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h index ff10f52ee..3c484e39a 100644 --- a/include/constants/metatile_labels.h +++ b/include/constants/metatile_labels.h @@ -99,7 +99,6 @@ #define METATILE_PetalburgGym_SlidingDoor_Frame2 0x21A #define METATILE_PetalburgGym_SlidingDoor_Frame3 0x21B #define METATILE_PetalburgGym_SlidingDoor_Frame4 0x21C -#define METATILE_PetalburgGym_Door 0x224 // gTileset_MossdeepGym from R/S #define METATILE_RS_MossdeepGym_RedArrow_Right 0x204 @@ -129,6 +128,7 @@ // gTileset_BattleFrontier #define METATILE_BattleFrontier_Door_Elevator 0x20E +#define METATILE_BattleFrontier_Door_Corridor 0x224 #define METATILE_BattleFrontier_Door_MultiCorridor 0x2AD #define METATILE_BattleFrontier_CorridorOpenDoor_Top 0x207 #define METATILE_BattleFrontier_CorridorOpenDoor_Bottom 0x20F diff --git a/include/constants/trainer_hill.h b/include/constants/trainer_hill.h index 371763faf..0e802bba8 100644 --- a/include/constants/trainer_hill.h +++ b/include/constants/trainer_hill.h @@ -8,12 +8,6 @@ #define TRAINER_HILL_ROOF 5 #define TRAINER_HILL_ENTRANCE 6 -#define HILL_MODE_NORMAL 0 -#define HILL_MODE_VARIETY 1 -#define HILL_MODE_UNIQUE 2 -#define HILL_MODE_EXPERT 3 -#define NUM_TRAINER_HILL_MODES 4 - #define NUM_TRAINER_HILL_FLOORS 4 #define NUM_TRAINER_HILL_FLOORS_JP 2 @@ -36,33 +30,20 @@ #define TRAINER_HILL_FUNC_SET_GAME_SAVED 14 #define TRAINER_HILL_FUNC_CLEAR_GAME_SAVED 15 #define TRAINER_HILL_FUNC_GET_WON 16 -#define TRAINER_HILL_FUNC_SET_MODE 17 +#define TRAINER_HILL_FUNC_SET_TAG 17 #define TRAINER_HILL_TEXT_INTRO 2 #define TRAINER_HILL_TEXT_PLAYER_LOST 3 #define TRAINER_HILL_TEXT_PLAYER_WON 4 #define TRAINER_HILL_TEXT_AFTER 5 -#define HILL_TRAINERS_PER_FLOOR 2 -#define NUM_TRAINER_HILL_TRAINERS (NUM_TRAINER_HILL_FLOORS * HILL_TRAINERS_PER_FLOOR) -#define NUM_TRAINER_HILL_TRAINERS_JP (NUM_TRAINER_HILL_FLOORS_JP * HILL_TRAINERS_PER_FLOOR) +#define TRAINER_HILL_TRAINERS_PER_FLOOR 2 +#define NUM_TRAINER_HILL_TRAINERS (NUM_TRAINER_HILL_FLOORS * TRAINER_HILL_TRAINERS_PER_FLOOR) +#define NUM_TRAINER_HILL_TRAINERS_JP (NUM_TRAINER_HILL_FLOORS_JP * TRAINER_HILL_TRAINERS_PER_FLOOR) // Values returned by TrainerHillGetChallengeStatus #define TRAINER_HILL_PLAYER_STATUS_LOST 0 #define TRAINER_HILL_PLAYER_STATUS_ECARD_SCANNED 1 #define TRAINER_HILL_PLAYER_STATUS_NORMAL 2 -#define HILL_TRAINER_NAME_LENGTH 11 - -#define TRAINER_HILL_OTID 0x10000000 - -// The full map of each Trainer Hill floor is 16x21. -// The first 5x21 at the top is the entrance/exit area, -// and the remaining 16x16 is the randomized portion of -// the room where the trainers are. -#define HILL_FLOOR_WIDTH 16 -#define HILL_FLOOR_HEIGHT_MAIN 16 -#define HILL_FLOOR_HEIGHT_MARGIN 5 -#define HILL_FLOOR_HEIGHT (HILL_FLOOR_HEIGHT_MAIN + HILL_FLOOR_HEIGHT_MARGIN) - #endif diff --git a/include/constants/tv.h b/include/constants/tv.h index 87748a31d..4c8dd4fa8 100644 --- a/include/constants/tv.h +++ b/include/constants/tv.h @@ -274,21 +274,4 @@ #define SMARTSHOPPER_NUM_ITEMS 3 -// TV Show states for Bravo Trainer's Battle Tower interview -#define BRAVOTOWER_STATE_INTRO 0 -#define BRAVOTOWER_STATE_NEW_RECORD 1 -#define BRAVOTOWER_STATE_LOST 2 -#define BRAVOTOWER_STATE_WON 3 -#define BRAVOTOWER_STATE_LOST_FINAL 4 -#define BRAVOTOWER_STATE_SATISFIED 5 -#define BRAVOTOWER_STATE_UNSATISFIED 6 -#define BRAVOTOWER_STATE_UNUSED_1 7 -#define BRAVOTOWER_STATE_UNUSED_2 8 -#define BRAVOTOWER_STATE_UNUSED_3 9 -#define BRAVOTOWER_STATE_UNUSED_4 10 -#define BRAVOTOWER_STATE_RESPONSE 11 -#define BRAVOTOWER_STATE_RESPONSE_SATISFIED 12 -#define BRAVOTOWER_STATE_RESPONSE_UNSATISFIED 13 -#define BRAVOTOWER_STATE_OUTRO 14 - #endif //GUARD_CONSTANTS_TV_H diff --git a/include/constants/union_room.h b/include/constants/union_room.h index f47a8723f..6e08c9ebb 100644 --- a/include/constants/union_room.h +++ b/include/constants/union_room.h @@ -11,8 +11,6 @@ #define UNION_ROOM_SPAWN_IN 1 #define UNION_ROOM_SPAWN_OUT 2 -#define UNION_ROOM_MAX_LEVEL 30 - #define ACTIVITY_NONE 0 #define ACTIVITY_BATTLE_SINGLE 1 #define ACTIVITY_BATTLE_DOUBLE 2 diff --git a/include/contest.h b/include/contest.h index d0630a801..e7acb5a11 100644 --- a/include/contest.h +++ b/include/contest.h @@ -324,6 +324,7 @@ extern u16 gSpecialVar_ContestRank; extern u8 gNumLinkContestPlayers; extern u8 gHighestRibbonRank; extern struct ContestResources *gContestResources; +extern u8 sContestBgCopyFlags; extern struct ContestWinner gCurContestWinner; extern u8 gCurContestWinnerIsForArtist; extern u8 gCurContestWinnerSaveIdx; @@ -339,11 +340,11 @@ void SetLinkAIContestants(u8 contestType, u8 rank, bool32 isPostgame); u8 GetContestEntryEligibility(struct Pokemon *pkmn); void CalculateRound1Points(u8 contestCategory); bool8 IsSpeciesNotUnown(u16 species); -bool8 Contest_IsMonsTurnDisabled(u8 contestant); +bool8 Contest_IsMonsTurnDisabled(u8 a); void SaveLinkContestResults(void); -void SortContestants(bool8 useRanking); -void SetContestantEffectStringID(u8 contestant, u8 effectStringId); -void SetContestantEffectStringID2(u8 contestant, u8 effectStringId); +void SortContestants(bool8 a); +void SetContestantEffectStringID(u8 a, u8 b); +void SetContestantEffectStringID2(u8 a, u8 b); void SetStartledString(u8 contestant, u8 jam); void MakeContestantNervous(u8 p); s8 Contest_GetMoveExcitement(u16 move); diff --git a/include/decompress.h b/include/decompress.h index 14906211c..02412defb 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -13,7 +13,7 @@ void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet* src); void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src); -void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer); +void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src); void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species); diff --git a/include/digit_obj_util.h b/include/digit_obj_util.h index 4442fb0ec..aca97e2c7 100644 --- a/include/digit_obj_util.h +++ b/include/digit_obj_util.h @@ -18,9 +18,9 @@ struct DigitObjUtilTemplate bool32 DigitObjUtil_Init(u32 count); void DigitObjUtil_Free(void); bool32 DigitObjUtil_CreatePrinter(u32 id, s32 num, const struct DigitObjUtilTemplate *template); -void DigitObjUtil_PrintNumOn(u32 id, s32 num); +void DigitObjUtil_PrintNumOn(u32 id, s32 arg1); void DigitObjUtil_DeletePrinter(u32 id); -void DigitObjUtil_HideOrShow(u32 id, bool32 hide); +void DigitObjUtil_HideOrShow(u32 id, bool32 arg1); u8 GetTilesPerImage(u32 shape, u32 size); #endif // GUARD_DIGIT_OBJ_UTIL_H diff --git a/include/ereader_helpers.h b/include/ereader_helpers.h index 29386bcb2..8bf3dc43b 100755 --- a/include/ereader_helpers.h +++ b/include/ereader_helpers.h @@ -35,7 +35,7 @@ struct EReaderTrainerHillTrainer { u8 trainerNum; struct TrainerHillTrainer trainer; - struct TrainerHillFloorMap map; + struct TrHillDisplay display; u32 checksum; }; // size=0x274 diff --git a/include/event_data.h b/include/event_data.h index b1fa69460..86b7afea8 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -21,7 +21,7 @@ bool32 CanResetRTC(void); u16 *GetVarPointer(u16 id); u16 VarGet(u16 id); bool8 VarSet(u16 id, u16 value); -u8 VarGetObjectEventGraphicsId(u8 id); +u16 VarGetObjectEventGraphicsId(u8 id); u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); u8 FlagClear(u16 id); diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 5a6dd9c73..3f581f6a9 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -82,6 +82,7 @@ bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *); u8 GetObjectEventIdByXY(s16, s16); void SetObjectEventDirection(struct ObjectEvent *, u8); u8 GetFirstInactiveObjectEventId(void); +void RemoveObjectEvent(struct ObjectEvent *objectEvent); void RemoveObjectEventByLocalIdAndMap(u8, u8, u8); void LoadPlayerObjectReflectionPalette(u16, u8); void LoadSpecialObjectReflectionPalette(u16, u8); @@ -97,14 +98,14 @@ void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); void TrySpawnObjectEvents(s16, s16); u8 CreateObjectGraphicsSprite(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); u8 TrySpawnObjectEvent(u8, u8, u8); -u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); -void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); +void ObjectEventSetGraphicsId(struct ObjectEvent *, u16 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8); void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8); -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId); +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId); void SetObjectInvisibility(u8, u8, u8, bool8); void FreeAndReserveObjectSpritePalettes(void); void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); @@ -193,6 +194,9 @@ void LoadObjectEventPalette(u16 paletteTag); u8 GetObjectEventBerryTreeId(u8 objectEventId); void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup); bool8 IsBerryTreeSparkling(u8, u8, u8); +struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); +u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY); +bool8 ObjectEventPokemonFacePlayer(struct ObjectEvent *, struct ObjectEvent *); void MovementType_None(struct Sprite *); void MovementType_LookAround(struct Sprite *); @@ -249,6 +253,7 @@ void MovementType_JogInPlace(struct Sprite *); void MovementType_RunInPlace(struct Sprite *); void MovementType_Invisible(struct Sprite *); void MovementType_WalkSlowlyInPlace(struct Sprite *); +void MovementType_FollowingPokemon(struct Sprite *); u8 GetSlideMovementAction(u32); u8 GetJumpInPlaceMovementAction(u32); u8 GetJumpMovementAction(u32); @@ -410,13 +415,22 @@ u8 MovementType_RunInPlace_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step2(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowingPokemon_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowingPokemon_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowingPokemon_Step2(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowingPokemon_Step3(struct ObjectEvent *, struct Sprite *); -u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction); +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 direction); void TurnVirtualObject(u8 virtualObjId, u8 direction); -void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId); +void SetVirtualObjectGraphics(u8 virtualObjId, u16 graphicsId); void SetVirtualObjectInvisibility(u8 virtualObjId, bool32 invisible); bool32 IsVirtualObjectInvisible(u8 virtualObjId); void SetVirtualObjectSpriteAnim(u8 virtualObjId, u8 animNum); bool32 IsVirtualObjectAnimating(u8 virtualObjId); +// NEW +u16 GetMiniStepCount(u8 speed); +void RunMiniStep(struct Sprite *sprite, u8 speed, u8 currentFrame); +bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent); + #endif //GUARD_EVENT_OBJECT_MOVEMENT_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 4e0a88f82..a19d4553a 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -21,21 +21,21 @@ extern const u8 gTVBravoTrainerText05[]; extern const u8 gTVBravoTrainerText06[]; extern const u8 gTVBravoTrainerText07[]; extern const u8 gTVBravoTrainerText08[]; -extern const u8 BravoTrainerBattleTower_Text_Intro[]; -extern const u8 BravoTrainerBattleTower_Text_NewRecord[]; -extern const u8 BravoTrainerBattleTower_Text_Lost[]; -extern const u8 BravoTrainerBattleTower_Text_Won[]; -extern const u8 BravoTrainerBattleTower_Text_LostFinal[]; -extern const u8 BravoTrainerBattleTower_Text_Satisfied[]; -extern const u8 BravoTrainerBattleTower_Text_Unsatisfied[]; -extern const u8 BravoTrainerBattleTower_Text_None1[]; -extern const u8 BravoTrainerBattleTower_Text_None2[]; -extern const u8 BravoTrainerBattleTower_Text_None3[]; -extern const u8 BravoTrainerBattleTower_Text_None4[]; -extern const u8 BravoTrainerBattleTower_Text_Response[]; -extern const u8 BravoTrainerBattleTower_Text_ResponseSatisfied[]; -extern const u8 BravoTrainerBattleTower_Text_ResponseUnsatisfied[]; -extern const u8 BravoTrainerBattleTower_Text_Outro[]; +extern const u8 gTVBravoTrainerBattleTowerText00[]; +extern const u8 gTVBravoTrainerBattleTowerText01[]; +extern const u8 gTVBravoTrainerBattleTowerText02[]; +extern const u8 gTVBravoTrainerBattleTowerText03[]; +extern const u8 gTVBravoTrainerBattleTowerText04[]; +extern const u8 gTVBravoTrainerBattleTowerText05[]; +extern const u8 gTVBravoTrainerBattleTowerText06[]; +extern const u8 gTVBravoTrainerBattleTowerText07[]; +extern const u8 gTVBravoTrainerBattleTowerText08[]; +extern const u8 gTVBravoTrainerBattleTowerText09[]; +extern const u8 gTVBravoTrainerBattleTowerText10[]; +extern const u8 gTVBravoTrainerBattleTowerText11[]; +extern const u8 gTVBravoTrainerBattleTowerText12[]; +extern const u8 gTVBravoTrainerBattleTowerText13[]; +extern const u8 gTVBravoTrainerBattleTowerText14[]; extern const u8 gTVFanClubOpinionsText00[]; extern const u8 gTVFanClubOpinionsText01[]; extern const u8 gTVFanClubOpinionsText02[]; diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h index eab5c6eb7..61051c69a 100644 --- a/include/evolution_graphics.h +++ b/include/evolution_graphics.h @@ -3,7 +3,7 @@ void LoadEvoSparkleSpriteAndPal(void); -u8 EvolutionSparkles_SpiralUpward(u16 palNum); +u8 EvolutionSparkles_SpiralUpward(u16 arg0); u8 EvolutionSparkles_ArcDown(void); u8 EvolutionSparkles_CircleInward(void); u8 EvolutionSparkles_SprayAndFlash(u16 species); diff --git a/include/field_camera.h b/include/field_camera.h index 6e8af1a53..b245fca84 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -17,14 +17,14 @@ extern u16 gTotalCameraPixelOffsetY; void DrawWholeMapView(void); void CurrentMapDrawMetatileAt(int x, int y); -void GetCameraOffsetWithPan(s16 *x, s16 *y); +void GetCameraOffsetWithPan(s16 *a0, s16 *a1); void DrawDoorMetatileAt(int x, int y, u16 *arr); void ResetFieldCamera(void); void ResetCameraUpdateInfo(void); -u32 InitCameraUpdateCallback(u8 trackedSpriteId); +u32 InitCameraUpdateCallback(u8 a); void CameraUpdate(void); -void SetCameraPanningCallback(void (*callback)(void)); -void SetCameraPanning(s16 horizontal, s16 vertical); +void SetCameraPanningCallback(void (*a)(void)); +void SetCameraPanning(s16 a, s16 b); void InstallCameraPanAheadCallback(void); void UpdateCameraPanning(void); void FieldUpdateBgTilemapScroll(void); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 2bf2df269..21fa37fe6 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -3,46 +3,46 @@ void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys); void ClearPlayerAvatarInfo(void); -void SetPlayerAvatarExtraStateTransition(u8, u8); -u8 GetPlayerAvatarGenderByGraphicsId(u8); +void SetPlayerAvatarExtraStateTransition(u16, u8); +u8 GetPlayerAvatarGenderByGraphicsId(u16); bool8 TestPlayerAvatarFlags(u8); u8 GetPlayerAvatarSpriteId(void); void PlayerGetDestCoords(s16 *, s16 *); u8 GetPlayerFacingDirection(void); u8 GetPlayerMovementDirection(void); u8 PlayerGetCopyableMovement(void); -void PlayerWalkNormal(u8 direction); -void PlayerWalkFast(u8 direction); -void PlayerRideWaterCurrent(u8 direction); -void PlayerWalkFaster(u8 direction); -void PlayerOnBikeCollide(u8 direction); -void PlayerFaceDirection(u8 direction); -void PlayerTurnInPlace(u8 direction); -void PlayerJumpLedge(u8 direction); -void PlayerIdleWheelie(u8 direction); -void PlayerStartWheelie(u8 direction); -void PlayerEndWheelie(u8 direction); -void PlayerStandingHoppingWheelie(u8 direction); -void PlayerMovingHoppingWheelie(u8 direction); -void PlayerLedgeHoppingWheelie(u8 direction); -void PlayerAcroTurnJump(u8 direction); -void PlayerSetAnimId(u8 movementActionId, u8 copyableMovement); +void PlayerWalkNormal(u8); +void PlayerWalkFast(u8); +void PlayerRideWaterCurrent(u8); +void PlayerWalkFaster(u8); +void PlayerOnBikeCollide(u8); +void PlayerFaceDirection(u8 a); +void PlayerTurnInPlace(u8 a); +void PlayerJumpLedge(u8 a); +void PlayerIdleWheelie(u8 a); +void PlayerStartWheelie(u8 a); +void PlayerEndWheelie(u8 a); +void PlayerStandingHoppingWheelie(u8 a); +void PlayerMovingHoppingWheelie(u8 a); +void PlayerLedgeHoppingWheelie(u8 a); +void PlayerAcroTurnJump(u8 a); +void PlayerSetAnimId(u8 a, u8 b); bool8 IsPlayerCollidingWithFarawayIslandMew(u8 direction); void PlayerOnBikeCollideWithFarawayIslandMew(u8 direction); -u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior); +u8 CheckForObjectEventCollision(struct ObjectEvent *a, s16 b, s16 c, u8 d, u8 e); u8 PlayerGetElevation(void); -void SetPlayerAvatarTransitionFlags(u16 transitionFlags); +void SetPlayerAvatarTransitionFlags(u16 a); void CancelPlayerForcedMovement(void); -void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender); +void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d); void PlayerFreeze(void); void StopPlayerAvatar(void); void SetSpinStartFacingDir(u8); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); -u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8); +u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8); void SetPlayerAvatarFieldMove(void); -u8 GetPlayerAvatarGraphicsIdByCurrentState(void); -void SetPlayerAvatarStateMask(u8 flags); -u8 GetPlayerAvatarGraphicsIdByStateId(u8 state); +u16 GetPlayerAvatarGraphicsIdByCurrentState(void); +void SetPlayerAvatarStateMask(u8 a); +u16 GetPlayerAvatarGraphicsIdByStateId(u8 a); u8 GetJumpSpecialMovementAction(u32); bool8 PartyHasMonWithSurf(void); bool8 IsPlayerFacingSurfableFishableWater(void); @@ -50,8 +50,8 @@ bool8 IsPlayerSurfingNorth(void); void SetPlayerAvatarWatering(u8 direction); u8 GetPlayerAvatarFlags(void); void UpdatePlayerAvatarTransitionState(void); -u8 GetFRLGAvatarGraphicsIdByGender(u8); -u8 GetRSAvatarGraphicsIdByGender(u8); +u16 GetFRLGAvatarGraphicsIdByGender(u8); +u16 GetRSAvatarGraphicsIdByGender(u8); void PlayerWheelieInPlace(u8 direction); void PlayerWheelieMove(u8 direction); void PlayerPopWheelieWhileMoving(u8 direction); diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index 6dc9b077d..da00481d3 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -41,5 +41,7 @@ void DoOrbEffect(void); void FadeOutOrbEffect(void); void WriteFlashScanlineEffectBuffer(u8 flashLevel); bool8 IsPlayerStandingStill(void); +void SetPlayerVisibility(bool8 visible); +void Task_WarpAndLoadMap(u8 taskId); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/field_special_scene.h b/include/field_special_scene.h index 111723c83..3f701f41b 100644 --- a/include/field_special_scene.h +++ b/include/field_special_scene.h @@ -1,8 +1,14 @@ #ifndef GUARD_FIELD_SPECIAL_SCENE_H #define GUARD_FIELD_SPECIAL_SCENE_H +s16 GetTruckCameraBobbingY(int a1); +s16 GetTruckBoxMovement(int a1); +void Task_Truck1(u8 taskId); +void Task_Truck2(u8 taskId); +void Task_Truck3(u8 taskId); +void Task_HandleTruckSequence(u8 taskId); void ExecuteTruckSequence(void); -void EndTruckSequence(u8 taskId); +void EndTruckSequence(u8); void FieldCB_ShowPortholeView(void); #endif // GUARD_FIELD_SPECIAL_SCENE_H diff --git a/include/field_specials.h b/include/field_specials.h index faf71e9c0..2eefed69e 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -5,6 +5,7 @@ extern bool8 gBikeCyclingChallenge; extern u8 gBikeCollisions; u8 GetLeadMonIndex(void); +u8 GetLeadMonNotFaintedIndex(void); u8 IsDestinationBoxFull(void); u16 GetPCBoxToSendMon(void); bool8 InMultiPartnerRoom(void); diff --git a/include/fldeff.h b/include/fldeff.h index 0ad0e3d60..b7a1dc25d 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -25,8 +25,8 @@ void ChooseMonForSoftboiled(u8 taskId); // flash bool8 SetUpFieldMove_Flash(void); void CB2_DoChangeMap(void); -bool8 GetMapPairFadeToType(u8 _fromType, u8 _toType); -bool8 GetMapPairFadeFromType(u8 _fromType, u8 _toType); +bool8 GetMapPairFadeToType(u8 a1, u8 a2); +bool8 GetMapPairFadeFromType(u8 a1, u8 a2); // strength bool8 SetUpFieldMove_Strength(void); @@ -45,7 +45,7 @@ bool8 SetUpFieldMove_Dig(void); bool8 FldEff_UseDig(void); // rock smash -bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); +bool8 CheckObjectGraphicsInFrontOfPlayer(u16 graphicsId); u8 CreateFieldMoveTask(void); bool8 SetUpFieldMove_RockSmash(void); bool8 FldEff_UseRockSmash(void); diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h index 61078466d..4acca7944 100644 --- a/include/fldeff_misc.h +++ b/include/fldeff_misc.h @@ -1,8 +1,8 @@ #ifndef GUARD_FLDEFF_MISC_H #define GUARD_FLDEFF_MISC_H -void ComputerScreenOpenEffect(u16 increment, u16 unused, u8 priority); -void ComputerScreenCloseEffect(u16 increment, u16 unused, u8 priority); +void ComputerScreenOpenEffect(u16 a0, u16 a1, u8 a2); +void ComputerScreenCloseEffect(u16 a0, u16 a1, u8 a2); bool8 IsComputerScreenOpenEffectActive(void); bool8 IsComputerScreenCloseEffectActive(void); bool8 SetUpFieldMove_SecretPower(void); @@ -22,7 +22,7 @@ void PlaySecretBaseMusicNoteMatSound(s16 metatileId); void DoSecretBaseGlitterMatSparkle(void); bool8 FldEff_SandPillar(void); void InteractWithShieldOrTVDecoration(void); -bool8 IsLargeBreakableDecoration(u16 metatileId, bool8 checkBase); +bool8 IsLargeBreakableDecoration(u16 arg0, u8 arg1); void FldEffPoison_Start(void); bool32 FldEffPoison_IsActive(void); void DoWateringBerryTreeAnim(void); diff --git a/include/follow_me.h b/include/follow_me.h new file mode 100644 index 000000000..1affb31f0 --- /dev/null +++ b/include/follow_me.h @@ -0,0 +1,58 @@ +#ifndef GUARD_FOLLOW_ME_H +#define GUARD_FOLLOW_ME_H + +#include "constants/follow_me.h" + +#define DEFAULT_FOLLOWER_LOCAL_ID 0xFE + +#define MOVEMENT_INVALID 0xFE + +enum FollowerSpriteTypes +{ + FOLLOWER_SPRITE_INDEX_NORMAL, + FOLLOWER_SPRITE_INDEX_MACH_BIKE, + FOLLOWER_SPRITE_INDEX_ACRO_BIKE, + FOLLOWER_SPRITE_INDEX_SURF, + FOLLOWER_SPRITE_INDEX_UNDERWATER, +}; + +// Exported Functions +void SetUpFollowerSprite(u8 localId, u16 flags); +void DestroyFollower(void); +void PlayerFaceFollowerSprite(void); +void CheckPlayerHasFollower(void); +bool8 FollowerComingThroughDoor(void); + +u8 GetFollowerObjectId(void); +u8 GetFollowerLocalId(void); +const u8* GetFollowerScriptPointer(void); +void HideFollower(void); +void TryFreezeFollowerAnim(struct ObjectEvent* npc); +void IsFollowerStoppingRockClimb(void); +void FollowMe_SetIndicatorToComeOutDoor(void); +void FollowMe_SetIndicatorToRecreateSurfBlob(void); +void FollowMe_TryRemoveFollowerOnWhiteOut(void); +void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive); +void FollowMe_Ledges(struct ObjectEvent* npc, struct Sprite* obj, u16* ledgeFramesTbl); +bool8 FollowMe_IsCollisionExempt(struct ObjectEvent* obstacle, struct ObjectEvent* collider); +void FollowMe_FollowerToWater(void); +void FollowMe_BindToSurbBlobOnReloadScreen(void); +void PrepareFollowerDismountSurf(void); +void StairsMoveFollower(void); +void FollowMe_HandleBike(void); +void FollowMe_HandleSprite(void); +void FollowMe_WarpSetEnd(void); +void CreateFollowerAvatar(void); +void EscalatorMoveFollower(u8 movementType); +void EscalatorMoveFollowerFinish(void); +bool8 FollowerCanBike(void); +bool8 CheckFollowerFlag(u16 flag); +void FollowerPositionFix(u8 offset); +void SetFollowerSprite(u8 spriteIndex); +bool8 PlayerHasFollower(void); + +// moved from field_screen_effect.c +void Task_DoDoorWarp(u8 taskId); +bool8 IsPlayerOnFoot(void); + +#endif //GUARD_FOLLOW_ME_H diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index 40a25ba05..a057c2da6 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -423,7 +423,7 @@ void Clear64byte(void *addr); void SoundInit(struct SoundInfo *soundInfo); void MPlayExtender(struct CgbChannel *cgbChans); void m4aSoundMode(u32 mode); -void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tracks, u8 trackCount); +void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track, u8 a3); void CgbSound(void); void CgbOscOff(u8); void CgbModVol(struct CgbChannel *chan); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 974fa3382..98570f60d 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -66,8 +66,8 @@ struct BackupMapLayout struct ObjectEventTemplate { /*0x00*/ u8 localId; - /*0x01*/ u8 graphicsId; /*0x02*/ u8 inConnection; // Leftover from FRLG + u16 graphicsId; /*0x04*/ s16 x; /*0x06*/ s16 y; /*0x08*/ u8 elevation; @@ -192,8 +192,9 @@ struct ObjectEvent u32 disableJumpLandingGroundEffect:1; u32 fixedPriority:1; u32 hideReflection:1; + int :0; /*0x04*/ u8 spriteId; - /*0x05*/ u8 graphicsId; + /*0x05*/ u16 graphicsId; /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; /*0x08*/ u8 localId; diff --git a/include/global.h b/include/global.h index 64af518ce..0dc1d4bd4 100644 --- a/include/global.h +++ b/include/global.h @@ -14,7 +14,6 @@ #include "constants/maps.h" #include "constants/pokemon.h" #include "constants/easy_chat.h" -#include "constants/trainer_hill.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); @@ -135,10 +134,6 @@ #define NUM_FLAG_BYTES ROUND_BITS_TO_BYTES(FLAGS_COUNT) #define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES) -// This produces an error at compile-time if expr is zero. -// It looks like file.c:line: size of array `id' is negative -#define STATIC_ASSERT(expr, id) typedef char id[(expr) ? 1 : -1]; - struct Coords8 { s8 x; @@ -284,6 +279,8 @@ struct BattleTowerPokemon u8 friendship; }; +#define NULL_BATTLE_TOWER_POKEMON { .nickname = __("$$$$$$$$$$$") } + struct EmeraldBattleTowerRecord { /*0x00*/ u8 lvlMode; // 0 = level 50, 1 = level 100 @@ -409,7 +406,7 @@ struct BattleFrontier /*0xE1A*/ u16 pyramidWinStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE1E*/ u16 pyramidRecordStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE22*/ u16 pyramidRandoms[4]; - /*0xE2A*/ u8 pyramidTrainerFlags; // 1 bit for each trainer (MAX_PYRAMID_TRAINERS) + /*0xE2A*/ u8 pyramidTrainerFlags; /*0xE2C*/ struct PyramidBag pyramidBag; /*0xE68*/ u8 pyramidLightRadius; /*0xE6A*/ u16 verdanturfTentPrize; @@ -460,6 +457,31 @@ struct RankingHall1P u8 language; }; +// follow me +struct FollowerMapData +{ + /*0x0*/ u8 id; + /*0x1*/ u8 number; + /*0x2*/ u8 group; +}; /* size = 0x4 */ +struct Follower +{ + /*0x00*/ u8 inProgress:1; + u8 warpEnd:1; + u8 createSurfBlob:3; + u8 comeOutDoorStairs:3; + /*0x01*/ u8 objId; + /*0x02*/ u8 currentSprite; + /*0x03*/ u8 delayedState; + /*0x04*/ struct FollowerMapData map; + /*0x08*/ struct Coords16 log; + /*0x0C*/ const u8* script; + /*0x10*/ u16 flag; + /*0x12*/ u16 graphicsId; + /*0x14*/ u16 flags; + /*0x15*/ u8 locked; +}; /* size = 0x18 */ + struct RankingHall2P { u8 id1[TRAINER_ID_LENGTH]; @@ -502,6 +524,7 @@ struct SaveBlock2 /*0x57C*/ struct RankingHall2P hallRecords2P[FRONTIER_LVL_MODE_COUNT][HALL_RECORDS_COUNT]; // From record mixing. /*0x624*/ u16 contestLinkResults[CONTEST_CATEGORIES_COUNT][CONTESTANT_COUNT]; /*0x64C*/ struct BattleFrontier frontier; + struct Follower follower; }; // sizeof=0xF2C extern struct SaveBlock2 *gSaveBlock2Ptr; @@ -811,7 +834,7 @@ struct TrainerNameRecord u8 trainerName[PLAYER_NAME_LENGTH + 1]; }; -struct TrainerHillSave +struct SaveTrainerHill { /*0x3D64*/ u32 timer; /*0x3D68*/ u32 bestTime; @@ -823,7 +846,7 @@ struct TrainerHillSave /*0x3D6E*/ u16 hasLost:1; /*0x3D6E*/ u16 maybeECardScanDuringChallenge:1; /*0x3D6E*/ u16 field_3D6E_0f:1; - /*0x3D6E*/ u16 mode:2; // HILL_MODE_* + /*0x3D6E*/ u16 tag:2; }; struct WonderNewsMetadata @@ -1006,7 +1029,7 @@ struct SaveBlock1 /*0x31F8*/ struct EnigmaBerry enigmaBerry; /*0x322C*/ struct MysteryGiftSave mysteryGift; /*0x3598*/ u8 unused_3598[0x180]; - /*0x3718*/ u32 trainerHillTimes[NUM_TRAINER_HILL_MODES]; + /*0x3718*/ u32 trainerHillTimes[4]; /*0x3728*/ struct RamScript ramScript; /*0x3B14*/ struct RecordMixingGift recordMixingGift; /*0x3B24*/ u8 seen2[NUM_DEX_FLAG_BYTES]; @@ -1014,7 +1037,7 @@ struct SaveBlock1 /*0x3B98*/ struct TrainerNameRecord trainerNameRecords[20]; /*0x3C88*/ u8 registeredTexts[UNION_ROOM_KB_ROW_COUNT][21]; /*0x3D5A*/ u8 unused_3D5A[10]; - /*0x3D64*/ struct TrainerHillSave trainerHill; + /*0x3D64*/ struct SaveTrainerHill trainerHill; /*0x3D70*/ struct WaldaPhrase waldaPhrase; // sizeof: 0x3D88 }; diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h index c6f4a73c5..bed30ffe8 100644 --- a/include/intro_credits_graphics.h +++ b/include/intro_credits_graphics.h @@ -33,11 +33,11 @@ extern const struct CompressedSpriteSheet gSpriteSheet_CreditsRivalBrendan[]; extern const struct CompressedSpriteSheet gSpriteSheet_CreditsRivalMay[]; extern const struct SpritePalette gSpritePalettes_Credits[]; -void LoadIntroPart2Graphics(u8 scenery); -void SetIntroPart2BgCnt(u8 scenery); +void LoadIntroPart2Graphics(u8 scene); +void SetIntroPart2BgCnt(u8 a); void LoadCreditsSceneGraphics(u8); void SetCreditsSceneBgCnt(u8); -u8 CreateBicycleBgAnimationTask(u8 mode, u16 bg1Speed, u16 bg2Speed, u16 bg3Speed); +u8 CreateBicycleBgAnimationTask(u8 a, u16 b, u16 c, u16 d); void CycleSceneryPalette(u8); u8 CreateIntroBrendanSprite(s16 x, s16 y); u8 CreateIntroMaySprite(s16 x, s16 y); diff --git a/include/link.h b/include/link.h index 120c25784..96a76e120 100644 --- a/include/link.h +++ b/include/link.h @@ -300,7 +300,7 @@ void LocalLinkPlayerToBlock(void); void LinkPlayerFromBlock(u32 who); bool32 Link_AnyPartnersPlayingFRLG_JP(void); void ResetLinkPlayerCount(void); -void SaveLinkPlayers(u8 playerCount); +void SaveLinkPlayers(u8 a0); void SetWirelessCommType0(void); bool32 IsLinkRecvQueueAtOverworldMax(void); diff --git a/include/list_menu.h b/include/list_menu.h index e70a92bab..1c18f3dff 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -98,9 +98,9 @@ struct CursorStruct extern struct ScrollArrowsTemplate gTempScrollArrowTemplate; extern struct ListMenuTemplate gMultiuseListMenuTemplate; -s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 drawMode, u16 tileNum, u16 palNum); +s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow); -u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow); +u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *arg1, u16 scrollOffset, u16 selectedRow); s32 ListMenu_ProcessInput(u8 listTaskId); void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow); void RedrawListMenu(u8 listTaskId); @@ -111,10 +111,10 @@ void ListMenuGetCurrentItemArrayId(u8 listTaskId, u16 *arrayId); void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow); u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId); void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal); -void ListMenuDefaultCursorMoveFunc(s32 itemIndex, u8 onInit, struct ListMenu *list); +void ListMenuDefaultCursorMoveFunc(s32 arg0, u8 arg1, struct ListMenu *list); s32 ListMenuGetUnkIndicatorsStructFields(u8 taskId, u8 field); void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value); -u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 *scrollOffset); +u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 *arg1); u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *currItemPtr); void RemoveScrollIndicatorArrowPair(u8 taskId); void Task_ScrollIndicatorArrowPairOnMainMenu(u8 taskId); diff --git a/include/main_menu.h b/include/main_menu.h index 5f92719d5..1944f4ecc 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -2,6 +2,6 @@ #define GUARD_MAIN_MENU_H void CB2_InitMainMenu(void); -void CreateYesNoMenuParameterized(u8 x, u8 y, u16 baseTileNum, u16 baseBlock, u8 yesNoPalNum, u8 winPalNum); +void CreateYesNoMenuParameterized(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f); #endif // GUARD_MAIN_MENU_H diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h index 9e5986ee8..b22294f1b 100644 --- a/include/mauville_old_man.h +++ b/include/mauville_old_man.h @@ -7,8 +7,8 @@ void SetMauvilleOldMan(void); u8 GetCurrentMauvilleOldMan(void); void SetMauvilleOldManObjEventGfx(void); void SanitizeMauvilleOldManForRuby(OldMan *dest); -void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 version, u32 language); -void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 version, u32 language); +void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 r1, u32 r6); +void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 unused, u32 a2); void ResetMauvilleOldManFlag(void); #endif // GUARD_MAUVILLE_OLD_MAN_H diff --git a/include/menu.h b/include/menu.h index c38e87cbd..bf3f56aea 100644 --- a/include/menu.h +++ b/include/menu.h @@ -56,9 +56,9 @@ void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram); void DisplayYesNoMenuDefaultYes(void); u32 GetPlayerTextSpeed(void); u8 GetPlayerTextSpeedDelay(void); -void Menu_LoadStdPalAt(u16 offset); -void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, void (*callback)(struct TextPrinterTemplate *, u16)); -void BgDmaFill(u32 bg, u8 value, int offset, int size); +void Menu_LoadStdPalAt(u16 arg0); +void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16)); +void BgDmaFill(u32 bg, u8 a1, int a2, int a3); void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str); void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); @@ -69,7 +69,7 @@ u8 InitMenuInUpperLeftCornerNormal(u8 windowId, u8 numItems, u8 initialCursorPos u8 Menu_GetCursorPos(void); s8 Menu_ProcessInput(void); s8 Menu_ProcessInputNoWrap(void); -void BlitMenuInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y); +void BlitMenuInfoIcon(u8 winId, u8 a2, u16 x, u16 y); void ResetTempTileDataBuffers(void); void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); bool8 FreeTempTileDataBuffersIfPossible(void); @@ -81,14 +81,14 @@ s8 ProcessMenuInput_other(void); void DoScheduledBgTilemapCopiesToVram(void); void ClearScheduledBgCopiesToVram(void); void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str); -void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum); +void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 a2, u8 a3); void PrintMenuActionTextsInUpperLeftCorner(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds); void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram); void *malloc_and_decompress(const void *src, u32 *sizeOut); u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode); void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress); -void PrintMenuActionTexts(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions, const u8 *actionIds); -void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 horizontalCount, u8 verticalCount, const struct MenuAction *menuActions, const u8 *actionIds); +void PrintMenuActionTexts(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8); +void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8); u8 InitMenuActionGrid(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos); u8 ChangeMenuGridCursorPosition(s8 deltaX, s8 deltaY); u8 GetStartMenuWindowId(void); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index f9a418a93..0e063e5c1 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -18,11 +18,11 @@ struct YesNoFuncTable void ResetVramOamAndBgCntRegs(void); void ResetAllBgsCoordinates(void); void SetVBlankHBlankCallbacksToNull(void); -void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); +void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); bool16 RunTextPrintersRetIsActive(u8 textPrinterId); void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data); -void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 unused1, u8 unused2, u8 unused3, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); -bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max); +void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); +bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1); u8 GetLRKeysPressed(void); u8 GetLRKeysPressedAndHeld(void); bool8 IsHoldingItemAllowed(u16 itemId); diff --git a/include/menu_specialized.h b/include/menu_specialized.h index 10a211046..d1e30d4d6 100644 --- a/include/menu_specialized.h +++ b/include/menu_specialized.h @@ -95,7 +95,7 @@ void ConditionGraph_Draw(struct ConditionGraph *graph); bool8 ConditionGraph_TryUpdate(struct ConditionGraph *graph); void ConditionGraph_Update(struct ConditionGraph *graph); void ConditionGraph_CalcPositions(u8 *conditions, struct UCoords16 *positions); -void ConditionGraph_SetNewPositions(struct ConditionGraph *graph, struct UCoords16 *old, struct UCoords16 *new); +void ConditionGraph_SetNewPositions(struct ConditionGraph *graph, struct UCoords16 *arg1, struct UCoords16 *arg2); // Condition menu bool8 ConditionMenu_UpdateMonEnter(struct ConditionGraph *graph, s16 *x); diff --git a/include/overworld.h b/include/overworld.h index e920da21a..b50367cfa 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -77,7 +77,7 @@ void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpId); void SetDynamicWarp(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId); void SetDynamicWarpWithCoords(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void SetWarpDestinationToDynamicWarp(u8 unused); -void SetWarpDestinationToHealLocation(u8 healLocationId); +void SetWarpDestinationToHealLocation(u8 a1); void SetWarpDestinationToLastHealLocation(void); void SetLastHealLocationWarp(u8 healLocationId); void UpdateEscapeWarp(s16 x, s16 y); @@ -86,7 +86,7 @@ void SetWarpDestinationToEscapeWarp(void); void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y); -void SetContinueGameWarpToHealLocation(u8 healLocationId); +void SetContinueGameWarpToHealLocation(u8 a1); void SetContinueGameWarpToDynamicWarp(int unused); const struct MapConnection *GetMapConnection(u8 dir); bool8 SetDiveWarpEmerge(u16 x, u16 y); @@ -130,7 +130,7 @@ void CB1_Overworld(void); void CB2_OverworldBasic(void); void CB2_Overworld(void); void SetMainCallback1(void (*cb)(void)); -void SetUnusedCallback(void *func); +void SetUnusedCallback(void *a0); void CB2_NewGame(void); void CB2_WhiteOut(void); void CB2_LoadMap(void); diff --git a/include/pokeball.h b/include/pokeball.h index 1149791b8..297788db1 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -34,8 +34,8 @@ extern const struct SpriteTemplate gBallSpriteTemplates[]; #define POKEBALL_OPPONENT_SENDOUT 0xFE u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); -void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 delay, u32 fadePalettes, u16 species); -u8 CreateTradePokeballSprite(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 delay, u32 fadePalettes); +void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battler, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species); +u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); void StartHealthboxSlideIn(u8 battler); void DoHitAnimHealthboxEffect(u8 battler); void LoadBallGfx(u8 ballId); diff --git a/include/pokemon.h b/include/pokemon.h index d173387fb..8039a4fdd 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -212,8 +212,8 @@ struct BaseStats /* 0x0A */ u16 evYield_Speed:2; /* 0x0B */ u16 evYield_SpAttack:2; /* 0x0B */ u16 evYield_SpDefense:2; - /* 0x0C */ u16 itemCommon; - /* 0x0E */ u16 itemRare; + /* 0x0C */ u16 item1; + /* 0x0E */ u16 item2; /* 0x10 */ u8 genderRatio; /* 0x11 */ u8 eggCycles; /* 0x12 */ u8 friendship; @@ -337,7 +337,7 @@ u8 GetBoxMonGender(struct BoxPokemon *boxMon); u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality); void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition); void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition); -void SetMultiuseSpriteTemplateToTrainerFront(u16 trainerPicId, u8 battlerPosition); +void SetMultiuseSpriteTemplateToTrainerFront(u16 arg0, u8 battlerPosition); // These are full type signatures for GetMonData() and GetBoxMonData(), // but they are not used since some code erroneously omits the third arg. @@ -381,11 +381,11 @@ u16 SpeciesToNationalPokedexNum(u16 species); u16 SpeciesToHoennPokedexNum(u16 species); u16 HoennToNationalOrder(u16 hoennNum); u16 SpeciesToCryId(u16 species); -void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, bool8 isFrontPic); +void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); u8 GetPlayerFlankId(void); u16 GetLinkTrainerFlankId(u8 id); -s32 GetBattlerMultiplayerId(u16 id); +s32 GetBattlerMultiplayerId(u16 a1); u8 GetTrainerEncounterMusicId(u16 trainerOpponentId); u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex); void AdjustFriendship(struct Pokemon *mon, u8 event); @@ -426,8 +426,8 @@ void SetWildMonHeldItem(void); bool8 IsMonShiny(struct Pokemon *mon); bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); const u8 *GetTrainerPartnerName(void); -void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 panMode); -void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 panModeAnimFlag); +void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); +void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneFrame); void StopPokemonAnimationDelayTask(void); void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index eb25c0ff2..b7fca2331 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -26,7 +26,7 @@ struct PokemonStorage extern struct PokemonStorage *gPokemonStoragePtr; -void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, s32 bytesToBuffer); +void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 bytesToBuffer); u8 CountMonsInBox(u8 boxId); s16 GetFirstFreeBoxSpot(u8 boxId); u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore); @@ -52,7 +52,7 @@ void ZeroBoxMonAt(u8 boxId, u8 boxPosition); void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon *dst); struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 boxPosition); u8 *GetBoxNamePtr(u8 boxId); -s16 AdvanceStorageMonIndex(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 mode); +s16 AdvanceStorageMonIndex(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3); bool8 CheckFreePokemonStorageSpace(void); bool32 CheckBoxMonSanityAt(u32 boxId, u32 boxPosition); u32 CountStorageNonEggMons(void); diff --git a/include/pokenav.h b/include/pokenav.h index 593c68489..d3edb1422 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -356,10 +356,10 @@ void MatchCall_GetNameAndDesc(u32 idx, const u8 **desc, const u8 **name); // pokenav_main_menu.c bool32 InitPokenavMainMenu(void); void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size); -void RunMainMenuLoopedTask(u32 state); +void RunMainMenuLoopedTask(u32 a0); u32 IsActiveMenuLoopTaskActive(void); -void LoadLeftHeaderGfxForIndex(u32 menuGfxId); -void ShowLeftHeaderGfx(u32 menugfxId, bool32 isMain, bool32 isOnRightSide); +void LoadLeftHeaderGfxForIndex(u32 arg0); +void ShowLeftHeaderGfx(u32 menugfxId, bool32 arg1, bool32 isOnRightSide); void PokenavFadeScreen(s32 fadeType); bool32 AreLeftHeaderSpritesMoving(void); void InitBgTemplates(const struct BgTemplate *templates, int count); @@ -373,7 +373,7 @@ void PokenavCopyPalette(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u1 void FadeToBlackExceptPrimary(void); struct Sprite *GetSpinningPokenavSprite(void); void HideSpinningPokenavSprite(void); -void UpdateRegionMapRightHeaderTiles(u32 menuGfxId); +void UpdateRegionMapRightHeaderTiles(u32 arg0); void HideMainOrSubMenuLeftHeader(u32 id, bool32 onRightSide); void SlideMenuHeaderUp(void); void PokenavFillPalette(u32 palIndex, u16 fillValue); @@ -412,13 +412,13 @@ int GetNumberRegistered(void); struct PokenavMatchCallEntry *GetMatchCallList(void); u16 GetMatchCallMapSec(int); bool32 ShouldDrawRematchPokeballIcon(int index); -void ClearRematchPokeballIcon(u16 windowId, u32 tileOffset); +void ClearRematchPokeballIcon(u16 windowId, u32 a1); int GetMatchCallTrainerPic(int index); const u8 *GetMatchCallFlavorText(int index, int textType); const u8 *GetMatchCallMessageText(int index, bool8 *newRematchRequest); u16 GetMatchCallOptionCursorPos(void); -u16 GetMatchCallOptionId(int optionId); -void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntry *matchCallEntry, u8 *str); +u16 GetMatchCallOptionId(int arg0); +void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntry * arg0, u8 *str); u8 GetMatchTableMapSectionId(int rematchIndex); int GetIndexDeltaOfNextCheckPageDown(int index); int GetIndexDeltaOfNextCheckPageUp(int index); diff --git a/include/region_map.h b/include/region_map.h index 85793badc..02d711afa 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -99,7 +99,7 @@ u8 DoRegionMapInputCallback(void); bool8 UpdateRegionMapZoom(void); void FreeRegionMapIconResources(void); u16 GetRegionMapSecIdAt(u16 x, u16 y); -void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag); +void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); bool32 IsEventIslandMapSecId(u8 mapSecId); u8 *GetMapName(u8 *, u16, u16); diff --git a/include/scanline_effect.h b/include/scanline_effect.h index ae534d969..5bd8b5546 100644 --- a/include/scanline_effect.h +++ b/include/scanline_effect.h @@ -43,6 +43,6 @@ void ScanlineEffect_Stop(void); void ScanlineEffect_Clear(void); void ScanlineEffect_SetParams(struct ScanlineEffectParams); void ScanlineEffect_InitHBlankDmaTransfer(void); -u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets); +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7); #endif // GUARD_SCANLINE_EFFECT_H diff --git a/include/script.h b/include/script.h index 63f6f5aef..95b1af64c 100644 --- a/include/script.h +++ b/include/script.h @@ -62,4 +62,7 @@ void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize); // srccmd.h void SetMovingNpcId(u16 npcId); +// NEW +u8* ReadWord(u8 index); + #endif // GUARD_SCRIPT_H diff --git a/include/trade.h b/include/trade.h index 27b5ee8bd..a0cb320a8 100644 --- a/include/trade.h +++ b/include/trade.h @@ -12,8 +12,8 @@ extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate; s32 GetGameProgressForLinkTrade(void); void CB2_StartCreateTradeMenu(void); void CB2_LinkTrade(void); -int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isEventLegal); -int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isEventLegal); +int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData a0, u16, u16, u8); +int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData a0, struct RfuGameCompatibilityData a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6); int CanSpinTradeMon(struct Pokemon*, u16); void InitTradeSequenceBgGpuRegs(void); void LinkTradeDrawWindow(void); diff --git a/include/trainer_card.h b/include/trainer_card.h index f14335ae8..f5e73da83 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -69,7 +69,7 @@ u32 CountPlayerTrainerStars(void); u8 GetTrainerCardStars(u8 cardId); void CopyTrainerCardData(struct TrainerCard *dst, struct TrainerCard *src, u8 gameVersion); void ShowPlayerTrainerCard(void (*callback)(void)); -void ShowTrainerCardInLink(u8 cardId, void (*callback)(void)); +void ShowTrainerCardInLink(u8 arg0, void (*callback)(void)); void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *); #endif // GUARD_TRAINER_CARD_H diff --git a/include/trainer_hill.h b/include/trainer_hill.h index 954087e1b..647ba9647 100644 --- a/include/trainer_hill.h +++ b/include/trainer_hill.h @@ -1,13 +1,13 @@ #ifndef GUARD_TRAINER_HILL_H #define GUARD_TRAINER_HILL_H -#define DUMMY_HILL_MON { .nickname = __("$$$$$$$$$$$") } +#define HILL_TRAINER_NAME_LENGTH 11 struct TrainerHillTrainer { u8 name[HILL_TRAINER_NAME_LENGTH]; u8 facilityClass; - bool32 unused; // Set to TRUE on JP trainers + u32 unused; u16 speechBefore[EASY_CHAT_BATTLE_WORDS_COUNT]; u16 speechWin[EASY_CHAT_BATTLE_WORDS_COUNT]; u16 speechLose[EASY_CHAT_BATTLE_WORDS_COUNT]; @@ -15,30 +15,44 @@ struct TrainerHillTrainer struct BattleTowerPokemon mons[PARTY_SIZE]; }; -struct TrainerHillFloorMap +struct TrHillRoomTrainers { - u8 metatileData[HILL_FLOOR_WIDTH * HILL_FLOOR_HEIGHT_MAIN]; // Add NUM_METATILES_IN_PRIMARY to the values in this array to get metatile ids. - u16 collisionData[HILL_FLOOR_WIDTH]; // One bit for each tile in column-major order, so every array entry is one row. 1 = impassable, 0 = passable - u8 trainerCoords[HILL_TRAINERS_PER_FLOOR]; // Starting at (0,6). Format is 0bYYYYXXXX. - u8 trainerDirections; // DIR_* - 1, 4 bits per trainer - u8 trainerRanges; // 4 bits per trainer + u8 name[2][HILL_TRAINER_NAME_LENGTH]; + u8 facilityClass[2]; }; -struct TrainerHillFloor +struct TrHillDisplay +{ + // Metatile data. Add 0x200 to the values in this array to get metatiles. + // This data then overwrites the metatiles in the map starting at (0,5) + u8 metatileData[0x100]; + // Collision data. One bit for each tile in column-major order, + // so every array entry is one row. 1 = impassable, 0 = passable + u16 collisionData[16]; + // Trainer coordinates, starting at (0,6). Format is 0bYYYYXXXX. + u8 coords[2]; + // Trainer facing directions. Same as (DIR_* - 1). + // Effectively an array of nibbles, one for each trainer. + u8 direction; + // Trainer sight ranges. Effectively an array of nibbles, one for each trainer. + u8 range; +}; + +struct TrHillFloor { u8 trainerNum1; u8 trainerNum2; - struct TrainerHillTrainer trainers[HILL_TRAINERS_PER_FLOOR]; - struct TrainerHillFloorMap map; + struct TrainerHillTrainer trainers[2]; + struct TrHillDisplay display; }; -struct TrainerHillChallenge +struct TrHillTag { u8 numTrainers; u8 unused1; u8 numFloors; - u32 checksum; // A byte array sum of the floor data - struct TrainerHillFloor floors[0]; // Floor data is assumed to follow, so this will be intentionally read out of bounds + u32 checksum; + struct TrHillFloor floors[0]; }; extern u32 *gTrainerHillVBlankCounter; diff --git a/ld_script.txt b/ld_script.txt index 1460c8443..eed4a3a06 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -6,9 +6,6 @@ gMaxLines = 0; /* Modify the following load addresses as needed to make more room. Alternately, delete both the declarations below and their references further down to get rid of the gaps. */ -__anim_mon_load_address = 0x8b00000; -__gfx_load_address = 0x8c00000; - SECTIONS { . = 0x2000000; @@ -20,9 +17,7 @@ SECTIONS { . = 0x1C000; INCLUDE "sym_ewram.ld" - *libc.a:impure.o(.data); - *libc.a:locale.o(.data); - *libc.a:mallocr.o(.data); + . = 0x40000; } @@ -337,6 +332,7 @@ SECTIONS { src/gym_leader_rematch.o(.text); src/battle_transition_frontier.o(.text); src/international_string_util.o(.text); + src/follow_me.o(.text); } =0 script_data : @@ -464,7 +460,6 @@ SECTIONS { src/mystery_gift_server.o(.rodata); src/mystery_gift_client.o(.rodata); src/mystery_gift_scripts.o(.rodata); - src/wonder_news.o(.rodata); src/union_room_chat.o(.rodata); src/berry_crush.o(.rodata); src/berry_powder.o(.rodata); @@ -698,6 +693,7 @@ SECTIONS { data/mystery_gift.o(.rodata); src/m4a_tables.o(.rodata); data/sound_data.o(.rodata); + src/follow_me.o(.rodata); } =0 song_data : @@ -1248,43 +1244,9 @@ SECTIONS { src/librfu_sio32id.o(.rodata); *libgcc.a:_divdi3.o(.rodata); *libgcc.a:_udivdi3.o(.rodata); - *libc.a:memcpy.o(.rodata); - *libc.a:memset.o(.rodata); - *libc.a:strcmp.o(.rodata); - *libc.a:strcpy.o(.rodata); - *libc.a:impure.o(.rodata); - *libc.a:vsprintf.o(.rodata); - *libc.a:vfprintf.o(.rodata); - *libc.a:wsetup.o(.rodata); - *libc.a:dtoa.o(.rodata); - *libc.a:fflush.o(.rodata); - *libc.a:findfp.o(.rodata); - *libc.a:freer.o(.rodata); - *libc.a:mtrim.o(.rodata); - *libc.a:fvwrite.o(.rodata); - *libc.a:fwalk.o(.rodata); - *libc.a:locale.o(.rodata); - *libc.a:makebuf.o(.rodata); - *libc.a:mallocr.o(.rodata); - *libc.a:mbtowc_r.o(.rodata); - *libc.a:memchr.o(.rodata); - *libc.a:memmove.o(.rodata); - *libc.a:mlock.o(.rodata); - *libc.a:mprec.o(.rodata); - *libc.a:s_isinf.o(.rodata); - *libc.a:s_isnan.o(.rodata); - *libc.a:sbrkr.o(.rodata); - *libc.a:stdio.o(.rodata); - *libc.a:strlen.o(.rodata); + *libc.a(.rodata); + *libc.a(.data); *libc.a:syscalls.o(.rodata); - *libc.a:writer.o(.rodata); - *libc.a:callocr.o(.rodata); - *libc.a:closer.o(.rodata); - *libc.a:errno.o(.rodata); - *libc.a:fstatr.o(.rodata); - *libc.a:libcfunc.o(.rodata); - *libc.a:lseekr.o(.rodata); - *libc.a:readr.o(.rodata); src/libisagbprn.o(.rodata); } =0 @@ -1296,13 +1258,13 @@ SECTIONS { data/multiboot_pokemon_colosseum.o(.rodata); } =0 - anim_mon_front_pic_data __anim_mon_load_address : + anim_mon_front_pic_data : ALIGN(4) { src/anim_mon_front_pics.o(.rodata); } =0 - gfx_data __gfx_load_address : + gfx_data : ALIGN(4) { src/graphics.o(.rodata); diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 7293545da..18ef68000 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -468,6 +468,1255 @@ $(OBJEVENTGFXDIR)/pokemon/wingull.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/zigzagoon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 +$(OBJEVENTGFXDIR)/pokemon/followers/bulbasaur.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ivysaur.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/venusaur.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/charmander.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/charmeleon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/charizard.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/squirtle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wartortle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/blastoise.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/caterpie.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/metapod.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/butterfree.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/weedle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kakuna.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/beedrill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pidgey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pidgeotto.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pidgeot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rattata.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/raticate.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/spearow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/fearow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ekans.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/arbok.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pikachu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/raichu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sandshrew.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sandslash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nidoran_f.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nidorina.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nidoqueen.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nidoran_m.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nidorino.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nidoking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/clefairy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/clefable.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/vulpix.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ninetales.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/jigglypuff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wigglytuff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/zubat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/golbat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/oddish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gloom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/vileplume.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/paras.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/parasect.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/venonat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/venomoth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/diglett.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dugtrio.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/meowth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/persian.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/psyduck.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/golduck.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mankey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/primeape.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/growlithe.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/arcanine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/poliwag.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/poliwhirl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/poliwrath.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/abra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kadabra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/alakazam.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/machop.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/machoke.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/machamp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bellsprout.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/weepinbell.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/victreebel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tentacool.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tentacruel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/geodude.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/graveler.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/golem.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ponyta.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rapidash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/slowpoke.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/slowbro.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magnemite.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magneton.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/farfetchd.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/doduo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dodrio.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/seel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dewgong.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/grimer.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/muk.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shellder.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cloyster.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gastly.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/haunter.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gengar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/onix.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/drowzee.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hypno.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/krabby.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kingler.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/voltorb.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/electrode.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/exeggcute.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/exeggutor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cubone.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/marowak.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hitmonlee.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hitmonchan.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lickitung.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/koffing.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/weezing.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rhyhorn.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rhydon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chansey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tangela.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kangaskhan.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/horsea.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/seadra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/goldeen.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/seaking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/staryu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/starmie.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mr_mime.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/scyther.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/jynx.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/electabuzz.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magmar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pinsir.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tauros.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magikarp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gyarados.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lapras.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ditto.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/eevee.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/vaporeon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/jolteon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/flareon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/porygon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/omanyte.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/omastar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kabuto.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kabutops.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/aerodactyl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/snorlax.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/articuno.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/zapdos.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/moltres.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dratini.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dragonair.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dragonite.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mewtwo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mew.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chikorita.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bayleef.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/meganium.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cyndaquil.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/quilava.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/typhlosion.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/totodile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/croconaw.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/feraligatr.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sentret.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/furret.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hoothoot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/noctowl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ledyba.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ledian.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/spinarak.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ariados.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/crobat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chinchou.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lanturn.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pichu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cleffa.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/igglybuff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/togepi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/togetic.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/natu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/xatu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mareep.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/flaaffy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ampharos.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bellossom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/marill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/azumarill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sudowoodo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/politoed.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hoppip.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/skiploom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/jumpluff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/aipom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sunkern.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sunflora.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/yanma.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wooper.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/quagsire.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/espeon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/umbreon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/murkrow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/slowking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/misdreavus.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowna.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownb.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownc.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownd.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowne.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowng.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownh.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowni.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownj.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownk.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownm.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownn.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowno.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownq.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownr.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowns.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownt.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownv.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownw.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownx.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowny.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownz.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unown!.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownquestion.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wobbuffet.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/girafarig.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pineco.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/forretress.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dunsparce.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gligar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/steelix.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/snubbull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/granbull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/qwilfish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/scizor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shuckle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/heracross.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sneasel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/teddiursa.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ursaring.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/slugma.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magcargo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/swinub.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/piloswine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/corsola.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/remoraid.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/octillery.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/delibird.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mantine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/skarmory.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/houndour.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/houndoom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kingdra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/phanpy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/donphan.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/porygon2.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/stantler.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/smeargle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tyrogue.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hitmontop.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/smoochum.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/elekid.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magby.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/miltank.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/blissey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/raikou.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/entei.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/suicune.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/larvitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pupitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tyranitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lugia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/ho_oh.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/celebi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/treecko.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/grovyle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sceptile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/torchic.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/combusken.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/blaziken.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mudkip.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/marshtomp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/swampert.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/poochyena.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mightyena.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/zigzagoon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/linoone.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wurmple.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/silcoon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/beautifly.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cascoon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dustox.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lotad.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lombre.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ludicolo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/seedot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nuzleaf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shiftry.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/taillow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/swellow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wingull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pelipper.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ralts.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kirlia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gardevoir.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/surskit.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/masquerain.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shroomish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/breloom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/slakoth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/vigoroth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/slaking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nincada.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ninjask.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shedinja.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/whismur.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/loudred.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/exploud.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/makuhita.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hariyama.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/azurill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/nosepass.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/skitty.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/delcatty.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sableye.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mawile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/aron.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lairon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/aggron.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/meditite.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/medicham.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/electrike.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/manectric.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/plusle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/minun.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/volbeat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/illumise.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/roselia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gulpin.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/swalot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/carvanha.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sharpedo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wailmer.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wailord.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/numel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/camerupt.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/torkoal.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/spoink.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/grumpig.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/spinda.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/trapinch.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/vibrava.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/flygon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cacnea.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cacturne.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/swablu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/altaria.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/zangoose.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/seviper.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lunatone.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/solrock.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/barboach.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/whiscash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/corphish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/crawdaunt.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/baltoy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/claydol.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lileep.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cradily.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/anorith.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/armaldo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/feebas.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/milotic.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/castform.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kecleon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shuppet.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/banette.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/duskull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dusclops.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tropius.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chimecho.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/absol.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wynaut.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/snorunt.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/glalie.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/spheal.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sealeo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/walrein.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/clamperl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/huntail.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gorebyss.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/relicanth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/luvdisc.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bagon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shelgon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/salamence.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/beldum.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/metang.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/metagross.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/regirock.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/regice.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/registeel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/latias.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/latios.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kyogre.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/groudon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rayquaza.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/jirachi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/deoxys_normal.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/deoxys_attack.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/deoxys_defense.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/deoxys_speed.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + + $(OBJEVENTGFXDIR)/berry_trees/aguav.4bpp: %.4bpp: %.png @@ -624,6 +1873,15 @@ $(FLDEFFGFXDIR)/sand_disguise_placeholder.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/sand_footprints.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 +$(FLDEFFGFXDIR)/slither_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(FLDEFFGFXDIR)/bug_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(FLDEFFGFXDIR)/spot_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + $(FLDEFFGFXDIR)/short_grass.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 @@ -677,6 +1935,3 @@ $(FLDEFFGFXDIR)/record_mix_lights.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/expanding_sparkle.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 - -graphics/door_anims/battle_tower_multi_corridor.4bpp: %.4bpp: %.png - $(GFX) $< $@ -mwidth 2 -mheight 4 diff --git a/src/agb_flash_1m.c b/src/agb_flash_1m.c index 6fc4f3d60..e249fab9a 100644 --- a/src/agb_flash_1m.c +++ b/src/agb_flash_1m.c @@ -3,7 +3,7 @@ static const char AgbLibFlashVersion[] = "FLASH1M_V103"; -static const struct FlashSetupInfo * const sSetupInfos[] = +const struct FlashSetupInfo * const sSetupInfos[] = { &MX29L010, &LE26FV10N1TS, diff --git a/src/bard_music.c b/src/bard_music.c index dd986371d..bdc5ac808 100644 --- a/src/bard_music.c +++ b/src/bard_music.c @@ -7,9 +7,9 @@ #include "data/bard_music/default_sound.h" #include "data/bard_music/length_table.h" -static s16 CalcWordPitch(int pitchIdx, int songPos) +static s16 CalcWordPitch(int arg0, int songPos) { - return sBardSoundPitchTables[pitchIdx][songPos]; + return sBardSoundPitchTables[arg0][songPos]; } const struct BardSound *GetWordSounds(u16 word) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index c87271722..6ded48467 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -2,7 +2,6 @@ #include "battle.h" #include "battle_anim.h" #include "battle_controllers.h" -#include "battle_main.h" #include "data.h" #include "pokemon.h" #include "random.h" @@ -67,13 +66,13 @@ static bool8 ShouldSwitchIfWonderGuard(void) if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI)) { if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT) - firstId = 0, lastId = PARTY_SIZE / 2; + firstId = 0, lastId = 3; else - firstId = PARTY_SIZE / 2, lastId = PARTY_SIZE; + firstId = 3, lastId = 6; } else { - firstId = 0, lastId = PARTY_SIZE; + firstId = 0, lastId = 6; } if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) @@ -163,13 +162,13 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI)) { if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT) - firstId = 0, lastId = PARTY_SIZE / 2; + firstId = 0, lastId = 3; else - firstId = PARTY_SIZE / 2, lastId = PARTY_SIZE; + firstId = 3, lastId = 6; } else { - firstId = 0, lastId = PARTY_SIZE; + firstId = 0, lastId = 6; } if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) @@ -358,13 +357,13 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI)) { if ((gActiveBattler & BIT_FLANK) == 0) - firstId = 0, lastId = PARTY_SIZE / 2; + firstId = 0, lastId = 3; else - firstId = PARTY_SIZE / 2, lastId = PARTY_SIZE; + firstId = 3, lastId = 6; } else { - firstId = 0, lastId = PARTY_SIZE; + firstId = 0, lastId = 6; } if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) @@ -469,13 +468,13 @@ static bool8 ShouldSwitch(void) if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI)) { if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT) - firstId = 0, lastId = PARTY_SIZE / 2; + firstId = 0, lastId = 3; else - firstId = PARTY_SIZE / 2, lastId = PARTY_SIZE; + firstId = 3, lastId = 6; } else { - firstId = 0, lastId = PARTY_SIZE; + firstId = 0, lastId = 6; } if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) @@ -560,13 +559,13 @@ void AI_TrySwitchOrUseItem(void) if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI)) { if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT) - firstId = 0, lastId = PARTY_SIZE / 2; + firstId = 0, lastId = 3; else - firstId = PARTY_SIZE / 2, lastId = PARTY_SIZE; + firstId = 3, lastId = 6; } else { - firstId = 0, lastId = PARTY_SIZE; + firstId = 0, lastId = 6; } for (monToSwitchId = firstId; monToSwitchId < lastId; monToSwitchId++) @@ -616,10 +615,10 @@ static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 { // Check type1. if (TYPE_EFFECT_DEF_TYPE(i) == defType1) - *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / TYPE_MUL_NORMAL; + *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10; // Check type2. if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) - *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / TYPE_MUL_NORMAL; + *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10; } i += 3; } @@ -628,11 +627,7 @@ static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 u8 GetMostSuitableMonToSwitchInto(void) { u8 opposingBattler; -#ifdef BUGFIX - s32 bestDmg; -#else - u8 bestDmg; // Note: should be changed to s32 since it is also used for the actual damage done later -#endif + u8 bestDmg; // Note : should be changed to u32 for obvious reasons. u8 bestMonId; u8 battlerIn1, battlerIn2; s32 firstId; @@ -670,13 +665,13 @@ u8 GetMostSuitableMonToSwitchInto(void) if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI)) { if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT) - firstId = 0, lastId = PARTY_SIZE / 2; + firstId = 0, lastId = 3; else - firstId = PARTY_SIZE / 2, lastId = PARTY_SIZE; + firstId = 3, lastId = 6; } else { - firstId = 0, lastId = PARTY_SIZE; + firstId = 0, lastId = 6; } if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) @@ -688,8 +683,8 @@ u8 GetMostSuitableMonToSwitchInto(void) while (invalidMons != 0x3F) // All mons are invalid. { - bestDmg = TYPE_MUL_NO_EFFECT; - bestMonId = PARTY_SIZE; + bestDmg = 0; + bestMonId = 6; // Find the mon whose type is the most suitable offensively. for (i = firstId; i < lastId; i++) { @@ -704,13 +699,9 @@ u8 GetMostSuitableMonToSwitchInto(void) { u8 type1 = gBaseStats[species].type1; u8 type2 = gBaseStats[species].type2; - u8 typeDmg = TYPE_MUL_NORMAL; + u8 typeDmg = 10; ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type1, type1, type2, &typeDmg); ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type2, type1, type2, &typeDmg); - - /* Possible bug: this comparison gives the type that takes the most damage, when - a "good" AI would want to select the type that takes the least damage. Unknown if this - is a legitimate mistake or if it's an intentional, if weird, design choice */ if (bestDmg < typeDmg) { bestDmg = typeDmg; diff --git a/src/battle_anim_dragon.c b/src/battle_anim_dragon.c index 4badd5362..029a5c30d 100644 --- a/src/battle_anim_dragon.c +++ b/src/battle_anim_dragon.c @@ -15,7 +15,7 @@ static void AnimOverheatFlame_Step(struct Sprite *); static void AnimTask_DragonDanceWaver_Step(u8); static void UpdateDragonDanceScanlineEffect(struct Task *); -EWRAM_DATA static u16 sUnusedOverheatData[7] = {0}; +EWRAM_DATA static u16 gUnusedOverheatData[7] = {0}; static const union AnimCmd sAnim_OutrageOverheatFire_0[] = { @@ -426,7 +426,7 @@ static void AnimOverheatFlame(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[3]; sprite->callback = AnimOverheatFlame_Step; for (i = 0; i < 7; i++) - sUnusedOverheatData[i] = sprite->data[i]; + gUnusedOverheatData[i] = sprite->data[i]; } static void AnimOverheatFlame_Step(struct Sprite *sprite) diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index c590572b9..d460b9236 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -128,7 +128,7 @@ static void AnimHornHit_Step(struct Sprite *); static void AnimSuperFang(struct Sprite *); static void AnimWavyMusicNotes(struct Sprite *); static void AnimWavyMusicNotes_Step(struct Sprite *); -static void AnimWavyMusicNotes_CalcVelocity(s16, s16, s16 *, s16 *, s8); +static void AnimWavyMusicNotesGetNextPos(s16, s16, s16 *, s16 *, s8); static void AnimFlyingMusicNotes(struct Sprite *); static void AnimFlyingMusicNotes_Step(struct Sprite *); static void AnimBellyDrumHand(struct Sprite *); @@ -4343,7 +4343,7 @@ static void AnimLockOnTarget_Step4(struct Sprite* sprite) sprite->data[1] = 0; } - BlendPalettes(GetBattlePalettesMask(TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE), sprite->data[1], RGB(31, 31, 31)); + BlendPalettes(GetBattleBgPalettesMask(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB(31, 31, 31)); if (sprite->data[1] == 16) { int pal; @@ -4998,7 +4998,7 @@ static void AnimMoonlightSparkle_Step(struct Sprite* sprite) void AnimTask_MoonlightEndFade(u8 taskId) { - int a = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; + int a = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; int b; int c; int d; @@ -5279,87 +5279,79 @@ void AnimTask_MusicNotesClearRainbowBlend(u8 taskId) DestroyAnimVisualTask(taskId); } -#define sMoveTimer data[0] -#define sBlendTableIdx data[1] -#define sBlendTimer data[2] -#define sBlendCycleTime data[3] -#define sX data[4] -#define sY data[5] -#define sVelocX data[6] -#define sVelocY data[7] - static void AnimWavyMusicNotes(struct Sprite* sprite) { u8 index; - u8 x, y; + u8 a; + u8 b; SetSpriteCoordsToAnimAttackerCoords(sprite); StartSpriteAnim(sprite, gBattleAnimArgs[0]); if ((index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[gBattleAnimArgs[1]][0])) != 0xFF) sprite->oam.paletteNum = index; - sprite->sBlendTableIdx = gBattleAnimArgs[1]; - sprite->sBlendTimer = 0; - sprite->sBlendCycleTime = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = 0; + sprite->data[3] = gBattleAnimArgs[2]; if (IsContest()) { - x = 48; - y = 40; + a = 48; + b = 40; } else { - x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); } - sprite->sX = sprite->x << 4; - sprite->sY = sprite->y << 4; - AnimWavyMusicNotes_CalcVelocity(x - sprite->x, y - sprite->y, &sprite->sVelocX, &sprite->sVelocY, 40); + sprite->data[4] = sprite->x << 4; + sprite->data[5] = sprite->y << 4; + AnimWavyMusicNotesGetNextPos(a - sprite->x, b - sprite->y, &sprite->data[6], &sprite->data[7], 40); sprite->callback = AnimWavyMusicNotes_Step; } -static void AnimWavyMusicNotes_CalcVelocity(s16 x, s16 y, s16* velocX, s16* velocY, s8 xSpeedFactor) +static void AnimWavyMusicNotesGetNextPos(s16 a, s16 b, s16* c, s16* d, s8 e) { - int x2; - int time; - if (x < 0) - xSpeedFactor = -xSpeedFactor; + int f; + int g; + if (a < 0) + e = -e; - x2 = x * 256; - time = x2 / xSpeedFactor; - if (time == 0) - time = 1; + f = a << 8; + g = f / e; + if (g == 0) + g = 1; - *velocX = x2 / time; - *velocY = (y * 256) / time; + *c = f / g; + *d = (b << 8) / g; } static void AnimWavyMusicNotes_Step(struct Sprite* sprite) { - s16 y, trigIdx; + s16 y, yDelta; u8 index; - sprite->sMoveTimer++; - trigIdx = sprite->sMoveTimer * 5 - ((sprite->sMoveTimer * 5 / 256) << 8); - sprite->sX += sprite->sVelocX; - sprite->sY += sprite->sVelocY; - sprite->x = sprite->sX >> 4; - sprite->y = sprite->sY >> 4; - sprite->y2 = Sin(trigIdx, 15); + sprite->data[0]++; + yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->x = sprite->data[4] >> 4; + sprite->y = sprite->data[5] >> 4; + sprite->y2 = Sin(yDelta, 15); y = sprite->y; - if (sprite->x < -16 || sprite->x > DISPLAY_WIDTH + 16 || y < -16 || y > DISPLAY_HEIGHT - 32) + if (sprite->x < -16 || sprite->x > 256 || y < -16 || y > 128) { DestroySpriteAndMatrix(sprite); } else { - if (sprite->sBlendCycleTime && ++sprite->sBlendTimer > sprite->sBlendCycleTime) + if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) { - sprite->sBlendTimer = 0; - if (++sprite->sBlendTableIdx > (int)ARRAY_COUNT(gParticlesColorBlendTable) - 1) - sprite->sBlendTableIdx = 0; + sprite->data[2] = 0; + if (++sprite->data[1] > 3) + sprite->data[1] = 0; - index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[sprite->sBlendTableIdx][0]); + index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[sprite->data[1]][0]); if (index != 0xFF) sprite->oam.paletteNum = index; } @@ -5475,7 +5467,7 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite) static void AnimThoughtBubble(struct Sprite* sprite) { - u8 animNum; + u8 a; u8 battler; if (gBattleAnimArgs[0] == 0) battler = gBattleAnimAttacker; @@ -5483,10 +5475,10 @@ static void AnimThoughtBubble(struct Sprite* sprite) battler = gBattleAnimTarget; SetSpriteNextToMonHead(battler, sprite); - animNum = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; + a = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; sprite->data[0] = gBattleAnimArgs[1]; - sprite->data[1] = animNum + 2; - StartSpriteAnim(sprite, animNum); + sprite->data[1] = a + 2; + StartSpriteAnim(sprite, a); StoreSpriteCallbackInData6(sprite, AnimThoughtBubble_Step); sprite->callback = RunStoredCallbackWhenAnimEnds; } diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 9764d5522..101b255df 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -3116,7 +3116,7 @@ static void AnimTask_FakeOut_Step2(u8 taskId) { gTasks[taskId].data[11] = 0x88; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN); - BlendPalettes(GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), 16, RGB(31, 31, 31)); + BlendPalettes(GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31)); } else if (gTasks[taskId].data[10] > 4) { diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 3b4f6729f..f73393de4 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1213,7 +1213,7 @@ void AnimTask_SmokescreenImpact(u8 taskId) SmokescreenImpact( GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 8, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 8, - FALSE); + 0); DestroyAnimVisualTask(taskId); } @@ -3717,26 +3717,6 @@ void AnimTask_SlideMonForFocusBand(u8 taskId) gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step1; } -#define IDX_ACTIVE_SPRITES 2 // Used by the sprite callback to modify the number of active sprites - -// Task data for AnimTask_SquishAndSweatDroplets -#define tState data[0] -#define tTimer data[1] -#define tActiveSprites data[IDX_ACTIVE_SPRITES] -#define tNumSquishes data[3] -#define tBaseX data[4] -#define tBaseY data[5] -#define tSubpriority data[6] -// data[7]-data[15] used by PrepareAffineAnimInTaskData -#define tBattlerSpriteId data[15] - -// Sprite data for AnimFacadeSweatDrop -#define sTimer data[0] -#define sVelocX data[1] -#define sVelocY data[2] -#define sTaskId data[3] -#define sActiveSpritesIdx data[4] - // Squishes the mon vertically and emits sweat droplets a few times. // arg 0: battler // arg 1: num squishes @@ -3748,20 +3728,20 @@ void AnimTask_SquishAndSweatDroplets(u8 taskId) if (!gBattleAnimArgs[1]) DestroyAnimVisualTask(taskId); - task->tState = 0; - task->tTimer = 0; - task->tActiveSprites = 0; - task->tNumSquishes = gBattleAnimArgs[1]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = gBattleAnimArgs[1]; if (gBattleAnimArgs[0] == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; - task->tBaseX = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); - task->tBaseY = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); - task->tSubpriority = GetBattlerSpriteSubpriority(battler); - task->tBattlerSpriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, gFacadeSquishAffineAnimCmds); + task->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + task->data[5] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + task->data[6] = GetBattlerSpriteSubpriority(battler); + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(task, task->data[15], gFacadeSquishAffineAnimCmds); task->func = AnimTask_SquishAndSweatDroplets_Step; } @@ -3769,40 +3749,37 @@ static void AnimTask_SquishAndSweatDroplets_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->tState) + switch (task->data[0]) { case 0: - task->tTimer++; - if (task->tTimer == 6) + task->data[1]++; + if (task->data[1] == 6) CreateSweatDroplets(taskId, TRUE); - if (task->tTimer == 18) + if (task->data[1] == 18) CreateSweatDroplets(taskId, FALSE); if (!RunAffineAnimFromTaskData(task)) { - if (--task->tNumSquishes == 0) + if (--task->data[3] == 0) { - // Animation is finished - task->tState++; + task->data[0]++; } else { - // Animation continues, more droplet sprites to create - task->tTimer = 0; - PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, gFacadeSquishAffineAnimCmds); + task->data[1] = 0; + PrepareAffineAnimInTaskData(task, task->data[15], gFacadeSquishAffineAnimCmds); } } break; case 1: - // Wait for sprites to be destroyed before ending task - if (task->tActiveSprites == 0) + if (task->data[2] == 0) DestroyAnimVisualTask(taskId); break; } } -static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) +static void CreateSweatDroplets(u8 taskId, bool8 arg1) { u8 i; s8 xOffset, yOffset; @@ -3811,7 +3788,7 @@ static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) s16 yCoords[2]; task = &gTasks[taskId]; - if (!lowerDroplets) + if (!arg1) { xOffset = 18; yOffset = -20; @@ -3822,54 +3799,39 @@ static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) yOffset = 20; } - xCoords[0] = task->tBaseX - xOffset; - xCoords[1] = task->tBaseX - xOffset - 4; - xCoords[2] = task->tBaseX + xOffset; - xCoords[3] = task->tBaseX + xOffset + 4; - yCoords[0] = task->tBaseY + yOffset; - yCoords[1] = task->tBaseY + yOffset + 6; + xCoords[0] = task->data[4] - xOffset; + xCoords[1] = task->data[4] - xOffset - 4; + xCoords[2] = task->data[4] + xOffset; + xCoords[3] = task->data[4] + xOffset + 4; + yCoords[0] = task->data[5] + yOffset; + yCoords[1] = task->data[5] + yOffset + 6; for (i = 0; i < 4; i++) { - u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->tSubpriority - 5); + u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->data[6] - 5); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].sVelocX = i < 2 ? -2 : 2; // First two travel left, remaining travel right - gSprites[spriteId].sVelocY = -1; - gSprites[spriteId].sTaskId = taskId; - gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; - task->tActiveSprites++; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = i < 2 ? -2 : 2; + gSprites[spriteId].data[2] = -1; + gSprites[spriteId].data[3] = taskId; + gSprites[spriteId].data[4] = 2; + task->data[2]++; } } } static void AnimFacadeSweatDrop(struct Sprite *sprite) { - sprite->x += sprite->sVelocX; - sprite->y += sprite->sVelocY; - if (++sprite->sTimer > 6) + sprite->x += sprite->data[1]; + sprite->y += sprite->data[2]; + if (++sprite->data[0] > 6) { - gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; + gTasks[sprite->data[3]].data[sprite->data[4]]--; DestroySprite(sprite); } } -#undef IDX_ACTIVE_SPRITES -#undef tState -#undef tTimer -#undef tActiveSprites -#undef tNumSquishes -#undef tBaseX -#undef tBaseY -#undef tSubpriority -#undef tBattlerSpriteId -#undef sTimer -#undef sVelocX -#undef sVelocY -#undef sTaskId -#undef sActiveSpritesIdx - // Blends the mon sprite's color with a rotating set of colors. // arg 0: battler // arg 1: duration @@ -3965,26 +3927,6 @@ static void AnimRoarNoiseLine_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -#define IDX_ACTIVE_SPRITES 10 // Used by the sprite callback to modify the number of active sprites - -// Task data for AnimTask_GlareEyeDots -#define tState data[0] -#define tTimer data[1] -#define tPairNum data[2] -#define tPairMax data[5] -#define tDotOffset data[6] -#define tIsContest data[7] -#define tActiveSprites data[IDX_ACTIVE_SPRITES] -#define tStartX data[11] -#define tStartY data[12] -#define tEndX data[13] -#define tEndY data[14] - -// Sprite data for AnimGlareEyeDot -#define sTimer data[0] -#define sTaskId data[1] -#define sActiveSpritesIdx data[2] - // Makes a series of dots in a trail from the attacker to the target. // arg 0: unused void AnimTask_GlareEyeDots(u8 taskId) @@ -3993,25 +3935,25 @@ void AnimTask_GlareEyeDots(u8 taskId) if (IsContest()) { - task->tPairMax = 8; - task->tDotOffset = 3; - task->tIsContest = TRUE; + task->data[5] = 8; + task->data[6] = 3; + task->data[7] = 1; } else { - task->tPairMax = 12; - task->tDotOffset = 3; - task->tIsContest = FALSE; + task->data[5] = 12; + task->data[6] = 3; + task->data[7] = 0; } if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; else - task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->tStartY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->tEndX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - task->tEndY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); task->func = AnimTask_GlareEyeDots_Step; } @@ -4021,122 +3963,103 @@ static void AnimTask_GlareEyeDots_Step(u8 taskId) s16 x, y; struct Task *task = &gTasks[taskId]; - switch (task->tState) + switch (task->data[0]) { case 0: - // Wait to create next pair of dots - if (++task->tTimer > 3) + if (++task->data[1] > 3) { - task->tTimer = 0; + task->data[1] = 0; GetGlareEyeDotCoords( - task->tStartX, - task->tStartY, - task->tEndX, - task->tEndY, - task->tPairMax, - task->tPairNum, + task->data[11], + task->data[12], + task->data[13], + task->data[14], + task->data[5], + task->data[2], &x, &y); - // Create dot pair for (i = 0; i < 2; i++) { u8 spriteId = CreateSprite(&gGlareEyeDotSpriteTemplate, x, y, 35); if (spriteId != MAX_SPRITES) { - if (!task->tIsContest) + if (task->data[7] == 0) { if (i == 0) - gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->tDotOffset; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->data[6]; else - gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->tDotOffset; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->data[6]; } else { if (i == 0) { - gSprites[spriteId].x2 = -task->tDotOffset; - gSprites[spriteId].y2 = task->tDotOffset; + gSprites[spriteId].x2 = -task->data[6]; + gSprites[spriteId].y2 = task->data[6]; } else { - gSprites[spriteId].x2 = task->tDotOffset; - gSprites[spriteId].y2 = -task->tDotOffset; + gSprites[spriteId].x2 = task->data[6]; + gSprites[spriteId].y2 = -task->data[6]; } } - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].sTaskId = taskId; - gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; - task->tActiveSprites++; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].data[2] = 10; + task->data[10]++; } } - if (task->tPairNum == task->tPairMax) - task->tState++; + if (task->data[2] == task->data[5]) + task->data[0]++; - task->tPairNum++; + task->data[2]++; } break; case 1: - // Wait for sprites to be destroyed before ending task - if (task->tActiveSprites == 0) + if (task->data[10] == 0) DestroyAnimVisualTask(taskId); break; } } -static void GetGlareEyeDotCoords(s16 startX, s16 startY, s16 endX, s16 endY, u8 pairMax, u8 pairNum, s16 *x, s16 *y) +static void GetGlareEyeDotCoords(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y) { int x2; int y2; - if (pairNum == 0) + if (arg5 == 0) { - *x = startX; - *y = startY; + *x = arg0; + *y = arg1; return; } - if (pairNum >= pairMax) + if (arg5 >= arg4) { - *x = endX; - *y = endY; + *x = arg2; + *y = arg3; return; } - pairMax--; - x2 = (startX << 8) + pairNum * (((endX - startX) << 8) / pairMax); - y2 = (startY << 8) + pairNum * (((endY - startY) << 8) / pairMax); + arg4--; + x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4); + y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4); *x = x2 >> 8; *y = y2 >> 8; } static void AnimGlareEyeDot(struct Sprite *sprite) { - if (++sprite->sTimer > 36) + if (++sprite->data[0] > 36) { - gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; + gTasks[sprite->data[1]].data[sprite->data[2]]--; DestroySprite(sprite); } } -#undef IDX_ACTIVE_SPRITES -#undef tState -#undef tTimer -#undef tPairNum -#undef tPairMax -#undef tDotOffset -#undef tIsContest -#undef tActiveSprites -#undef tStartX -#undef tStartY -#undef tEndX -#undef tEndY -#undef sTimer -#undef sTaskId -#undef sActiveSpritesIdx - // Moves a pawprint in a straight line. // arg 0: initial x position // arg 1: initial y position diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index b523a3771..8ecb60713 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -26,18 +26,18 @@ static void AnimFireCross(struct Sprite *); static void AnimFireSpiralOutward(struct Sprite *); static void AnimFireSpiralOutward_Step1(struct Sprite *); static void AnimFireSpiralOutward_Step2(struct Sprite *); -static void AnimTask_EruptionLaunchRocks_Step(u8); -static void CreateEruptionLaunchRocks(u8, u8, u8); +static void AnimTask_EruptionLaunchRocks_Step(u8 taskId); +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3); static void AnimEruptionLaunchRock(struct Sprite *); -static u16 GetEruptionLaunchRockInitialYPos(u8); -static void InitEruptionLaunchRockCoordData(struct Sprite *, s16, s16); +static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId); +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y); static void UpdateEruptionLaunchRockPos(struct Sprite *); static void AnimEruptionFallingRock(struct Sprite *); static void AnimEruptionFallingRock_Step(struct Sprite *); static void AnimWillOWispOrb(struct Sprite *); static void AnimWillOWispOrb_Step(struct Sprite *); static void AnimWillOWispFire(struct Sprite *); -static void AnimTask_MoveHeatWaveTargets_Step(u8); +static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId); static const union AnimCmd sAnim_FireSpiralSpread_0[] = { @@ -355,7 +355,7 @@ const struct SpriteTemplate gEruptionLaunchRockSpriteTemplate = .callback = AnimEruptionLaunchRock, }; -static const s16 sEruptionLaunchRockSpeeds[][2] = +static const s16 sEruptionLaunchRockCoords[][2] = { {-2, -5}, {-1, -1}, @@ -770,43 +770,22 @@ static void AnimFireSpiralOutward_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -#define IDX_ACTIVE_SPRITES 6 // Used by the sprite callback to modify the number of active sprites - -#define tState data[0] -#define tTimer1 data[1] -#define tTimer2 data[2] -#define tTimer3 data[3] -#define tAttackerY data[4] -#define tAttackerSide data[5] -#define tActiveSprites data[IDX_ACTIVE_SPRITES] -// data[8]-data[15] used by PrepareEruptAnimTaskData / UpdateEruptAnimTask -#define tAttackerSpriteId data[15] - -#define sSpeedDelay data[0] -#define sLaunchStage data[1] -#define sX data[2] -#define sY data[3] -#define sSpeedX data[4] -#define sSpeedY data[5] -#define sTaskId data[6] -#define sActiveSpritesIdx data[7] - // Animates first stage of Eruption where the attacker squishes and launches rocks away from themself void AnimTask_EruptionLaunchRocks(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->tAttackerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->tState = 0; - task->tTimer1 = 0; - task->tTimer2 = 0; - task->tTimer3 = 0; - task->tAttackerY = gSprites[task->tAttackerSpriteId].y; - task->tAttackerSide = GetBattlerSide(gBattleAnimAttacker); - task->tActiveSprites = 0; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = gSprites[task->data[15]].y; + task->data[5] = GetBattlerSide(gBattleAnimAttacker); + task->data[6] = 0; - PrepareBattlerSpriteForRotScale(task->tAttackerSpriteId, ST_OAM_OBJ_NORMAL); + PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); task->func = AnimTask_EruptionLaunchRocks_Step; } @@ -815,102 +794,102 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->tState) + switch (task->data[0]) { case 0: - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x100, 0x100, 0xE0, 0x200, 32); - task->tState++; + PrepareEruptAnimTaskData(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 32); + task->data[0]++; case 1: - if (++task->tTimer1 > 1) + if (++task->data[1] > 1) { - task->tTimer1 = 0; + task->data[1] = 0; - if (++task->tTimer2 & 1) - gSprites[task->tAttackerSpriteId].x2 = 3; + if (++task->data[2] & 0x1) + gSprites[task->data[15]].x2 = 3; else - gSprites[task->tAttackerSpriteId].x2 = -3; + gSprites[task->data[15]].x2 = -3; } - if (task->tAttackerSide != B_SIDE_PLAYER) + if (task->data[5] != B_SIDE_PLAYER) { - if (++task->tTimer3 > 4) + if (++task->data[3] > 4) { - task->tTimer3 = 0; - gSprites[task->tAttackerSpriteId].y++; + task->data[3] = 0; + gSprites[task->data[15]].y++; } } if(!UpdateEruptAnimTask(task)) { - SetBattlerSpriteYOffsetFromYScale(task->tAttackerSpriteId); - gSprites[task->tAttackerSpriteId].x2 = 0; + SetBattlerSpriteYOffsetFromYScale(task->data[15]); + gSprites[task->data[15]].x2 = 0; - task->tTimer1 = 0; - task->tTimer2 = 0; - task->tTimer3 = 0; - task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; } break; case 2: - if (++task->tTimer1 > 4) + if (++task->data[1] > 4) { - if (task->tAttackerSide != B_SIDE_PLAYER) - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xF0, 6); + if (task->data[5] != B_SIDE_PLAYER) + PrepareEruptAnimTaskData(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 6); else - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xC0, 6); + PrepareEruptAnimTaskData(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 6); - task->tTimer1 = 0; - task->tState++; + task->data[1] = 0; + task->data[0]++; } break; case 3: if (!UpdateEruptAnimTask(task)) { - CreateEruptionLaunchRocks(task->tAttackerSpriteId, taskId, IDX_ACTIVE_SPRITES); - task->tState++; + CreateEruptionLaunchRocks(task->data[15], taskId, 6); + task->data[0]++; } break; case 4: - if (++task->tTimer1 > 1) + if (++task->data[1] > 1) { - task->tTimer1 = 0; + task->data[1] = 0; - if (++task->tTimer2 & 1) - gSprites[task->tAttackerSpriteId].y2 += 3; + if (++task->data[2] & 1) + gSprites[task->data[15]].y2 += 3; else - gSprites[task->tAttackerSpriteId].y2 -= 3; + gSprites[task->data[15]].y2 -= 3; } - if (++task->tTimer3 > 24) + if (++task->data[3] > 0x18) { - if (task->tAttackerSide != B_SIDE_PLAYER) - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x180, 0xF0, 0x100, 0x100, 8); + if (task->data[5] != B_SIDE_PLAYER) + PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 8); else - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x180, 0xC0, 0x100, 0x100, 8); + PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 8); - if (task->tTimer2 & 1) - gSprites[task->tAttackerSpriteId].y2 -= 3; + if (task->data[2] & 1) + gSprites[task->data[15]].y2 -= 3; - task->tTimer1 = 0; - task->tTimer2 = 0; - task->tTimer3 = 0; - task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; } break; case 5: - if (task->tAttackerSide != B_SIDE_PLAYER) - gSprites[task->tAttackerSpriteId].y--; + if (task->data[5] != B_SIDE_PLAYER) + gSprites[task->data[15]].y--; if (!UpdateEruptAnimTask(task)) { - gSprites[task->tAttackerSpriteId].y = task->tAttackerY; - ResetSpriteRotScale(task->tAttackerSpriteId); - task->tTimer2 = 0; - task->tState++; + gSprites[task->data[15]].y = task->data[4]; + ResetSpriteRotScale(task->data[15]); + task->data[2] = 0; + task->data[0]++; } break; case 6: - if (task->tActiveSprites == 0) + if (!task->data[6]) DestroyAnimVisualTask(taskId); break; default: @@ -918,7 +897,7 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) } } -static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesIdx) +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3) { u16 i, j; s8 sign; @@ -928,12 +907,12 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesId if(!GetBattlerSide(gBattleAnimAttacker)) { - x -= 12; + x -= 0xC; sign = 1; } else { - x += 16; + x += 0x10; sign = -1; } @@ -941,18 +920,18 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesId { u8 spriteId = CreateSprite(&gEruptionLaunchRockSpriteTemplate, x, y, 2); - if (spriteId != MAX_SPRITES) + if (spriteId != 0x40) { gSprites[spriteId].oam.tileNum += j * 4 + 0x40; if (++j >= 5) j = 0; - InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockSpeeds[i][0] * sign, sEruptionLaunchRockSpeeds[i][1]); - gSprites[spriteId].sTaskId = taskId; - gSprites[spriteId].sActiveSpritesIdx = activeSpritesIdx; + InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockCoords[i][0] * sign, sEruptionLaunchRockCoords[i][1]); + gSprites[spriteId].data[6] = taskId; + gSprites[spriteId].data[7] = a3; - gTasks[taskId].data[activeSpritesIdx]++; + gTasks[taskId].data[a3]++; } } } @@ -963,7 +942,7 @@ static void AnimEruptionLaunchRock(struct Sprite *sprite) if (sprite->invisible) { - gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; + gTasks[sprite->data[6]].data[sprite->data[7]]--; DestroySprite(sprite); } } @@ -980,71 +959,46 @@ static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId) return y; } -static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 speedX, s16 speedY) +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y) { - sprite->sSpeedDelay = 0; - sprite->sLaunchStage = 0; - sprite->sX = (u16)sprite->x * 8; - sprite->sY = (u16)sprite->y * 8; - sprite->sSpeedX = speedX * 8; - sprite->sSpeedY = speedY * 8; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = (u16)sprite->x * 8; + sprite->data[3] = (u16)sprite->y * 8; + sprite->data[4] = x * 8; + sprite->data[5] = y * 8; } static void UpdateEruptionLaunchRockPos(struct Sprite *sprite) { - int extraLaunchSpeed; - if (++sprite->sSpeedDelay > 2) + int var1; + if (++sprite->data[0] > 2) { - sprite->sSpeedDelay = 0; - ++sprite->sLaunchStage; - extraLaunchSpeed = (u16)sprite->sLaunchStage * (u16)sprite->sLaunchStage; - sprite->sY += extraLaunchSpeed; + sprite->data[0] = 0; + ++sprite->data[1]; + var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; + sprite->data[3] += var1; } - sprite->sX += sprite->sSpeedX; - sprite->x = sprite->sX >> 3; - sprite->sY += sprite->sSpeedY; - sprite->y = sprite->sY >> 3; + sprite->data[2] += sprite->data[4]; + sprite->x = sprite->data[2] >> 3; + sprite->data[3] += sprite->data[5]; + sprite->y = sprite->data[3] >> 3; - if (sprite->x < -8 || sprite->x > DISPLAY_WIDTH + 8 || sprite->y < -8 || sprite->y > 120) + if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120) sprite->invisible = TRUE; } -#undef IDX_ACTIVE_SPRITES -#undef tState -#undef tTimer1 -#undef tTimer2 -#undef tTimer3 -#undef tAttackerY -#undef tAttackerSide -#undef tActiveSprites -#undef tAttackerSpriteId -#undef sSpeedDelay -#undef sLaunchStage -#undef sX -#undef sY -#undef sSpeedX -#undef sSpeedY -#undef sTaskId -#undef sActiveSpritesIdx - -#define sState data[0] -#define sBounceTimer data[1] -#define sBounceDir data[2] -#define sEndTimer data[3] -#define sFallDelay data[6] -#define sTargetY data[7] - static void AnimEruptionFallingRock(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; - sprite->sState = 0; - sprite->sBounceTimer = 0; - sprite->sBounceDir = 0; - sprite->sFallDelay = gBattleAnimArgs[2]; - sprite->sTargetY = gBattleAnimArgs[3]; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[3]; sprite->oam.tileNum += gBattleAnimArgs[4] * 16; sprite->callback = AnimEruptionFallingRock_Step; @@ -1052,51 +1006,47 @@ static void AnimEruptionFallingRock(struct Sprite *sprite) static void AnimEruptionFallingRock_Step(struct Sprite *sprite) { - switch (sprite->sState) + switch (sprite->data[0]) { case 0: - // Wait to begin falling - if (sprite->sFallDelay != 0) + if (sprite->data[6] != 0) { - sprite->sFallDelay--; + sprite->data[6]--; return; } - sprite->sState++; + sprite->data[0]++; // fall through case 1: - // Rock is falling sprite->y += 8; - if (sprite->y >= sprite->sTargetY) + if (sprite->y >= sprite->data[7]) { - sprite->y = sprite->sTargetY; - sprite->sState++; + sprite->y = sprite->data[7]; + sprite->data[0]++; } break; case 2: - // Bounce up and down on landing spot - if (++sprite->sBounceTimer > 1) + if (++sprite->data[1] > 1) { - sprite->sBounceTimer = 0; - if ((++sprite->sBounceDir & 1) != 0) + sprite->data[1] = 0; + if ((++sprite->data[2] & 1) != 0) + { sprite->y2 = -3; + } else + { sprite->y2 = 3; + } } - if (++sprite->sEndTimer > 16) + if (++sprite->data[3] > 16) + { DestroyAnimSprite(sprite); + } break; } } -#undef sState -#undef sBounceTimer -#undef sBounceDir -#undef sEndTimer -#undef sFallDelay -#undef sTargetY - static void AnimWillOWispOrb(struct Sprite *sprite) { switch (sprite->data[0]) diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index a59e54900..02b89b965 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -653,9 +653,9 @@ static void AnimTask_SpiteTargetShadow_Step1(u8 taskId) startLine = 0; if (position == 1) - task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); + task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG1HOFS, 1); else - task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG2HOFS, TRUE); + task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG2HOFS, 1); task->data[15]++; break; @@ -1004,7 +1004,7 @@ static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId) right = DISPLAY_WIDTH; top = 0; bottom = 112; - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0)); gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step2; } diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 2fbe858d7..a03196ee1 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -908,17 +908,13 @@ bool8 IsDoubleBattle(void) return IS_DOUBLE_BATTLE(); } -#define BG_ANIM_PAL_1 8 -#define BG_ANIM_PAL_2 9 -#define BG_ANIM_PAL_CONTEST 14 - void GetBattleAnimBg1Data(struct BattleAnimBgData *out) { if (IsContest()) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = BG_ANIM_PAL_CONTEST; + out->paletteId = 14; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; @@ -927,7 +923,7 @@ void GetBattleAnimBg1Data(struct BattleAnimBgData *out) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = BG_ANIM_PAL_1; + out->paletteId = 8; out->bgId = 1; out->tilesOffset = 0x200; out->unused = 0; @@ -940,7 +936,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = BG_ANIM_PAL_CONTEST; + out->paletteId = 14; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; @@ -953,7 +949,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = BG_ANIM_PAL_2; + out->paletteId = 9; out->bgId = 2; out->tilesOffset = 0x300; out->unused = 0; @@ -966,21 +962,21 @@ void GetBgDataForTransform(struct BattleAnimBgData *out, u8 battlerId) out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; if (IsContest()) { - out->paletteId = BG_ANIM_PAL_CONTEST; + out->paletteId = 14; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; } else if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { - out->paletteId = BG_ANIM_PAL_1; + out->paletteId = 8; out->bgId = 1; out->tilesOffset = 0x200; out->unused = 0; } else { - out->paletteId = BG_ANIM_PAL_2; + out->paletteId = 9; out->bgId = 2; out->tilesOffset = 0x300; out->unused = 0; @@ -1365,14 +1361,14 @@ void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite) CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -static u16 ArcTan2_(s16 x, s16 y) +static u16 ArcTan2_(s16 a, s16 b) { - return ArcTan2(x, y); + return ArcTan2(a, b); } -u16 ArcTan2Neg(s16 x, s16 y) +u16 ArcTan2Neg(s16 a, s16 b) { - u16 var = ArcTan2_(x, y); + u16 var = ArcTan2_(a, b); return -var; } @@ -1405,7 +1401,7 @@ void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) } } -u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2) +u32 GetBattleBgPalettesMask(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7) { u32 selectedPalettes = 0; u32 shift; @@ -1413,7 +1409,7 @@ u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, if (battleBackground) { if (!IsContest()) - selectedPalettes = 0xe; // Palettes 1, 2, and 3 + selectedPalettes = 0xe; else selectedPalettes = 1 << GetBattleBgPaletteNum(); } @@ -1443,17 +1439,17 @@ u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, selectedPalettes |= 1 << shift; } } - if (anim1) + if (a6) { if (!IsContest()) - selectedPalettes |= 1 << BG_ANIM_PAL_1; + selectedPalettes |= 0x100; else - selectedPalettes |= 1 << BG_ANIM_PAL_CONTEST; + selectedPalettes |= 0x4000; } - if (anim2) + if (a7) { if (!IsContest()) - selectedPalettes |= 1 << BG_ANIM_PAL_2; + selectedPalettes |= 0x200; } return selectedPalettes; } diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index a92428f83..ebf9a588f 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -304,7 +304,7 @@ static void AnimConfusionDuck_Step(struct Sprite *sprite) // arg 4: blend color static void AnimSimplePaletteBlend(struct Sprite *sprite) { - u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); sprite->invisible = TRUE; sprite->callback = AnimSimplePaletteBlend_Step; @@ -312,23 +312,23 @@ static void AnimSimplePaletteBlend(struct Sprite *sprite) // Unpacks a bitfield and returns a bitmask of its selected palettes. // Bits 0-6 of the selector parameter result in the following palettes being selected: -// 0: F_PAL_BG, battle background palettes (BG palettes 1, 2, and 3) -// 1: F_PAL_ATTACKER, gBattleAnimAttacker OBJ palette -// 2: F_PAL_TARGET, gBattleAnimTarget OBJ palette -// 3: F_PAL_ATK_PARTNER, gBattleAnimAttacker partner OBJ palette -// 4: F_PAL_DEF_PARTNER, gBattleAnimTarget partner OBJ palette -// 5: F_PAL_ANIM_1, BG palette 8 (or 14, if in Contest) -// 6: F_PAL_ANIM_2, BG palette 9 -u32 UnpackSelectedBattlePalettes(s16 selector) +// 0: battle background palettes (BG palettes 1, 2, and 3) +// 1: gBattleAnimAttacker OBJ palette +// 2: gBattleAnimTarget OBJ palette +// 3: gBattleAnimAttacker partner OBJ palette +// 4: gBattleAnimTarget partner OBJ palette +// 5: BG palette 4 +// 6: BG palette 5 +u32 UnpackSelectedBattleBgPalettes(s16 selector) { - bool8 battleBackground = selector & 1; - bool8 attacker = (selector >> 1) & 1; - bool8 target = (selector >> 2) & 1; - bool8 attackerPartner = (selector >> 3) & 1; - bool8 targetPartner = (selector >> 4) & 1; - bool8 anim1 = (selector >> 5) & 1; - bool8 anim2 = (selector >> 6) & 1; - return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, anim1, anim2); + u8 battleBackground = selector & 1; + u8 attacker = (selector >> 1) & 1; + u8 target = (selector >> 2) & 1; + u8 attackerPartner = (selector >> 3) & 1; + u8 targetPartner = (selector >> 4) & 1; + u8 arg5 = (selector >> 5) & 1; + u8 arg6 = (selector >> 6) & 1; + return GetBattleBgPalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); } static void AnimSimplePaletteBlend_Step(struct Sprite *sprite) @@ -350,7 +350,7 @@ static void AnimComplexPaletteBlend(struct Sprite *sprite) sprite->data[6] = gBattleAnimArgs[6]; sprite->data[7] = gBattleAnimArgs[0]; - selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]); sprite->invisible = TRUE; sprite->callback = AnimComplexPaletteBlend_Step1; @@ -375,7 +375,7 @@ static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite) return; } - selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); if (sprite->data[1] & 0x100) BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]); else @@ -392,7 +392,7 @@ static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite) if (!gPaletteFade.active) { - selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); BlendPalettes(selectedPalettes, 0, 0); DestroyAnimSprite(sprite); } @@ -442,7 +442,7 @@ void AnimTask_BlendColorCycle(u8 taskId) static void BlendColorCycle(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u32 selectedPalettes = UnpackSelectedBattlePalettes(gTasks[taskId].tPalSelector); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gTasks[taskId].tPalSelector); BeginNormalPaletteFade( selectedPalettes, gTasks[taskId].tDelay, @@ -721,7 +721,7 @@ void AnimTask_InvertScreenColor(u8 taskId) u8 targetBattler = gBattleAnimTarget; if (gBattleAnimArgs[0] & 0x100) - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); if (gBattleAnimArgs[1] & 0x100) selectedPalettes |= (0x10000 << attackerBattler); diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index aebf76cc0..a7faa7658 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -583,9 +583,9 @@ static void AnimWallSparkle(struct Sprite *sprite) { if (sprite->data[0] == 0) { - bool32 ignoreOffsets = gBattleAnimArgs[3]; + int arg3 = gBattleAnimArgs[3]; bool8 respectMonPicOffsets = FALSE; - if (!ignoreOffsets) + if (arg3 == 0) respectMonPicOffsets = TRUE; if (!IsContest() && IsDoubleBattle()) diff --git a/src/battle_anim_smokescreen.c b/src/battle_anim_smokescreen.c index c7be8d41c..0819796d2 100644 --- a/src/battle_anim_smokescreen.c +++ b/src/battle_anim_smokescreen.c @@ -7,13 +7,8 @@ #include "util.h" #include "constants/battle_palace.h" -#define TAG_SMOKESCREEN 55019 - -#define PALTAG_SHADOW 55039 -#define GFXTAG_SHADOW 55129 - -static void SpriteCB_SmokescreenImpactMain(struct Sprite *); -static void SpriteCB_SmokescreenImpact(struct Sprite *); +static void SmokescreenImpact_Callback(struct Sprite *); +static void SpriteCB_DestroySprite(struct Sprite *sprite); // The below data for smokescreen starts and ends with some data that belongs to battle_gfx_sfx_util.c @@ -48,12 +43,12 @@ const u8 gBattlePalaceNatureToMoveTarget[NUM_NATURES] = static const struct CompressedSpriteSheet sSmokescreenImpactSpriteSheet = { - .data = gSmokescreenImpactTiles, .size = 0x180, .tag = TAG_SMOKESCREEN + .data = gSmokescreenImpactTiles, .size = 0x180, .tag = 55019 }; static const struct CompressedSpritePalette sSmokescreenImpactSpritePalette = { - .data = gSmokescreenImpactPalette, .tag = TAG_SMOKESCREEN + .data = gSmokescreenImpactPalette, .tag = 55019 }; static const struct OamData sOamData_SmokescreenImpact = @@ -115,18 +110,18 @@ static const union AnimCmd *const sAnims_SmokescreenImpact[] = static const struct SpriteTemplate sSmokescreenImpactSpriteTemplate = { - .tileTag = TAG_SMOKESCREEN, - .paletteTag = TAG_SMOKESCREEN, + .tileTag = 55019, + .paletteTag = 55019, .oam = &sOamData_SmokescreenImpact, .anims = sAnims_SmokescreenImpact, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_SmokescreenImpact + .callback = SpriteCB_DestroySprite }; const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow = { - .data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = GFXTAG_SHADOW + .data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = 55129 }; static const struct OamData sOamData_EnemyShadow = @@ -148,8 +143,8 @@ static const struct OamData sOamData_EnemyShadow = const struct SpriteTemplate gSpriteTemplate_EnemyShadow = { - .tileTag = GFXTAG_SHADOW, - .paletteTag = PALTAG_SHADOW, + .tileTag = 55129, + .paletteTag = 55039, .oam = &sOamData_EnemyShadow, .anims = gDummySpriteAnimTable, .images = NULL, @@ -157,12 +152,7 @@ const struct SpriteTemplate gSpriteTemplate_EnemyShadow = .callback = SpriteCB_SetInvisible }; -#define sActiveSprites data[0] -#define sPersist data[1] - -#define sMainSpriteId data[0] - -u8 SmokescreenImpact(s16 x, s16 y, bool8 persist) +u8 SmokescreenImpact(s16 x, s16 y, u8 a3) { u8 mainSpriteId; u8 spriteId1, spriteId2, spriteId3, spriteId4; @@ -174,58 +164,54 @@ u8 SmokescreenImpact(s16 x, s16 y, bool8 persist) LoadCompressedSpritePaletteUsingHeap(&sSmokescreenImpactSpritePalette); } - mainSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_SmokescreenImpactMain); + mainSpriteId = CreateInvisibleSpriteWithCallback(SmokescreenImpact_Callback); mainSprite = &gSprites[mainSpriteId]; - mainSprite->sPersist = persist; + mainSprite->data[1] = a3; - // Top left sprite spriteId1 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y - 16, 2); - gSprites[spriteId1].sMainSpriteId = mainSpriteId; - mainSprite->sActiveSprites++; + gSprites[spriteId1].data[0] = mainSpriteId; + mainSprite->data[0]++; AnimateSprite(&gSprites[spriteId1]); - // Top right sprite spriteId2 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y - 16, 2); - gSprites[spriteId2].sMainSpriteId = mainSpriteId; - mainSprite->sActiveSprites++; + gSprites[spriteId2].data[0] = mainSpriteId; + mainSprite->data[0]++; StartSpriteAnim(&gSprites[spriteId2], 1); AnimateSprite(&gSprites[spriteId2]); - // Bottom left sprite spriteId3 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y, 2); - gSprites[spriteId3].sMainSpriteId = mainSpriteId; - mainSprite->sActiveSprites++; + gSprites[spriteId3].data[0] = mainSpriteId; + mainSprite->data[0]++; StartSpriteAnim(&gSprites[spriteId3], 2); AnimateSprite(&gSprites[spriteId3]); - // Bottom right sprite spriteId4 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y, 2); - gSprites[spriteId4].sMainSpriteId = mainSpriteId; - mainSprite->sActiveSprites++; + gSprites[spriteId4].data[0] = mainSpriteId; + mainSprite->data[0]++; StartSpriteAnim(&gSprites[spriteId4], 3); AnimateSprite(&gSprites[spriteId4]); return mainSpriteId; } -static void SpriteCB_SmokescreenImpactMain(struct Sprite *sprite) +static void SmokescreenImpact_Callback(struct Sprite *sprite) { - if (sprite->sActiveSprites == 0) + if (!sprite->data[0]) { FreeSpriteTilesByTag(sSmokescreenImpactSpriteSheet.tag); FreeSpritePaletteByTag(sSmokescreenImpactSpritePalette.tag); - if (!sprite->sPersist) + if (!sprite->data[1]) DestroySprite(sprite); else sprite->callback = SpriteCallbackDummy; } } -static void SpriteCB_SmokescreenImpact(struct Sprite *sprite) +static void SpriteCB_DestroySprite(struct Sprite *sprite) { if (sprite->animEnded) { - gSprites[sprite->sMainSpriteId].sActiveSprites--; + gSprites[sprite->data[0]].data[0]--; DestroySprite(sprite); } } diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index f329ea210..6b14d3863 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -135,12 +135,10 @@ void SoundTask_PlayCryHighPitch(u8 taskId) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) species = gContestResources->moveAnim->species; - // Destroying the task twice (here and at end of function) - // results in an incorrect value for gAnimVisualTaskCount - #ifndef BUGFIX + #ifndef UBFIX else - DestroyAnimVisualTask(taskId); - #endif + DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice. + #endif } else { @@ -183,12 +181,10 @@ void SoundTask_PlayDoubleCry(u8 taskId) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) species = gContestResources->moveAnim->species; - // Destroying the task twice (here and at end of function) - // results in an incorrect value for gAnimVisualTaskCount - #ifndef BUGFIX + #ifndef UBFIX else - DestroyAnimVisualTask(taskId); - #endif + DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice. + #endif } else { diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index f56d04ccd..9be3d65dc 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -248,7 +248,7 @@ static const struct SubspriteTable sFrozenIceCubeSubspriteTable[] = {ARRAY_COUNT(sFrozenIceCubeSubsprites), sFrozenIceCubeSubsprites}, }; -static const struct SpriteTemplate sFrozenIceCubeSpriteTemplate = +static const struct SpriteTemplate gFrozenIceCubeSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CUBE, .paletteTag = ANIM_TAG_ICE_CUBE, @@ -389,7 +389,7 @@ void AnimTask_FrozenIceCube(u8 taskId) x -= 6; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); - spriteId = CreateSprite(&sFrozenIceCubeSpriteTemplate, x, y, 4); + spriteId = CreateSprite(&gFrozenIceCubeSpriteTemplate, x, y, 4); if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF) gSprites[spriteId].invisible = TRUE; SetSubspriteTables(&gSprites[spriteId], sFrozenIceCubeSubspriteTable); @@ -549,7 +549,7 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId) gBattleAnimAttacker = battlerId; gBattleAnimTarget = battlerId; - LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, FALSE); + LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, 0); taskId = CreateTask(Task_DoStatusAnimation, 10); gTasks[taskId].data[0] = battlerId; } diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index 2f095a043..bf95a319c 100755 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -690,7 +690,7 @@ void AnimTask_SwitchOutBallEffect(u8 taskId) priority = gSprites[spriteId].oam.priority; subpriority = gSprites[spriteId].subpriority; gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId); - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); gTasks[taskId].data[11] = LaunchBallFadeMonTask(FALSE, gBattleAnimAttacker, selectedPalettes, ballId); gTasks[taskId].data[0]++; break; @@ -2018,24 +2018,24 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) #define tPaletteHi data[11] #define tBallId data[15] -u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 spritePalNum, u32 selectedPalettes, u8 ballId) +u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId) { u8 taskId; taskId = CreateTask(Task_FadeMon_ToBallColor, 5); gTasks[taskId].tBallId = ballId; - gTasks[taskId].tPalOffset = spritePalNum; + gTasks[taskId].tPalOffset = battler; gTasks[taskId].tPaletteLo = selectedPalettes; gTasks[taskId].tPaletteHi = selectedPalettes >> 16; if (!unfadeLater) { - BlendPalette(spritePalNum * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); + BlendPalette(battler * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); gTasks[taskId].tdCoeff = 1; } else { - BlendPalette(spritePalNum * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); + BlendPalette(battler * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); gTasks[taskId].tCoeff = 16; gTasks[taskId].tdCoeff = -1; gTasks[taskId].func = Task_FadeMon_ToNormal; diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index b5455a19c..e2c674c57 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -47,7 +47,7 @@ const u8 gBattleAnimBgCntGet[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFS void AnimTask_BlendBattleAnimPal(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); selectedPalettes |= GetBattleMonSpritePalettesMask((gBattleAnimArgs[0] >> 7) & 1, (gBattleAnimArgs[0] >> 8) & 1, (gBattleAnimArgs[0] >> 9) & 1, @@ -62,7 +62,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) u8 animBattlers[2]; animBattlers[1] = 0xFF; - selectedPalettes = UnpackSelectedBattlePalettes(F_PAL_BG); + selectedPalettes = UnpackSelectedBattleBgPalettes(1); switch (gBattleAnimArgs[0]) { case 2: @@ -105,7 +105,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) void AnimTask_SetCamouflageBlend(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); switch (gBattleTerrain) { case BATTLE_TERRAIN_GRASS: @@ -594,7 +594,8 @@ static void StatsChangeAnimation_Step3(u8 taskId) if (gTasks[taskId].data[6] == 1) gSprites[gTasks[taskId].data[7]].oam.priority++; - FREE_AND_SET_NULL(sAnimStatsChangeData); + Free(sAnimStatsChangeData); + sAnimStatsChangeData = NULL; DestroyAnimVisualTask(taskId); break; } @@ -606,7 +607,7 @@ void AnimTask_Flash(u8 taskId) SetPalettesToColor(selectedPalettes, RGB_BLACK); gTasks[taskId].data[14] = selectedPalettes >> 16; - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; SetPalettesToColor(selectedPalettes, RGB_WHITEALPHA); gTasks[taskId].data[15] = selectedPalettes; @@ -922,7 +923,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; @@ -949,7 +950,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; @@ -976,7 +977,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; diff --git a/src/battle_bg.c b/src/battle_bg.c index ed32c009c..f739a002f 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -159,7 +159,7 @@ const struct BgTemplate gBattleBgTemplates[] = }, }; -static const struct WindowTemplate sStandardBattleWindowTemplates[] = +static const struct WindowTemplate gStandardBattleWindowTemplates[] = { [B_WIN_MSG] = { .bg = 0, @@ -380,7 +380,7 @@ static const struct WindowTemplate sStandardBattleWindowTemplates[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate sBattleArenaWindowTemplates[] = +static const struct WindowTemplate gBattleArenaWindowTemplates[] = { [B_WIN_MSG] = { .bg = 0, @@ -594,8 +594,8 @@ static const struct WindowTemplate sBattleArenaWindowTemplates[] = const struct WindowTemplate * const gBattleWindowTemplates[] = { - [B_WIN_TYPE_NORMAL] = sStandardBattleWindowTemplates, - [B_WIN_TYPE_ARENA] = sBattleArenaWindowTemplates, + [B_WIN_TYPE_NORMAL] = gStandardBattleWindowTemplates, + [B_WIN_TYPE_ARENA] = gBattleArenaWindowTemplates, }; static const struct BattleBackground sBattleTerrainTable[] = diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 954192f0a..5b69030df 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -96,8 +96,8 @@ static void PlayerCmdEnd(void); static void PlayerBufferRunCommand(void); static void HandleInputChooseTarget(void); static void HandleInputChooseMove(void); -static void MoveSelectionCreateCursorAt(u8, u8); -static void MoveSelectionDestroyCursorAt(u8); +static void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1); +static void MoveSelectionDestroyCursorAt(u8 cursorPos); static void MoveSelectionDisplayPpNumber(void); static void MoveSelectionDisplayPpString(void); static void MoveSelectionDisplayMoveType(void); @@ -106,18 +106,18 @@ static void HandleMoveSwitching(void); static void SwitchIn_HandleSoundAndEnd(void); static void WaitForMonSelection(void); static void CompleteWhenChoseItem(void); -static void Task_LaunchLvlUpAnim(u8); -static void Task_PrepareToGiveExpWithExpBar(u8); -static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8); -static void Task_GiveExpWithExpBar(u8); -static void Task_UpdateLvlInHealthbox(u8); +static void Task_LaunchLvlUpAnim(u8 taskId); +static void Task_PrepareToGiveExpWithExpBar(u8 taskId); +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId); +static void Task_GiveExpWithExpBar(u8 taskId); +static void Task_UpdateLvlInHealthbox(u8 taskId); static void PrintLinkStandbyMsg(void); -static u32 CopyPlayerMonData(u8, u8 *); -static void SetPlayerMonData(u8); -static void StartSendOutAnim(u8, bool8); +static u32 CopyPlayerMonData(u8 monId, u8 *dst); +static void SetPlayerMonData(u8 monId); +static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit); static void DoSwitchOutAnimation(void); static void PlayerDoMoveAnimation(void); -static void Task_StartSendOutAnim(u8); +static void Task_StartSendOutAnim(u8 taskId); static void EndDrawPartyStatusSummary(void); static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = @@ -1507,11 +1507,11 @@ static void MoveSelectionDisplayMoveType(void) BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } -static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 baseTileNum) +static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) { u16 src[2]; - src[0] = baseTileNum + 1; - src[1] = baseTileNum + 2; + src[0] = arg1 + 1; + src[1] = arg1 + 2; CopyToBgTilemapBufferRect_ChangePalette(0, src, 9 * (cursorPosition & 1) + 1, 55 + (cursorPosition & 2), 1, 2, 0x11); CopyBgTilemapBufferToVram(0); @@ -1527,7 +1527,7 @@ static void MoveSelectionDestroyCursorAt(u8 cursorPosition) CopyBgTilemapBufferToVram(0); } -void ActionSelectionCreateCursorAt(u8 cursorPosition, u8 baseTileNum) +void ActionSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) { u16 src[2]; src[0] = 1; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 369f735f2..7d2717e2c 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1168,13 +1168,13 @@ void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpN PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4); } -void BtlController_EmitChooseItem(u8 bufferId, u8 *battlePartyOrder) +void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1) { s32 i; sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG; - for (i = 0; i < PARTY_SIZE / 2; i++) - sBattleBuffersTransferData[1 + i] = battlePartyOrder[i]; + for (i = 0; i < 3; i++) + sBattleBuffersTransferData[1 + i] = arg1[i]; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } @@ -1309,12 +1309,12 @@ void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3); } -void BtlController_EmitTwoReturnValues(u8 bufferId, u8 ret8, u16 ret16) +void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2) { sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES; - sBattleBuffersTransferData[1] = ret8; - sBattleBuffersTransferData[2] = ret16; - sBattleBuffersTransferData[3] = (ret16 & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = arg1; + sBattleBuffersTransferData[2] = arg2; + sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } @@ -1329,20 +1329,20 @@ void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battleP PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5); } -void BtlController_EmitOneReturnValue(u8 bufferId, u16 ret) +void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1) { sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE; - sBattleBuffersTransferData[1] = ret; - sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = arg1; + sBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8; sBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret) +void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b) { sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE; - sBattleBuffersTransferData[1] = ret; - sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = b; + sBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; sBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } diff --git a/src/battle_dome.c b/src/battle_dome.c index cbd9d0b6b..aadd85afd 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -73,43 +73,40 @@ struct TourneyTreeLineSection #define tMode data[2] #define tPrevTaskId data[3] -#define EFFECTIVENESS_MODE_GOOD 0 -#define EFFECTIVENESS_MODE_BAD 1 -#define EFFECTIVENESS_MODE_AI_VS_AI 2 - -static u8 GetDomeTrainerMonIvs(u16); -static void SwapDomeTrainers(int, int, u16 *); -static void CalcDomeMonStats(u16, int, int, u8, u8, int *); -static void CreateDomeOpponentMons(u16); -static int SelectOpponentMons_Good(u16, bool8); -static int SelectOpponentMons_Bad(u16, bool8); -static int GetTypeEffectivenessPoints(int, int, int); -static int SelectOpponentMonsFromParty(int *, bool8); -static void Task_ShowTourneyInfoCard(u8); -static void Task_HandleInfoCardInput(u8); -static u8 Task_GetInfoCardInput(u8); +// This file's functions. +static u8 GetDomeTrainerMonIvs(u16 trainerId); +static void SwapDomeTrainers(int id1, int id2, u16 *statsArray); +static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 nature, int *stats); +static void CreateDomeOpponentMons(u16 tournamentTrainerId); +static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 arg1); +static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 arg1); +static int GetTypeEffectivenessPoints(int move, int species, int arg2); +static int SelectOpponentMonsFromParty(int *arr, bool8 arg1); +static void Task_ShowTourneyInfoCard(u8 taskId); +static void Task_HandleInfoCardInput(u8 taskId); +static u8 Task_GetInfoCardInput(u8 taskId); static void SetFacilityTrainerAndMonPtrs(void); -static int TrainerIdToTournamentId(u16); +static int TrainerIdToTournamentId(u16 trainerId); static u16 TrainerIdOfPlayerOpponent(void); -static void Task_ShowTourneyTree(u8); -static void Task_HandleStaticTourneyTreeInput(u8); +static void Task_ShowTourneyTree(u8 taskId); +static void Task_HandleStaticTourneyTreeInput(u8 taskId); static void CB2_TourneyTree(void); static void VblankCb_TourneyInfoCard(void); -static void DisplayMatchInfoOnCard(u8, u8); -static void DisplayTrainerInfoOnCard(u8, u8); +static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo); +static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId); static int BufferDomeWinString(u8, u8*); static u8 GetDomeBrainTrainerPicId(void); static u8 GetDomeBrainTrainerClass(void); -static void CopyDomeBrainTrainerName(u8 *); -static void CopyDomeTrainerName(u8 *, u16); +static void CopyDomeBrainTrainerName(u8 *str); +static void CopyDomeTrainerName(u8 *str, u16 trainerId); static void HblankCb_TourneyTree(void); static void VblankCb_TourneyTree(void); -static u8 UpdateTourneyTreeCursor(u8); -static void DecideRoundWinners(u8); -static u8 GetOpposingNPCTournamentIdByRound(u8, u8); +static u8 UpdateTourneyTreeCursor(u8 taskId); +static void DecideRoundWinners(u8 roundId); +static u8 GetOpposingNPCTournamentIdByRound(u8 tournamentId, u8); static void DrawTourneyAdvancementLine(u8, u8); -static void SpriteCb_HorizontalScrollArrow(struct Sprite *); -static void SpriteCb_VerticalScrollArrow(struct Sprite *); +static void SpriteCb_HorizontalScrollArrow(struct Sprite *sprite); +static void SpriteCb_VerticalScrollArrow(struct Sprite *sprite); static void InitDomeChallenge(void); static void GetDomeData(void); static void SetDomeData(void); @@ -133,6 +130,7 @@ static void BufferLastDomeWinnerName(void); static void InitRandomTourneyTreeResults(void); static void InitDomeTrainers(void); +// EWRAM variables. EWRAM_DATA u32 gPlayerPartyLostHP = 0; // never read static EWRAM_DATA u32 sPlayerPartyMaxHP = 0; // never read static EWRAM_DATA struct TourneyTreeInfoCard *sInfoCard = {0}; @@ -2082,6 +2080,7 @@ static const u8 sTourneyTreeLineSectionArrayCounts[DOME_TOURNAMENT_TRAINERS_COUN {ARRAY_COUNT(sLineSectionTrainer16Round1), ARRAY_COUNT(sLineSectionTrainer16Round2), ARRAY_COUNT(sLineSectionTrainer16Semifinal), ARRAY_COUNT(sLineSectionTrainer16Final)}, }; +// code void CallBattleDomeFunction(void) { sBattleDomeFunctions[gSpecialVar_0x8004](); @@ -2593,33 +2592,28 @@ static void CreateDomeOpponentMons(u16 tournamentTrainerId) } } -// Returns a bitmask representing which 2 of the trainer's 3 pokemon to select. -// The choice is calculated solely depending on the type effectiveness of their -// movesets against the player's pokemon. -// There is a 50% chance of either a "good" or "bad" selection mode being used. -// In the good mode movesets are preferred which are more effective against the -// player, and in the bad mode the opposite is true. If all 3 pokemon tie, the -// other mode will be tried. If they tie again, the pokemon selection is random. int GetDomeTrainerSelectedMons(u16 tournamentTrainerId) { int selectedMonBits; if (Random() & 1) { - selectedMonBits = SelectOpponentMons_Good(tournamentTrainerId, FALSE); + selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, FALSE); if (selectedMonBits == 0) - selectedMonBits = SelectOpponentMons_Bad(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, TRUE); } else { - selectedMonBits = SelectOpponentMons_Bad(tournamentTrainerId, FALSE); + selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, FALSE); if (selectedMonBits == 0) - selectedMonBits = SelectOpponentMons_Good(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, TRUE); } return selectedMonBits; } -static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom) +// Could probably use a better name once GetTypeEffectivenessPoints is clarified +// Personality seems to be used to select a different weighting system for type effectiveness points +static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; int partyMovePoints[FRONTIER_PARTY_SIZE]; @@ -2634,12 +2628,12 @@ static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom) if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_GOOD); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); } else { partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_GOOD); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); } } } @@ -2647,8 +2641,8 @@ static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom) return SelectOpponentMonsFromParty(partyMovePoints, allowRandom); } -// Identical to function above, but uses EFFECTIVENESS_MODE_BAD -static int SelectOpponentMons_Bad(u16 tournamentTrainerId, bool8 allowRandom) +// See above function, identical but uses MON_DATA_OT_ID +static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; int partyMovePoints[FRONTIER_PARTY_SIZE]; @@ -2663,12 +2657,12 @@ static int SelectOpponentMons_Bad(u16 tournamentTrainerId, bool8 allowRandom) if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_BAD); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); } else { partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_BAD); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); } } } @@ -2741,7 +2735,7 @@ static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom) #define TYPE_x2 40 #define TYPE_x4 80 -static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) +static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) { int defType1, defType2, defAbility, moveType; int i = 0; @@ -2757,20 +2751,11 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) if (defAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) { - // They likely meant to return here, as 8 is the number of points normally used in this mode for moves with no effect. - // Because there's no return the value instead gets interpreted by the switch, and the number of points becomes 0. - if (mode == EFFECTIVENESS_MODE_BAD) - { + if (arg2 == 1) typePower = 8; - #ifdef BUGFIX - return; - #endif - } } else { - // Calculate a "type power" value to determine the benefit of using this type move against the target. - // This value will then be used to get the number of points to assign to the move. while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) @@ -2782,30 +2767,33 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) { // BUG: the value of TYPE_x2 does not exist in gTypeEffectiveness, so if defAbility is ABILITY_WONDER_GUARD, the conditional always fails #ifndef BUGFIX - #define WONDER_GUARD_EFFECTIVENESS TYPE_x2 - #else - #define WONDER_GUARD_EFFECTIVENESS TYPE_MUL_SUPER_EFFECTIVE - #endif if (TYPE_EFFECT_DEF_TYPE(i) == defType1) - if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == WONDER_GUARD_EFFECTIVENESS) || defAbility != ABILITY_WONDER_GUARD) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD) typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) - if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == WONDER_GUARD_EFFECTIVENESS) || defAbility != ABILITY_WONDER_GUARD) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD) typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + #else + if (TYPE_EFFECT_DEF_TYPE(i) == defType1) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD) + typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD) + typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + #endif } i += 3; } } - switch (mode) + switch (arg2) { - case EFFECTIVENESS_MODE_GOOD: - // Weights moves that more effective. + case 0: switch (typePower) { - case TYPE_x0: - case TYPE_x0_25: case TYPE_x0_50: + case TYPE_x0_25: + case TYPE_x0: default: typePower = 0; break; @@ -2820,24 +2808,22 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) break; } break; - case EFFECTIVENESS_MODE_BAD: - // Weights moves that are less effective. - // Odd that there's no limit on this being used, even the Frontier Brain could end up using this. + case 1: switch (typePower) { - case TYPE_x0: - typePower = 8; + default: + case TYPE_x1: + typePower = 0; break; case TYPE_x0_25: typePower = 4; break; + case TYPE_x0: + typePower = 8; + break; case TYPE_x0_50: typePower = 2; break; - default: - case TYPE_x1: - typePower = 0; - break; case TYPE_x2: typePower = -2; break; @@ -2846,9 +2832,7 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) break; } break; - case EFFECTIVENESS_MODE_AI_VS_AI: - // Used as part of calculating the winner in a battle between two AIs. - // Weights moves that are more effective much more strongly in both directions. + case 2: switch (typePower) { case TYPE_x0: @@ -5863,7 +5847,7 @@ static void InitRandomTourneyTreeResults(void) DOME_TRAINERS[i].forfeited = FALSE; } - monLevel = FRONTIER_MAX_LEVEL_50; + monLevel = 50; for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { monTypesBits = 0; @@ -6006,7 +5990,7 @@ static void DecideRoundWinners(u8 roundId) for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].moves[moveSlot], - gFacilityTrainerMons[DOME_MONS[tournamentId2][monId2]].species, EFFECTIVENESS_MODE_AI_VS_AI); + gFacilityTrainerMons[DOME_MONS[tournamentId2][monId2]].species, 2); } } species = gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].species; @@ -6029,7 +6013,7 @@ static void DecideRoundWinners(u8 roundId) for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].moves[moveSlot], - gFacilityTrainerMons[DOME_MONS[tournamentId1][monId2]].species, EFFECTIVENESS_MODE_AI_VS_AI); + gFacilityTrainerMons[DOME_MONS[tournamentId1][monId2]].species, 2); } } species = gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].species; diff --git a/src/battle_factory.c b/src/battle_factory.c index a68ef8180..d88ed37f9 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -12,15 +12,15 @@ #include "constants/battle_factory.h" #include "constants/battle_frontier.h" #include "constants/battle_frontier_mons.h" -#include "constants/battle_tent.h" #include "constants/frontier_util.h" #include "constants/layouts.h" #include "constants/trainers.h" #include "constants/moves.h" -#include "constants/items.h" +// IWRAM bss static bool8 sPerformedRentalSwap; +// This file's functions. static void InitFactoryChallenge(void); static void GetBattleFactoryData(void); static void SetBattleFactoryData(void); @@ -212,7 +212,7 @@ static void InitFactoryChallenge(void) } sPerformedRentalSwap = FALSE; - for (i = 0; i < ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); i++) + for (i = 0; i < 6; i++) gSaveBlock2Ptr->frontier.rentalMons[i].monId = 0xFFFF; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) gFrontierTempParty[i] = 0xFFFF; @@ -310,12 +310,11 @@ static void GenerateOpponentMons(void) u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u32 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode]; - u32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; + u32 challengeNum = winStreak / 7; gFacilityTrainers = gBattleFrontierTrainers; do { - // Choose a random trainer, ensuring no repeats in this challenge trainerId = GetRandomScaledFrontierTrainerId(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { @@ -325,32 +324,27 @@ static void GenerateOpponentMons(void) } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum); gTrainerBattleOpponent_A = trainerId; - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < FRONTIER_STAGES_PER_CHALLENGE - 1) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = trainerId; i = 0; while (i != FRONTIER_PARTY_SIZE) { u16 monId = GetFactoryMonId(lvlMode, challengeNum, FALSE); - - // Unown (FRONTIER_MON_UNOWN) is forbidden on opponent Factory teams. if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN) continue; - // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player - for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) + for (j = 0; j < 6; j++) { if (gFacilityTrainerMons[monId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) break; } - if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) + if (j != 6) continue; - // "High tier" pokemon are only allowed on open level mode if (lvlMode == FRONTIER_LVL_50 && monId > FRONTIER_MONS_HIGH_TIER) continue; - // Ensure this species hasn't already been chosen for the opponent for (k = firstMonId; k < firstMonId + i; k++) { if (species[k] == gFacilityTrainerMons[monId].species) @@ -359,16 +353,14 @@ static void GenerateOpponentMons(void) if (k != firstMonId + i) continue; - // Ensure held items don't repeat on the opponent's team for (k = firstMonId; k < firstMonId + i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) break; } if (k != firstMonId + i) continue; - // Successful selection species[i] = gFacilityTrainerMons[monId].species; heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; gFrontierTempParty[i] = monId; @@ -414,15 +406,15 @@ static void SetPlayerAndOpponentParties(void) if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_TENT) { gFacilityTrainerMons = gSlateportBattleTentMons; - monLevel = TENT_MIN_LEVEL; + monLevel = 30; } else { gFacilityTrainerMons = gBattleFrontierMons; if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) - monLevel = FRONTIER_MAX_LEVEL_OPEN; + monLevel = 100; else - monLevel = FRONTIER_MAX_LEVEL_50; + monLevel = 50; } if (gSpecialVar_0x8005 < 2) @@ -626,9 +618,9 @@ static void GetOpponentMostCommonMonType(void) // Determine which are the two most-common types. // The second most-common type is only updated if // its count is equal to the most-common type. - mostCommonTypes[0] = 0; - mostCommonTypes[1] = 0; - for (i = 1; i < NUMBER_OF_MON_TYPES; i++) + mostCommonTypes[0] = TYPE_NORMAL; + mostCommonTypes[1] = TYPE_NORMAL; + for (i = TYPE_FIGHTING; i < NUMBER_OF_MON_TYPES; i++) { if (typeCounts[mostCommonTypes[0]] < typeCounts[i]) mostCommonTypes[0] = i; @@ -773,15 +765,15 @@ void FillFactoryBrainParty(void) if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN) continue; - if (monLevel == FRONTIER_MAX_LEVEL_50 && monId > FRONTIER_MONS_HIGH_TIER) + if (monLevel == 50 && monId > FRONTIER_MONS_HIGH_TIER) continue; - for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) + for (j = 0; j < 6; j++) { if (monId == gSaveBlock2Ptr->frontier.rentalMons[j].monId) break; } - if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) + if (j != 6) continue; for (k = 0; k < i; k++) @@ -794,7 +786,7 @@ void FillFactoryBrainParty(void) for (k = 0; k < i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) break; } if (k != i) diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index 14c63b7b8..787dc4740 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -1131,7 +1131,8 @@ static void CB2_InitSelectScreen(void) switch (gMain.state) { case 0: - TRY_FREE_AND_SET_NULL(sFactorySelectMons); + if (sFactorySelectMons != NULL) + FREE_AND_SET_NULL(sFactorySelectMons); SetHBlankCallback(NULL); SetVBlankCallback(NULL); CpuFill32(0, (void *)VRAM, VRAM_SIZE); @@ -4220,12 +4221,17 @@ static void Task_OpenMonPic(u8 taskId) return; break; default: + #ifndef UBFIX DestroyTask(taskId); - // Accessing data of destroyed task. Task data isn't reset until a new task needs that task id. + #endif + // UB: Should not use the task after it has been deleted. if (gTasks[taskId].tIsSwapScreen == TRUE) Swap_CreateMonSprite(); else Select_CreateMonSprite(); + #ifdef UBFIX + DestroyTask(taskId); + #endif return; } task->tState++; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index d547dec0f..2a690d129 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -353,12 +353,12 @@ void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite) } } -static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 pointless) +static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 arg1) { sprite->animPaused = TRUE; sprite->callback = SpriteCallbackDummy; - if (!pointless) + if (!arg1) StartSpriteAffineAnim(sprite, 1); else StartSpriteAffineAnim(sprite, 1); @@ -590,7 +590,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId) if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + battlerId * 16; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); } @@ -653,7 +653,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId) if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + battlerId * 16; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); } @@ -783,7 +783,7 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) return retVal; } -void LoadBattleBarGfx(u8 unused) +void LoadBattleBarGfx(u8 arg0) { LZDecompressWram(gBattleInterfaceGfx_BattleBar, gMonSpritesGfxPtr->barFontGfx); } @@ -973,7 +973,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform) if (targetSpecies == SPECIES_CASTFORM) { gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies]; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, 32); } diff --git a/src/battle_interface.c b/src/battle_interface.c index dbcab4a9c..26209fe2d 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -158,36 +158,36 @@ enum HEALTHBOX_GFX_FRAME_END_BAR, }; -static const u8 *GetHealthboxElementGfxPtr(u8); -static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *, u32, u32, u32, u32 *); +static const u8 *GetHealthboxElementGfxPtr(u8 elementId); +static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId); static void RemoveWindowOnHealthbox(u32 windowId); -static void UpdateHpTextInHealthboxInDoubles(u8, s16, u8); -static void UpdateStatusIconInHealthbox(u8); +static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); +static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId); -static void TextIntoHealthboxObject(void *, u8 *, s32); -static void SafariTextIntoHealthboxObject(void *, u8 *, u32); -static void HpTextIntoHealthboxObject(void *, u8 *, u32); -static void FillHealthboxObject(void *, u32, u32); +static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth); +static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth); +static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth); +static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2); -static void Task_HidePartyStatusSummary_BattleStart_1(u8); -static void Task_HidePartyStatusSummary_BattleStart_2(u8); -static void Task_HidePartyStatusSummary_DuringBattle(u8); +static void Task_HidePartyStatusSummary_BattleStart_1(u8 taskId); +static void Task_HidePartyStatusSummary_BattleStart_2(u8 taskId); +static void Task_HidePartyStatusSummary_DuringBattle(u8 taskId); -static void SpriteCB_HealthBoxOther(struct Sprite *); -static void SpriteCB_HealthBar(struct Sprite *); -static void SpriteCB_StatusSummaryBar_Enter(struct Sprite *); -static void SpriteCB_StatusSummaryBar_Exit(struct Sprite *); -static void SpriteCB_StatusSummaryBalls_Enter(struct Sprite *); -static void SpriteCB_StatusSummaryBalls_Exit(struct Sprite *); -static void SpriteCB_StatusSummaryBalls_OnSwitchout(struct Sprite *); +static void SpriteCB_HealthBoxOther(struct Sprite *sprite); +static void SpriteCB_HealthBar(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBar_Enter(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBar_Exit(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBalls_Enter(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBalls_Exit(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBalls_OnSwitchout(struct Sprite *sprite); -static u8 GetStatusIconForBattlerId(u8, u8); -static s32 CalcNewBarValue(s32, s32, s32, s32 *, u8, u16); -static u8 GetScaledExpFraction(s32, s32, s32, u8); -static void MoveBattleBarGraphically(u8, u8); -static u8 CalcBarFilledPixels(s32, s32, s32, s32 *, u8 *, u8); -static void Debug_TestHealthBar_Helper(struct TestingBar *, s32 *, u16 *); +static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId); +static s32 CalcNewBarValue(s32 maxValue, s32 currValue, s32 receivedValue, s32 *arg3, u8 arg4, u16 arg5); +static u8 GetScaledExpFraction(s32 currValue, s32 receivedValue, s32 maxValue, u8 scale); +static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar); +static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *arg4, u8 scale); +static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *arg1, u16 *arg2); static const struct OamData sOamData_64x32 = { @@ -814,11 +814,11 @@ static void Debug_DrawNumber(s16 number, u16 *dest, bool8 unk) } // Unused -static void Debug_DrawNumberPair(s16 number1, s16 number2, u16 *dest) +static void Debug_DrawNumberPair(s16 number1, s16 number2, u16 *arg2) { - dest[4] = 0x1E; - Debug_DrawNumber(number2, dest, FALSE); - Debug_DrawNumber(number1, dest + 5, TRUE); + arg2[4] = 0x1E; + Debug_DrawNumber(number2, arg2, 0); + Debug_DrawNumber(number1, arg2 + 5, 1); } // Because the healthbox is too large to fit into one sprite, it is divided into two sprites. @@ -1420,7 +1420,7 @@ void SwapHpBarsWithHpText(void) #define tIsBattleStart data[10] #define tBlend data[15] -u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart) +u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart) { bool8 isOpponent; s16 bar_X, bar_Y, bar_pos2_X, bar_data0; @@ -1429,7 +1429,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 ballIconSpritesIds[PARTY_SIZE]; u8 taskId; - if (!skipPlayer || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT) + if (!arg2 || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT) { if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) { @@ -1442,7 +1442,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, { isOpponent = TRUE; - if (!skipPlayer || !IsDoubleBattle()) + if (!arg2 || !IsDoubleBattle()) bar_X = 104, bar_Y = 40; else bar_X = 104, bar_Y = 16; @@ -2383,7 +2383,7 @@ static s32 CalcNewBarValue(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *c return ret; } -static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *pixelsArray, u8 scale) +static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *arg4, u8 scale) { u8 pixels, filledPixels, totalPixels; u8 i; @@ -2397,7 +2397,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 totalPixels = scale * 8; for (i = 0; i < scale; i++) - pixelsArray[i] = 0; + arg4[i] = 0; if (maxValue < totalPixels) pixels = (*currValue * totalPixels / maxValue) >> 8; @@ -2408,7 +2408,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 if (filledPixels == 0 && newValue > 0) { - pixelsArray[0] = 1; + arg4[0] = 1; filledPixels = 1; } else @@ -2417,11 +2417,11 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 { if (pixels >= 8) { - pixelsArray[i] = 8; + arg4[i] = 8; } else { - pixelsArray[i] = pixels; + arg4[i] = pixels; break; } pixels -= 8; @@ -2433,7 +2433,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 // Unused // These two functions seem as if they were made for testing the health bar. -static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 *dest, s32 unused) +static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 *arg2, s32 arg3) { s16 ret, var; @@ -2441,31 +2441,31 @@ static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 * barInfo->oldValue, barInfo->receivedValue, currValue, B_HEALTHBAR_PIXELS / 8, 1); - Debug_TestHealthBar_Helper(barInfo, currValue, dest); + Debug_TestHealthBar_Helper(barInfo, currValue, arg2); if (barInfo->maxValue < B_HEALTHBAR_PIXELS) var = *currValue >> 8; else var = *currValue; - DummiedOutFunction(barInfo->maxValue, var, unused); + DummiedOutFunction(barInfo->maxValue, var, arg3); return ret; } -static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *currValue, u16 *dest) +static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *currValue, u16 *arg2) { - u8 pixels[6]; - u16 src[6]; + u8 sp8[6]; + u16 sp10[6]; u8 i; CalcBarFilledPixels(barInfo->maxValue, barInfo->oldValue, - barInfo->receivedValue, currValue, pixels, B_HEALTHBAR_PIXELS / 8); + barInfo->receivedValue, currValue, sp8, B_HEALTHBAR_PIXELS / 8); for (i = 0; i < 6; i++) - src[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + pixels[i]); + sp10[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + sp8[i]); - CpuCopy16(src, dest, sizeof(src)); + CpuCopy16(sp10, arg2, sizeof(sp10)); } static u8 GetScaledExpFraction(s32 oldValue, s32 receivedValue, s32 maxValue, u8 scale) @@ -2546,9 +2546,9 @@ static void RemoveWindowOnHealthbox(u32 windowId) RemoveWindow(windowId); } -static void FillHealthboxObject(void *dest, u32 valMult, u32 numTiles) +static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2) { - CpuFill32(0x11111111 * valMult, dest, numTiles * TILE_SIZE_4BPP); + CpuFill32(0x11111111 * arg1, dest, arg2 * TILE_SIZE_4BPP); } static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth) diff --git a/src/battle_main.c b/src/battle_main.c index f61d5eaae..9a0de4199 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1498,7 +1498,8 @@ static void CB2_PreInitMultiBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); + Free(sMultiPartnerPartyBuffer); + sMultiPartnerPartyBuffer = NULL; } } else if (gReceivedRemoteLinkPlayers == 0) @@ -1506,7 +1507,8 @@ static void CB2_PreInitMultiBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); + Free(sMultiPartnerPartyBuffer); + sMultiPartnerPartyBuffer = NULL; } break; } @@ -1542,7 +1544,8 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); + Free(sMultiPartnerPartyBuffer); + sMultiPartnerPartyBuffer = NULL; } break; } @@ -5206,6 +5209,12 @@ static void ReturnFromBattleToOverworld(void) m4aSongNumStop(SE_LOW_HEALTH); SetMainCallback2(gMain.savedCallback); + + // if you experience the follower de-syncing with the player after battle, set POST_BATTLE_FOLLOWER_FIX to TRUE in include/constants/global.h + #if POST_BATTLE_FOLLOWER_FIX + FollowMe_WarpSetEnd(); + gObjectEvents[GetFollowerObjectId()].invisible = TRUE; + #endif } void RunBattleScriptCommands_PopCallbacksStack(void) diff --git a/src/battle_message.c b/src/battle_message.c index 2776c952b..9d1b88ba7 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1035,7 +1035,7 @@ const u16 gFirstTurnOfTwoStringIds[] = }; // Index copied from move's index in gTrappingMoves -const u16 gWrappedStringIds[NUM_TRAPPING_MOVES] = +const u16 gWrappedStringIds[] = { STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP @@ -1253,7 +1253,7 @@ const u16 gCaughtMonStringIds[] = [B_MSG_LANETTES_BOX_FULL] = STRINGID_PKMNBOXLANETTESPCFULL, }; -const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] = +const u16 gTrappingMoves[] = { MOVE_BIND, MOVE_WRAP, @@ -1261,7 +1261,7 @@ const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] = MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, - 0xFFFF // Never read + 0xFFFF }; const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); diff --git a/src/battle_pike.c b/src/battle_pike.c index 433dd0a08..dcdabb5dc 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -573,7 +573,7 @@ static void SetupRoomObjectEvents(void) objGfx1 = OBJ_EVENT_GFX_LINK_RECEPTIONIST; break; case PIKE_ROOM_NPC: - objGfx1 = (u8)(GetNPCRoomGraphicsId()); + objGfx1 = (u16)(GetNPCRoomGraphicsId()); break; case PIKE_ROOM_STATUS: objGfx1 = OBJ_EVENT_GFX_GENTLEMAN; @@ -684,7 +684,7 @@ static void SetBattlePikeData(void) static void IsNextRoomFinal(void) { - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum > NUM_PIKE_ROOMS) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum > 14) gSpecialVar_Result = TRUE; else gSpecialVar_Result = FALSE; @@ -1117,20 +1117,20 @@ bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate) if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) { monLevel = GetHighestLevelInPlayerParty(); - if (monLevel < FRONTIER_MIN_LEVEL_OPEN) + if (monLevel < 60) { - monLevel = FRONTIER_MIN_LEVEL_OPEN; + monLevel = 60; } else { monLevel -= wildMons[headerId][pikeMonId].levelDelta; - if (monLevel < FRONTIER_MIN_LEVEL_OPEN) - monLevel = FRONTIER_MIN_LEVEL_OPEN; + if (monLevel < 60) + monLevel = 60; } } else { - monLevel = FRONTIER_MAX_LEVEL_50 - wildMons[headerId][pikeMonId].levelDelta; + monLevel = 50 - wildMons[headerId][pikeMonId].levelDelta; } if (checkKeenEyeIntimidate == TRUE && !CanEncounterWildMon(monLevel)) @@ -1158,11 +1158,11 @@ u8 GetBattlePikeWildMonHeaderId(void) u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode]; - if (winStreak <= 20 * NUM_PIKE_ROOMS) + if (winStreak <= 280) headerId = 0; - else if (winStreak <= 40 * NUM_PIKE_ROOMS) + else if (winStreak <= 560) headerId = 1; - else if (winStreak <= 60 * NUM_PIKE_ROOMS) + else if (winStreak <= 840) headerId = 2; else headerId = 3; @@ -1392,10 +1392,10 @@ static void PrepareOneTrainer(bool8 difficult) if (!difficult) battleNum = 1; else - battleNum = FRONTIER_STAGES_PER_CHALLENGE - 1; + battleNum = 6; lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; + challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; do { trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); @@ -1409,7 +1409,7 @@ static void PrepareOneTrainer(bool8 difficult) gTrainerBattleOpponent_A = trainerId; gFacilityTrainers = gBattleFrontierTrainers; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < NUM_PIKE_ROOMS) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A; } @@ -1418,7 +1418,7 @@ static void PrepareTwoTrainers(void) int i; u16 trainerId; u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - u16 challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; + u16 challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; gFacilityTrainers = gBattleFrontierTrainers; do @@ -1433,7 +1433,7 @@ static void PrepareTwoTrainers(void) gTrainerBattleOpponent_A = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= NUM_PIKE_ROOMS) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 14) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A; do @@ -1448,7 +1448,7 @@ static void PrepareTwoTrainers(void) gTrainerBattleOpponent_B = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < NUM_PIKE_ROOMS) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2] = gTrainerBattleOpponent_B; } @@ -1456,7 +1456,7 @@ static void ClearPikeTrainerIds(void) { u8 i; - for (i = 0; i < NUM_PIKE_ROOMS; i++) + for (i = 0; i < 14; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; } diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index a885f1c8e..9039f60f2 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -83,18 +83,18 @@ static void ClearPyramidPartyHeldItems(void); static void SetPyramidFloorPalette(void); static void BattlePyramidStartMenu(void); static void RestorePyramidPlayerParty(void); -static void InitPyramidBagItems(u8); +static void InitPyramidBagItems(u8 lvlMode); static u8 GetPyramidFloorTemplateId(void); static u8 GetPostBattleDirectionHintTextIndex(int *, u8, u8); -static void Task_SetPyramidFloorPalette(u8); -static void MarkPyramidTrainerAsBattled(u16); -static void GetPyramidFloorLayoutOffsets(u8 *); +static void Task_SetPyramidFloorPalette(u8 taskId); +static void MarkPyramidTrainerAsBattled(u16 trainerId); +static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets); static void GetPyramidEntranceAndExitSquareIds(u8 *, u8 *); static void SetPyramidObjectPositionsUniformly(u8); static bool8 SetPyramidObjectPositionsInAndNearSquare(u8, u8); static bool8 SetPyramidObjectPositionsNearSquare(u8, u8); -static bool8 TrySetPyramidObjectEventPositionInSquare(u8, u8 *, u8, u8); -static bool8 TrySetPyramidObjectEventPositionAtCoords(bool8, u8, u8, u8 *, u8, u8); +static bool8 TrySetPyramidObjectEventPositionInSquare(u8 arg0, u8 *floorLayoutOffsets, u8 squareId, u8 objectEventId); +static bool8 TrySetPyramidObjectEventPositionAtCoords(bool8 objType, u8 x, u8 y, u8 *floorLayoutOffsets, u8 squareId, u8 objectEventId); // Const rom data. #define ABILITY_RANDOM 2 // For wild mons data. @@ -279,9 +279,9 @@ static const u8 sPyramidFloorTemplateOptions[][2] = {100, 15} }; -static const u8 sFloorTemplateOffsets[FRONTIER_STAGES_PER_CHALLENGE] = +static const u8 sFloorTemplateOffsets[] = { - 0, 4, 9, 14, 19, 24, 29 + 0, 4, 9, 14, 19, 24, 29, 0 }; static const u16 sPickupItemsLvl50[TOTAL_ROUNDS][PICKUP_ITEMS_PER_ROUND] = @@ -406,7 +406,7 @@ static const u8 sPickupItemSlots[][2] = {100, 9}, }; -static const u8 sPickupItemOffsets[FRONTIER_STAGES_PER_CHALLENGE] = {0, 9, 18, 27, 36, 45, 54}; +static const u8 sPickupItemOffsets[] = {0, 9, 18, 27, 36, 45, 54}; static const struct PyramidTrainerEncounterMusic sTrainerClassEncounterMusic[54] = { @@ -963,7 +963,7 @@ static void SeedPyramidFloor(void) { int i; - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.pyramidRandoms); i++) + for (i = 0; i < 4; i++) gSaveBlock2Ptr->frontier.pyramidRandoms[i] = Random(); gSaveBlock2Ptr->frontier.pyramidTrainerFlags = 0; @@ -977,7 +977,7 @@ static void SetPickupItem(void) u8 id; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u32 floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - u32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE) % TOTAL_ROUNDS; + u32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7) % TOTAL_ROUNDS; if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; @@ -1016,8 +1016,8 @@ static void HidePyramidItem(void) { // Rather than using event flags to hide the item object event, // it moves them far off the map bounds. - events[i].x = SHRT_MAX; - events[i].y = SHRT_MAX; + events[i].x = 0x7FFF; + events[i].y = 0x7FFF; break; } i++; @@ -1063,7 +1063,7 @@ static void ShowPostBattleHintText(void) case HINT_REMAINING_ITEMS: for (i = 0; i < GetNumBattlePyramidObjectEvents(); i++) { - if (events[i].graphicsId == OBJ_EVENT_GFX_ITEM_BALL && events[i].x != SHRT_MAX && events[i].y != SHRT_MAX) + if (events[i].graphicsId == OBJ_EVENT_GFX_ITEM_BALL && events[i].x != 0x7FFF && events[i].y != 0x7FFF) textIndex++; } i = 1; @@ -1071,7 +1071,7 @@ static void ShowPostBattleHintText(void) case HINT_REMAINING_TRAINERS: id = GetPyramidFloorTemplateId(); textIndex = sPyramidFloorTemplates[id].numTrainers; - for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) + for (i = 0; i < 8; i++) { if (gBitTable[i] & gSaveBlock2Ptr->frontier.pyramidTrainerFlags) textIndex--; @@ -1326,7 +1326,7 @@ static void MarkPyramidTrainerAsBattled(u16 trainerId) { int i; - for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) + for (i = 0; i < 8; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) gSaveBlock2Ptr->frontier.pyramidTrainerFlags |= gBitTable[i]; @@ -1345,7 +1345,7 @@ void GenerateBattlePyramidWildMon(void) const struct PyramidWildMon *wildMons; u32 id; u32 lvl = gSaveBlock2Ptr->frontier.lvlMode; - u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / FRONTIER_STAGES_PER_CHALLENGE) % TOTAL_ROUNDS; + u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / 7) % TOTAL_ROUNDS; if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; @@ -1488,13 +1488,13 @@ static u16 GetUniqueTrainerId(u8 objectEventId) int i; u16 trainerId; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - u32 challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; - u32 floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - if (floor == FRONTIER_STAGES_PER_CHALLENGE) + u32 challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7; + u32 battleNum = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + if (battleNum == 7) { do { - trainerId = GetRandomScaledFrontierTrainerId(challengeNum + 1, floor); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum + 1, battleNum); for (i = 0; i < objectEventId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1506,7 +1506,7 @@ static u16 GetUniqueTrainerId(u8 objectEventId) { do { - trainerId = GetRandomScaledFrontierTrainerId(challengeNum, floor); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); for (i = 0; i < objectEventId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1523,11 +1523,11 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio int y, x; int i; u8 entranceSquareId, exitSquareId; - u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); + u8 *floorLayoutOffsets = AllocZeroed(16); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); GetPyramidEntranceAndExitSquareIds(&entranceSquareId, &exitSquareId); - for (i = 0; i < NUM_PYRAMID_FLOOR_SQUARES; i++) + for (i = 0; i < 16; i++) { u16 *map; int yOffset, xOffset; @@ -1535,11 +1535,11 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio const u16 *layoutMap = mapLayout->map; gBackupMapLayout.map = backupMapData; - gBackupMapLayout.width = mapLayout->width * PYRAMID_FLOOR_SQUARES_WIDE + MAP_OFFSET_W; - gBackupMapLayout.height = mapLayout->height * PYRAMID_FLOOR_SQUARES_HIGH + MAP_OFFSET_H; + gBackupMapLayout.width = mapLayout->width * 4 + MAP_OFFSET_W; + gBackupMapLayout.height = mapLayout->height * 4 + MAP_OFFSET_H; map = backupMapData; - yOffset = ((i / PYRAMID_FLOOR_SQUARES_WIDE * mapLayout->height) + MAP_OFFSET) * gBackupMapLayout.width; - xOffset = (i % PYRAMID_FLOOR_SQUARES_WIDE * mapLayout->width) + MAP_OFFSET; + yOffset = ((i / 4 * mapLayout->height) + MAP_OFFSET) * gBackupMapLayout.width; + xOffset = (i % 4 * mapLayout->width) + MAP_OFFSET; map += yOffset + xOffset; for (y = 0; y < mapLayout->height; y++) { @@ -1553,8 +1553,8 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio { if (i == entranceSquareId && setPlayerPosition == FALSE) { - gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % PYRAMID_FLOOR_SQUARES_WIDE)) + x; - gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / PYRAMID_FLOOR_SQUARES_WIDE)) + y; + gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % 4)) + x; + gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / 4)) + y; } map[x] = (layoutMap[x] & (MAPGRID_ELEVATION_MASK | MAPGRID_COLLISION_MASK)) | METATILE_BattlePyramid_Floor; } @@ -1563,7 +1563,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio map[x] = layoutMap[x]; } } - map += MAP_OFFSET_W + (mapLayout->width * PYRAMID_FLOOR_SQUARES_WIDE); + map += MAP_OFFSET_W + (mapLayout->width * 4); layoutMap += mapLayout->width; } } @@ -1577,7 +1577,7 @@ void LoadBattlePyramidObjectEventTemplates(void) u8 id; u8 entranceSquareId, exitSquareId; - for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) + for (i = 0; i < 8; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; id = GetPyramidFloorTemplateId(); @@ -1633,13 +1633,13 @@ void LoadBattlePyramidFloorObjectEventScripts(void) static void GetPyramidEntranceAndExitSquareIds(u8 *entranceSquareId, u8 *exitSquareId) { - *entranceSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[3] % NUM_PYRAMID_FLOOR_SQUARES; - *exitSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[0] % NUM_PYRAMID_FLOOR_SQUARES; + *entranceSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[3] % 16; + *exitSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[0] % 16; if (*entranceSquareId == *exitSquareId) { - *entranceSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[3] + 1 ) % NUM_PYRAMID_FLOOR_SQUARES; - *exitSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[0] + NUM_PYRAMID_FLOOR_SQUARES - 1) % NUM_PYRAMID_FLOOR_SQUARES; + *entranceSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[3] + 1 ) % 16; + *exitSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[0] + 15) % 16; } } @@ -1651,10 +1651,10 @@ static void SetPyramidObjectPositionsUniformly(u8 objType) int squareId; u32 bits = 0; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); + u8 *floorLayoutOffsets = AllocZeroed(16); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); - squareId = gSaveBlock2Ptr->frontier.pyramidRandoms[2] % NUM_PYRAMID_FLOOR_SQUARES; + squareId = gSaveBlock2Ptr->frontier.pyramidRandoms[2] % 16; if (objType == OBJ_TRAINERS) { numObjects = sPyramidFloorTemplates[id].numTrainers; @@ -1682,10 +1682,10 @@ static void SetPyramidObjectPositionsUniformly(u8 objType) if (gBitTable[squareId] & gSaveBlock2Ptr->frontier.pyramidRandoms[3]) bits |= 2; } - if (++squareId >= NUM_PYRAMID_FLOOR_SQUARES) + if (++squareId >= 16) squareId = 0; - if (squareId == gSaveBlock2Ptr->frontier.pyramidRandoms[2] % NUM_PYRAMID_FLOOR_SQUARES) + if (squareId == gSaveBlock2Ptr->frontier.pyramidRandoms[2] % 16) { if (bits & 1) bits |= 6; @@ -1709,7 +1709,7 @@ static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId) int numPlacedObjects = 0; int numObjects; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); + u8 *floorLayoutOffsets = AllocZeroed(16); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); if (objType == OBJ_TRAINERS) @@ -1775,7 +1775,7 @@ static bool8 SetPyramidObjectPositionsNearSquare(u8 objType, u8 squareId) int r8 = 0; int numObjects; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); + u8 *floorLayoutOffsets = AllocZeroed(16); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); if (objType == OBJ_TRAINERS) @@ -1900,7 +1900,7 @@ static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets) int rand = (gSaveBlock2Ptr->frontier.pyramidRandoms[0]) | (gSaveBlock2Ptr->frontier.pyramidRandoms[1] << 16); u8 id = GetPyramidFloorTemplateId(); - for (i = 0; i < NUM_PYRAMID_FLOOR_SQUARES; i++) + for (i = 0; i < 16; i++) { layoutOffsets[i] = sPyramidFloorTemplates[id].layoutOffsets[rand & 0x7]; rand >>= 3; @@ -1931,7 +1931,7 @@ u8 GetNumBattlePyramidObjectEvents(void) u8 i; struct ObjectEventTemplate *events = gSaveBlock1Ptr->objectEventTemplates; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < 16; i++) { if (events[i].localId == 0) break; @@ -1959,7 +1959,7 @@ u16 GetBattlePyramidPickupItemId(void) int rand; u32 i; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - int round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE); + int round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7); if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 66b4cd97d..d1b946146 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -1410,7 +1410,7 @@ void TryStoreHeldItemsInPyramidBag(void) memcpy(newItems, gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); memcpy(newQuantities, gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); - for (i = 0; i < FRONTIER_PARTY_SIZE; i++) + for (i = 0; i < 3; i++) { heldItem = GetMonData(&party[i], MON_DATA_HELD_ITEM); if (heldItem != ITEM_NONE && !AddBagItem(heldItem, 1)) @@ -1426,8 +1426,10 @@ void TryStoreHeldItemsInPyramidBag(void) } heldItem = ITEM_NONE; - for (i = 0; i < FRONTIER_PARTY_SIZE; i++) + for (i = 0; i < 3; i++) + { SetMonData(&party[i], MON_DATA_HELD_ITEM, &heldItem); + } gSpecialVar_Result = 0; Free(newItems); Free(newQuantities); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 4f31f0f01..3c8bbfdee 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2596,7 +2596,7 @@ void SetMoveEffect(bool8 primary, u8 certain) for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++) { - if (gBattleCommunication[MULTISTRING_CHOOSER] >= NUM_TRAPPING_MOVES - 1) + if (gBattleCommunication[MULTISTRING_CHOOSER] > 4) break; if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove) break; diff --git a/src/battle_setup.c b/src/battle_setup.c index be2f7e859..ecb5ad9b9 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -611,6 +611,7 @@ static void CB2_EndWildBattle(void) { SetMainCallback2(CB2_ReturnToField); gFieldCallback = FieldCB_ReturnToFieldNoScriptCheckMusic; + UpdateFollowerPokemonGraphic(); } } @@ -629,6 +630,7 @@ static void CB2_EndScriptedWildBattle(void) else { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + UpdateFollowerPokemonGraphic(); } } @@ -699,22 +701,21 @@ static u8 GetBattleTransitionTypeByMap(void) PlayerGetDestCoords(&x, &y); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); - if (GetFlashLevel()) return TRANSITION_TYPE_FLASH; - - if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return TRANSITION_TYPE_WATER; - - switch (gMapHeader.mapType) + if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) { - case MAP_TYPE_UNDERGROUND: - return TRANSITION_TYPE_CAVE; - case MAP_TYPE_UNDERWATER: - return TRANSITION_TYPE_WATER; - default: - return TRANSITION_TYPE_NORMAL; + switch (gMapHeader.mapType) + { + case MAP_TYPE_UNDERGROUND: + return TRANSITION_TYPE_CAVE; + case MAP_TYPE_UNDERWATER: + return TRANSITION_TYPE_WATER; + default: + return TRANSITION_TYPE_NORMAL; + } } + return TRANSITION_TYPE_WATER; } static u16 GetSumOfPlayerPartyLevel(u8 numMons) @@ -1339,6 +1340,7 @@ static void CB2_EndTrainerBattle(void) else { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + UpdateFollowerPokemonGraphic(); if (!InBattlePyramid() && !InTrainerHillChallenge()) { RegisterTrainerInMatchCall(); @@ -1360,6 +1362,7 @@ static void CB2_EndRematchBattle(void) else { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + UpdateFollowerPokemonGraphic(); RegisterTrainerInMatchCall(); SetBattledTrainersFlags(); HandleRematchVarsOnBattleEnd(); diff --git a/src/battle_tent.c b/src/battle_tent.c index dba9e6e8a..53c91c871 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -56,8 +56,10 @@ static void GenerateInitialRentalMons(void); * */ -static u16 sRandMonId; +// IWRAM bss +static u16 sRandMonSetId; +// const rom data void static (*const sVerdanturfTentFuncs[])(void) = { [VERDANTURF_TENT_FUNC_INIT] = InitVerdanturfTentChallenge, @@ -355,7 +357,7 @@ static void GenerateOpponentMons(void) const u16 *monSet; u16 species[FRONTIER_PARTY_SIZE]; u16 heldItems[FRONTIER_PARTY_SIZE]; - s32 numMons = 0; + s32 monId = 0; gFacilityTrainers = gSlateportBattleTentTrainers; gFacilityTrainerMons = gSlateportBattleTentMons; @@ -364,7 +366,6 @@ static void GenerateOpponentMons(void) { do { - // Choose a random trainer, ensuring no repeats in this challenge trainerId = Random() % NUM_BATTLE_TENT_TRAINERS; for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { @@ -375,53 +376,48 @@ static void GenerateOpponentMons(void) gTrainerBattleOpponent_A = trainerId; monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; - while (monSet[numMons] != 0xFFFF) - numMons++; - if (numMons > 8) + while (monSet[monId] != 0xFFFF) + monId++; + if (monId > 8) break; - numMons = 0; + monId = 0; } - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < TENT_STAGES_PER_CHALLENGE - 1) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 2) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; i = 0; while (i != FRONTIER_PARTY_SIZE) { - sRandMonId = monSet[Random() % numMons]; - - // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player - for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) + sRandMonSetId = monSet[Random() % monId]; + for (j = 0; j < 6; j++) { - if (gFacilityTrainerMons[sRandMonId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) + if (gFacilityTrainerMons[sRandMonSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) break; } - if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) + if (j != 6) continue; - // Ensure this species hasn't already been chosen for the opponent for (k = 0; k < i; k++) { - if (species[k] == gFacilityTrainerMons[sRandMonId].species) + if (species[k] == gFacilityTrainerMons[sRandMonSetId].species) break; } if (k != i) continue; - // Ensure held items don't repeat on the opponent's team for (k = 0; k < i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]) + if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonSetId].itemTableId]) break; } if (k != i) continue; - // Successful selection - species[i] = gFacilityTrainerMons[sRandMonId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]; - gFrontierTempParty[i] = sRandMonId; + species[i] = gFacilityTrainerMons[sRandMonSetId].species; + heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonSetId].itemTableId]; + gFrontierTempParty[i] = sRandMonSetId; i++; } } diff --git a/src/battle_tower.c b/src/battle_tower.c index 354a087c4..989412e9e 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -27,7 +27,6 @@ #include "constants/battle_dome.h" #include "constants/battle_frontier.h" #include "constants/battle_frontier_mons.h" -#include "constants/battle_tent.h" #include "constants/battle_tent_mons.h" #include "constants/battle_tent_trainers.h" #include "constants/battle_tower.h" @@ -688,7 +687,7 @@ struct { u32 facilityClass; const u8 *const *strings; -} static const sPartnerTrainerTextTables[] = +} const sPartnerTrainerTextTables[] = { {FACILITY_CLASS_LASS, sPartnerTextsLass}, {FACILITY_CLASS_YOUNGSTER, sPartnerTextsYoungster}, @@ -770,7 +769,7 @@ struct u8 nature; u8 evs[NUM_STATS]; u16 moves[MAX_MON_MOVES]; -} static const sStevenMons[MULTI_PARTY_SIZE] = +} const sStevenMons[MULTI_PARTY_SIZE] = { { .species = SPECIES_METANG, @@ -1061,7 +1060,7 @@ static void SetNextFacilityOpponent(void) u16 id; u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u16 winStreak = GetCurrentFacilityWinStreak(); - u32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; + u32 challengeNum = winStreak / 7; SetFacilityPtrsGetLevel(); if (battleMode == FRONTIER_MODE_MULTIS || battleMode == FRONTIER_MODE_LINK_MULTIS) @@ -1096,7 +1095,7 @@ static void SetNextFacilityOpponent(void) gTrainerBattleOpponent_A = id; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < FRONTIER_STAGES_PER_CHALLENGE) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 7) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; } } @@ -1108,7 +1107,7 @@ u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum) if (challengeNum <= 7) { - if (battleNum == FRONTIER_STAGES_PER_CHALLENGE - 1) + if (battleNum == 6) { // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges trainerId = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; @@ -1137,7 +1136,7 @@ static void GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, if (challengeNum <= 7) { - if (battleNum == FRONTIER_STAGES_PER_CHALLENGE - 1) + if (battleNum == 6) { // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges range = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; @@ -1327,19 +1326,19 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) if (gSaveBlock2Ptr->frontier.towerRecords[i].trainerId[j] != newRecord->trainerId[j]) break; } - if (j == TRAINER_ID_LENGTH) + if (j == 4) { for (k = 0; k < PLAYER_NAME_LENGTH; k++) { - // Incorrect index being used - #ifdef BUGFIX - #define INDEX k - #else - #define INDEX j - #endif - if (gSaveBlock2Ptr->frontier.towerRecords[i].name[INDEX] != newRecord->name[INDEX]) + #ifdef BUGFIX + if (gSaveBlock2Ptr->frontier.towerRecords[i].name[k] != newRecord->name[k]) break; - if (newRecord->name[INDEX] == EOS) + if (newRecord->name[k] == EOS) + #else + if (gSaveBlock2Ptr->frontier.towerRecords[i].name[j] != newRecord->name[j]) + break; + if (newRecord->name[j] == EOS) + #endif { k = PLAYER_NAME_LENGTH; break; @@ -1635,7 +1634,7 @@ static void FillTentTrainerParty(u8 monsCount) static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; - u16 chosenMonIndices[MAX_FRONTIER_PARTY_SIZE]; + u16 chosenMonIndices[4]; u8 friendship = MAX_FRIENDSHIP; u8 level = SetFacilityPtrsGetLevel(); u8 fixedIV = 0; @@ -1651,7 +1650,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) } else if (trainerId == TRAINER_EREADER) { - for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) + for (i = firstMonId; i < firstMonId + 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]); return; } @@ -1676,7 +1675,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) else { // Apprentice. - for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) + for (i = firstMonId; i < firstMonId + 3; i++) CreateApprenticeMon(&gEnemyParty[i], &gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE], i - firstMonId); return; } @@ -1692,10 +1691,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) while (i != monCount) { u16 monId = monSet[Random() % bfMonCount]; - - // "High tier" pokemon are only allowed on open level mode - // 20 is not a possible value for level here - if ((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER) + if ((level == 50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER) continue; // Ensure this pokemon species isn't a duplicate. @@ -1771,11 +1767,11 @@ static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) fixedIV = 9; if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) - level = FRONTIER_MAX_LEVEL_OPEN; + level = 100; else - level = FRONTIER_MAX_LEVEL_50; + level = 50; - for (i = 0; i != FRONTIER_PARTY_SIZE; i++) + for (i = 0; i != 3; i++) { CreateMonWithEVSpread(&gEnemyParty[firstMonId + i], apprentice->party[i].species, level, fixedIV, 8); friendship = MAX_FRIENDSHIP; @@ -1806,10 +1802,8 @@ u16 GetRandomFrontierMonFromSet(u16 trainerId) do { - // "High tier" pokemon are only allowed on open level mode - // 20 is not a possible value for level here monId = monSet[Random() % numMons]; - } while((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER); + } while((level == 50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER); return monId; } @@ -1837,18 +1831,18 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); // By mistake Battle Tower's Level 50 challenge number is used to determine the IVs for Battle Factory. #ifdef BUGFIX - u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7; #else - u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / FRONTIER_STAGES_PER_CHALLENGE; + u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / 7; #endif - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < FRONTIER_STAGES_PER_CHALLENGE - 1) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6) fixedIV = GetFactoryMonFixedIV(challengeNum, FALSE); else fixedIV = GetFactoryMonFixedIV(challengeNum, TRUE); // Last trainer in challenge uses higher IVs } else if (trainerId == TRAINER_EREADER) { - for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) + for (i = firstMonId; i < firstMonId + 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]); return; } @@ -1888,7 +1882,7 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) { u8 i, j; u8 friendship; - u8 level = TENT_MIN_LEVEL; + u8 level = 30; u8 fixedIV = 0; u32 otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId); @@ -2049,7 +2043,7 @@ void DoSpecialTrainerBattle(void) break; case SPECIAL_BATTLE_EREADER: ZeroEnemyPartyMons(); - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.ereaderTrainer.party); i++) + for (i = 0; i < 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i]); gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_EREADER_TRAINER; gTrainerBattleOpponent_A = 0; @@ -2195,7 +2189,7 @@ static void SaveTowerChallenge(void) { u16 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE); + s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7); if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0)) SaveBattleTowerRecord(); @@ -2285,7 +2279,7 @@ static void LoadMultiPartnerCandidatesData(void) objEventTemplates = gSaveBlock1Ptr->objectEventTemplates; lvlMode = gSaveBlock2Ptr->frontier.lvlMode; battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL); species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); level = SetFacilityPtrsGetLevel(); @@ -2344,7 +2338,7 @@ static void LoadMultiPartnerCandidatesData(void) for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] / FRONTIER_STAGES_PER_CHALLENGE <= challengeNum + && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] / 7 <= challengeNum && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { k = 0; @@ -2383,7 +2377,7 @@ static void LoadMultiPartnerCandidatesData(void) checksum += record[j]; } - if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak / FRONTIER_STAGES_PER_CHALLENGE <= challengeNum + if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak / 7 <= challengeNum && gSaveBlock2Ptr->frontier.towerRecords[i].lvlMode == lvlMode && recordHasData && gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum) @@ -2464,7 +2458,7 @@ static void ShowPartnerCandidateMessage(void) s32 monId; s32 level = SetFacilityPtrsGetLevel(); u16 winStreak = GetCurrentFacilityWinStreak(); - s32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; + s32 challengeNum = winStreak / 7; s32 k = gSpecialVar_LastTalked - 2; s32 trainerId = gSaveBlock2Ptr->frontier.trainerIds[k]; @@ -2523,7 +2517,7 @@ static void ShowPartnerCandidateMessage(void) gSaveBlock2Ptr->frontier.trainerIds[18] = gFrontierTempParty[0]; gSaveBlock2Ptr->frontier.trainerIds[19] = gFrontierTempParty[1]; } - for (k = 0; k < FRONTIER_STAGES_PER_CHALLENGE * 2; k++) + for (k = 0; k < 14; k++) { while (1) { @@ -2582,7 +2576,7 @@ static void LoadLinkMultiOpponentsData(void) case 0: if (battleMode == FRONTIER_MODE_LINK_MULTIS) { - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; if (IsLinkTaskFinished()) { SendBlock(BitmaskAllOtherLinkPlayers(), &challengeNum, sizeof(challengeNum)); @@ -2602,7 +2596,7 @@ static void LoadLinkMultiOpponentsData(void) challengeNum = gBlockRecvBuffer[0][0]; else challengeNum = gBlockRecvBuffer[1][0]; - for (i = 0; i < FRONTIER_STAGES_PER_CHALLENGE * 2; i++) + for (i = 0; i < 14; i++) { do { @@ -2743,8 +2737,8 @@ u16 GetCurrentBattleTowerWinStreak(u8 lvlMode, u8 battleMode) { u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; - if (winStreak > MAX_STREAK) - return MAX_STREAK; + if (winStreak > 9999) + return 9999; else return winStreak; } @@ -2846,7 +2840,7 @@ static void FillEReaderTrainerWithPlayerData(void) ereaderTrainer->winStreak = 1; j = 7; - for (i = 0; i < EASY_CHAT_BATTLE_WORDS_COUNT; i++) + for (i = 0; i < 6; i++) { ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i]; ereaderTrainer->farewellPlayerLost[i] = j; @@ -2854,7 +2848,7 @@ static void FillEReaderTrainerWithPlayerData(void) j++; } - for (i = 0; i < (int)ARRAY_COUNT(ereaderTrainer->party); i++) + for (i = 0; i < 3; i++) ConvertPokemonToBattleTowerPokemon(&gPlayerParty[i], &ereaderTrainer->party[i]); SetEReaderTrainerChecksum(ereaderTrainer); @@ -3252,12 +3246,12 @@ u8 GetFrontierEnemyMonLevel(u8 lvlMode) { default: case FRONTIER_LVL_50: - level = FRONTIER_MAX_LEVEL_50; + level = 50; break; case FRONTIER_LVL_OPEN: level = GetHighestLevelInPlayerParty(); - if (level < FRONTIER_MIN_LEVEL_OPEN) - level = FRONTIER_MIN_LEVEL_OPEN; + if (level < 60) + level = 60; break; } @@ -3327,7 +3321,7 @@ static u16 GetBattleTentTrainerId(void) static u8 SetTentPtrsGetLevel(void) { - u8 level = TENT_MIN_LEVEL; + u8 level = 30; u32 facility = VarGet(VAR_FRONTIER_FACILITY); if (facility == FRONTIER_FACILITY_FACTORY) @@ -3352,8 +3346,8 @@ static u8 SetTentPtrsGetLevel(void) } level = GetHighestLevelInPlayerParty(); - if (level < TENT_MIN_LEVEL) - level = TENT_MIN_LEVEL; + if (level < 30) + level = 30; return level; } @@ -3375,7 +3369,7 @@ static void SetNextBattleTentOpponent(void) gTrainerBattleOpponent_A = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < TENT_STAGES_PER_CHALLENGE) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 3) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; } diff --git a/src/battle_transition.c b/src/battle_transition.c index c523cbe7b..1e421b5e4 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -4762,8 +4762,10 @@ static bool8 FrontierSquaresScroll_End(struct Task *task) BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); DestroyTask(FindTaskIdByFunc(task->func)); - task->tState++; // Changing value of a destroyed task +#ifndef UBFIX + task->tState++; // UB: changing value of a destroyed task +#endif return FALSE; } diff --git a/src/battle_util.c b/src/battle_util.c index f34c39eb0..6bb6d9ae4 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1190,7 +1190,7 @@ u8 DoFieldEndTurnEffects(void) s32 j; for (j = i + 1; j < gBattlersCount; j++) { - if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE)) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 0)) SwapTurnOrder(i, j); } } diff --git a/src/berry_blender.c b/src/berry_blender.c index bdf7858ce..27ea641ce 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1188,9 +1188,9 @@ static void SetBerrySpriteData(struct Sprite* sprite, s16 x, s16 y, s16 bounceSp #undef sXSpeed #undef sYDownSpeed -static void CreateBerrySprite(u16 itemId, u8 playerId) +static void CreateBerrySprite(u16 a0, u8 playerId) { - u8 spriteId = CreateSpinningBerrySprite(ITEM_TO_BERRY(itemId) - 1, 0, 80, playerId & 1); + u8 spriteId = CreateSpinningBerrySprite(a0 + FIRST_BERRY_INDEX - 10, 0, 80, playerId & 1); SetBerrySpriteData(&gSprites[spriteId], sBerrySpriteData[playerId][0], sBerrySpriteData[playerId][1], @@ -2238,7 +2238,7 @@ static void CB2_PlayBlender(void) UpdatePaletteFade(); } -static void Blender_DummiedOutFunc(s16 bgX, s16 bgY) +static void Blender_DummiedOutFunc(s16 a0, s16 a1) { } diff --git a/src/berry_crush.c b/src/berry_crush.c index e6e2d8742..e7a5df951 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -2254,7 +2254,7 @@ static u32 Cmd_PrintMessage(struct BerryCrushGame *game, u8 *args) switch (game->cmdState) { case 0: - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); if (args[1] & F_MSG_EXPAND) { StringExpandPlaceholders(gStringVar4, sMessages[args[0]]); @@ -3241,7 +3241,7 @@ static u32 Cmd_SaveGame(struct BerryCrushGame *game, u8 *args) case 2: if (!IsLinkTaskFinished()) return 0; - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_SavingDontTurnOffPower, 0, 0, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); CreateTask(Task_LinkFullSave, 0); @@ -3389,7 +3389,7 @@ static u32 Cmd_StopGame(struct BerryCrushGame *game, u8 *args) switch (game->cmdState) { case 0: - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); if (game->playAgainState == PLAY_AGAIN_NO_BERRIES) AddTextPrinterParameterized2(0, FONT_NORMAL, sMessages[MSG_NO_BERRIES], game->textSpeed, 0, 2, 1, 3); else diff --git a/src/bike.c b/src/bike.c index 5546edd8e..b1dd7cfe2 100644 --- a/src/bike.c +++ b/src/bike.c @@ -7,6 +7,8 @@ #include "metatile_behavior.h" #include "overworld.h" #include "sound.h" +#include "event_data.h" +#include "sprite.h" #include "constants/map_types.h" #include "constants/songs.h" @@ -982,7 +984,7 @@ void GetOnOffBike(u8 transitionFlags) else { FollowerIntoPokeball(); - + SetPlayerAvatarTransitionFlags(transitionFlags); Overworld_SetSavedMusic(MUS_CYCLING); Overworld_ChangeMusicTo(MUS_CYCLING); diff --git a/src/cable_car.c b/src/cable_car.c index c81764728..00f62d08f 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -800,12 +800,12 @@ static void CreateCableCarSprites(void) u8 spriteId; u8 i; - u8 playerGraphicsIds[2] = { + u16 playerGraphicsIds[2] = { [MALE] = OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, [FEMALE] = OBJ_EVENT_GFX_RIVAL_MAY_NORMAL }; u16 rval = Random(); - u8 hikerGraphicsIds[4] = { + u16 hikerGraphicsIds[4] = { OBJ_EVENT_GFX_HIKER, OBJ_EVENT_GFX_CAMPER, OBJ_EVENT_GFX_PICNICKER, diff --git a/src/coins.c b/src/coins.c index 4c4739999..17fd147b7 100644 --- a/src/coins.c +++ b/src/coins.c @@ -8,7 +8,7 @@ #include "international_string_util.h" #include "constants/coins.h" -static EWRAM_DATA u8 sCoinsWindowId = 0; +EWRAM_DATA u8 sCoinsWindowId = 0; void PrintCoinsString(u32 coinAmount) { diff --git a/src/contest.c b/src/contest.c index da57d9e28..ced9f90cd 100644 --- a/src/contest.c +++ b/src/contest.c @@ -93,7 +93,7 @@ static void Task_ContestReturnToField(u8); static void FieldCB_ContestReturnToField(void); static bool8 IsPlayerLinkLeader(void); static void PrintContestantTrainerName(u8); -static void PrintContestantTrainerNameWithColor(u8, u8); +static void PrintContestantTrainerNameWithColor(u8 a0, u8 a1); static void PrintContestantMonName(u8); static void PrintContestantMonNameWithColor(u8, u8); static u8 CreateJudgeSprite(void); @@ -352,7 +352,7 @@ EWRAM_DATA u16 gSpecialVar_ContestRank = 0; EWRAM_DATA u8 gNumLinkContestPlayers = 0; EWRAM_DATA u8 gHighestRibbonRank = 0; EWRAM_DATA struct ContestResources *gContestResources = NULL; -static EWRAM_DATA u8 sContestBgCopyFlags = 0; +EWRAM_DATA u8 sContestBgCopyFlags = 0; EWRAM_DATA struct ContestWinner gCurContestWinner = {0}; EWRAM_DATA bool8 gCurContestWinnerIsForArtist = 0; EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0; @@ -625,7 +625,7 @@ static const struct SpriteTemplate sSpriteTemplate_ApplauseMeter = .callback = SpriteCallbackDummy }; -static const struct OamData sOam_Judge = +const struct OamData sOam_Judge = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -639,7 +639,7 @@ static const struct OamData sOam_Judge = .paletteNum = 2, }; -static const struct SpriteTemplate sSpriteTemplate_Judge = +const struct SpriteTemplate sSpriteTemplate_Judge = { .tileTag = TAG_JUDGE, .paletteTag = TAG_JUDGE, @@ -650,7 +650,7 @@ static const struct SpriteTemplate sSpriteTemplate_Judge = .callback = SpriteCallbackDummy }; -static const struct CompressedSpriteSheet sSpriteSheet_Judge = +const struct CompressedSpriteSheet sSpriteSheet_Judge = { .data = gContestJudgeGfx, .size = 0x800, @@ -664,13 +664,13 @@ static const struct CompressedSpriteSheet sSpriteSheet_JudgeSymbols = .tag = TAG_JUDGE_SYMBOLS_GFX }; -static const struct CompressedSpritePalette sSpritePalette_JudgeSymbols = +const struct CompressedSpritePalette sSpritePalette_JudgeSymbols = { .data = gContestJudgeSymbolsPal, .tag = TAG_CONTEST_SYMBOLS_PAL }; -static const struct SpriteTemplate sSpriteTemplate_JudgeSpeechBubble = +const struct SpriteTemplate sSpriteTemplate_JudgeSpeechBubble = { .tileTag = TAG_JUDGE_SYMBOLS_GFX, .paletteTag = TAG_CONTEST_SYMBOLS_PAL, @@ -876,7 +876,7 @@ static const struct SpritePalette sSpritePalettes_ContestantsTurnBlinkEffect[CON } }; -static const struct OamData sOam_ContestantsTurnBlinkEffect = +const struct OamData sOam_ContestantsTurnBlinkEffect = { .y = 0, .affineMode = ST_OAM_AFFINE_DOUBLE, @@ -891,13 +891,13 @@ static const struct OamData sOam_ContestantsTurnBlinkEffect = .affineParam = 0, }; -static const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_0[] = +const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_0[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = +const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = { AFFINEANIMCMD_FRAME(3, 3, 0, 15), AFFINEANIMCMD_FRAME(-3, -3, 0, 15), @@ -906,13 +906,13 @@ static const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const sAffineAnims_ContestantsTurnBlinkEffect[] = +const union AffineAnimCmd *const sAffineAnims_ContestantsTurnBlinkEffect[] = { sAffineAnim_ContestantsTurnBlinkEffect_0, sAffineAnim_ContestantsTurnBlinkEffect_1 }; -static const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[CONTESTANT_COUNT] = +const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[CONTESTANT_COUNT] = { { .tileTag = TAG_BLINK_EFFECT_CONTESTANT0, @@ -952,7 +952,7 @@ static const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[C } }; -static const s8 sContestExcitementTable[CONTEST_CATEGORIES_COUNT][CONTEST_CATEGORIES_COUNT] = +static const s8 gContestExcitementTable[CONTEST_CATEGORIES_COUNT][CONTEST_CATEGORIES_COUNT] = { [CONTEST_CATEGORY_COOL] = { [CONTEST_CATEGORY_COOL] = +1, @@ -3186,14 +3186,14 @@ static u16 GetMoveEffectSymbolTileOffset(u16 move, u8 contestant) return offset; } -static void PrintContestMoveDescription(u16 move) +static void PrintContestMoveDescription(u16 a) { u8 category; u16 categoryTile; u8 numHearts; // The contest category icon is implemented as a 5x2 group of tiles. - category = gContestMoves[move].contestCategory; + category = gContestMoves[a].contestCategory; if (category == CONTEST_CATEGORY_COOL) categoryTile = 0x4040; else if (category == CONTEST_CATEGORY_BEAUTY) @@ -3209,27 +3209,27 @@ static void PrintContestMoveDescription(u16 move) ContestBG_FillBoxWithIncrementingTile(0, categoryTile + 0x10, 0x0b, 0x20, 0x05, 0x01, 0x11, 0x01); // Appeal hearts - if (gContestEffects[gContestMoves[move].effect].appeal == 0xFF) + if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF) numHearts = 0; else - numHearts = gContestEffects[gContestMoves[move].effect].appeal / 10; + numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10; if (numHearts > MAX_CONTEST_MOVE_HEARTS) numHearts = MAX_CONTEST_MOVE_HEARTS; ContestBG_FillBoxWithTile(0, TILE_EMPTY_APPEAL_HEART, 0x15, 0x1f, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11); ContestBG_FillBoxWithTile(0, TILE_FILLED_APPEAL_HEART, 0x15, 0x1f, numHearts, 0x01, 0x11); // Jam hearts - if (gContestEffects[gContestMoves[move].effect].jam == 0xFF) + if (gContestEffects[gContestMoves[a].effect].jam == 0xFF) numHearts = 0; else - numHearts = gContestEffects[gContestMoves[move].effect].jam / 10; + numHearts = gContestEffects[gContestMoves[a].effect].jam / 10; if (numHearts > MAX_CONTEST_MOVE_HEARTS) numHearts = MAX_CONTEST_MOVE_HEARTS; ContestBG_FillBoxWithTile(0, TILE_EMPTY_JAM_HEART, 0x15, 0x20, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11); ContestBG_FillBoxWithTile(0, TILE_FILLED_JAM_HEART, 0x15, 0x20, numHearts, 0x01, 0x11); FillWindowPixelBuffer(WIN_MOVE_DESCRIPTION, PIXEL_FILL(0)); - Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[move].effect]); + Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[a].effect]); Contest_PrintTextToBg0WindowStd(WIN_SLASH, gText_Slash); } @@ -4537,14 +4537,14 @@ static void CalculateAppealMoveImpact(u8 contestant) eContestantStatus[contestant].contestantAnimTarget = i; } -void SetContestantEffectStringID(u8 contestant, u8 effectStringId) +void SetContestantEffectStringID(u8 a, u8 b) { - eContestantStatus[contestant].effectStringId = effectStringId; + eContestantStatus[a].effectStringId = b; } -void SetContestantEffectStringID2(u8 contestant, u8 effectStringId) +void SetContestantEffectStringID2(u8 a, u8 b) { - eContestantStatus[contestant].effectStringId2 = effectStringId; + eContestantStatus[a].effectStringId2 = b; } void SetStartledString(u8 contestant, u8 jam) @@ -4744,7 +4744,7 @@ static void UpdateApplauseMeter(void) s8 Contest_GetMoveExcitement(u16 move) { - return sContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory]; + return gContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory]; } static u8 StartApplauseOverflowAnimation(void) diff --git a/src/contest_util.c b/src/contest_util.c index d8726d860..1ca217526 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -77,10 +77,7 @@ enum { #define TAG_CONFETTI 3017 #define TAG_WIRELESS_INDICATOR_WINDOW 22222 -// Length of the score bar on the results screen -#define NUM_BAR_SEGMENTS 11 -#define BAR_SEGMENT_LENGTH 8 // Each segment of the results bar is a single tile, so 8 pixels long -#define MAX_BAR_LENGTH (NUM_BAR_SEGMENTS * BAR_SEGMENT_LENGTH) +#define MAX_BAR_LENGTH 87 // Starting x/y for the sliding results screen text box #define TEXT_BOX_X (DISPLAY_WIDTH + 32) @@ -99,7 +96,7 @@ struct ContestResultsInternal u8 winnerMonSpriteId; bool8 destroyConfetti; bool8 pointsFlashing; - s16 barLength[CONTESTANT_COUNT]; + s16 unkC[CONTESTANT_COUNT]; u8 numBarsUpdating; }; @@ -1751,7 +1748,7 @@ static void CalculateContestantsResultData(void) if ((*sContestResults->monResults)[i].lostPoints) barLengthRound2 *= -1; - if (barLengthPreliminary + barLengthRound2 == MAX_BAR_LENGTH) + if (barLengthPreliminary + barLengthRound2 == MAX_BAR_LENGTH + 1) { if (barLengthRound2 > 0) (*sContestResults->monResults)[i].barLengthRound2--; @@ -1844,52 +1841,47 @@ static void Task_UpdateContestResultBar(u8 taskId) s16 target = gTasks[taskId].tTarget; s16 decreasing = gTasks[taskId].tDecreasing; - // Has the results bar reached the limit? if (decreasing) { - if (sContestResults->data->barLength[monId] <= 0) + if (sContestResults->data->unkC[monId] <= 0) minMaxReached = TRUE; } else { - if (sContestResults->data->barLength[monId] >= MAX_BAR_LENGTH) + if (sContestResults->data->unkC[monId] > MAX_BAR_LENGTH) minMaxReached = TRUE; } - if (sContestResults->data->barLength[monId] == target) + if (sContestResults->data->unkC[monId] == target) targetReached = TRUE; if (!targetReached) { - // Target length has not been reached, update bar length if (minMaxReached) - sContestResults->data->barLength[monId] = target; + sContestResults->data->unkC[monId] = target; else if (decreasing) - sContestResults->data->barLength[monId]--; + sContestResults->data->unkC[monId] = sContestResults->data->unkC[monId] - 1; else - sContestResults->data->barLength[monId]++; + sContestResults->data->unkC[monId] = sContestResults->data->unkC[monId] + 1; } - // Update the tiles of the results bar if it's still changing if (!minMaxReached && !targetReached) { - u8 tileOffset; + u8 var0; u16 tileNum; - for (i = 0; i < NUM_BAR_SEGMENTS; i++) + for (i = 0; i < 11; i++) { - if (sContestResults->data->barLength[monId] >= (i + 1) * BAR_SEGMENT_LENGTH) - tileOffset = 8; // Bar segment is full - else if (sContestResults->data->barLength[monId] >= i * BAR_SEGMENT_LENGTH) - tileOffset = sContestResults->data->barLength[monId] % 8; // Bar segment is between full and empty + if (sContestResults->data->unkC[monId] >= (i + 1) * 8) + var0 = 8; + else if (sContestResults->data->unkC[monId] >= i * 8) + var0 = sContestResults->data->unkC[monId] % 8; else - tileOffset = 0; // Bar segment is empty + var0 = 0; - // The first 4 bar segment tiles are not adjacent in the tileset to the - // remaining bar segment tiles; choose the base tile number accordingly. - if (tileOffset < 4) - tileNum = 0x504C + tileOffset; + if (var0 < 4) + tileNum = 0x504C + var0; else - tileNum = 0x5057 + tileOffset; + tileNum = 0x5057 + var0; FillBgTilemapBufferRect_Palette0(2, tileNum, i + 7, monId * 3 + 6, 1, 1); } diff --git a/src/credits.c b/src/credits.c index 33362fb38..43c8d6628 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1285,18 +1285,18 @@ static void ResetCreditsTasks(u8 taskId) gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_DESTROY; } -static void LoadTheEndScreen(u16 tileOffsetLoad, u16 tileOffsetWrite, u16 palOffset) +static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 palOffset) { u16 baseTile; u16 i; - LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + tileOffsetLoad)); + LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + arg0)); LoadPalette(gIntroCopyright_Pal, palOffset, sizeof(gIntroCopyright_Pal)); baseTile = (palOffset / 16) << 12; for (i = 0; i < 32 * 32; i++) - ((u16 *) (VRAM + tileOffsetWrite))[i] = baseTile + 1; + ((u16 *) (VRAM + arg1))[i] = baseTile + 1; } static u16 GetLetterMapTile(u8 baseTiles) diff --git a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h index f09448b82..8738b0de6 100644 --- a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h +++ b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h @@ -1038,7 +1038,7 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round20[] = } }; -static const struct PyramidWildMon *const sOpenLevelWildMonPointers[TOTAL_ROUNDS] = +static const struct PyramidWildMon *const sOpenLevelWildMonPointers[] = { sOpenLevelWildMons_Round1, sOpenLevelWildMons_Round2, diff --git a/src/data/battle_frontier/trainer_hill.h b/src/data/battle_frontier/trainer_hill.h index c13e6a8c9..75785b258 100644 --- a/src/data/battle_frontier/trainer_hill.h +++ b/src/data/battle_frontier/trainer_hill.h @@ -1,23 +1,20 @@ +#define TRAINER_HILL_OTID 0x10000000 + // NOTE: Each of these macros turn data into one byte. Therefore ranges for all arguments is 0-15 -// See struct TrainerHillFloorMap for more info about each +// See struct TrHillDisplay for more info about each #define COORDS_XY(x,y) ((y<<4)|(x)) #define TRAINER_DIRS(a, b) (((a-1)<<4)|(b-1)) #define TRAINER_RANGE(a, b) ((a<<4)|(b)) -// WARNING: While not referenced directly, the floor data in this file is referenced by virtue -// of coming after its corresponding challenge (see SetUpDataStruct in trainer_hill.c). -// Do not insert data between a pair of 'sChallenge_Mode' and 'sFloors_Mode'. - -// Unused -static const struct TrainerHillChallenge sChallenge_JPDefault = { +static const struct TrHillTag sDataTagJPDefault = { .numTrainers = NUM_TRAINER_HILL_TRAINERS_JP, .unused1 = 1, .numFloors = NUM_TRAINER_HILL_FLOORS_JP, .checksum = 0x0 }; -// Unused -static const struct TrainerHillFloor sFloors_JPDefault[] = { + +static const struct TrHillFloor sDataTagJPDefault_Floors[] = { [0] = { .trainerNum1 = 0, .trainerNum2 = 0, @@ -25,7 +22,7 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { [0] = { .name = __("シゲノブ$$$$ "), .facilityClass = FACILITY_CLASS_YOUNGSTER, - .unused = TRUE, + .unused = 0x1, .speechBefore = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_EXCL, EC_WORD_THEY_WERE, EC_WORD_OPPONENT, EC_WORD_CAN }, .speechWin = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_WEAK, EC_WORD_OF, EC_WORD_WERE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .speechLose = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_STRONG, EC_WORD_HEY_QUES, EC_WORD_EXCL, EC_WORD_EXCL }, @@ -35,10 +32,13 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .species = SPECIES_ZIGZAGOON, .heldItem = ITEM_SITRUS_BERRY, .moves = { MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_GROWL, MOVE_TAIL_WHIP }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, .speedEV = 100, + .spAttackEV = 0, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, .hpIV = 5, @@ -50,14 +50,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("ジグザグマ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [1] = { .species = SPECIES_SHROOMISH, .heldItem = ITEM_PECHA_BERRY, .moves = { MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_POISON_POWDER, MOVE_GROWTH }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 120, + .attackEV = 0, .defenseEV = 120, + .speedEV = 0, .spAttackEV = 150, .spDefenseEV = 120, .otId = TRAINER_HILL_OTID, @@ -70,15 +74,19 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("キノココ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [2] = { .species = SPECIES_SANDSHREW, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_SCRATCH, MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SWIFT }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, .spDefenseEV = 200, .otId = TRAINER_HILL_OTID, .hpIV = 5, @@ -90,32 +98,35 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("サンド$$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, - [3] = DUMMY_HILL_MON, - [4] = DUMMY_HILL_MON, - [5] = DUMMY_HILL_MON + [3] = NULL_BATTLE_TOWER_POKEMON, + [4] = NULL_BATTLE_TOWER_POKEMON, + [5] = NULL_BATTLE_TOWER_POKEMON } }, [1] = { .name = __("アカリ$$$$$ "), .facilityClass = FACILITY_CLASS_PARASOL_LADY, - .unused = TRUE, + .unused = 0x1, .speechBefore = { EC_WORD_SHE, EC_WORD_EVERY, EC_WORD_TYPE, EC_WORD_ADORE, EC_WORD_FOR, EC_WORD_EXCL }, .speechWin = { EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_WONDER, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_EXCL }, .speechLose = { EC_WORD_OH_QUES, EC_MOVE(EARTHQUAKE), EC_WORD_EXISTS, EC_WORD_OF, EC_WORD_WITHOUT, EC_WORD_EXCL }, .speechAfter = { EC_WORD_YOU_RE, EC_WORD_PROBABLY, EC_WORD_END, EC_WORD_UNTIL, EC_WORD_GOING, EC_WORD_ANYWHERE }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_WINGULL, .heldItem = ITEM_CHERI_BERRY, .moves = { MOVE_WATER_GUN, MOVE_WING_ATTACK, MOVE_GROWL, MOVE_SUPERSONIC }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -128,15 +139,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("キャモメ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_NUMEL, .heldItem = ITEM_FOCUS_BAND, .moves = { MOVE_EMBER, MOVE_DIG, MOVE_TACKLE, MOVE_FOCUS_ENERGY }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -149,15 +163,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ドンメル$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_SURSKIT, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_BUBBLE_BEAM, MOVE_MUD_SHOT, MOVE_QUICK_ATTACK, MOVE_AGILITY }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -170,17 +187,34 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("アメタマ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_jp/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_jp/floor_0/collision.bin"), - .trainerCoords = { COORDS_XY(8,2), COORDS_XY(8,7) }, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(2, 3) + .display = { + .metatileData = { + 0x31, 0x35, 0x35, 0x3b, 0x26, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x3b, 0x3b, 0x08, + 0x31, 0x2b, 0x2b, 0x3b, 0x34, 0x34, 0x2b, 0x2b, 0x34, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, + 0x31, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x08, + 0x31, 0x2b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f, 0x08, + 0x31, 0x2b, 0x34, 0x34, 0x34, 0x2b, 0x34, 0x34, 0x3b, 0x2c, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x08, + 0x31, 0x2b, 0x3b, 0x35, 0x3b, 0x2b, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, + 0x31, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, + 0x31, 0x34, 0x3b, 0x2b, 0x3b, 0x34, 0x3b, 0x2b, 0x35, 0x2b, 0x3b, 0x3b, 0x3f, 0x3b, 0x3b, 0x08, + 0x31, 0x3b, 0x3b, 0x34, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x34, 0x3f, 0x3b, 0x3b, 0x3b, 0x3f, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = { 0x0381, 0x6fc1, 0x6341, 0x6041, 0x7f41, 0x4401, 0x5541, 0x5541, 0x11c1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }, + .coords = { COORDS_XY(8,2), COORDS_XY(8,7) }, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(2, 3) } }, [1] = { @@ -190,7 +224,7 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { [0] = { .name = __("シゲゾウ$$$$ "), .facilityClass = FACILITY_CLASS_NINJA_BOY, - .unused = TRUE, + .unused = 0x1, .speechBefore = { EC_WORD_WIN, EC_WORD_UNTIL, EC_WORD_DAUGHTER, EC_MOVE(CONSTRICT), EC_WORD_OF, EC_WORD_WERE }, .speechWin = { EC_MOVE(CONSTRICT), EC_WORD_UNTIL, EC_WORD_LESS, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_EXCL }, .speechLose = { EC_WORD_YET, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_URGH, EC_WORD_ALMOST, EC_WORD_POWER, EC_WORD_NONE }, @@ -200,10 +234,14 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .species = SPECIES_ELECTRIKE, .heldItem = ITEM_CHERI_BERRY, .moves = { MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 120, .attackEV = 120, + .defenseEV = 0, .speedEV = 120, .spAttackEV = 150, + .spDefenseEV = 0, .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, @@ -214,15 +252,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 1, .personality = 0x0, .nickname = __("ラクライ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [1] = { .species = SPECIES_CORPHISH, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_KNOCK_OFF, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_PROTECT }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 110, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -235,15 +276,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 1, .personality = 0x96, .nickname = __("ヘイガニ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [2] = { .species = SPECIES_BALTOY, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_PSYBEAM, MOVE_ROCK_TOMB, MOVE_MUD_SLAP, MOVE_HARDEN }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 110, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -256,32 +300,35 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ヤジロン$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, - [3] = DUMMY_HILL_MON, - [4] = DUMMY_HILL_MON, - [5] = DUMMY_HILL_MON, + [3] = NULL_BATTLE_TOWER_POKEMON, + [4] = NULL_BATTLE_TOWER_POKEMON, + [5] = NULL_BATTLE_TOWER_POKEMON, } }, [1] = { .name = __("ナミコ$$$$$ "), .facilityClass = FACILITY_CLASS_BEAUTY, - .unused = TRUE, + .unused = 0x1, .speechBefore = { EC_WORD_SISTER, EC_WORD_ALTHOUGH, EC_WORD_KIND, EC_WORD_MATCH, EC_WORD_PLEASE, EC_WORD_WITHOUT }, .speechWin = { EC_WORD_KIND, EC_WORD_ELLIPSIS, EC_WORD_INSTEAD, EC_WORD_DEEP, EC_WORD_WEAK, EC_WORD_QUES }, .speechLose = { EC_WORD_AWFUL, EC_WORD_GWAH, EC_WORD_HOPELESS, EC_WORD_CAN_T_WIN, EC_WORD_IS, EC_WORD_NONE }, .speechAfter = { EC_WORD_AWW, EC_EMPTY_WORD, EC_EMPTY_WORD, EC_WORD_ALMOST, EC_WORD_GOOD, EC_WORD_ANYWHERE }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_SPHEAL, .heldItem = ITEM_FOCUS_BAND, .moves = { MOVE_ICE_BALL, MOVE_BODY_SLAM, MOVE_WATER_GUN, MOVE_ENCORE }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 110, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -294,13 +341,16 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("タマザラシ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_SPOINK, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_PSYWAVE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_MAGIC_COAT }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, + .attackEV = 0, .defenseEV = 100, .speedEV = 100, .spAttackEV = 110, @@ -315,12 +365,14 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 1, .personality = 0xf, .nickname = __("ãƒ�ãƒ�ブー$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_POOCHYENA, .heldItem = ITEM_PECHA_BERRY, .moves = { MOVE_BITE, MOVE_POISON_FANG, MOVE_SWAGGER, MOVE_SCARY_FACE }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 70, .attackEV = 80, .defenseEV = 80, @@ -337,22 +389,39 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ãƒ�ãƒ�エナ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_jp/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_jp/floor_1/collision.bin"), - .trainerCoords = { COORDS_XY(7,6), COORDS_XY(7,10) }, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3) + .display = { + .metatileData = { + 0x31, 0x3b, 0x35, 0x3b, 0x39, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x35, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, + 0x3f, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3e, 0x3e, 0x2b, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2c, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, + 0x31, 0x3f, 0x2b, 0x3b, 0x3b, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x2b, 0x3b, 0x08, + 0x3f, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x08, + 0x31, 0x3b, 0x3f, 0x3f, 0x3b, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x08, + 0x31, 0x3f, 0x3f, 0x3f, 0x3b, 0x2b, 0x2b, 0x35, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x08, + 0x31, 0x3f, 0x3f, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x08, + 0x31, 0x3b, 0x3b, 0x3b, 0x3f, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = { 0x0381, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x26c5, 0x2005, 0x3efd, 0x1, 0x6ff, 0x7ff, 0x7ff, 0xffff, 0xffff, 0xffff }, + .coords = { COORDS_XY(7,6), COORDS_XY(7,10) }, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3) } }, }; -static const struct TrainerHillChallenge sChallenge_Normal = +static const struct TrHillTag sDataTagNormal = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 2, @@ -360,7 +429,7 @@ static const struct TrainerHillChallenge sChallenge_Normal = .checksum = 0x00051E05 }; -static const struct TrainerHillFloor sFloors_Normal[] = +static const struct TrHillFloor sDataTagNormal_Floors[] = { [0] = { @@ -372,6 +441,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("ALAINA"), .facilityClass = FACILITY_CLASS_HEX_MANIAC, + .unused = 0, .speechBefore = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_CHOOSE, EC_WORD_NOT, EC_WORD_TO, EC_WORD_BELIEVE}, .speechWin = {EC_WORD_A, EC_WORD_SUPER, EC_WORD_NATURAL, EC_WORD_POWER, EC_WORD_HAS, EC_WORD_COME}, .speechLose = {EC_WORD_THIS, EC_WORD_MUST_BE, EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_EXCL, EC_EMPTY_WORD}, @@ -383,6 +453,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_MISDREAVUS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .attackEV = 155, .speedEV = 255, .spAttackEV = 100, @@ -396,13 +468,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x0, .nickname = _("MISDREAVUS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_SOLROCK, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCHIC, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_CALM_MIND}, + .level = 0, + .ppBonuses = 0, .hpEV = 200, .defenseEV = 100, .spAttackEV = 110, @@ -417,13 +491,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("SOLROCK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_CLAYDOL, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .defenseEV = 135, .spDefenseEV = 120, @@ -437,13 +513,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xC, .nickname = _("CLAYDOL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_WEEZING, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .attackEV = 200, .spDefenseEV = 200, @@ -464,6 +542,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_LUNATONE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_CALM_MIND}, + .level = 0, + .ppBonuses = 0, .hpEV = 200, .defenseEV = 100, .spAttackEV = 110, @@ -478,13 +558,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("LUNATONE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_FLYGON, .heldItem = ITEM_CHOICE_BAND, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_FLAMETHROWER}, + .level = 0, + .ppBonuses = 0, .attackEV = 155, .speedEV = 255, .spAttackEV = 100, @@ -498,7 +580,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x83, .nickname = _("FLYGON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -506,6 +588,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("ALFONSO"), .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_NEVER, EC_WORD_TAKE, EC_WORD_A, EC_WORD_TRAIN, EC_EMPTY_WORD}, .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_MOVE2(SUPERSONIC), EC_WORD_ON, EC_WORD_MY, EC_WORD_BIKE}, .speechLose = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_EXCL, EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_IT}, @@ -517,6 +600,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_SEALEO, .heldItem = ITEM_NEVER_MELT_ICE, .moves = {MOVE_BLIZZARD, MOVE_ICE_BALL, MOVE_ENCORE, MOVE_HAIL}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -529,13 +614,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("SEALEO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_AMPHAROS, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -548,13 +635,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("AMPHAROS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_MACHOKE, .heldItem = ITEM_BLACK_BELT, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MUD_SLAP, MOVE_COUNTER, MOVE_SCARY_FACE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -567,13 +656,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x4E, .nickname = _("MACHOKE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_FLAREON, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_FIRE_BLAST, MOVE_BITE, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -586,13 +677,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x28, .nickname = _("FLAREON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_MAGNETON, .heldItem = ITEM_MAGNET, .moves = {MOVE_ZAP_CANNON, MOVE_THUNDER_WAVE, MOVE_SCREECH, MOVE_METAL_SOUND}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -605,13 +698,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x0, .nickname = _("MAGNETON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_PINSIR, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_SWAGGER, MOVE_FAINT_ATTACK}, + .level = 0, + .ppBonuses = 0, .hpEV = 200, .defenseEV = 155, .spDefenseEV = 155, @@ -625,18 +720,35 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x85, .nickname = _("PINSIR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_0/collision.bin"), - .trainerCoords = {COORDS_XY(11,1), COORDS_XY(13,2)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(2, 1), - } + .display = { + .metatileData = { + 0x31, 0x3B, 0x35, 0x35, 0x26, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x26, 0x3A, 0x3B, 0x35, 0x3B, 0x08, + 0x31, 0x3B, 0x2C, 0x2C, 0x2C, 0x2B, 0x24, 0x24, 0x24, 0x24, 0x2C, 0x3B, 0x3B, 0x2C, 0x3B, 0x08, + 0x2D, 0x3B, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x35, 0x3B, 0x35, 0x35, 0x3B, 0x08, + 0x33, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x2C, 0x2B, 0x3B, 0x08, + 0x33, 0x35, 0x3B, 0x3B, 0x3B, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x08, + 0x34, 0x2C, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x2B, 0x32, 0x30, 0x2C, 0x3B, 0x08, + 0x31, 0x35, 0x3B, 0x3B, 0x35, 0x3B, 0x2C, 0x3B, 0x3B, 0x35, 0x2C, 0x3B, 0x3B, 0x35, 0x35, 0x08, + 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x35, 0x3B, 0x2B, 0x32, 0x21, 0x30, 0x2C, 0x2C, 0x08, + 0x31, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x2C, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x08, + 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2B, 0x3B, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x08, + 0x31, 0x35, 0x35, 0x35, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x2B, 0x3B, 0x35, 0x35, 0x08, + 0x31, 0x2B, 0x2C, 0x2C, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x08, + 0x31, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, + 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x3B, 0x3B, 0x2C, 0x32, 0x30, 0x2C, 0x32, 0x30, 0x3B, 0x35, 0x08, + 0x31, 0x3B, 0x3B, 0x3B, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x3FE5, 0x0401, 0xBDED, 0x8425, 0xDFBD, 0x0221, 0x7E7F, 0x0941, 0x7F7D, 0x0911, 0x7FF7, 0x4101, 0x79F9, 0x0803, 0xFFFF}, + .coords = {COORDS_XY(11,1), COORDS_XY(13,2)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_NORTH), + .range = TRAINER_RANGE(2, 1), + } }, [1] = { @@ -648,6 +760,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("THEODORE"), .facilityClass = FACILITY_CLASS_BLACK_BELT, + .unused = 0, .speechBefore = {EC_WORD_MY, EC_WORD_POWER, EC_WORD_WILL, EC_MOVE2(STOMP), EC_WORD_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_WENT, EC_WORD_AT, EC_WORD_IT, EC_WORD_TOO, EC_WORD_HARD}, @@ -659,6 +772,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_MEDITITE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -672,13 +787,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x80, .nickname = _("MEDITITE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_HERACROSS, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -692,13 +809,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0x80, .nickname = _("HERACROSS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_HITMONTOP, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -712,13 +831,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONTOP"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_MACHOP, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -732,13 +853,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x4E, .nickname = _("MACHOP"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_PINSIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -752,13 +875,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x80, .nickname = _("PINSIR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_HITMONCHAN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -772,7 +897,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONCHAN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -780,6 +905,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("JAYDEN"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, + .unused = 0, .speechBefore = {EC_WORD_SOME, EC_WORD_THINGS, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_DO, EC_WORD_ALONE}, .speechWin = {EC_WORD_YOU, EC_WORD_WIN, EC_WORD_AS, EC_WORD_A, EC_WORD_GROUP, EC_EMPTY_WORD}, .speechLose = {EC_WORD_WE, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_TOGETHER, EC_WORD_QUES, EC_EMPTY_WORD}, @@ -791,6 +917,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_VULPIX, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_TAIL_WHIP, MOVE_OVERHEAT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -804,13 +932,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("VULPIX"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MINUN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_THUNDER_WAVE, MOVE_CHARM, MOVE_ENCORE, MOVE_SPARK}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -824,13 +954,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("MINUN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_ROSELIA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TOXIC, MOVE_LEECH_SEED, MOVE_SWEET_SCENT, MOVE_GIGA_DRAIN}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -844,13 +976,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0xF, .nickname = _("ROSELIA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_MR_MIME, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_SAFEGUARD, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -864,13 +998,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x82, .nickname = _("MR. MIME"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_PLUSLE, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_HELPING_HAND, MOVE_THUNDER}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -884,13 +1020,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x5, .nickname = _("PLUSLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_TOGEPI, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOLLOW_ME, MOVE_METRONOME}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -904,18 +1042,35 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0x37, .nickname = _("TOGEPI"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_1/collision.bin"), - .trainerCoords = {COORDS_XY(4,11), COORDS_XY(9,14)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 5), - } + .display = { + .metatileData = { + 0xD1, 0xD5, 0xD5, 0xD5, 0xD9, 0xD9, 0x1B, 0x1C, 0x1D, 0xC5, 0xC6, 0xCE, 0xD5, 0xDB, 0xD5, 0x08, + 0xD1, 0xCB, 0xC4, 0xC4, 0xDB, 0xDB, 0xC4, 0xC4, 0xC4, 0xCC, 0xCC, 0xCC, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xDB, 0x17, 0x17, 0x17, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xD5, 0x17, 0x17, 0x17, 0xD5, 0xD5, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0x17, 0x17, 0x1F, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xC4, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDB, 0xC4, 0xC4, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xC4, 0xC4, 0xDB, 0xC4, 0xC4, 0xC4, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xDB, 0xD5, 0xD5, 0xD5, 0xCB, 0x08, + 0xD1, 0xC4, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x08, + 0xD1, 0xDB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x08, + 0xD1, 0xDB, 0xDB, 0xC4, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xC4, 0xC4, 0xC4, 0xC4, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x73FB, 0x400B, 0x400B, 0x51EB, 0x538B, 0x51BB, 0x518B, 0x51EB, 0x518B, 0x51BB, 0x5003, 0x501F, 0x101F, 0x101F, 0xFFFF}, + .coords = {COORDS_XY(4,11), COORDS_XY(9,14)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_EAST), + .range = TRAINER_RANGE(3, 5), + } }, [2] = { @@ -927,6 +1082,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("SALVADORE"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, + .unused = 0, .speechBefore = {EC_WORD_LET_S, EC_MOVE2(WRAP), EC_WORD_THINGS, EC_WORD_UP, EC_WORD_HERE, EC_WORD_HEY_QUES}, .speechWin = {EC_WORD_WOULD, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_QUES}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SORRY, EC_WORD_FRIEND}, @@ -938,6 +1094,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_VAPOREON, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_HAZE, MOVE_HELPING_HAND, MOVE_TICKLE, MOVE_WATER_PULSE}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -958,6 +1116,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_DODRIO, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_HAZE, MOVE_TRI_ATTACK, MOVE_TAUNT, MOVE_TORMENT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -978,6 +1138,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_OMASTAR, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_HAZE, MOVE_HYDRO_PUMP, MOVE_TICKLE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -991,13 +1153,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x14, .nickname = _("OMASTAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_LICKITUNG, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1011,13 +1175,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8, .nickname = _("LICKITUNG"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_SLOWBRO, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_BELLY_DRUM, MOVE_MUD_SLAP, MOVE_SWAGGER, MOVE_AMNESIA}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1038,6 +1204,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_LINOONE, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1051,7 +1219,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8, .nickname = _("LINOONE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -1059,6 +1227,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("VERONICA"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, + .unused = 0, .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_STRONG, EC_WORD_BEAUTY, EC_WORD_AROUND, EC_WORD_HERE}, .speechWin = {EC_WORD_I_AM, EC_WORD_STRONG, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL, EC_EMPTY_WORD}, .speechLose = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_TODAY, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL}, @@ -1070,6 +1239,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_SKITTY, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCH_UP, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_IRON_TAIL}, + .level = 0, + .ppBonuses = 0, .attackEV = 252, .speedEV = 252, .otId = TRAINER_HILL_OTID, @@ -1082,13 +1253,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xCB, .nickname = _("SKITTY"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MEDICHAM, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PSYCH_UP, MOVE_HI_JUMP_KICK, MOVE_MEGA_KICK, MOVE_ROCK_SLIDE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -1109,6 +1282,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_STANTLER, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_PSYCH_UP, MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -1129,6 +1304,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_NIDOQUEEN, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SUPERPOWER, MOVE_BITE, MOVE_CHARM, MOVE_FLATTER}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -1149,6 +1326,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_NINETALES, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_OVERHEAT, MOVE_QUICK_ATTACK, MOVE_SPITE, MOVE_TAIL_WHIP}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -1162,13 +1341,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xD7, .nickname = _("NINETALES"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_CHARIZARD, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_OVERHEAT, MOVE_BEAT_UP, MOVE_SCARY_FACE, MOVE_GROWL}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -1182,18 +1363,35 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x28, .nickname = _("CHARIZARD"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_2/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_2/collision.bin"), - .trainerCoords = {COORDS_XY(5,2), COORDS_XY(9,2)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 3), - } + .display = { + .metatileData = { + 0x31, 0x35, 0x35, 0x35, 0x26, 0x26, 0x13, 0x14, 0x15, 0x38, 0x26, 0x2E, 0x35, 0x35, 0x3B, 0x08, + 0x69, 0x63, 0x64, 0x64, 0x64, 0x64, 0x71, 0x71, 0x71, 0x72, 0x64, 0x64, 0x64, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x43, 0x41, 0x40, 0x41, 0x42, 0x41, 0x41, 0x4A, 0x42, 0x41, 0x41, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x41, 0x43, 0x4B, 0x43, 0x43, 0x41, 0x42, 0x42, 0x40, 0x41, 0x40, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x41, 0x40, 0x42, 0x42, 0x41, 0x41, 0x42, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x41, 0x42, 0x41, 0x43, 0x4B, 0x41, 0x41, 0x41, 0x40, 0x43, 0x41, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x41, 0x40, 0x43, 0x41, 0x42, 0x42, 0x41, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x08, + 0x69, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x64, 0x73, 0x08, + 0x69, 0x43, 0x43, 0x41, 0x42, 0x42, 0x41, 0x43, 0x41, 0x41, 0x40, 0x42, 0x41, 0x42, 0x73, 0x08, + 0x69, 0x42, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x42, 0x73, 0x08, + }, + .collisionData = {0x0381, 0x7C3D, 0x4005, 0x4005, 0x4005, 0x4045, 0x4005, 0x4805, 0x4005, 0x4045, 0x4005, 0x4205, 0x4005, 0x4045, 0x1, 0x1}, + .coords = {COORDS_XY(5,2), COORDS_XY(9,2)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(3, 3), + } }, [3] = { @@ -1205,6 +1403,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("KEENAN"), .facilityClass = FACILITY_CLASS_PSYCHIC_M, + .unused = 0, .speechBefore = {EC_WORD_YOU, EC_WORD_LOOK, EC_WORD_SO, EC_WORD_HURRIED, EC_EMPTY_WORD, EC_EMPTY_WORD}, .speechWin = {EC_WORD_TOO, EC_WORD_BAD, EC_EMPTY_WORD, EC_WORD_TIME, EC_WORD_IS, EC_WORD_UP}, .speechLose = {EC_WORD_DOES, EC_WORD_THE, EC_WORD_TIME, EC_WORD_WORRY, EC_WORD_YOU, EC_WORD_QUES}, @@ -1216,6 +1415,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_ALAKAZAM, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_REFLECT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1228,13 +1429,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x41, .nickname = _("ALAKAZAM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_BLISSEY, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SKILL_SWAP, MOVE_EGG_BOMB, MOVE_THUNDERBOLT, MOVE_SING}, + .level = 0, + .ppBonuses = 0, .defenseEV = 255, .spAttackEV = 155, .spDefenseEV = 100, @@ -1248,13 +1451,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0xF, .nickname = _("BLISSEY"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_GRUMPIG, .heldItem = ITEM_TWISTED_SPOON, .moves = {MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_REST}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spAttackEV = 200, @@ -1268,13 +1473,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("GRUMPIG"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_GARDEVOIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_PROTECT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1287,13 +1494,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0xF, .nickname = _("GARDEVOIR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_VENOMOTH, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SKILL_SWAP, MOVE_SIGNAL_BEAM, MOVE_SLEEP_POWDER, MOVE_TOXIC}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1306,13 +1515,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x80, .nickname = _("VENOMOTH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ESPEON, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1325,7 +1536,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("ESPEON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -1333,6 +1544,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("KRISTINA"), .facilityClass = FACILITY_CLASS_AROMA_LADY, + .unused = 0, .speechBefore = {EC_WORD_IT_S, EC_WORD_HOT, EC_WORD_ELLIPSIS, EC_WORD_WHAT, EC_WORD_A, EC_WORD_STENCH}, .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_AN, EC_WORD_OFFENSIVE, EC_WORD_STENCH}, .speechLose = {EC_WORD_I, EC_MOVE2(COVET), EC_WORD_ANY, EC_WORD_STRONG, EC_WORD_STENCH, EC_EMPTY_WORD}, @@ -1344,6 +1556,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_WEEZING, .heldItem = ITEM_POISON_BARB, .moves = {MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_SMOKESCREEN, MOVE_HAZE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1356,13 +1570,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x3, .nickname = _("WEEZING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_GLOOM, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_PETAL_DANCE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1375,13 +1591,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("GLOOM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_MUK, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SCREECH, MOVE_DISABLE, MOVE_SLUDGE_BOMB, MOVE_ACID_ARMOR}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1394,13 +1612,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x3, .nickname = _("MUK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_TROPIUS, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_SWEET_SCENT, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .attackEV = 120, .speedEV = 255, .spAttackEV = 135, @@ -1414,13 +1634,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x83, .nickname = _("TROPIUS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_BELLOSSOM, .heldItem = ITEM_MENTAL_HERB, .moves = {MOVE_SWEET_SCENT, MOVE_PETAL_DANCE, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1433,13 +1655,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x6, .nickname = _("BELLOSSOM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_MEGANIUM, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_RAZOR_LEAF, MOVE_BODY_SLAM, MOVE_LEECH_SEED, MOVE_SYNTHESIS}, + .level = 0, + .ppBonuses = 0, .attackEV = 200, .speedEV = 110, .spAttackEV = 200, @@ -1453,22 +1677,39 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x1F, .nickname = _("MEGANIUM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_3/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_3/collision.bin"), - .trainerCoords = {COORDS_XY(7,4), COORDS_XY(7,10)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), - } + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x1F, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x24, 0x24, 0x24, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x35, 0x35, 0x3B, 0x35, 0x35, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x08, + 0x33, 0x17, 0x1F, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x34, 0x17, 0x2C, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x1F, 0x17, 0x17, 0x17, 0x17, 0x1F, 0x17, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x35, 0x1F, 0x17, 0x17, 0x1F, 0x17, 0x08, + 0x34, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x3B, 0x3B, 0x2B, 0x17, 0x08, + 0x17, 0x17, 0x17, 0x1F, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x2C, 0x17, 0x08, + 0x1F, 0x17, 0x17, 0x2C, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x1F, 0x3B, 0x17, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x2B, 0x3B, 0x17, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x35, 0x35, 0x35, 0x2B, 0x17, 0x3B, 0x2C, 0x3B, 0x17, 0x08, + 0x34, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x7C1, 0x8441, 0x8477, 0x8441, 0xA441, 0x0401, 0x1, 0x8401, 0x8465, 0x0445, 0x1441, 0x8449, 0x8449, 0x87C1, 0xFFFF}, + .coords = {COORDS_XY(7,4), COORDS_XY(7,10)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), + } }, }; -static const struct TrainerHillChallenge sChallenge_Variety = +static const struct TrHillTag sDataTagVariety = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 1, @@ -1476,7 +1717,7 @@ static const struct TrainerHillChallenge sChallenge_Variety = .checksum = 0x00054C15 }; -static const struct TrainerHillFloor sFloors_Variety[] = { +static const struct TrHillFloor sDataTagVariety_Floors[] = { [0] = { .trainerNum1 = 41, @@ -1487,6 +1728,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("TERRANCE"), .facilityClass = FACILITY_CLASS_GENTLEMAN, + .unused = 0, .speechBefore = {EC_WORD_GOOD, EC_WORD_CHILDREN, EC_WORD_WILL, EC_WORD_GET, EC_WORD_A, EC_MOVE2(PRESENT)}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_MY, EC_WORD_VICTORY, EC_WORD_IS, EC_WORD_YOUR, EC_MOVE2(PRESENT)}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_TO, EC_WORD_YOU, EC_EMPTY_WORD}, @@ -1498,6 +1740,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_DELIBIRD, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_SPLASH, MOVE_HAIL, MOVE_PROTECT}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1510,13 +1754,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0x8A, .nickname = _("DELIBIRD"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_CLEFAIRY, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_MOONLIGHT}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1529,13 +1775,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("CLEFAIRY"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_PIKACHU, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_AGILITY}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1548,13 +1796,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("PIKACHU"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_MARILL, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_ENDURE}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1567,13 +1817,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0x8A, .nickname = _("MARILL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_JIGGLYPUFF, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_SING, MOVE_DISABLE, MOVE_REST}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1586,13 +1838,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("JIGGLYPUFF"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_TOGETIC, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_CHARM, MOVE_SWEET_KISS, MOVE_WISH}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1605,7 +1859,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0x26, .nickname = _("TOGETIC"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -1613,6 +1867,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("ELIZABETH"), .facilityClass = FACILITY_CLASS_LADY, + .unused = 0, .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_WORD_SENSE, EC_WORD_ME, EC_MOVE(FOCUS_ENERGY), EC_WORD_QUES}, .speechWin = {EC_WORD_THAT_S, EC_WORD_ABOUT, EC_WORD_RIGHT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_THINK}, .speechLose = {EC_WORD_THINGS, EC_WORD_DON_T, EC_WORD_ALWAYS, EC_WORD_WORK, EC_WORD_OUT, EC_EMPTY_WORD}, @@ -1624,6 +1879,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_WIGGLYTUFF, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SING, MOVE_DREAM_EATER}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1636,13 +1893,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xC1, .nickname = _("WIGGLYTUFF"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_SABLEYE, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_ASTONISH, MOVE_FAINT_ATTACK, MOVE_DETECT, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1655,13 +1914,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("SABLEYE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_GRUMPIG, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_BOUNCE, MOVE_FUTURE_SIGHT}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1674,13 +1935,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("GRUMPIG"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_CORSOLA, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_BUBBLE_BEAM, MOVE_ROCK_BLAST, MOVE_REFLECT, MOVE_LIGHT_SCREEN}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1693,13 +1956,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x12, .nickname = _("CORSOLA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_CLAMPERL, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_WHIRLPOOL, MOVE_IRON_DEFENSE, MOVE_ENDURE, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1712,13 +1977,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("CLAMPERL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_DIVE, MOVE_ICY_WIND, MOVE_SWIFT, MOVE_SKILL_SWAP}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1731,17 +1998,34 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("STARMIE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_0/collision.bin"), - .trainerCoords = {COORDS_XY(5,8), COORDS_XY(9,8)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x40, 0x41, 0x41, 0x08, + 0x40, 0xFB, 0x43, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x42, 0x42, 0x42, 0xFB, 0x41, 0x08, + 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x43, 0x43, 0xFB, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0xFB, 0x43, 0x41, 0x42, 0x40, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x40, 0x43, 0x43, 0x43, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x42, 0x41, 0xFE, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x42, 0x41, 0x43, 0x43, 0x43, 0x41, 0x40, 0x42, 0x42, 0x42, 0x42, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0xFB, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0xFB, 0x40, 0x41, 0x08, + 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x08, + 0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x08, + }, + .collisionData = {0x0381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1}, + .coords = {COORDS_XY(5,8), COORDS_XY(9,8)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(3, 3), } }, [1] = @@ -1754,6 +2038,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("ANNABELL"), .facilityClass = FACILITY_CLASS_PARASOL_LADY, + .unused = 0, .speechBefore = {EC_WORD_HI, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_UPBEAT, EC_WORD_QUES}, .speechWin = {EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_WELL, EC_WORD_QUES, EC_EMPTY_WORD}, .speechLose = {EC_WORD_I, EC_WORD_CAN, EC_WORD_SEE, EC_WORD_YOU_RE, EC_WORD_FEELING, EC_WORD_GREAT}, @@ -1765,6 +2050,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_JIGGLYPUFF, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SING, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1781,13 +2068,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("JIGGLYPUFF"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_JYNX, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_PERISH_SONG, MOVE_FAKE_TEARS, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1804,13 +2093,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("JYNX"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_EXPLOUD, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HOWL, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1827,13 +2118,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("EXPLOUD"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_ABSOL, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1850,13 +2143,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("ABSOL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_PIDGEOTTO, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_FEATHER_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1873,13 +2168,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("PIDGEOTTO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ALTARIA, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1896,7 +2193,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("ALTARIA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -1904,6 +2201,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("COLEMAN"), .facilityClass = FACILITY_CLASS_COLLECTOR, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_SEEK, EC_WORD_SOMEONE, EC_WORD_AS, EC_WORD_MY, EC_WORD_IDOL}, .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_WORD_IDOL, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_LIKE, EC_WORD_A, EC_MOVE(HEAL_BELL), EC_WORD_TO_ME, EC_WORD_EXCL}, @@ -1915,6 +2213,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_CHIMECHO, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -1928,13 +2228,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("CHIMECHO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_WHISMUR, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -1948,13 +2250,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("WHISMUR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_YANMA, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -1968,13 +2272,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("YANMA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_ILLUMISE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -1988,13 +2294,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("ILLUMISE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_SPHEAL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -2008,13 +2316,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SPHEAL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_VIGOROTH, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -2028,17 +2338,34 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("VIGOROTH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_1/collision.bin"), - .trainerCoords = {COORDS_XY(3,8), COORDS_XY(11,8)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(7, 7), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x91, 0x9B, 0x9C, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x08, + 0x9C, 0x9B, 0x96, 0x40, 0xDB, 0xDB, 0x40, 0x96, 0x40, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x08, + 0x91, 0x96, 0x40, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9C, 0x08, + 0x91, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x9B, 0x08, + 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, + 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, + 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, + 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x08, + 0x91, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x08, + 0x91, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9C, 0x08, + 0x9C, 0x9B, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x08, + 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9C, 0x96, 0x08, + 0xD6, 0x96, 0x9C, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0xD6, 0x08, + 0x9C, 0xD6, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0xD6, 0x9C, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF}, + .coords = {COORDS_XY(3,8), COORDS_XY(11,8)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(7, 7), } }, [2] = @@ -2051,6 +2378,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("ENRIQUE"), .facilityClass = FACILITY_CLASS_RICH_BOY, + .unused = 0, .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_FOR, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_TIME}, .speechWin = {EC_WORD_HEY, EC_WORD_HEY, EC_WORD_EXCL, EC_WORD_WHAT_S_UP_QUES, EC_EMPTY_WORD, EC_EMPTY_WORD}, .speechLose = {EC_WORD_AWW, EC_WORD_COULDN_T, EC_WORD_YOU, EC_WORD_LET_ME_WIN, EC_WORD_QUES, EC_EMPTY_WORD}, @@ -2062,6 +2390,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_WOOPER, .heldItem = ITEM_FIGY_BERRY, .moves = {MOVE_RAIN_DANCE, MOVE_YAWN, MOVE_SURF, MOVE_HAZE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -2075,13 +2405,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("WOOPER"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_POLIWAG, .heldItem = ITEM_WIKI_BERRY, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_MIST, MOVE_HYPNOSIS}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -2095,13 +2427,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0x3, .nickname = _("POLIWAG"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_PSYDUCK, .heldItem = ITEM_AGUAV_BERRY, .moves = {MOVE_HYPNOSIS, MOVE_SURF, MOVE_DISABLE, MOVE_SEISMIC_TOSS}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -2115,13 +2449,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("PSYDUCK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_RHYDON, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -2142,6 +2478,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_RHYHORN, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2162,6 +2500,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_CUBONE, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2183,6 +2523,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("COLLEEN"), .facilityClass = FACILITY_CLASS_LADY, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_OUT}, .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_ROCK, EC_WORD_THING, EC_WORD_EXCL}, .speechLose = {EC_WORD_GO_AHEAD, EC_WORD_AND, EC_WORD_CRUSH, EC_WORD_MY, EC_WORD_DREAM, EC_WORD_ELLIPSIS}, @@ -2194,6 +2535,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_MAGNEMITE, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_ZAP_CANNON, MOVE_SPARK, MOVE_THUNDER_SHOCK}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -2207,13 +2550,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("MAGNEMITE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_ELECTABUZZ, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_SHOCK_WAVE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -2227,13 +2572,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x41, .nickname = _("ELECTABUZZ"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_FLAAFFY, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_SHOCK_WAVE, MOVE_THUNDER_SHOCK}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .spAttackEV = 130, .otId = TRAINER_HILL_OTID, @@ -2246,13 +2593,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("FLAAFFY"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_BALTOY, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2273,6 +2622,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_PINECO, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -2293,6 +2644,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_VOLTORB, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2311,12 +2664,29 @@ static const struct TrainerHillFloor sFloors_Variety[] = { }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_2/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_2/collision.bin"), - .trainerCoords = {COORDS_XY(9,1), COORDS_XY(14,1)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(4, 4), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x1C, 0x1D, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x84, 0x84, 0x84, 0x9A, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x17, 0xBB, 0xBB, 0x08, + }, + .collisionData = {0x0381, 0x0381, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1}, + .coords = {COORDS_XY(9,1), COORDS_XY(14,1)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(4, 4), } }, [3] = @@ -2329,6 +2699,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("KIMBERLY"), .facilityClass = FACILITY_CLASS_POKEFAN_F, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_WORKING, EC_WORD_AT, EC_WORD_MY, EC_WORD_OWN_TEMPO}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_BAD, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MEAN, EC_WORD_KID, EC_WORD_IT, EC_WORD_SEEMS}, @@ -2340,6 +2711,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_UNOWN, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2352,13 +2725,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x202, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_UNOWN, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2371,13 +2746,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x10001, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_UNOWN, .heldItem = ITEM_BLACK_BELT, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2390,13 +2767,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x102, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_SPINDA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -2410,13 +2789,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x88FE980F, .nickname = _("SPINDA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_PLUSLE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2429,13 +2810,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("PLUSLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_VOLBEAT, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_HELPING_HAND, MOVE_SIGNAL_BEAM, MOVE_SOLAR_BEAM, MOVE_MOONLIGHT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2448,7 +2831,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("VOLBEAT"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -2456,6 +2839,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("FRANCISCO"), .facilityClass = FACILITY_CLASS_POKEFAN_M, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_TOO, EC_EMPTY_WORD}, .speechWin = {EC_WORD_SO, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_LOSE, EC_EMPTY_WORD}, .speechLose = {EC_WORD_NO, EC_WORD_WONDER, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_BEAT, EC_WORD_YOU}, @@ -2467,6 +2851,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_SPINDA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -2480,13 +2866,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xE2880098, .nickname = _("SPINDA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MINUN, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2499,13 +2887,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("MINUN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_ILLUMISE, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_HELPING_HAND, MOVE_WISH, MOVE_THUNDERBOLT, MOVE_MOONLIGHT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2518,13 +2908,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ILLUMISE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_UNOWN, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2537,13 +2929,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x302, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_UNOWN, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2556,13 +2950,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x203, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_UNOWN, .heldItem = ITEM_TWISTED_SPOON, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2575,22 +2971,39 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x301, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_3/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_3/collision.bin"), - .trainerCoords = {COORDS_XY(10,2), COORDS_XY(14,2)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x5E, 0x41, 0x71, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, + 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, + 0x65, 0x40, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, + 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x42, 0x73, 0x41, 0x08, + 0x69, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x43, 0x73, 0x43, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x08, + 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x08, + 0x65, 0x42, 0x73, 0x42, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x08, + 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x08, + 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x43, 0x6D, 0x41, 0x73, 0x43, 0x6D, 0x08, + 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x08, + 0x65, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x40, 0x73, 0x08, + 0x6C, 0x73, 0x40, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x08, + 0x69, 0x40, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x08, + 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x1, 0x2201, 0x1, 0x8881, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0xFFFF}, + .coords = {COORDS_XY(10,2), COORDS_XY(14,2)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(3, 3), } }, }; -static const struct TrainerHillChallenge sChallenge_Unique = +static const struct TrHillTag sDataTagUnique = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 3, @@ -2598,7 +3011,7 @@ static const struct TrainerHillChallenge sChallenge_Unique = .checksum = 0x000652F3 }; -static const struct TrainerHillFloor sFloors_Unique[] = { +static const struct TrHillFloor sDataTagUnique_Floors[] = { [0] = { .trainerNum1 = 49, @@ -2609,6 +3022,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("MEREDITH"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, + .unused = 0, .speechBefore = {EC_WORD_UM, EC_WORD_ELLIPSIS, EC_EMPTY_WORD, EC_WORD_I, EC_WORD_ELLIPSIS, EC_EMPTY_WORD}, .speechWin = {EC_WORD_OH, EC_WORD_EXCL, EC_EMPTY_WORD, EC_WORD_UM, EC_WORD_ELLIPSIS, EC_WORD_YAY}, .speechLose = {EC_WORD_UM, EC_WORD_ELLIPSIS, EC_EMPTY_WORD, EC_WORD_WAAAH, EC_WORD_ELLIPSIS, EC_EMPTY_WORD}, @@ -2620,6 +3034,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_SUNFLORA, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_PETAL_DANCE, MOVE_GRASS_WHISTLE, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .defenseEV = 155, .spDefenseEV = 100, @@ -2633,13 +3049,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("SUNFLORA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_TANGELA, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_AMNESIA, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spDefenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -2652,13 +3070,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x91, .nickname = _("TANGELA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_VENUSAUR, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 100, .attackEV = 110, .defenseEV = 100, @@ -2674,13 +3094,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x1F, .nickname = _("VENUSAUR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_LANTURN, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_SPARK, MOVE_WATER_PULSE, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2693,13 +3115,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("LANTURN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_MANECTRIC, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_THUNDERBOLT, MOVE_HEADBUTT, MOVE_BITE, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2712,13 +3136,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("MANECTRIC"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_RAIKOU, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDER, MOVE_CRUNCH, MOVE_ROAR, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2731,7 +3157,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("RAIKOU"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -2739,6 +3165,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("BERNARD"), .facilityClass = FACILITY_CLASS_KINDLER, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_THIS, EC_WORD_HOT, EC_WORD_BATTLE}, .speechWin = {EC_WORD_DID, EC_WORD_I, EC_WORD_COOL, EC_WORD_YOU, EC_WORD_DOWN, EC_WORD_QUES}, .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_TERRIBLE, EC_WORD_PERSON}, @@ -2750,6 +3177,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_RELICANTH, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_MUD_SPORT, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .hpEV = 155, .defenseEV = 100, .spDefenseEV = 255, @@ -2763,13 +3192,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x2F, .nickname = _("RELICANTH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_GOLDUCK, .heldItem = ITEM_LAX_INCENSE, .moves = {MOVE_SURF, MOVE_PSYBEAM, MOVE_BRICK_BREAK, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2782,13 +3213,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GOLDUCK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_BLASTOISE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_MIRROR_COAT, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2801,13 +3234,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("BLASTOISE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_MAGCARGO, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_HEAT_WAVE, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spDefenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -2820,13 +3255,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0x93, .nickname = _("MAGCARGO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_RAPIDASH, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2839,13 +3276,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("RAPIDASH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_MOLTRES, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SKY_ATTACK, MOVE_AERIAL_ACE, MOVE_ROAR, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2858,17 +3297,34 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("MOLTRES"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_0/collision.bin"), - .trainerCoords = {COORDS_XY(4,3), COORDS_XY(7,3)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(2, 2), + .display = { + .metatileData = { + 0xF1, 0xF5, 0xFB, 0xF5, 0xE6, 0xE6, 0x1B, 0x14, 0x15, 0xF8, 0xF9, 0xFA, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xF9, 0xE6, 0xEE, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0x9B, 0x9B, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0x9B, 0xDB, 0xDB, 0x9B, 0xEC, 0xFB, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xF5, 0x95, 0x95, 0xF5, 0xF5, 0xF5, 0xEB, 0xEC, 0xEB, 0xFB, 0xEB, 0x08, + 0xED, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x08, + 0xF4, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xF5, 0xFB, 0x08, + 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0x08, + 0xF1, 0xF5, 0xF5, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0x08, + 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0x08, + 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0x08, + 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0x08, + 0xF1, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x5E01, 0x50FF, 0x5083, 0x503B, 0x5FEB, 0xC02B, 0x5FEB, 0x5009, 0x57FD, 0x1005, 0x7FF5, 0x15, 0x7FF5, 0x1, 0xFFFF}, + .coords = {COORDS_XY(4,3), COORDS_XY(7,3)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(2, 2), } }, [1] = @@ -2881,6 +3337,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("ABRAHAM"), .facilityClass = FACILITY_CLASS_RUIN_MANIAC, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_POKEMON, EC_WORD_THE, EC_WORD_BEST}, .speechWin = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_GREAT, EC_WORD_POKEMON, EC_WORD_IT, EC_WORD_IS}, .speechLose = {EC_WORD_I, EC_WORD_CONFUSED, EC_WORD_A, EC_WORD_MOVE, EC_WORD_WITH, EC_WORD_ANOTHER}, @@ -2892,6 +3349,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IMPRISON}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -2905,13 +3364,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_REST, MOVE_THUNDER_WAVE, MOVE_FLAMETHROWER, MOVE_IMPRISON}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -2925,13 +3386,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_EXPLOSION}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -2945,13 +3408,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_IMPRISON}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -2965,13 +3430,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_IMPRISON}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -2985,13 +3452,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -3005,7 +3474,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -3013,6 +3482,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("LUC"), .facilityClass = FACILITY_CLASS_TUBER_M, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_WORD_COOL, EC_WORD_RARE, EC_WORD_MOVE}, .speechWin = {EC_WORD_MY, EC_WORD_RARE, EC_WORD_MOVE, EC_WORD_IS, EC_WORD_COOL, EC_WORD_ISN_T_IT_QUES}, .speechLose = {EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_MOVE, EC_WORD_QUES}, @@ -3024,6 +3494,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_STARYU, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_CAMOUFLAGE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3037,13 +3509,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xA, .nickname = _("STARYU"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MEOWTH, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PAY_DAY, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3057,13 +3531,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("MEOWTH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_BLAZIKEN, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_BLAZE_KICK, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -3077,13 +3553,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("BLAZIKEN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_CUBONE, .heldItem = ITEM_THICK_CLUB, .moves = {MOVE_BONEMERANG, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .spDefenseEV = 252, @@ -3097,13 +3575,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0x16, .nickname = _("CUBONE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_BEEDRILL, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_TWINEEDLE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .otId = TRAINER_HILL_OTID, @@ -3116,13 +3596,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("BEEDRILL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_RATICATE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SUPER_FANG, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -3136,17 +3618,34 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xD, .nickname = _("RATICATE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_1/collision.bin"), - .trainerCoords = {COORDS_XY(9,6), COORDS_XY(13,6)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x2D, 0x3B, 0x3B, 0x3B, 0x35, 0x2C, 0x23, 0x24, 0x23, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, + 0x94, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x9B, 0x08, + 0x91, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x08, + 0x8D, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8C, 0x08, + 0x94, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x9B, 0x9B, 0x87, 0x9B, 0x08, + 0x91, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x9B, 0x95, 0x8F, 0x9B, 0x08, + 0x91, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x95, 0x97, 0x95, 0x97, 0x8C, 0x9B, 0x8C, 0x97, 0x95, 0x08, + 0x91, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x87, 0x95, 0x87, 0x8C, 0x08, + 0x8D, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x08, + 0x94, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x08, + 0x91, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x95, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x9B, 0x08, + 0x91, 0x8F, 0x95, 0x8F, 0x8B, 0x8F, 0x8C, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x08, + 0x91, 0x97, 0x8C, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8B, 0x97, 0x9B, 0x08, + 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8C, 0x9B, 0x9B, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x7C1, 0x8AA1, 0x0209, 0x5557, 0xA281, 0x81, 0x5D6D, 0x2283, 0x89, 0xDD55, 0x20A1, 0xA81, 0x7D5D, 0x9, 0xFFFF}, + .coords = {COORDS_XY(9,6), COORDS_XY(13,6)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(3, 3), } }, [2] = @@ -3159,6 +3658,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("BREYDEN"), .facilityClass = FACILITY_CLASS_YOUNGSTER, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CARE, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_A_LOT}, .speechWin = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_CAN, EC_WORD_DO, EC_WORD_IT, EC_WORD_ALL}, .speechLose = {EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_LIKE, EC_WORD_WE, EC_WORD_ALWAYS, EC_WORD_WIN}, @@ -3170,6 +3670,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_CHARMELEON, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_FIRE_SPIN, MOVE_DRAGON_RAGE, MOVE_FLAMETHROWER, MOVE_SLASH}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3190,6 +3692,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_WARTORTLE, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_HYDRO_PUMP, MOVE_SKULL_BASH, MOVE_RAIN_DANCE, MOVE_PROTECT}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .otId = TRAINER_HILL_OTID, @@ -3209,6 +3713,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_IVYSAUR, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_SOLAR_BEAM, MOVE_SYNTHESIS, MOVE_GROWTH, MOVE_SWEET_SCENT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -3229,6 +3735,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_BAYLEEF, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_SOLAR_BEAM, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN, MOVE_BODY_SLAM}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .attackEV = 130, .spAttackEV = 130, @@ -3249,6 +3757,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_CROCONAW, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_SCARY_FACE, MOVE_SLASH, MOVE_HYDRO_PUMP, MOVE_SCREECH}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -3269,6 +3779,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_QUILAVA, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_FLAME_WHEEL, MOVE_SWIFT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3290,6 +3802,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("ANIYA"), .facilityClass = FACILITY_CLASS_TUBER_F, + .unused = 0, .speechBefore = {EC_WORD_SOMEONE, EC_WORD_GOT, EC_WORD_ME, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_EGG}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_NEW, EC_WORD_AT, EC_WORD_THIS, EC_WORD_EXCL}, .speechLose = {EC_WORD_OH, EC_WORD_BUT, EC_WORD_ELLIPSIS, EC_WORD_WHY, EC_WORD_WHY, EC_WORD_QUES_EXCL}, @@ -3301,6 +3814,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_SMOOCHUM, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_SWEET_KISS, MOVE_FAKE_TEARS}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3321,6 +3836,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_AZURILL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SURF, MOVE_SING, MOVE_RAIN_DANCE, MOVE_BLIZZARD}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3341,6 +3858,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_ELEKID, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3361,6 +3880,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_CLEFFA, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_MEGA_KICK, MOVE_SWEET_KISS, MOVE_SING, MOVE_METRONOME}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3381,6 +3902,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_WYNAUT, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -3401,6 +3924,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_MAGBY, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_FIRE_BLAST, MOVE_CONFUSE_RAY, MOVE_THUNDER_PUNCH, MOVE_BARRIER}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3419,12 +3944,29 @@ static const struct TrainerHillFloor sFloors_Unique[] = { }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_2/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_2/collision.bin"), - .trainerCoords = {COORDS_XY(6,9), COORDS_XY(8,9)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(1, 1), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x08, + 0x69, 0x46, 0x7A, 0x73, 0x73, 0x73, 0x79, 0x73, 0x73, 0x73, 0x7D, 0x73, 0x73, 0x73, 0x46, 0x08, + 0x69, 0x46, 0x73, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0x69, 0x46, 0x73, 0x73, 0x7B, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x7A, 0x73, 0x73, 0x73, 0x46, 0x08, + 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7A, 0x46, 0x08, + 0x69, 0x46, 0x73, 0x73, 0x73, 0x73, 0x73, 0x7D, 0x7C, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x46, 0x08, + 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, + 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0xF1, 0x46, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7A, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7C, 0x08, + 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xFB, 0x08, + 0x7C, 0xFB, 0x7B, 0xFB, 0x7A, 0xFB, 0x79, 0xFB, 0xB3, 0xFB, 0x7D, 0xFB, 0x7E, 0xFB, 0x7D, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x7FFB, 0x4003, 0x5FFF, 0x4003, 0x7FFB, 0x4003, 0x7EFF, 0x4443, 0x4443, 0x4443, 0x7EFF, 0x4001, 0x7FFD, 0x1, 0xFFFF}, + .coords = {COORDS_XY(6,9), COORDS_XY(8,9)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(1, 1), } }, [3] = @@ -3437,6 +3979,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("DANE"), .facilityClass = FACILITY_CLASS_BIRD_KEEPER, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_GOT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ON, EC_WORD_VACATION}, .speechWin = {EC_WORD_IT_S, EC_WORD_GREAT, EC_WORD_TO, EC_WORD_TRAVEL, EC_WORD_AND, EC_WORD_BATTLE}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_MY, EC_WORD_RARE, EC_WORD_POKEMON, EC_WORD_EXCL}, @@ -3448,6 +3991,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_SUDOWOODO, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_ROCK_SLIDE, MOVE_BLOCK, MOVE_TOXIC, MOVE_EXPLOSION}, + .level = 0, + .ppBonuses = 0, .hpEV = 100, .attackEV = 255, .spDefenseEV = 155, @@ -3461,13 +4006,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("SUDOWOODO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_SLOWKING, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_BLIZZARD, MOVE_DISABLE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .defenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -3480,13 +4027,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0x8C, .nickname = _("SLOWKING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_ENTEI, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_FIRE_SPIN, MOVE_ROAR}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3499,13 +4048,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ENTEI"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_HITMONCHAN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEGA_PUNCH, MOVE_DETECT, MOVE_COUNTER, MOVE_SKY_UPPERCUT}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -3518,13 +4069,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONCHAN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_MANTINE, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .defenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -3537,13 +4090,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0x6, .nickname = _("MANTINE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ZAPDOS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_AGILITY}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3556,7 +4111,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x18, .nickname = _("ZAPDOS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -3564,6 +4119,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("STEPHANIE"), .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, + .unused = 0, .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_WIN, EC_WORD_EXCL}, .speechWin = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_UNDERSTAND, EC_WORD_HOW, EC_WORD_NOW, EC_WORD_QUES}, .speechLose = {EC_WORD_YES, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_DO, EC_WORD_IT}, @@ -3575,6 +4131,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_HITMONLEE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEGA_KICK, MOVE_MIND_READER, MOVE_FOCUS_ENERGY, MOVE_HI_JUMP_KICK}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3587,13 +4145,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONLEE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_PORYGON2, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_LOCK_ON, MOVE_BLIZZARD, MOVE_CONVERSION_2, MOVE_PSYCHIC}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3606,13 +4166,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("PORYGON2"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_SUICUNE, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_SURF, MOVE_CALM_MIND, MOVE_MIRROR_COAT, MOVE_MIST}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3625,13 +4187,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("SUICUNE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_HOUNDOOM, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_ROAR, MOVE_WILL_O_WISP}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3644,13 +4208,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("HOUNDOOM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_STANTLER, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_CONFUSE_RAY, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_TAKE_DOWN}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -3663,13 +4229,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("STANTLER"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ARTICUNO, .heldItem = ITEM_NEVER_MELT_ICE, .moves = {MOVE_BLIZZARD, MOVE_SHEER_COLD, MOVE_MIST, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3682,22 +4250,39 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ARTICUNO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_3/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_3/collision.bin"), - .trainerCoords = {COORDS_XY(8,2), COORDS_XY(11,5)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0xF1, 0xFB, 0xFB, 0xFB, 0xF9, 0xF9, 0x1B, 0x1C, 0x1D, 0xE5, 0xE6, 0xEE, 0xF5, 0xFB, 0xFB, 0x08, + 0xED, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x08, + 0xF4, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, + 0xF1, 0xEB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x08, + 0xF1, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xF5, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0x08, + 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0x08, + 0xF1, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x3F9, 0xF041, 0x41, 0x7F5F, 0x4401, 0x4541, 0x5579, 0x5541, 0x555F, 0x5541, 0x5541, 0x557D, 0x1101, 0x1101, 0xFFFF}, + .coords = {COORDS_XY(8,2), COORDS_XY(11,5)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), } }, }; -static const struct TrainerHillChallenge sChallenge_Expert = +static const struct TrHillTag sDataTagExpert = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 1, @@ -3705,7 +4290,7 @@ static const struct TrainerHillChallenge sChallenge_Expert = .checksum = 0x00061F3F }; -static const struct TrainerHillFloor sFloors_Expert[] = { +static const struct TrHillFloor sDataTagExpert_Floors[] = { [0] = { .trainerNum1 = 57, @@ -3716,6 +4301,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("ALFRED"), .facilityClass = FACILITY_CLASS_COOLTRAINER_M, + .unused = 0, .speechBefore = {EC_WORD_WE, EC_WORD_CAN, EC_WORD_TAKE, EC_WORD_ON, EC_WORD_ANY, EC_WORD_TYPE}, .speechWin = {EC_WORD_WE, EC_WORD_DID, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_OKAY, EC_WORD_EXCL}, .speechLose = {EC_WORD_OUR, EC_WORD_STRATEGY, EC_WORD_ISN_T, EC_WORD_ANY, EC_WORD_GOOD, EC_WORD_ELLIPSIS}, @@ -3727,6 +4313,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_SNORLAX, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .defenseEV = 252, @@ -3740,13 +4328,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x35, .nickname = _("SNORLAX"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MILTANK, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_MILK_DRINK}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3760,13 +4350,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("MILTANK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_URSARING, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spAttackEV = 6, @@ -3780,13 +4372,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x7F, .nickname = _("URSARING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_SLAKING, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_REST}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .spDefenseEV = 252, @@ -3800,13 +4394,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("SLAKING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_KANGASKHAN, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_FAKE_OUT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3820,13 +4416,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("KANGASKHAN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ZANGOOSE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_ROAR}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3840,7 +4438,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("ZANGOOSE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -3848,6 +4446,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("EDIE"), .facilityClass = FACILITY_CLASS_PSYCHIC_F, + .unused = 0, .speechBefore = {EC_WORD_WE, EC_WORD_WILL_BE_HERE, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_TRAINER, EC_WORD_CHALLENGE}, .speechWin = {EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_WORKS, EC_WORD_TO, EC_WORD_PERFECTION, EC_WORD_EXCL}, .speechLose = {EC_WORD_NO, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_WORD_THAT, EC_WORD_WON_T, EC_WORD_DO}, @@ -3859,6 +4458,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_SLOWKING, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_SKILL_SWAP}, + .level = 0, + .ppBonuses = 0, .hpEV = 200, .defenseEV = 110, .spAttackEV = 200, @@ -3872,13 +4473,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("SLOWKING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_ESPEON, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_CALM_MIND, MOVE_REFLECT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3892,13 +4495,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("ESPEON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3912,13 +4517,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("STARMIE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_GENGAR, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3932,13 +4539,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GENGAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_GARDEVOIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_MAGICAL_LEAF, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3952,13 +4561,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GARDEVOIR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ALAKAZAM, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_RECOVER, MOVE_THUNDER_WAVE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3972,17 +4583,34 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ALAKAZAM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_0/collision.bin"), - .trainerCoords = {COORDS_XY(4,7), COORDS_XY(10,7)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(5, 5), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x31, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, + 0x31, 0x3B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3B, 0x3B, 0x08, + 0x69, 0x73, 0x08, 0x4D, 0x4D, 0x4D, 0x4D, 0xD1, 0x4D, 0x4D, 0x4D, 0x4D, 0x08, 0x69, 0x73, 0x08, + 0x40, 0x3B, 0x08, 0x55, 0x55, 0x55, 0x55, 0xD1, 0x55, 0x55, 0x55, 0x55, 0x08, 0x31, 0x41, 0x08, + 0x69, 0x41, 0x08, 0xC5, 0xD9, 0xD9, 0xD9, 0x9A, 0xD9, 0xD9, 0xD9, 0xC6, 0x08, 0x41, 0x73, 0x08, + 0x69, 0x3B, 0x08, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x08, 0x31, 0x73, 0x08, + 0x69, 0x3B, 0x08, 0xCD, 0x9B, 0x73, 0x73, 0x44, 0x73, 0x73, 0x9B, 0xD5, 0x08, 0x31, 0x73, 0x08, + 0x69, 0x3B, 0x08, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x08, 0x31, 0x73, 0x08, + 0x69, 0x41, 0x08, 0xD1, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xDB, 0xDB, 0xDB, 0x08, 0x41, 0x73, 0x08, + 0x40, 0x3B, 0x08, 0x08, 0xC7, 0xC7, 0xDB, 0xDB, 0xDB, 0xC7, 0xC7, 0x08, 0x08, 0x31, 0x41, 0x08, + 0x69, 0x3B, 0x4D, 0x4D, 0x67, 0x67, 0xDB, 0xDB, 0xDB, 0x67, 0x67, 0x4D, 0x4D, 0x31, 0x73, 0x08, + 0x69, 0x3B, 0x55, 0x55, 0xD7, 0xD7, 0xD1, 0xDB, 0xDB, 0xD7, 0xD7, 0x55, 0x55, 0x31, 0x73, 0x08, + 0x69, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x73, 0x08, + 0x69, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x0201, 0x3EF9, 0x3EF9, 0x3EF9, 0x2009, 0x3019, 0x2009, 0x3019, 0x2009, 0x3019, 0x3019, 0x3C79, 0x1, 0x1, 0xFFFF}, + .coords = {COORDS_XY(4,7), COORDS_XY(10,7)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(5, 5), } }, [1] = @@ -3995,6 +4623,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("RODERICK"), .facilityClass = FACILITY_CLASS_COOLTRAINER_M, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CAN, EC_WORD_WIN, EC_WORD_WITHOUT, EC_WORD_A, EC_MOVE2(HELPING_HAND)}, .speechWin = {EC_WORD_IT_S, EC_WORD_ONLY, EC_WORD_NATURAL, EC_WORD_THAT, EC_WORD_I, EC_WORD_WIN}, .speechLose = {EC_WORD_LOSING, EC_WORD_HAS, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SMALL, EC_WORD_ELLIPSIS}, @@ -4006,6 +4635,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_SWELLOW, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_FACADE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4019,13 +4650,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("SWELLOW"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MACHAMP, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_LOW_KICK, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4039,13 +4672,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("MACHAMP"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_URSARING, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4059,13 +4694,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("URSARING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_KINGLER, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_RETURN, MOVE_PROTECT, MOVE_CRABHAMMER, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4079,13 +4716,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("KINGLER"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_TYRANITAR, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .defenseEV = 6, @@ -4099,13 +4738,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("TYRANITAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_DRAGONITE, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_BODY_SLAM, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4119,7 +4760,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("DRAGONITE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -4127,6 +4768,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("ALICIA"), .facilityClass = FACILITY_CLASS_COOLTRAINER_F, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_NEED, EC_WORD_A, EC_MOVE2(HELPING_HAND), EC_WORD_EXCL}, .speechWin = {EC_WORD_SORRY, EC_WORD_EXCL, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_FOR, EC_WORD_YOU}, .speechLose = {EC_WORD_WHAT, EC_WORD_AN, EC_WORD_UNBELIEVABLE, EC_MOVE2(STRUGGLE), EC_WORD_THAT_WAS, EC_WORD_EXCL}, @@ -4138,6 +4780,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_JOLTEON, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4151,13 +4795,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("JOLTEON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_ALAKAZAM, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_ATTRACT, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4171,13 +4817,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("ALAKAZAM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4191,13 +4839,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xA, .nickname = _("STARMIE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PURSUIT, MOVE_PROTECT, MOVE_ATTRACT, MOVE_WILL_O_WISP}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -4211,13 +4861,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x82, .nickname = _("DUSCLOPS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_NINETALES, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_OVERHEAT, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4231,13 +4883,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xD2, .nickname = _("NINETALES"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_ATTRACT, MOVE_WILL_O_WISP}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -4251,17 +4905,34 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x85, .nickname = _("BANETTE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_1/collision.bin"), - .trainerCoords = {COORDS_XY(7,10), COORDS_XY(7,14)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x08, + 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x08, + 0x91, 0x46, 0x7D, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0xB3, 0x9B, 0x9B, 0x9B, 0x08, + 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x9B, 0x08, + 0x91, 0x46, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x08, + 0x91, 0x46, 0x9B, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x08, + 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xB3, 0x08, + 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x08, + 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x08, + 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0x08, + 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x08, + 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF}, + .coords = {COORDS_XY(7,10), COORDS_XY(7,14)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), } }, [2] = @@ -4274,6 +4945,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("TERRENCE"), .facilityClass = FACILITY_CLASS_EXPERT_M, + .unused = 0, .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_THIS, EC_WORD_MATCH, EC_WORD_IS, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_OH_DEAR, EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, EC_EMPTY_WORD, EC_EMPTY_WORD}, @@ -4285,6 +4957,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_WOBBUFFET, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MIRROR_COAT, MOVE_COUNTER, MOVE_SAFEGUARD, MOVE_ENCORE}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4298,13 +4972,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x94, .nickname = _("WOBBUFFET"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_EXPLOUD, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_HYPER_VOICE, MOVE_COUNTER, MOVE_REST, MOVE_ROCK_SLIDE}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4325,6 +5001,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_CROBAT, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE, MOVE_TOXIC}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4338,13 +5016,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("CROBAT"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_DUGTRIO, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_RETURN, MOVE_SLUDGE_BOMB}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -4358,13 +5038,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xD, .nickname = _("DUGTRIO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_ELECTRODE, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_TORMENT, MOVE_MIRROR_COAT, MOVE_THUNDERBOLT, MOVE_LIGHT_SCREEN}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -4385,6 +5067,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_GENGAR, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -4398,7 +5082,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x14, .nickname = _("GENGAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -4406,6 +5090,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("CARLOTTA"), .facilityClass = FACILITY_CLASS_EXPERT_F, + .unused = 0, .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_OH_DEAR, EC_WORD_WE, EC_WORD_HAVE, EC_WORD_A, EC_WORD_PARTY, EC_WORD_LATER}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_TO, EC_WORD_DISAPPOINT, EC_WORD_YOU}, @@ -4417,6 +5102,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_LAPRAS, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_PERISH_SONG, MOVE_SING}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4437,6 +5124,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_ABSOL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PERISH_SONG, MOVE_DOUBLE_EDGE, MOVE_PROTECT, MOVE_TORMENT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -4457,6 +5146,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_ALTARIA, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_PERISH_SONG, MOVE_PROTECT, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .spAttackEV = 6, .spDefenseEV = 252, @@ -4477,6 +5168,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_DEWGONG, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_ICE_BEAM, MOVE_SIGNAL_BEAM, MOVE_REST, MOVE_PERISH_SONG}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -4497,6 +5190,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_POLITOED, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HYDRO_PUMP, MOVE_BLIZZARD, MOVE_MIND_READER, MOVE_PERISH_SONG}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .spAttackEV = 6, .spDefenseEV = 252, @@ -4517,6 +5212,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_MAROWAK, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PERISH_SONG, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_PROTECT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spDefenseEV = 252, @@ -4535,12 +5232,29 @@ static const struct TrainerHillFloor sFloors_Expert[] = { }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_2/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_2/collision.bin"), - .trainerCoords = {COORDS_XY(7,6), COORDS_XY(7,10)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0xD1, 0xDB, 0xDB, 0xDB, 0xD9, 0xD9, 0x1B, 0x14, 0x15, 0x98, 0x99, 0x9A, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xDB, 0xD5, 0xD5, 0xC3, 0xF9, 0x86, 0x8E, 0x95, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x08, + 0xD1, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x08, + 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xFB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, + 0xD1, 0xCC, 0xCC, 0xCC, 0xCC, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, + 0xD1, 0xD5, 0xD5, 0xD5, 0xD5, 0xFB, 0xEC, 0xFB, 0xEC, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, + 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xF5, 0xF5, 0xFB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, + 0xD1, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x08, + 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xDB, 0xCC, 0xCC, 0xCB, 0xFB, 0x8C, 0x8C, 0x8C, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCC, 0xFB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, + }, + .collisionData = {0x0381, 0x0201, 0xEE1, 0x1EF1, 0x3EF9, 0x3EF9, 0x7E7D, 0x783D, 0x2BD, 0x783D, 0x7E7D, 0x3E79, 0x3EF9, 0x1EF1, 0xEE1, 0x201}, + .coords = {COORDS_XY(7,6), COORDS_XY(7,10)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), } }, [3] = @@ -4553,6 +5267,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("NORA"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, + .unused = 0, .speechBefore = {EC_WORD_WAAAH, EC_WORD_THIS, EC_WORD_IS, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_I, EC_WORD_WON}, .speechLose = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SAD, EC_WORD_I, EC_WORD_LOST}, @@ -4564,6 +5279,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_FORRETRESS, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_SPIKES}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .attackEV = 200, .spDefenseEV = 200, @@ -4577,13 +5294,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("FORRETRESS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_ELECTRODE, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4596,13 +5315,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xC, .nickname = _("ELECTRODE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_EXEGGUTOR, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_EXPLOSION, MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_SOLAR_BEAM}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4615,13 +5336,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x7F, .nickname = _("EXEGGUTOR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -4635,13 +5358,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x93, .nickname = _("DUSCLOPS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_NINETALES, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_OVERHEAT, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4654,13 +5379,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("NINETALES"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_THUNDERBOLT, MOVE_THUNDER}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4673,7 +5400,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("BANETTE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -4681,6 +5408,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("GAV"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, + .unused = 0, .speechBefore = {EC_WORD_WAHAHAHA, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_STOP, EC_WORD_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_WOWEE, EC_WORD_EXCL, EC_EMPTY_WORD, EC_WORD_I_AM, EC_WORD_AWESOME, EC_WORD_COOL}, .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_COOL, EC_WORD_AT, EC_WORD_ALL, EC_WORD_EXCL}, @@ -4692,6 +5420,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_SALAMENCE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_ROCK_SLIDE, MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4704,13 +5434,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x95, .nickname = _("SALAMENCE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_GENGAR, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4723,13 +5455,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("GENGAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_GYARADOS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_BITE, MOVE_EARTHQUAKE}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -4742,13 +5476,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("GYARADOS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_GENGAR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_EXPLOSION, MOVE_MEAN_LOOK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -4761,13 +5497,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("GENGAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -4781,13 +5519,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x14, .nickname = _("DUSCLOPS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_MISDREAVUS, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_PERISH_SONG, MOVE_SHADOW_BALL}, + .level = 0, + .ppBonuses = 0, .hpEV = 180, .defenseEV = 180, .spDefenseEV = 150, @@ -4801,17 +5541,34 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x85, .nickname = _("MISDREAVUS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_3/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_3/collision.bin"), - .trainerCoords = {COORDS_XY(7,6), COORDS_XY(7,10)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x08, + 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x08, + 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x08, + 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x08, + 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x08, + 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x08, + 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x08, + 0x96, 0x9B, 0x9B, 0x9B, 0x9B, 0xD6, 0xD6, 0x96, 0xD6, 0xD6, 0xDB, 0x9B, 0x9B, 0x9B, 0x96, 0x08, + 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x08, + 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x08, + 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x08, + 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x08, + 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x08, + 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x08, + 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x08, + }, + .collisionData = {0x0381, 0x0101, 0x0101, 0x6C1, 0x0821, 0x16D1, 0x2829, 0x2009, 0x1, 0x2009, 0x2829, 0x16D1, 0x0821, 0x6C1, 0x0101, 0x101}, + .coords = {COORDS_XY(7,6), COORDS_XY(7,10)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), } }, }; diff --git a/src/data/field_effects/field_effect_object_template_pointers.h b/src/data/field_effects/field_effect_object_template_pointers.h index 41d6271bf..5e7b2a1f8 100755 --- a/src/data/field_effects/field_effect_object_template_pointers.h +++ b/src/data/field_effects/field_effect_object_template_pointers.h @@ -35,6 +35,9 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch; const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles; const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle; const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza; +const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks; +const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks; +const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks; const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall, @@ -74,4 +77,7 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_BUBBLES] = &gFieldEffectObjectTemplate_Bubbles, [FLDEFFOBJ_SMALL_SPARKLE] = &gFieldEffectObjectTemplate_SmallSparkle, [FLDEFFOBJ_RAYQUAZA] = &gFieldEffectObjectTemplate_Rayquaza, + [FLDEFFOBJ_TRACKS_SLITHER] = &gFieldEffectObjectTemplate_SlitherTracks, + [FLDEFFOBJ_TRACKS_SPOT] = &gFieldEffectObjectTemplate_SpotTracks, + [FLDEFFOBJ_TRACKS_BUG] = &gFieldEffectObjectTemplate_BugTracks, }; diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index f9918c160..cf547a5d8 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -431,6 +431,36 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints = { .callback = UpdateFootprintsTireTracksFieldEffect, }; +static const struct SpriteFrameImage sPicTable_BugTracks[] = { + overworld_frame(gFieldEffectObjectPic_BugTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_BugTracks, 2, 2, 1), +}; + +static const struct SpriteFrameImage sPicTable_SpotTracks[] = { + overworld_frame(gFieldEffectObjectPic_SpotTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_SpotTracks, 2, 2, 1), +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_DeepSandFootprints, + .images = sPicTable_BugTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_DeepSandFootprints, + .images = sPicTable_SpotTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + static const struct SpriteFrameImage sPicTable_BikeTireTracks[] = { overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 0), overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 1), @@ -509,6 +539,23 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = { .callback = UpdateFootprintsTireTracksFieldEffect, }; +static const struct SpriteFrameImage sPicTable_SlitherTracks[] = { + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 1), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 2), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 3), +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_BikeTireTracks, + .images = sPicTable_SlitherTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + static const struct SpriteFrameImage sPicTable_JumpBigSplash[] = { overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 0), overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 1), @@ -1272,7 +1319,7 @@ static const union AnimCmd *const sAnimTable_RayquazaSpotlightEffect[] = { sAnim_RayquazaSpotlightEffect, }; -static const struct SpriteFrameImage sPicTable_RayquazaSpotlightEffect[] = { +const struct SpriteFrameImage sPicTable_RayquazaSpotlightEffect[] = { overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0), }; diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h old mode 100644 new mode 100755 diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index f5189d838..8d0956f48 100755 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -24,6 +24,13 @@ u8 (*const gGetVectorDirectionFuncs[])(s16, s16, s16, s16) = { GetLimitedVectorDirection_SouthWestEast, }; +u8 (*const gMovementTypeFuncs_FollowingPokemon[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_FollowingPokemon_Step0, + MovementType_FollowingPokemon_Step1, + MovementType_FollowingPokemon_Step2, + MovementType_FollowingPokemon_Step3, +}; + u8 (*const gMovementTypeFuncs_LookAround[])(struct ObjectEvent *, struct Sprite *) = { MovementType_LookAround_Step0, MovementType_LookAround_Step1, diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h old mode 100644 new mode 100755 diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h old mode 100644 new mode 100755 index 7455ecdfd..f05510ff8 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -363,6 +363,9 @@ const u32 gFieldEffectObjectPic_ShortGrass[] = INCBIN_U32("graphics/field_effect const u32 gFieldEffectObjectPic_SandFootprints[] = INCBIN_U32("graphics/field_effects/pics/sand_footprints.4bpp"); const u32 gFieldEffectObjectPic_DeepSandFootprints[] = INCBIN_U32("graphics/field_effects/pics/deep_sand_footprints.4bpp"); const u32 gFieldEffectObjectPic_BikeTireTracks[] = INCBIN_U32("graphics/field_effects/pics/bike_tire_tracks.4bpp"); +const u32 gFieldEffectObjectPic_SlitherTracks[] = INCBIN_U32("graphics/field_effects/pics/slither_tracks.4bpp"); +const u32 gFieldEffectObjectPic_SpotTracks[] = INCBIN_U32("graphics/field_effects/pics/spot_tracks.4bpp"); +const u32 gFieldEffectObjectPic_BugTracks[] = INCBIN_U32("graphics/field_effects/pics/bug_tracks.4bpp"); const u32 gFieldEffectObjectPic_UnusedSand[] = INCBIN_U32("graphics/field_effects/pics/unused_sand.4bpp"); const u32 gFieldEffectObjectPic_SandPile[] = INCBIN_U32("graphics/field_effects/pics/sand_pile.4bpp"); const u32 gFieldEffectObjectPic_JumpBigSplash[] = INCBIN_U32("graphics/field_effects/pics/jump_big_splash.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h old mode 100644 new mode 100755 diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h old mode 100644 new mode 100755 index 855f9a112..1214eaec2 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -978,7 +978,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_FEAROW] = &gObjectEventGraphicsInfo_Fearow, [OBJ_EVENT_GFX_EKANS] = &gObjectEventGraphicsInfo_Ekans, [OBJ_EVENT_GFX_ARBOK] = &gObjectEventGraphicsInfo_Arbok, - [OBJ_EVENT_GFX_PIKACHU_FOLLOWER] = &gObjectEventGraphicsInfo_Pikachu_Follower, + [OBJ_EVENT_GFX_PIKACHU_FOLLOWER] = &gObjectEventGraphicsInfo_Pikachu_Follower, [OBJ_EVENT_GFX_RAICHU] = &gObjectEventGraphicsInfo_Raichu, [OBJ_EVENT_GFX_SANDSHREW] = &gObjectEventGraphicsInfo_Sandshrew, [OBJ_EVENT_GFX_SANDSLASH] = &gObjectEventGraphicsInfo_Sandslash, diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 2fb8f28ac..567639606 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -2281,3 +2281,3767 @@ static const struct SpriteFrameImage sPicTable_RubySapphireMay[] = { overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 7), overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 8), }; + +const struct SpriteFrameImage gObjectEventPicTable_Bulbasaur[] = { + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 0), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 1), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 2), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 3), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 4), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ivysaur[] = { + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 0), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 1), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 2), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 3), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 4), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Venusaur[] = { + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 0), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 1), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 2), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 3), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 4), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Charmander[] = { + overworld_frame(gObjectEventPic_Charmander, 4, 4, 0), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 1), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 2), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 3), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 4), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Charmeleon[] = { + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 0), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 1), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 2), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 3), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 4), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Charizard[] = { + overworld_frame(gObjectEventPic_Charizard, 4, 4, 0), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 1), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 2), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 3), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 4), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Squirtle[] = { + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 0), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 1), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 2), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 3), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 4), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wartortle[] = { + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 0), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 1), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 2), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 3), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 4), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Blastoise[] = { + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 0), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 1), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 2), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 3), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 4), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Caterpie[] = { + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 0), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 1), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 2), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 3), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 4), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Metapod[] = { + overworld_frame(gObjectEventPic_Metapod, 4, 4, 0), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 1), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 2), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 3), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 4), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Butterfree[] = { + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 0), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 1), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 2), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 3), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 4), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Weedle[] = { + overworld_frame(gObjectEventPic_Weedle, 4, 4, 0), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 1), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 2), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 3), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 4), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kakuna[] = { + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 0), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 1), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 2), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 3), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 4), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Beedrill[] = { + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 0), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 1), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 2), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 3), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 4), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pidgey[] = { + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 0), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 1), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 2), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 3), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 4), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pidgeotto[] = { + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 0), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 1), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 2), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 3), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 4), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pidgeot[] = { + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 0), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 1), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 2), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 3), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 4), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rattata[] = { + overworld_frame(gObjectEventPic_Rattata, 4, 4, 0), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 1), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 2), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 3), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 4), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Raticate[] = { + overworld_frame(gObjectEventPic_Raticate, 4, 4, 0), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 1), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 2), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 3), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 4), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Spearow[] = { + overworld_frame(gObjectEventPic_Spearow, 4, 4, 0), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 1), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 2), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 3), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 4), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Fearow[] = { + overworld_frame(gObjectEventPic_Fearow, 4, 4, 0), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 1), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 2), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 3), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 4), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ekans[] = { + overworld_frame(gObjectEventPic_Ekans, 4, 4, 0), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 1), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 2), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 3), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 4), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Arbok[] = { + overworld_frame(gObjectEventPic_Arbok, 4, 4, 0), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 1), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 2), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 3), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 4), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pikachu_Follow[] = { + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 0), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 1), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 2), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 3), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 4), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Raichu[] = { + overworld_frame(gObjectEventPic_Raichu, 4, 4, 0), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 1), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 2), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 3), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 4), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sandshrew[] = { + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 0), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 1), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 2), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 3), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 4), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sandslash[] = { + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 0), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 1), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 2), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 3), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 4), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nidoran_F[] = { + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nidorina[] = { + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nidoqueen[] = { + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nidoran_M[] = { + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nidorino[] = { + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nidoking[] = { + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Clefairy[] = { + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 0), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 1), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 2), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 3), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 4), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Clefable[] = { + overworld_frame(gObjectEventPic_Clefable, 4, 4, 0), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 1), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 2), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 3), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 4), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Vulpix[] = { + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 0), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 1), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 2), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 3), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 4), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ninetales[] = { + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 0), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 1), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 2), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 3), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 4), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Jigglypuff[] = { + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 0), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 1), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 2), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 3), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 4), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wigglytuff[] = { + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 0), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 1), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 2), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 3), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 4), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Zubat[] = { + overworld_frame(gObjectEventPic_Zubat, 4, 4, 0), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 1), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 2), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 3), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 4), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Golbat[] = { + overworld_frame(gObjectEventPic_Golbat, 4, 4, 0), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 1), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 2), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 3), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 4), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Oddish[] = { + overworld_frame(gObjectEventPic_Oddish, 4, 4, 0), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 1), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 2), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 3), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 4), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gloom[] = { + overworld_frame(gObjectEventPic_Gloom, 4, 4, 0), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 1), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 2), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 3), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 4), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Vileplume[] = { + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 0), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 1), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 2), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 3), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 4), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Paras[] = { + overworld_frame(gObjectEventPic_Paras, 4, 4, 0), + overworld_frame(gObjectEventPic_Paras, 4, 4, 1), + overworld_frame(gObjectEventPic_Paras, 4, 4, 2), + overworld_frame(gObjectEventPic_Paras, 4, 4, 3), + overworld_frame(gObjectEventPic_Paras, 4, 4, 4), + overworld_frame(gObjectEventPic_Paras, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Parasect[] = { + overworld_frame(gObjectEventPic_Parasect, 4, 4, 0), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 1), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 2), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 3), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 4), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Venonat[] = { + overworld_frame(gObjectEventPic_Venonat, 4, 4, 0), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 1), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 2), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 3), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 4), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Venomoth[] = { + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 0), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 1), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 2), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 3), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 4), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Diglett[] = { + overworld_frame(gObjectEventPic_Diglett, 4, 4, 0), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 1), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 2), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 3), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 4), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dugtrio[] = { + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 0), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 1), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 2), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 3), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 4), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Meowth[] = { + overworld_frame(gObjectEventPic_Meowth, 4, 4, 0), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 1), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 2), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 3), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 4), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Persian[] = { + overworld_frame(gObjectEventPic_Persian, 4, 4, 0), + overworld_frame(gObjectEventPic_Persian, 4, 4, 1), + overworld_frame(gObjectEventPic_Persian, 4, 4, 2), + overworld_frame(gObjectEventPic_Persian, 4, 4, 3), + overworld_frame(gObjectEventPic_Persian, 4, 4, 4), + overworld_frame(gObjectEventPic_Persian, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Psyduck[] = { + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 0), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 1), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 2), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 3), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 4), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Golduck[] = { + overworld_frame(gObjectEventPic_Golduck, 4, 4, 0), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 1), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 2), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 3), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 4), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mankey[] = { + overworld_frame(gObjectEventPic_Mankey, 4, 4, 0), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 1), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 2), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 3), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 4), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Primeape[] = { + overworld_frame(gObjectEventPic_Primeape, 4, 4, 0), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 1), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 2), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 3), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 4), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Growlithe[] = { + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 0), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 1), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 2), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 3), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 4), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Arcanine[] = { + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 0), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 1), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 2), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 3), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 4), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Poliwag[] = { + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 0), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 1), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 2), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 3), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 4), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Poliwhirl[] = { + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 0), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 1), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 2), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 3), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 4), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Poliwrath[] = { + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 0), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 1), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 2), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 3), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 4), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Abra[] = { + overworld_frame(gObjectEventPic_Abra, 4, 4, 0), + overworld_frame(gObjectEventPic_Abra, 4, 4, 1), + overworld_frame(gObjectEventPic_Abra, 4, 4, 2), + overworld_frame(gObjectEventPic_Abra, 4, 4, 3), + overworld_frame(gObjectEventPic_Abra, 4, 4, 4), + overworld_frame(gObjectEventPic_Abra, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kadabra[] = { + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 0), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 1), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 2), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 3), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 4), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Alakazam[] = { + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 0), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 1), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 2), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 3), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 4), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Machop[] = { + overworld_frame(gObjectEventPic_Machop, 4, 4, 0), + overworld_frame(gObjectEventPic_Machop, 4, 4, 1), + overworld_frame(gObjectEventPic_Machop, 4, 4, 2), + overworld_frame(gObjectEventPic_Machop, 4, 4, 3), + overworld_frame(gObjectEventPic_Machop, 4, 4, 4), + overworld_frame(gObjectEventPic_Machop, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Machoke[] = { + overworld_frame(gObjectEventPic_Machoke, 4, 4, 0), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 1), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 2), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 3), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 4), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Machamp[] = { + overworld_frame(gObjectEventPic_Machamp, 4, 4, 0), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 1), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 2), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 3), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 4), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bellsprout[] = { + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 0), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 1), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 2), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 3), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 4), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Weepinbell[] = { + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 0), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 1), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 2), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 3), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 4), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Victreebel[] = { + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 0), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 1), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 2), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 3), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 4), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Tentacool[] = { + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 0), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 1), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 2), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 3), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 4), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Tentacruel[] = { + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 0), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 1), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 2), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 3), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 4), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Geodude[] = { + overworld_frame(gObjectEventPic_Geodude, 4, 4, 0), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 1), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 2), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 3), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 4), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Graveler[] = { + overworld_frame(gObjectEventPic_Graveler, 4, 4, 0), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 1), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 2), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 3), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 4), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Golem[] = { + overworld_frame(gObjectEventPic_Golem, 4, 4, 0), + overworld_frame(gObjectEventPic_Golem, 4, 4, 1), + overworld_frame(gObjectEventPic_Golem, 4, 4, 2), + overworld_frame(gObjectEventPic_Golem, 4, 4, 3), + overworld_frame(gObjectEventPic_Golem, 4, 4, 4), + overworld_frame(gObjectEventPic_Golem, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ponyta[] = { + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 0), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 1), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 2), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 3), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 4), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rapidash[] = { + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 0), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 1), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 2), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 3), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 4), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Slowpoke[] = { + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 0), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 1), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 2), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 3), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 4), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Slowbro[] = { + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 0), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 1), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 2), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 3), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 4), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Magnemite[] = { + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 0), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 1), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 2), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 3), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 4), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Magneton[] = { + overworld_frame(gObjectEventPic_Magneton, 4, 4, 0), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 1), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 2), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 3), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 4), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Farfetchd[] = { + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 0), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 1), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 2), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 3), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 4), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 5), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 6), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Doduo[] = { + overworld_frame(gObjectEventPic_Doduo, 4, 4, 0), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 1), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 2), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 3), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 4), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dodrio[] = { + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 0), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 1), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 2), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 3), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 4), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Seel[] = { + overworld_frame(gObjectEventPic_Seel, 4, 4, 0), + overworld_frame(gObjectEventPic_Seel, 4, 4, 1), + overworld_frame(gObjectEventPic_Seel, 4, 4, 2), + overworld_frame(gObjectEventPic_Seel, 4, 4, 3), + overworld_frame(gObjectEventPic_Seel, 4, 4, 4), + overworld_frame(gObjectEventPic_Seel, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dewgong[] = { + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 0), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 1), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 2), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 3), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 4), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Grimer[] = { + overworld_frame(gObjectEventPic_Grimer, 4, 4, 0), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 1), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 2), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 3), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 4), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Muk[] = { + overworld_frame(gObjectEventPic_Muk, 4, 4, 0), + overworld_frame(gObjectEventPic_Muk, 4, 4, 1), + overworld_frame(gObjectEventPic_Muk, 4, 4, 2), + overworld_frame(gObjectEventPic_Muk, 4, 4, 3), + overworld_frame(gObjectEventPic_Muk, 4, 4, 4), + overworld_frame(gObjectEventPic_Muk, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shellder[] = { + overworld_frame(gObjectEventPic_Shellder, 4, 4, 0), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 1), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 2), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 3), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 4), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cloyster[] = { + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 0), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 1), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 2), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 3), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 4), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gastly[] = { + overworld_frame(gObjectEventPic_Gastly, 4, 4, 0), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 1), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 2), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 3), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 4), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Haunter[] = { + overworld_frame(gObjectEventPic_Haunter, 4, 4, 0), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 1), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 2), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 3), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 4), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gengar[] = { + overworld_frame(gObjectEventPic_Gengar, 4, 4, 0), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 1), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 2), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 3), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 4), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Onix[] = { + overworld_frame(gObjectEventPic_Onix, 4, 4, 0), + overworld_frame(gObjectEventPic_Onix, 4, 4, 1), + overworld_frame(gObjectEventPic_Onix, 4, 4, 2), + overworld_frame(gObjectEventPic_Onix, 4, 4, 3), + overworld_frame(gObjectEventPic_Onix, 4, 4, 4), + overworld_frame(gObjectEventPic_Onix, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Drowzee[] = { + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 0), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 1), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 2), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 3), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 4), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hypno[] = { + overworld_frame(gObjectEventPic_Hypno, 4, 4, 0), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 1), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 2), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 3), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 4), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Krabby[] = { + overworld_frame(gObjectEventPic_Krabby, 4, 4, 0), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 1), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 2), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 3), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 4), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kingler[] = { + overworld_frame(gObjectEventPic_Kingler, 4, 4, 0), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 1), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 2), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 3), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 4), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 5), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 6), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Voltorb[] = { + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 0), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 1), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 2), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 3), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 4), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Electrode[] = { + overworld_frame(gObjectEventPic_Electrode, 4, 4, 0), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 1), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 2), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 3), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 4), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Exeggcute[] = { + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 0), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 1), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 2), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 3), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 4), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Exeggutor[] = { + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 0), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 1), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 2), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 3), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 4), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cubone[] = { + overworld_frame(gObjectEventPic_Cubone, 4, 4, 0), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 1), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 2), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 3), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 4), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 5), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 6), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Marowak[] = { + overworld_frame(gObjectEventPic_Marowak, 4, 4, 0), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 1), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 2), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 3), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 4), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 5), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 6), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hitmonlee[] = { + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 0), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 1), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 2), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 3), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 4), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hitmonchan[] = { + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 0), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 1), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 2), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 3), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 4), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lickitung[] = { + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 0), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 1), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 2), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 3), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 4), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Koffing[] = { + overworld_frame(gObjectEventPic_Koffing, 4, 4, 0), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 1), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 2), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 3), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 4), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Weezing[] = { + overworld_frame(gObjectEventPic_Weezing, 4, 4, 0), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 1), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 2), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 3), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 4), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 5), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 6), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rhyhorn[] = { + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 0), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 1), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 2), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 3), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 4), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rhydon[] = { + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 0), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 1), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 2), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 3), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 4), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Chansey[] = { + overworld_frame(gObjectEventPic_Chansey, 4, 4, 0), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 1), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 2), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 3), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 4), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Tangela[] = { + overworld_frame(gObjectEventPic_Tangela, 4, 4, 0), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 1), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 2), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 3), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 4), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kangaskhan[] = { + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 0), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 1), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 2), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 3), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 4), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Horsea[] = { + overworld_frame(gObjectEventPic_Horsea, 4, 4, 0), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 1), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 2), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 3), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 4), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Seadra[] = { + overworld_frame(gObjectEventPic_Seadra, 4, 4, 0), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 1), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 2), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 3), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 4), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Goldeen[] = { + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 0), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 1), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 2), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 3), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 4), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Seaking[] = { + overworld_frame(gObjectEventPic_Seaking, 4, 4, 0), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 1), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 2), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 3), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 4), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Staryu[] = { + overworld_frame(gObjectEventPic_Staryu, 4, 4, 0), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 1), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 2), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 3), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 4), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Starmie[] = { + overworld_frame(gObjectEventPic_Starmie, 4, 4, 0), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 1), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 2), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 3), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 4), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mr_Mime[] = { + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 0), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 1), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 2), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 3), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 4), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Scyther[] = { + overworld_frame(gObjectEventPic_Scyther, 4, 4, 0), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 1), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 2), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 3), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 4), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Jynx[] = { + overworld_frame(gObjectEventPic_Jynx, 4, 4, 0), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 1), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 2), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 3), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 4), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Electabuzz[] = { + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 0), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 1), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 2), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 3), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 4), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Magmar[] = { + overworld_frame(gObjectEventPic_Magmar, 4, 4, 0), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 1), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 2), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 3), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 4), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pinsir[] = { + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 0), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 1), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 2), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 3), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 4), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Tauros[] = { + overworld_frame(gObjectEventPic_Tauros, 4, 4, 0), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 1), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 2), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 3), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 4), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Magikarp[] = { + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 0), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 1), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 2), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 3), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 4), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gyarados[] = { + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 0), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 1), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 2), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 3), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 4), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lapras[] = { + overworld_frame(gObjectEventPic_Lapras, 4, 4, 0), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 1), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 2), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 3), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 4), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ditto[] = { + overworld_frame(gObjectEventPic_Ditto, 4, 4, 0), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 1), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 2), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 3), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 4), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Eevee[] = { + overworld_frame(gObjectEventPic_Eevee, 4, 4, 0), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 1), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 2), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 3), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 4), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Vaporeon[] = { + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 0), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 1), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 2), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 3), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 4), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Jolteon[] = { + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 0), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 1), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 2), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 3), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 4), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Flareon[] = { + overworld_frame(gObjectEventPic_Flareon, 4, 4, 0), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 1), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 2), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 3), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 4), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Porygon[] = { + overworld_frame(gObjectEventPic_Porygon, 4, 4, 0), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 1), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 2), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 3), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 4), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Omanyte[] = { + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 0), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 1), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 2), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 3), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 4), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Omastar[] = { + overworld_frame(gObjectEventPic_Omastar, 4, 4, 0), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 1), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 2), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 3), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 4), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kabuto[] = { + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 0), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 1), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 2), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 3), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 4), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kabutops[] = { + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 0), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 1), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 2), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 3), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 4), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Aerodactyl[] = { + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 0), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 1), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 2), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 3), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 4), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Snorlax[] = { + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 0), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 1), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 2), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 3), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 4), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Articuno[] = { + overworld_frame(gObjectEventPic_Articuno, 4, 4, 0), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 1), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 2), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 3), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 4), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Zapdos[] = { + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 0), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 1), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 2), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 3), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 4), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Moltres[] = { + overworld_frame(gObjectEventPic_Moltres, 4, 4, 0), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 1), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 2), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 3), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 4), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dratini[] = { + overworld_frame(gObjectEventPic_Dratini, 4, 4, 0), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 1), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 2), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 3), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 4), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dragonair[] = { + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 0), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 1), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 2), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 3), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 4), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dragonite[] = { + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 0), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 1), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 2), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 3), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 4), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mewtwo[] = { + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 0), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 1), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 2), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 3), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 4), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mew_Follower[] = { + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Chikorita[] = { + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 0), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 1), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 2), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 3), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 4), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bayleef[] = { + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 0), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 1), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 2), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 3), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 4), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Meganium[] = { + overworld_frame(gObjectEventPic_Meganium, 4, 4, 0), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 1), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 2), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 3), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 4), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cyndaquil[] = { + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 0), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 1), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 2), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 3), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 4), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Quilava[] = { + overworld_frame(gObjectEventPic_Quilava, 4, 4, 0), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 1), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 2), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 3), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 4), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Typhlosion[] = { + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 0), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 1), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 2), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 3), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 4), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Totodile[] = { + overworld_frame(gObjectEventPic_Totodile, 4, 4, 0), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 1), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 2), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 3), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 4), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Croconaw[] = { + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 0), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 1), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 2), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 3), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 4), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Feraligatr[] = { + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 0), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 1), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 2), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 3), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 4), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sentret[] = { + overworld_frame(gObjectEventPic_Sentret, 4, 4, 0), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 1), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 2), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 3), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 4), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Furret[] = { + overworld_frame(gObjectEventPic_Furret, 4, 4, 0), + overworld_frame(gObjectEventPic_Furret, 4, 4, 1), + overworld_frame(gObjectEventPic_Furret, 4, 4, 2), + overworld_frame(gObjectEventPic_Furret, 4, 4, 3), + overworld_frame(gObjectEventPic_Furret, 4, 4, 4), + overworld_frame(gObjectEventPic_Furret, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hoothoot[] = { + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 0), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 1), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 2), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 3), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 4), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Noctowl[] = { + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 0), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 1), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 2), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 3), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 4), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ledyba[] = { + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 0), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 1), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 2), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 3), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 4), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ledian[] = { + overworld_frame(gObjectEventPic_Ledian, 4, 4, 0), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 1), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 2), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 3), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 4), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Spinarak[] = { + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 0), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 1), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 2), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 3), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 4), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ariados[] = { + overworld_frame(gObjectEventPic_Ariados, 4, 4, 0), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 1), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 2), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 3), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 4), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Crobat[] = { + overworld_frame(gObjectEventPic_Crobat, 4, 4, 0), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 1), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 2), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 3), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 4), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Chinchou[] = { + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 0), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 1), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 2), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 3), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 4), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lanturn[] = { + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 0), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 1), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 2), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 3), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 4), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pichu[] = { + overworld_frame(gObjectEventPic_Pichu, 4, 4, 0), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 1), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 2), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 3), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 4), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cleffa[] = { + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 0), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 1), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 2), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 3), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 4), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Igglybuff[] = { + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 0), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 1), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 2), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 3), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 4), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Togepi[] = { + overworld_frame(gObjectEventPic_Togepi, 4, 4, 0), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 1), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 2), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 3), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 4), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Togetic[] = { + overworld_frame(gObjectEventPic_Togetic, 4, 4, 0), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 1), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 2), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 3), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 4), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Natu[] = { + overworld_frame(gObjectEventPic_Natu, 4, 4, 0), + overworld_frame(gObjectEventPic_Natu, 4, 4, 1), + overworld_frame(gObjectEventPic_Natu, 4, 4, 2), + overworld_frame(gObjectEventPic_Natu, 4, 4, 3), + overworld_frame(gObjectEventPic_Natu, 4, 4, 4), + overworld_frame(gObjectEventPic_Natu, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Xatu[] = { + overworld_frame(gObjectEventPic_Xatu, 4, 4, 0), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 1), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 2), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 3), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 4), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mareep[] = { + overworld_frame(gObjectEventPic_Mareep, 4, 4, 0), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 1), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 2), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 3), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 4), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Flaaffy[] = { + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 0), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 1), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 2), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 3), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 4), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ampharos[] = { + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 0), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 1), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 2), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 3), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 4), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bellossom[] = { + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 0), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 1), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 2), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 3), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 4), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Marill[] = { + overworld_frame(gObjectEventPic_Marill, 4, 4, 0), + overworld_frame(gObjectEventPic_Marill, 4, 4, 1), + overworld_frame(gObjectEventPic_Marill, 4, 4, 2), + overworld_frame(gObjectEventPic_Marill, 4, 4, 3), + overworld_frame(gObjectEventPic_Marill, 4, 4, 4), + overworld_frame(gObjectEventPic_Marill, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Azumarill[] = { + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sudowoodo[] = { + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Politoed[] = { + overworld_frame(gObjectEventPic_Politoed, 4, 4, 0), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 1), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 2), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 3), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 4), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hoppip[] = { + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 0), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 1), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 2), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 3), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 4), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Skiploom[] = { + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 0), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 1), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 2), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 3), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 4), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Jumpluff[] = { + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 0), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 1), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 2), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 3), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 4), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Aipom[] = { + overworld_frame(gObjectEventPic_Aipom, 4, 4, 0), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 1), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 2), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 3), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 4), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sunkern[] = { + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 0), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 1), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 2), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 3), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 4), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sunflora[] = { + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 0), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 1), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 2), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 3), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 4), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Yanma[] = { + overworld_frame(gObjectEventPic_Yanma, 4, 4, 0), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 1), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 2), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 3), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 4), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wooper[] = { + overworld_frame(gObjectEventPic_Wooper, 4, 4, 0), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 1), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 2), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 3), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 4), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Quagsire[] = { + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 0), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 1), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 2), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 3), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 4), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Espeon[] = { + overworld_frame(gObjectEventPic_Espeon, 4, 4, 0), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 1), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 2), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 3), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 4), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Umbreon[] = { + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 0), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 1), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 2), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 3), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 4), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Murkrow[] = { + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 0), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 1), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 2), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 3), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 4), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Slowking[] = { + overworld_frame(gObjectEventPic_Slowking, 4, 4, 0), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 1), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 2), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 3), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 4), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Misdreavus[] = { + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 0), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 1), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 2), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 3), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 4), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_A[] = { + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_B[] = { + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_C[] = { + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_D[] = { + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_E[] = { + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_F[] = { + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_G[] = { + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_H[] = { + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_I[] = { + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_J[] = { + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_K[] = { + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_L[] = { + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_M[] = { + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_N[] = { + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_O[] = { + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_P[] = { + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Q[] = { + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_R[] = { + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_S[] = { + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_T[] = { + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_U[] = { + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_V[] = { + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_W[] = { + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_X[] = { + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Y[] = { + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Z[] = { + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Exclamation[] = { + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Question[] = { + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wobbuffet[] = { + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 0), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 1), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 2), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 3), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 4), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Girafarig[] = { + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 0), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 1), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 2), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 3), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 4), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pineco[] = { + overworld_frame(gObjectEventPic_Pineco, 4, 4, 0), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 1), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 2), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 3), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 4), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Forretress[] = { + overworld_frame(gObjectEventPic_Forretress, 4, 4, 0), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 1), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 2), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 3), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 4), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dunsparce[] = { + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 0), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 1), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 2), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 3), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 4), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gligar[] = { + overworld_frame(gObjectEventPic_Gligar, 4, 4, 0), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 1), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 2), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 3), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 4), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Steelix[] = { + overworld_frame(gObjectEventPic_Steelix, 8, 8, 0), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 1), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 2), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 3), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 4), + overworld_frame(gObjectEventPic_Steelix, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Snubbull[] = { + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 0), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 1), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 2), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 3), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 4), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Granbull[] = { + overworld_frame(gObjectEventPic_Granbull, 4, 4, 0), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 1), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 2), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 3), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 4), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Qwilfish[] = { + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 0), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 1), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 2), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 3), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 4), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Scizor[] = { + overworld_frame(gObjectEventPic_Scizor, 4, 4, 0), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 1), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 2), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 3), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 4), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shuckle[] = { + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 0), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 1), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 2), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 3), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 4), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Heracross[] = { + overworld_frame(gObjectEventPic_Heracross, 4, 4, 0), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 1), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 2), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 3), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 4), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sneasel[] = { + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 0), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 1), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 2), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 3), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 4), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 5), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 6), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Teddiursa[] = { + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 0), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 1), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 2), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 3), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 4), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 5), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 6), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ursaring[] = { + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 0), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 1), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 2), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 3), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 4), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Slugma[] = { + overworld_frame(gObjectEventPic_Slugma, 4, 4, 0), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 1), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 2), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 3), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 4), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Magcargo[] = { + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 0), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 1), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 2), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 3), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 4), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 5), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 6), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Swinub[] = { + overworld_frame(gObjectEventPic_Swinub, 4, 4, 0), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 1), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 2), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 3), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 4), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Piloswine[] = { + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 0), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 1), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 2), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 3), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 4), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Corsola[] = { + overworld_frame(gObjectEventPic_Corsola, 4, 4, 0), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 1), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 2), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 3), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 4), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Remoraid[] = { + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 0), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 1), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 2), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 3), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 4), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Octillery[] = { + overworld_frame(gObjectEventPic_Octillery, 4, 4, 0), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 1), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 2), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 3), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 4), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Delibird[] = { + overworld_frame(gObjectEventPic_Delibird, 4, 4, 0), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 1), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 2), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 3), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 4), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mantine[] = { + overworld_frame(gObjectEventPic_Mantine, 4, 4, 0), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 1), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 2), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 3), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 4), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Skarmory[] = { + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 0), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 1), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 2), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 3), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 4), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Houndour[] = { + overworld_frame(gObjectEventPic_Houndour, 4, 4, 0), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 1), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 2), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 3), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 4), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Houndoom[] = { + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 0), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 1), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 2), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 3), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 4), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kingdra[] = { + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 0), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 1), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 2), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 3), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 4), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Phanpy[] = { + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 0), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 1), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 2), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 3), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 4), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Donphan[] = { + overworld_frame(gObjectEventPic_Donphan, 4, 4, 0), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 1), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 2), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 3), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 4), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Porygon2[] = { + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 0), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 1), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 2), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 3), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 4), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Stantler[] = { + overworld_frame(gObjectEventPic_Stantler, 4, 4, 0), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 1), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 2), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 3), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 4), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Smeargle[] = { + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 0), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 1), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 2), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 3), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 4), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Tyrogue[] = { + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 0), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 1), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 2), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 3), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 4), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hitmontop[] = { + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 0), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 1), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 2), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 3), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 4), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Smoochum[] = { + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 0), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 1), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 2), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 3), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 4), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Elekid[] = { + overworld_frame(gObjectEventPic_Elekid, 4, 4, 0), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 1), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 2), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 3), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 4), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Magby[] = { + overworld_frame(gObjectEventPic_Magby, 4, 4, 0), + overworld_frame(gObjectEventPic_Magby, 4, 4, 1), + overworld_frame(gObjectEventPic_Magby, 4, 4, 2), + overworld_frame(gObjectEventPic_Magby, 4, 4, 3), + overworld_frame(gObjectEventPic_Magby, 4, 4, 4), + overworld_frame(gObjectEventPic_Magby, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Miltank[] = { + overworld_frame(gObjectEventPic_Miltank, 4, 4, 0), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 1), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 2), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 3), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 4), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Blissey[] = { + overworld_frame(gObjectEventPic_Blissey, 4, 4, 0), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 1), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 2), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 3), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 4), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Raikou[] = { + overworld_frame(gObjectEventPic_Raikou, 4, 4, 0), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 1), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 2), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 3), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 4), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Entei[] = { + overworld_frame(gObjectEventPic_Entei, 4, 4, 0), + overworld_frame(gObjectEventPic_Entei, 4, 4, 1), + overworld_frame(gObjectEventPic_Entei, 4, 4, 2), + overworld_frame(gObjectEventPic_Entei, 4, 4, 3), + overworld_frame(gObjectEventPic_Entei, 4, 4, 4), + overworld_frame(gObjectEventPic_Entei, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Suicune[] = { + overworld_frame(gObjectEventPic_Suicune, 4, 4, 0), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 1), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 2), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 3), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 4), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Larvitar[] = { + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 0), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 1), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 2), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 3), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 4), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pupitar[] = { + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 0), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 1), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 2), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 3), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 4), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Tyranitar[] = { + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 0), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 1), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 2), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 3), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 4), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lugia_Follower[] = { + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 0), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 1), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 2), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 3), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 4), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_HoOh_Follower[] = { + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 0), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 1), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 2), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 3), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 4), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Celebi[] = { + overworld_frame(gObjectEventPic_Celebi, 4, 4, 0), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 1), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 2), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 3), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 4), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Treecko[] = { + overworld_frame(gObjectEventPic_Treecko, 4, 4, 0), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 1), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 2), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 3), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 4), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Grovyle[] = { + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 0), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 1), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 2), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 3), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 4), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sceptile[] = { + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 0), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 1), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 2), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 3), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 4), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Torchic[] = { + overworld_frame(gObjectEventPic_Torchic, 4, 4, 0), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 1), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 2), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 3), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 4), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Combusken[] = { + overworld_frame(gObjectEventPic_Combusken, 4, 4, 0), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 1), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 2), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 3), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 4), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Blaziken[] = { + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 0), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 1), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 2), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 3), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 4), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mudkip[] = { + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 0), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 1), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 2), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 3), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 4), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Marshtomp[] = { + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 0), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 1), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 2), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 3), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 4), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Swampert[] = { + overworld_frame(gObjectEventPic_Swampert, 4, 4, 0), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 1), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 2), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 3), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 4), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Poochyena_Follower[] = { + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mightyena[] = { + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 0), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 1), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 2), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 3), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 4), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Zigzagoon_Follower[] = { + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Linoone[] = { + overworld_frame(gObjectEventPic_Linoone, 4, 4, 0), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 1), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 2), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 3), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 4), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wurmple[] = { + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 0), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 1), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 2), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 3), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 4), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Silcoon[] = { + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 0), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 1), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 2), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 3), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 4), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Beautifly[] = { + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 0), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 1), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 2), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 3), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 4), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cascoon[] = { + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 0), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 1), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 2), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 3), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 4), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dustox[] = { + overworld_frame(gObjectEventPic_Dustox, 4, 4, 0), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 1), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 2), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 3), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 4), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lotad[] = { + overworld_frame(gObjectEventPic_Lotad, 4, 4, 0), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 1), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 2), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 3), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 4), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lombre[] = { + overworld_frame(gObjectEventPic_Lombre, 4, 4, 0), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 1), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 2), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 3), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 4), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ludicolo[] = { + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 0), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 1), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 2), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 3), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 4), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Seedot[] = { + overworld_frame(gObjectEventPic_Seedot, 4, 4, 0), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 1), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 2), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 3), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 4), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nuzleaf[] = { + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 0), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 1), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 2), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 3), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 4), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shiftry[] = { + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 0), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 1), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 2), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 3), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 4), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Taillow[] = { + overworld_frame(gObjectEventPic_Taillow, 4, 4, 0), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 1), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 2), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 3), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 4), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Swellow[] = { + overworld_frame(gObjectEventPic_Swellow, 4, 4, 0), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 1), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 2), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 3), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 4), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wingull_Follower[] = { + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pelipper[] = { + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 0), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 1), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 2), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 3), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 4), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ralts[] = { + overworld_frame(gObjectEventPic_Ralts, 4, 4, 0), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 1), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 2), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 3), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 4), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kirlia_Follower[] = { + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gardevoir[] = { + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 0), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 1), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 2), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 3), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 4), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Surskit[] = { + overworld_frame(gObjectEventPic_Surskit, 4, 4, 0), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 1), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 2), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 3), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 4), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Masquerain[] = { + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 0), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 1), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 2), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 3), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 4), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shroomish[] = { + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 0), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 1), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 2), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 3), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 4), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Breloom[] = { + overworld_frame(gObjectEventPic_Breloom, 4, 4, 0), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 1), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 2), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 3), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 4), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Slakoth[] = { + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 0), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 1), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 2), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 3), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 4), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Vigoroth_Follower[] = { + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Slaking[] = { + overworld_frame(gObjectEventPic_Slaking, 4, 4, 0), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 1), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 2), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 3), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 4), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nincada[] = { + overworld_frame(gObjectEventPic_Nincada, 4, 4, 0), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 1), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 2), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 3), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 4), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ninjask[] = { + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 0), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 1), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 2), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 3), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 4), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shedinja[] = { + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 0), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 1), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 2), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 3), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 4), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Whismur[] = { + overworld_frame(gObjectEventPic_Whismur, 4, 4, 0), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 1), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 2), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 3), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 4), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Loudred[] = { + overworld_frame(gObjectEventPic_Loudred, 4, 4, 0), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 1), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 2), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 3), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 4), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Exploud[] = { + overworld_frame(gObjectEventPic_Exploud, 4, 4, 0), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 1), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 2), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 3), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 4), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Makuhita[] = { + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 0), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 1), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 2), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 3), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 4), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hariyama[] = { + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 0), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 1), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 2), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 3), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 4), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Azurill_Follower[] = { + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Nosepass[] = { + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 0), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 1), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 2), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 3), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 4), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Skitty_Follower[] = { + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Delcatty[] = { + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 0), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 1), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 2), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 3), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 4), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sableye[] = { + overworld_frame(gObjectEventPic_Sableye, 4, 4, 0), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 1), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 2), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 3), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 4), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mawile[] = { + overworld_frame(gObjectEventPic_Mawile, 4, 4, 0), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 1), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 2), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 3), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 4), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Aron[] = { + overworld_frame(gObjectEventPic_Aron, 4, 4, 0), + overworld_frame(gObjectEventPic_Aron, 4, 4, 1), + overworld_frame(gObjectEventPic_Aron, 4, 4, 2), + overworld_frame(gObjectEventPic_Aron, 4, 4, 3), + overworld_frame(gObjectEventPic_Aron, 4, 4, 4), + overworld_frame(gObjectEventPic_Aron, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lairon[] = { + overworld_frame(gObjectEventPic_Lairon, 4, 4, 0), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 1), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 2), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 3), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 4), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Aggron[] = { + overworld_frame(gObjectEventPic_Aggron, 4, 4, 0), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 1), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 2), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 3), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 4), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Meditite[] = { + overworld_frame(gObjectEventPic_Meditite, 4, 4, 0), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 1), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 2), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 3), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 4), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Medicham[] = { + overworld_frame(gObjectEventPic_Medicham, 4, 4, 0), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 1), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 2), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 3), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 4), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Electrike[] = { + overworld_frame(gObjectEventPic_Electrike, 4, 4, 0), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 1), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 2), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 3), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 4), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Manectric[] = { + overworld_frame(gObjectEventPic_Manectric, 4, 4, 0), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 1), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 2), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 3), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 4), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Plusle[] = { + overworld_frame(gObjectEventPic_Plusle, 4, 4, 0), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 1), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 2), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 3), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 4), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Minun[] = { + overworld_frame(gObjectEventPic_Minun, 4, 4, 0), + overworld_frame(gObjectEventPic_Minun, 4, 4, 1), + overworld_frame(gObjectEventPic_Minun, 4, 4, 2), + overworld_frame(gObjectEventPic_Minun, 4, 4, 3), + overworld_frame(gObjectEventPic_Minun, 4, 4, 4), + overworld_frame(gObjectEventPic_Minun, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Volbeat[] = { + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 0), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 1), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 2), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 3), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 4), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Illumise[] = { + overworld_frame(gObjectEventPic_Illumise, 4, 4, 0), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 1), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 2), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 3), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 4), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Roselia[] = { + overworld_frame(gObjectEventPic_Roselia, 4, 4, 0), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 1), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 2), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 3), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 4), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 5), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 6), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gulpin[] = { + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 0), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 1), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 2), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 3), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 4), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Swalot[] = { + overworld_frame(gObjectEventPic_Swalot, 4, 4, 0), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 1), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 2), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 3), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 4), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Carvanha[] = { + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 0), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 1), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 2), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 3), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 4), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sharpedo[] = { + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 0), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 1), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 2), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 3), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 4), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wailmer[] = { + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 0), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 1), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 2), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 3), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 4), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wailord[] = { + overworld_frame(gObjectEventPic_Wailord, 8, 8, 0), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 1), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 2), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 3), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 4), + overworld_frame(gObjectEventPic_Wailord, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Numel[] = { + overworld_frame(gObjectEventPic_Numel, 4, 4, 0), + overworld_frame(gObjectEventPic_Numel, 4, 4, 1), + overworld_frame(gObjectEventPic_Numel, 4, 4, 2), + overworld_frame(gObjectEventPic_Numel, 4, 4, 3), + overworld_frame(gObjectEventPic_Numel, 4, 4, 4), + overworld_frame(gObjectEventPic_Numel, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Camerupt[] = { + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 0), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 1), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 2), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 3), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 4), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Torkoal[] = { + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 0), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 1), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 2), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 3), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 4), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Spoink[] = { + overworld_frame(gObjectEventPic_Spoink, 4, 4, 0), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 1), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 2), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 3), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 4), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Grumpig[] = { + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 0), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 1), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 2), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 3), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 4), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Spinda[] = { + overworld_frame(gObjectEventPic_Spinda, 4, 4, 0), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 1), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 2), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 3), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 4), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Trapinch[] = { + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 0), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 1), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 2), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 3), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 4), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Vibrava[] = { + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 0), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 1), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 2), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 3), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 4), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Flygon[] = { + overworld_frame(gObjectEventPic_Flygon, 4, 4, 0), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 1), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 2), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 3), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 4), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cacnea[] = { + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 0), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 1), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 2), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 3), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 4), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cacturne[] = { + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 0), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 1), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 2), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 3), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 4), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Swablu[] = { + overworld_frame(gObjectEventPic_Swablu, 4, 4, 0), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 1), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 2), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 3), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 4), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Altaria[] = { + overworld_frame(gObjectEventPic_Altaria, 4, 4, 0), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 1), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 2), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 3), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 4), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Zangoose[] = { + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 0), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 1), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 2), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 3), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 4), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Seviper[] = { + overworld_frame(gObjectEventPic_Seviper, 4, 4, 0), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 1), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 2), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 3), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 4), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lunatone[] = { + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 0), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 1), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 2), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 3), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 4), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Solrock[] = { + overworld_frame(gObjectEventPic_Solrock, 4, 4, 0), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 1), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 2), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 3), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 4), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Barboach[] = { + overworld_frame(gObjectEventPic_Barboach, 4, 4, 0), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 1), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 2), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 3), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 4), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Whiscash[] = { + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 0), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 1), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 2), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 3), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 4), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Corphish[] = { + overworld_frame(gObjectEventPic_Corphish, 4, 4, 0), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 1), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 2), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 3), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 4), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Crawdaunt[] = { + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 0), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 1), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 2), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 3), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 4), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Baltoy[] = { + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 0), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 1), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 2), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 3), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 4), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Claydol[] = { + overworld_frame(gObjectEventPic_Claydol, 4, 4, 0), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 1), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 2), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 3), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 4), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lileep[] = { + overworld_frame(gObjectEventPic_Lileep, 4, 4, 0), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 1), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 2), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 3), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 4), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cradily[] = { + overworld_frame(gObjectEventPic_Cradily, 4, 4, 0), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 1), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 2), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 3), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 4), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Anorith[] = { + overworld_frame(gObjectEventPic_Anorith, 4, 4, 0), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 1), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 2), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 3), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 4), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Armaldo[] = { + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 0), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 1), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 2), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 3), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 4), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Feebas[] = { + overworld_frame(gObjectEventPic_Feebas, 4, 4, 0), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 1), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 2), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 3), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 4), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Milotic[] = { + overworld_frame(gObjectEventPic_Milotic, 4, 4, 0), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 1), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 2), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 3), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 4), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Castform[] = { + overworld_frame(gObjectEventPic_Castform, 4, 4, 0), + overworld_frame(gObjectEventPic_Castform, 4, 4, 1), + overworld_frame(gObjectEventPic_Castform, 4, 4, 2), + overworld_frame(gObjectEventPic_Castform, 4, 4, 3), + overworld_frame(gObjectEventPic_Castform, 4, 4, 4), + overworld_frame(gObjectEventPic_Castform, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kecleon_Follower[] = { + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shuppet[] = { + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 0), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 1), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 2), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 3), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 4), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Banette[] = { + overworld_frame(gObjectEventPic_Banette, 4, 4, 0), + overworld_frame(gObjectEventPic_Banette, 4, 4, 1), + overworld_frame(gObjectEventPic_Banette, 4, 4, 2), + overworld_frame(gObjectEventPic_Banette, 4, 4, 3), + overworld_frame(gObjectEventPic_Banette, 4, 4, 4), + overworld_frame(gObjectEventPic_Banette, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Duskull[] = { + overworld_frame(gObjectEventPic_Duskull, 4, 4, 0), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 1), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 2), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 3), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 4), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dusclops_Follower[] = { + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Tropius[] = { + overworld_frame(gObjectEventPic_Tropius, 4, 4, 0), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 1), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 2), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 3), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 4), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Chimecho[] = { + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 0), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 1), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 2), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 3), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 4), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Absol[] = { + overworld_frame(gObjectEventPic_Absol, 4, 4, 0), + overworld_frame(gObjectEventPic_Absol, 4, 4, 1), + overworld_frame(gObjectEventPic_Absol, 4, 4, 2), + overworld_frame(gObjectEventPic_Absol, 4, 4, 3), + overworld_frame(gObjectEventPic_Absol, 4, 4, 4), + overworld_frame(gObjectEventPic_Absol, 4, 4, 5), + overworld_frame(gObjectEventPic_Absol, 4, 4, 6), + overworld_frame(gObjectEventPic_Absol, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wynaut[] = { + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 0), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 1), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 2), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 3), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 4), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Snorunt[] = { + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 0), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 1), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 2), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 3), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 4), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Glalie[] = { + overworld_frame(gObjectEventPic_Glalie, 4, 4, 0), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 1), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 2), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 3), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 4), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Spheal[] = { + overworld_frame(gObjectEventPic_Spheal, 4, 4, 0), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 1), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 2), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 3), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 4), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sealeo[] = { + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 0), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 1), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 2), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 3), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 4), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Walrein[] = { + overworld_frame(gObjectEventPic_Walrein, 4, 4, 0), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 1), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 2), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 3), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 4), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Clamperl[] = { + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 0), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 1), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 2), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 3), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 4), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Huntail[] = { + overworld_frame(gObjectEventPic_Huntail, 4, 4, 0), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 1), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 2), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 3), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 4), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gorebyss[] = { + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 0), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 1), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 2), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 3), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 4), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Relicanth[] = { + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 0), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 1), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 2), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 3), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 4), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Luvdisc[] = { + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 0), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 1), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 2), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 3), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 4), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bagon[] = { + overworld_frame(gObjectEventPic_Bagon, 4, 4, 0), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 1), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 2), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 3), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 4), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shelgon[] = { + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 0), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 1), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 2), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 3), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 4), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Salamence[] = { + overworld_frame(gObjectEventPic_Salamence, 4, 4, 0), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 1), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 2), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 3), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 4), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Beldum[] = { + overworld_frame(gObjectEventPic_Beldum, 4, 4, 0), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 1), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 2), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 3), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 4), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Metang[] = { + overworld_frame(gObjectEventPic_Metang, 4, 4, 0), + overworld_frame(gObjectEventPic_Metang, 4, 4, 1), + overworld_frame(gObjectEventPic_Metang, 4, 4, 2), + overworld_frame(gObjectEventPic_Metang, 4, 4, 3), + overworld_frame(gObjectEventPic_Metang, 4, 4, 4), + overworld_frame(gObjectEventPic_Metang, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Metagross[] = { + overworld_frame(gObjectEventPic_Metagross, 4, 4, 0), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 1), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 2), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 3), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 4), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Regirock[] = { + overworld_frame(gObjectEventPic_Regirock, 4, 4, 0), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 1), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 2), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 3), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 4), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Regice[] = { + overworld_frame(gObjectEventPic_Regice, 4, 4, 0), + overworld_frame(gObjectEventPic_Regice, 4, 4, 1), + overworld_frame(gObjectEventPic_Regice, 4, 4, 2), + overworld_frame(gObjectEventPic_Regice, 4, 4, 3), + overworld_frame(gObjectEventPic_Regice, 4, 4, 4), + overworld_frame(gObjectEventPic_Regice, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Registeel[] = { + overworld_frame(gObjectEventPic_Registeel, 4, 4, 0), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 1), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 2), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 3), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 4), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Latias[] = { + overworld_frame(gObjectEventPic_Latias, 4, 4, 0), + overworld_frame(gObjectEventPic_Latias, 4, 4, 1), + overworld_frame(gObjectEventPic_Latias, 4, 4, 2), + overworld_frame(gObjectEventPic_Latias, 4, 4, 3), + overworld_frame(gObjectEventPic_Latias, 4, 4, 4), + overworld_frame(gObjectEventPic_Latias, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Latios[] = { + overworld_frame(gObjectEventPic_Latios, 4, 4, 0), + overworld_frame(gObjectEventPic_Latios, 4, 4, 1), + overworld_frame(gObjectEventPic_Latios, 4, 4, 2), + overworld_frame(gObjectEventPic_Latios, 4, 4, 3), + overworld_frame(gObjectEventPic_Latios, 4, 4, 4), + overworld_frame(gObjectEventPic_Latios, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kyogre_Follower[] = { + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Groudon_Follower[] = { + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rayquaza_Follower[] = { + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Jirachi[] = { + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 0), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 1), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 2), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 3), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 4), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Deoxys_Normal[] = { + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Deoxys_Attack[] = { + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Deoxys_Defense[] = { + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Deoxys_Speed[] = { + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 5), +}; diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index 6b6ab12aa..d851dfbe1 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -20,8 +20,8 @@ .evYield_Speed = 2, \ .evYield_SpAttack = 2, \ .evYield_SpDefense = 2, \ - .itemCommon = ITEM_NONE, \ - .itemRare = ITEM_NONE, \ + .item1 = ITEM_NONE, \ + .item2 = ITEM_NONE, \ .genderRatio = MON_GENDERLESS, \ .eggCycles = 120, \ .friendship = 0, \ @@ -56,8 +56,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -88,8 +88,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -120,8 +120,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -152,8 +152,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -184,8 +184,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -216,8 +216,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -248,8 +248,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -280,8 +280,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -312,8 +312,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -344,8 +344,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -376,8 +376,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -408,8 +408,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SILVER_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -440,8 +440,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -472,8 +472,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -504,8 +504,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_POISON_BARB, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -536,8 +536,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -568,8 +568,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -600,8 +600,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -632,8 +632,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -664,8 +664,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -696,8 +696,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -728,8 +728,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SHARP_BEAK, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -760,8 +760,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -792,8 +792,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -824,8 +824,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_LIGHT_BALL, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_LIGHT_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -856,8 +856,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -888,8 +888,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_QUICK_CLAW, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -920,8 +920,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_QUICK_CLAW, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -952,8 +952,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -984,8 +984,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -1016,8 +1016,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -1048,8 +1048,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1080,8 +1080,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1112,8 +1112,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1144,8 +1144,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LEPPA_BERRY, - .itemRare = ITEM_MOON_STONE, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -1176,8 +1176,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LEPPA_BERRY, - .itemRare = ITEM_MOON_STONE, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -1208,8 +1208,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -1240,8 +1240,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -1272,8 +1272,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -1304,8 +1304,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -1336,8 +1336,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -1368,8 +1368,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -1400,8 +1400,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1432,8 +1432,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1464,8 +1464,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1496,8 +1496,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1528,8 +1528,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1560,8 +1560,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1592,8 +1592,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1624,8 +1624,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1656,8 +1656,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1688,8 +1688,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1720,8 +1720,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1752,8 +1752,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1784,8 +1784,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1816,8 +1816,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1848,8 +1848,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1880,8 +1880,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -1912,8 +1912,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -1944,8 +1944,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1976,8 +1976,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2008,8 +2008,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2040,8 +2040,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_TWISTED_SPOON, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2072,8 +2072,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_TWISTED_SPOON, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2104,8 +2104,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_TWISTED_SPOON, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2136,8 +2136,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2168,8 +2168,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2200,8 +2200,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2232,8 +2232,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2264,8 +2264,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2296,8 +2296,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2328,8 +2328,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2360,8 +2360,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2392,8 +2392,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_EVERSTONE, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2424,8 +2424,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_EVERSTONE, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2456,8 +2456,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_EVERSTONE, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2488,8 +2488,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2520,8 +2520,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2552,8 +2552,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2584,8 +2584,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2616,8 +2616,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -2648,8 +2648,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -2680,8 +2680,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_STICK, + .item1 = ITEM_NONE, + .item2 = ITEM_STICK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2712,8 +2712,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SHARP_BEAK, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2744,8 +2744,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SHARP_BEAK, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2776,8 +2776,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2808,8 +2808,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2840,8 +2840,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NUGGET, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2872,8 +2872,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NUGGET, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2904,8 +2904,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_PEARL, - .itemRare = ITEM_BIG_PEARL, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2936,8 +2936,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_PEARL, - .itemRare = ITEM_BIG_PEARL, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2968,8 +2968,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3000,8 +3000,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3032,8 +3032,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3064,8 +3064,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3096,8 +3096,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3128,8 +3128,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3160,8 +3160,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3192,8 +3192,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3224,8 +3224,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3256,8 +3256,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3288,8 +3288,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3320,8 +3320,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3352,8 +3352,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_THICK_CLUB, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3384,8 +3384,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_THICK_CLUB, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3416,8 +3416,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -3448,8 +3448,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -3480,8 +3480,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3512,8 +3512,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SMOKE_BALL, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3544,8 +3544,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SMOKE_BALL, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3576,8 +3576,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3608,8 +3608,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3640,8 +3640,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LUCKY_EGG, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, .genderRatio = MON_FEMALE, .eggCycles = 40, .friendship = 140, @@ -3672,8 +3672,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3704,8 +3704,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -3736,8 +3736,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3768,8 +3768,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3800,8 +3800,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3832,8 +3832,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3864,8 +3864,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_STARDUST, - .itemRare = ITEM_STAR_PIECE, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3896,8 +3896,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_STARDUST, - .itemRare = ITEM_STAR_PIECE, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3928,8 +3928,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LEPPA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3960,8 +3960,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3992,8 +3992,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_ASPEAR_BERRY, - .itemRare = ITEM_ASPEAR_BERRY, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, .genderRatio = MON_FEMALE, .eggCycles = 25, .friendship = 70, @@ -4024,8 +4024,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -4056,8 +4056,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -4088,8 +4088,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -4120,8 +4120,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -4152,8 +4152,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, .friendship = 70, @@ -4184,8 +4184,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, .friendship = 70, @@ -4216,8 +4216,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -4248,8 +4248,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_POWDER, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -4280,8 +4280,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4312,8 +4312,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4344,8 +4344,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4376,8 +4376,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4408,8 +4408,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -4440,8 +4440,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4472,8 +4472,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4504,8 +4504,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4536,8 +4536,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4568,8 +4568,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4600,8 +4600,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LEFTOVERS, - .itemRare = ITEM_LEFTOVERS, + .item1 = ITEM_LEFTOVERS, + .item2 = ITEM_LEFTOVERS, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, .friendship = 70, @@ -4632,8 +4632,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4664,8 +4664,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4696,8 +4696,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4728,8 +4728,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4760,8 +4760,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4792,8 +4792,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4824,8 +4824,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -4856,8 +4856,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LUM_BERRY, - .itemRare = ITEM_LUM_BERRY, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -4888,8 +4888,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4920,8 +4920,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4952,8 +4952,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4984,8 +4984,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5016,8 +5016,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5048,8 +5048,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5080,8 +5080,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5112,8 +5112,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5144,8 +5144,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5176,8 +5176,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5208,8 +5208,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_SITRUS_BERRY, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5240,8 +5240,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5272,8 +5272,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5304,8 +5304,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5336,8 +5336,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5368,8 +5368,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5400,8 +5400,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5432,8 +5432,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5464,8 +5464,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_YELLOW_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5496,8 +5496,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_YELLOW_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5528,8 +5528,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5560,8 +5560,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_LEPPA_BERRY, - .itemRare = ITEM_MOON_STONE, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -5592,8 +5592,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -5624,8 +5624,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, .friendship = 70, @@ -5656,8 +5656,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, .friendship = 70, @@ -5688,8 +5688,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5720,8 +5720,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5752,8 +5752,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5784,8 +5784,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5816,8 +5816,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5848,8 +5848,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5880,8 +5880,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5912,8 +5912,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5944,8 +5944,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5976,8 +5976,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6008,8 +6008,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6040,8 +6040,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6072,8 +6072,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6104,8 +6104,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6136,8 +6136,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6168,8 +6168,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6200,8 +6200,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6232,8 +6232,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6264,8 +6264,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6296,8 +6296,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -6328,8 +6328,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 35, @@ -6360,8 +6360,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -6392,8 +6392,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6424,8 +6424,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -6456,8 +6456,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 70, @@ -6488,8 +6488,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6520,8 +6520,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_PERSIM_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6552,8 +6552,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6584,8 +6584,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6616,8 +6616,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6648,8 +6648,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6680,8 +6680,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6712,8 +6712,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -6744,8 +6744,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -6776,8 +6776,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6808,8 +6808,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6840,8 +6840,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6872,8 +6872,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6904,8 +6904,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_QUICK_CLAW, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -6936,8 +6936,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6968,8 +6968,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7000,8 +7000,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7032,8 +7032,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7064,8 +7064,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7096,8 +7096,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7128,8 +7128,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_RED_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_RED_SHARD, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -7160,8 +7160,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7192,8 +7192,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7224,8 +7224,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7256,8 +7256,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -7288,8 +7288,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -7320,8 +7320,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -7352,8 +7352,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -7384,8 +7384,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7416,8 +7416,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7448,8 +7448,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7480,8 +7480,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -7512,8 +7512,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7544,8 +7544,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7576,8 +7576,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -7608,8 +7608,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -7640,8 +7640,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_ASPEAR_BERRY, - .itemRare = ITEM_ASPEAR_BERRY, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, .genderRatio = MON_FEMALE, .eggCycles = 25, .friendship = 70, @@ -7672,8 +7672,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -7704,8 +7704,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -7736,8 +7736,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_MOOMOO_MILK, - .itemRare = ITEM_MOOMOO_MILK, + .item1 = ITEM_MOOMOO_MILK, + .item2 = ITEM_MOOMOO_MILK, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -7768,8 +7768,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LUCKY_EGG, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, .genderRatio = MON_FEMALE, .eggCycles = 40, .friendship = 140, @@ -7800,8 +7800,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7832,8 +7832,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7864,8 +7864,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7896,8 +7896,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7928,8 +7928,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7960,8 +7960,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7992,8 +7992,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -8024,8 +8024,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_SACRED_ASH, - .itemRare = ITEM_SACRED_ASH, + .item1 = ITEM_SACRED_ASH, + .item2 = ITEM_SACRED_ASH, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -8056,8 +8056,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LUM_BERRY, - .itemRare = ITEM_LUM_BERRY, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -8138,8 +8138,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8170,8 +8170,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8202,8 +8202,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8234,8 +8234,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8266,8 +8266,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8298,8 +8298,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8330,8 +8330,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8362,8 +8362,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8394,8 +8394,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8426,8 +8426,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_PECHA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8458,8 +8458,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_PECHA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8490,8 +8490,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8522,8 +8522,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_SITRUS_BERRY, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8554,8 +8554,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8586,8 +8586,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8618,8 +8618,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SILVER_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8650,8 +8650,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8682,8 +8682,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SILVER_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8714,8 +8714,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8746,8 +8746,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8778,8 +8778,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8810,8 +8810,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8842,8 +8842,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8874,8 +8874,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8906,8 +8906,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8938,8 +8938,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8970,8 +8970,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 15, .friendship = 70, @@ -9002,8 +9002,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9034,8 +9034,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9066,8 +9066,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9098,8 +9098,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9130,8 +9130,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_CHESTO_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9162,8 +9162,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9194,8 +9194,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9226,8 +9226,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9258,8 +9258,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SILVER_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9290,8 +9290,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -9322,8 +9322,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -9354,8 +9354,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LEPPA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, .friendship = 70, @@ -9386,8 +9386,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LEPPA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, .friendship = 70, @@ -9418,8 +9418,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_PERSIM_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9450,8 +9450,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -9482,8 +9482,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -9514,8 +9514,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9546,8 +9546,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9578,8 +9578,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -9610,8 +9610,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9642,8 +9642,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9674,8 +9674,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_HEART_SCALE, - .itemRare = ITEM_NONE, + .item1 = ITEM_HEART_SCALE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -9706,8 +9706,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9738,8 +9738,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9770,8 +9770,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9802,8 +9802,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9834,8 +9834,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -9866,8 +9866,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -9898,8 +9898,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SOFT_SAND, + .item1 = ITEM_NONE, + .item2 = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9930,8 +9930,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9962,8 +9962,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9994,8 +9994,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -10026,8 +10026,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -10058,8 +10058,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10090,8 +10090,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10122,8 +10122,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10154,8 +10154,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10186,8 +10186,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10218,8 +10218,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10250,8 +10250,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10282,8 +10282,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_POISON_BARB, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -10314,8 +10314,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_POISON_BARB, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -10346,8 +10346,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10378,8 +10378,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NEVER_MELT_ICE, + .item1 = ITEM_NONE, + .item2 = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10410,8 +10410,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_MOON_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_MOON_STONE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, .friendship = 70, @@ -10442,8 +10442,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SUN_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_SUN_STONE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, .friendship = 70, @@ -10474,8 +10474,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -10506,8 +10506,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10538,8 +10538,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10570,8 +10570,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10602,8 +10602,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10634,8 +10634,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10666,8 +10666,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10698,8 +10698,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10730,8 +10730,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10762,8 +10762,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10794,8 +10794,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10826,8 +10826,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -10858,8 +10858,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -10890,8 +10890,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_POISON_BARB, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10922,8 +10922,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -10954,8 +10954,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -10986,8 +10986,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -11018,8 +11018,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_BIG_PEARL, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11050,8 +11050,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_BIG_PEARL, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11082,8 +11082,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -11114,8 +11114,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_CHESTO_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11146,8 +11146,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_CHESTO_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11178,8 +11178,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_CHESTO_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11210,8 +11210,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_BLUE_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_BLUE_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11242,8 +11242,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11274,8 +11274,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11306,8 +11306,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11338,8 +11338,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11370,8 +11370,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11402,8 +11402,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11434,8 +11434,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11466,8 +11466,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_GREEN_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_GREEN_SHARD, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, .friendship = 70, @@ -11498,8 +11498,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_HARD_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11530,8 +11530,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_HARD_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11562,8 +11562,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_HARD_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11594,8 +11594,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_MYSTIC_WATER, - .itemRare = ITEM_MYSTIC_WATER, + .item1 = ITEM_MYSTIC_WATER, + .item2 = ITEM_MYSTIC_WATER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -11626,8 +11626,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 15, .friendship = 70, @@ -11658,8 +11658,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 15, .friendship = 70, @@ -11690,8 +11690,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11722,8 +11722,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11754,8 +11754,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11786,8 +11786,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11818,8 +11818,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11850,8 +11850,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11882,8 +11882,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11914,8 +11914,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -11946,8 +11946,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -11978,8 +11978,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -12010,8 +12010,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12042,8 +12042,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12074,8 +12074,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12106,8 +12106,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12138,8 +12138,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12170,8 +12170,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12202,8 +12202,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12234,8 +12234,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12266,8 +12266,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12298,8 +12298,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 120, .friendship = 90, @@ -12330,8 +12330,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 120, .friendship = 90, @@ -12362,8 +12362,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_STAR_PIECE, - .itemRare = ITEM_STAR_PIECE, + .item1 = ITEM_STAR_PIECE, + .item2 = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -12394,8 +12394,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12426,8 +12426,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, diff --git a/src/data/trade.h b/src/data/trade.h index 80d17a49b..b26072763 100644 --- a/src/data/trade.h +++ b/src/data/trade.h @@ -174,10 +174,10 @@ static const struct SpriteTemplate sSpriteTemplate_MenuText = .callback = SpriteCallbackDummy, }; -static const u16 sTradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbapal"); -static const struct SpritePalette sSpritePalette_TradeScreenText = +static const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbapal"); +static const struct SpritePalette gSpritePalette_TradeScreenText = { - .data = sTradeScreenTextPalette, + .data = TradeScreenTextPalette, .tag = PALTAG_MENU_TEXT }; diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h index ed12e0cb4..821039cb3 100644 --- a/src/data/trainer_graphics/back_pic_anims.h +++ b/src/data/trainer_graphics/back_pic_anims.h @@ -1,4 +1,4 @@ -static const union AnimCmd sAnimCmd_Brendan_1[] = +static const union AnimCmd gAnimCmd_Brendan_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -8,7 +8,7 @@ static const union AnimCmd sAnimCmd_Brendan_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_May_Steven_1[] = +static const union AnimCmd gAnimCmd_May_Steven_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -18,7 +18,7 @@ static const union AnimCmd sAnimCmd_May_Steven_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_Wally_1[] = +static const union AnimCmd gAnimCmd_Wally_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -28,7 +28,7 @@ static const union AnimCmd sAnimCmd_Wally_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_Red_1[] = +static const union AnimCmd gAnimCmd_Red_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(2, 6), @@ -38,7 +38,7 @@ static const union AnimCmd sAnimCmd_Red_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_Leaf_1[] = +static const union AnimCmd gAnimCmd_Leaf_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(2, 6), @@ -48,7 +48,7 @@ static const union AnimCmd sAnimCmd_Leaf_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_RubySapphireBrendan_1[] = +static const union AnimCmd gAnimCmd_RubySapphireBrendan_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -58,7 +58,7 @@ static const union AnimCmd sAnimCmd_RubySapphireBrendan_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_RubySapphireMay_1[] = +static const union AnimCmd gAnimCmd_RubySapphireMay_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -71,49 +71,49 @@ static const union AnimCmd sAnimCmd_RubySapphireMay_1[] = static const union AnimCmd *const sBackAnims_Brendan[] = { sAnim_GeneralFrame3, - sAnimCmd_Brendan_1, + gAnimCmd_Brendan_1, }; static const union AnimCmd *const sBackAnims_May[] = { sAnim_GeneralFrame3, - sAnimCmd_May_Steven_1, + gAnimCmd_May_Steven_1, }; static const union AnimCmd *const sBackAnims_Red[] = { sAnim_GeneralFrame0, - sAnimCmd_Red_1, + gAnimCmd_Red_1, }; static const union AnimCmd *const sBackAnims_Leaf[] = { sAnim_GeneralFrame0, - sAnimCmd_Leaf_1, + gAnimCmd_Leaf_1, }; static const union AnimCmd *const sBackAnims_RubySapphireBrendan[] = { sAnim_GeneralFrame3, - sAnimCmd_RubySapphireBrendan_1, + gAnimCmd_RubySapphireBrendan_1, }; static const union AnimCmd *const sBackAnims_RubySapphireMay[] = { sAnim_GeneralFrame3, - sAnimCmd_RubySapphireMay_1, + gAnimCmd_RubySapphireMay_1, }; static const union AnimCmd *const sBackAnims_Wally[] = { sAnim_GeneralFrame3, - sAnimCmd_Wally_1, + gAnimCmd_Wally_1, }; static const union AnimCmd *const sBackAnims_Steven[] = { sAnim_GeneralFrame3, - sAnimCmd_May_Steven_1, + gAnimCmd_May_Steven_1, }; const union AnimCmd *const *const gTrainerBackAnimsPtrTable[] = diff --git a/src/decompress.c b/src/decompress.c index 92c840a63..b74d4e814 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -51,13 +51,13 @@ void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src) LoadSpritePalette(&dest); } -void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer) +void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer) { struct SpritePalette dest; - LZ77UnCompWram(src->data, buffer); + LZ77UnCompWram(a->data, buffer); dest.data = buffer; - dest.tag = src->tag; + dest.tag = a->tag; LoadSpritePalette(&dest); } diff --git a/src/decoration.c b/src/decoration.c index 547b05acf..7e102251a 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -826,7 +826,7 @@ static void ReturnToActionsMenuFromCategories(u8 taskId) { RemoveDecorationWindow(WINDOW_DECORATION_CATEGORIES); AddDecorationActionsWindow(); - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); PrintCurMainMenuDescription(); gTasks[taskId].func = HandleDecorationActionsMenuInput; } @@ -2664,7 +2664,7 @@ static void FieldCB_StopPuttingAwayDecorations(void) u8 taskId; FadeInFromBlack(); - DrawDialogueFrame(0, TRUE); + DrawDialogueFrame(0, 1); InitDecorationActionsWindow(); taskId = CreateTask(Task_ReinitializeDecorationMenuHandler, 8); gTasks[taskId].tState = 0; diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index b87fe3092..691ca6b2a 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -2879,10 +2879,10 @@ static u8 TryGivePrize(void) return PRIZE_RECEIVED; } -static u32 IncrementWithLimit(u32 num, u32 max) +static u32 IncrementWithLimit(u32 a, u32 max) { - if (num < max) - return num + 1; + if (a < max) + return a + 1; else return max; } @@ -4546,7 +4546,7 @@ struct { u8 id; void (*func)(void); -} static const sGfxFuncs[] = +} const sGfxFuncs[] = { {GFXFUNC_LOAD, LoadGfx}, // Element not used, LoadGfx is passed directly to SetGfxFunc {GFXFUNC_SHOW_NAMES, ShowNames}, diff --git a/src/easy_chat.c b/src/easy_chat.c index 2bbd16cb2..734fd4f18 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -1492,7 +1492,7 @@ void ShowEasyChatScreen(void) displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE; break; case EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW: - words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainerTower.words; + words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18; displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE; break; case EASY_CHAT_TYPE_GOOD_SAYING: @@ -1672,7 +1672,8 @@ static bool8 InitEasyChatScreenStruct(u8 type, u16 *words, u8 displayedPersonTyp static void FreeEasyChatScreenStruct(void) { - TRY_FREE_AND_SET_NULL(sEasyChatScreen); + if (sEasyChatScreen != NULL) + FREE_AND_SET_NULL(sEasyChatScreen); } // Returns the function ID of the action to take as a result of player's input. @@ -3074,7 +3075,8 @@ static bool8 LoadEasyChatScreen(void) static void FreeEasyChatScreenControl(void) { - TRY_FREE_AND_SET_NULL(sScreenControl); + if (sScreenControl) + FREE_AND_SET_NULL(sScreenControl); } static void StartEasyChatFunction(u16 funcId) @@ -5571,7 +5573,8 @@ static bool8 InitEasyChatScreenWordData(void) static void FreeEasyChatScreenWordData(void) { - TRY_FREE_AND_SET_NULL(sWordData); + if (sWordData) + FREE_AND_SET_NULL(sWordData); } static void SetUnlockedEasyChatGroups(void) diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c index cf3ca16c3..c3f17f234 100755 --- a/src/ereader_helpers.c +++ b/src/ereader_helpers.c @@ -15,8 +15,6 @@ #include "constants/items.h" #include "constants/trainer_hill.h" -STATIC_ASSERT(sizeof(struct TrainerHillChallenge) <= SECTOR_DATA_SIZE, TrainerHillChallengeFreeSpace); - struct SendRecvMgr { bool8 isParent; @@ -59,20 +57,22 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_TO_HER, EC_WORD_WIN, EC_WORD_JOKING, EC_WORD_HIGHS, EC_WORD_SCARY, EC_WORD_ELLIPSIS_EXCL }, .speechAfter = { EC_WORD_IGNORANT, EC_WORD_SO, EC_WORD_TODAY, EC_WORD_NIGHTTIME, EC_WORD_YOU_RE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_SWALOT, .heldItem = ITEM_SHELL_BELL, .moves = { MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT, MOVE_YAWN }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 55, .attackEV = 255, .defenseEV = 100, .speedEV = 0, .spAttackEV = 0, .spDefenseEV = 100, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -82,19 +82,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x80, .nickname = __("マルノーム$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_DUSTOX, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_SILVER_WIND, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_GIGA_DRAIN }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -104,19 +106,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x6, .nickname = __("ドクケイル$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_RELICANTH, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_ANCIENT_POWER, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 155, .spDefenseEV = 255, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -126,7 +130,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x2f, .nickname = __("ジーランス$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, @@ -139,20 +143,22 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_MOVE2(MINIMIZE), EC_WORD_AS_MUCH_AS, EC_EMPTY_WORD, EC_WORD_THEY_RE, EC_WORD_SAD, EC_WORD_EXCL }, .speechAfter = { EC_MOVE(BITE), EC_WORD_AS_MUCH_AS, EC_EMPTY_WORD, EC_WORD_THEY_RE, EC_WORD_ANGRY, EC_WORD_EXCL }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_CACTURNE, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_THUNDER_PUNCH, MOVE_GROWTH }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 55, .attackEV = 0, .defenseEV = 100, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 100, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -162,19 +168,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x8c, .nickname = __("ノクタス$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_SWELLOW, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 255, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 0, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -184,19 +192,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("オオスãƒ�メ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_WHISCASH, .heldItem = ITEM_CHESTO_BERRY, .moves = { MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA, MOVE_REST }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -206,7 +216,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("ナマズン$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, @@ -219,20 +229,22 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_THAT, EC_WORD_ABOVE, EC_WORD_LOST, EC_WORD_STORES, EC_WORD_JOKING, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .speechAfter = { EC_WORD_ENTERTAINING, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_ALMOST, EC_WORD_EXCL, EC_EMPTY_WORD }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_DELCATTY, .heldItem = ITEM_LUM_BERRY, .moves = { MOVE_SING, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_IRON_TAIL }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 255, .spAttackEV = 0, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -242,19 +254,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x3, .nickname = __("エãƒ�コロロ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_ROSELIA, .heldItem = ITEM_LEFTOVERS, .moves = { MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_TOXIC, MOVE_LEECH_SEED }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -264,19 +278,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x6, .nickname = __("ロゼリア$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_BEAUTIFLY, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_PSYCHIC }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 200, .defenseEV = 0, .speedEV = 0, .spAttackEV = 200, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -286,7 +302,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x6, .nickname = __("アゲãƒ�ント$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, @@ -299,20 +315,22 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_OUTSIDE, EC_WORD_UNCLE, EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_HEY_QUES, EC_WORD_ELLIPSIS_EXCL }, .speechAfter = { EC_WORD_HE_S, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_CHILDREN, EC_WORD_CAN_T, EC_WORD_EXCL_EXCL }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_MAWILE, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_CRUNCH, MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_COMET_PUNCH }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 0, .attackEV = 0, .defenseEV = 100, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 155, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -322,19 +340,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x0, .nickname = __("クãƒ�ート$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_SHARPEDO, .heldItem = ITEM_SCOPE_LENS, .moves = { MOVE_SURF, MOVE_CRUNCH, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -344,19 +364,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("サメãƒ�ダー$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_LUM_BERRY, .moves = { MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -366,7 +388,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ジュペッタ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, @@ -425,40 +447,40 @@ static bool32 ValidateTrainerHillChecksum(struct EReaderTrainerHillSet *hillSet) return TRUE; } -static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrainerHillChallenge * challenge) +static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrHillTag * hillTag) { int i; AGB_ASSERT_EX(hillSet->dummy == 0, "cereader_tool.c", 450); AGB_ASSERT_EX(hillSet->id == 0, "cereader_tool.c", 452); - memset(challenge, 0, SECTOR_SIZE); - challenge->numTrainers = hillSet->numTrainers; - challenge->unused1 = GetTrainerHillUnkVal(); - challenge->numFloors = (hillSet->numTrainers + 1) / HILL_TRAINERS_PER_FLOOR; + memset(hillTag, 0, SECTOR_SIZE); + hillTag->numTrainers = hillSet->numTrainers; + hillTag->unused1 = GetTrainerHillUnkVal(); + hillTag->numFloors = (hillSet->numTrainers + 1) / TRAINER_HILL_TRAINERS_PER_FLOOR; for (i = 0; i < hillSet->numTrainers; i++) { if (!(i & 1)) { - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainerNum1 = hillSet->trainers[i].trainerNum; - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].map = hillSet->trainers[i].map; - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[0] = hillSet->trainers[i].trainer; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum1 = hillSet->trainers[i].trainerNum; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].display = hillSet->trainers[i].display; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[0] = hillSet->trainers[i].trainer; } else { - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainerNum2 = hillSet->trainers[i].trainerNum; - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[1] = hillSet->trainers[i].trainer; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum2 = hillSet->trainers[i].trainerNum; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = hillSet->trainers[i].trainer; } } if (i & 1) { - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[1] = sTrainerHillTrainerTemplates_JP[i / HILL_TRAINERS_PER_FLOOR]; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = sTrainerHillTrainerTemplates_JP[i / TRAINER_HILL_TRAINERS_PER_FLOOR]; } - challenge->checksum = CalcByteArraySum((u8 *)challenge->floors, NUM_TRAINER_HILL_FLOORS * sizeof(struct TrainerHillFloor)); - if (TryWriteSpecialSaveSector(SECTOR_ID_TRAINER_HILL, (u8 *)challenge) != SAVE_STATUS_OK) + hillTag->checksum = CalcByteArraySum((u8 *)hillTag->floors, NUM_TRAINER_HILL_FLOORS * sizeof(struct TrHillFloor)); + if (TryWriteSpecialSaveSector(SECTOR_ID_TRAINER_HILL, (u8 *)hillTag) != SAVE_STATUS_OK) return FALSE; return TRUE; diff --git a/src/event_data.c b/src/event_data.c index 22ebdb0d1..1defd2ccb 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -30,7 +30,7 @@ EWRAM_DATA u16 gSpecialVar_Facing = 0; EWRAM_DATA u16 gSpecialVar_MonBoxId = 0; EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0; EWRAM_DATA u16 gSpecialVar_Unused_0x8014 = 0; -EWRAM_DATA static u8 sSpecialFlags[SPECIAL_FLAGS_SIZE] = {0}; +EWRAM_DATA static u8 gSpecialFlags[SPECIAL_FLAGS_SIZE] = {0}; extern u16 *const gSpecialVars[]; @@ -38,7 +38,7 @@ void InitEventData(void) { memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags)); memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars)); - memset(sSpecialFlags, 0, sizeof(sSpecialFlags)); + memset(gSpecialFlags, 0, sizeof(gSpecialFlags)); } void ClearTempFieldEventData(void) @@ -193,7 +193,7 @@ bool8 VarSet(u16 id, u16 value) return TRUE; } -u8 VarGetObjectEventGraphicsId(u8 id) +u16 VarGetObjectEventGraphicsId(u8 id) { return VarGet(VAR_OBJ_GFX_ID_0 + id); } @@ -205,7 +205,7 @@ u8 *GetFlagPointer(u16 id) else if (id < SPECIAL_FLAGS_START) return &gSaveBlock1Ptr->flags[id / 8]; else - return &sSpecialFlags[(id - SPECIAL_FLAGS_START) / 8]; + return &gSpecialFlags[(id - SPECIAL_FLAGS_START) / 8]; } u8 FlagSet(u16 id) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6b2742c92..b06a51ac6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -25,6 +25,7 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "util.h" +#include "follow_me.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" #include "constants/field_effects.h" @@ -32,6 +33,7 @@ #include "constants/mauville_old_man.h" #include "constants/trainer_types.h" #include "constants/union_room.h" +#include "constants/metatile_behaviors.h" // this file was known as evobjmv.c in Game Freak's original source @@ -80,6 +82,8 @@ static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprit static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0}; +extern void PlaySE(u16); +extern void PlaySE12WithPanning(u16, s8); static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *); static void SetMovementDelay(struct Sprite *, s16); @@ -115,6 +119,9 @@ static void InitObjectPriorityByElevation(struct Sprite *, u8); static void ObjectEventUpdateSubpriority(struct ObjectEvent*, struct Sprite*); static void DoTracksGroundEffect_None(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_Footprints(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsBug(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsSpot(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoRippleFieldEffect(struct ObjectEvent*, struct Sprite*); static void DoGroundEffects_OnSpawn(struct ObjectEvent*, struct Sprite*); @@ -139,7 +146,7 @@ static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *); -static u8 FindObjectEventPaletteIndexByTag(u16); +static u16 FindObjectEventPaletteIndexByTag(u16); static void _PatchObjectPalette(u16, u8); static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); @@ -163,7 +170,7 @@ static void CreateLevitateMovementTask(struct ObjectEvent *); static void DestroyLevitateMovementTask(u8); static bool8 NpcTakeStep(struct Sprite *); static bool8 IsElevationMismatchAt(u8, s16, s16); -static bool8 AreElevationsCompatible(u8, u8); +static bool8 AreElevationsCompatible(u8 a, u8 b); static const struct SpriteFrameImage sPicTable_PechaBerryTree[]; @@ -269,6 +276,7 @@ static void (*const sMovementTypeCallbacks[])(struct Sprite *) = [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = MovementType_WalkSlowlyInPlace, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = MovementType_WalkSlowlyInPlace, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = MovementType_WalkSlowlyInPlace, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = MovementType_FollowingPokemon, }; static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { @@ -313,6 +321,7 @@ static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { [MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = TRUE, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = FALSE, }; const u8 gInitialMovementTypeFacingDirections[] = { @@ -397,6 +406,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_NORTH, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_WEST, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = DIR_SOUTH, }; #define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 @@ -1731,7 +1741,9 @@ u8 GetFirstInactiveObjectEventId(void) u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) { - if (localId < OBJ_EVENT_ID_PLAYER) + if (localId == OBJ_EVENT_ID_FOLLOWER) + return GetFollowerObjectId(); + else if (localId < OBJ_EVENT_ID_PLAYER) return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); return GetObjectEventIdByLocalId(localId); @@ -1878,7 +1890,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * return FALSE; } -static void RemoveObjectEvent(struct ObjectEvent *objectEvent) +void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); @@ -1896,10 +1908,13 @@ void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) static void RemoveObjectEventInternal(struct ObjectEvent *objectEvent) { + u8 paletteNum; struct SpriteFrameImage image; image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size; gSprites[objectEvent->spriteId].images = ℑ + paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum; DestroySprite(&gSprites[objectEvent->spriteId]); + FieldEffectFreePaletteIfUnused(paletteNum); } void RemoveAllObjectEventsExceptPlayer(void) @@ -1937,7 +1952,6 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; - *(u16 *)&spriteTemplate->paletteTag = TAG_NONE; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1964,7 +1978,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; struct SpriteTemplate spriteTemplate; @@ -1996,7 +2010,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } -u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z) { struct ObjectEventTemplate objectEventTemplate; @@ -2007,7 +2021,7 @@ u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 objectEventTemplate.inConnection = 0; objectEventTemplate.x = x; objectEventTemplate.y = y; - objectEventTemplate.elevation = elevation; + objectEventTemplate.elevation = z; objectEventTemplate.movementType = movementBehavior; objectEventTemplate.movementRangeX = 0; objectEventTemplate.movementRangeY = 0; @@ -2086,7 +2100,7 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), // A unique id is given as an argument and stored in the sprite data to allow referring back to the same virtual object. // They can be turned (and, in the case of the Union Room, animated teleporting in and out) but do not have movement types // or any of the other data normally associated with object events. -u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 direction) { u8 spriteId; struct Sprite *sprite; @@ -2114,14 +2128,14 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevati sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag); sprite->coordOffsetEnabled = TRUE; sprite->sVirtualObjId = virtualObjId; - sprite->sVirtualObjElev = elevation; + sprite->sVirtualObjElev = z; if (subspriteTables != NULL) { SetSubspriteTables(sprite, subspriteTables); sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; } - InitObjectPriorityByElevation(sprite, elevation); - SetObjectSubpriorityByElevation(elevation, sprite, 1); + InitObjectPriorityByElevation(sprite, z); + SetObjectSubpriorityByElevation(z, sprite, 1); StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction)); } return spriteId; @@ -2175,7 +2189,7 @@ void RemoveObjectEventsOutsideView(void) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; - if (objectEvent->active && !objectEvent->isPlayer) + if (objectEvent->active && !objectEvent->isPlayer && i != GetFollowerObjectId()) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -2213,7 +2227,6 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) { u8 i; - u8 paletteSlot; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -2238,16 +2251,6 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) LoadObjectEventPalette(spriteTemplate.paletteTag); UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT); } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) @@ -2300,7 +2303,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE); } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) { const struct ObjectEventGraphicsInfo *graphicsInfo; struct Sprite *sprite; @@ -2330,7 +2333,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) CameraObjectReset1(); } -void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) { u8 objectEventId; @@ -2387,7 +2390,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) { u8 bard; @@ -2514,7 +2517,7 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) { - u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); + u16 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20); } @@ -2529,9 +2532,9 @@ void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) } } -static u8 FindObjectEventPaletteIndexByTag(u16 tag) +static u16 FindObjectEventPaletteIndexByTag(u16 tag) { - u8 i; + u16 i; for (i = 0; sObjectEventSpritePalettes[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { @@ -2877,7 +2880,7 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; @@ -3260,6 +3263,38 @@ u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementT return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy); } +movement_type_def(MovementType_FollowingPokemon, gMovementTypeFuncs_FollowingPokemon) + +bool8 MovementType_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FollowingPokemon_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_FOLLOWING_POKEMON); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FollowingPokemon_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = FALSE; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FollowingPokemon_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[1] = 1; + return TRUE; +} + movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround) bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -5148,8 +5183,9 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { curObject = &gObjectEvents[i]; - if (curObject->active && curObject != objectEvent) + if (curObject->active && curObject != objectEvent && !FollowMe_IsCollisionExempt(curObject, objectEvent)) { + // check for collision if curObject is active, not the object in question, and not exempt from collisions if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { if (AreElevationsCompatible(objectEvent->currentElevation, curObject->currentElevation)) @@ -5297,6 +5333,7 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct objectEvent->heldMovementActive = TRUE; objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sActionFuncId = 0; + FollowMe(objectEvent, movementActionId, FALSE); return FALSE; } @@ -5397,6 +5434,41 @@ bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direc return ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetOppositeDirection(direction))); } +bool8 ObjectEventPokemonFacePlayer(struct ObjectEvent *follower, struct ObjectEvent *player) +{ + if(follower->currentCoords.x == player->currentCoords.x) + { + // Follower is south of player + if(follower->currentCoords.y > player->currentCoords.y) + { + gSprites[follower->spriteId].animNum = 5; + follower->facingDirection = DIR_NORTH; + } + // Follower is north of player + else + { + gSprites[follower->spriteId].animNum = 4; + follower->facingDirection = DIR_SOUTH; + } + } + else + { + // Follower is east of player + if(follower->currentCoords.x > player->currentCoords.x) + { + gSprites[follower->spriteId].animNum = 6; + follower->facingDirection = DIR_WEST; + } + // Follower is west of player + else + { + gSprites[follower->spriteId].animNum = 7; + follower->facingDirection = DIR_EAST; + } + } + return ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON); +} + dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, gAcroWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, gAcroPopWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, gAcroEndWheelieFaceDirectionMovementActions); @@ -5539,7 +5611,8 @@ static bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite { ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; - sprite->animPaused = TRUE; + if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) + sprite->animPaused = TRUE; return TRUE; } return FALSE; @@ -5773,7 +5846,19 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 2) + { + sprite->data[7] = 2; + sprite->animNum = 4; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalDown_Step1(objectEvent, sprite); } @@ -5789,7 +5874,19 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 3) + { + sprite->data[7] = 3; + sprite->animNum = 5; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalUp_Step1(objectEvent, sprite); } @@ -5805,7 +5902,19 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 4) + { + sprite->data[7] = 4; + sprite->animNum = 6; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite); } @@ -5821,7 +5930,19 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 5) + { + sprite->data[7] = 5; + sprite->animNum = 7; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalRight_Step1(objectEvent, sprite); } @@ -5895,7 +6016,8 @@ static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; objectEvent->landingJump = TRUE; - sprite->animPaused = TRUE; + if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) + sprite->animPaused = TRUE; } return result; } @@ -5944,6 +6066,11 @@ static bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *s bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 0; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Down_Step1(objectEvent, sprite); } @@ -5961,6 +6088,11 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 0; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Up_Step1(objectEvent, sprite); } @@ -5978,6 +6110,11 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 8; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Left_Step1(objectEvent, sprite); } @@ -5995,6 +6132,11 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = -8; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Right_Step1(objectEvent, sprite); } @@ -6058,7 +6200,19 @@ bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 6) + { + sprite->data[7] = 6; + sprite->animNum = 20; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastDown_Step1(objectEvent, sprite); } @@ -6074,7 +6228,19 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 7) + { + sprite->data[7] = 7; + sprite->animNum = 21; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastUp_Step1(objectEvent, sprite); } @@ -6090,7 +6256,19 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 8) + { + sprite->data[7] = 8; + sprite->animNum = 22; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastLeft_Step1(objectEvent, sprite); } @@ -6106,7 +6284,19 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 9) + { + sprite->data[7] = 9; + sprite->animNum = 23; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastRight_Step1(objectEvent, sprite); } @@ -8286,29 +8476,32 @@ void GroundEffect_FlowingWater(struct ObjectEvent *objEvent, struct Sprite *spri StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objEvent); } -static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) = { +static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) = { [TRACKS_NONE] = DoTracksGroundEffect_None, [TRACKS_FOOT] = DoTracksGroundEffect_Footprints, [TRACKS_BIKE_TIRE] = DoTracksGroundEffect_BikeTireTracks, + [TRACKS_SLITHER] = DoTracksGroundEffect_SlitherTracks, + [TRACKS_BUG] = DoTracksGroundEffect_FootprintsBug, + [TRACKS_SPOT] = DoTracksGroundEffect_FootprintsSpot, }; void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, FALSE); + sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, 0); } void GroundEffect_DeepSandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, TRUE); + sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, 1); } -static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) +static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) { } -static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) +static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) { // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) u16 sandFootprints_FieldEffectData[2] = { @@ -8321,10 +8514,77 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct gFieldEffectArguments[2] = 149; gFieldEffectArguments[3] = 2; gFieldEffectArguments[4] = objEvent->facingDirection; - FieldEffectStart(sandFootprints_FieldEffectData[isDeepSand]); + FieldEffectStart(sandFootprints_FieldEffectData[a]); } -static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) +static void DoTracksGroundEffect_FootprintsSpot(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +{ + // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) + u16 otherFootprintsA_FieldEffectData[2] = { + FLDEFF_TRACKS_SPOT, + FLDEFF_TRACKS_SPOT + }; + + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = objEvent->facingDirection; + if (Random() % 2 == 0) + PlaySE(159); + if (Random() % 2 == 1) + PlaySE12WithPanning(159, 1); + FieldEffectStart(otherFootprintsA_FieldEffectData[a]); +} + +static void DoTracksGroundEffect_FootprintsBug(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +{ + // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) + u16 otherFootprintsB_FieldEffectData[2] = { + FLDEFF_TRACKS_BUG, + FLDEFF_TRACKS_BUG + }; + + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = objEvent->facingDirection; + if (Random() % 2 == 0) + PlaySE(159); + if (Random() % 2 == 1) + PlaySE12WithPanning(159, 1); + FieldEffectStart(otherFootprintsB_FieldEffectData[a]); +} + +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +{ + // Specifies which bike track shape to show next. + // For example, when the bike turns from up to right, it will show + // a track that curves to the right. + // Each 4-byte row corresponds to the initial direction of the bike, and + // each byte in that row is for the next direction of the bike in the order + // of down, up, left, right. + static const u8 slitherTracks_Transitions[4][4] = { + 1, 2, 7, 8, + 1, 2, 6, 5, + 5, 8, 3, 4, + 6, 7, 3, 4, + }; + + if (objEvent->currentCoords.x != objEvent->previousCoords.x || objEvent->currentCoords.y != objEvent->previousCoords.y) + { + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = + slitherTracks_Transitions[objEvent->previousMovementDirection][objEvent->facingDirection - 5]; + FieldEffectStart(FLDEFF_TRACKS_SLITHER); + } +} + +static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) { // Specifies which bike track shape to show next. // For example, when the bike turns from up to right, it will show @@ -8700,11 +8960,11 @@ static const SpriteStepFunc *const sNpcStepFuncTables[] = { }; static const s16 sStepTimes[] = { - [MOVE_SPEED_NORMAL] = ARRAY_COUNT(sStep1Funcs), - [MOVE_SPEED_FAST_1] = ARRAY_COUNT(sStep2Funcs), - [MOVE_SPEED_FAST_2] = ARRAY_COUNT(sStep3Funcs), - [MOVE_SPEED_FASTER] = ARRAY_COUNT(sStep4Funcs), - [MOVE_SPEED_FASTEST] = ARRAY_COUNT(sStep8Funcs), + [MOVE_SPEED_NORMAL] = 16, + [MOVE_SPEED_FAST_1] = 8, + [MOVE_SPEED_FAST_2] = 6, + [MOVE_SPEED_FASTER] = 4, + [MOVE_SPEED_FASTEST] = 2, }; static bool8 NpcTakeStep(struct Sprite *sprite) @@ -9039,7 +9299,7 @@ void TurnVirtualObject(u8 virtualObjId, u8 direction) StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(direction)); } -void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId) +void SetVirtualObjectGraphics(u8 virtualObjId, u16 graphicsId) { int spriteId = GetVirtualObjectSpriteId(virtualObjId); @@ -9971,3 +10231,28 @@ u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *spr { return TRUE; } + +// NEW +u16 GetMiniStepCount(u8 speed) +{ + return (u16)sStepTimes[speed]; +} + +void RunMiniStep(struct Sprite *sprite, u8 speed, u8 currentFrame) +{ + sNpcStepFuncTables[speed][currentFrame](sprite, sprite->data[3]); +} + +bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoordsInDirection(DIR_NORTH, &x, &y, 0, 1); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y))) + return TRUE; + + return FALSE; +} diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index a6b558195..5d17cca84 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -92,22 +92,11 @@ static const struct SpriteTemplate sEvoSparkleSpriteTemplate = .callback = SpriteCB_Sparkle_Dummy }; -static const u16 sEvoSparkleMatrices[] = +static const s16 sEvoSparkleMatrices[] = { - 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, - 0x240, 0x200, 0x1C0, 0x180, 0x140, 0x100 -}; - -static const s16 sUnused[] = -{ - -4, 0x10, - -3, 0x30, - -2, 0x50, - -1, 0x70, - 1, 0x70, - 2, 0x50, - 3, 0x30, - 4, 0x10 + 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, 0x240, 0x200, 0x1C0, + 0x180, 0x140, 0x100, -4, 0x10, -3, 0x30, -2, 0x50, + -1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10 }; static void SpriteCB_Sparkle_Dummy(struct Sprite *sprite) @@ -118,33 +107,30 @@ static void SpriteCB_Sparkle_Dummy(struct Sprite *sprite) static void SetEvoSparklesMatrices(void) { u16 i; - for (i = 0; i < ARRAY_COUNT(sEvoSparkleMatrices); i++) + for (i = 0; i < 12; i++) + { SetOamMatrix(20 + i, sEvoSparkleMatrices[i], 0, 0, sEvoSparkleMatrices[i]); + } } -#define sSpeed data[3] -#define sAmplitude data[5] -#define sTrigIdx data[6] -#define sTimer data[7] - static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite) { if (sprite->y > 8) { u8 matrixNum; - sprite->y = 88 - (sprite->sTimer * sprite->sTimer) / 80; - sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude) / 4; - sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->sTrigIdx += 4; - if (sprite->sTimer & 1) - sprite->sAmplitude--; - sprite->sTimer++; + sprite->y = 88 - (sprite->data[7] * sprite->data[7]) / 80; + sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4; + sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); + sprite->data[6] += 4; + if (sprite->data[7] & 1) + sprite->data[5]--; + sprite->data[7]++; if (sprite->y2 > 0) sprite->subpriority = 1; else sprite->subpriority = 20; - matrixNum = sprite->sAmplitude / 4 + 20; + matrixNum = sprite->data[5] / 4 + 20; if (matrixNum > 31) matrixNum = 31; sprite->oam.matrixNum = matrixNum; @@ -153,17 +139,17 @@ static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite) DestroySprite(sprite); } -static void CreateSparkle_SpiralUpward(u8 trigIdx) +static void CreateSparkle_SpiralUpward(u8 arg0) { - u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 88, 0); - if (spriteId != MAX_SPRITES) + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0); + if (spriteID != MAX_SPRITES) { - gSprites[spriteId].sAmplitude = 48; - gSprites[spriteId].sTrigIdx = trigIdx; - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteId].oam.matrixNum = 31; - gSprites[spriteId].callback = SpriteCB_Sparkle_SpiralUpward; + gSprites[spriteID].data[5] = 48; + gSprites[spriteID].data[6] = arg0; + gSprites[spriteID].data[7] = 0; + gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].callback = SpriteCB_Sparkle_SpiralUpward; } } @@ -171,85 +157,85 @@ static void SpriteCB_Sparkle_ArcDown(struct Sprite* sprite) { if (sprite->y < 88) { - sprite->y = 8 + (sprite->sTimer * sprite->sTimer) / 5; - sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude) / 4; - sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->sAmplitude = 8 + Sin((u8)(sprite->sTimer * 4), 40); - sprite->sTimer++; + sprite->y = 8 + (sprite->data[7] * sprite->data[7]) / 5; + sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4; + sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); + sprite->data[5] = 8 + Sin((u8)(sprite->data[7] * 4), 40); + sprite->data[7]++; } else DestroySprite(sprite); } -static void CreateSparkle_ArcDown(u8 trigIdx) +static void CreateSparkle_ArcDown(u8 arg0) { - u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 8, 0); - if (spriteId != MAX_SPRITES) + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0); + if (spriteID != MAX_SPRITES) { - gSprites[spriteId].sAmplitude = 8; - gSprites[spriteId].sTrigIdx = trigIdx; - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteId].oam.matrixNum = 25; - gSprites[spriteId].subpriority = 1; - gSprites[spriteId].callback = SpriteCB_Sparkle_ArcDown; + gSprites[spriteID].data[5] = 8; + gSprites[spriteID].data[6] = arg0; + gSprites[spriteID].data[7] = 0; + gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteID].oam.matrixNum = 25; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_Sparkle_ArcDown; } } static void SpriteCB_Sparkle_CircleInward(struct Sprite* sprite) { - if (sprite->sAmplitude > 8) + if (sprite->data[5] > 8) { - sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->sAmplitude -= sprite->sSpeed; - sprite->sTrigIdx += 4; + sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]); + sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); + sprite->data[5] -= sprite->data[3]; + sprite->data[6] += 4; } else DestroySprite(sprite); } -static void CreateSparkle_CircleInward(u8 trigIdx, u8 speed) +static void CreateSparkle_CircleInward(u8 arg0, u8 arg1) { - u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 56, 0); - if (spriteId != MAX_SPRITES) + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) { - gSprites[spriteId].sSpeed = speed; - gSprites[spriteId].sAmplitude = 120; - gSprites[spriteId].sTrigIdx = trigIdx; - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteId].oam.matrixNum = 31; - gSprites[spriteId].subpriority = 1; - gSprites[spriteId].callback = SpriteCB_Sparkle_CircleInward; + gSprites[spriteID].data[3] = arg1; + gSprites[spriteID].data[5] = 120; + gSprites[spriteID].data[6] = arg0; + gSprites[spriteID].data[7] = 0; + gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_Sparkle_CircleInward; } } static void SpriteCB_Sparkle_Spray(struct Sprite* sprite) { - if (!(sprite->sTimer & 3)) + if (!(sprite->data[7] & 3)) sprite->y++; - if (sprite->sTrigIdx < 128) + if (sprite->data[6] < 128) { u8 matrixNum; - sprite->y2 = -Sin((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->x = (DISPLAY_WIDTH / 2) + (sprite->sSpeed * sprite->sTimer) / 3; - sprite->sTrigIdx++; - matrixNum = 31 - (sprite->sTrigIdx * 12 / 128); - if (sprite->sTrigIdx > 64) + sprite->y2 = -Sin((u8)(sprite->data[6]), sprite->data[5]); + sprite->x = 120 + (sprite->data[3] * sprite->data[7]) / 3; + sprite->data[6]++; + matrixNum = 31 - (sprite->data[6] * 12 / 128); + if (sprite->data[6] > 64) sprite->subpriority = 1; else { sprite->invisible = FALSE; sprite->subpriority = 20; - if (sprite->sTrigIdx > 112 && sprite->sTrigIdx & 1) + if (sprite->data[6] > 112 && sprite->data[6] & 1) sprite->invisible = TRUE; } if (matrixNum < 20) matrixNum = 20; sprite->oam.matrixNum = matrixNum; - sprite->sTimer++; + sprite->data[7]++; } else DestroySprite(sprite); @@ -257,16 +243,16 @@ static void SpriteCB_Sparkle_Spray(struct Sprite* sprite) static void CreateSparkle_Spray(u8 id) { - u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 56, 0); - if (spriteId != MAX_SPRITES) + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) { - gSprites[spriteId].sSpeed = 3 - (Random() % 7); - gSprites[spriteId].sAmplitude = 48 + (Random() & 0x3F); - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteId].oam.matrixNum = 31; - gSprites[spriteId].subpriority = 20; - gSprites[spriteId].callback = SpriteCB_Sparkle_Spray; + gSprites[spriteID].data[3] = 3 - (Random() % 7); + gSprites[spriteID].data[5] = 48 + (Random() & 0x3F); + gSprites[spriteID].data[7] = 0; + gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 20; + gSprites[spriteID].callback = SpriteCB_Sparkle_Spray; } } @@ -303,7 +289,7 @@ static void Task_Sparkles_SpiralUpward(u8 taskId) { u8 i; for (i = 0; i < 4; i++) - CreateSparkle_SpiralUpward((gTasks[taskId].tTimer & 120) * 2 + i * 64); + CreateSparkle_SpiralUpward((0x78 & gTasks[taskId].tTimer) * 2 + i * 64); } gTasks[taskId].tTimer++; } diff --git a/src/evolution_scene.c b/src/evolution_scene.c index eb458d39d..bde11ddb5 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -816,7 +816,8 @@ static void Task_EvolutionScene(u8 taskId) DestroyTask(taskId); FreeMonSpritesGfx(); - FREE_AND_SET_NULL(sEvoStructPtr); + Free(sEvoStructPtr); + sEvoStructPtr = NULL; FreeAllWindowBuffers(); SetMainCallback2(gCB2_AfterEvolution); } @@ -1222,7 +1223,8 @@ static void Task_TradeEvolutionScene(u8 taskId) if (!IsTextPrinterActive(0)) { DestroyTask(taskId); - FREE_AND_SET_NULL(sEvoStructPtr); + Free(sEvoStructPtr); + sEvoStructPtr = NULL; gTextFlags.useAlternateDownArrow = 0; SetMainCallback2(gCB2_AfterEvolution); } diff --git a/src/field_camera.c b/src/field_camera.c index 9b129e6b2..0a00dcbee 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -212,13 +212,13 @@ void CurrentMapDrawMetatileAt(int x, int y) } } -void DrawDoorMetatileAt(int x, int y, u16 *tiles) +void DrawDoorMetatileAt(int x, int y, u16 *arr) { int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y); if (offset >= 0) { - DrawMetatile(METATILE_LAYER_TYPE_COVERED, tiles, offset); + DrawMetatile(METATILE_LAYER_TYPE_COVERED, arr, offset); sFieldCameraOffset.copyBGToVRAM = TRUE; } } @@ -404,9 +404,9 @@ void CameraUpdate(void) } gFieldCamera.x += movementSpeedX; - gFieldCamera.x %= 16; + gFieldCamera.x = gFieldCamera.x - 16 * (gFieldCamera.x / 16); gFieldCamera.y += movementSpeedY; - gFieldCamera.y %= 16; + gFieldCamera.y = gFieldCamera.y - 16 * (gFieldCamera.y / 16); if (deltaX != 0 || deltaY != 0) { @@ -437,10 +437,10 @@ void SetCameraPanningCallback(void (*callback)(void)) sFieldCameraPanningCallback = callback; } -void SetCameraPanning(s16 horizontal, s16 vertical) +void SetCameraPanning(s16 a, s16 b) { - sHorizontalCameraPan = horizontal; - sVerticalCameraPan = vertical + 32; + sHorizontalCameraPan = a; + sVerticalCameraPan = b + 32; } void InstallCameraPanAheadCallback(void) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 60cd86bd6..1bcf7b403 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -28,6 +28,7 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "wild_encounter.h" +#include "follow_me.h" #include "constants/event_bg.h" #include "constants/event_objects.h" #include "constants/field_poison.h" @@ -156,10 +157,16 @@ int ProcessPlayerFieldInput(struct FieldInput *input) { IncrementGameStat(GAME_STAT_STEPS); IncrementBirthIslandRockStepCount(); - + if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE) return TRUE; } + else if(gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 0x9E); + } + if (input->checkStandardWildEncounter && CheckStandardWildEncounter(metatileBehavior) == TRUE) return TRUE; if (input->heldDirection && input->dpadDirection == playerDirection) @@ -307,6 +314,13 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 if (InTrainerHill() == TRUE) script = GetTrainerHillTrainerScript(); + else if (objectEventId == GetFollowerObjectId())//(gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_FOLLOWER) + { + if(gObjectEvents[objectEventId].invisible == FALSE) + script = GetFollowerScriptPointer(); + else + return NULL; + } else script = GetObjectEventScriptPointerByObjectEventId(objectEventId); diff --git a/src/field_door.c b/src/field_door.c index 756d0dabf..988ea615d 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -18,7 +18,7 @@ struct DoorGraphics u8 sound; u8 size; const void *tiles; - const void *palettes; + const void *palette; }; struct DoorAnimFrame @@ -74,7 +74,7 @@ static const u8 sDoorAnimTiles_PokemonLeague[] = INCBIN_U8("graphics/door_anims/ static const u16 sDoorNullPalette20[16] = {}; static const u8 sDoorAnimTiles_Pacifidlog[] = INCBIN_U8("graphics/door_anims/pacifidlog.4bpp"); static const u16 sDoorNullPalette21[16] = {}; -static const u8 sDoorAnimTiles_PetalburgGym[] = INCBIN_U8("graphics/door_anims/petalburg_gym.4bpp"); +static const u8 sDoorAnimTiles_BattleTowerCorridor[] = INCBIN_U8("graphics/door_anims/battle_tower_corridor.4bpp"); static const u16 sDoorNullPalette22[16] = {}; static const u8 sDoorAnimTiles_CyclingRoad[] = INCBIN_U8("graphics/door_anims/cycling_road.4bpp"); static const u16 sDoorNullPalette23[16] = {}; @@ -98,7 +98,7 @@ static const u8 sDoorAnimTiles_BattleTowerOld[] = INCBIN_U8("graphics/door_anims static const u16 sDoorNullPalette32[16] = {}; static const u8 sDoorAnimTiles_BattleTowerElevator[] = INCBIN_U8("graphics/door_anims/battle_tower_elevator.4bpp"); static const u16 sDoorNullPalette33[16] = {}; -static const u8 sDoorAnimTiles_UnusedBattleFrontier[] = INCBIN_U8("graphics/door_anims/unused_battle_frontier.4bpp"); +static const u8 sDoorAnimTiles_34[] = INCBIN_U8("graphics/door_anims/unknown.4bpp"); static const u16 sDoorNullPalette34[16] = {}; static const u8 sDoorAnimTiles_BattleDome[] = INCBIN_U8("graphics/door_anims/battle_dome.4bpp"); static const u16 sDoorNullPalette35[16] = {}; @@ -190,7 +190,7 @@ static const u8 sDoorAnimPalettes_Mauville[] = {7, 7, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_Verdanturf[] = {6, 6, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_LilycoveWooden[] = {5, 5, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_Contest[] = {1, 1, 1, 1, 1, 1, 1, 1}; -static const u8 sDoorAnimPalettes_PetalburgGym[] = {6, 6, 6, 6, 6, 6, 6, 6}; +static const u8 sDoorAnimPalettes_BattleTowerCorridor[] = {6, 6, 6, 6, 6, 6, 6, 6}; static const u8 sDoorAnimPalettes_CyclingRoad[] = {7, 7, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_LilycoveDeptStore[] = {5, 5, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_SafariZone[] = {9, 9, 9, 9, 9, 9, 9, 9}; @@ -202,7 +202,7 @@ static const u8 sDoorAnimPalettes_AbandonedShipRoom[] = {7, 7, 7, 7, 7, 7, 7, 7} static const u8 sDoorAnimPalettes_LilycoveDeptStoreElevator[] = {6, 6, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_BattleTowerOld[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleTowerElevator[] = {7, 7, 7, 7, 7, 7, 7, 7}; -static const u8 sDoorAnimPalettes_UnusedBattleFrontier[] = {9, 9, 9, 9, 9, 9, 9, 9}; +static const u8 sDoorAnimPalettes_34[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleDome[] = {1, 1, 1, 1, 1, 1, 1, 1}; static const u8 sDoorAnimPalettes_BattleFactory[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleTower[] = {0, 0, 0, 0, 0, 0, 0, 0}; @@ -244,7 +244,7 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {METATILE_Sootopolis_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_Sootopolis, sDoorAnimPalettes_Sootopolis}, {METATILE_EverGrande_Door_PokemonLeague, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_PokemonLeague, sDoorAnimPalettes_PokemonLeague}, {METATILE_Pacifidlog_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_Pacifidlog, sDoorAnimPalettes_Pacifidlog}, - {METATILE_PetalburgGym_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_PetalburgGym, sDoorAnimPalettes_PetalburgGym}, + {METATILE_BattleFrontier_Door_Corridor, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_BattleTowerCorridor, sDoorAnimPalettes_BattleTowerCorridor}, {METATILE_Mauville_Door_CyclingRoad, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_CyclingRoad, sDoorAnimPalettes_CyclingRoad}, {METATILE_Lilycove_Door_DeptStore, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_LilycoveDeptStore, sDoorAnimPalettes_LilycoveDeptStore}, {METATILE_Lilycove_Door_SafariZone, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_SafariZone, sDoorAnimPalettes_SafariZone}, @@ -256,9 +256,7 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {METATILE_Shop_Door_Elevator, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_LilycoveDeptStoreElevator, sDoorAnimPalettes_LilycoveDeptStoreElevator}, {METATILE_Dewford_Door_BattleTower, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTowerOld, sDoorAnimPalettes_BattleTowerOld}, {METATILE_BattleFrontier_Door_Elevator, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTowerElevator, sDoorAnimPalettes_BattleTowerElevator}, - // The metatile for this door doesn't seem to correspond to a door in any Emerald tileset. Given the surrounding door animations, it was likely cut from the Battle Frontier. - // From the palettes array we know it uses palette 9, and the door's shadow looks correct using either the Battle Tent or Battle Frontier Outside's 9th palette. - {0x3B0, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_UnusedBattleFrontier, sDoorAnimPalettes_UnusedBattleFrontier}, + {0x3B0, /* TODO: Missing metatile ID */ DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_34, sDoorAnimPalettes_34}, {METATILE_BattleFrontierOutsideWest_Door_BattleDome, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleDome, sDoorAnimPalettes_BattleDome}, {METATILE_BattleFrontierOutsideWest_Door_BattleFactory, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleFactory, sDoorAnimPalettes_BattleFactory}, {METATILE_BattleFrontierOutsideEast_Door_BattleTower, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTower, sDoorAnimPalettes_BattleTower}, @@ -280,71 +278,52 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {}, }; -// NOTE: The tiles of a door's animation must be copied to VRAM because they are not already part of any given tileset. -// This means that if there are any pre-existing tiles in this copied region that are visible when the door -// animation is played they will be overwritten. -#define DOOR_TILE_START_SIZE1 (NUM_TILES_TOTAL - 8) -#define DOOR_TILE_START_SIZE2 (NUM_TILES_TOTAL - 16) - static void CopyDoorTilesToVram(const struct DoorGraphics *gfx, const struct DoorAnimFrame *frame) { if (gfx->size == 2) - CpuFastCopy(gfx->tiles + frame->offset, (void *)(VRAM + TILE_OFFSET_4BPP(DOOR_TILE_START_SIZE2)), 16 * TILE_SIZE_4BPP); + CpuFastSet(gfx->tiles + frame->offset, (void *)(VRAM + 0x7E00), 0x80); else - CpuFastCopy(gfx->tiles + frame->offset, (void *)(VRAM + TILE_OFFSET_4BPP(DOOR_TILE_START_SIZE1)), 8 * TILE_SIZE_4BPP); + CpuFastSet(gfx->tiles + frame->offset, (void *)(VRAM + 0x7F00), 0x40); } -static void BuildDoorTiles(u16 *tiles, u16 tileNum, const u8 *paletteNums) +static void door_build_blockdef(u16 *a, u16 b, const u8 *c) { int i; - u16 tile; + u16 unk; - // Only the first 4 tiles of each metatile (bottom layer) actually use the door tiles for (i = 0; i < 4; i++) { - tile = *(paletteNums++) << 12; - tiles[i] = tile | (tileNum + i); + unk = *(c++) << 12; + a[i] = unk | (b + i); } - - // The remaining layers are left as tile 0 (with the same palette) for (; i < 8; i++) { - tile = *(paletteNums++) << 12; - tiles[i] = tile; + unk = *(c++) << 12; + a[i] = unk; } } -static void DrawCurrentDoorAnimFrame(const struct DoorGraphics *gfx, u32 x, u32 y, const u8 *paletteNums) +static void DrawCurrentDoorAnimFrame(const struct DoorGraphics *gfx, u32 x, u32 y, const u8 *pal) { - u16 tiles[24]; + u16 arr[24]; if (gfx->size == 2) { - // Top left metatile - BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 0, &paletteNums[0]); - DrawDoorMetatileAt(x, y - 1, &tiles[8]); - - // Bottom left metatile - BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 4, &paletteNums[4]); - DrawDoorMetatileAt(x, y, &tiles[8]); - - // Top right metatile - BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 8, &paletteNums[0]); - DrawDoorMetatileAt(x + 1, y - 1, &tiles[8]); - - // Bottom right metatile - BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 12, &paletteNums[4]); - DrawDoorMetatileAt(x + 1, y, &tiles[8]); + door_build_blockdef(&arr[8], 0x3F0, pal); + DrawDoorMetatileAt(x, y - 1, &arr[8]); + door_build_blockdef(&arr[8], 0x3F4, pal + 4); + DrawDoorMetatileAt(x, y, &arr[8]); + door_build_blockdef(&arr[8], 0x3F8, pal); + DrawDoorMetatileAt(x + 1, y - 1, &arr[8]); + door_build_blockdef(&arr[8], 0x3FC, pal + 4); + DrawDoorMetatileAt(x + 1, y, &arr[8]); } else { - // Top metatile - BuildDoorTiles(&tiles[0], DOOR_TILE_START_SIZE1 + 0, &paletteNums[0]); - DrawDoorMetatileAt(x, y - 1, &tiles[0]); - - // Bottom metatile - BuildDoorTiles(&tiles[0], DOOR_TILE_START_SIZE1 + 4, &paletteNums[4]); - DrawDoorMetatileAt(x, y, &tiles[0]); + door_build_blockdef(&arr[0], 0x3F8, pal); + DrawDoorMetatileAt(x, y - 1, &arr[0]); + door_build_blockdef(&arr[0], 0x3FC, pal + 4); + DrawDoorMetatileAt(x, y, &arr[0]); } } @@ -371,9 +350,9 @@ static void DrawDoor(const struct DoorGraphics *gfx, const struct DoorAnimFrame else { CopyDoorTilesToVram(gfx, frame); - DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palettes); + DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palette); if (ShouldUseMultiCorridorDoor()) - DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + MAP_OFFSET, gSpecialVar_0x8005 + MAP_OFFSET, gfx->palettes); + DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + MAP_OFFSET, gSpecialVar_0x8005 + MAP_OFFSET, gfx->palette); } } diff --git a/src/field_effect.c b/src/field_effect.c index 53c075581..04e8ad007 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -26,6 +26,7 @@ #include "trainer_pokemon_sprites.h" #include "trig.h" #include "util.h" +#include "follow_me.h" #include "constants/field_effects.h" #include "constants/event_object_movement.h" #include "constants/metatile_behaviors.h" @@ -39,6 +40,7 @@ EWRAM_DATA u16 gReflectionPaletteBuffer[0x10] = {0}; // Static type declarations +extern void FollowMe_WarpSetEnd(void); static void Task_PokecenterHeal(u8 taskId); static void PokecenterHealEffect_Init(struct Task *); static void PokecenterHealEffect_WaitForBallPlacement(struct Task *); @@ -482,13 +484,13 @@ static const struct Subsprite sSubsprites_HofMonitorBig[] = static const struct SubspriteTable sSubspriteTable_HofMonitorBig = subsprite_table(sSubsprites_HofMonitorBig); -static const union AnimCmd sAnim_Static[] = +const union AnimCmd sAnim_Static[] = { ANIMCMD_FRAME(.imageValue = 0, .duration = 1), ANIMCMD_JUMP(0) }; -static const union AnimCmd sAnim_Flicker[] = +const union AnimCmd sAnim_Flicker[] = { ANIMCMD_FRAME(.imageValue = 0, .duration = 16), ANIMCMD_FRAME(.imageValue = 1, .duration = 16), @@ -502,7 +504,7 @@ static const union AnimCmd sAnim_Flicker[] = }; // Flicker on and off, for the Pokéballs / monitors during the PokéCenter heal effect -static const union AnimCmd *const sAnims_Flicker[] = +const union AnimCmd *const sAnims_Flicker[] = { sAnim_Static, sAnim_Flicker @@ -557,7 +559,7 @@ static const struct SpriteTemplate sSpriteTemplate_HofMonitorSmall = .callback = SpriteCB_HallOfFameMonitor }; -static void (*const sPokecenterHealEffectFuncs[])(struct Task *) = +void (*const sPokecenterHealEffectFuncs[])(struct Task *) = { PokecenterHealEffect_Init, PokecenterHealEffect_WaitForBallPlacement, @@ -565,7 +567,7 @@ static void (*const sPokecenterHealEffectFuncs[])(struct Task *) = PokecenterHealEffect_WaitForSoundAndEnd }; -static void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = +void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = { HallOfFameRecordEffect_Init, HallOfFameRecordEffect_WaitForBallPlacement, @@ -573,7 +575,7 @@ static void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = HallOfFameRecordEffect_WaitForSoundAndEnd }; -static void (*const sPokeballGlowEffectFuncs[])(struct Sprite *) = +void (*const sPokeballGlowEffectFuncs[])(struct Sprite *) = { PokeballGlowEffect_PlaceBalls, PokeballGlowEffect_TryPlaySe, @@ -599,7 +601,7 @@ static const u8 sPokeballGlowReds[] = {16, 12, 8, 0}; static const u8 sPokeballGlowGreens[] = {16, 12, 8, 0}; static const u8 sPokeballGlowBlues[] = { 0, 0, 0, 0}; -static bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = +bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = { FallWarpEffect_Init, FallWarpEffect_WaitWeather, @@ -610,7 +612,7 @@ static bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = FallWarpEffect_End, }; -static bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = +bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = { EscalatorWarpOut_Init, EscalatorWarpOut_WaitForPlayer, @@ -620,7 +622,7 @@ static bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = EscalatorWarpOut_Down_End, }; -static bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = +bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = { EscalatorWarpIn_Init, EscalatorWarpIn_Down_Init, @@ -631,7 +633,7 @@ static bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = EscalatorWarpIn_End, }; -static bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectEvent *) = +bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectEvent *) = { WaterfallFieldEffect_Init, WaterfallFieldEffect_ShowMon, @@ -640,14 +642,14 @@ static bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectE WaterfallFieldEffect_ContinueRideOrEnd, }; -static bool8 (*const sDiveFieldEffectFuncs[])(struct Task *) = +bool8 (*const sDiveFieldEffectFuncs[])(struct Task *) = { DiveFieldEffect_Init, DiveFieldEffect_ShowMon, DiveFieldEffect_TryWarp, }; -static bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGymB1FWarpEffect_Init, LavaridgeGymB1FWarpEffect_CameraShake, @@ -657,7 +659,7 @@ static bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct Ob LavaridgeGymB1FWarpEffect_Warp, }; -static bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGymB1FWarpExitEffect_Init, LavaridgeGymB1FWarpExitEffect_StartPopOut, @@ -665,7 +667,7 @@ static bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struc LavaridgeGymB1FWarpExitEffect_End, }; -static bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGym1FWarpEffect_Init, LavaridgeGym1FWarpEffect_AshPuff, @@ -674,7 +676,7 @@ static bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct Obj LavaridgeGym1FWarpEffect_Warp, }; -static void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *) = +void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *) = { EscapeRopeWarpOutEffect_Init, EscapeRopeWarpOutEffect_Spin, @@ -1362,7 +1364,7 @@ static void Task_UseFly(u8 taskId) task->data[0]++; } - + if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { Overworld_ResetStateAfterFly(); @@ -1541,6 +1543,7 @@ static bool8 FallWarpEffect_End(struct Task *task) UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect)); + FollowMe_WarpSetEnd(); return FALSE; } @@ -1592,6 +1595,7 @@ static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *task) task->tState++; task->data[2] = 0; task->data[3] = 0; + EscalatorMoveFollower(task->data[1]); if ((u8)task->tGoingUp == FALSE) { task->tState = 4; // jump to EscalatorWarpOut_Down_Ride @@ -1889,6 +1893,7 @@ static bool8 WaterfallFieldEffect_ContinueRideOrEnd(struct Task *task, struct Ob gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(Task_UseWaterfall)); FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL); + FollowMe_WarpSetEnd(); return FALSE; } @@ -2275,6 +2280,31 @@ static void EscapeRopeWarpOutEffect_Spin(struct Task *task) else if (task->tSpinDelay == 0 || (--task->tSpinDelay) == 0) { ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(spinDirections[objectEvent->facingDirection])); + + if (gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + switch(objectEvent->facingDirection) + { + case DIR_SOUTH: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 0; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 25); + break; + case DIR_NORTH: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 0; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 26); + break; + case DIR_WEST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 27); + break; + case DIR_EAST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 28); + break; + } + } + if (task->tNumTurns < 12) task->tNumTurns++; task->tSpinDelay = 8 >> (task->tNumTurns >> 2); @@ -2282,7 +2312,7 @@ static void EscapeRopeWarpOutEffect_Spin(struct Task *task) } } -static void (*const sEscapeRopeWarpInEffectFuncs[])(struct Task *) = { +void (*const sEscapeRopeWarpInEffectFuncs[])(struct Task *) = { EscapeRopeWarpInEffect_Init, EscapeRopeWarpInEffect_Spin }; @@ -2453,7 +2483,7 @@ static void FieldCallback_TeleportWarpIn(void) CreateTask(Task_TeleportWarpIn, 0); } -static void (*const sTeleportWarpInFieldEffectFuncs[])(struct Task *) = { +void (*const sTeleportWarpInFieldEffectFuncs[])(struct Task *) = { TeleportWarpInFieldEffect_Init, TeleportWarpInFieldEffect_SpinEnter, TeleportWarpInFieldEffect_SpinGround @@ -2587,7 +2617,7 @@ bool8 FldEff_FieldMoveShowMonInit(void) return FALSE; } -static void (*const sFieldMoveShowMonOutdoorsEffectFuncs[])(struct Task *) = { +void (*const sFieldMoveShowMonOutdoorsEffectFuncs[])(struct Task *) = { FieldMoveShowMonOutdoorsEffect_Init, FieldMoveShowMonOutdoorsEffect_LoadGfx, FieldMoveShowMonOutdoorsEffect_CreateBanner, @@ -2755,7 +2785,7 @@ static void LoadFieldMoveOutdoorStreaksTilemap(u16 offs) #define tBgOffset data[4] #define tMonSpriteId data[15] -static void (*const sFieldMoveShowMonIndoorsEffectFuncs[])(struct Task *) = { +void (*const sFieldMoveShowMonIndoorsEffectFuncs[])(struct Task *) = { FieldMoveShowMonIndoorsEffect_Init, FieldMoveShowMonIndoorsEffect_LoadGfx, FieldMoveShowMonIndoorsEffect_SlideBannerOn, @@ -2983,7 +3013,7 @@ u8 FldEff_UseSurf(void) return FALSE; } -static void (*const sSurfFieldEffectFuncs[])(struct Task *) = { +void (*const sSurfFieldEffectFuncs[])(struct Task *) = { SurfFieldEffect_Init, SurfFieldEffect_FieldMovePose, SurfFieldEffect_ShowMon, @@ -3163,7 +3193,7 @@ u8 FldEff_UseFly(void) return 0; } -static void (*const sFlyOutFieldEffectFuncs[])(struct Task *) = { +void (*const sFlyOutFieldEffectFuncs[])(struct Task *) = { FlyOutFieldEffect_FieldMovePose, FlyOutFieldEffect_ShowMon, FlyOutFieldEffect_BirdLeaveBall, @@ -3454,7 +3484,7 @@ u8 FldEff_FlyIn(void) return 0; } -static void (*const sFlyInFieldEffectFuncs[])(struct Task *) = { +void (*const sFlyInFieldEffectFuncs[])(struct Task *) = { FlyInFieldEffect_BirdSwoopDown, FlyInFieldEffect_FlyInWithBird, FlyInFieldEffect_JumpOffBird, @@ -3685,7 +3715,7 @@ static void StartEndingDeoxysRockCameraShake(u8 taskId) #undef tEndDelay #undef tEnding -static void (*const sDestroyDeoxysRockEffectFuncs[])(s16*, u8) = { +void (*const sDestroyDeoxysRockEffectFuncs[])(s16*, u8) = { DestroyDeoxysRockEffect_CameraShake, DestroyDeoxysRockEffect_RockFragments, DestroyDeoxysRockEffect_WaitAndEnd, diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 7bc4230b0..fdbafd233 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -589,6 +589,60 @@ u32 FldEff_SandFootprints(void) return 0; } +u32 FldEff_TracksBug(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_BUG], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_BUG; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return 0; +} + +u32 FldEff_TracksSpot(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_SPOT], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_SPOT; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return 0; +} + +u32 FldEff_TracksSlither(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_SLITHER], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_SLITHER; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return spriteId; +} + u32 FldEff_DeepSandFootprints(void) { u8 spriteId; diff --git a/src/field_message_box.c b/src/field_message_box.c index 95d0a94c9..74afb5677 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -33,7 +33,7 @@ static void Task_DrawFieldMessage(u8 taskId) task->tState++; break; case 1: - DrawDialogueFrame(0, TRUE); + DrawDialogueFrame(0, 1); task->tState++; break; case 2: diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index a3a6ed342..b08288ffa 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -20,6 +20,7 @@ #include "strings.h" #include "task.h" #include "tv.h" +#include "follow_me.h" #include "wild_encounter.h" #include "constants/abilities.h" #include "constants/event_objects.h" @@ -79,13 +80,13 @@ static bool8 TryPushBoulder(s16, s16, u8); static void CheckAcroBikeCollision(s16, s16, u8, u8 *); static void DoPlayerAvatarTransition(void); -static void PlayerAvatarTransition_Dummy(struct ObjectEvent *); -static void PlayerAvatarTransition_Normal(struct ObjectEvent *); -static void PlayerAvatarTransition_MachBike(struct ObjectEvent *); -static void PlayerAvatarTransition_AcroBike(struct ObjectEvent *); -static void PlayerAvatarTransition_Surfing(struct ObjectEvent *); -static void PlayerAvatarTransition_Underwater(struct ObjectEvent *); -static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *); +static void PlayerAvatarTransition_Dummy(struct ObjectEvent *a); +static void PlayerAvatarTransition_Normal(struct ObjectEvent *a); +static void PlayerAvatarTransition_MachBike(struct ObjectEvent *a); +static void PlayerAvatarTransition_AcroBike(struct ObjectEvent *a); +static void PlayerAvatarTransition_Surfing(struct ObjectEvent *a); +static void PlayerAvatarTransition_Underwater(struct ObjectEvent *a); +static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *a); static bool8 PlayerAnimIsMultiFrameStationary(void); static bool8 PlayerAnimIsMultiFrameStationaryAndStateNotTurning(void); @@ -96,51 +97,51 @@ static void PlayerRun(u8); static void PlayerNotOnBikeCollide(u8); static void PlayerNotOnBikeCollideWithFarawayIslandMew(u8); -static void PlayCollisionSoundIfNotFacingWarp(u8); +static void PlayCollisionSoundIfNotFacingWarp(u8 a); static void HideShowWarpArrow(struct ObjectEvent *); static void StartStrengthAnim(u8, u8); -static void Task_PushBoulder(u8); -static bool8 PushBoulder_Start(struct Task *, struct ObjectEvent *, struct ObjectEvent *); -static bool8 PushBoulder_Move(struct Task *, struct ObjectEvent *, struct ObjectEvent *); -static bool8 PushBoulder_End(struct Task *, struct ObjectEvent *, struct ObjectEvent *); +static void Task_PushBoulder(u8 taskId); +static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); +static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); +static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); static void DoPlayerMatJump(void); -static void DoPlayerAvatarSecretBaseMatJump(u8); -static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *, struct ObjectEvent *); +static void DoPlayerAvatarSecretBaseMatJump(u8 taskId); +static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct ObjectEvent *objectEvent); static void DoPlayerMatSpin(void); -static void PlayerAvatar_DoSecretBaseMatSpin(u8); -static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *, struct ObjectEvent *); -static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *, struct ObjectEvent *); -static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *, struct ObjectEvent *); -static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *, struct ObjectEvent *); +static void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId); +static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct ObjectEvent *objectEvent); +static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct ObjectEvent *objectEvent); +static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct ObjectEvent *objectEvent); +static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct ObjectEvent *objectEvent); static void CreateStopSurfingTask(u8); -static void Task_StopSurfingInit(u8); -static void Task_WaitStopSurfing(u8); +static void Task_StopSurfingInit(u8 taskId); +static void Task_WaitStopSurfing(u8 taskId); -static void Task_Fishing(u8); -static u8 Fishing_Init(struct Task *); -static u8 Fishing_GetRodOut(struct Task *); -static u8 Fishing_WaitBeforeDots(struct Task *); -static u8 Fishing_InitDots(struct Task *); -static u8 Fishing_ShowDots(struct Task *); -static u8 Fishing_CheckForBite(struct Task *); -static u8 Fishing_GotBite(struct Task *); -static u8 Fishing_WaitForA(struct Task *); -static u8 Fishing_CheckMoreDots(struct Task *); -static u8 Fishing_MonOnHook(struct Task *); -static u8 Fishing_StartEncounter(struct Task *); -static u8 Fishing_NotEvenNibble(struct Task *); -static u8 Fishing_GotAway(struct Task *); -static u8 Fishing_NoMon(struct Task *); -static u8 Fishing_PutRodAway(struct Task *); -static u8 Fishing_EndNoMon(struct Task *); +static void Task_Fishing(u8 taskId); +static u8 Fishing_Init(struct Task *task); +static u8 Fishing_GetRodOut(struct Task *task); +static u8 Fishing_WaitBeforeDots(struct Task *task); +static u8 Fishing_InitDots(struct Task *task); +static u8 Fishing_ShowDots(struct Task *task); +static u8 Fishing_CheckForBite(struct Task *task); +static u8 Fishing_GotBite(struct Task *task); +static u8 Fishing_WaitForA(struct Task *task); +static u8 Fishing_CheckMoreDots(struct Task *task); +static u8 Fishing_MonOnHook(struct Task *task); +static u8 Fishing_StartEncounter(struct Task *task); +static u8 Fishing_NotEvenNibble(struct Task *task); +static u8 Fishing_GotAway(struct Task *task); +static u8 Fishing_NoMon(struct Task *task); +static u8 Fishing_PutRodAway(struct Task *task); +static u8 Fishing_EndNoMon(struct Task *task); static void AlignFishingAnimationFrames(void); -static u8 TrySpinPlayerForWarp(struct ObjectEvent *, s16 *); +static u8 TrySpinPlayerForWarp(struct ObjectEvent *object, s16 *a1); static bool8 (*const sForcedMovementTestFuncs[NUM_FORCED_MOVEMENTS])(u8) = { @@ -638,7 +639,7 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) } if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) - && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0) + && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0 && !FollowerComingThroughDoor()) { FollowerPokeballSparkle(); PlayerRun(direction); @@ -1217,32 +1218,32 @@ void StopPlayerAvatar(void) } } -u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sRivalAvatarGfxIds[state][gender]; } -u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u16 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sPlayerAvatarGfxIds[state][gender]; } -u8 GetFRLGAvatarGraphicsIdByGender(u8 gender) +u16 GetFRLGAvatarGraphicsIdByGender(u8 gender) { return sFRLGAvatarGfxIds[gender]; } -u8 GetRSAvatarGraphicsIdByGender(u8 gender) +u16 GetRSAvatarGraphicsIdByGender(u8 gender) { return sRSAvatarGfxIds[gender]; } -u8 GetPlayerAvatarGraphicsIdByStateId(u8 state) +u16 GetPlayerAvatarGraphicsIdByStateId(u8 state) { return GetPlayerAvatarGraphicsIdByStateIdAndGender(state, gPlayerAvatar.gender); } -u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) +u8 unref_GetRivalAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1260,7 +1261,7 @@ u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) } } -u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) +u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1329,7 +1330,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) { u8 i; @@ -1341,7 +1342,7 @@ static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) return PLAYER_AVATAR_FLAG_ON_FOOT; } -u8 GetPlayerAvatarGraphicsIdByCurrentState(void) +u16 GetPlayerAvatarGraphicsIdByCurrentState(void) { u8 i; u8 flags = gPlayerAvatar.flags; @@ -1354,7 +1355,7 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void) return 0; } -void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 transitionFlag) +void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag) { u8 stateFlag = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender); @@ -1392,6 +1393,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) gPlayerAvatar.spriteId = objectEvent->spriteId; gPlayerAvatar.gender = gender; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT); + CreateFollowerAvatar(); } void SetPlayerInvisibility(bool8 invisible) @@ -1450,68 +1452,68 @@ static void HideShowWarpArrow(struct ObjectEvent *objectEvent) /* Strength */ -#define tState data[0] -#define tBoulderObjId data[1] -#define tDirection data[2] - -static void StartStrengthAnim(u8 objectEventId, u8 direction) +static void StartStrengthAnim(u8 a, u8 b) { u8 taskId = CreateTask(Task_PushBoulder, 0xFF); - gTasks[taskId].tBoulderObjId = objectEventId; - gTasks[taskId].tDirection = direction; + gTasks[taskId].data[1] = a; + gTasks[taskId].data[2] = b; Task_PushBoulder(taskId); } static void Task_PushBoulder(u8 taskId) { - while (sPushBoulderFuncs[gTasks[taskId].tState](&gTasks[taskId], + while (sPushBoulderFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId], - &gObjectEvents[gTasks[taskId].tBoulderObjId])) + &gObjectEvents[gTasks[taskId].data[1]])) ; } -static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) +static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) { ScriptContext2_Enable(); gPlayerAvatar.preventStep = TRUE; - task->tState++; + task->data[0]++; return FALSE; } -static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) +static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) { - if (ObjectEventIsHeldMovementActive(player)) - ObjectEventClearHeldMovementIfFinished(player); - - if (ObjectEventIsHeldMovementActive(boulder)) - ObjectEventClearHeldMovementIfFinished(boulder); - - if (!ObjectEventIsMovementOverridden(player) - && !ObjectEventIsMovementOverridden(boulder)) + if (ObjectEventIsHeldMovementActive(playerObject)) { - ObjectEventClearHeldMovementIfFinished(player); - ObjectEventClearHeldMovementIfFinished(boulder); - ObjectEventSetHeldMovement(player, GetWalkInPlaceNormalMovementAction((u8)task->tDirection)); - ObjectEventSetHeldMovement(boulder, GetWalkSlowMovementAction((u8)task->tDirection)); - gFieldEffectArguments[0] = boulder->currentCoords.x; - gFieldEffectArguments[1] = boulder->currentCoords.y; - gFieldEffectArguments[2] = boulder->previousElevation; - gFieldEffectArguments[3] = gSprites[boulder->spriteId].oam.priority; + ObjectEventClearHeldMovementIfFinished(playerObject); + } + + if (ObjectEventIsHeldMovementActive(strengthObject)) + { + ObjectEventClearHeldMovementIfFinished(strengthObject); + } + + if (!ObjectEventIsMovementOverridden(playerObject) + && !ObjectEventIsMovementOverridden(strengthObject)) + { + ObjectEventClearHeldMovementIfFinished(playerObject); + ObjectEventClearHeldMovementIfFinished(strengthObject); + ObjectEventSetHeldMovement(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2])); + ObjectEventSetHeldMovement(strengthObject, GetWalkSlowMovementAction((u8)task->data[2])); + gFieldEffectArguments[0] = strengthObject->currentCoords.x; + gFieldEffectArguments[1] = strengthObject->currentCoords.y; + gFieldEffectArguments[2] = strengthObject->previousElevation; + gFieldEffectArguments[3] = gSprites[strengthObject->spriteId].oam.priority; FieldEffectStart(FLDEFF_DUST); PlaySE(SE_M_STRENGTH); - task->tState++; + task->data[0]++; } return FALSE; } -static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) +static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) { - if (ObjectEventCheckHeldMovementStatus(player) - && ObjectEventCheckHeldMovementStatus(boulder)) + if (ObjectEventCheckHeldMovementStatus(playerObject) + && ObjectEventCheckHeldMovementStatus(strengthObject)) { - ObjectEventClearHeldMovementIfFinished(player); - ObjectEventClearHeldMovementIfFinished(boulder); + ObjectEventClearHeldMovementIfFinished(playerObject); + ObjectEventClearHeldMovementIfFinished(strengthObject); gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); DestroyTask(FindTaskIdByFunc(Task_PushBoulder)); @@ -1519,10 +1521,6 @@ static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *player, stru return FALSE; } -#undef tState -#undef tBoulderObjId -#undef tDirection - /* Some field effect */ static void DoPlayerMatJump(void) diff --git a/src/field_region_map.c b/src/field_region_map.c index adf5e4ed7..26ae736a6 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -192,7 +192,10 @@ static void FieldUpdateRegionMap(void) { FreeRegionMapIconResources(); SetMainCallback2(sFieldRegionMapHandler->callback); - TRY_FREE_AND_SET_NULL(sFieldRegionMapHandler); + if (sFieldRegionMapHandler != NULL) + { + FREE_AND_SET_NULL(sFieldRegionMapHandler); + } FreeAllWindowBuffers(); } break; diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 77553542a..119f20dea 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -27,6 +27,7 @@ #include "sound.h" #include "start_menu.h" #include "task.h" +#include "follow_me.h" #include "text.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" @@ -42,8 +43,6 @@ static void FillPalBufferWhite(void); static void Task_ExitDoor(u8); static bool32 WaitForWeatherFadeIn(void); static void Task_SpinEnterWarp(u8 taskId); -static void Task_WarpAndLoadMap(u8 taskId); -static void Task_DoDoorWarp(u8 taskId); static void Task_EnableScriptAfterMusicFade(u8 taskId); // data[0] is used universally by tasks in this file as a state for switches @@ -53,7 +52,7 @@ static void Task_EnableScriptAfterMusicFade(u8 taskId); static const u16 sFlashLevelToRadius[] = { 200, 72, 64, 56, 48, 40, 32, 24, 0 }; const s32 gMaxFlashLevel = ARRAY_COUNT(sFlashLevelToRadius) - 1; -static const struct ScanlineEffectParams sFlashEffectParams = +const struct ScanlineEffectParams sFlashEffectParams = { ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -111,7 +110,7 @@ void WarpFadeOutScreen(void) } } -static void SetPlayerVisibility(bool8 visible) +void SetPlayerVisibility(bool8 visible) { SetPlayerInvisibility(!visible); } @@ -275,6 +274,7 @@ void FieldCB_DefaultWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); SetUpWarpExitTask(); + FollowMe_WarpSetEnd(); ScriptContext2_Enable(); } @@ -323,6 +323,7 @@ static void Task_ExitDoor(u8 taskId) switch (task->tState) { case 0: + HideFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -352,6 +353,8 @@ static void Task_ExitDoor(u8 taskId) case 3: if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) { + FollowMe_SetIndicatorToComeOutDoor(); + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 4; } @@ -372,6 +375,7 @@ static void Task_ExitNonAnimDoor(u8 taskId) switch (task->tState) { case 0: + HideFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -390,6 +394,8 @@ static void Task_ExitNonAnimDoor(u8 taskId) case 2: if (IsPlayerStandingStill()) { + FollowMe_SetIndicatorToComeOutDoor(); + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 3; } @@ -644,7 +650,7 @@ void ReturnFromLinkRoom(void) CreateTask(Task_ReturnToWorldFromLinkRoom, 10); } -static void Task_WarpAndLoadMap(u8 taskId) +void Task_WarpAndLoadMap(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -675,59 +681,6 @@ static void Task_WarpAndLoadMap(u8 taskId) } } -static void Task_DoDoorWarp(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - s16 *x = &task->data[2]; - s16 *y = &task->data[3]; - - switch (task->tState) - { - case 0: - FreezeObjectEvents(); - PlayerGetDestCoords(x, y); - PlaySE(GetDoorSoundEffect(*x, *y - 1)); - task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); - task->tState = 1; - break; - case 1: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) - { - u8 objEventId; - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventClearHeldMovementIfActive(&gObjectEvents[objEventId]); - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_WALK_NORMAL_UP); - task->tState = 2; - } - break; - case 2: - if (IsPlayerStandingStill()) - { - u8 objEventId; - task->data[1] = FieldAnimateDoorClose(*x, *y - 1); - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]); - SetPlayerVisibility(FALSE); - task->tState = 3; - } - break; - case 3: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) - { - task->tState = 4; - } - break; - case 4: - TryFadeOutOldMapMusic(); - WarpFadeOutScreen(); - PlayRainStoppingSoundEffect(); - task->tState = 0; - task->func = Task_WarpAndLoadMap; - break; - } -} - static void Task_DoContestHallWarp(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1011,6 +964,7 @@ static void Task_SpinEnterWarp(u8 taskId) case 1: if (WaitForWeatherFadeIn() && IsPlayerSpinEntranceActive() != TRUE) { + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); ScriptContext2_Disable(); DestroyTask(taskId); diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 749346728..d8b9eb05d 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -19,19 +19,7 @@ #include "constants/songs.h" #include "constants/metatile_labels.h" -// Most of the boxes in the moving truck are map tiles, with the -// exception of three boxes that are map events that jostle around -// while the truck is driving. In addition, their sprite's placement -// is slightly offset to make them look less perfectly stacked. -// Box 1 (LOCALID_TRUCK_BOX_TOP) -#define BOX1_X_OFFSET 3 -#define BOX1_Y_OFFSET 3 -// Box 2 (LOCALID_TRUCK_BOX_BOTTOM_L) -#define BOX2_X_OFFSET 0 -#define BOX2_Y_OFFSET -3 -// Box 3 (LOCALID_TRUCK_BOX_BOTTOM_R) -#define BOX3_X_OFFSET -3 -#define BOX3_Y_OFFSET 0 +#define SECONDS(value) ((signed) (60.0 * value + 0.5)) // porthole states enum @@ -42,7 +30,8 @@ enum EXIT_PORTHOLE, }; -static const s8 sTruckCamera_HorizontalTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, -1, -1, -1, 0}; +//. rodata +static const s8 gTruckCamera_HorizontalTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, -1, -1, -1, 0}; static const u8 sSSTidalSailEastMovementScript[] = { @@ -56,194 +45,175 @@ static const u8 sSSTidalSailWestMovementScript[] = MOVEMENT_ACTION_STEP_END }; +// .text static void Task_Truck3(u8); -static s16 GetTruckCameraBobbingY(int time) +s16 GetTruckCameraBobbingY(int a1) { - if (!(time % 120)) + if (!(a1 % 120)) return -1; - else if ((time % 10) <= 4) + else if ((a1 % 10) <= 4) return 1; return 0; } -// Determines the frequency that the truck boxes bounce at. -// The return value of this function is multiplied and added -// to the boxes resting y offset, the result of which is that -// when it returns 0 they remain vertically still and when it -// returns -1 they jump upward. -// Box 1 has 30 added to the time so it jumps earlier, and -// box 2 has the return value multiplied by less, so it doesn't -// jump as high. -static s16 GetTruckBoxYMovement(int time) +s16 GetTruckBoxMovement(int a1) // for the box movement? { - if (!((time + 120) % 180)) + if (!((a1 + 120) % 180)) return -1; return 0; } -#define tTimer data[0] - -static void Task_Truck1(u8 taskId) +void Task_Truck1(u8 taskId) { s16 *data = gTasks[taskId].data; s16 cameraXpan = 0, cameraYpan = 0; - s16 yBox1, yBox2, yBox3; + s16 box1, box2, box3; - yBox1 = GetTruckBoxYMovement(tTimer + 30) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + yBox1); - yBox2 = GetTruckBoxYMovement(tTimer) * 2; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + yBox2); - yBox3 = GetTruckBoxYMovement(tTimer) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + yBox3); + box1 = GetTruckBoxMovement(data[0] + 30) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); + box2 = GetTruckBoxMovement(data[0]) * 2; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); + box3 = GetTruckBoxMovement(data[0]) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); - // Arbitrary timer limit that won't be reached - if (++tTimer == 30000) - tTimer = 0; + if (++data[0] == SECONDS(500)) // this will never run + data[0] = 0; // reset the timer if it gets stuck. - cameraYpan = GetTruckCameraBobbingY(tTimer); + cameraYpan = GetTruckCameraBobbingY(data[0]); SetCameraPanning(cameraXpan, cameraYpan); } -#undef tTimer - -#define tTimerHorizontal data[0] -#define tMoveStep data[1] -#define tTimerVertical data[2] - -static void Task_Truck2(u8 taskId) +void Task_Truck2(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraYpan, cameraXpan; - s16 yBox1, yBox2, yBox3; + s16 cameraYpan; + s16 cameraXpan; + s16 box1; + s16 box2; + s16 box3; - tTimerHorizontal++; - tTimerVertical++; + data[0]++; + data[2]++; - if (tTimerHorizontal > 5) + if (data[0] > 5) { - tTimerHorizontal = 0; - tMoveStep++; + data[0] = 0; + data[1]++; } - if ((u16)tMoveStep == ARRAY_COUNT(sTruckCamera_HorizontalTable)) + if ((u16)data[1] == 19) { - // Never reached, the task function is changed below before finishing the table DestroyTask(taskId); } else { - if (sTruckCamera_HorizontalTable[tMoveStep] == 2) + if (gTruckCamera_HorizontalTable[data[1]] == 2) gTasks[taskId].func = Task_Truck3; - cameraXpan = sTruckCamera_HorizontalTable[tMoveStep]; - cameraYpan = GetTruckCameraBobbingY(tTimerVertical); + cameraXpan = gTruckCamera_HorizontalTable[data[1]]; + cameraYpan = GetTruckCameraBobbingY(data[2]); SetCameraPanning(cameraXpan, cameraYpan); - yBox1 = GetTruckBoxYMovement(tTimerVertical + 30) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + yBox1); - yBox2 = GetTruckBoxYMovement(tTimerVertical) * 2; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + yBox2); - yBox3 = GetTruckBoxYMovement(tTimerVertical) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + yBox3); + box1 = GetTruckBoxMovement(data[2] + 30) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); + box2 = GetTruckBoxMovement(data[2]) * 2; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); + box3 = GetTruckBoxMovement(data[2]) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); } } static void Task_Truck3(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraXpan, cameraYpan; + s16 cameraXpan; + s16 cameraYpan; - tTimerHorizontal++; + data[0]++; - if (tTimerHorizontal > 5) + if (data[0] > 5) { - tTimerHorizontal = 0; - tMoveStep++; + data[0] = 0; + data[1]++; } - if ((u16)tMoveStep == ARRAY_COUNT(sTruckCamera_HorizontalTable)) + if ((u16)data[1] == 19) { DestroyTask(taskId); } else { - cameraXpan = sTruckCamera_HorizontalTable[tMoveStep]; + cameraXpan = gTruckCamera_HorizontalTable[data[1]]; cameraYpan = 0; - SetCameraPanning(cameraXpan, cameraYpan); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + cameraYpan); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + cameraYpan); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + cameraYpan); + SetCameraPanning(cameraXpan, 0); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan); } } -#undef tTimerHorizontal -#undef tMoveStep -#undef tTimerVertical - -#define tState data[0] -#define tTimer data[1] -#define tTaskId1 data[2] -#define tTaskId2 data[3] - -static void Task_HandleTruckSequence(u8 taskId) +void Task_HandleTruckSequence(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (tState) + switch (data[0]) { + /* + Each case has a timer which is handled with data[1], incrementing + until it reaches the if function's condition, which sets the next task up. + */ case 0: - tTimer++; - if (tTimer == 90) + data[1]++; + if (data[1] == SECONDS(1.5)) { SetCameraPanningCallback(NULL); - tTimer = 0; - tTaskId1 = CreateTask(Task_Truck1, 0xA); - tState = 1; + data[1] = 0; // reset the timer. + data[2] = CreateTask(Task_Truck1, 0xA); + data[0] = 1; // run the next case. PlaySE(SE_TRUCK_MOVE); } break; case 1: - tTimer++; - if (tTimer == 150) + data[1]++; + if (data[1] == SECONDS(2.5)) { FadeInFromBlack(); - tTimer = 0; - tState = 2; + data[1] = 0; + data[0] = 2; } break; case 2: - tTimer++; - if (!gPaletteFade.active && tTimer > 300) + data[1]++; + if (!gPaletteFade.active && data[1] > SECONDS(5)) { - tTimer = 0; - DestroyTask(tTaskId1); - tTaskId2 = CreateTask(Task_Truck2, 0xA); - tState = 3; + data[1] = 0; + DestroyTask(data[2]); + data[3] = CreateTask(Task_Truck2, 0xA); + data[0] = 3; PlaySE(SE_TRUCK_STOP); } break; case 3: - if (!gTasks[tTaskId2].isActive) + if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?) { - // Task_Truck2 / Task_Truck3 has finished InstallCameraPanAheadCallback(); - tTimer = 0; - tState = 4; + data[1] = 0; + data[0] = 4; } break; case 4: - tTimer++; - if (tTimer == 90) + data[1]++; + if (data[1] == 90) { PlaySE(SE_TRUCK_UNLOAD); - tTimer = 0; - tState = 5; + data[1] = 0; + data[0] = 5; } break; case 5: - tTimer++; - if (tTimer == 120) + data[1]++; + if (data[1] == 120) { MapGridSetMetatileIdAt(4 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_InsideOfTruck_ExitLight_Top); MapGridSetMetatileIdAt(4 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_InsideOfTruck_ExitLight_Mid); @@ -272,9 +242,9 @@ void EndTruckSequence(u8 taskId) { if (!FuncIsActiveTask(Task_HandleTruckSequence)) { - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET, BOX1_Y_OFFSET); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET, BOX2_Y_OFFSET); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET, BOX3_Y_OFFSET); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0); } } @@ -289,7 +259,7 @@ bool8 TrySetPortholeWarpDestination(void) } else { - SetWarpDestination(mapGroup, mapNum, WARP_ID_NONE, x, y); + SetWarpDestination(mapGroup, mapNum, -1, x, y); return TRUE; } } diff --git a/src/field_specials.c b/src/field_specials.c index 4ed2a2e03..370d5136c 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -90,44 +90,44 @@ void SetPlayerGotFirstFans(void); u16 GetNumFansOfPlayerInTrainerFanClub(void); static void RecordCyclingRoadResults(u32, u8); -static void LoadLinkPartnerObjectEventSpritePalette(u8, u8, u8); -static void Task_PetalburgGymSlideOpenRoomDoors(u8); -static void PetalburgGymSetDoorMetatiles(u8, u16); +static void LoadLinkPartnerObjectEventSpritePalette(u16 graphicsId, u8 localEventId, u8 paletteNum); +static void Task_PetalburgGymSlideOpenRoomDoors(u8 taskId); +static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId); static void Task_PCTurnOnEffect(u8); static void PCTurnOnEffect_0(struct Task *); static void PCTurnOnEffect_1(s16, s8, s8); static void PCTurnOffEffect(void); static void Task_LotteryCornerComputerEffect(u8); static void LotteryCornerComputerEffect(struct Task *); -static void Task_ShakeCamera(u8); -static void StopCameraShake(u8); -static void Task_MoveElevator(u8); -static void MoveElevatorWindowLights(u16, bool8); -static void Task_MoveElevatorWindowLights(u8); -static void Task_ShowScrollableMultichoice(u8); -static void FillFrontierExchangeCornerWindowAndItemIcon(u16, u16); -static void ShowBattleFrontierTutorWindow(u8, u16); +static void Task_ShakeCamera(u8 taskId); +static void StopCameraShake(u8 taskId); +static void Task_MoveElevator(u8 taskId); +static void MoveElevatorWindowLights(u16 floorDelta, bool8 descending); +static void Task_MoveElevatorWindowLights(u8 taskId); +static void Task_ShowScrollableMultichoice(u8 taskId); +static void FillFrontierExchangeCornerWindowAndItemIcon(u16 menu, u16 selection); +static void ShowBattleFrontierTutorWindow(u8 menu, u16 selection); static void InitScrollableMultichoice(void); -static void ScrollableMultichoice_ProcessInput(u8); -static void ScrollableMultichoice_UpdateScrollArrows(u8); -static void ScrollableMultichoice_MoveCursor(s32, bool8, struct ListMenu *); -static void HideFrontierExchangeCornerItemIcon(u16, u16); -static void ShowBattleFrontierTutorMoveDescription(u8, u16); -static void CloseScrollableMultichoice(u8); -static void ScrollableMultichoice_RemoveScrollArrows(u8); -static void Task_ScrollableMultichoice_WaitReturnToList(u8); -static void Task_ScrollableMultichoice_ReturnToList(u8); -static void ShowFrontierExchangeCornerItemIcon(u16); -static void Task_DeoxysRockInteraction(u8); -static void ChangeDeoxysRockLevel(u8); -static void WaitForDeoxysRockMovement(u8); -static void Task_LinkRetireStatusWithBattleTowerPartner(u8); -static void Task_LoopWingFlapSE(u8); -static void Task_CloseBattlePikeCurtain(u8); +static void ScrollableMultichoice_ProcessInput(u8 taskId); +static void ScrollableMultichoice_UpdateScrollArrows(u8 taskId); +static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused); +static void ShowBattleFrontierTutorMoveDescription(u8 menu, u16 selection); +static void CloseScrollableMultichoice(u8 taskId); +static void ScrollableMultichoice_RemoveScrollArrows(u8 taskId); +static void Task_ScrollableMultichoice_WaitReturnToList(u8 taskId); +static void Task_ScrollableMultichoice_ReturnToList(u8 taskId); +static void ShowFrontierExchangeCornerItemIcon(u16 item); +static void Task_DeoxysRockInteraction(u8 taskId); +static void ChangeDeoxysRockLevel(u8 a0); +static void WaitForDeoxysRockMovement(u8 taskId); +static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId); +static void Task_LoopWingFlapSE(u8 taskId); +static void Task_CloseBattlePikeCurtain(u8 taskId); static u8 DidPlayerGetFirstFans(void); static void SetInitialFansOfPlayer(void); static u16 PlayerGainRandomTrainerFan(void); -static void BufferFanClubTrainerName_(struct LinkBattleRecords *, u8, u8); +static void BufferFanClubTrainerName_(struct LinkBattleRecords *linkRecords, u8 a, u8 b); void Special_ShowDiploma(void) { @@ -502,7 +502,7 @@ void SpawnLinkPartnerObjectEvent(void) }; u8 myLinkPlayerNumber; u8 playerFacingDirection; - u8 linkSpriteId; + u16 linkSpriteId; u8 i; myLinkPlayerNumber = GetMultiplayerId(); @@ -563,7 +563,7 @@ void SpawnLinkPartnerObjectEvent(void) } } -static void LoadLinkPartnerObjectEventSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum) +static void LoadLinkPartnerObjectEventSpritePalette(u16 graphicsId, u8 localEventId, u8 paletteNum) { u8 adjustedPaletteNum; // Note: This temp var is necessary; paletteNum += 6 doesn't match. @@ -1497,6 +1497,21 @@ u8 GetLeadMonIndex(void) return 0; } +u8 GetLeadMonNotFaintedIndex(void) +{ + u8 i; + u8 partyCount = CalculatePlayerPartyCount(); + for(i = 0; i < partyCount; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0 + && GetMonData(&gPlayerParty[i], MON_DATA_HP, NULL) != 0) + { + return i; + } + } + return 0; +} + u16 ScriptGetPartyMonSpecies(void) { return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL); diff --git a/src/field_weather.c b/src/field_weather.c index 31cd4abf3..dfd96ee2b 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -65,7 +65,7 @@ static const u8 *sPaletteGammaTypes; // The drought weather effect uses a precalculated color lookup table. Presumably this // is because the underlying color shift calculation is slow. -static const u16 sDroughtWeatherColors[][0x1000] = { +const u16 sDroughtWeatherColors[][0x1000] = { INCBIN_U16("graphics/weather/drought/colors_0.bin"), INCBIN_U16("graphics/weather/drought/colors_1.bin"), INCBIN_U16("graphics/weather/drought/colors_2.bin"), @@ -859,10 +859,10 @@ void LoadCustomWeatherSpritePalette(const struct SpritePalette *palette) UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); } -static void LoadDroughtWeatherPalette(u8 *palsIndex, u8 *palsOffset) +static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) { - *palsIndex = 0x20; - *palsOffset = 0x20; + *gammaIndexPtr = 0x20; + *a1 = 0x20; } void ResetDroughtWeatherPaletteLoading(void) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index bd6b9497d..cefe0da55 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -14,9 +14,11 @@ #include "trig.h" #include "gpu_regs.h" -EWRAM_DATA static u8 sCurrentAbnormalWeather = 0; -EWRAM_DATA static u16 sUnusedWeatherRelated = 0; +// EWRAM +EWRAM_DATA static u8 gCurrentAbnormalWeather = 0; +EWRAM_DATA static u16 gUnusedWeatherRelated = 0; +// CONST const u16 gCloudsWeatherPalette[] = INCBIN_U16("graphics/weather/cloud.gbapal"); const u16 gSandstormWeatherPalette[] = INCBIN_U16("graphics/weather/sandstorm.gbapal"); const u8 gWeatherFogDiagonalTiles[] = INCBIN_U8("graphics/weather/fog_diagonal.4bpp"); @@ -1819,7 +1821,7 @@ static void UpdateFogDiagonalMovement(void) gWeatherPtr->fogDPosY = gSpriteCoordOffsetY + gWeatherPtr->fogDYOffset; } -static const struct SpriteSheet sFogDiagonalSpriteSheet = +static const struct SpriteSheet gFogDiagonalSpriteSheet = { .data = gWeatherFogDiagonalTiles, .size = sizeof(gWeatherFogDiagonalTiles), @@ -1874,7 +1876,7 @@ static void CreateFogDiagonalSprites(void) if (!gWeatherPtr->fogDSpritesCreated) { - fogDiagonalSpriteSheet = sFogDiagonalSpriteSheet; + fogDiagonalSpriteSheet = gFogDiagonalSpriteSheet; LoadSpriteSheet(&fogDiagonalSpriteSheet); LoadCustomWeatherSpritePalette(&sFogSpritePalette); for (i = 0; i < NUM_FOG_DIAGONAL_SPRITES; i++) @@ -2432,39 +2434,34 @@ static void UpdateBubbleSprite(struct Sprite *sprite) //------------------------------------------------------------------------------ // Unused function. -static void UnusedSetCurrentAbnormalWeather(u32 weather, u32 unknown) +static void UnusedSetCurrentAbnormalWeather(u32 a0, u32 a1) { - sCurrentAbnormalWeather = weather; - sUnusedWeatherRelated = unknown; + gCurrentAbnormalWeather = a0; + gUnusedWeatherRelated = a1; } -#define tState data[0] -#define tWeatherA data[1] -#define tWeatherB data[2] -#define tDelay data[15] - static void Task_DoAbnormalWeather(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (tState) + switch (data[0]) { case 0: - if (tDelay-- <= 0) + if (data[15]-- <= 0) { - SetNextWeather(tWeatherA); - sCurrentAbnormalWeather = tWeatherA; - tDelay = 600; - tState++; + SetNextWeather(data[1]); + gCurrentAbnormalWeather = data[1]; + data[15] = 600; + data[0]++; } break; case 1: - if (tDelay-- <= 0) + if (data[15]-- <= 0) { - SetNextWeather(tWeatherB); - sCurrentAbnormalWeather = tWeatherB; - tDelay = 600; - tState = 0; + SetNextWeather(data[2]); + gCurrentAbnormalWeather = data[2]; + data[15] = 600; + data[0] = 0; } break; } @@ -2475,33 +2472,25 @@ static void CreateAbnormalWeatherTask(void) u8 taskId = CreateTask(Task_DoAbnormalWeather, 0); s16 *data = gTasks[taskId].data; - tDelay = 600; - if (sCurrentAbnormalWeather == WEATHER_DOWNPOUR) + data[15] = 600; + if (gCurrentAbnormalWeather == WEATHER_DOWNPOUR) { - // Currently Downpour, next will be Drought - tWeatherA = WEATHER_DROUGHT; - tWeatherB = WEATHER_DOWNPOUR; + data[1] = WEATHER_DROUGHT; + data[2] = WEATHER_DOWNPOUR; } - else if (sCurrentAbnormalWeather == WEATHER_DROUGHT) + else if (gCurrentAbnormalWeather == WEATHER_DROUGHT) { - // Currently Drought, next will be Downpour - tWeatherA = WEATHER_DOWNPOUR; - tWeatherB = WEATHER_DROUGHT; + data[1] = WEATHER_DOWNPOUR; + data[2] = WEATHER_DROUGHT; } else { - // Default to starting with Downpour - sCurrentAbnormalWeather = WEATHER_DOWNPOUR; - tWeatherA = WEATHER_DROUGHT; - tWeatherB = WEATHER_DOWNPOUR; + gCurrentAbnormalWeather = WEATHER_DOWNPOUR; + data[1] = WEATHER_DROUGHT; + data[2] = WEATHER_DOWNPOUR; } } -#undef tState -#undef tWeatherA -#undef tWeatherB -#undef tDelay - static u8 TranslateWeatherNum(u8); static void UpdateRainCounter(u8, u8); @@ -2544,13 +2533,13 @@ void DoCurrentWeather(void) { if (!FuncIsActiveTask(Task_DoAbnormalWeather)) CreateAbnormalWeatherTask(); - weather = sCurrentAbnormalWeather; + weather = gCurrentAbnormalWeather; } else { if (FuncIsActiveTask(Task_DoAbnormalWeather)) DestroyTask(FindTaskIdByFunc(Task_DoAbnormalWeather)); - sCurrentAbnormalWeather = WEATHER_DOWNPOUR; + gCurrentAbnormalWeather = WEATHER_DOWNPOUR; } SetNextWeather(weather); } @@ -2563,13 +2552,13 @@ void ResumePausedWeather(void) { if (!FuncIsActiveTask(Task_DoAbnormalWeather)) CreateAbnormalWeatherTask(); - weather = sCurrentAbnormalWeather; + weather = gCurrentAbnormalWeather; } else { if (FuncIsActiveTask(Task_DoAbnormalWeather)) DestroyTask(FindTaskIdByFunc(Task_DoAbnormalWeather)); - sCurrentAbnormalWeather = WEATHER_DOWNPOUR; + gCurrentAbnormalWeather = WEATHER_DOWNPOUR; } SetCurrentAndNextWeather(weather); } diff --git a/src/fieldmap.c b/src/fieldmap.c index a02355e72..4dbf981cf 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -25,10 +25,10 @@ struct ConnectionFlags u8 east:1; }; -EWRAM_DATA static u16 sBackupMapData[MAX_MAP_DATA_SIZE] = {0}; +EWRAM_DATA static u16 gBackupMapData[MAX_MAP_DATA_SIZE] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; EWRAM_DATA struct Camera gCamera = {0}; -EWRAM_DATA static struct ConnectionFlags sMapConnectionFlags = {0}; +EWRAM_DATA static struct ConnectionFlags gMapConnectionFlags = {0}; EWRAM_DATA static u32 sFiller = 0; // without this, the next file won't align properly struct BackupMapLayout gBackupMapLayout; @@ -87,14 +87,14 @@ void InitMapFromSavedGame(void) void InitBattlePyramidMap(bool8 setPlayerPosition) { - CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); - GenerateBattlePyramidFloorLayout(sBackupMapData, setPlayerPosition); + CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + GenerateBattlePyramidFloorLayout(gBackupMapData, setPlayerPosition); } void InitTrainerHillMap(void) { - CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); - GenerateTrainerHillFloorLayout(sBackupMapData); + CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + GenerateTrainerHillFloorLayout(gBackupMapData); } static void InitMapLayoutData(struct MapHeader *mapHeader) @@ -103,8 +103,8 @@ static void InitMapLayoutData(struct MapHeader *mapHeader) int width; int height; mapLayout = mapHeader->mapLayout; - CpuFastFill16(MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); - gBackupMapLayout.map = sBackupMapData; + CpuFastFill16(MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + gBackupMapLayout.map = gBackupMapData; width = mapLayout->width + MAP_OFFSET_W; gBackupMapLayout.width = width; height = mapLayout->height + MAP_OFFSET_H; @@ -140,7 +140,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { count = mapHeader->connections->count; connection = mapHeader->connections->connections; - sMapConnectionFlags = sDummyConnectionFlags; + gMapConnectionFlags = sDummyConnectionFlags; for (i = 0; i < count; i++, connection++) { struct MapHeader const *cMap = GetMapHeaderFromConnection(connection); @@ -149,19 +149,19 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { case CONNECTION_SOUTH: FillSouthConnection(mapHeader, cMap, offset); - sMapConnectionFlags.south = TRUE; + gMapConnectionFlags.south = TRUE; break; case CONNECTION_NORTH: FillNorthConnection(mapHeader, cMap, offset); - sMapConnectionFlags.north = TRUE; + gMapConnectionFlags.north = TRUE; break; case CONNECTION_WEST: FillWestConnection(mapHeader, cMap, offset); - sMapConnectionFlags.west = TRUE; + gMapConnectionFlags.west = TRUE; break; case CONNECTION_EAST: FillEastConnection(mapHeader, cMap, offset); - sMapConnectionFlags.east = TRUE; + gMapConnectionFlags.east = TRUE; break; } } @@ -436,7 +436,7 @@ void SaveMapView(void) for (i = y; i < y + MAP_OFFSET_H; i++) { for (j = x; j < x + MAP_OFFSET_W; j++) - *mapView++ = sBackupMapData[width * i + j]; + *mapView++ = gBackupMapData[width * i + j]; } } @@ -491,8 +491,8 @@ static void LoadSavedMapView(void) for (j = x; j < x + MAP_OFFSET_W; j++) { - if (!SkipCopyingMetatileFromSavedMap(&sBackupMapData[j + width * i], width, yMode)) - sBackupMapData[j + width * i] = *mapView; + if (!SkipCopyingMetatileFromSavedMap(&gBackupMapData[j + width * i], width, yMode)) + gBackupMapData[j + width * i] = *mapView; mapView++; } } @@ -554,7 +554,7 @@ static void MoveMapViewToBackup(u8 direction) desti = width * (y + y0); srci = (y + r8) * MAP_OFFSET_W + r9; src = &mapView[srci + i]; - dest = &sBackupMapData[x0 + desti + j]; + dest = &gBackupMapData[x0 + desti + j]; *dest = *src; i++; j++; @@ -570,28 +570,28 @@ int GetMapBorderIdAt(int x, int y) if (x >= (gBackupMapLayout.width - (MAP_OFFSET + 1))) { - if (!sMapConnectionFlags.east) + if (!gMapConnectionFlags.east) return CONNECTION_INVALID; return CONNECTION_EAST; } else if (x < MAP_OFFSET) { - if (!sMapConnectionFlags.west) + if (!gMapConnectionFlags.west) return CONNECTION_INVALID; return CONNECTION_WEST; } else if (y >= (gBackupMapLayout.height - MAP_OFFSET)) { - if (!sMapConnectionFlags.south) + if (!gMapConnectionFlags.south) return CONNECTION_INVALID; return CONNECTION_SOUTH; } else if (y < MAP_OFFSET) { - if (!sMapConnectionFlags.north) + if (!gMapConnectionFlags.north) return CONNECTION_INVALID; return CONNECTION_NORTH; diff --git a/src/frontier_util.c b/src/frontier_util.c index f5dde452f..03d7b0cb5 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -29,7 +29,6 @@ #include "load_save.h" #include "battle_dome.h" #include "constants/battle_frontier.h" -#include "constants/battle_pike.h" #include "constants/frontier_util.h" #include "constants/trainers.h" #include "constants/game_stat.h" @@ -500,94 +499,94 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ static const u8 sBattlePointAwards[][NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUNT] = { { - {1, 2, 3, 3}, {1, 1}, {4, 5}, {1}, {3, 4}, {1}, {5} + {1, 2, 3, 3}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0} }, { - {2, 3, 4, 4}, {1, 1}, {4, 5}, {1}, {3, 4}, {1}, {5} + {2, 3, 4, 4}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0} }, { - {3, 4, 5, 5}, {2, 2}, {5, 6}, {1}, {4, 5}, {2}, {6} + {3, 4, 5, 5}, {2, 2, 0, 0}, {5, 6, 0, 0}, {1, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0} }, { - {4, 5, 6, 6}, {2, 2}, {5, 6}, {2}, {4, 5}, {2}, {6} + {4, 5, 6, 6}, {2, 2, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0} }, { - {5, 6, 7, 7}, {3, 3}, {6, 7}, {2}, {5, 6}, {2}, {7} + {5, 6, 7, 7}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {7, 0, 0, 0} }, { - {6, 7, 8, 8}, {3, 3}, {6, 7}, {2}, {5, 6}, {4}, {7} + {6, 7, 8, 8}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {4, 0, 0, 0}, {7, 0, 0, 0} }, { - {7, 8, 9, 9}, {4, 4}, {7, 8}, {3}, {6, 7}, {4}, {8} + {7, 8, 9, 9}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0}, {6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0} }, { - {8, 9, 10, 10}, {4, 4}, {7, 8}, {3},{6, 7}, {4}, {8} + {8, 9, 10, 10}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0},{6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0} }, { - {9, 10, 11, 11}, {5, 5}, {8, 9}, {4}, {7, 8}, {8}, {9} + {9, 10, 11, 11}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0} }, { - {10, 11, 12, 12}, {5, 5}, {8, 9}, {4}, {7, 8}, {8}, {9} + {10, 11, 12, 12}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0} }, { - {11, 12, 13, 13}, {6, 6}, {9, 10}, {5,0}, {8, 9}, {8}, {10} + {11, 12, 13, 13}, {6, 6, 0, 0}, {9, 10, 0, 0}, {5, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0} }, { - {12, 13, 14, 14}, {6, 6}, {9, 10}, {6,0}, {8, 9}, {8}, {10} + {12, 13, 14, 14}, {6, 6, 0, 0}, {9, 10, 0, 0}, {6, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0} }, { - {13, 14, 15, 15}, {7, 7}, {10, 11}, {7}, {9, 10}, {10}, {11} + {13, 14, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {7, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0} }, { - {14, 15, 15, 15}, {7, 7}, {10, 11}, {8}, {9, 10}, {10}, {11} + {14, 15, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {8, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0} }, { - {15, 15, 15, 15}, {8, 8}, {11, 12}, {9}, {10, 11}, {10}, {12} + {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {9, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0} }, { - {15, 15, 15, 15}, {8, 8}, {11, 12}, {10}, {10, 11}, {10}, {12} + {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {10, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0} }, { - {15, 15, 15, 15}, {9, 9}, {12, 13}, {11}, {11, 12}, {12}, {13} + {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {11, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0} }, { - {15, 15, 15, 15}, {9, 9}, {12, 13}, {12}, {11, 12}, {12}, {13} + {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0} }, { - {15, 15, 15, 15}, {10, 10}, {13, 14}, {13}, {12, 13}, {12}, {14} + {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {13, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0} }, { - {15, 15, 15, 15}, {10, 10}, {13, 14}, {14}, {12, 13}, {12}, {14} + {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0} }, { - {15, 15, 15, 15}, {11, 11}, {14, 15}, {15}, {13, 14}, {12}, {15} + {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {12, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {11, 11}, {14, 15}, {15}, {13, 14}, {14}, {15} + {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {12, 12}, {15, 15}, {15}, {14, 15}, {14}, {15} + {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {12, 12}, {15, 15}, {15}, {14, 15}, {14}, {15} + {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {13, 13}, {15, 15}, {15}, {15, 15}, {14}, {15} + {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {13, 13}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {14, 14}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {14, 14}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {15, 15}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {15, 15}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, }; @@ -595,13 +594,13 @@ static const u8 sBattlePointAwards[][NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUN // First bit is has battled them before and not won yet, second bit is has battled them and won (obtained a Symbol) static const u16 sBattledBrainBitFlags[NUM_FRONTIER_FACILITIES][2] = { - [FRONTIER_FACILITY_TOWER] = {1 << 0, 1 << 1}, - [FRONTIER_FACILITY_DOME] = {1 << 2, 1 << 3}, - [FRONTIER_FACILITY_PALACE] = {1 << 4, 1 << 5}, - [FRONTIER_FACILITY_ARENA] = {1 << 6, 1 << 7}, - [FRONTIER_FACILITY_FACTORY] = {1 << 8, 1 << 9}, - [FRONTIER_FACILITY_PIKE] = {1 << 10, 1 << 11}, - [FRONTIER_FACILITY_PYRAMID] = {1 << 12, 1 << 13}, + [FRONTIER_FACILITY_TOWER] = {0x0001, 0x0002}, + [FRONTIER_FACILITY_DOME] = {0x0004, 0x0008}, + [FRONTIER_FACILITY_PALACE] = {0x0010, 0x0020}, + [FRONTIER_FACILITY_ARENA] = {0x0040, 0x0080}, + [FRONTIER_FACILITY_FACTORY] = {0x0100, 0x0200}, + [FRONTIER_FACILITY_PIKE] = {0x0400, 0x0800}, + [FRONTIER_FACILITY_PYRAMID] = {0x1000, 0x2000}, }; static void (* const sFrontierUtilFuncs[])(void) = @@ -636,8 +635,8 @@ static const struct WindowTemplate sFrontierResultsWindowTemplate = .bg = 0, .tilemapLeft = 1, .tilemapTop = 1, - .width = 28, - .height = 18, + .width = 0x1c, + .height = 0x12, .paletteNum = 15, .baseBlock = 1 }; @@ -647,7 +646,7 @@ static const struct WindowTemplate sLinkContestResultsWindowTemplate = .bg = 0, .tilemapLeft = 2, .tilemapTop = 2, - .width = 26, + .width = 0x1a, .height = 15, .paletteNum = 15, .baseBlock = 1 @@ -658,7 +657,7 @@ static const struct WindowTemplate sRankingHallRecordsWindowTemplate = .bg = 0, .tilemapLeft = 2, .tilemapTop = 1, - .width = 26, + .width = 0x1a, .height = 17, .paletteNum = 15, .baseBlock = 1 @@ -959,7 +958,7 @@ static bool8 IsWinStreakActive(u32 challenge) static void PrintAligned(const u8 *str, s32 y) { - s32 x = GetStringCenterAlignXOffset(FONT_NORMAL, str, DISPLAY_WIDTH - 16); + s32 x = GetStringCenterAlignXOffset(FONT_NORMAL, str, 224); y = (y * 8) + 1; AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, str, x, y, TEXT_SKIP_DRAW, NULL); } @@ -969,7 +968,7 @@ static void PrintHyphens(s32 y) s32 i; u8 text[37]; - for (i = 0; i < (int)ARRAY_COUNT(text) - 1; i++) + for (i = 0; i < 36; i++) text[i] = CHAR_HYPHEN; text[i] = EOS; @@ -1861,25 +1860,25 @@ static void GiveBattlePoints(void) switch (facility) { case FRONTIER_FACILITY_TOWER: - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; break; case FRONTIER_FACILITY_DOME: challengeNum = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; break; case FRONTIER_FACILITY_PALACE: - challengeNum = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] / 7; break; case FRONTIER_FACILITY_ARENA: - challengeNum = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] / 7; break; case FRONTIER_FACILITY_FACTORY: - challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7; break; case FRONTIER_FACILITY_PIKE: - challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; + challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; break; case FRONTIER_FACILITY_PYRAMID: - challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7; break; } @@ -1983,7 +1982,7 @@ static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monL if (gFrontierBannedSpecies[i] != 0xFFFF) return; - if (lvlMode == FRONTIER_LVL_50 && monLevel > FRONTIER_MAX_LEVEL_50) + if (lvlMode == FRONTIER_LVL_50 && monLevel > 50) return; for (i = 0; i < *count && speciesArray[i] != species; i++) @@ -2345,7 +2344,7 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode) StringCopy(gStringVar1, sRecordsWindowChallengeTexts[hallFacilityId][0]); StringExpandPlaceholders(gStringVar4, sRecordsWindowChallengeTexts[hallFacilityId][1]); AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gStringVar4, 0, 1, TEXT_SKIP_DRAW, NULL); - x = GetStringRightAlignXOffset(FONT_NORMAL, sLevelModeText[lvlMode], DISPLAY_WIDTH - 32); + x = GetStringRightAlignXOffset(FONT_NORMAL, sLevelModeText[lvlMode], 0xD0); AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, sLevelModeText[lvlMode], x, 1, TEXT_SKIP_DRAW, NULL); if (hallFacilityId == RANKING_HALL_TOWER_LINK) { diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 38f096af8..d134f2265 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -52,8 +52,6 @@ struct HallofFameTeam struct HallofFameMon mon[PARTY_SIZE]; }; -STATIC_ASSERT(sizeof(struct HallofFameTeam) * HALL_OF_FAME_MAX_TEAMS <= SECTOR_DATA_SIZE * NUM_HOF_SECTORS, HallOfFameFreeSpace); - struct HofGfx { u16 state; @@ -514,7 +512,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) } *lastSavedTeam = *sHofMonPtr; - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_Hof_TrySaveData; @@ -529,8 +527,10 @@ static void Task_Hof_TrySaveData(u8 taskId) UnsetBgTilemapBuffer(3); FreeAllWindowBuffers(); - TRY_FREE_AND_SET_NULL(sHofGfxPtr); - TRY_FREE_AND_SET_NULL(sHofMonPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonPtr != NULL) + FREE_AND_SET_NULL(sHofMonPtr); DestroyTask(taskId); } @@ -722,7 +722,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); HallOfFame_PrintPlayerInfo(1, 2); - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_LeagueChamp, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_Hof_ExitOnKeyPressed; @@ -771,8 +771,10 @@ static void Task_Hof_HandleExit(u8 taskId) ResetBgsAndClearDma3BusyFlags(0); DestroyTask(taskId); - TRY_FREE_AND_SET_NULL(sHofGfxPtr); - TRY_FREE_AND_SET_NULL(sHofMonPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonPtr != NULL) + FREE_AND_SET_NULL(sHofMonPtr); StartCredits(); } @@ -1077,8 +1079,10 @@ static void Task_HofPC_HandleExit(u8 taskId) ResetBgsAndClearDma3BusyFlags(0); DestroyTask(taskId); - TRY_FREE_AND_SET_NULL(sHofGfxPtr); - TRY_FREE_AND_SET_NULL(sHofMonPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonPtr != NULL) + FREE_AND_SET_NULL(sHofMonPtr); ReturnFromHallOfFamePC(); } @@ -1087,7 +1091,7 @@ static void Task_HofPC_HandleExit(u8 taskId) static void Task_HofPC_PrintDataIsCorrupted(u8 taskId) { HofPCTopBar_Print(gText_AButtonExit, 8, TRUE); - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_HOFCorrupted, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_HofPC_ExitOnButtonPress; diff --git a/src/intro.c b/src/intro.c index a1d0508f4..827ce80be 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1848,7 +1848,7 @@ static void Task_Scene3_StartGroudon(u8 taskId) { gTasks[taskId].tState = 0; gTasks[taskId].func = Task_Scene3_Groudon; - ScanlineEffect_InitWave(0, 160, 4, 4, 1, SCANLINE_EFFECT_REG_BG1HOFS, FALSE); + ScanlineEffect_InitWave(0, 160, 4, 4, 1, SCANLINE_EFFECT_REG_BG1HOFS, 0); } #define tScreenX data[1] @@ -2058,7 +2058,7 @@ static void Task_Scene3_LoadKyogre(u8 taskId) gTasks[taskId].tDelay = 16; gTasks[taskId].tZoom = 256; PanFadeAndZoomScreen(gTasks[taskId].tScreenX, gTasks[taskId].tScreenY, gTasks[taskId].tZoom, 0); - ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, SCANLINE_EFFECT_REG_BG1VOFS, FALSE); + ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, SCANLINE_EFFECT_REG_BG1VOFS, 0); } static void Task_Scene3_Kyogre(u8 taskId) diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index 0942e82f1..e7039e02b 100644 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -757,9 +757,10 @@ void LoadIntroPart2Graphics(u8 scenery) gReservedSpritePaletteCount = 8; } -// Note: This is only called with scenery=1. +// Note: This is only called with a=1. void SetIntroPart2BgCnt(u8 scenery) { + // Only called with scenery = 1 switch (scenery) { default: diff --git a/src/item_menu.c b/src/item_menu.c index cd0bc159d..9eaca9597 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1344,7 +1344,7 @@ static void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, bool16 skipEraseLis DrawPocketIndicatorSquare(newPocket, TRUE); FillBgTilemapBufferRect_Palette0(2, 11, 14, 2, 15, 16); ScheduleBgCopyTilemapToVram(2); - SetBagVisualPocketId(newPocket, TRUE); + SetBagVisualPocketId(newPocket, 1); RemoveBagSprite(ITEMMENUSPRITE_BALL); AddSwitchPocketRotatingBallSprite(deltaBagPocketId); SetTaskFuncWithFollowupFunc(taskId, Task_SwitchBagPocket, gTasks[taskId].func); diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c index 5ac44f5ad..a5c265f90 100644 --- a/src/item_menu_icons.c +++ b/src/item_menu_icons.c @@ -35,8 +35,8 @@ static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite); // static const rom data static const u16 sRotatingBall_Pal[] = INCBIN_U16("graphics/bag/rotating_ball.gbapal"); static const u8 sRotatingBall_Gfx[] = INCBIN_U8("graphics/bag/rotating_ball.4bpp"); -static const u8 sCherryUnused[] = INCBIN_U8("graphics/unused/cherry.4bpp"); -static const u16 sCherryUnused_Pal[] = INCBIN_U16("graphics/unused/cherry.gbapal"); +static const u8 gCherryUnused[] = INCBIN_U8("graphics/unused/cherry.4bpp"); +static const u16 gCherryUnused_Pal[] = INCBIN_U16("graphics/unused/cherry.gbapal"); static const struct OamData sBagOamData = { @@ -269,7 +269,7 @@ static const struct SpriteFrameImage sBerryPicSpriteImageTable[] = {&gDecompressionBuffer[0], 0x800}, }; -static const struct SpriteTemplate sBerryPicSpriteTemplate = +static const struct SpriteTemplate gBerryPicSpriteTemplate = { .tileTag = TAG_NONE, .paletteTag = TAG_BERRY_PIC_PAL, @@ -308,7 +308,7 @@ static const union AffineAnimCmd *const sBerryPicRotatingAnimCmds[] = sSpriteAffineAnim_BerryPicRotation2 }; -static const struct SpriteTemplate sBerryPicRotatingSpriteTemplate = +static const struct SpriteTemplate gBerryPicRotatingSpriteTemplate = { .tileTag = TAG_NONE, .paletteTag = TAG_BERRY_PIC_PAL, @@ -404,7 +404,7 @@ static const union AnimCmd *const sBerryCheckCircleSpriteAnimTable[] = sSpriteAnim_BerryCheckCircle }; -static const struct SpriteTemplate sBerryCheckCircleSpriteTemplate = +static const struct SpriteTemplate gBerryCheckCircleSpriteTemplate = { .tileTag = TAG_BERRY_CHECK_CIRCLE_GFX, .paletteTag = TAG_BERRY_CHECK_CIRCLE_GFX, @@ -544,22 +544,7 @@ void AddBagItemIconSprite(u16 itemId, u8 id) void RemoveBagItemIconSprite(u8 id) { -// BUG: For one frame, the item you scroll to in the Bag menu -// will have an incorrect palette and may be seen as a flicker. -#ifdef BUGFIX - u8 *spriteId = &gBagMenu->spriteIds[ITEMMENUSPRITE_ITEM]; - - if (spriteId[id ^ 1] != SPRITE_NONE) - gSprites[spriteId[id ^ 1]].invisible = TRUE; - - if (spriteId[id] != SPRITE_NONE) - { - DestroySpriteAndFreeResources(&gSprites[spriteId[id]]); - spriteId[id] = SPRITE_NONE; - } -#else RemoveBagSprite(id + ITEMMENUSPRITE_ITEM); -#endif } void CreateItemMenuSwapLine(void) @@ -624,7 +609,7 @@ static void LoadBerryGfx(u8 berryId) u8 CreateBerryTagSprite(u8 id, s16 x, s16 y) { LoadBerryGfx(id); - return CreateSprite(&sBerryPicSpriteTemplate, x, y, 0); + return CreateSprite(&gBerryPicSpriteTemplate, x, y, 0); } void FreeBerryTagSpritePalette(void) @@ -639,7 +624,7 @@ u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine) FreeSpritePaletteByTag(TAG_BERRY_PIC_PAL); LoadBerryGfx(berryId); - spriteId = CreateSprite(&sBerryPicRotatingSpriteTemplate, x, y, 0); + spriteId = CreateSprite(&gBerryPicRotatingSpriteTemplate, x, y, 0); if (startAffine == TRUE) StartSpriteAffineAnim(&gSprites[spriteId], 1); @@ -648,5 +633,5 @@ u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine) u8 CreateBerryFlavorCircleSprite(s16 x) { - return CreateSprite(&sBerryCheckCircleSpriteTemplate, x, 116, 0); + return CreateSprite(&gBerryCheckCircleSpriteTemplate, x, 116, 0); } diff --git a/src/item_use.c b/src/item_use.c index af8f2504f..c03ede61b 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -42,33 +42,33 @@ #include "constants/items.h" #include "constants/songs.h" -static void SetUpItemUseCallback(u8); +static void SetUpItemUseCallback(u8 taskId); static void FieldCB_UseItemOnField(void); -static void Task_CallItemUseOnFieldCallback(u8); -static void Task_UseItemfinder(u8); -static void Task_CloseItemfinderMessage(u8); -static void Task_HiddenItemNearby(u8); -static void Task_StandingOnHiddenItem(u8); +static void Task_CallItemUseOnFieldCallback(u8 taskId); +static void Task_UseItemfinder(u8 taskId); +static void Task_CloseItemfinderMessage(u8 taskId); +static void Task_HiddenItemNearby(u8 taskId); +static void Task_StandingOnHiddenItem(u8 taskId); static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); -static u8 GetDirectionToHiddenItem(s16, s16); -static void PlayerFaceHiddenItem(u8); -static void CheckForHiddenItemsInMapConnection(u8); -static void Task_OpenRegisteredPokeblockCase(u8); -static void ItemUseOnFieldCB_Bike(u8); +static u8 GetDirectionToHiddenItem(s16 distanceX, s16 distanceY); +static void PlayerFaceHiddenItem(u8 a); +static void CheckForHiddenItemsInMapConnection(u8 taskId); +static void Task_OpenRegisteredPokeblockCase(u8 taskId); +static void ItemUseOnFieldCB_Bike(u8 taskId); static void ItemUseOnFieldCB_Rod(u8); static void ItemUseOnFieldCB_Itemfinder(u8); -static void ItemUseOnFieldCB_Berry(u8); -static void ItemUseOnFieldCB_WailmerPailBerry(u8); -static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8); +static void ItemUseOnFieldCB_Berry(u8 taskId); +static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId); +static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId); static bool8 TryToWaterSudowoodo(void); -static void BootUpSoundTMHM(u8); -static void Task_ShowTMHMContainedMessage(u8); -static void UseTMHMYesNo(u8); -static void UseTMHM(u8); -static void Task_StartUseRepel(u8); -static void Task_UseRepel(u8); -static void Task_CloseCantUseKeyItemMessage(u8); -static void SetDistanceOfClosestHiddenItem(u8, s16, s16); +static void BootUpSoundTMHM(u8 taskId); +static void Task_ShowTMHMContainedMessage(u8 taskId); +static void UseTMHMYesNo(u8 taskId); +static void UseTMHM(u8 taskId); +static void Task_StartUseRepel(u8 taskId); +static void Task_UseRepel(u8 taskId); +static void Task_CloseCantUseKeyItemMessage(u8 taskId); +static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 x, s16 y); static void CB2_OpenPokeblockFromBag(void); // EWRAM variables diff --git a/src/landmark.c b/src/landmark.c index 615a9bfe3..52d52500a 100644 --- a/src/landmark.c +++ b/src/landmark.c @@ -336,7 +336,7 @@ static const struct Landmark *const Landmarks_MtChimney_2[] = NULL, }; -static const struct LandmarkList sLandmarkLists[] = +static const struct LandmarkList gLandmarkLists[] = { {MAPSEC_ROUTE_103, 2, Landmarks_Route103_2}, {MAPSEC_ROUTE_104, 0, Landmarks_Route104_0}, @@ -420,21 +420,21 @@ static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id) { u16 i = 0; - for (; sLandmarkLists[i].mapSection != MAPSEC_NONE; i++) + for (; gLandmarkLists[i].mapSection != MAPSEC_NONE; i++) { - if (sLandmarkLists[i].mapSection > mapSection) + if (gLandmarkLists[i].mapSection > mapSection) return NULL; - if (sLandmarkLists[i].mapSection == mapSection) + if (gLandmarkLists[i].mapSection == mapSection) break; } - if (sLandmarkLists[i].mapSection == MAPSEC_NONE) + if (gLandmarkLists[i].mapSection == MAPSEC_NONE) return NULL; - for (; sLandmarkLists[i].mapSection == mapSection; i++) + for (; gLandmarkLists[i].mapSection == mapSection; i++) { - if (sLandmarkLists[i].id == id) - return sLandmarkLists[i].landmarks; + if (gLandmarkLists[i].id == id) + return gLandmarkLists[i].landmarks; } return NULL; diff --git a/src/libisagbprn.c b/src/libisagbprn.c index 7a70cf41f..69c6986ae 100644 --- a/src/libisagbprn.c +++ b/src/libisagbprn.c @@ -31,7 +31,7 @@ void AGBPrintFlush1Block(void); void AGBPrintInit(void) { volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - vu16 *pWSCNT = ®_WAITCNT; + u16 *pWSCNT = ®_WAITCNT; u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; u16 nOldWSCNT = *pWSCNT; *pWSCNT = WSCNT_DATA; @@ -57,7 +57,7 @@ static void AGBPutcInternal(const char cChr) void AGBPutc(const char cChr) { - vu16 *pWSCNT = ®_WAITCNT; + u16 *pWSCNT = ®_WAITCNT; u16 nOldWSCNT = *pWSCNT; volatile struct AGBPrintStruct *pPrint; *pWSCNT = WSCNT_DATA; @@ -71,7 +71,7 @@ void AGBPutc(const char cChr) void AGBPrint(const char *pBuf) { volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - vu16 *pWSCNT = ®_WAITCNT; + u16 *pWSCNT = ®_WAITCNT; u16 nOldWSCNT = *pWSCNT; *pWSCNT = WSCNT_DATA; while (*pBuf) @@ -95,9 +95,9 @@ void AGBPrintf(const char *pBuf, ...) static void AGBPrintTransferDataInternal(u32 bAllData) { LPFN_PRINT_FLUSH lpfnFuncFlush; - vu16 *pIME; + u16 *pIME; u16 nIME; - vu16 *pWSCNT; + u16 *pWSCNT; u16 nOldWSCNT; u16 *pProtect; volatile struct AGBPrintStruct *pPrint; diff --git a/src/link.c b/src/link.c index e88cde55a..aa9a0d73d 100644 --- a/src/link.c +++ b/src/link.c @@ -120,18 +120,18 @@ static EWRAM_DATA void *sLinkErrorBgTilemapBuffer = NULL; static void InitLocalLinkPlayer(void); static void VBlankCB_LinkError(void); static void CB2_LinkTest(void); -static void ProcessRecvCmds(u8); +static void ProcessRecvCmds(u8 unused); static void LinkCB_SendHeldKeys(void); static void ResetBlockSend(void); -static bool32 InitBlockSend(const void *, size_t); +static bool32 InitBlockSend(const void *src, size_t size); static void LinkCB_BlockSendBegin(void); static void LinkCB_BlockSend(void); static void LinkCB_BlockSendEnd(void); -static void SetBlockReceivedFlag(u8); -static u16 LinkTestCalcBlockChecksum(const u16 *, u16); -static void LinkTest_PrintHex(u32, u8, u8, u8); +static void SetBlockReceivedFlag(u8 who); +static u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size); +static void LinkTest_PrintHex(u32 pos, u8 a0, u8 a1, u8 a2); static void LinkCB_RequestPlayerDataExchange(void); -static void Task_PrintTestData(u8); +static void Task_PrintTestData(u8 taskId); static void LinkCB_ReadyCloseLink(void); static void LinkCB_WaitCloseLink(void); diff --git a/src/list_menu.c b/src/list_menu.c index 8ba13a6cf..ccb183891 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -312,14 +312,14 @@ static void ListMenuDummyTask(u8 taskId) } -s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 drawMode, u16 tileNum, u16 palNum) +s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum) { switch (sMysteryGiftLinkMenu.state) { case 0: default: sMysteryGiftLinkMenu.windowId = AddWindow(windowTemplate); - switch (drawMode) + switch (arg2) { case 2: LoadUserWindowBorderGfx(sMysteryGiftLinkMenu.windowId, tileNum, palNum); @@ -346,13 +346,13 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str } if (sMysteryGiftLinkMenu.state == 2) { - if (drawMode == 0) + if (arg2 == 0) { ClearWindowTilemap(sMysteryGiftLinkMenu.windowId); } else { - switch (drawMode) + switch (arg2) { case 0: // can never be reached, because of the if statement above ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE); diff --git a/src/m4a_1.s b/src/m4a_1.s index 3f1578806..cc5d3238d 100644 --- a/src/m4a_1.s +++ b/src/m4a_1.s @@ -680,7 +680,7 @@ SoundMainRAM_Unk2: ldr r1, [r4, o_SoundChannel_wav] add r2, r2, r1 add r2, r2, 0x10 - ldr r5, =sDecodingBuffer + ldr r5, =gDecodingBuffer ldr r6, =gDeltaEncodingTable mov r7, 0x40 ldrb lr, [r2], 1 @@ -701,7 +701,7 @@ _081DD57C: subs r7, r7, 2 bgt _081DD568 _081DD594: - ldr r5, =sDecodingBuffer + ldr r5, =gDecodingBuffer and r0, r3, 0x3F ldrsb r1, [r5, r0] pop {r0,r2,r5-r7,pc} @@ -1911,6 +1911,6 @@ _081DDD90: .align 2, 0 @ Don't pad with nop. .bss -sDecodingBuffer: @ Used as a buffer for audio decoded from compressed DPCM +gDecodingBuffer: @ Used as a buffer for audio decoded from compressed DPCM .space 0x40 - .size sDecodingBuffer, .-sDecodingBuffer + .size gDecodingBuffer, .-gDecodingBuffer diff --git a/src/main.c b/src/main.c index 5fd236447..2b96a8698 100644 --- a/src/main.c +++ b/src/main.c @@ -69,7 +69,7 @@ u8 gLinkVSyncDisabled; u32 IntrMain_Buffer[0x200]; s8 gPcmDmaCounter; -static EWRAM_DATA u16 sTrainerId = 0; +static EWRAM_DATA u16 gTrainerId = 0; //EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL; @@ -201,12 +201,12 @@ void SeedRngAndSetTrainerId(void) u16 val = REG_TM1CNT_L; SeedRng(val); REG_TM1CNT_H = 0; - sTrainerId = val; + gTrainerId = val; } u16 GetGeneratedTrainerIdLower(void) { - return sTrainerId; + return gTrainerId; } void EnableVCountIntrAtLine150(void) diff --git a/src/main_menu.c b/src/main_menu.c index d11784133..ed6158a9c 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -198,7 +198,7 @@ static void NewGameBirchSpeech_ShowDialogueWindow(u8, u8); static void NewGameBirchSpeech_ClearWindow(u8); static void Task_NewGameBirchSpeech_ThisIsAPokemon(u8); static void Task_NewGameBirchSpeech_MainSpeech(u8); -static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *, u16); +static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 a); static void Task_NewGameBirchSpeech_AndYouAre(u8); static void Task_NewGameBirchSpeechSub_WaitForLotad(u8); static void Task_NewGameBirchSpeech_StartBirchLotadPlatformFade(u8); @@ -371,7 +371,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate sNewGameBirchSpeechTextWindows[] = +static const struct WindowTemplate gNewGameBirchSpeechTextWindows[] = { { .bg = 0, @@ -457,7 +457,7 @@ static const struct MenuAction sMenuActions_Gender[] = { {gText_BirchGirl, NULL} }; -static const u8 *const sMalePresetNames[] = { +static const u8 *const gMalePresetNames[] = { gText_DefaultNameStu, gText_DefaultNameMilton, gText_DefaultNameTom, @@ -480,7 +480,7 @@ static const u8 *const sMalePresetNames[] = { gText_DefaultNameQuincy }; -static const u8 *const sFemalePresetNames[] = { +static const u8 *const gFemalePresetNames[] = { gText_DefaultNameKimmy, gText_DefaultNameTiara, gText_DefaultNameBella, @@ -1325,7 +1325,7 @@ static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId) } else { - InitWindows(sNewGameBirchSpeechTextWindows); + InitWindows(gNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); LoadMessageBoxGfx(0, 0xFC, 0xF0); NewGameBirchSpeech_ShowDialogueWindow(0, 1); @@ -1371,7 +1371,7 @@ static void Task_NewGameBirchSpeechSub_InitPokeBall(u8 taskId) gSprites[spriteId].invisible = FALSE; gSprites[spriteId].data[0] = 0; - CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 112, 58, 0, 0, 32, PALETTES_BG, SPECIES_LOTAD); + CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 112, 58, 0, 0, 32, 0x0000FFFF, SPECIES_LOTAD); gTasks[taskId].func = Task_NewGameBirchSpeechSub_WaitForLotad; gTasks[sBirchSpeechMainTaskId].tTimer = 0; } @@ -1851,7 +1851,7 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void) REG_IME = savedIme; SetVBlankCallback(VBlankCB_MainMenu); SetMainCallback2(CB2_MainMenu); - InitWindows(sNewGameBirchSpeechTextWindows); + InitWindows(gNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); LoadMessageBoxGfx(0, 0xFC, 0xF0); PutWindowTilemap(0); @@ -2087,7 +2087,7 @@ static void NewGameBirchSpeech_StartFadePlatformOut(u8 taskId, u8 delay) static void NewGameBirchSpeech_ShowGenderMenu(void) { - DrawMainMenuWindowBorder(&sNewGameBirchSpeechTextWindows[1], 0xF3); + DrawMainMenuWindowBorder(&gNewGameBirchSpeechTextWindows[1], 0xF3); FillWindowPixelBuffer(1, PIXEL_FILL(1)); PrintMenuTable(1, ARRAY_COUNT(sMenuActions_Gender), sMenuActions_Gender); InitMenuInUpperLeftCornerNormal(1, ARRAY_COUNT(sMenuActions_Gender), 0); @@ -2106,9 +2106,9 @@ static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId) u8 i; if (gSaveBlock2Ptr->playerGender == MALE) - name = sMalePresetNames[nameId]; + name = gMalePresetNames[nameId]; else - name = sFemalePresetNames[nameId]; + name = gFemalePresetNames[nameId]; for (i = 0; i < PLAYER_NAME_LENGTH; i++) gSaveBlock2Ptr->playerName[i] = name[i]; gSaveBlock2Ptr->playerName[PLAYER_NAME_LENGTH] = EOS; @@ -2221,9 +2221,9 @@ static void ClearMainMenuWindowTilemap(const struct WindowTemplate *template) CopyBgTilemapBufferToVram(template->bg); } -static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 bg, u8 x, u8 y, u8 width, u8 height, u8 unused) +static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 a, u8 b, u8 c, u8 d, u8 e, u8 unused) { - FillBgTilemapBufferRect(bg, 0, x + 255, y + 255, width + 2, height + 2, 2); + FillBgTilemapBufferRect(a, 0, b + 0xFF, c + 0xFF, d + 2, e + 2, 2); } static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, bool8 copyToVram) @@ -2247,7 +2247,7 @@ static void NewGameBirchSpeech_ClearWindow(u8 windowId) CopyWindowToVram(windowId, COPYWIN_GFX); } -static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 renderCmd) +static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 a) { // Wait for Birch's "This is a Pokémon" text to reach the pause // Then start the PokéBall release (if it hasn't been started already) @@ -2270,25 +2270,24 @@ static void NewGameBirchSpeech_ShowDialogueWindow(u8 windowId, u8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, COPYWIN_FULL); + CopyWindowToVram(windowId, 3); } -static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8 bg, u8 x, u8 y, u8 width, u8 height, u8 palNum) +static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f) { - FillBgTilemapBufferRect(bg, 0xFD, x-2, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0xFF, x-1, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x100, x, y-1, width, 1, palNum); - FillBgTilemapBufferRect(bg, 0x101, x+width-1, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x102, x+width, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x103, x-2, y, 1, 5, palNum); - FillBgTilemapBufferRect(bg, 0x105, x-1, y, width+1, 5, palNum); - FillBgTilemapBufferRect(bg, 0x106, x+width, y, 1, 5, palNum); - - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0xFD), x-2, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0xFF), x-1, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x100), x, y+height, width-1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x101), x+width-1, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x102), x+width, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(a, 0xFD, b-2, c-1, 1, 1, f); + FillBgTilemapBufferRect(a, 0xFF, b-1, c-1, 1, 1, f); + FillBgTilemapBufferRect(a, 0x100, b, c-1, d, 1, f); + FillBgTilemapBufferRect(a, 0x101, b+d-1, c-1, 1, 1, f); + FillBgTilemapBufferRect(a, 0x102, b+d, c-1, 1, 1, f); + FillBgTilemapBufferRect(a, 0x103, b-2, c, 1, 5, f); + FillBgTilemapBufferRect(a, 0x105, b-1, c, d+1, 5, f); + FillBgTilemapBufferRect(a, 0x106, b+d, c, 1, 5, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0xFD), b-2, c+e, 1, 1, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0xFF), b-1, c+e, 1, 1, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x100), b, c+e, d-1, 1, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x101), b+d-1, c+e, 1, 1, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x102), b+d, c+e, 1, 1, f); } static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8 taskId) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 9eaa035ca..8cf1a6bab 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -12,7 +12,6 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "constants/battle_frontier.h" #include "constants/layouts.h" #include "constants/region_map_sections.h" #include "constants/weather.h" @@ -177,25 +176,25 @@ static const u8 sRegionMapSectionId_To_PopUpThemeIdMapping[] = [MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_MARBLE }; -static const u8 sText_PyramidFloor1[] = _("PYRAMID FLOOR 1"); -static const u8 sText_PyramidFloor2[] = _("PYRAMID FLOOR 2"); -static const u8 sText_PyramidFloor3[] = _("PYRAMID FLOOR 3"); -static const u8 sText_PyramidFloor4[] = _("PYRAMID FLOOR 4"); -static const u8 sText_PyramidFloor5[] = _("PYRAMID FLOOR 5"); -static const u8 sText_PyramidFloor6[] = _("PYRAMID FLOOR 6"); -static const u8 sText_PyramidFloor7[] = _("PYRAMID FLOOR 7"); -static const u8 sText_Pyramid[] = _("PYRAMID"); +static const u8 gText_PyramidFloor1[] = _("PYRAMID FLOOR 1"); +static const u8 gText_PyramidFloor2[] = _("PYRAMID FLOOR 2"); +static const u8 gText_PyramidFloor3[] = _("PYRAMID FLOOR 3"); +static const u8 gText_PyramidFloor4[] = _("PYRAMID FLOOR 4"); +static const u8 gText_PyramidFloor5[] = _("PYRAMID FLOOR 5"); +static const u8 gText_PyramidFloor6[] = _("PYRAMID FLOOR 6"); +static const u8 gText_PyramidFloor7[] = _("PYRAMID FLOOR 7"); +static const u8 gText_Pyramid[] = _("PYRAMID"); -static const u8 * const sBattlePyramid_MapHeaderStrings[FRONTIER_STAGES_PER_CHALLENGE + 1] = +static const u8 * const gBattlePyramid_MapHeaderStrings[] = { - sText_PyramidFloor1, - sText_PyramidFloor2, - sText_PyramidFloor3, - sText_PyramidFloor4, - sText_PyramidFloor5, - sText_PyramidFloor6, - sText_PyramidFloor7, - sText_Pyramid, + gText_PyramidFloor1, + gText_PyramidFloor2, + gText_PyramidFloor3, + gText_PyramidFloor4, + gText_PyramidFloor5, + gText_PyramidFloor6, + gText_PyramidFloor7, + gText_Pyramid, }; // Unused @@ -310,12 +309,12 @@ static void ShowMapNamePopUpWindow(void) if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP) { withoutPrefixPtr = &(mapDisplayHeader[3]); - mapDisplayHeaderSource = sBattlePyramid_MapHeaderStrings[FRONTIER_STAGES_PER_CHALLENGE]; + mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[7]; } else { withoutPrefixPtr = &(mapDisplayHeader[3]); - mapDisplayHeaderSource = sBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.curChallengeBattleNum]; + mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.curChallengeBattleNum]; } StringCopy(withoutPrefixPtr, mapDisplayHeaderSource); } diff --git a/src/match_call.c b/src/match_call.c index 8b25d5b44..de7f13416 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -33,13 +33,6 @@ #include "constants/songs.h" #include "constants/trainers.h" -// In this file only the values normally associated with Battle Pike and Factory are swapped. -// Note that this is *not* a bug, because they are properly swapped consistently in this file. -// There would only be an issue if anything in this file interacted with something expecting -// the usual value order, or vice versa. -#define MATCH_CALL_FACTORY FRONTIER_FACILITY_PIKE -#define MATCH_CALL_PIKE FRONTIER_FACILITY_FACTORY - // Each match call message has variables that can be populated randomly or // dependent on the trainer. The below are IDs for how to populate the vars // in a given message. @@ -1597,7 +1590,6 @@ static const struct MatchCallText *GetGeneralMatchCallText(int matchCallId, u8 * rand = Random(); if (!(rand & 1)) { - // Count the number of facilities with a win streak for (count = 0, i = 0; i < NUM_FRONTIER_FACILITIES; i++) { if (GetFrontierStreakInfo(i, &topic) > 1) @@ -1606,8 +1598,6 @@ static const struct MatchCallText *GetGeneralMatchCallText(int matchCallId, u8 * if (count) { - // At least one facility with a win streak - // Randomly choose one to have a call about count = Random() % count; for (i = 0; i < NUM_FRONTIER_FACILITIES; i++) { @@ -1817,15 +1807,15 @@ static void PopulateSpeciesFromTrainerParty(int matchCallId, u8 *destStr) StringCopy(destStr, speciesName); } -static const u8 *const sBattleFrontierFacilityNames[NUM_FRONTIER_FACILITIES] = +static const u8 *const sBattleFrontierFacilityNames[] = { - [FRONTIER_FACILITY_TOWER] = gText_BattleTower2, - [FRONTIER_FACILITY_DOME] = gText_BattleDome, - [FRONTIER_FACILITY_PALACE] = gText_BattlePalace, - [FRONTIER_FACILITY_ARENA] = gText_BattleArena, - [MATCH_CALL_PIKE] = gText_BattlePike, - [MATCH_CALL_FACTORY] = gText_BattleFactory, - [FRONTIER_FACILITY_PYRAMID] = gText_BattlePyramid, + gText_BattleTower2, + gText_BattleDome, + gText_BattlePalace, + gText_BattleArena, + gText_BattlePike, + gText_BattleFactory, + gText_BattlePyramid, }; static void PopulateBattleFrontierFacilityName(int matchCallId, u8 *destStr) @@ -1909,7 +1899,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) switch (facilityId) { case FRONTIER_FACILITY_DOME: - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.domeRecordWinStreaks); i++) + for (i = 0; i < 2; i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1919,7 +1909,11 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) } *topicTextId = GEN_TOPIC_B_DOME - 1; break; - case MATCH_CALL_PIKE: + #ifdef BUGFIX + case FRONTIER_FACILITY_PIKE: + #else + case FRONTIER_FACILITY_FACTORY: + #endif for (i = 0; i < FRONTIER_LVL_MODE_COUNT; i++) { if (streak < gSaveBlock2Ptr->frontier.pikeRecordStreaks[i]) @@ -1928,7 +1922,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) *topicTextId = GEN_TOPIC_B_PIKE - 1; break; case FRONTIER_FACILITY_TOWER: - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.towerRecordWinStreaks); i++) + for (i = 0; i < 4; i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1939,7 +1933,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) *topicTextId = GEN_TOPIC_STREAK_RECORD - 1; break; case FRONTIER_FACILITY_PALACE: - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.palaceRecordWinStreaks); i++) + for (i = 0; i < 2; i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1949,8 +1943,12 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) } *topicTextId = GEN_TOPIC_STREAK_RECORD - 1; break; - case MATCH_CALL_FACTORY: - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.factoryRecordWinStreaks); i++) + #ifdef BUGFIX + case FRONTIER_FACILITY_FACTORY: + #else + case FRONTIER_FACILITY_PIKE: + #endif + for (i = 0; i < 2; i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 2b6c71c8a..681a3dadf 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -438,14 +438,14 @@ static void EnableTextPrinters(void) gDisableTextPrinters = FALSE; } -static void DisableTextPrinters(struct TextPrinterTemplate * printer, u16 renderCmd) +static void DisableTextPrinters(struct TextPrinterTemplate * printer, u16 a1) { gDisableTextPrinters = TRUE; } static void DrawSongTextWindow(const u8 * str) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, str, 0, 1, 1, DisableTextPrinters); gDisableTextPrinters = TRUE; CopyWindowToVram(0, COPYWIN_FULL); diff --git a/src/menu.c b/src/menu.c index c4540942b..49baddded 100644 --- a/src/menu.c +++ b/src/menu.c @@ -542,9 +542,9 @@ void RemoveMapNamePopUpWindow(void) } } -void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, void (*callback)(struct TextPrinterTemplate *, u16)) +void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16)) { - gTextFlags.canABSpeedUpPrint = canSpeedUp; + gTextFlags.canABSpeedUpPrint = a1; AddTextPrinterParameterized2(0, FONT_NORMAL, gStringVar4, GetPlayerTextSpeedDelay(), callback, 2, 1, 3); } @@ -1245,9 +1245,9 @@ static void PrintMenuActionGridText(u8 windowId, u8 fontId, u8 left, u8 top, u8 } // Unused -static void PrintMenuActionGridTextAtTop(u8 windowId, u8 fontId, u8 width, u8 height, u8 columns, u8 rows, const struct MenuAction *menuActions) +static void PrintMenuActionGridTextAtTop(u8 windowId, u8 fontId, u8 a2, u8 a3, u8 a4, u8 a5, const struct MenuAction *menuActions) { - PrintMenuActionGridText(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, width, height, columns, rows, menuActions); + PrintMenuActionGridText(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, a2, a3, a4, a5, menuActions); } void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 horizontalCount, u8 verticalCount, const struct MenuAction *menuActions, const u8 *actionIds) diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 7decd695c..e9f3e571f 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -153,7 +153,7 @@ void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data) gTasks[taskId].func = Task_CallYesOrNoCallback; } -void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 unused1, u8 unused2, u8 unused3, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo) +void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo) { CreateYesNoMenu(template, tileStart, palette, 0); sYesNo = *yesNo; @@ -176,18 +176,17 @@ static void Task_CallYesOrNoCallback(u8 taskId) } } -// Returns TRUE if the quantity was changed, FALSE if it remained the same -bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) +bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) { - s16 valBefore = *quantity; + s16 valBefore = (*arg0); - if (JOY_REPEAT(DPAD_ANY) == DPAD_UP) + if ((JOY_REPEAT(DPAD_ANY)) == DPAD_UP) { - (*quantity)++; - if (*quantity > max) - *quantity = 1; + (*arg0)++; + if ((*arg0) > arg1) + (*arg0) = 1; - if (*quantity == valBefore) + if ((*arg0) == valBefore) { return FALSE; } @@ -197,13 +196,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) return TRUE; } } - else if (JOY_REPEAT(DPAD_ANY) == DPAD_DOWN) + else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_DOWN) { - (*quantity)--; - if (*quantity <= 0) - *quantity = max; + (*arg0)--; + if ((*arg0) <= 0) + (*arg0) = arg1; - if (*quantity == valBefore) + if ((*arg0) == valBefore) { return FALSE; } @@ -213,13 +212,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) return TRUE; } } - else if (JOY_REPEAT(DPAD_ANY) == DPAD_RIGHT) + else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_RIGHT) { - *quantity += 10; - if (*quantity > max) - *quantity = max; + (*arg0) += 10; + if ((*arg0) > arg1) + (*arg0) = arg1; - if (*quantity == valBefore) + if ((*arg0) == valBefore) { return FALSE; } @@ -229,13 +228,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) return TRUE; } } - else if (JOY_REPEAT(DPAD_ANY) == DPAD_LEFT) + else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_LEFT) { - *quantity -= 10; - if (*quantity <= 0) - *quantity = 1; + (*arg0) -= 10; + if ((*arg0) <= 0) + (*arg0) = 1; - if (*quantity == valBefore) + if ((*arg0) == valBefore) { return FALSE; } diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index e0f789bcb..5f08c6294 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -19,8 +19,8 @@ extern ScrCmdFunc gMysteryEventScriptCmdTable[]; extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; -// 0x1 in FireRed, 0x2 in LeafGreen, 0x80 in Ruby, 0x100 in Sapphire -#define VERSION_MASK (1 << 9) +#define LANGUAGE_MASK 0x1 +#define VERSION_MASK 0x200 #define mScriptBase data[0] #define mOffset data[1] @@ -29,21 +29,18 @@ extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; EWRAM_DATA static struct ScriptContext sMysteryEventScriptContext = {0}; -static bool32 CheckCompatibility(u16 unk0, u32 unk1, u16 unk2, u32 version) +static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4) { - // 0x1 in English FRLG, 0x2 in English RS, 0x4 in German RS - if (!(unk0 & 0x1)) + if (!(a1 & LANGUAGE_MASK)) return FALSE; - // Same as above - if (!(unk1 & 0x1)) + if (!(a2 & LANGUAGE_MASK)) return FALSE; - // 0x1 in FRLG, 0x4 in RS - if (!(unk2 & 0x4)) + if (!(a3 & 0x4)) return FALSE; - if (!(version & VERSION_MASK)) + if (!(a4 & VERSION_MASK)) return FALSE; return TRUE; @@ -177,18 +174,18 @@ bool8 MEScrCmd_end(struct ScriptContext *ctx) bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx) { - u16 unk0; - u32 unk1; - u16 unk2; - u32 version; + u16 v1; + u32 v2; + u16 v3; + u32 v4; ctx->mOffset = ScriptReadWord(ctx); - unk0 = ScriptReadHalfword(ctx); - unk1 = ScriptReadWord(ctx); - unk2 = ScriptReadHalfword(ctx); - version = ScriptReadWord(ctx); + v1 = ScriptReadHalfword(ctx); + v2 = ScriptReadWord(ctx); + v3 = ScriptReadHalfword(ctx); + v4 = ScriptReadWord(ctx); - if (CheckCompatibility(unk0, unk1, unk2, version) == TRUE) + if (CheckCompatibility(v1, v2, v3, v4) == TRUE) ctx->mValid = TRUE; else SetIncompatible(); diff --git a/src/mystery_gift.c b/src/mystery_gift.c index 72fc2b377..1df6533d9 100755 --- a/src/mystery_gift.c +++ b/src/mystery_gift.c @@ -506,13 +506,9 @@ static void IncrementCardStat(u32 statType) } if (stat == NULL) - { AGB_ASSERT(0); - } else if (++(*stat) > MAX_WONDER_CARD_STAT) - { *stat = MAX_WONDER_CARD_STAT; - } } } diff --git a/src/mystery_gift_client.c b/src/mystery_gift_client.c index 567751bad..adf3ce8a6 100644 --- a/src/mystery_gift_client.c +++ b/src/mystery_gift_client.c @@ -44,7 +44,8 @@ u32 MysteryGiftClient_Run(u16 * endVal) { *endVal = sClient->param; MysteryGiftClient_Free(sClient); - FREE_AND_SET_NULL(sClient); + Free(sClient); + sClient = NULL; } return result; } @@ -202,7 +203,7 @@ static u32 Client_Run(struct MysteryGiftClient * client) MysteryGiftLink_InitSend(&client->link, MG_LINKID_GAME_DATA, client->sendBuffer, sizeof(struct MysteryGiftLinkGameData)); break; case CLI_LOAD_TOSS_RESPONSE: - // param here is set by MG_STATE_CLIENT_ASK_TOSS or MG_STATE_CLIENT_ASK_TOSS_UNRECEIVED + // param here is set by MG_STATE_LINK_ASK_TOSS or MG_STATE_LINK_ASK_TOSS_UNRECEIVED MysteryGiftClient_InitSendWord(client, MG_LINKID_RESPONSE, client->param); break; case CLI_SAVE_CARD: @@ -229,7 +230,7 @@ static u32 Client_Run(struct MysteryGiftClient * client) MysteryGift_TrySaveStamp(client->recvBuffer); break; case CLI_SAVE_RAM_SCRIPT: - InitRamScript_NoObjectEvent(client->recvBuffer, sizeof(struct RamScriptData)); + InitRamScript_NoObjectEvent(client->recvBuffer, 1000); break; case CLI_RECV_EREADER_TRAINER: memcpy(&gSaveBlock2Ptr->frontier.ereaderTrainer, client->recvBuffer, sizeof(gSaveBlock2Ptr->frontier.ereaderTrainer)); diff --git a/src/mystery_gift_server.c b/src/mystery_gift_server.c index 891870659..0e0acb642 100644 --- a/src/mystery_gift_server.c +++ b/src/mystery_gift_server.c @@ -44,7 +44,8 @@ u32 MysterGiftServer_Run(u16 * endVal) { *endVal = sServer->param; MysteryGiftServer_Free(sServer); - FREE_AND_SET_NULL(sServer); + Free(sServer); + sServer = NULL; } return result; } diff --git a/src/mystery_gift_view.c b/src/mystery_gift_view.c index ff34c8853..3047a219e 100644 --- a/src/mystery_gift_view.c +++ b/src/mystery_gift_view.c @@ -207,7 +207,8 @@ void WonderCard_Destroy(void) if (sWonderCardData != NULL) { *sWonderCardData = (struct WonderCardData){}; - FREE_AND_SET_NULL(sWonderCardData); + Free(sWonderCardData); + sWonderCardData = NULL; } } @@ -659,7 +660,8 @@ void WonderNews_Destroy(void) if (sWonderNewsData != NULL) { *sWonderNewsData = (struct WonderNewsData){}; - FREE_AND_SET_NULL(sWonderNewsData); + Free(sWonderNewsData); + sWonderNewsData = NULL; } } diff --git a/src/new_game.c b/src/new_game.c index 077b86775..f22ca7940 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -203,6 +203,7 @@ void NewGameInitData(void) WipeTrainerNameRecords(); ResetTrainerHillResults(); ResetContestLinkResults(); + memset(&gSaveBlock2Ptr->follower, 0, sizeof(gSaveBlock2Ptr->follower)); } static void ResetMiniGamesRecords(void) diff --git a/src/overworld.c b/src/overworld.c index d4fbaf29d..ba83cec2d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -61,6 +61,7 @@ #include "scanline_effect.h" #include "wild_encounter.h" #include "frontier_util.h" +#include "follow_me.h" #include "constants/abilities.h" #include "constants/layouts.h" #include "constants/map_types.h" @@ -830,7 +831,7 @@ static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *, struct Obje static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); static u8 MovementEventModeCB_Scripted(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); -static u8 (*const sLinkPlayerMovementModes[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = +static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = { [MOVEMENT_MODE_FREE] = MovementEventModeCB_Normal, [MOVEMENT_MODE_FROZEN] = MovementEventModeCB_Ignored, @@ -842,7 +843,7 @@ static u8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *, struct Obje static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); // These handlers return TRUE if the movement was scripted and successful, and FALSE otherwise. -static bool8 (*const sLinkPlayerFacingHandlers[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = +static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = { FacingHandler_DoNothing, FacingHandler_DpadMovement, @@ -861,7 +862,7 @@ static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerObjectEvent *, static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent *, struct ObjectEvent *); // These handlers are run after an attempted movement. -static void (*const sMovementStatusHandler[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *) = +static void (*const gMovementStatusHandler[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *) = { // FALSE: MovementStatusHandler_EnterFreeMode, @@ -877,6 +878,7 @@ void DoWhiteOut(void) HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); SetWarpDestinationToLastHealLocation(); + UpdateFollowerPokemonGraphic(); WarpIntoMap(); } @@ -926,6 +928,8 @@ static void Overworld_ResetStateAfterWhiteOut(void) VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 0); VarSet(VAR_ABNORMAL_WEATHER_LOCATION, ABNORMAL_WEATHER_NONE); } + + FollowMe_TryRemoveFollowerOnWhiteOut(); } static void UpdateMiscOverworldStates(void) @@ -1956,6 +1960,10 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys); } } + + // if stop running but keep holding B -> fix follower frame + if (PlayerHasFollower() && IsPlayerOnFoot() && IsPlayerStandingStill()) + ObjectEventSetHeldMovement(&gObjectEvents[GetFollowerObjectId()], GetFaceDirectionAnimNum(gObjectEvents[GetFollowerObjectId()].facingDirection)); } void CB1_Overworld(void) @@ -1991,6 +1999,20 @@ void CB2_Overworld(void) OverworldBasic(); if (fading) SetFieldVBlankCallback(); + + // Make sure follower's sprite is properly positioned when map reloads. + if (gSaveBlock2Ptr->follower.inProgress) + { + switch(gObjectEvents[gSaveBlock2Ptr->follower.objId].facingDirection) + { + case DIR_EAST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; + break; + case DIR_WEST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; + break; + } + } } void SetMainCallback1(MainCallback cb) @@ -2173,6 +2195,7 @@ void CB2_ReturnToFieldWithOpenMenu(void) { FieldClearVBlankHBlankCallbacks(); gFieldCallback2 = FieldCB_ReturnToFieldOpenStartMenu; + UpdateFollowerPokemonGraphic(); CB2_ReturnToField(); } @@ -2639,10 +2662,7 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - if (!a1) - InitObjectEventPalettes(0); - else - InitObjectEventPalettes(1); + FreeAllSpritePalettes(); FieldEffectActiveListClear(); StartWeather(); @@ -2677,6 +2697,7 @@ static void InitObjectEventsLocal(void) ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); TryRunOnWarpIntoMapScript(); + FollowMe_HandleSprite(); } static void InitObjectEventsReturnToField(void) @@ -2989,9 +3010,9 @@ static u16 KeyInterCB_ReadButtons(u32 key) return LINK_KEY_CODE_EMPTY; } -static u16 GetDirectionForDpadKey(u16 key) +static u16 GetDirectionForDpadKey(u16 a1) { - switch (key) + switch (a1) { case LINK_KEY_CODE_DPAD_RIGHT: return FACING_RIGHT; @@ -3110,7 +3131,7 @@ static u16 KeyInterCB_Ready(u32 keyOrPlayerId) } } -static u16 KeyInterCB_SetReady(u32 key) +static u16 KeyInterCB_SetReady(u32 a1) { SetKeyInterceptCallback(KeyInterCB_Ready); return LINK_KEY_CODE_READY; @@ -3560,9 +3581,9 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) { // This is a hack to split this code onto two separate lines, without declaring a local variable. // C++ style inline variables would be nice here. - #define TEMP sLinkPlayerMovementModes[linkPlayerObjEvent->movementMode](linkPlayerObjEvent, objEvent, facing) + #define TEMP gLinkPlayerMovementModes[linkPlayerObjEvent->movementMode](linkPlayerObjEvent, objEvent, facing) - sMovementStatusHandler[TEMP](linkPlayerObjEvent, objEvent); + gMovementStatusHandler[TEMP](linkPlayerObjEvent, objEvent); // Clean up the hack. #undef TEMP @@ -3573,7 +3594,7 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - return sLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); + return gLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); } static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) @@ -3584,7 +3605,7 @@ static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerOb // Identical to MovementEventModeCB_Normal static u8 MovementEventModeCB_Scripted(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - return sLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); + return gLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); } static bool8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) diff --git a/src/palette.c b/src/palette.c index 577257eff..9fec449bc 100644 --- a/src/palette.c +++ b/src/palette.c @@ -60,13 +60,13 @@ static void Task_BlendPalettesGradually(u8 taskId); // unaligned word reads are issued in BlendPalette otherwise ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; -static EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; +EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; static EWRAM_DATA u32 sFiller = 0; static EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0}; -static const struct PaletteStructTemplate sDummyPaletteStructTemplate = { +static const struct PaletteStructTemplate gDummyPaletteStructTemplate = { .id = 0xFFFF, .state = 1 }; @@ -237,63 +237,63 @@ static void PaletteStruct_Run(u8 a1, u32 *unkFlags) } } -static void PaletteStruct_Copy(struct PaletteStruct *palStruct, u32 *unkFlags) +static void PaletteStruct_Copy(struct PaletteStruct *a1, u32 *unkFlags) { s32 srcIndex; s32 srcCount; u8 i = 0; - u16 srcOffset = palStruct->srcIndex * palStruct->template->size; + u16 srcOffset = a1->srcIndex * a1->template->size; - if (!palStruct->template->pst_field_8_0) + if (!a1->template->pst_field_8_0) { - while (i < palStruct->template->size) + while (i < a1->template->size) { - gPlttBufferUnfaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; - gPlttBufferFaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; + gPlttBufferUnfaded[a1->destOffset] = a1->template->src[srcOffset]; + gPlttBufferFaded[a1->destOffset] = a1->template->src[srcOffset]; i++; - palStruct->destOffset++; + a1->destOffset++; srcOffset++; } } else { - while (i < palStruct->template->size) + while (i < a1->template->size) { - gPlttBufferFaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; + gPlttBufferFaded[a1->destOffset] = a1->template->src[srcOffset]; i++; - palStruct->destOffset++; + a1->destOffset++; srcOffset++; } } - palStruct->destOffset = palStruct->baseDestOffset; - palStruct->countdown1 = palStruct->template->time1; - palStruct->srcIndex++; + a1->destOffset = a1->baseDestOffset; + a1->countdown1 = a1->template->time1; + a1->srcIndex++; - srcIndex = palStruct->srcIndex; - srcCount = palStruct->template->srcCount; + srcIndex = a1->srcIndex; + srcCount = a1->template->srcCount; if (srcIndex >= srcCount) { - if (palStruct->countdown2) - palStruct->countdown2--; - palStruct->srcIndex = 0; + if (a1->countdown2) + a1->countdown2--; + a1->srcIndex = 0; } - *unkFlags |= 1 << (palStruct->baseDestOffset >> 4); + *unkFlags |= 1 << (a1->baseDestOffset >> 4); } -static void PaletteStruct_Blend(struct PaletteStruct *palStruct, u32 *unkFlags) +static void PaletteStruct_Blend(struct PaletteStruct *a1, u32 *unkFlags) { - if (gPaletteFade.active && ((1 << (palStruct->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes)) + if (gPaletteFade.active && ((1 << (a1->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes)) { - if (!palStruct->template->pst_field_8_0) + if (!a1->template->pst_field_8_0) { if (gPaletteFade.delayCounter != gPaletteFade_delay) { BlendPalette( - palStruct->baseDestOffset, - palStruct->template->size, + a1->baseDestOffset, + a1->template->size, gPaletteFade.y, gPaletteFade.blendColor); } @@ -302,13 +302,13 @@ static void PaletteStruct_Blend(struct PaletteStruct *palStruct, u32 *unkFlags) { if (!gPaletteFade.delayCounter) { - if (palStruct->countdown1 != palStruct->template->time1) + if (a1->countdown1 != a1->template->time1) { - u32 srcOffset = palStruct->srcIndex * palStruct->template->size; + u32 srcOffset = a1->srcIndex * a1->template->size; u8 i; - for (i = 0; i < palStruct->template->size; i++) - gPlttBufferFaded[palStruct->baseDestOffset + i] = palStruct->template->src[srcOffset + i]; + for (i = 0; i < a1->template->size; i++) + gPlttBufferFaded[a1->baseDestOffset + i] = a1->template->src[srcOffset + i]; } } } @@ -352,7 +352,7 @@ void PaletteStruct_ResetById(u16 id) static void PaletteStruct_Reset(u8 paletteNum) { - sPaletteStructs[paletteNum].template = &sDummyPaletteStructTemplate; + sPaletteStructs[paletteNum].template = &gDummyPaletteStructTemplate; sPaletteStructs[paletteNum].active = FALSE; sPaletteStructs[paletteNum].baseDestOffset = 0; sPaletteStructs[paletteNum].destOffset = 0; diff --git a/src/party_menu.c b/src/party_menu.c index 016c359cb..e15d001c6 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4969,7 +4969,7 @@ static void Task_TryLearnNewMoves(u8 taskId) { u16 learnMove; - if (WaitFanfare(FALSE) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) + if (WaitFanfare(0) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) { RemoveLevelUpStatsWindow(); learnMove = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], TRUE); @@ -5647,11 +5647,11 @@ static u8 GetBattleEntryLevelCap(void) case FACILITY_MULTI_OR_EREADER: return MAX_LEVEL; case FACILITY_UNION_ROOM: - return UNION_ROOM_MAX_LEVEL; + return 30; default: // Battle Frontier if (gSpecialVar_0x8004 == FRONTIER_LVL_50) - return FRONTIER_MAX_LEVEL_50; - return FRONTIER_MAX_LEVEL_OPEN; + return 50; + return MAX_LEVEL; } } diff --git a/src/player_pc.c b/src/player_pc.c index 0ca78dea8..bf8479ce1 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -97,84 +97,84 @@ struct ItemStorageMenu u8 swapLineSpriteIds[SWAP_LINE_LENGTH]; }; -static void InitPlayerPCMenu(u8); -static void PlayerPCProcessMenuInput(u8); -static void InitItemStorageMenu(u8, u8); +static void InitPlayerPCMenu(u8 taskId); +static void PlayerPCProcessMenuInput(u8 taskId); +static void InitItemStorageMenu(u8 taskId, u8 var); static u8 GetMailboxMailCount(void); static void Mailbox_CompactMailList(void); -static void Mailbox_DrawMailboxMenu(u8); -static void Mailbox_ProcessInput(u8); -static void Mailbox_PrintWhatToDoWithPlayerMailText(u8); +static void Mailbox_DrawMailboxMenu(u8 taskId); +static void Mailbox_ProcessInput(u8 taskId); +static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId); static void Mailbox_ReturnToPlayerPC(u8); -static void Mailbox_PrintMailOptions(u8); -static void Mailbox_MailOptionsProcessInput(u8); +static void Mailbox_PrintMailOptions(u8 taskId); +static void Mailbox_MailOptionsProcessInput(u8 taskId); -static void PlayerPC_ItemStorage(u8); -static void PlayerPC_Mailbox(u8); -static void PlayerPC_Decoration(u8); -static void PlayerPC_TurnOff(u8); +static void PlayerPC_ItemStorage(u8 taskId); +static void PlayerPC_Mailbox(u8 taskId); +static void PlayerPC_Decoration(u8 var); +static void PlayerPC_TurnOff(u8 taskId); -static void Mailbox_DoMailMoveToBag(u8); -static void Mailbox_DoMailRead(u8); -static void Mailbox_MoveToBag(u8); -static void Mailbox_Give(u8); -static void Mailbox_Cancel(u8); +static void Mailbox_DoMailMoveToBag(u8 taskId); +static void Mailbox_DoMailRead(u8 taskId); +static void Mailbox_MoveToBag(u8 taskId); +static void Mailbox_Give(u8 taskId); +static void Mailbox_Cancel(u8 taskId); -static void Mailbox_CancelMoveToBag(u8); -static void Mailbox_HandleConfirmMoveToBag(u8); -static void Mailbox_AskConfirmMoveToBag(u8); -static void Mailbox_DoGiveMailPokeMenu(u8); -static void Mailbox_NoPokemonForMail(u8); +static void Mailbox_CancelMoveToBag(u8 taskId); +static void Mailbox_HandleConfirmMoveToBag(u8 taskId); +static void Mailbox_AskConfirmMoveToBag(u8 taskId); +static void Mailbox_DoGiveMailPokeMenu(u8 taskId); +static void Mailbox_NoPokemonForMail(u8 taskId); -static void Mailbox_FadeAndReadMail(u8); +static void Mailbox_FadeAndReadMail(u8 taskId); static void Mailbox_ReturnToFieldFromReadMail(void); static void Mailbox_ReshowAfterMail(void); -static void Mailbox_HandleReturnToProcessInput(u8); +static void Mailbox_HandleReturnToProcessInput(u8 taskId); static void Mailbox_UpdateMailListAfterDeposit(void); -static void ItemStorage_Withdraw(u8); -static void ItemStorage_Deposit(u8); -static void ItemStorage_Toss(u8); -static void ItemStorage_Exit(u8); -static void ItemStorage_TossItemYes(u8); -static void ItemStorage_TossItemNo(u8); +static void ItemStorage_Withdraw(u8 taskId); +static void ItemStorage_Deposit(u8 taskId); +static void ItemStorage_Toss(u8 taskId); +static void ItemStorage_Exit(u8 taskId); +static void ItemStorage_TossItemYes(u8 taskId); +static void ItemStorage_TossItemNo(u8 taskId); static void ItemStorageMenuPrint(const u8 *); -static void ItemStorageMenuProcessInput(u8); +static void ItemStorageMenuProcessInput(u8 taskId); static void SetPlayerPCListCount(u8); -static void ItemStorage_HandleReturnToProcessInput(u8); +static void ItemStorage_HandleReturnToProcessInput(u8 taskId); -static void ItemStorage_Enter(u8, bool8); -static void ItemStorage_CreateListMenu(u8); -static void ItemStorage_ProcessInput(u8); -static void Task_ItemStorage_Deposit(u8); +static void ItemStorage_Enter(u8 taskId, bool8 toss); +static void ItemStorage_CreateListMenu(u8 taskId); +static void ItemStorage_ProcessInput(u8 taskId); +static void Task_ItemStorage_Deposit(u8 taskId); static void ItemStorage_ReshowAfterBagMenu(void); -static void ItemStorage_DoItemWithdraw(u8); -static void ItemStorage_DoItemToss(u8); -static void ItemStorage_HandleQuantityRolling(u8); -static void ItemStorage_ExitItemList(u8); -static void ItemStorage_StartItemSwap(u8); -static void ItemStorage_DoItemAction(u8); -static void ItemStorage_FinishItemSwap(u8, bool8); -static void ItemStorage_HandleRemoveItem(u8); -static void ItemStorage_HandleErrorMessageInput(u8); -static void ItemStorage_ReturnToListInput(u8); +static void ItemStorage_DoItemWithdraw(u8 taskId); +static void ItemStorage_DoItemToss(u8 taskid); +static void ItemStorage_HandleQuantityRolling(u8 taskid); +static void ItemStorage_ExitItemList(u8 taskId); +static void ItemStorage_StartItemSwap(u8 taskId); +static void ItemStorage_DoItemAction(u8 taskId); +static void ItemStorage_FinishItemSwap(u8 taskId, bool8 a); +static void ItemStorage_HandleRemoveItem(u8 taskId); +static void ItemStorage_HandleErrorMessageInput(u8 taskId); +static void ItemStorage_ReturnToListInput(u8 taskId); static const u8* ItemStorage_GetMessage(u16); -static void CopyItemName_PlayerPC(u8 *, u16); +static void CopyItemName_PlayerPC(u8 *string, u16 itemId); static void ItemStorage_Init(void); -static void ItemStorage_DrawSwapArrow(u8, u8, u8); +static void ItemStorage_DrawSwapArrow(u8 y, u8, u8 speed); static void ItemStorage_RemoveWindow(u8); static void ItemStorage_UpdateSwapLinePos(u8); -static void ItemStorage_ProcessItemSwapInput(u8); +static void ItemStorage_ProcessItemSwapInput(u8 taskId); static void ItemStorage_EraseItemIcon(void); -static void ItemStorage_DrawItemIcon(u16); -static void ItemStorage_PrintDescription(s32); -static void ItemStorage_EraseMainMenu(u8); -static void ItemStorage_MoveCursor(s32, bool8, struct ListMenu *); -static void ItemStorage_PrintMenuItem(u8, u32, u8); +static void ItemStorage_DrawItemIcon(u16 itemId); +static void ItemStorage_PrintDescription(s32 id); +static void ItemStorage_EraseMainMenu(u8 taskId); +static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu * thisMenu); +static void ItemStorage_PrintMenuItem(u8 windowId, u32 id, u8 yOffset); static EWRAM_DATA const u8 *sTopMenuOptionOrder = NULL; static EWRAM_DATA u8 sTopMenuNumOptions = 0; @@ -518,7 +518,7 @@ static void InitItemStorageMenu(u8 taskId, u8 var) static void ItemStorageMenuPrint(const u8 *textPtr) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, textPtr, 0, 1, 0, 0); } @@ -572,7 +572,7 @@ void CB2_PlayerPCExitBagMenu(void) static void ItemStorage_ReshowAfterBagMenu(void) { LoadMessageBoxAndBorderGfx(); - DrawDialogueFrame(0, TRUE); + DrawDialogueFrame(0, 1); InitItemStorageMenu(CreateTask(ItemStorage_HandleReturnToProcessInput, 0), 1); FadeInFromBlack(); } @@ -1241,7 +1241,7 @@ static void ItemStorage_ReturnToMenuSelect(u8 taskId) s16 *data = gTasks[taskId].data; if (!IsDma3ManagerBusyWithBgCopy()) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); // Select Withdraw/Toss by default depending on which was just exited if (!tInTossMenu) diff --git a/src/pokeball.c b/src/pokeball.c index f203633a5..a9ccd42d6 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -438,7 +438,7 @@ static void SpriteCB_BallThrow(struct Sprite *sprite) sprite->y2 = 0; sprite->data[5] = 0; ballId = ItemIdToBallId(GetBattlerPokeballItemId(opponentBattler)); - AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId); + AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, ballId); sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBattler, 14, ballId); sprite->sBattler = opponentBattler; sprite->data[7] = noOfShakes; @@ -752,7 +752,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) StartSpriteAnim(sprite, 1); ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId)); - AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId); + AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, ballId); sprite->data[0] = LaunchBallFadeMonTask(TRUE, sprite->sBattler, 14, ballId); sprite->callback = HandleBallAnimEnd; @@ -1000,50 +1000,37 @@ static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite) #undef sBattler -static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 subpriority) +static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d) { - return AnimateBallOpenParticles(x, y, kindOfStars, subpriority, BALL_POKE); + return AnimateBallOpenParticles(x, y, kindOfStars, d, BALL_POKE); } -static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 spritePalNum, u32 selectedPalettes) +static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 battlerId, u32 arg2) { - return LaunchBallFadeMonTask(unFadeLater, spritePalNum, selectedPalettes, BALL_POKE); + return LaunchBallFadeMonTask(unFadeLater, battlerId, arg2, BALL_POKE); } -// Sprite data for the pokemon -#define sSpecies data[7] - -// Sprite data for the pokeball -#define sMonSpriteId data[0] -#define sDelay data[1] -#define sMonPalNum data[2] -#define sFadePalsLo data[3] -#define sFadePalsHi data[4] -#define sFinalMonX data[5] -#define sFinalMonY data[6] -#define sTrigIdx data[7] - // Pokeball in Birch intro, and when receiving via trade -void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 delay, u32 fadePalettes, u16 species) +void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species) { u8 spriteId; - LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[BALL_POKE]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[BALL_POKE]); - spriteId = CreateSprite(&gBallSpriteTemplates[BALL_POKE], x, y, subpriortiy); + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); + spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subpriortiy); - gSprites[spriteId].sMonSpriteId = monSpriteId; - gSprites[spriteId].sFinalMonX = gSprites[monSpriteId].x; - gSprites[spriteId].sFinalMonY = gSprites[monSpriteId].y; + gSprites[spriteId].data[0] = monSpriteId; + gSprites[spriteId].data[5] = gSprites[monSpriteId].x; + gSprites[spriteId].data[6] = gSprites[monSpriteId].y; gSprites[monSpriteId].x = x; gSprites[monSpriteId].y = y; - gSprites[monSpriteId].sSpecies = species; + gSprites[monSpriteId].data[7] = species; - gSprites[spriteId].sDelay = delay; - gSprites[spriteId].sMonPalNum = monPalNum; - gSprites[spriteId].sFadePalsLo = fadePalettes; - gSprites[spriteId].sFadePalsHi = fadePalettes >> 16; + gSprites[spriteId].data[1] = g; + gSprites[spriteId].data[2] = battlerId; + gSprites[spriteId].data[3] = h; + gSprites[spriteId].data[4] = h >> 0x10; gSprites[spriteId].oam.priority = oamPriority; gSprites[spriteId].callback = SpriteCB_PokeballReleaseMon; @@ -1052,103 +1039,92 @@ void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, static void SpriteCB_PokeballReleaseMon(struct Sprite *sprite) { - if (sprite->sDelay == 0) + if (sprite->data[1] == 0) { - u8 subpriority; - u8 spriteId = sprite->sMonSpriteId; - u8 monPalNum = sprite->sMonPalNum; - u32 selectedPalettes = (u16)sprite->sFadePalsLo | ((u16)sprite->sFadePalsHi << 16); + u8 r5; + u8 r7 = sprite->data[0]; + u8 battlerId = sprite->data[2]; + u32 r4 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16); if (sprite->subpriority != 0) - subpriority = sprite->subpriority - 1; + r5 = sprite->subpriority - 1; else - subpriority = 0; + r5 = 0; StartSpriteAnim(sprite, 1); - AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, subpriority); - // sDelay re-used to store task id but never read - sprite->sDelay = LaunchBallFadeMonTaskForPokeball(1, monPalNum, selectedPalettes); + AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, r5); + sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, battlerId, r4); sprite->callback = SpriteCB_ReleasedMonFlyOut; - gSprites[spriteId].invisible = FALSE; - StartSpriteAffineAnim(&gSprites[spriteId], BATTLER_AFFINE_EMERGE); - AnimateSprite(&gSprites[spriteId]); - gSprites[spriteId].data[1] = 0x1000; - sprite->sTrigIdx = 0; + gSprites[r7].invisible = FALSE; + StartSpriteAffineAnim(&gSprites[r7], BATTLER_AFFINE_EMERGE); + AnimateSprite(&gSprites[r7]); + gSprites[r7].data[1] = 0x1000; + sprite->data[7] = 0; } else { - sprite->sDelay--; + sprite->data[1]--; } } static void SpriteCB_ReleasedMonFlyOut(struct Sprite *sprite) { - bool8 emergeAnimFinished = FALSE; - bool8 atFinalPosition = FALSE; - u8 monSpriteId = sprite->sMonSpriteId; - u16 x, y; + bool8 r12 = FALSE; + bool8 r6 = FALSE; + u8 monSpriteId = sprite->data[0]; + u16 var1; + u16 var2; if (sprite->animEnded) sprite->invisible = TRUE; - if (gSprites[monSpriteId].affineAnimEnded) { StartSpriteAffineAnim(&gSprites[monSpriteId], BATTLER_AFFINE_NORMAL); - emergeAnimFinished = TRUE; + r12 = TRUE; } - - x = (sprite->sFinalMonX - sprite->x) * sprite->sTrigIdx / 128 + sprite->x; - y = (sprite->sFinalMonY - sprite->y) * sprite->sTrigIdx / 128 + sprite->y; - gSprites[monSpriteId].x = x; - gSprites[monSpriteId].y = y; - - if (sprite->sTrigIdx < 128) + var1 = (sprite->data[5] - sprite->x) * sprite->data[7] / 128 + sprite->x; + var2 = (sprite->data[6] - sprite->y) * sprite->data[7] / 128 + sprite->y; + gSprites[monSpriteId].x = var1; + gSprites[monSpriteId].y = var2; + if (sprite->data[7] < 128) { - s16 sine = -(gSineTable[(u8)sprite->sTrigIdx] / 8); + s16 sine = -(gSineTable[(u8)sprite->data[7]] / 8); - sprite->sTrigIdx += 4; + sprite->data[7] += 4; gSprites[monSpriteId].x2 = sine; gSprites[monSpriteId].y2 = sine; } else { - gSprites[monSpriteId].x = sprite->sFinalMonX; - gSprites[monSpriteId].y = sprite->sFinalMonY; + gSprites[monSpriteId].x = sprite->data[5]; + gSprites[monSpriteId].y = sprite->data[6]; gSprites[monSpriteId].x2 = 0; gSprites[monSpriteId].y2 = 0; - atFinalPosition = TRUE; + r6 = TRUE; } - if (sprite->animEnded && emergeAnimFinished && atFinalPosition) + if (sprite->animEnded && r12 && r6) { - if (gSprites[monSpriteId].sSpecies == SPECIES_EGG) - DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].sSpecies, TRUE, 0); + if (gSprites[monSpriteId].data[7] == SPECIES_EGG) + DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], TRUE, 0); else - DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].sSpecies, FALSE, 0); + DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], FALSE, 0); DestroySpriteAndFreeResources(sprite); } } -#undef sSpecies -#undef sFinalMonX -#undef sFinalMonY -#undef sTrigIdx - - -#define sTimer data[5] - -u8 CreateTradePokeballSprite(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 delay, u32 fadePalettes) +u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h) { u8 spriteId; - LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[BALL_POKE]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[BALL_POKE]); - spriteId = CreateSprite(&gBallSpriteTemplates[BALL_POKE], x, y, subPriority); - gSprites[spriteId].sMonSpriteId = monSpriteId; - gSprites[spriteId].sDelay = delay; - gSprites[spriteId].sMonPalNum = monPalNum; - gSprites[spriteId].sFadePalsLo = fadePalettes; - gSprites[spriteId].sFadePalsHi = fadePalettes >> 16; + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); + spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subPriority); + gSprites[spriteId].data[0] = a; + gSprites[spriteId].data[1] = g; + gSprites[spriteId].data[2] = b; + gSprites[spriteId].data[3] = h; + gSprites[spriteId].data[4] = h >> 16; gSprites[spriteId].oam.priority = oamPriority; gSprites[spriteId].callback = SpriteCB_TradePokeball; return spriteId; @@ -1156,22 +1132,21 @@ u8 CreateTradePokeballSprite(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPri static void SpriteCB_TradePokeball(struct Sprite *sprite) { - if (sprite->sDelay == 0) + if (sprite->data[1] == 0) { - u8 subpriority; - u8 monSpriteId = sprite->sMonSpriteId; - u8 monPalNum = sprite->sMonPalNum; - u32 selectedPalettes = (u16)sprite->sFadePalsLo | ((u16)sprite->sFadePalsHi << 16); + u8 r6; + u8 monSpriteId = sprite->data[0]; + u8 r8 = sprite->data[2]; + u32 r5 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16); if (sprite->subpriority != 0) - subpriority = sprite->subpriority - 1; + r6 = sprite->subpriority - 1; else - subpriority = 0; + r6 = 0; StartSpriteAnim(sprite, 1); - AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, subpriority); - // sDelay re-used to store task id but never read - sprite->sDelay = LaunchBallFadeMonTaskForPokeball(1, monPalNum, selectedPalettes); + AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, r6); + sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5); sprite->callback = SpriteCB_TradePokeballSendOff; #ifdef BUGFIX // FIX: If this is used on a sprite that has previously had an affine animation, it will not @@ -1184,7 +1159,7 @@ static void SpriteCB_TradePokeball(struct Sprite *sprite) } else { - sprite->sDelay--; + sprite->data[1]--; } } @@ -1192,16 +1167,15 @@ static void SpriteCB_TradePokeballSendOff(struct Sprite *sprite) { u8 monSpriteId; - sprite->sTimer++; - if (sprite->sTimer == 11) + sprite->data[5]++; + if (sprite->data[5] == 11) PlaySE(SE_BALL_TRADE); - - monSpriteId = sprite->sMonSpriteId; + monSpriteId = sprite->data[0]; if (gSprites[monSpriteId].affineAnimEnded) { StartSpriteAnim(sprite, 2); gSprites[monSpriteId].invisible = TRUE; - sprite->sTimer = 0; + sprite->data[5] = 0; sprite->callback = SpriteCB_TradePokeballEnd; } else @@ -1217,13 +1191,6 @@ static void SpriteCB_TradePokeballEnd(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; } -#undef sMonSpriteId -#undef sDelay -#undef sMonPalNum -#undef sFadePalsLo -#undef sFadePalsHi -#undef sTimer - static void Unref_DestroySpriteAndFreeResources(struct Sprite *sprite) { DestroySpriteAndFreeResources(sprite); diff --git a/src/pokedex.c b/src/pokedex.c index 9592aee9c..206782e59 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -840,7 +840,7 @@ static const u8 sText_No000[] = _("{NO}000"); static const u8 sCaughtBall_Gfx[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); static const u8 sText_TenDashes[] = _("----------"); -ALIGNED(4) static const u8 sExpandedPlaceholder_PokedexDescription[] = _(""); +ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _(""); #include "data/pokemon/pokedex_text.h" #include "data/pokemon/pokedex_entries.h" @@ -4138,7 +4138,7 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) if (owned) description = gPokedexEntries[num].description; else - description = sExpandedPlaceholder_PokedexDescription; + description = gExpandedPlaceholder_PokedexDescription; PrintInfoScreenText(description, GetStringCenterAlignXOffset(FONT_NORMAL, description, 0xF0), 0x5F); } @@ -4428,37 +4428,37 @@ bool16 HasAllMons(void) return TRUE; } -static void ResetOtherVideoRegisters(u16 regBits) +static void ResetOtherVideoRegisters(u16 a) { - if (!(regBits & DISPCNT_BG0_ON)) + if (!(a & DISPCNT_BG0_ON)) { ClearGpuRegBits(0, DISPCNT_BG0_ON); SetGpuReg(REG_OFFSET_BG0CNT, 0); SetGpuReg(REG_OFFSET_BG0HOFS, 0); SetGpuReg(REG_OFFSET_BG0VOFS, 0); } - if (!(regBits & DISPCNT_BG1_ON)) + if (!(a & DISPCNT_BG1_ON)) { ClearGpuRegBits(0, DISPCNT_BG1_ON); SetGpuReg(REG_OFFSET_BG1CNT, 0); SetGpuReg(REG_OFFSET_BG1HOFS, 0); SetGpuReg(REG_OFFSET_BG1VOFS, 0); } - if (!(regBits & DISPCNT_BG2_ON)) + if (!(a & DISPCNT_BG2_ON)) { ClearGpuRegBits(0, DISPCNT_BG2_ON); SetGpuReg(REG_OFFSET_BG2CNT, 0); SetGpuReg(REG_OFFSET_BG2HOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0); } - if (!(regBits & DISPCNT_BG3_ON)) + if (!(a & DISPCNT_BG3_ON)) { ClearGpuRegBits(0, DISPCNT_BG3_ON); SetGpuReg(REG_OFFSET_BG3CNT, 0); SetGpuReg(REG_OFFSET_BG3HOFS, 0); SetGpuReg(REG_OFFSET_BG3VOFS, 0); } - if (!(regBits & DISPCNT_OBJ_ON)) + if (!(a & DISPCNT_OBJ_ON)) { ClearGpuRegBits(0, DISPCNT_OBJ_ON); ResetSpriteData(); diff --git a/src/pokedex_area_region_map.c b/src/pokedex_area_region_map.c index ff32f8eef..4926c019d 100644 --- a/src/pokedex_area_region_map.c +++ b/src/pokedex_area_region_map.c @@ -63,7 +63,7 @@ void FreePokedexAreaMapBgNum(void) TRY_FREE_AND_SET_NULL(sPokedexAreaMapBgNum); } -void PokedexAreaMapChangeBgY(u32 move) +void PokedexAreaMapChangeBgY(u32 a0) { - ChangeBgY(*sPokedexAreaMapBgNum, move * 0x100, BG_COORD_SET); + ChangeBgY(*sPokedexAreaMapBgNum, a0 * 0x100, BG_COORD_SET); } diff --git a/src/pokemon.c b/src/pokemon.c index 170425391..61125e362 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2464,7 +2464,7 @@ void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPok if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) level = GetFrontierEnemyMonLevel(gSaveBlock2Ptr->frontier.lvlMode); else if (lvl50) - level = FRONTIER_MAX_LEVEL_50; + level = 50; else level = src->level; @@ -5379,10 +5379,10 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) return offset; } -static void BufferStatRoseMessage(s32 statIdx) +static void BufferStatRoseMessage(s32 arg0) { gBattlerTarget = gBattlerInMenuId; - StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[statIdx]]); + StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[arg0]]); StringCopy(gBattleTextBuff2, gText_StatRose); BattleStringExpandPlaceholdersToDisplayedString(gText_DefendersStatRose); } @@ -5798,13 +5798,13 @@ u16 GetLinkTrainerFlankId(u8 linkPlayerId) return flankId; } -s32 GetBattlerMultiplayerId(u16 id) +s32 GetBattlerMultiplayerId(u16 a1) { - s32 multiplayerId; - for (multiplayerId = 0; multiplayerId < MAX_LINK_PLAYERS; multiplayerId++) - if (gLinkPlayers[multiplayerId].id == id) + s32 id; + for (id = 0; id < MAX_LINK_PLAYERS; id++) + if (gLinkPlayers[id].id == a1) break; - return multiplayerId; + return id; } u8 GetTrainerEncounterMusicId(u16 trainerOpponentId) @@ -6587,12 +6587,12 @@ void SetWildMonHeldItem(void) u16 rnd = Random() % 100; u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0); u16 chanceNoItem = 45; - u16 chanceNotRare = 95; + u16 chanceCommon = 95; if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0) && GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES) { chanceNoItem = 20; - chanceNotRare = 80; + chanceCommon = 80; } if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE) { @@ -6600,7 +6600,7 @@ void SetWildMonHeldItem(void) if (alteringCaveId != 0) { // In active Altering Cave, use special item list - if (rnd < chanceNotRare) + if (rnd < chanceCommon) return; SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &sAlteringCaveWildMonHeldItems[alteringCaveId].item); } @@ -6609,27 +6609,27 @@ void SetWildMonHeldItem(void) // In inactive Altering Cave, use normal items if (rnd < chanceNoItem) return; - if (rnd < chanceNotRare) - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + if (rnd < chanceCommon) + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); else - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemRare); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2); } } else { - if (gBaseStats[species].itemCommon == gBaseStats[species].itemRare && gBaseStats[species].itemCommon != ITEM_NONE) + if (gBaseStats[species].item1 == gBaseStats[species].item2 && gBaseStats[species].item1 != ITEM_NONE) { // Both held items are the same, 100% chance to hold item - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); } else { if (rnd < chanceNoItem) return; - if (rnd < chanceNotRare) - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + if (rnd < chanceCommon) + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); else - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemRare); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2); } } } diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index 32333ee67..f6aa82391 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -2205,7 +2205,7 @@ static bool32 AreLinkQueuesEmpty(void) return !gRfu.recvQueue.count && !gRfu.sendQueue.count; } -static int GetNumPlayersForBonus(u8 *atJumpPeak) +static int GetNumPlayersForBonus(u8 *arg0) { int i = 0; int flags = 0; @@ -2213,7 +2213,7 @@ static int GetNumPlayersForBonus(u8 *atJumpPeak) for (; i < MAX_RFU_PLAYERS; i++) { - if (atJumpPeak[i]) + if (arg0[i]) { flags |= 1 << i; count++; @@ -3612,6 +3612,7 @@ static u32 AddMessageWindow(u32 left, u32 top, u32 width, u32 height) static void CreatePokeJumpYesNoMenu(u16 left, u16 top, u8 cursorPos) { struct WindowTemplate window; + u8 a = cursorPos; window.bg = BG_INTERFACE; window.tilemapLeft = left; @@ -3621,7 +3622,7 @@ static void CreatePokeJumpYesNoMenu(u16 left, u16 top, u8 cursorPos) window.paletteNum = 2; window.baseBlock = 0x2B; - CreateYesNoMenu(&window, 1, 0xD, cursorPos); + CreateYesNoMenu(&window, 1, 0xD, a); } // "Points" for jump score and "times" for number of jumps in a row diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 008fae3c9..70d84b7e4 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -654,6 +654,7 @@ static void SetMovingMonPriority(u8); static void SpriteCB_HeldMon(struct Sprite *); static struct Sprite *CreateMonIconSprite(u16, u32, s16, s16, u8, u8); static void DestroyBoxMonIcon(struct Sprite *); +extern void UpdateFollowerPokemonGraphic(void); // Pokémon data static void MoveMon(void); @@ -1040,7 +1041,7 @@ static const struct BgTemplate sBgTemplates[] = }, }; -static const struct SpritePalette sWaveformSpritePalette = +static const struct SpritePalette gWaveformSpritePalette = { sWaveform_Pal, PALTAG_MISC_2 }; @@ -1695,6 +1696,7 @@ static void CB2_ExitPokeStorage(void) { sPreviousBoxOption = GetCurrentBoxOption(); gFieldCallback = FieldTask_ReturnToPcMenu; + UpdateFollowerPokemonGraphic(); SetMainCallback2(CB2_ReturnToField); } @@ -3844,7 +3846,7 @@ static bool8 InitPokeStorageWindows(void) static void LoadWaveformSpritePalette(void) { - LoadSpritePalette(&sWaveformSpritePalette); + LoadSpritePalette(&gWaveformSpritePalette); } static void InitPalettesAndSprites(void) @@ -5417,7 +5419,8 @@ static bool32 WaitForWallpaperGfxLoad(void) if (IsDma3ManagerBusyWithBgCopy()) return FALSE; - TRY_FREE_AND_SET_NULL(sStorage->wallpaperTiles); + if (sStorage->wallpaperTiles != NULL) + FREE_AND_SET_NULL(sStorage->wallpaperTiles); return TRUE; } @@ -8475,11 +8478,11 @@ static void MultiMove_ClearIconFromBg(u8 x, u8 y) } } -static void MultiMove_InitMove(u16 x, u16 y, u16 moveSteps) +static void MultiMove_InitMove(u16 x, u16 y, u16 arg2) { sMultiMove->bgX = x; sMultiMove->bgY = y; - sMultiMove->bgMoveSteps = moveSteps; + sMultiMove->bgMoveSteps = arg2; } static u8 MultiMove_UpdateMove(void) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index c25d58ae6..10c69a422 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -195,62 +195,62 @@ static bool8 LoadGraphics(void); static void CB2_InitSummaryScreen(void); static void InitBGs(void); static bool8 DecompressGraphics(void); -static void CopyMonToSummaryStruct(struct Pokemon*); -static bool8 ExtractMonDataToSummaryStruct(struct Pokemon*); +static void CopyMonToSummaryStruct(struct Pokemon* a); +static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); static void SetDefaultTilemaps(void); -static void CloseSummaryScreen(u8); -static void Task_HandleInput(u8); -static void ChangeSummaryPokemon(u8, s8); -static void Task_ChangeSummaryMon(u8); -static s8 AdvanceMonIndex(s8); -static s8 AdvanceMultiBattleMonIndex(s8); -static bool8 IsValidToViewInMulti(struct Pokemon*); -static void ChangePage(u8, s8); -static void PssScrollRight(u8); -static void PssScrollRightEnd(u8); -static void PssScrollLeft(u8); -static void PssScrollLeftEnd(u8); +static void CloseSummaryScreen(u8 taskId); +static void Task_HandleInput(u8 taskId); +static void ChangeSummaryPokemon(u8 taskId, s8 a); +static void Task_ChangeSummaryMon(u8 taskId); +static s8 AdvanceMonIndex(s8 delta); +static s8 AdvanceMultiBattleMonIndex(s8 delta); +static bool8 IsValidToViewInMulti(struct Pokemon* mon); +static void ChangePage(u8 taskId, s8 a); +static void PssScrollRight(u8 taskId); +static void PssScrollRightEnd(u8 taskId); +static void PssScrollLeft(u8 taskId); +static void PssScrollLeftEnd(u8 taskId); static void TryDrawExperienceProgressBar(void); -static void SwitchToMoveSelection(u8); -static void Task_HandleInput_MoveSelect(u8); +static void SwitchToMoveSelection(u8 taskId); +static void Task_HandleInput_MoveSelect(u8 taskId); static bool8 HasMoreThanOneMove(void); -static void ChangeSelectedMove(s16 *, s8, u8 *); -static void CloseMoveSelectMode(u8); -static void SwitchToMovePositionSwitchMode(u8); -static void Task_HandleInput_MovePositionSwitch(u8); -static void ExitMovePositionSwitchMode(u8, bool8); -static void SwapMonMoves(struct Pokemon *, u8, u8); -static void SwapBoxMonMoves(struct BoxPokemon *, u8, u8); -static void Task_SetHandleReplaceMoveInput(u8); -static void Task_HandleReplaceMoveInput(u8); +static void ChangeSelectedMove(s16 *taskData, s8 direction, u8 *moveIndexPtr); +static void CloseMoveSelectMode(u8 taskId); +static void SwitchToMovePositionSwitchMode(u8 a); +static void Task_HandleInput_MovePositionSwitch(u8 taskId); +static void ExitMovePositionSwitchMode(u8 taskId, bool8 swapMoves); +static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2); +static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2); +static void Task_SetHandleReplaceMoveInput(u8 taskId); +static void Task_HandleReplaceMoveInput(u8 taskId); static bool8 CanReplaceMove(void); -static void ShowCantForgetHMsWindow(u8); -static void Task_HandleInputCantForgetHMsMoves(u8); +static void ShowCantForgetHMsWindow(u8 taskId); +static void Task_HandleInputCantForgetHMsMoves(u8 taskId); static void DrawPagination(void); -static void HandlePowerAccTilemap(u16, s16); -static void Task_ShowPowerAccWindow(u8); -static void HandleAppealJamTilemap(u16, s16, u16); -static void Task_ShowAppealJamWindow(u8); -static void HandleStatusTilemap(u16, s16); -static void Task_ShowStatusWindow(u8); -static void TilemapFiveMovesDisplay(u16 *, u16, bool8); -static void DrawPokerusCuredSymbol(struct Pokemon*); -static void DrawExperienceProgressBar(struct Pokemon*); -static void DrawContestMoveHearts(u16); +static void HandlePowerAccTilemap(u16 a, s16 b); +static void Task_ShowPowerAccWindow(u8 taskId); +static void HandleAppealJamTilemap(u16 a, s16 b, u16 c); +static void Task_ShowAppealJamWindow(u8 taskId); +static void HandleStatusTilemap(u16 a, s16 b); +static void Task_ShowStatusWindow(u8 taskId); +static void TilemapFiveMovesDisplay(u16 *dst, u16 palette, bool8 remove); +static void DrawPokerusCuredSymbol(struct Pokemon* mon); +static void DrawExperienceProgressBar(struct Pokemon* mon); +static void DrawContestMoveHearts(u16 move); static void LimitEggSummaryPageDisplay(void); static void ResetWindows(void); static void PrintMonInfo(void); static void PrintNotEggInfo(void); static void PrintEggInfo(void); -static void PrintGenderSymbol(struct Pokemon *, u16); +static void PrintGenderSymbol(struct Pokemon *mon, u16 a); static void PrintPageNamesAndStats(void); -static void PutPageWindowTilemaps(u8); -static void ClearPageWindowTilemaps(u8); -static void RemoveWindowByIndex(u8); -static void PrintPageSpecificText(u8); -static void CreateTextPrinterTask(u8); +static void PutPageWindowTilemaps(u8 a); +static void ClearPageWindowTilemaps(u8 a); +static void RemoveWindowByIndex(u8 a); +static void PrintPageSpecificText(u8 a); +static void CreateTextPrinterTask(u8 a); static void PrintInfoPageText(void); -static void Task_PrintInfoPage(u8); +static void Task_PrintInfoPage(u8 taskId); static void PrintMonOTName(void); static void PrintMonOTID(void); static void PrintMonAbilityName(void); @@ -258,7 +258,7 @@ static void PrintMonAbilityDescription(void); static void BufferMonTrainerMemo(void); static void PrintMonTrainerMemo(void); static void BufferNatureString(void); -static void GetMetLevelString(u8 *); +static void GetMetLevelString(u8 *a); static bool8 DoesMonOTMatchOwner(void); static bool8 DidMonComeFromGBAGames(void); static bool8 IsInGamePartnerMon(void); @@ -266,7 +266,7 @@ static void PrintEggOTName(void); static void PrintEggOTID(void); static void PrintEggState(void); static void PrintEggMemo(void); -static void Task_PrintSkillsPage(u8); +static void Task_PrintSkillsPage(u8 taskId); static void PrintHeldItemName(void); static void PrintSkillsPageText(void); static void PrintRibbonCount(void); @@ -276,18 +276,18 @@ static void BufferRightColumnStats(void); static void PrintRightColumnStats(void); static void PrintExpPointsNextLevel(void); static void PrintBattleMoves(void); -static void Task_PrintBattleMoves(u8); -static void PrintMoveNameAndPP(u8); +static void Task_PrintBattleMoves(u8 taskId); +static void PrintMoveNameAndPP(u8 a); static void PrintContestMoves(void); -static void Task_PrintContestMoves(u8); -static void PrintContestMoveDescription(u8); -static void PrintMoveDetails(u16); +static void Task_PrintContestMoves(u8 taskId); +static void PrintContestMoveDescription(u8 a); +static void PrintMoveDetails(u16 a); static void PrintNewMoveDetailsOrCancelText(void); static void AddAndFillMoveNamesWindow(void); -static void SwapMovesNamesPP(u8, u8); +static void SwapMovesNamesPP(u8 moveIndex1, u8 moveIndex2); static void PrintHMMovesCantBeForgotten(void); static void ResetSpriteIds(void); -static void SetSpriteInvisibility(u8, bool8); +static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible); static void HidePageSpecificSprites(void); static void SetTypeIcons(void); static void CreateMoveTypeIcons(void); @@ -295,20 +295,20 @@ static void SetMonTypeIcons(void); static void SetMoveTypeIcons(void); static void SetContestMoveTypeIcons(void); static void SetNewMoveTypeIcon(void); -static void SwapMovesTypeSprites(u8, u8); -static u8 LoadMonGfxAndSprite(struct Pokemon *, s16 *); -static u8 CreateMonSprite(struct Pokemon *); +static void SwapMovesTypeSprites(u8 moveIndex1, u8 moveIndex2); +static u8 LoadMonGfxAndSprite(struct Pokemon *a, s16 *b); +static u8 CreateMonSprite(struct Pokemon *unused); static void SpriteCB_Pokemon(struct Sprite *); static void StopPokemonAnimations(void); -static void CreateMonMarkingsSprite(struct Pokemon *); -static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *); -static void CreateCaughtBallSprite(struct Pokemon *); +static void CreateMonMarkingsSprite(struct Pokemon *mon); +static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); +static void CreateCaughtBallSprite(struct Pokemon *mon); static void CreateSetStatusSprite(void); -static void CreateMoveSelectorSprites(u8); -static void SpriteCb_MoveSelector(struct Sprite *); -static void DestroyMoveSelectorSprites(u8); -static void SetMainMoveSelectorColor(u8); -static void KeepMoveSelectorVisible(u8); +static void CreateMoveSelectorSprites(u8 idArrayStart); +static void SpriteCb_MoveSelector(struct Sprite *sprite); +static void DestroyMoveSelectorSprites(u8 firstArrayId); +static void SetMainMoveSelectorColor(u8 whichColor); +static void KeepMoveSelectorVisible(u8 firstSpriteId); static void SummaryScreen_DestroyAnimDelayTask(void); // const rom data @@ -2314,69 +2314,69 @@ u8 GetMoveSlotToReplace(void) static void DrawPagination(void) // Updates the pagination dots at the top of the summary screen { - u16 *tilemap = Alloc(8 * PSS_PAGE_COUNT); + u16 *alloced = Alloc(32); u8 i; - for (i = 0; i < PSS_PAGE_COUNT; i++) + for (i = 0; i < 4; i++) { u8 j = i * 2; if (i < sMonSummaryScreen->minPageIndex) { - tilemap[j + 0] = 0x40; - tilemap[j + 1] = 0x40; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x50; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x50; + alloced[j + 0] = 0x40; + alloced[j + 1] = 0x40; + alloced[j + 8] = 0x50; + alloced[j + 9] = 0x50; } else if (i > sMonSummaryScreen->maxPageIndex) { - tilemap[j + 0] = 0x4A; - tilemap[j + 1] = 0x4A; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x5A; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x5A; + alloced[j + 0] = 0x4A; + alloced[j + 1] = 0x4A; + alloced[j + 8] = 0x5A; + alloced[j + 9] = 0x5A; } else if (i < sMonSummaryScreen->currPageIndex) { - tilemap[j + 0] = 0x46; - tilemap[j + 1] = 0x47; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x56; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x57; + alloced[j + 0] = 0x46; + alloced[j + 1] = 0x47; + alloced[j + 8] = 0x56; + alloced[j + 9] = 0x57; } else if (i == sMonSummaryScreen->currPageIndex) { if (i != sMonSummaryScreen->maxPageIndex) { - tilemap[j + 0] = 0x41; - tilemap[j + 1] = 0x42; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x51; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x52; + alloced[j + 0] = 0x41; + alloced[j + 1] = 0x42; + alloced[j + 8] = 0x51; + alloced[j + 9] = 0x52; } else { - tilemap[j + 0] = 0x4B; - tilemap[j + 1] = 0x4C; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x5B; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x5C; + alloced[j + 0] = 0x4B; + alloced[j + 1] = 0x4C; + alloced[j + 8] = 0x5B; + alloced[j + 9] = 0x5C; } } else if (i != sMonSummaryScreen->maxPageIndex) { - tilemap[j + 0] = 0x43; - tilemap[j + 1] = 0x44; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x53; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x54; + alloced[j + 0] = 0x43; + alloced[j + 1] = 0x44; + alloced[j + 8] = 0x53; + alloced[j + 9] = 0x54; } else { - tilemap[j + 0] = 0x48; - tilemap[j + 1] = 0x49; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x58; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x59; + alloced[j + 0] = 0x48; + alloced[j + 1] = 0x49; + alloced[j + 8] = 0x58; + alloced[j + 9] = 0x59; } } - CopyToBgTilemapBufferRect_ChangePalette(3, tilemap, 11, 0, PSS_PAGE_COUNT * 2, 2, 16); + CopyToBgTilemapBufferRect_ChangePalette(3, alloced, 11, 0, 8, 2, 16); ScheduleBgCopyTilemapToVram(3); - Free(tilemap); + Free(alloced); } static void ChangeTilemap(const struct TilemapCtrl *unkStruct, u16 *dest, u8 c, bool8 d) @@ -2439,7 +2439,7 @@ static void Task_ShowPowerAccWindow(u8 taskId) { if (data[0] < 0) { - if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES) + if (sMonSummaryScreen->currPageIndex == 2) PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); } else @@ -2492,7 +2492,7 @@ static void Task_ShowAppealJamWindow(u8 taskId) { if (data[0] < 0) { - if (sMonSummaryScreen->currPageIndex == PSS_PAGE_CONTEST_MOVES && FuncIsActiveTask(PssScrollRight) == 0) + if (sMonSummaryScreen->currPageIndex == 3 && FuncIsActiveTask(PssScrollRight) == 0) PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); DrawContestMoveHearts(data[2]); } diff --git a/src/pokenav.c b/src/pokenav.c index 03f48ee36..f9a6614a8 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -37,16 +37,16 @@ struct PokenavCallbacks static u32 GetCurrentMenuCB(void); static u32 IsActiveMenuLoopTaskActive_(void); -static bool32 SetActivePokenavMenu(u32); +static bool32 SetActivePokenavMenu(u32 menuId); static bool32 AnyMonHasRibbon(void); -static void InitPokenavResources(struct PokenavResources *); +static void InitPokenavResources(struct PokenavResources *a0); static void InitKeys_(void); static void FreePokenavResources(void); static void VBlankCB_Pokenav(void); static void CB2_Pokenav(void); -static void Task_RunLoopedTask_LinkMode(u8); -static void Task_RunLoopedTask(u8); -static void Task_Pokenav(u8); +static void Task_RunLoopedTask_LinkMode(u8 a0); +static void Task_RunLoopedTask(u8 taskId); +static void Task_Pokenav(u8 taskId); static void CB2_InitPokenavForTutorial(void); const struct PokenavCallbacks PokenavMenuCallbacks[15] = @@ -557,7 +557,8 @@ void *GetSubstructPtr(u32 index) void FreePokenavSubstruct(u32 index) { - TRY_FREE_AND_SET_NULL(gPokenavResources->substructPtrs[index]); + if (gPokenavResources->substructPtrs[index] != NULL) + FREE_AND_SET_NULL(gPokenavResources->substructPtrs[index]); } u32 GetPokenavMode(void) diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c index e0645bac0..94ed4e8d8 100644 --- a/src/pokenav_conditions.c +++ b/src/pokenav_conditions.c @@ -332,7 +332,7 @@ u8 *CopyStringLeftAlignedToConditionData(u8 *dst, const u8 *src, s16 n) return dst; } -static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 skipPadding) +static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 arg3) { u16 boxId, monId, gender, species, level, lvlDigits; struct BoxPokemon *boxMon; @@ -412,7 +412,7 @@ static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 skipPadding) str_ = ConvertIntToDecimalStringN(str_, level, STR_CONV_MODE_LEFT_ALIGN, 3); lvlDigits = str_ - txtPtr; *(str_++) = CHAR_SPACE; - if (!skipPadding) + if (!arg3) { lvlDigits = 3 - lvlDigits; while (lvlDigits-- != 0) diff --git a/src/pokenav_list.c b/src/pokenav_list.c index 350a78504..bdba1d2c0 100644 --- a/src/pokenav_list.c +++ b/src/pokenav_list.c @@ -40,7 +40,7 @@ struct PokenavListWindowState { struct PokenavListSub { struct PokenavListMenuWindow listWindow; - u32 printStart; + u32 unk10; u32 printIndex; u32 itemSize; void * listPtr; @@ -59,7 +59,7 @@ struct PokenavListSub struct PokenavList { - struct PokenavListSub sub; + struct PokenavListSub list; u8 tilemapBuffer[BG_SCREEN_SIZE]; struct PokenavListWindowState windowState; s32 eraseIndex; @@ -100,12 +100,12 @@ static EWRAM_DATA u32 sMoveWindowDownIndex = 0; // Read, but pointlessly bool32 CreatePokenavList(const struct BgTemplate *bgTemplate, struct PokenavListTemplate *listTemplate, s32 tileOffset) { - struct PokenavList *list = AllocSubstruct(POKENAV_SUBSTRUCT_LIST, sizeof(struct PokenavList)); - if (list == NULL) + struct PokenavList *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_LIST, sizeof(struct PokenavList)); + if (structPtr == NULL) return FALSE; - InitPokenavListWindowState(&list->windowState, listTemplate); - if (!CopyPokenavListMenuTemplate(&list->sub, bgTemplate, listTemplate, tileOffset)) + InitPokenavListWindowState(&structPtr->windowState, listTemplate); + if (!CopyPokenavListMenuTemplate(&structPtr->list, bgTemplate, listTemplate, tileOffset)) return FALSE; CreateLoopedTask(LoopedTask_CreatePokenavList, 6); @@ -119,31 +119,31 @@ bool32 IsCreatePokenavListTaskActive(void) void DestroyPokenavList(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - DestroyListArrows(&list->sub); - RemoveWindow(list->sub.listWindow.windowId); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + DestroyListArrows(&structPtr->list); + RemoveWindow(structPtr->list.listWindow.windowId); FreePokenavSubstruct(POKENAV_SUBSTRUCT_LIST); } static u32 LoopedTask_CreatePokenavList(s32 state) { - struct PokenavList *list; + struct PokenavList *structPtr; if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; - list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - InitPokenavListBg(list); + InitPokenavListBg(structPtr); return LT_INC_AND_PAUSE; case 1: - InitPokenavListWindow(&list->sub.listWindow); + InitPokenavListWindow(&structPtr->list.listWindow); return LT_INC_AND_PAUSE; case 2: - InitListItems(&list->windowState, &list->sub); + InitListItems(&structPtr->windowState, &structPtr->list); return LT_INC_AND_PAUSE; case 3: if (IsPrintListItemsTaskActive()) @@ -156,24 +156,24 @@ static u32 LoopedTask_CreatePokenavList(s32 state) return LT_INC_AND_CONTINUE; } case 4: - CreateListArrowSprites(&list->windowState, &list->sub); + CreateListArrowSprites(&structPtr->windowState, &structPtr->list); return LT_FINISH; default: return LT_FINISH; } } -static void InitPokenavListBg(struct PokenavList *list) +static void InitPokenavListBg(struct PokenavList *a0) { - u16 tileNum = (list->sub.listWindow.fillValue << 12) | list->sub.listWindow.tileOffset; - BgDmaFill(list->sub.listWindow.bg, PIXEL_FILL(1), list->sub.listWindow.tileOffset, 1); - BgDmaFill(list->sub.listWindow.bg, PIXEL_FILL(4), list->sub.listWindow.tileOffset + 1, 1); - SetBgTilemapBuffer(list->sub.listWindow.bg, list->tilemapBuffer); - FillBgTilemapBufferRect_Palette0(list->sub.listWindow.bg, tileNum, 0, 0, 32, 32); - ChangeBgY(list->sub.listWindow.bg, 0, BG_COORD_SET); - ChangeBgX(list->sub.listWindow.bg, 0, BG_COORD_SET); - ChangeBgY(list->sub.listWindow.bg, list->sub.listWindow.y << 11, BG_COORD_SUB); - CopyBgTilemapBufferToVram(list->sub.listWindow.bg); + u16 tileNum = (a0->list.listWindow.fillValue << 12) | a0->list.listWindow.tileOffset; + BgDmaFill(a0->list.listWindow.bg, PIXEL_FILL(1), a0->list.listWindow.tileOffset, 1); + BgDmaFill(a0->list.listWindow.bg, PIXEL_FILL(4), a0->list.listWindow.tileOffset + 1, 1); + SetBgTilemapBuffer(a0->list.listWindow.bg, a0->tilemapBuffer); + FillBgTilemapBufferRect_Palette0(a0->list.listWindow.bg, tileNum, 0, 0, 32, 32); + ChangeBgY(a0->list.listWindow.bg, 0, BG_COORD_SET); + ChangeBgX(a0->list.listWindow.bg, 0, BG_COORD_SET); + ChangeBgY(a0->list.listWindow.bg, a0->list.listWindow.y << 11, BG_COORD_SUB); + CopyBgTilemapBufferToVram(a0->list.listWindow.bg); } static void InitPokenavListWindow(struct PokenavListMenuWindow *listWindow) @@ -183,16 +183,16 @@ static void InitPokenavListWindow(struct PokenavListMenuWindow *listWindow) CopyWindowToVram(listWindow->windowId, COPYWIN_MAP); } -static void InitListItems(struct PokenavListWindowState *windowState, struct PokenavListSub *subPtr) +static void InitListItems(struct PokenavListWindowState *windowState, struct PokenavListSub *a1) { s32 numToPrint = windowState->listLength - windowState->windowTopIndex; if (numToPrint > windowState->entriesOnscreen) numToPrint = windowState->entriesOnscreen; - PrintListItems(windowState->listPtr, windowState->windowTopIndex, numToPrint, windowState->listItemSize, 0, subPtr); + PrintListItems(windowState->listPtr, windowState->windowTopIndex, numToPrint, windowState->listItemSize, 0, a1); } -static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemSize, u32 printStart, struct PokenavListSub *list) +static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemSize, u32 a4, struct PokenavListSub *list) { if (numItems == 0) return; @@ -202,7 +202,7 @@ static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemS list->listWindow.numPrinted = 0; list->listWindow.numToPrint = numItems; list->printIndex = topIndex; - list->printStart = printStart; + list->unk10 = a4; CreateLoopedTask(LoopedTask_PrintListItems, 5); } @@ -214,31 +214,31 @@ static bool32 IsPrintListItemsTaskActive(void) static u32 LoopedTask_PrintListItems(s32 state) { u32 row; - struct PokenavListSub *listSub = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListSub *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - row = (listSub->listWindow.unkA + listSub->listWindow.numPrinted + listSub->printStart) & 0xF; - listSub->bufferItemFunc(listSub->listPtr, listSub->itemTextBuffer); - if (listSub->iconDrawFunc != NULL) - listSub->iconDrawFunc(listSub->listWindow.windowId, listSub->printIndex, row); + row = (structPtr->listWindow.unkA + structPtr->listWindow.numPrinted + structPtr->unk10) & 0xF; + structPtr->bufferItemFunc(structPtr->listPtr, structPtr->itemTextBuffer); + if (structPtr->iconDrawFunc != NULL) + structPtr->iconDrawFunc(structPtr->listWindow.windowId, structPtr->printIndex, row); - AddTextPrinterParameterized(listSub->listWindow.windowId, listSub->listWindow.fontId, listSub->itemTextBuffer, 8, (row << 4) + 1, TEXT_SKIP_DRAW, NULL); - if (++listSub->listWindow.numPrinted >= listSub->listWindow.numToPrint) + AddTextPrinterParameterized(structPtr->listWindow.windowId, structPtr->listWindow.fontId, structPtr->itemTextBuffer, 8, (row << 4) + 1, TEXT_SKIP_DRAW, NULL); + if (++structPtr->listWindow.numPrinted >= structPtr->listWindow.numToPrint) { // Finished printing items. If icons were being drawn, draw the // window tilemap and graphics. Otherwise just do the graphics - if (listSub->iconDrawFunc != NULL) - CopyWindowToVram(listSub->listWindow.windowId, COPYWIN_FULL); + if (structPtr->iconDrawFunc != NULL) + CopyWindowToVram(structPtr->listWindow.windowId, COPYWIN_FULL); else - CopyWindowToVram(listSub->listWindow.windowId, COPYWIN_GFX); + CopyWindowToVram(structPtr->listWindow.windowId, COPYWIN_GFX); return LT_INC_AND_PAUSE; } else { - listSub->listPtr += listSub->itemSize; - listSub->printIndex++; + structPtr->listPtr += structPtr->itemSize; + structPtr->printIndex++; return LT_CONTINUE; } case 1: @@ -251,42 +251,42 @@ static u32 LoopedTask_PrintListItems(s32 state) static bool32 ShouldShowUpArrow(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return (list->windowState.windowTopIndex != 0); + return (structPtr->windowState.windowTopIndex != 0); } static bool32 ShouldShowDownArrow(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *windowState = &list->windowState; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *subPtr = &structPtr->windowState; - return (windowState->windowTopIndex + windowState->entriesOnscreen < windowState->listLength); + return (subPtr->windowTopIndex + subPtr->entriesOnscreen < subPtr->listLength); } static void MoveListWindow(s32 delta, bool32 printItems) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *windowState = &list->windowState; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *subPtr = &structPtr->windowState; if (delta < 0) { - if (windowState->windowTopIndex + delta < 0) - delta = -1 * windowState->windowTopIndex; + if (subPtr->windowTopIndex + delta < 0) + delta = -1 * subPtr->windowTopIndex; if (printItems) - PrintListItems(windowState->listPtr, windowState->windowTopIndex + delta, delta * -1, windowState->listItemSize, delta, &list->sub); + PrintListItems(subPtr->listPtr, subPtr->windowTopIndex + delta, delta * -1, subPtr->listItemSize, delta, &structPtr->list); } else if (printItems) { - s32 index = sMoveWindowDownIndex = windowState->windowTopIndex + windowState->entriesOnscreen; - if (index + delta >= windowState->listLength) - delta = windowState->listLength - index; + s32 index = sMoveWindowDownIndex = subPtr->windowTopIndex + subPtr->entriesOnscreen; + if (index + delta >= subPtr->listLength) + delta = subPtr->listLength - index; - PrintListItems(windowState->listPtr, index, delta, windowState->listItemSize, windowState->entriesOnscreen, &list->sub); + PrintListItems(subPtr->listPtr, index, delta, subPtr->listItemSize, subPtr->entriesOnscreen, &structPtr->list); } - CreateMoveListWindowTask(delta, &list->sub); - windowState->windowTopIndex += delta; + CreateMoveListWindowTask(delta, &structPtr->list); + subPtr->windowTopIndex += delta; } static void CreateMoveListWindowTask(s32 delta, struct PokenavListSub *list) @@ -305,8 +305,8 @@ static u32 LoopedTask_MoveListWindow(s32 state) { s32 oldY, newY; bool32 finished; - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListSub *subPtr = &list->sub; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListSub *subPtr = &structPtr->list; switch (state) { @@ -342,23 +342,23 @@ static u32 LoopedTask_MoveListWindow(s32 state) bool32 PokenavList_IsMoveWindowTaskActive(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return IsLoopedTaskActive(list->sub.loopedTaskId); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return IsLoopedTaskActive(structPtr->list.loopedTaskId); } static struct PokenavListWindowState *GetPokenavListWindowState(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return &list->windowState; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return &structPtr->windowState; } int PokenavList_MoveCursorUp(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); - if (windowState->selectedIndexOffset != 0) + if (structPtr->selectedIndexOffset != 0) { - windowState->selectedIndexOffset--; + structPtr->selectedIndexOffset--; return 1; } if (ShouldShowUpArrow()) @@ -371,13 +371,13 @@ int PokenavList_MoveCursorUp(void) int PokenavList_MoveCursorDown(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); - if (windowState->windowTopIndex + windowState->selectedIndexOffset >= windowState->listLength - 1) + if (structPtr->windowTopIndex + structPtr->selectedIndexOffset >= structPtr->listLength - 1) return 0; - if (windowState->selectedIndexOffset < windowState->entriesOnscreen - 1) + if (structPtr->selectedIndexOffset < structPtr->entriesOnscreen - 1) { - windowState->selectedIndexOffset++; + structPtr->selectedIndexOffset++; return 1; } if (ShouldShowDownArrow()) @@ -391,20 +391,20 @@ int PokenavList_MoveCursorDown(void) int PokenavList_PageUp(void) { s32 scroll; - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); if (ShouldShowUpArrow()) { - if (windowState->windowTopIndex >= windowState->entriesOnscreen) - scroll = windowState->entriesOnscreen; + if (structPtr->windowTopIndex >= structPtr->entriesOnscreen) + scroll = structPtr->entriesOnscreen; else - scroll = windowState->windowTopIndex; + scroll = structPtr->windowTopIndex; MoveListWindow(scroll * -1, TRUE); return 2; } - else if (windowState->selectedIndexOffset != 0) + else if (structPtr->selectedIndexOffset != 0) { - windowState->selectedIndexOffset = 0; + structPtr->selectedIndexOffset = 0; return 1; } return 0; @@ -412,112 +412,112 @@ int PokenavList_PageUp(void) int PokenavList_PageDown(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); if (ShouldShowDownArrow()) { - s32 windowBottomIndex = windowState->windowTopIndex + windowState->entriesOnscreen; - s32 scroll = windowState->entriesOffscreen - windowState->windowTopIndex; + s32 windowBottomIndex = structPtr->windowTopIndex + structPtr->entriesOnscreen; + s32 scroll = structPtr->entriesOffscreen - structPtr->windowTopIndex; - if (windowBottomIndex <= windowState->entriesOffscreen) - scroll = windowState->entriesOnscreen; + if (windowBottomIndex <= structPtr->entriesOffscreen) + scroll = structPtr->entriesOnscreen; MoveListWindow(scroll, TRUE); return 2; } else { s32 cursor, lastVisibleIndex; - if (windowState->listLength >= windowState->entriesOnscreen) + if (structPtr->listLength >= structPtr->entriesOnscreen) { - cursor = windowState->selectedIndexOffset; - lastVisibleIndex = windowState->entriesOnscreen; + cursor = structPtr->selectedIndexOffset; + lastVisibleIndex = structPtr->entriesOnscreen; } else { - cursor = windowState->selectedIndexOffset; - lastVisibleIndex = windowState->listLength; + cursor = structPtr->selectedIndexOffset; + lastVisibleIndex = structPtr->listLength; } lastVisibleIndex -= 1; if (cursor >= lastVisibleIndex) return 0; - windowState->selectedIndexOffset = lastVisibleIndex; + structPtr->selectedIndexOffset = lastVisibleIndex; return 1; } } u32 PokenavList_GetSelectedIndex(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); - return windowState->windowTopIndex + windowState->selectedIndexOffset; + return structPtr->windowTopIndex + structPtr->selectedIndexOffset; } u32 PokenavList_GetTopIndex(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); - return windowState->windowTopIndex; + return structPtr->windowTopIndex; } void PokenavList_EraseListForCheckPage(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - list->eraseIndex = 0; - list->loopedTaskId = CreateLoopedTask(LoopedTask_EraseListForCheckPage, 6); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr->eraseIndex = 0; + structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_EraseListForCheckPage, 6); } void PrintCheckPageInfo(s16 delta) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - list->windowState.windowTopIndex += delta; - list->eraseIndex = 0; - list->loopedTaskId = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr->windowState.windowTopIndex += delta; + structPtr->eraseIndex = 0; + structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6); } void PokenavList_ReshowListFromCheckPage(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - list->eraseIndex = 0; - list->loopedTaskId = CreateLoopedTask(LoopedTask_ReshowListFromCheckPage, 6); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr->eraseIndex = 0; + structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_ReshowListFromCheckPage, 6); } bool32 PokenavList_IsTaskActive(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return IsLoopedTaskActive(list->loopedTaskId); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return IsLoopedTaskActive(structPtr->loopedTaskId); } void PokenavList_DrawCurrentItemIcon(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *windowState = &list->windowState; - list->sub.iconDrawFunc(list->sub.listWindow.windowId, windowState->windowTopIndex + windowState->selectedIndexOffset, (list->sub.listWindow.unkA + windowState->selectedIndexOffset) & 0xF); - CopyWindowToVram(list->sub.listWindow.windowId, COPYWIN_MAP); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *subPtr = &structPtr->windowState; + structPtr->list.iconDrawFunc(structPtr->list.listWindow.windowId, subPtr->windowTopIndex + subPtr->selectedIndexOffset, (structPtr->list.listWindow.unkA + subPtr->selectedIndexOffset) & 0xF); + CopyWindowToVram(structPtr->list.listWindow.windowId, COPYWIN_MAP); } static u32 LoopedTask_EraseListForCheckPage(s32 state) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - ToggleListArrows(&list->sub, 1); + ToggleListArrows(&structPtr->list, 1); // fall-through case 1: - if (list->eraseIndex != list->windowState.selectedIndexOffset) - EraseListEntry(&list->sub.listWindow, list->eraseIndex, 1); + if (structPtr->eraseIndex != structPtr->windowState.selectedIndexOffset) + EraseListEntry(&structPtr->list.listWindow, structPtr->eraseIndex, 1); - list->eraseIndex++; + structPtr->eraseIndex++; return LT_INC_AND_PAUSE; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { - if (list->eraseIndex != list->windowState.entriesOnscreen) + if (structPtr->eraseIndex != structPtr->windowState.entriesOnscreen) return LT_SET_STATE(1); - if (list->windowState.selectedIndexOffset != 0) - EraseListEntry(&list->sub.listWindow, list->eraseIndex, list->windowState.selectedIndexOffset); + if (structPtr->windowState.selectedIndexOffset != 0) + EraseListEntry(&structPtr->list.listWindow, structPtr->eraseIndex, structPtr->windowState.selectedIndexOffset); return LT_INC_AND_PAUSE; } @@ -525,9 +525,9 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) case 3: if (!IsDma3ManagerBusyWithBgCopy()) { - if (list->windowState.selectedIndexOffset != 0) + if (structPtr->windowState.selectedIndexOffset != 0) { - MoveListWindow(list->windowState.selectedIndexOffset, FALSE); + MoveListWindow(structPtr->windowState.selectedIndexOffset, FALSE); return LT_INC_AND_PAUSE; } return LT_FINISH; @@ -537,7 +537,7 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) if (PokenavList_IsMoveWindowTaskActive()) return LT_PAUSE; - list->windowState.selectedIndexOffset = 0; + structPtr->windowState.selectedIndexOffset = 0; return LT_FINISH; } return LT_FINISH; @@ -545,35 +545,35 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) static u32 LoopedTask_PrintCheckPageInfo(s32 state) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; switch (state) { case 0: - PrintCheckPageTrainerName(&list->windowState, &list->sub); + PrintCheckPageTrainerName(&structPtr->windowState, &structPtr->list); break; case 1: - PrintMatchCallFieldNames(&list->sub, 0); + PrintMatchCallFieldNames(&structPtr->list, 0); break; case 2: - PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_STRATEGY); + PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_STRATEGY); break; case 3: - PrintMatchCallFieldNames(&list->sub, 1); + PrintMatchCallFieldNames(&structPtr->list, 1); break; case 4: - PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_POKEMON); + PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_POKEMON); break; case 5: - PrintMatchCallFieldNames(&list->sub, 2); + PrintMatchCallFieldNames(&structPtr->list, 2); break; case 6: - PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_INTRO_1); + PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_INTRO_1); break; case 7: - PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_INTRO_2); + PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_INTRO_2); break; default: return LT_FINISH; @@ -583,30 +583,30 @@ static u32 LoopedTask_PrintCheckPageInfo(s32 state) static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { - struct PokenavList *list; + struct PokenavList *structPtr; struct PokenavListWindowState *windowState; - struct PokenavListSub *subPtr; + struct PokenavListSub *subPtr0; s32 r5, *ptr; if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; - list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - windowState = &list->windowState; - subPtr = &list->sub; + structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + windowState = &structPtr->windowState; + subPtr0 = &structPtr->list; switch (state) { case 0: // Rewrite the name of the trainer whose check page was just being viewed. // This is done to erase the red background it had. - PrintMatchCallListTrainerName(windowState, subPtr); + PrintMatchCallListTrainerName(windowState, subPtr0); return LT_INC_AND_PAUSE; case 1: - ptr = &list->eraseIndex; - if (++(*ptr) < list->windowState.entriesOnscreen) + ptr = &structPtr->eraseIndex; + if (++(*ptr) < structPtr->windowState.entriesOnscreen) { - EraseListEntry(&subPtr->listWindow, *ptr, 1); + EraseListEntry(&subPtr0->listWindow, *ptr, 1); return LT_PAUSE; } @@ -617,7 +617,7 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { s32 r4 = windowState->windowTopIndex; r5 = -r4; - EraseListEntry(&subPtr->listWindow, r5, r4); + EraseListEntry(&subPtr0->listWindow, r5, r4); windowState->selectedIndexOffset = r4; *ptr = r5; return LT_INC_AND_PAUSE; @@ -629,7 +629,7 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { s32 r4 = windowState->windowTopIndex + windowState->entriesOnscreen - windowState->listLength; r5 = -r4; - EraseListEntry(&subPtr->listWindow, r5, r4); + EraseListEntry(&subPtr0->listWindow, r5, r4); windowState->selectedIndexOffset = r4; *ptr = r5; return LT_INC_AND_PAUSE; @@ -637,55 +637,55 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) } return LT_SET_STATE(4); case 2: - MoveListWindow(list->eraseIndex, FALSE); + MoveListWindow(structPtr->eraseIndex, FALSE); return LT_INC_AND_PAUSE; case 3: if (!PokenavList_IsMoveWindowTaskActive()) { - list->eraseIndex = 0; + structPtr->eraseIndex = 0; return LT_INC_AND_CONTINUE; } return LT_PAUSE; case 4: - PrintListItems(windowState->listPtr, windowState->windowTopIndex + list->eraseIndex, 1, windowState->listItemSize, list->eraseIndex, &list->sub); + PrintListItems(windowState->listPtr, windowState->windowTopIndex + structPtr->eraseIndex, 1, windowState->listItemSize, structPtr->eraseIndex, &structPtr->list); return LT_INC_AND_PAUSE; case 5: if (IsPrintListItemsTaskActive()) return LT_PAUSE; - if (++list->eraseIndex >= windowState->listLength || list->eraseIndex >= windowState->entriesOnscreen) + if (++structPtr->eraseIndex >= windowState->listLength || structPtr->eraseIndex >= windowState->entriesOnscreen) return LT_INC_AND_CONTINUE; return LT_SET_STATE(4); case 6: - ToggleListArrows(subPtr, 0); + ToggleListArrows(subPtr0, 0); return LT_FINISH; } return LT_FINISH; } -static void EraseListEntry(struct PokenavListMenuWindow *listWindow, s32 offset, s32 entries) +static void EraseListEntry(struct PokenavListMenuWindow *listWindow, s32 a1, s32 a2) { u8 *tileData = (u8*)GetWindowAttribute(listWindow->windowId, WINDOW_TILE_DATA); u32 width = listWindow->width * 64; - offset = (listWindow->unkA + offset) & 0xF; - if (offset + entries <= 16) + a1 = (listWindow->unkA + a1) & 0xF; + if (a1 + a2 <= 16) { - CpuFastFill8(PIXEL_FILL(1), tileData + offset * width, entries * width); + CpuFastFill8(PIXEL_FILL(1), tileData + a1 * width, a2 * width); CopyWindowToVram(listWindow->windowId, COPYWIN_GFX); } else { - u32 v3 = 16 - offset; - u32 v4 = entries - v3; + u32 v3 = 16 - a1; + u32 v4 = a2 - v3; - CpuFastFill8(PIXEL_FILL(1), tileData + offset * width, v3 * width); + CpuFastFill8(PIXEL_FILL(1), tileData + a1 * width, v3 * width); CpuFastFill8(PIXEL_FILL(1), tileData, v4 * width); CopyWindowToVram(listWindow->windowId, COPYWIN_GFX); } - for (entries--; entries != -1; offset = (offset + 1) & 0xF, entries--) - ClearRematchPokeballIcon(listWindow->windowId, offset); + for (a2--; a2 != -1; a1 = (a1 + 1) & 0xF, a2--) + ClearRematchPokeballIcon(listWindow->windowId, a1); CopyWindowToVram(listWindow->windowId, COPYWIN_MAP); } @@ -744,7 +744,7 @@ static void PrintMatchCallFieldNames(struct PokenavListSub *list, u32 fieldId) CopyWindowRectToVram(list->listWindow.windowId, COPYWIN_GFX, 0, top << 1, list->listWindow.width, 2); } -static void PrintMatchCallFlavorText(struct PokenavListWindowState *windowState, struct PokenavListSub *list, u32 checkPageEntry) +static void PrintMatchCallFlavorText(struct PokenavListWindowState *a0, struct PokenavListSub *list, u32 checkPageEntry) { // lines 1, 3, and 5 are the field names printed by PrintMatchCallFieldNames static const u8 lineOffsets[CHECK_PAGE_ENTRY_COUNT] = { @@ -755,7 +755,7 @@ static void PrintMatchCallFlavorText(struct PokenavListWindowState *windowState, }; u32 r6 = (list->listWindow.unkA + lineOffsets[checkPageEntry]) & 0xF; - const u8 *str = GetMatchCallFlavorText(windowState->windowTopIndex, checkPageEntry); + const u8 *str = GetMatchCallFlavorText(a0->windowTopIndex, checkPageEntry); if (str != NULL) { @@ -894,8 +894,8 @@ static void ToggleListArrows(struct PokenavListSub *list, bool32 invisible) static void SpriteCB_RightArrow(struct Sprite *sprite) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - sprite->y2 = list->windowState.selectedIndexOffset << 4; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + sprite->y2 = structPtr->windowState.selectedIndexOffset << 4; } #define sTimer data[0] @@ -940,9 +940,9 @@ static void SpriteCB_UpArrow(struct Sprite *sprite) void PokenavList_ToggleVerticalArrows(bool32 invisible) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - list->sub.upArrow->sInvisible = invisible; - list->sub.downArrow->sInvisible = invisible; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr->list.upArrow->sInvisible = invisible; + structPtr->list.downArrow->sInvisible = invisible; } #undef sTimer diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c index 7d668c67f..318ed520d 100644 --- a/src/pokenav_main_menu.c +++ b/src/pokenav_main_menu.c @@ -105,7 +105,7 @@ static const u8 sHelpBarTextColors[3] = TEXT_COLOR_RED, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY }; -static const struct CompressedSpriteSheet sSpinningPokenavSpriteSheet[] = +static const struct CompressedSpriteSheet gSpinningPokenavSpriteSheet[] = { { .data = sSpinningPokenav_Gfx, @@ -114,7 +114,7 @@ static const struct CompressedSpriteSheet sSpinningPokenavSpriteSheet[] = } }; -static const struct SpritePalette sSpinningNavgearPalettes[] = +static const struct SpritePalette gSpinningNavgearPalettes[] = { { .data = sSpinningPokenav_Pal, @@ -583,10 +583,10 @@ static void InitPokenavMainMenuResources(void) u8 spriteId; struct Pokenav_MainMenu *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU); - for (i = 0; i < ARRAY_COUNT(sSpinningPokenavSpriteSheet); i++) - LoadCompressedSpriteSheet(&sSpinningPokenavSpriteSheet[i]); + for (i = 0; i < ARRAY_COUNT(gSpinningPokenavSpriteSheet); i++) + LoadCompressedSpriteSheet(&gSpinningPokenavSpriteSheet[i]); - Pokenav_AllocAndLoadPalettes(sSpinningNavgearPalettes); + Pokenav_AllocAndLoadPalettes(gSpinningNavgearPalettes); menu->palettes = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0)); spriteId = CreateSprite(&sSpinningPokenavSpriteTemplate, 220, 12, 0); menu->spinningPokenav = &gSprites[spriteId]; diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 2e8cc40b5..29dd62621 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -324,7 +324,7 @@ static const match_call_text_data_t sWallyTextScripts[] = { { NULL, 0xFFFF, 0xFFFF } }; -static const struct MatchCallLocationOverride sWallyLocationData[] = { +const struct MatchCallLocationOverride sWallyLocationData[] = { { FLAG_HIDE_MAUVILLE_CITY_WALLY, MAPSEC_VERDANTURF_TOWN }, { FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, MAPSEC_NONE }, { FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY, MAPSEC_VICTORY_ROAD }, diff --git a/src/pokenav_region_map.c b/src/pokenav_region_map.c index 828bd525d..16ba48070 100755 --- a/src/pokenav_region_map.c +++ b/src/pokenav_region_map.c @@ -146,7 +146,7 @@ static const struct WindowTemplate sMapSecInfoWindowTemplate = #include "data/region_map/city_map_entries.h" -static const struct OamData sCityZoomTextSprite_OamData = +const struct OamData sCityZoomTextSprite_OamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, diff --git a/src/record_mixing.c b/src/record_mixing.c index 4365f2cb3..6efded838 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -285,7 +285,7 @@ static void ReceiveExchangePacket(u32 multiplayerId) static void PrintTextOnRecordMixing(const u8 *src) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, src, 0, 1, 0, NULL); CopyWindowToVram(0, COPYWIN_FULL); } diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 951572636..fd2b3a06b 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -67,8 +67,6 @@ struct RecordedBattleSave u32 checksum; }; -STATIC_ASSERT(sizeof(struct RecordedBattleSave) <= SECTOR_DATA_SIZE, RecordedBattleSaveFreeSpace); - EWRAM_DATA u32 gRecordedBattleRngSeed = 0; EWRAM_DATA u32 gBattlePalaceMoveSelectionRngValue = 0; EWRAM_DATA static u8 sBattleRecords[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE] = {0}; diff --git a/src/region_map.c b/src/region_map.c index a4db1cb04..09e2d69bf 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -64,7 +64,7 @@ struct MultiNameFlyDest // Static RAM declarations -static EWRAM_DATA struct RegionMap *sRegionMap = NULL; +static EWRAM_DATA struct RegionMap *gRegionMap = NULL; static EWRAM_DATA struct { void (*callback)(void); @@ -516,49 +516,49 @@ void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed) void InitRegionMapData(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed) { - sRegionMap = regionMap; - sRegionMap->initStep = 0; - sRegionMap->zoomed = zoomed; - sRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full; + gRegionMap = regionMap; + gRegionMap->initStep = 0; + gRegionMap->zoomed = zoomed; + gRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full; if (template != NULL) { - sRegionMap->bgNum = template->bg; - sRegionMap->charBaseIdx = template->charBaseIndex; - sRegionMap->mapBaseIdx = template->mapBaseIndex; - sRegionMap->bgManaged = TRUE; + gRegionMap->bgNum = template->bg; + gRegionMap->charBaseIdx = template->charBaseIndex; + gRegionMap->mapBaseIdx = template->mapBaseIndex; + gRegionMap->bgManaged = TRUE; } else { - sRegionMap->bgNum = 2; - sRegionMap->charBaseIdx = 2; - sRegionMap->mapBaseIdx = 28; - sRegionMap->bgManaged = FALSE; + gRegionMap->bgNum = 2; + gRegionMap->charBaseIdx = 2; + gRegionMap->mapBaseIdx = 28; + gRegionMap->bgManaged = FALSE; } } void ShowRegionMapForPokedexAreaScreen(struct RegionMap *regionMap) { - sRegionMap = regionMap; + gRegionMap = regionMap; InitMapBasedOnPlayerLocation(); - sRegionMap->playerIconSpritePosX = sRegionMap->cursorPosX; - sRegionMap->playerIconSpritePosY = sRegionMap->cursorPosY; + gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; + gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; } bool8 LoadRegionMapGfx(void) { - switch (sRegionMap->initStep) + switch (gRegionMap->initStep) { case 0: - if (sRegionMap->bgManaged) - DecompressAndCopyTileDataToVram(sRegionMap->bgNum, sRegionMapBg_GfxLZ, 0, 0, 0); + if (gRegionMap->bgManaged) + DecompressAndCopyTileDataToVram(gRegionMap->bgNum, sRegionMapBg_GfxLZ, 0, 0, 0); else LZ77UnCompVram(sRegionMapBg_GfxLZ, (u16 *)BG_CHAR_ADDR(2)); break; case 1: - if (sRegionMap->bgManaged) + if (gRegionMap->bgManaged) { if (!FreeTempTileDataBuffersIfPossible()) - DecompressAndCopyTileDataToVram(sRegionMap->bgNum, sRegionMapBg_TilemapLZ, 0, 0, 1); + DecompressAndCopyTileDataToVram(gRegionMap->bgNum, sRegionMapBg_TilemapLZ, 0, 0, 1); } else { @@ -570,54 +570,54 @@ bool8 LoadRegionMapGfx(void) LoadPalette(sRegionMapBg_Pal, 0x70, 0x60); break; case 3: - LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, sRegionMap->cursorSmallImage); + LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage); break; case 4: - LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, sRegionMap->cursorLargeImage); + LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage); break; case 5: InitMapBasedOnPlayerLocation(); - sRegionMap->playerIconSpritePosX = sRegionMap->cursorPosX; - sRegionMap->playerIconSpritePosY = sRegionMap->cursorPosY; - sRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(sRegionMap->mapSecId); - sRegionMap->mapSecType = GetMapsecType(sRegionMap->mapSecId); - GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); + gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; + gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; + gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId); + gRegionMap->mapSecType = GetMapsecType(gRegionMap->mapSecId); + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); break; case 6: - if (sRegionMap->zoomed == FALSE) + if (gRegionMap->zoomed == FALSE) { CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0); } else { - sRegionMap->scrollX = sRegionMap->cursorPosX * 8 - 0x34; - sRegionMap->scrollY = sRegionMap->cursorPosY * 8 - 0x44; - sRegionMap->zoomedCursorPosX = sRegionMap->cursorPosX; - sRegionMap->zoomedCursorPosY = sRegionMap->cursorPosY; - CalcZoomScrollParams(sRegionMap->scrollX, sRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); + gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34; + gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44; + gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX; + gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY; + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); } break; case 7: GetPositionOfCursorWithinMapSec(); UpdateRegionMapVideoRegs(); - sRegionMap->cursorSprite = NULL; - sRegionMap->playerIconSprite = NULL; - sRegionMap->cursorMovementFrameCounter = 0; - sRegionMap->blinkPlayerIcon = FALSE; - if (sRegionMap->bgManaged) + gRegionMap->cursorSprite = NULL; + gRegionMap->playerIconSprite = NULL; + gRegionMap->cursorMovementFrameCounter = 0; + gRegionMap->blinkPlayerIcon = FALSE; + if (gRegionMap->bgManaged) { - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_SCREENSIZE, 2); - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_CHARBASEINDEX, sRegionMap->charBaseIdx); - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_MAPBASEINDEX, sRegionMap->mapBaseIdx); - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_WRAPAROUND, 1); - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_PALETTEMODE, 1); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_SCREENSIZE, 2); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_CHARBASEINDEX, gRegionMap->charBaseIdx); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_MAPBASEINDEX, gRegionMap->mapBaseIdx); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_WRAPAROUND, 1); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_PALETTEMODE, 1); } - sRegionMap->initStep++; + gRegionMap->initStep++; return FALSE; default: return FALSE; } - sRegionMap->initStep++; + gRegionMap->initStep++; return TRUE; } @@ -629,23 +629,23 @@ void BlendRegionMap(u16 color, u32 coeff) void FreeRegionMapIconResources(void) { - if (sRegionMap->cursorSprite != NULL) + if (gRegionMap->cursorSprite != NULL) { - DestroySprite(sRegionMap->cursorSprite); - FreeSpriteTilesByTag(sRegionMap->cursorTileTag); - FreeSpritePaletteByTag(sRegionMap->cursorPaletteTag); + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); } - if (sRegionMap->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - DestroySprite(sRegionMap->playerIconSprite); - FreeSpriteTilesByTag(sRegionMap->playerIconTileTag); - FreeSpritePaletteByTag(sRegionMap->playerIconPaletteTag); + DestroySprite(gRegionMap->playerIconSprite); + FreeSpriteTilesByTag(gRegionMap->playerIconTileTag); + FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag); } } u8 DoRegionMapInputCallback(void) { - return sRegionMap->inputCallback(); + return gRegionMap->inputCallback(); } static u8 ProcessRegionMapInput_Full(void) @@ -653,26 +653,26 @@ static u8 ProcessRegionMapInput_Full(void) u8 input; input = MAP_INPUT_NONE; - sRegionMap->cursorDeltaX = 0; - sRegionMap->cursorDeltaY = 0; - if (JOY_HELD(DPAD_UP) && sRegionMap->cursorPosY > MAPCURSOR_Y_MIN) + gRegionMap->cursorDeltaX = 0; + gRegionMap->cursorDeltaY = 0; + if (JOY_HELD(DPAD_UP) && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN) { - sRegionMap->cursorDeltaY = -1; + gRegionMap->cursorDeltaY = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_DOWN) && sRegionMap->cursorPosY < MAPCURSOR_Y_MAX) + if (JOY_HELD(DPAD_DOWN) && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX) { - sRegionMap->cursorDeltaY = +1; + gRegionMap->cursorDeltaY = +1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_LEFT) && sRegionMap->cursorPosX > MAPCURSOR_X_MIN) + if (JOY_HELD(DPAD_LEFT) && gRegionMap->cursorPosX > MAPCURSOR_X_MIN) { - sRegionMap->cursorDeltaX = -1; + gRegionMap->cursorDeltaX = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_RIGHT) && sRegionMap->cursorPosX < MAPCURSOR_X_MAX) + if (JOY_HELD(DPAD_RIGHT) && gRegionMap->cursorPosX < MAPCURSOR_X_MAX) { - sRegionMap->cursorDeltaX = +1; + gRegionMap->cursorDeltaX = +1; input = MAP_INPUT_MOVE_START; } if (JOY_NEW(A_BUTTON)) @@ -685,8 +685,8 @@ static u8 ProcessRegionMapInput_Full(void) } if (input == MAP_INPUT_MOVE_START) { - sRegionMap->cursorMovementFrameCounter = 4; - sRegionMap->inputCallback = MoveRegionMapCursor_Full; + gRegionMap->cursorMovementFrameCounter = 4; + gRegionMap->inputCallback = MoveRegionMapCursor_Full; } return input; } @@ -695,35 +695,35 @@ static u8 MoveRegionMapCursor_Full(void) { u16 mapSecId; - if (sRegionMap->cursorMovementFrameCounter != 0) + if (gRegionMap->cursorMovementFrameCounter != 0) return MAP_INPUT_MOVE_CONT; - if (sRegionMap->cursorDeltaX > 0) + if (gRegionMap->cursorDeltaX > 0) { - sRegionMap->cursorPosX++; + gRegionMap->cursorPosX++; } - if (sRegionMap->cursorDeltaX < 0) + if (gRegionMap->cursorDeltaX < 0) { - sRegionMap->cursorPosX--; + gRegionMap->cursorPosX--; } - if (sRegionMap->cursorDeltaY > 0) + if (gRegionMap->cursorDeltaY > 0) { - sRegionMap->cursorPosY++; + gRegionMap->cursorPosY++; } - if (sRegionMap->cursorDeltaY < 0) + if (gRegionMap->cursorDeltaY < 0) { - sRegionMap->cursorPosY--; + gRegionMap->cursorPosY--; } - mapSecId = GetMapSecIdAt(sRegionMap->cursorPosX, sRegionMap->cursorPosY); - sRegionMap->mapSecType = GetMapsecType(mapSecId); - if (mapSecId != sRegionMap->mapSecId) + mapSecId = GetMapSecIdAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); + gRegionMap->mapSecType = GetMapsecType(mapSecId); + if (mapSecId != gRegionMap->mapSecId) { - sRegionMap->mapSecId = mapSecId; - GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); + gRegionMap->mapSecId = mapSecId; + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); } GetPositionOfCursorWithinMapSec(); - sRegionMap->inputCallback = ProcessRegionMapInput_Full; + gRegionMap->inputCallback = ProcessRegionMapInput_Full; return MAP_INPUT_MOVE_END; } @@ -732,26 +732,26 @@ static u8 ProcessRegionMapInput_Zoomed(void) u8 input; input = MAP_INPUT_NONE; - sRegionMap->zoomedCursorDeltaX = 0; - sRegionMap->zoomedCursorDeltaY = 0; - if (JOY_HELD(DPAD_UP) && sRegionMap->scrollY > -0x34) + gRegionMap->zoomedCursorDeltaX = 0; + gRegionMap->zoomedCursorDeltaY = 0; + if (JOY_HELD(DPAD_UP) && gRegionMap->scrollY > -0x34) { - sRegionMap->zoomedCursorDeltaY = -1; + gRegionMap->zoomedCursorDeltaY = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_DOWN) && sRegionMap->scrollY < 0x3c) + if (JOY_HELD(DPAD_DOWN) && gRegionMap->scrollY < 0x3c) { - sRegionMap->zoomedCursorDeltaY = +1; + gRegionMap->zoomedCursorDeltaY = +1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_LEFT) && sRegionMap->scrollX > -0x2c) + if (JOY_HELD(DPAD_LEFT) && gRegionMap->scrollX > -0x2c) { - sRegionMap->zoomedCursorDeltaX = -1; + gRegionMap->zoomedCursorDeltaX = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_RIGHT) && sRegionMap->scrollX < 0xac) + if (JOY_HELD(DPAD_RIGHT) && gRegionMap->scrollX < 0xac) { - sRegionMap->zoomedCursorDeltaX = +1; + gRegionMap->zoomedCursorDeltaX = +1; input = MAP_INPUT_MOVE_START; } if (JOY_NEW(A_BUTTON)) @@ -764,8 +764,8 @@ static u8 ProcessRegionMapInput_Zoomed(void) } if (input == MAP_INPUT_MOVE_START) { - sRegionMap->inputCallback = MoveRegionMapCursor_Zoomed; - sRegionMap->zoomedCursorMovementFrameCounter = 0; + gRegionMap->inputCallback = MoveRegionMapCursor_Zoomed; + gRegionMap->zoomedCursorMovementFrameCounter = 0; } return input; } @@ -776,29 +776,29 @@ static u8 MoveRegionMapCursor_Zoomed(void) u16 y; u16 mapSecId; - sRegionMap->scrollY += sRegionMap->zoomedCursorDeltaY; - sRegionMap->scrollX += sRegionMap->zoomedCursorDeltaX; - RegionMap_SetBG2XAndBG2Y(sRegionMap->scrollX, sRegionMap->scrollY); - sRegionMap->zoomedCursorMovementFrameCounter++; - if (sRegionMap->zoomedCursorMovementFrameCounter == 8) + gRegionMap->scrollY += gRegionMap->zoomedCursorDeltaY; + gRegionMap->scrollX += gRegionMap->zoomedCursorDeltaX; + RegionMap_SetBG2XAndBG2Y(gRegionMap->scrollX, gRegionMap->scrollY); + gRegionMap->zoomedCursorMovementFrameCounter++; + if (gRegionMap->zoomedCursorMovementFrameCounter == 8) { - x = (sRegionMap->scrollX + 0x2c) / 8 + 1; - y = (sRegionMap->scrollY + 0x34) / 8 + 2; - if (x != sRegionMap->zoomedCursorPosX || y != sRegionMap->zoomedCursorPosY) + x = (gRegionMap->scrollX + 0x2c) / 8 + 1; + y = (gRegionMap->scrollY + 0x34) / 8 + 2; + if (x != gRegionMap->zoomedCursorPosX || y != gRegionMap->zoomedCursorPosY) { - sRegionMap->zoomedCursorPosX = x; - sRegionMap->zoomedCursorPosY = y; + gRegionMap->zoomedCursorPosX = x; + gRegionMap->zoomedCursorPosY = y; mapSecId = GetMapSecIdAt(x, y); - sRegionMap->mapSecType = GetMapsecType(mapSecId); - if (mapSecId != sRegionMap->mapSecId) + gRegionMap->mapSecType = GetMapsecType(mapSecId); + if (mapSecId != gRegionMap->mapSecId) { - sRegionMap->mapSecId = mapSecId; - GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); + gRegionMap->mapSecId = mapSecId; + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); } GetPositionOfCursorWithinMapSec(); } - sRegionMap->zoomedCursorMovementFrameCounter = 0; - sRegionMap->inputCallback = ProcessRegionMapInput_Zoomed; + gRegionMap->zoomedCursorMovementFrameCounter = 0; + gRegionMap->inputCallback = ProcessRegionMapInput_Zoomed; return MAP_INPUT_MOVE_END; } return MAP_INPUT_MOVE_CONT; @@ -806,35 +806,35 @@ static u8 MoveRegionMapCursor_Zoomed(void) void SetRegionMapDataForZoom(void) { - if (sRegionMap->zoomed == FALSE) + if (gRegionMap->zoomed == FALSE) { - sRegionMap->scrollY = 0; - sRegionMap->scrollX = 0; - sRegionMap->unk_040 = 0; - sRegionMap->unk_03c = 0; - sRegionMap->unk_060 = sRegionMap->cursorPosX * 8 - 0x34; - sRegionMap->unk_062 = sRegionMap->cursorPosY * 8 - 0x44; - sRegionMap->unk_044 = (sRegionMap->unk_060 << 8) / 16; - sRegionMap->unk_048 = (sRegionMap->unk_062 << 8) / 16; - sRegionMap->zoomedCursorPosX = sRegionMap->cursorPosX; - sRegionMap->zoomedCursorPosY = sRegionMap->cursorPosY; - sRegionMap->unk_04c = 0x10000; - sRegionMap->unk_050 = -0x800; + gRegionMap->scrollY = 0; + gRegionMap->scrollX = 0; + gRegionMap->unk_040 = 0; + gRegionMap->unk_03c = 0; + gRegionMap->unk_060 = gRegionMap->cursorPosX * 8 - 0x34; + gRegionMap->unk_062 = gRegionMap->cursorPosY * 8 - 0x44; + gRegionMap->unk_044 = (gRegionMap->unk_060 << 8) / 16; + gRegionMap->unk_048 = (gRegionMap->unk_062 << 8) / 16; + gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX; + gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY; + gRegionMap->unk_04c = 0x10000; + gRegionMap->unk_050 = -0x800; } else { - sRegionMap->unk_03c = sRegionMap->scrollX * 0x100; - sRegionMap->unk_040 = sRegionMap->scrollY * 0x100; - sRegionMap->unk_060 = 0; - sRegionMap->unk_062 = 0; - sRegionMap->unk_044 = -(sRegionMap->unk_03c / 16); - sRegionMap->unk_048 = -(sRegionMap->unk_040 / 16); - sRegionMap->cursorPosX = sRegionMap->zoomedCursorPosX; - sRegionMap->cursorPosY = sRegionMap->zoomedCursorPosY; - sRegionMap->unk_04c = 0x8000; - sRegionMap->unk_050 = 0x800; + gRegionMap->unk_03c = gRegionMap->scrollX * 0x100; + gRegionMap->unk_040 = gRegionMap->scrollY * 0x100; + gRegionMap->unk_060 = 0; + gRegionMap->unk_062 = 0; + gRegionMap->unk_044 = -(gRegionMap->unk_03c / 16); + gRegionMap->unk_048 = -(gRegionMap->unk_040 / 16); + gRegionMap->cursorPosX = gRegionMap->zoomedCursorPosX; + gRegionMap->cursorPosY = gRegionMap->zoomedCursorPosY; + gRegionMap->unk_04c = 0x8000; + gRegionMap->unk_050 = 0x800; } - sRegionMap->unk_06e = 0; + gRegionMap->unk_06e = 0; FreeRegionMapCursorSprite(); HideRegionMapPlayerIcon(); } @@ -843,60 +843,60 @@ bool8 UpdateRegionMapZoom(void) { bool8 retVal; - if (sRegionMap->unk_06e >= 16) + if (gRegionMap->unk_06e >= 16) { return FALSE; } - sRegionMap->unk_06e++; - if (sRegionMap->unk_06e == 16) + gRegionMap->unk_06e++; + if (gRegionMap->unk_06e == 16) { - sRegionMap->unk_044 = 0; - sRegionMap->unk_048 = 0; - sRegionMap->scrollX = sRegionMap->unk_060; - sRegionMap->scrollY = sRegionMap->unk_062; - sRegionMap->unk_04c = (sRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); - sRegionMap->zoomed = !sRegionMap->zoomed; - sRegionMap->inputCallback = (sRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; - CreateRegionMapCursor(sRegionMap->cursorTileTag, sRegionMap->cursorPaletteTag); + gRegionMap->unk_044 = 0; + gRegionMap->unk_048 = 0; + gRegionMap->scrollX = gRegionMap->unk_060; + gRegionMap->scrollY = gRegionMap->unk_062; + gRegionMap->unk_04c = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); + gRegionMap->zoomed = !gRegionMap->zoomed; + gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; + CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag); UnhideRegionMapPlayerIcon(); retVal = FALSE; } else { - sRegionMap->unk_03c += sRegionMap->unk_044; - sRegionMap->unk_040 += sRegionMap->unk_048; - sRegionMap->scrollX = sRegionMap->unk_03c >> 8; - sRegionMap->scrollY = sRegionMap->unk_040 >> 8; - sRegionMap->unk_04c += sRegionMap->unk_050; - if ((sRegionMap->unk_044 < 0 && sRegionMap->scrollX < sRegionMap->unk_060) || (sRegionMap->unk_044 > 0 && sRegionMap->scrollX > sRegionMap->unk_060)) + gRegionMap->unk_03c += gRegionMap->unk_044; + gRegionMap->unk_040 += gRegionMap->unk_048; + gRegionMap->scrollX = gRegionMap->unk_03c >> 8; + gRegionMap->scrollY = gRegionMap->unk_040 >> 8; + gRegionMap->unk_04c += gRegionMap->unk_050; + if ((gRegionMap->unk_044 < 0 && gRegionMap->scrollX < gRegionMap->unk_060) || (gRegionMap->unk_044 > 0 && gRegionMap->scrollX > gRegionMap->unk_060)) { - sRegionMap->scrollX = sRegionMap->unk_060; - sRegionMap->unk_044 = 0; + gRegionMap->scrollX = gRegionMap->unk_060; + gRegionMap->unk_044 = 0; } - if ((sRegionMap->unk_048 < 0 && sRegionMap->scrollY < sRegionMap->unk_062) || (sRegionMap->unk_048 > 0 && sRegionMap->scrollY > sRegionMap->unk_062)) + if ((gRegionMap->unk_048 < 0 && gRegionMap->scrollY < gRegionMap->unk_062) || (gRegionMap->unk_048 > 0 && gRegionMap->scrollY > gRegionMap->unk_062)) { - sRegionMap->scrollY = sRegionMap->unk_062; - sRegionMap->unk_048 = 0; + gRegionMap->scrollY = gRegionMap->unk_062; + gRegionMap->unk_048 = 0; } - if (sRegionMap->zoomed == FALSE) + if (gRegionMap->zoomed == FALSE) { - if (sRegionMap->unk_04c < (128 << 8)) + if (gRegionMap->unk_04c < (128 << 8)) { - sRegionMap->unk_04c = (128 << 8); - sRegionMap->unk_050 = 0; + gRegionMap->unk_04c = (128 << 8); + gRegionMap->unk_050 = 0; } } else { - if (sRegionMap->unk_04c > (256 << 8)) + if (gRegionMap->unk_04c > (256 << 8)) { - sRegionMap->unk_04c = (256 << 8); - sRegionMap->unk_050 = 0; + gRegionMap->unk_04c = (256 << 8); + gRegionMap->unk_050 = 0; } } retVal = TRUE; } - CalcZoomScrollParams(sRegionMap->scrollX, sRegionMap->scrollY, 0x38, 0x48, sRegionMap->unk_04c >> 8, sRegionMap->unk_04c >> 8, 0); + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk_04c >> 8, gRegionMap->unk_04c >> 8, 0); return retVal; } @@ -907,42 +907,42 @@ static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, s32 var3; s32 var4; - sRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; - sRegionMap->bg2pc = e * -gSineTable[rotation] >> 8; - sRegionMap->bg2pb = f * gSineTable[rotation] >> 8; - sRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; + gRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; + gRegionMap->bg2pc = e * -gSineTable[rotation] >> 8; + gRegionMap->bg2pb = f * gSineTable[rotation] >> 8; + gRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; var1 = (scrollX << 8) + (c << 8); - var2 = d * sRegionMap->bg2pb + sRegionMap->bg2pa * c; - sRegionMap->bg2x = var1 - var2; + var2 = d * gRegionMap->bg2pb + gRegionMap->bg2pa * c; + gRegionMap->bg2x = var1 - var2; var3 = (scrollY << 8) + (d << 8); - var4 = sRegionMap->bg2pd * d + sRegionMap->bg2pc * c; - sRegionMap->bg2y = var3 - var4; + var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pc * c; + gRegionMap->bg2y = var3 - var4; - sRegionMap->needUpdateVideoRegs = TRUE; + gRegionMap->needUpdateVideoRegs = TRUE; } static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y) { - sRegionMap->bg2x = (x << 8) + 0x1c00; - sRegionMap->bg2y = (y << 8) + 0x2400; - sRegionMap->needUpdateVideoRegs = TRUE; + gRegionMap->bg2x = (x << 8) + 0x1c00; + gRegionMap->bg2y = (y << 8) + 0x2400; + gRegionMap->needUpdateVideoRegs = TRUE; } void UpdateRegionMapVideoRegs(void) { - if (sRegionMap->needUpdateVideoRegs) + if (gRegionMap->needUpdateVideoRegs) { - SetGpuReg(REG_OFFSET_BG2PA, sRegionMap->bg2pa); - SetGpuReg(REG_OFFSET_BG2PB, sRegionMap->bg2pb); - SetGpuReg(REG_OFFSET_BG2PC, sRegionMap->bg2pc); - SetGpuReg(REG_OFFSET_BG2PD, sRegionMap->bg2pd); - SetGpuReg(REG_OFFSET_BG2X_L, sRegionMap->bg2x); - SetGpuReg(REG_OFFSET_BG2X_H, sRegionMap->bg2x >> 16); - SetGpuReg(REG_OFFSET_BG2Y_L, sRegionMap->bg2y); - SetGpuReg(REG_OFFSET_BG2Y_H, sRegionMap->bg2y >> 16); - sRegionMap->needUpdateVideoRegs = FALSE; + SetGpuReg(REG_OFFSET_BG2PA, gRegionMap->bg2pa); + SetGpuReg(REG_OFFSET_BG2PB, gRegionMap->bg2pb); + SetGpuReg(REG_OFFSET_BG2PC, gRegionMap->bg2pc); + SetGpuReg(REG_OFFSET_BG2PD, gRegionMap->bg2pd); + SetGpuReg(REG_OFFSET_BG2X_L, gRegionMap->bg2x); + SetGpuReg(REG_OFFSET_BG2X_H, gRegionMap->bg2x >> 16); + SetGpuReg(REG_OFFSET_BG2Y_L, gRegionMap->bg2y); + SetGpuReg(REG_OFFSET_BG2Y_H, gRegionMap->bg2y >> 16); + gRegionMap->needUpdateVideoRegs = FALSE; } } @@ -950,10 +950,10 @@ void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y) { CalcZoomScrollParams(x, y, 0x38, 0x48, 0x100, 0x100, 0); UpdateRegionMapVideoRegs(); - if (sRegionMap->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - sRegionMap->playerIconSprite->x2 = -x; - sRegionMap->playerIconSprite->y2 = -y; + gRegionMap->playerIconSprite->x2 = -x; + gRegionMap->playerIconSprite->y2 = -y; } } @@ -996,22 +996,22 @@ static void InitMapBasedOnPlayerLocation(void) case MAP_TYPE_ROUTE: case MAP_TYPE_UNDERWATER: case MAP_TYPE_OCEAN_ROUTE: - sRegionMap->mapSecId = gMapHeader.regionMapSectionId; - sRegionMap->playerIsInCave = FALSE; + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->playerIsInCave = FALSE; mapWidth = gMapHeader.mapLayout->width; mapHeight = gMapHeader.mapLayout->height; x = gSaveBlock1Ptr->pos.x; y = gSaveBlock1Ptr->pos.y; - if (sRegionMap->mapSecId == MAPSEC_UNDERWATER_SEAFLOOR_CAVERN || sRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) - sRegionMap->playerIsInCave = TRUE; + if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_SEAFLOOR_CAVERN || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) + gRegionMap->playerIsInCave = TRUE; break; case MAP_TYPE_UNDERGROUND: case MAP_TYPE_UNKNOWN: if (gMapHeader.allowEscaping) { mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum); - sRegionMap->mapSecId = mapHeader->regionMapSectionId; - sRegionMap->playerIsInCave = TRUE; + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; x = gSaveBlock1Ptr->escapeWarp.x; @@ -1019,8 +1019,8 @@ static void InitMapBasedOnPlayerLocation(void) } else { - sRegionMap->mapSecId = gMapHeader.regionMapSectionId; - sRegionMap->playerIsInCave = TRUE; + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; mapWidth = 1; mapHeight = 1; x = 1; @@ -1029,16 +1029,16 @@ static void InitMapBasedOnPlayerLocation(void) break; case MAP_TYPE_SECRET_BASE: mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->dynamicWarp.mapGroup, (u16)gSaveBlock1Ptr->dynamicWarp.mapNum); - sRegionMap->mapSecId = mapHeader->regionMapSectionId; - sRegionMap->playerIsInCave = TRUE; + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; x = gSaveBlock1Ptr->dynamicWarp.x; y = gSaveBlock1Ptr->dynamicWarp.y; break; case MAP_TYPE_INDOOR: - sRegionMap->mapSecId = gMapHeader.regionMapSectionId; - if (sRegionMap->mapSecId != MAPSEC_DYNAMIC) + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + if (gRegionMap->mapSecId != MAPSEC_DYNAMIC) { warp = &gSaveBlock1Ptr->escapeWarp; mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); @@ -1047,13 +1047,13 @@ static void InitMapBasedOnPlayerLocation(void) { warp = &gSaveBlock1Ptr->dynamicWarp; mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); - sRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->mapSecId = mapHeader->regionMapSectionId; } - if (IsPlayerInAquaHideout(sRegionMap->mapSecId)) - sRegionMap->playerIsInCave = TRUE; + if (IsPlayerInAquaHideout(gRegionMap->mapSecId)) + gRegionMap->playerIsInCave = TRUE; else - sRegionMap->playerIsInCave = FALSE; + gRegionMap->playerIsInCave = FALSE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; @@ -1064,29 +1064,29 @@ static void InitMapBasedOnPlayerLocation(void) xOnMap = x; - dimensionScale = mapWidth / gRegionMapEntries[sRegionMap->mapSecId].width; + dimensionScale = mapWidth / gRegionMapEntries[gRegionMap->mapSecId].width; if (dimensionScale == 0) { dimensionScale = 1; } x /= dimensionScale; - if (x >= gRegionMapEntries[sRegionMap->mapSecId].width) + if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) { - x = gRegionMapEntries[sRegionMap->mapSecId].width - 1; + x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; } - dimensionScale = mapHeight / gRegionMapEntries[sRegionMap->mapSecId].height; + dimensionScale = mapHeight / gRegionMapEntries[gRegionMap->mapSecId].height; if (dimensionScale == 0) { dimensionScale = 1; } y /= dimensionScale; - if (y >= gRegionMapEntries[sRegionMap->mapSecId].height) + if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) { - y = gRegionMapEntries[sRegionMap->mapSecId].height - 1; + y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; } - switch (sRegionMap->mapSecId) + switch (gRegionMap->mapSecId) { case MAPSEC_ROUTE_114: if (y != 0) @@ -1116,11 +1116,11 @@ static void InitMapBasedOnPlayerLocation(void) x++; break; case MAPSEC_UNDERWATER_MARINE_CAVE: - GetMarineCaveCoords(&sRegionMap->cursorPosX, &sRegionMap->cursorPosY); + GetMarineCaveCoords(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY); return; } - sRegionMap->cursorPosX = gRegionMapEntries[sRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; - sRegionMap->cursorPosY = gRegionMapEntries[sRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; + gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) @@ -1139,40 +1139,40 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap)) { case SS_TIDAL_LOCATION_SLATEPORT: - sRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; + gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; break; case SS_TIDAL_LOCATION_LILYCOVE: - sRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; + gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; break; case SS_TIDAL_LOCATION_ROUTE124: - sRegionMap->mapSecId = MAPSEC_ROUTE_124; + gRegionMap->mapSecId = MAPSEC_ROUTE_124; break; case SS_TIDAL_LOCATION_ROUTE131: - sRegionMap->mapSecId = MAPSEC_ROUTE_131; + gRegionMap->mapSecId = MAPSEC_ROUTE_131; break; default: case SS_TIDAL_LOCATION_CURRENTS: mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); - sRegionMap->mapSecId = mapHeader->regionMapSectionId; - dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[sRegionMap->mapSecId].width; + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[gRegionMap->mapSecId].width; if (dimensionScale == 0) dimensionScale = 1; x = xOnMap / dimensionScale; - if (x >= gRegionMapEntries[sRegionMap->mapSecId].width) - x = gRegionMapEntries[sRegionMap->mapSecId].width - 1; + if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) + x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; - dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[sRegionMap->mapSecId].height; + dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[gRegionMap->mapSecId].height; if (dimensionScale == 0) dimensionScale = 1; y = yOnMap / dimensionScale; - if (y >= gRegionMapEntries[sRegionMap->mapSecId].height) - y = gRegionMapEntries[sRegionMap->mapSecId].height - 1; + if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) + y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; break; } - sRegionMap->playerIsInCave = FALSE; - sRegionMap->cursorPosX = gRegionMapEntries[sRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; - sRegionMap->cursorPosY = gRegionMapEntries[sRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; + gRegionMap->playerIsInCave = FALSE; + gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } static u8 GetMapsecType(u16 mapSecId) @@ -1300,20 +1300,20 @@ static void GetPositionOfCursorWithinMapSec(void) u16 y; u16 posWithinMapSec; - if (sRegionMap->mapSecId == MAPSEC_NONE) + if (gRegionMap->mapSecId == MAPSEC_NONE) { - sRegionMap->posWithinMapSec = 0; + gRegionMap->posWithinMapSec = 0; return; } - if (!sRegionMap->zoomed) + if (!gRegionMap->zoomed) { - x = sRegionMap->cursorPosX; - y = sRegionMap->cursorPosY; + x = gRegionMap->cursorPosX; + y = gRegionMap->cursorPosY; } else { - x = sRegionMap->zoomedCursorPosX; - y = sRegionMap->zoomedCursorPosY; + x = gRegionMap->zoomedCursorPosX; + y = gRegionMap->zoomedCursorPosY; } posWithinMapSec = 0; while (1) @@ -1333,13 +1333,13 @@ static void GetPositionOfCursorWithinMapSec(void) else { x--; - if (GetMapSecIdAt(x, y) == sRegionMap->mapSecId) + if (GetMapSecIdAt(x, y) == gRegionMap->mapSecId) { posWithinMapSec++; } } } - sRegionMap->posWithinMapSec = posWithinMapSec; + gRegionMap->posWithinMapSec = posWithinMapSec; } static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) @@ -1352,7 +1352,7 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) } for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++) { - if (GetMapSecIdAt(x, y) == sRegionMap->mapSecId) + if (GetMapSecIdAt(x, y) == gRegionMap->mapSecId) { return TRUE; } @@ -1362,11 +1362,11 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) static void SpriteCB_CursorMapFull(struct Sprite *sprite) { - if (sRegionMap->cursorMovementFrameCounter != 0) + if (gRegionMap->cursorMovementFrameCounter != 0) { - sprite->x += 2 * sRegionMap->cursorDeltaX; - sprite->y += 2 * sRegionMap->cursorDeltaY; - sRegionMap->cursorMovementFrameCounter--; + sprite->x += 2 * gRegionMap->cursorDeltaX; + sprite->y += 2 * gRegionMap->cursorDeltaY; + gRegionMap->cursorMovementFrameCounter--; } } @@ -1386,20 +1386,20 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) template = sRegionMapCursorSpriteTemplate; sheet.tag = tileTag; template.tileTag = tileTag; - sRegionMap->cursorTileTag = tileTag; + gRegionMap->cursorTileTag = tileTag; palette.tag = paletteTag; template.paletteTag = paletteTag; - sRegionMap->cursorPaletteTag = paletteTag; - if (!sRegionMap->zoomed) + gRegionMap->cursorPaletteTag = paletteTag; + if (!gRegionMap->zoomed) { - sheet.data = sRegionMap->cursorSmallImage; - sheet.size = sizeof(sRegionMap->cursorSmallImage); + sheet.data = gRegionMap->cursorSmallImage; + sheet.size = sizeof(gRegionMap->cursorSmallImage); template.callback = SpriteCB_CursorMapFull; } else { - sheet.data = sRegionMap->cursorLargeImage; - sheet.size = sizeof(sRegionMap->cursorLargeImage); + sheet.data = gRegionMap->cursorLargeImage; + sheet.size = sizeof(gRegionMap->cursorLargeImage); template.callback = SpriteCB_CursorMapZoomed; } LoadSpriteSheet(&sheet); @@ -1407,46 +1407,46 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) spriteId = CreateSprite(&template, 0x38, 0x48, 0); if (spriteId != MAX_SPRITES) { - sRegionMap->cursorSprite = &gSprites[spriteId]; - if (sRegionMap->zoomed == TRUE) + gRegionMap->cursorSprite = &gSprites[spriteId]; + if (gRegionMap->zoomed == TRUE) { - sRegionMap->cursorSprite->oam.size = SPRITE_SIZE(32x32); - sRegionMap->cursorSprite->x -= 8; - sRegionMap->cursorSprite->y -= 8; - StartSpriteAnim(sRegionMap->cursorSprite, 1); + gRegionMap->cursorSprite->oam.size = SPRITE_SIZE(32x32); + gRegionMap->cursorSprite->x -= 8; + gRegionMap->cursorSprite->y -= 8; + StartSpriteAnim(gRegionMap->cursorSprite, 1); } else { - sRegionMap->cursorSprite->oam.size = SPRITE_SIZE(16x16); - sRegionMap->cursorSprite->x = 8 * sRegionMap->cursorPosX + 4; - sRegionMap->cursorSprite->y = 8 * sRegionMap->cursorPosY + 4; + gRegionMap->cursorSprite->oam.size = SPRITE_SIZE(16x16); + gRegionMap->cursorSprite->x = 8 * gRegionMap->cursorPosX + 4; + gRegionMap->cursorSprite->y = 8 * gRegionMap->cursorPosY + 4; } - sRegionMap->cursorSprite->data[1] = 2; - sRegionMap->cursorSprite->data[2] = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101; - sRegionMap->cursorSprite->data[3] = TRUE; + gRegionMap->cursorSprite->data[1] = 2; + gRegionMap->cursorSprite->data[2] = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101; + gRegionMap->cursorSprite->data[3] = TRUE; } } static void FreeRegionMapCursorSprite(void) { - if (sRegionMap->cursorSprite != NULL) + if (gRegionMap->cursorSprite != NULL) { - DestroySprite(sRegionMap->cursorSprite); - FreeSpriteTilesByTag(sRegionMap->cursorTileTag); - FreeSpritePaletteByTag(sRegionMap->cursorPaletteTag); + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); } } // Unused static void SetUnkCursorSpriteData(void) { - sRegionMap->cursorSprite->data[3] = TRUE; + gRegionMap->cursorSprite->data[3] = TRUE; } // Unused static void ClearUnkCursorSpriteData(void) { - sRegionMap->cursorSprite->data[3] = FALSE; + gRegionMap->cursorSprite->data[3] = FALSE; } void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) @@ -1458,7 +1458,7 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) if (IsEventIslandMapSecId(gMapHeader.regionMapSectionId)) { - sRegionMap->playerIconSprite = NULL; + gRegionMap->playerIconSprite = NULL; return; } if (gSaveBlock2Ptr->playerGender == FEMALE) @@ -1469,49 +1469,49 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) LoadSpriteSheet(&sheet); LoadSpritePalette(&palette); spriteId = CreateSprite(&template, 0, 0, 1); - sRegionMap->playerIconSprite = &gSprites[spriteId]; - if (!sRegionMap->zoomed) + gRegionMap->playerIconSprite = &gSprites[spriteId]; + if (!gRegionMap->zoomed) { - sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 8 + 4; - sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 8 + 4; - sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; + gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 8 + 4; + gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 8 + 4; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; } else { - sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 16 - 0x30; - sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 16 - 0x42; - sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; + gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 16 - 0x30; + gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 16 - 0x42; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; } } static void HideRegionMapPlayerIcon(void) { - if (sRegionMap->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - sRegionMap->playerIconSprite->invisible = TRUE; - sRegionMap->playerIconSprite->callback = SpriteCallbackDummy; + gRegionMap->playerIconSprite->invisible = TRUE; + gRegionMap->playerIconSprite->callback = SpriteCallbackDummy; } } static void UnhideRegionMapPlayerIcon(void) { - if (sRegionMap->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - if (sRegionMap->zoomed == TRUE) + if (gRegionMap->zoomed == TRUE) { - sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 16 - 0x30; - sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 16 - 0x42; - sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; - sRegionMap->playerIconSprite->invisible = FALSE; + gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 16 - 0x30; + gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 16 - 0x42; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; + gRegionMap->playerIconSprite->invisible = FALSE; } else { - sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 8 + 4; - sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 8 + 4; - sRegionMap->playerIconSprite->x2 = 0; - sRegionMap->playerIconSprite->y2 = 0; - sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; - sRegionMap->playerIconSprite->invisible = FALSE; + gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 8 + 4; + gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 8 + 4; + gRegionMap->playerIconSprite->x2 = 0; + gRegionMap->playerIconSprite->y2 = 0; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; + gRegionMap->playerIconSprite->invisible = FALSE; } } } @@ -1523,8 +1523,8 @@ static void UnhideRegionMapPlayerIcon(void) static void SpriteCB_PlayerIconMapZoomed(struct Sprite *sprite) { - sprite->x2 = -2 * sRegionMap->scrollX; - sprite->y2 = -2 * sRegionMap->scrollY; + sprite->x2 = -2 * gRegionMap->scrollX; + sprite->y2 = -2 * gRegionMap->scrollY; sprite->sY = sprite->y + sprite->y2 + sprite->centerToCornerVecY; sprite->sX = sprite->x + sprite->x2 + sprite->centerToCornerVecX; if (sprite->sY < -8 || sprite->sY > DISPLAY_HEIGHT + 8 || sprite->sX < -8 || sprite->sX > DISPLAY_WIDTH + 8) @@ -1545,7 +1545,7 @@ static void SpriteCB_PlayerIconMapFull(struct Sprite *sprite) static void SpriteCB_PlayerIcon(struct Sprite *sprite) { - if (sRegionMap->blinkPlayerIcon) + if (gRegionMap->blinkPlayerIcon) { if (++sprite->sTimer > 16) { @@ -1561,8 +1561,8 @@ static void SpriteCB_PlayerIcon(struct Sprite *sprite) void TrySetPlayerIconBlink(void) { - if (sRegionMap->playerIsInCave) - sRegionMap->blinkPlayerIcon = TRUE; + if (gRegionMap->playerIsInCave) + gRegionMap->blinkPlayerIcon = TRUE; } #undef sY @@ -1634,7 +1634,7 @@ static void GetMapSecDimensions(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *h bool8 IsRegionMapZoomed(void) { - return sRegionMap->zoomed; + return gRegionMap->zoomed; } bool32 IsEventIslandMapSecId(u8 mapSecId) @@ -2024,7 +2024,11 @@ static void CB_ExitFlyMap(void) { SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap); } - TRY_FREE_AND_SET_NULL(sFlyMap); + if (sFlyMap != NULL) + { + free(sFlyMap); + sFlyMap = NULL; + } FreeAllWindowBuffers(); } break; diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index b854c899e..782a05c75 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -30,10 +30,10 @@ struct GFRomHeader u32 pokedexFlag; u32 mysteryEventFlag; u32 pokedexCount; - u8 playerNameLength; + u8 unk1; u8 unk2; - u8 pokemonNameLength1; - u8 pokemonNameLength2; + u8 unk3; + u8 unk4; u8 unk5; u8 unk6; u8 unk7; @@ -79,8 +79,8 @@ struct GFRomHeader u32 pcItemsOffset; u32 giftRibbonsOffset; u32 enigmaBerryOffset; - u32 enigmaBerrySize; - const u8 * moveDescriptions; + u32 mapViewOffset; + u32 unk19; u32 unk20; }; @@ -110,24 +110,23 @@ static const struct GFRomHeader sGFRomHeader = { .pokedexFlag = FLAG_RECEIVED_POKEDEX_FROM_BIRCH, .mysteryEventFlag = FLAG_SYS_MYSTERY_EVENT_ENABLE, .pokedexCount = NATIONAL_DEX_COUNT, - .playerNameLength = PLAYER_NAME_LENGTH, - .unk2 = 10, - .pokemonNameLength1 = POKEMON_NAME_LENGTH, - .pokemonNameLength2 = POKEMON_NAME_LENGTH, - // Two of the below 12s are likely move/ability name length, given their presence in this header - .unk5 = 12, - .unk6 = 12, - .unk7 = 6, - .unk8 = 12, - .unk9 = 6, - .unk10 = 16, - .unk11 = 18, - .unk12 = 12, - .unk13 = 15, - .unk14 = 11, - .unk15 = 1, - .unk16 = 8, - .unk17 = 12, + .unk1 = 0x07, + .unk2 = 0x0a, + .unk3 = 0x0a, + .unk4 = 0x0a, + .unk5 = 0x0c, + .unk6 = 0x0c, + .unk7 = 0x06, + .unk8 = 0x0c, + .unk9 = 0x06, + .unk10 = 0x10, + .unk11 = 0x12, + .unk12 = 0x0c, + .unk13 = 0x0f, + .unk14 = 0x0b, + .unk15 = 0x01, + .unk16 = 0x08, + .unk17 = 0x0c, .saveBlock2Size = sizeof(struct SaveBlock2), .saveBlock1Size = sizeof(struct SaveBlock1), .partyCountOffset = offsetof(struct SaveBlock1, playerPartyCount), @@ -160,7 +159,7 @@ static const struct GFRomHeader sGFRomHeader = { .pcItemsOffset = offsetof(struct SaveBlock1, pcItems), .giftRibbonsOffset = offsetof(struct SaveBlock1, giftRibbons), .enigmaBerryOffset = offsetof(struct SaveBlock1, enigmaBerry), - .enigmaBerrySize = sizeof(struct EnigmaBerry), - .moveDescriptions = NULL, + .mapViewOffset = offsetof(struct SaveBlock1, mapView), + .unk19 = 0x00000000, .unk20 = 0x00000000, // 0xFFFFFFFF in FRLG }; diff --git a/src/rotating_gate.c b/src/rotating_gate.c index e2fd575a1..f839d22c3 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -612,10 +612,12 @@ static const u8 sRotatingGate_ArmLayout[][4 * 2] = }, }; -static EWRAM_DATA u8 sRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0}; -static EWRAM_DATA const struct RotatingGatePuzzle *sRotatingGate_PuzzleConfig = NULL; -static EWRAM_DATA u8 sRotatingGate_PuzzleCount = 0; +// ewram +static EWRAM_DATA u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0}; +static EWRAM_DATA const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig = NULL; +static EWRAM_DATA u8 gRotatingGate_PuzzleCount = 0; +// text static s32 GetCurrentMapRotatingGatePuzzleType(void) { if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FORTREE_CITY_GYM) && @@ -638,9 +640,9 @@ static void RotatingGate_ResetAllGateOrientations(void) s32 i; u8 *ptr = (u8 *)GetVarPointer(VAR_TEMP_0); - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - ptr[i] = sRotatingGate_PuzzleConfig[i].orientation; + ptr[i] = gRotatingGate_PuzzleConfig[i].orientation; } } @@ -681,12 +683,12 @@ static void RotatingGate_LoadPuzzleConfig(void) switch (puzzleType) { case PUZZLE_FORTREE_CITY_GYM: - sRotatingGate_PuzzleConfig = sRotatingGate_FortreePuzzleConfig; - sRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_FortreePuzzleConfig); + gRotatingGate_PuzzleConfig = sRotatingGate_FortreePuzzleConfig; + gRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_FortreePuzzleConfig); break; case PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6: - sRotatingGate_PuzzleConfig = sRotatingGate_TrickHousePuzzleConfig; - sRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_TrickHousePuzzleConfig); + gRotatingGate_PuzzleConfig = sRotatingGate_TrickHousePuzzleConfig; + gRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_TrickHousePuzzleConfig); break; case PUZZLE_NONE: default: @@ -694,7 +696,7 @@ static void RotatingGate_LoadPuzzleConfig(void) } for (i = 0; i < ROTATING_GATE_PUZZLE_MAX - 1; i++) - sRotatingGate_GateSpriteIds[i] = MAX_SPRITES; + gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; } static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) @@ -708,15 +710,15 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) s16 y = gSaveBlock1Ptr->pos.y - 2; s16 y2 = gSaveBlock1Ptr->pos.y + MAP_OFFSET_H; - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - s16 x3 = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 y3 = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 x3 = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 y3 = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && - sRotatingGate_GateSpriteIds[i] == MAX_SPRITES) + gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) { - sRotatingGate_GateSpriteIds[i] = RotatingGate_CreateGate(i, deltaX, deltaY); + gRotatingGate_GateSpriteIds[i] = RotatingGate_CreateGate(i, deltaX, deltaY); } } } @@ -728,7 +730,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) u8 spriteId; s16 x, y; - const struct RotatingGatePuzzle *gate = &sRotatingGate_PuzzleConfig[gateId]; + const struct RotatingGatePuzzle *gate = &gRotatingGate_PuzzleConfig[gateId]; if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1) template = sSpriteTemplate_RotatingGateRegular; @@ -825,20 +827,20 @@ static void RotatingGate_DestroyGatesOutsideViewport(void) s16 y = gSaveBlock1Ptr->pos.y - 2; s16 y2 = gSaveBlock1Ptr->pos.y + MAP_OFFSET_H; - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - s16 xGate = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 yGate = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 xGate = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 yGate = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; - if (sRotatingGate_GateSpriteIds[i] == MAX_SPRITES) + if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) continue; if (xGate < x || xGate > x2 || yGate < y || yGate > y2) { - struct Sprite *sprite = &gSprites[sRotatingGate_GateSpriteIds[i]]; + struct Sprite *sprite = &gSprites[gRotatingGate_GateSpriteIds[i]]; FreeSpriteOamMatrix(sprite); DestroySprite(sprite); - sRotatingGate_GateSpriteIds[i] = MAX_SPRITES; + gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; } } } @@ -860,9 +862,9 @@ static s32 RotatingGate_CanRotate(u8 gateId, s32 rotationDirection) orientation = RotatingGate_GetGateOrientation(gateId); - shape = sRotatingGate_PuzzleConfig[gateId].shape; - x = sRotatingGate_PuzzleConfig[gateId].x + MAP_OFFSET; - y = sRotatingGate_PuzzleConfig[gateId].y + MAP_OFFSET; + shape = gRotatingGate_PuzzleConfig[gateId].shape; + x = gRotatingGate_PuzzleConfig[gateId].x + MAP_OFFSET; + y = gRotatingGate_PuzzleConfig[gateId].y + MAP_OFFSET; // Loop through the gate's "arms" clockwise (north, south, east, west) for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++) @@ -889,15 +891,15 @@ static s32 RotatingGate_HasArm(u8 gateId, u8 armInfo) s32 isLongArm = armInfo % 2; s8 armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4; - s32 shape = sRotatingGate_PuzzleConfig[gateId].shape; + s32 shape = gRotatingGate_PuzzleConfig[gateId].shape; return sRotatingGate_ArmLayout[shape][armOrientation * 2 + isLongArm]; } static void RotatingGate_TriggerRotationAnimation(u8 gateId, s32 rotationDirection) { - if (sRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES) + if (gRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES) { - struct Sprite *sprite = &gSprites[sRotatingGate_GateSpriteIds[gateId]]; + struct Sprite *sprite = &gSprites[gRotatingGate_GateSpriteIds[gateId]]; sprite->data[1] = rotationDirection; sprite->data[2] = RotatingGate_GetGateOrientation(gateId); } @@ -955,10 +957,10 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) if (!GetCurrentMapRotatingGatePuzzleType()) return FALSE; - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - s16 gateX = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 gateY = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 gateX = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 gateY = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { @@ -993,10 +995,10 @@ bool8 CheckForRotatingGatePuzzleCollisionWithoutAnimation(u8 direction, s16 x, s if (!GetCurrentMapRotatingGatePuzzleType()) return FALSE; - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - s16 gateX = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 gateY = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 gateX = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 gateY = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { diff --git a/src/rotating_tile_puzzle.c b/src/rotating_tile_puzzle.c index 4581f6e5b..2e919f550 100644 --- a/src/rotating_tile_puzzle.c +++ b/src/rotating_tile_puzzle.c @@ -81,11 +81,14 @@ static const u8 sMovement_FaceUp[] = MOVEMENT_ACTION_STEP_END }; -static void SaveRotatingTileObject(u8, u8); -static void TurnUnsavedRotatingTileObject(u8, u8); +// This file's functions. +static void SaveRotatingTileObject(u8 eventTemplateId, u8 arg1); +static void TurnUnsavedRotatingTileObject(u8 eventTemplateId, u8 arg1); +// EWRAM vars EWRAM_DATA static struct RotatingTilePuzzle *sRotatingTilePuzzle = NULL; +// code void InitRotatingTilePuzzle(bool8 isTrickHouse) { if (sRotatingTilePuzzle == NULL) @@ -98,7 +101,8 @@ void FreeRotatingTilePuzzle(void) { u8 id; - TRY_FREE_AND_SET_NULL(sRotatingTilePuzzle); + if (sRotatingTilePuzzle != NULL) + FREE_AND_SET_NULL(sRotatingTilePuzzle); id = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); ObjectEventClearHeldMovementIfFinished(&gObjectEvents[id]); diff --git a/src/save.c b/src/save.c index 52cdaa5dd..dafc20868 100644 --- a/src/save.c +++ b/src/save.c @@ -73,12 +73,6 @@ struct SAVEBLOCK_CHUNK(struct PokemonStorage, 8), // SECTOR_ID_PKMN_STORAGE_END }; -// These will produce an error if a save struct is larger than the space -// alloted for it in the flash. -STATIC_ASSERT(sizeof(struct SaveBlock2) <= SECTOR_DATA_SIZE, SaveBlock2FreeSpace); -STATIC_ASSERT(sizeof(struct SaveBlock1) <= SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLOCK1_END - SECTOR_ID_SAVEBLOCK1_START + 1), SaveBlock1FreeSpace); -STATIC_ASSERT(sizeof(struct PokemonStorage) <= SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1), PokemonStorageFreeSpace); - u16 gLastWrittenSector; u32 gLastSaveCounter; u16 gLastKnownGoodSector; diff --git a/src/scrcmd.c b/src/scrcmd.c index f76d09871..d8d543df4 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1179,7 +1179,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { - u8 graphicsId = ScriptReadByte(ctx); + u16 graphicsId = ScriptReadByte(ctx); u8 virtualObjId = ScriptReadByte(ctx); u16 x = VarGet(ScriptReadHalfword(ctx)); u32 y = VarGet(ScriptReadHalfword(ctx)); @@ -2383,4 +2383,4 @@ bool8 ScrCmd_checkfollower(struct ScriptContext *ctx) { CheckPlayerHasFollower(); return FALSE; -} +} \ No newline at end of file diff --git a/src/script.c b/src/script.c index 4728e739c..20d8d2ef3 100644 --- a/src/script.c +++ b/src/script.c @@ -447,3 +447,10 @@ void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize) scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script); InitRamScript(script, scriptSize, MAP_GROUP(UNDEFINED), MAP_NUM(UNDEFINED), NO_OBJECT); } + +u8* ReadWord(u8 index) +{ + struct ScriptContext *ctx = &sScriptContext1; + + return (T1_READ_PTR(&ctx->data[index])); +} diff --git a/src/script_movement.c b/src/script_movement.c index 10517dfc8..92f36e92d 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -6,6 +6,7 @@ #include "constants/event_objects.h" #include "constants/event_object_movement.h" +// static functions static void ScriptMovement_StartMoveObjects(u8 priority); static u8 GetMoveObjectsTaskId(void); static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 objEventId, const u8 *movementScript); @@ -16,8 +17,10 @@ static void ScriptMovement_UnfreezeActiveObjects(u8 taskId); static void ScriptMovement_MoveObjects(u8 taskId); static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, const u8 *movementScript); -static EWRAM_DATA const u8 *sMovementScripts[OBJECT_EVENTS_COUNT] = {0}; +// EWRAM_DATA +static EWRAM_DATA const u8 *gMovementScripts[OBJECT_EVENTS_COUNT] = {0}; +// text bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript) { u8 objEventId; @@ -164,12 +167,12 @@ static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId) static void SetMovementScript(u8 moveScrId, const u8 *movementScript) { - sMovementScripts[moveScrId] = movementScript; + gMovementScripts[moveScrId] = movementScript; } static const u8 *GetMovementScript(u8 moveScrId) { - return sMovementScripts[moveScrId]; + return gMovementScripts[moveScrId]; } static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 objEventId, const u8 *movementScript) diff --git a/src/siirtc.c b/src/siirtc.c index 0e598f717..5f4fc0a23 100644 --- a/src/siirtc.c +++ b/src/siirtc.c @@ -4,7 +4,6 @@ #include "gba/gba.h" #include "siirtc.h" -#include "config.h" #define STATUS_INTFE 0x02 // frequency interrupt enable #define STATUS_INTME 0x08 // per-minute interrupt enable diff --git a/src/slot_machine.c b/src/slot_machine.c index cb6a380d6..1dfa026e5 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1390,7 +1390,7 @@ static bool8 SlotTask_HandleBetInput(struct Task *task) // SLOTTASK_MSG_NEED_3_COINS static bool8 SlotTask_PrintMsg_Need3Coins(struct Task *task) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouDontHaveThreeCoins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_NEED_3_COINS; @@ -1655,7 +1655,7 @@ static bool8 SlotTask_NoMatches(struct Task *task) // SLOTTASK_ASK_QUIT static bool8 SlotTask_AskQuit(struct Task *task) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, gText_QuitTheGame, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); CreateYesNoMenuParameterized(0x15, 7, 0x214, 0x180, 0xE, 0xF); @@ -1687,7 +1687,7 @@ static bool8 SlotTask_HandleQuitInput(struct Task *task) // SLOTTASK_MSG_MAX_COINS static bool8 SlotTask_PrintMsg_MaxCoins(struct Task *task) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouveGot9999Coins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_MAX_COINS; @@ -1708,7 +1708,7 @@ static bool8 SlotTask_WaitMsg_MaxCoins(struct Task *task) // SLOTTASK_MSG_NO_MORE_COINS static bool8 SlotTask_PrintMsg_NoMoreCoins(struct Task *task) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouveRunOutOfCoins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_NO_MORE_COINS; @@ -1756,10 +1756,14 @@ static bool8 SlotTask_FreeDataStructures(struct Task *task) FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Number); FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Pokeball); FREE_AND_SET_NULL(sImageTable_DigitalDisplay_DPad); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); - TRY_FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); + if (sImageTable_ReelTimePikachu != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); + if (sImageTable_ReelTimeMachineAntennae != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); + if (sImageTable_ReelTimeMachine != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); + if (sImageTable_BrokenReelTimeMachine != NULL) + FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); FREE_AND_SET_NULL(sMenuGfx); FREE_AND_SET_NULL(sSelectedPikaPowerTile); FREE_AND_SET_NULL(sReelOverlay_Tilemap); @@ -3861,15 +3865,21 @@ static void ReelTime_EndFailure(struct Task *task) static void LoadReelTimeWindowTilemap(s16 a0, s16 a1) { s16 i; + for (i = 4; i < 15; i++) + { LoadBgTilemap(1, &sReelTimeWindow_Tilemap[a1 + (i - 4) * 20], 2, 32 * i + a0); + } } static void ClearReelTimeWindowTilemap(s16 a0) { u8 i; + for (i = 4; i < 15; i++) + { LoadBgTilemap(1, sEmptyTilemap, 2, 32 * i + a0); + } } #undef tState @@ -4106,44 +4116,32 @@ static void CreateCreditPayoutNumberSprites(void) CreateCoinNumberSprite(x, 23, TRUE, i); } -#define sIsPayout data[0] -#define sDigitMin data[1] -#define sDigitMax data[2] -#define sCurNum data[3] // Only used to determine whether the sprite has already been updated to show the correct digit - -static void CreateCoinNumberSprite(s16 x, s16 y, bool8 isPayout, s16 digitMult) +static void CreateCoinNumberSprite(s16 x, s16 y, bool8 isPayout, s16 a3) { struct Sprite *sprite = &gSprites[CreateSprite(&sSpriteTemplate_CoinNumber, x, y, 13)]; sprite->oam.priority = 2; - sprite->sIsPayout = isPayout; - sprite->sDigitMin = digitMult; - sprite->sDigitMax = digitMult * 10; - sprite->sCurNum = -1; + sprite->data[0] = isPayout; + sprite->data[1] = a3; + sprite->data[2] = a3 * 10; + sprite->data[3] = -1; } static void SpriteCB_CoinNumber(struct Sprite *sprite) { u16 tag = sSlotMachine->coins; - if (sprite->sIsPayout) + if (sprite->data[0]) tag = sSlotMachine->payout; - if (sprite->sCurNum != tag) + if (sprite->data[3] != tag) { - // Convert total to current digit - sprite->sCurNum = tag; - tag %= (u16)sprite->sDigitMax; - tag /= (u16)sprite->sDigitMin; - - tag += GFXTAG_NUM_0; + sprite->data[3] = tag; + tag %= (u16)sprite->data[2]; + tag /= (u16)sprite->data[1]; + tag += 7; sprite->sheetTileStart = GetSpriteTileStartByTag(tag); SetSpriteSheetFrameTileNum(sprite); } } -#undef sIsPayout -#undef sDigitMin -#undef sDigitMax -#undef sCurNum - static void CreateReelBackgroundSprite(void) { u8 spriteId = CreateSprite(&sSpriteTemplate_ReelBackground, 88, 72, 15); @@ -4180,7 +4178,8 @@ static void CreateReelTimePikachuSprite(void) static void DestroyReelTimePikachuSprite(void) { DestroySprite(&gSprites[sSlotMachine->reelTimePikachuSpriteId]); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); + if (sImageTable_ReelTimePikachu != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); } static void SpriteCB_ReelTimePikachu(struct Sprite *sprite) @@ -4309,8 +4308,10 @@ static void DestroyReelTimeMachineSprites(void) for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeMachineSpriteIds); i++) DestroySprite(&gSprites[sSlotMachine->reelTimeMachineSpriteIds[i]]); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); + if (sImageTable_ReelTimeMachineAntennae != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); + if (sImageTable_ReelTimeMachine != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeNumberSpriteIds); i++) DestroySprite(&gSprites[sSlotMachine->reelTimeNumberSpriteIds[i]]); @@ -4327,7 +4328,8 @@ static void DestroyReelTimeShadowSprites(void) static void DestroyBrokenReelTimeMachineSprite(void) { DestroySprite(&gSprites[sSlotMachine->reelTimeBrokenMachineSpriteId]); - TRY_FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); + if (sImageTable_BrokenReelTimeMachine != NULL) + FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); } #define sDelayTimer data[0] diff --git a/src/start_menu.c b/src/start_menu.c index 11189ee83..90230c3dd 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -42,10 +42,9 @@ #include "text_window.h" #include "trainer_card.h" #include "window.h" -#include "union_room.h" -#include "constants/battle_frontier.h" -#include "constants/rgb.h" #include "constants/songs.h" +#include "union_room.h" +#include "constants/rgb.h" // Menu actions enum @@ -139,7 +138,7 @@ static bool8 FieldCB_ReturnToFieldStartMenu(void); static const struct WindowTemplate sSafariBallsWindowTemplate = {0, 1, 1, 9, 4, 0xF, 8}; -static const u8* const sPyramidFloorNames[FRONTIER_STAGES_PER_CHALLENGE + 1] = +static const u8* const sPyramidFloorNames[] = { gText_Floor1, gText_Floor2, @@ -393,7 +392,7 @@ static void ShowSafariBallsWindow(void) static void ShowPyramidFloorWindow(void) { - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum == FRONTIER_STAGES_PER_CHALLENGE) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum == 7) sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_1); else sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_2); diff --git a/src/tileset_anims.c b/src/tileset_anims.c index 6a7589e36..3676006a6 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -537,7 +537,7 @@ const u16 *const gTilesetAnims_BattlePyramid_StatueShadow[] = { gTilesetAnims_BattlePyramid_StatueShadow_Frame2 }; -static const u16 *const sTilesetAnims_BattleDomeFloorLightPals[] = { +static const u16 *const gTilesetAnims_BattleDomeFloorLightPals[] = { gTilesetAnims_BattleDomePals0_0, gTilesetAnims_BattleDomePals0_1, gTilesetAnims_BattleDomePals0_2, @@ -1167,7 +1167,7 @@ static void QueueAnimTiles_BattlePyramid_StatueShadow(u16 timer) static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) { - CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); + CpuCopy16(gTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(gTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) != TASK_NONE) { @@ -1178,7 +1178,7 @@ static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) static void BlendAnimPalette_BattleDome_FloorLightsNoBlend(u16 timer) { - CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); + CpuCopy16(gTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(gTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) == TASK_NONE) { BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); diff --git a/src/trade.c b/src/trade.c index 25614c91a..dd0851bbd 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2195,7 +2195,7 @@ static bool8 LoadTradeMenuSpriteSheetsAndPalettes(void) sTradeMenuData->timer++; break; case GFXTAG_MENU_TEXT_COUNT: - LoadSpritePalette(&sSpritePalette_TradeScreenText); + LoadSpritePalette(&gSpritePalette_TradeScreenText); sTradeMenuData->timer++; break; case GFXTAG_MENU_TEXT_COUNT + 1: @@ -2435,7 +2435,7 @@ static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isEventLegal) return FALSE; } -int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isEventLegal) +int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isEventLegal) { bool8 playerHasNationalDex = player.hasNationalDex; bool8 playerIsChampion = player.isChampion; @@ -2496,7 +2496,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_NONE; } -int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isEventLegal) +int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, u8 isEventLegal) { bool8 hasNationalDex = player.hasNationalDex; @@ -3744,7 +3744,7 @@ static bool8 AnimateTradeSequenceCable(void) gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x2 = 0; gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 = 0; StartSpriteAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0); - CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, PALETTES_BG | (0xF << 16), sTradeData->monSpecies[TRADE_PARTNER]); + CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]); FreeSpriteOamMatrix(&gSprites[sTradeData->bouncingPokeballSpriteId]); DestroySprite(&gSprites[sTradeData->bouncingPokeballSpriteId]); sTradeData->state++; @@ -4244,7 +4244,7 @@ static bool8 AnimateTradeSequenceWireless(void) gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x2 = 0; gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 = 0; StartSpriteAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0); - CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, PALETTES_BG | (0xF << 16), sTradeData->monSpecies[TRADE_PARTNER]); + CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]); FreeSpriteOamMatrix(&gSprites[sTradeData->bouncingPokeballSpriteId]); DestroySprite(&gSprites[sTradeData->bouncingPokeballSpriteId]); sTradeData->state++; @@ -4813,7 +4813,7 @@ static void CheckPartnersMonForRibbons(void) { u8 i; u8 numRibbons = 0; - for (i = 0; i < (MON_DATA_UNUSED_RIBBONS - MON_DATA_CHAMPION_RIBBON); i ++) + for (i = 0; i < 12; i ++) { numRibbons += GetMonData(&gEnemyParty[gSelectedTradeMonPositions[TRADE_PARTNER] % PARTY_SIZE], MON_DATA_CHAMPION_RIBBON + i); } diff --git a/src/trainer_hill.c b/src/trainer_hill.c index dad6b97ea..39c6202a0 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -32,21 +32,23 @@ #include "constants/trainer_hill.h" #include "constants/trainer_types.h" +#define HILL_TAG_NORMAL 0 +#define HILL_TAG_VARIETY 1 +#define HILL_TAG_UNIQUE 2 +#define HILL_TAG_EXPERT 3 + #define HILL_MAX_TIME 215999 // 60 * 60 * 60 - 1 -struct FloorTrainers +// EWRAM +struct TrHillStruct2 { - u8 name[HILL_TRAINERS_PER_FLOOR][HILL_TRAINER_NAME_LENGTH]; - u8 facilityClass[HILL_TRAINERS_PER_FLOOR]; + u8 floorId; + struct TrHillTag tag; + struct TrHillFloor floors[NUM_TRAINER_HILL_FLOORS]; }; -static EWRAM_DATA struct { - u8 floorId; - struct TrainerHillChallenge challenge; - struct TrainerHillFloor floors[NUM_TRAINER_HILL_FLOORS]; -} *sHillData = NULL; - -static EWRAM_DATA struct FloorTrainers *sFloorTrainers = NULL; +static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL; +static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL; EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL; // This file's functions. @@ -67,7 +69,7 @@ static void GetGameSaved(void); static void SetGameSaved(void); static void ClearGameSaved(void); static void GetChallengeWon(void); -static void TrainerHillSetMode(void); +static void TrainerHillSetTag(void); static void SetUpDataStruct(void); static void FreeDataStruct(void); static void TrainerHillDummy(void); @@ -200,12 +202,12 @@ static const u16 *const *const sPrizeListSets[] = static const u16 sEReader_Pal[] = INCBIN_U16("graphics/trainer_hill/ereader.gbapal"); static const u8 sRecordWinColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}; -static const struct TrainerHillChallenge *const sChallengeData[NUM_TRAINER_HILL_MODES] = +static const struct TrHillTag *const sDataPerTag[] = { - [HILL_MODE_NORMAL] = &sChallenge_Normal, - [HILL_MODE_VARIETY] = &sChallenge_Variety, - [HILL_MODE_UNIQUE] = &sChallenge_Unique, - [HILL_MODE_EXPERT] = &sChallenge_Expert, + &sDataTagNormal, + &sDataTagVariety, + &sDataTagUnique, + &sDataTagExpert, }; // Unused. @@ -236,15 +238,15 @@ static void (* const sHillFunctions[])(void) = [TRAINER_HILL_FUNC_SET_GAME_SAVED] = SetGameSaved, [TRAINER_HILL_FUNC_CLEAR_GAME_SAVED] = ClearGameSaved, [TRAINER_HILL_FUNC_GET_WON] = GetChallengeWon, - [TRAINER_HILL_FUNC_SET_MODE] = TrainerHillSetMode, + [TRAINER_HILL_FUNC_SET_TAG] = TrainerHillSetTag, }; -static const u8 *const sModeStrings[NUM_TRAINER_HILL_MODES] = +static const u8 *const sTagMatchStrings[] = { - [HILL_MODE_NORMAL] = gText_NormalTagMatch, - [HILL_MODE_VARIETY] = gText_VarietyTagMatch, - [HILL_MODE_UNIQUE] = gText_UniqueTagMatch, - [HILL_MODE_EXPERT] = gText_ExpertTagMatch, + gText_NormalTagMatch, + gText_VarietyTagMatch, + gText_UniqueTagMatch, + gText_ExpertTagMatch, }; static const struct ObjectEventTemplate sTrainerObjectEventTemplate = @@ -259,17 +261,18 @@ static const struct ObjectEventTemplate sTrainerObjectEventTemplate = static const u32 sNextFloorMapNum[NUM_TRAINER_HILL_FLOORS] = { - [TRAINER_HILL_1F - 1] = MAP_NUM(TRAINER_HILL_2F), - [TRAINER_HILL_2F - 1] = MAP_NUM(TRAINER_HILL_3F), - [TRAINER_HILL_3F - 1] = MAP_NUM(TRAINER_HILL_4F), - [TRAINER_HILL_4F - 1] = MAP_NUM(TRAINER_HILL_ROOF) + MAP_NUM(TRAINER_HILL_2F), + MAP_NUM(TRAINER_HILL_3F), + MAP_NUM(TRAINER_HILL_4F), + MAP_NUM(TRAINER_HILL_ROOF) }; -static const u8 sTrainerPartySlots[HILL_TRAINERS_PER_FLOOR][PARTY_SIZE / 2] = +static const u8 sTrainerPartySlots[][PARTY_SIZE / 2] = { {0, 1, 2}, {3, 4, 5} }; +// code void CallTrainerHillFunction(void) { SetUpDataStruct(); @@ -284,7 +287,7 @@ void ResetTrainerHillResults(void) gSaveBlock2Ptr->frontier.savedGame = 0; gSaveBlock2Ptr->frontier.unk_EF9 = 0; gSaveBlock1Ptr->trainerHill.bestTime = 0; - for (i = 0; i < NUM_TRAINER_HILL_MODES; i++) + for (i = 0; i < 4; i++) SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME); } @@ -297,7 +300,7 @@ u8 GetTrainerHillOpponentClass(u16 trainerId) { u8 id = trainerId - 1; - return gFacilityClassToTrainerClass[sFloorTrainers->facilityClass[id]]; + return gFacilityClassToTrainerClass[sRoomTrainers->facilityClass[id]]; } void GetTrainerHillTrainerName(u8 *dst, u16 trainerId) @@ -306,7 +309,7 @@ void GetTrainerHillTrainerName(u8 *dst, u16 trainerId) u8 id = trainerId - 1; for (i = 0; i < HILL_TRAINER_NAME_LENGTH; i++) - dst[i] = sFloorTrainers->name[id][i]; + dst[i] = sRoomTrainers->name[id][i]; } u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId) @@ -326,14 +329,15 @@ void InitTrainerHillBattleStruct(void) s32 i, j; SetUpDataStruct(); - sFloorTrainers = AllocZeroed(sizeof(*sFloorTrainers)); + sRoomTrainers = AllocZeroed(sizeof(*sRoomTrainers)); - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) { for (j = 0; j < HILL_TRAINER_NAME_LENGTH; j++) - sFloorTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j]; - - sFloorTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass; + { + sRoomTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j]; + } + sRoomTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass; } SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer); FreeDataStruct(); @@ -341,7 +345,8 @@ void InitTrainerHillBattleStruct(void) void FreeTrainerHillBattleStruct(void) { - TRY_FREE_AND_SET_NULL(sFloorTrainers); + if (sRoomTrainers != NULL) + FREE_AND_SET_NULL(sRoomTrainers); } static void SetUpDataStruct(void) @@ -350,20 +355,15 @@ static void SetUpDataStruct(void) { sHillData = AllocZeroed(sizeof(*sHillData)); sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F; - - // This copy depends on the floor data for each challenge being directly after the - // challenge header data, and for the field 'floors' in sHillData to come directly - // after the field 'challenge'. - // e.g. for HILL_MODE_NORMAL, it will copy sChallenge_Normal to sHillData->challenge and - // it will copy sFloors_Normal to sHillData->floors - CpuCopy32(sChallengeData[gSaveBlock1Ptr->trainerHill.mode], &sHillData->challenge, sizeof(sHillData->challenge) + sizeof(sHillData->floors)); + CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor)); TrainerHillDummy(); } } static void FreeDataStruct(void) { - TRY_FREE_AND_SET_NULL(sHillData); + if (sHillData != NULL) + FREE_AND_SET_NULL(sHillData); } void CopyTrainerHillTrainerText(u8 which, u16 trainerId) @@ -428,7 +428,7 @@ static void GiveChallengePrize(void) { u16 itemId = GetPrizeItemId(); - if (sHillData->challenge.numFloors != NUM_TRAINER_HILL_FLOORS || gSaveBlock1Ptr->trainerHill.receivedPrize) + if (sHillData->tag.numFloors != NUM_TRAINER_HILL_FLOORS || gSaveBlock1Ptr->trainerHill.receivedPrize) { gSpecialVar_Result = 2; } @@ -456,7 +456,7 @@ static void CheckFinalTime(void) else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime) > gSaveBlock1Ptr->trainerHill.timer) { SetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime, gSaveBlock1Ptr->trainerHill.timer); - gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.mode] = gSaveBlock1Ptr->trainerHill.bestTime; + gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.bestTime; gSpecialVar_Result = 0; } else @@ -529,9 +529,9 @@ static void BufferChallengeTime(void) static void GetAllFloorsUsed(void) { SetUpDataStruct(); - if (sHillData->challenge.numFloors != NUM_TRAINER_HILL_FLOORS) + if (sHillData->tag.numFloors != NUM_TRAINER_HILL_FLOORS) { - ConvertIntToDecimalStringN(gStringVar1, sHillData->challenge.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1); + ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1); gSpecialVar_Result = FALSE; } else @@ -592,9 +592,9 @@ void PrintOnTrainerHillRecordsWindow(void) AddTextPrinterParameterized3(0, FONT_NORMAL, x, 2, sRecordWinColors, TEXT_SKIP_DRAW, gText_TimeBoard); y = 18; - for (i = 0; i < NUM_TRAINER_HILL_MODES; i++) + for (i = 0; i < 4; i++) { - AddTextPrinterParameterized3(0, FONT_NORMAL, 0, y, sRecordWinColors, TEXT_SKIP_DRAW, sModeStrings[i]); + AddTextPrinterParameterized3(0, FONT_NORMAL, 0, y, sRecordWinColors, TEXT_SKIP_DRAW, sTagMatchStrings[i]); y += 15; total = GetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i]); minutes = total / (60 * 60); @@ -637,23 +637,23 @@ void LoadTrainerHillObjectEventTemplates(void) return; SetUpDataStruct(); - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; CpuFill32(0, gSaveBlock1Ptr->objectEventTemplates, sizeof(gSaveBlock1Ptr->objectEventTemplates)); floorId = GetFloorId(); - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) { u8 bits; eventTemplates[i] = sTrainerObjectEventTemplate; eventTemplates[i].localId = i + 1; eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass); - eventTemplates[i].x = sHillData->floors[floorId].map.trainerCoords[i] & 0xF; - eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + 5; + eventTemplates[i].x = sHillData->floors[floorId].display.coords[i] & 0xF; + eventTemplates[i].y = ((sHillData->floors[floorId].display.coords[i] >> 4) & 0xF) + 5; bits = i << 2; - eventTemplates[i].movementType = ((sHillData->floors[floorId].map.trainerDirections >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; - eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].map.trainerRanges >> bits) & 0xF; + eventTemplates[i].movementType = ((sHillData->floors[floorId].display.direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; + eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].display.range >> bits) & 0xF; eventTemplates[i].script = TrainerHill_EventScript_TrainerBattle; gSaveBlock2Ptr->frontier.trainerIds[i] = i + 1; } @@ -669,14 +669,14 @@ bool32 LoadTrainerHillFloorObjectEventScripts(void) return TRUE; } -static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floorWidth is always 16 +static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 stride) // stride is always 16 { bool8 impassable; u16 metatile; u16 elevation; - impassable = (sHillData->floors[floorId].map.collisionData[y] >> (15 - x) & 1); - metatile = sHillData->floors[floorId].map.metatileData[floorWidth * y + x] + NUM_METATILES_IN_PRIMARY; + impassable = (sHillData->floors[floorId].display.collisionData[y] >> (15 - x) & 1); + metatile = sHillData->floors[floorId].display.metatileData[stride * y + x] + NUM_METATILES_IN_PRIMARY; elevation = 3 << MAPGRID_ELEVATION_SHIFT; return ((impassable << MAPGRID_COLLISION_SHIFT) & MAPGRID_COLLISION_MASK) | elevation | (metatile & MAPGRID_METATILE_ID_MASK); @@ -684,7 +684,7 @@ static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floo void GenerateTrainerHillFloorLayout(u16 *mapArg) { - s32 y, x; + s32 i, j; u16 *src, *dst; u8 mapId = GetCurrentTrainerHillMapId(); @@ -705,25 +705,24 @@ void GenerateTrainerHillFloorLayout(u16 *mapArg) mapId = GetFloorId(); src = gMapHeader.mapLayout->map; gBackupMapLayout.map = mapArg; - // Dimensions include border area loaded beyond map - gBackupMapLayout.width = HILL_FLOOR_WIDTH + 15; - gBackupMapLayout.height = HILL_FLOOR_HEIGHT + 14; + gBackupMapLayout.width = 31; + gBackupMapLayout.height = 35; dst = mapArg + 224; // First 5 rows of the map (Entrance / Exit) are always the same - for (y = 0; y < HILL_FLOOR_HEIGHT_MARGIN; y++) + for (i = 0; i < 5; i++) { - for (x = 0; x < HILL_FLOOR_WIDTH; x++) - dst[x] = src[x]; + for (j = 0; j < 16; j++) + dst[j] = src[j]; dst += 31; src += 16; } // Load the 16x16 floor-specific layout - for (y = 0; y < HILL_FLOOR_HEIGHT_MAIN; y++) + for (i = 0; i < 16; i++) { - for (x = 0; x < HILL_FLOOR_WIDTH; x++) - dst[x] = GetMetatileForFloor(mapId, x, y, HILL_FLOOR_WIDTH); + for (j = 0; j < 16; j++) + dst[j] = GetMetatileForFloor(mapId, j, i, 16); dst += 31; } @@ -813,8 +812,8 @@ u16 LocalIdToHillTrainerId(u8 localId) bool8 GetHillTrainerFlag(u8 objectEventId) { - u32 trainerIndexStart = GetFloorId() * HILL_TRAINERS_PER_FLOOR; - u8 bitId = gObjectEvents[objectEventId].localId - 1 + trainerIndexStart; + u32 floorId = GetFloorId() * 2; + u8 bitId = gObjectEvents[objectEventId].localId - 1 + floorId; return gSaveBlock2Ptr->frontier.trainerFlags & gBitTable[bitId]; } @@ -822,24 +821,24 @@ bool8 GetHillTrainerFlag(u8 objectEventId) void SetHillTrainerFlag(void) { u8 i; - u8 trainerIndexStart = GetFloorId() * HILL_TRAINERS_PER_FLOOR; + u8 floorId = GetFloorId() * 2; - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == gTrainerBattleOpponent_A) { - gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[trainerIndexStart + i]; + gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[floorId + i]; break; } } if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) { - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == gTrainerBattleOpponent_B) { - gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[trainerIndexStart + i]; + gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[floorId + i]; break; } } @@ -862,14 +861,14 @@ static void CreateNPCTrainerHillParty(u16 trainerId, u8 firstMonId) u8 trId, level; s32 i, floorId, partySlot; - if (trainerId == 0 || trainerId > HILL_TRAINERS_PER_FLOOR) + if (trainerId == 0 || trainerId > 2) return; trId = trainerId - 1; SetUpDataStruct(); level = GetHighestLevelInPlayerParty(); floorId = GetFloorId(); - for (i = firstMonId, partySlot = 0; i < firstMonId + PARTY_SIZE / 2; i++, partySlot++) + for (i = firstMonId, partySlot = 0; i < firstMonId + 3; i++, partySlot++) { u8 id = sTrainerPartySlots[trId][partySlot]; struct Pokemon *mon = &gEnemyParty[i]; @@ -891,7 +890,7 @@ void FillHillTrainersParties(void) { ZeroEnemyPartyMons(); CreateNPCTrainerHillParty(gTrainerBattleOpponent_A, 0); - CreateNPCTrainerHillParty(gTrainerBattleOpponent_B, PARTY_SIZE / 2); + CreateNPCTrainerHillParty(gTrainerBattleOpponent_B, 3); } // This function is unused, but my best guess is @@ -936,7 +935,7 @@ u8 GetNumFloorsInTrainerHillChallenge(void) u8 floors; SetUpDataStruct(); - floors = sHillData->challenge.numFloors; + floors = sHillData->tag.numFloors; FreeDataStruct(); return floors; @@ -990,20 +989,16 @@ static void GetChallengeWon(void) gSpecialVar_Result = TRUE; } -static void TrainerHillSetMode(void) +static void TrainerHillSetTag(void) { - gSaveBlock1Ptr->trainerHill.mode = gSpecialVar_0x8005; + gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005; gSaveBlock1Ptr->trainerHill.bestTime = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005]; } -// Determines which prize list to use from the set of prize lists. -static u8 GetPrizeListId(bool8 allowTMs) +static u8 GetPrizeListId(bool8 maxTrainers) { u8 prizeListId, i, modBy; - // The initial selection depends on the trainer numbers for the completed challenge. - // These don't change with the available challenge modes, so Normal/Unique will always - // have a prizeListId of 8, and Variety/Expert will have a prizeListId of 24. prizeListId = 0; for (i = 0; i < NUM_TRAINER_HILL_FLOORS; i++) { @@ -1011,10 +1006,8 @@ static u8 GetPrizeListId(bool8 allowTMs) prizeListId ^= sHillData->floors[i].trainerNum2 & 0x1F; } - // In practice, the conditional below is always true. - // The 2nd half of the lists in both sets of lists all have a TM as the "grand prize", while the 1st half do not, - // so taking the mod of the (total / 2) ensures that a prize list without a TM will be used. - if (allowTMs) + // Not possible to win TMs with fewer than 8 trainers + if (maxTrainers) modBy = NUM_TRAINER_HILL_PRIZE_LISTS; else modBy = NUM_TRAINER_HILL_PRIZE_LISTS / 2; @@ -1027,64 +1020,38 @@ static u16 GetPrizeItemId(void) { u8 i; const u16 *prizeList; - s32 trainerNumSum = 0, prizeListSetId, minutes, id; + s32 var = 0, prizeListSetId, minutes, id; - // First determine which set of prize lists to use. The sets of lists only differ in - // what TMs they can offer as the "grand prize" for a time under 12 minutes. - // Which set of lists gets used is based on the sum of all the trainer numbers for that - // challenge. These don't change with the available challenge modes, so Normal will always - // have a prizeListSetId of 0, and Unique/Variety/Expert will have a prizeListSetId of 1. for (i = 0; i < NUM_TRAINER_HILL_FLOORS; i++) { - trainerNumSum += sHillData->floors[i].trainerNum1; - trainerNumSum += sHillData->floors[i].trainerNum2; + var += sHillData->floors[i].trainerNum1; + var += sHillData->floors[i].trainerNum2; } - prizeListSetId = trainerNumSum / 256; - prizeListSetId %= (int)ARRAY_COUNT(sPrizeListSets); - // Now get which prize list to use from the set. See GetPrizeListId for details. - // The below conditional will always be true, because a Trainer Hill challenge can't be entered - // until the player has entered the Hall of Fame (FLAG_SYS_GAME_CLEAR is set) and because all - // of the available challenge modes have the full 8 trainers (NUM_TRAINER_HILL_TRAINERS). - if (FlagGet(FLAG_SYS_GAME_CLEAR) && sHillData->challenge.numTrainers == NUM_TRAINER_HILL_TRAINERS) + prizeListSetId = var / 256; + prizeListSetId %= 2; + if (FlagGet(FLAG_SYS_GAME_CLEAR) && sHillData->tag.numTrainers == NUM_TRAINER_HILL_TRAINERS) i = GetPrizeListId(TRUE); else i = GetPrizeListId(FALSE); - // 1 is added to Expert mode's prize list selection because otherwise it has the same prizes as Variety - if (gSaveBlock1Ptr->trainerHill.mode == HILL_MODE_EXPERT) + if (gSaveBlock1Ptr->trainerHill.tag == HILL_TAG_EXPERT) i = (i + 1) % NUM_TRAINER_HILL_PRIZE_LISTS; - // After the above (non-random) calculations, the following are the possible prize list selections: - // sPrizeListSets[0][8] (Normal) - // sPrizeListSets[1][4] (Variety) - // sPrizeListSets[1][8] (Unique) - // sPrizeListSets[1][5] (Expert) prizeList = sPrizeListSets[prizeListSetId][i]; - - // Which prize is given from the list depends on the time scored. - // The prize for any time after 12 minutes is the same in every list. - // The prizes for a time under 12 minutes are: - // - ITEM_TM11_SUNNY_DAY (Normal) - // - ITEM_ELIXIR (Variety) - // - ITEM_TM19_GIGA_DRAIN (Unique) - // - ITEM_TM31_BRICK_BREAK (Expert) - // As an additional note, if players were allowed to enter a Trainer Hill challenge before - // entering the Hall of Fame, there would be 1 additional prize possibility (ITEM_MAX_ETHER) - // as Normal / Unique modes would use sPrizeListSets[0][3] / sPrizeListSets[1][3] respectively. minutes = (signed)(gSaveBlock1Ptr->trainerHill.timer) / (60 * 60); if (minutes < 12) - id = 0; // Depends on list + id = 0; else if (minutes < 13) - id = 1; // ITEM_ETHER + id = 1; else if (minutes < 14) - id = 2; // ITEM_MAX_POTION + id = 2; else if (minutes < 16) - id = 3; // ITEM_REVIVE + id = 3; else if (minutes < 18) - id = 4; // ITEM_FLUFFY_TAIL + id = 4; else - id = 5; // ITEM_GREAT_BALL + id = 5; return prizeList[id]; } diff --git a/src/tv.c b/src/tv.c index 2f3d17ee2..b9d064026 100644 --- a/src/tv.c +++ b/src/tv.c @@ -373,21 +373,21 @@ static const u8 *const sTV3CheersForPokeblocksTextGroup[] = { }; static const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = { - [BRAVOTOWER_STATE_INTRO] = BravoTrainerBattleTower_Text_Intro, - [BRAVOTOWER_STATE_NEW_RECORD] = BravoTrainerBattleTower_Text_NewRecord, - [BRAVOTOWER_STATE_LOST] = BravoTrainerBattleTower_Text_Lost, - [BRAVOTOWER_STATE_WON] = BravoTrainerBattleTower_Text_Won, - [BRAVOTOWER_STATE_LOST_FINAL] = BravoTrainerBattleTower_Text_LostFinal, - [BRAVOTOWER_STATE_SATISFIED] = BravoTrainerBattleTower_Text_Satisfied, - [BRAVOTOWER_STATE_UNSATISFIED] = BravoTrainerBattleTower_Text_Unsatisfied, - [BRAVOTOWER_STATE_UNUSED_1] = BravoTrainerBattleTower_Text_None1, - [BRAVOTOWER_STATE_UNUSED_2] = BravoTrainerBattleTower_Text_None2, - [BRAVOTOWER_STATE_UNUSED_3] = BravoTrainerBattleTower_Text_None3, - [BRAVOTOWER_STATE_UNUSED_4] = BravoTrainerBattleTower_Text_None4, - [BRAVOTOWER_STATE_RESPONSE] = BravoTrainerBattleTower_Text_Response, - [BRAVOTOWER_STATE_RESPONSE_SATISFIED] = BravoTrainerBattleTower_Text_ResponseSatisfied, - [BRAVOTOWER_STATE_RESPONSE_UNSATISFIED] = BravoTrainerBattleTower_Text_ResponseUnsatisfied, - [BRAVOTOWER_STATE_OUTRO] = BravoTrainerBattleTower_Text_Outro + gTVBravoTrainerBattleTowerText00, + gTVBravoTrainerBattleTowerText01, + gTVBravoTrainerBattleTowerText02, + gTVBravoTrainerBattleTowerText03, + gTVBravoTrainerBattleTowerText04, + gTVBravoTrainerBattleTowerText05, + gTVBravoTrainerBattleTowerText06, + gTVBravoTrainerBattleTowerText07, + gTVBravoTrainerBattleTowerText08, + gTVBravoTrainerBattleTowerText09, + gTVBravoTrainerBattleTowerText10, + gTVBravoTrainerBattleTowerText11, + gTVBravoTrainerBattleTowerText12, + gTVBravoTrainerBattleTowerText13, + gTVBravoTrainerBattleTowerText14 }; static const u8 *const sTVContestLiveUpdatesTextGroup[] = { @@ -723,7 +723,7 @@ static const u8 *const sTVInSearchOfTrainersTextGroup[] = { // Secret Base Secrets TV Show states for actions that can be taken in a secret base // The flags that determine whether or not the action was taken are commented -static const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] = +const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] = { SBSECRETS_STATE_USED_CHAIR, // SECRET_BASE_USED_CHAIR SBSECRETS_STATE_USED_BALLOON, // SECRET_BASE_USED_BALLOON @@ -1449,7 +1449,7 @@ static void InterviewAfter_BravoTrainerPokemonProfile(void) } } -void BravoTrainerPokemonProfile_BeforeInterview1(u16 move) +void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0) { TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX]; InterviewBefore_BravoTrainerPkmnProfile(); @@ -1457,7 +1457,7 @@ void BravoTrainerPokemonProfile_BeforeInterview1(u16 move) if (sCurTVShowSlot != -1) { DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX); - show->bravoTrainer.move = move; + show->bravoTrainer.move = a0; show->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; } } @@ -1490,9 +1490,9 @@ static void InterviewAfter_BravoTrainerBattleTowerProfile(void) show->bravoTrainerTower.numFights = GetCurrentBattleTowerWinStreak(gSaveBlock2Ptr->frontier.towerLvlMode, 0); show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->frontier.towerBattleOutcome; if (gSaveBlock2Ptr->frontier.towerLvlMode == FRONTIER_LVL_50) - show->bravoTrainerTower.btLevel = FRONTIER_MAX_LEVEL_50; + show->bravoTrainerTower.btLevel = 50; else - show->bravoTrainerTower.btLevel = FRONTIER_MAX_LEVEL_OPEN; + show->bravoTrainerTower.btLevel = 100; show->bravoTrainerTower.interviewResponse = gSpecialVar_0x8004; StorePlayerIdInNormalShow(show); show->bravoTrainerTower.language = gGameLanguage; @@ -4371,9 +4371,6 @@ static void DoTVShowBravoTrainerPokemonProfile(void) ShowFieldMessage(sTVBravoTrainerTextGroup[state]); } -// This is the TV show triggered by accepting the reporter's interview in the lobby of Battle Tower. -// The reporter had asked the player if they were satisfied or not with the challenge, and then asked -// for a one word Easy Chat description of their feelings about the challenge. static void DoTVShowBravoTrainerBattleTower(void) { TVShow *show; @@ -4384,83 +4381,85 @@ static void DoTVShowBravoTrainerBattleTower(void) state = sTVShowState; switch(state) { - case BRAVOTOWER_STATE_INTRO: + case 0: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]); - if (show->bravoTrainerTower.numFights >= FRONTIER_STAGES_PER_CHALLENGE) - sTVShowState = BRAVOTOWER_STATE_NEW_RECORD; + if (show->bravoTrainerTower.numFights >= 7) + sTVShowState = 1; else - sTVShowState = BRAVOTOWER_STATE_LOST; + sTVShowState = 2; break; - case BRAVOTOWER_STATE_NEW_RECORD: - // The TV show states a "new record" was achieved as long as all the battles in the challenge were attempted, - // regardless of any previous records or whether the final battle was won or lost. - if (show->bravoTrainerTower.btLevel == FRONTIER_MAX_LEVEL_50) + case 1: + if (show->bravoTrainerTower.btLevel == 50) + { StringCopy(gStringVar1, gText_Lv50); + } else + { StringCopy(gStringVar1, gText_OpenLevel); + } ConvertIntToDecimalString(1, show->bravoTrainerTower.numFights); if (show->bravoTrainerTower.wonTheChallenge == TRUE) - sTVShowState = BRAVOTOWER_STATE_WON; + sTVShowState = 3; else - sTVShowState = BRAVOTOWER_STATE_LOST_FINAL; + sTVShowState = 4; break; - case BRAVOTOWER_STATE_LOST: + case 2: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); ConvertIntToDecimalString(1, show->bravoTrainerTower.numFights + 1); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = BRAVOTOWER_STATE_SATISFIED; + sTVShowState = 5; else - sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; + sTVShowState = 6; break; - case BRAVOTOWER_STATE_WON: + case 3: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = BRAVOTOWER_STATE_SATISFIED; + sTVShowState = 5; else - sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; + sTVShowState = 6; break; - case BRAVOTOWER_STATE_LOST_FINAL: + case 4: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = BRAVOTOWER_STATE_SATISFIED; + sTVShowState = 5; else - sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; + sTVShowState = 6; break; - case BRAVOTOWER_STATE_SATISFIED: + case 5: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = BRAVOTOWER_STATE_RESPONSE; + sTVShowState = 11; break; - case BRAVOTOWER_STATE_UNSATISFIED: + case 6: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = BRAVOTOWER_STATE_RESPONSE; + sTVShowState = 11; break; - case BRAVOTOWER_STATE_UNUSED_1: - sTVShowState = BRAVOTOWER_STATE_RESPONSE; + case 7: + sTVShowState = 11; break; - case BRAVOTOWER_STATE_UNUSED_2: - case BRAVOTOWER_STATE_UNUSED_3: - case BRAVOTOWER_STATE_UNUSED_4: + case 8: + case 9: + case 10: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); - sTVShowState = BRAVOTOWER_STATE_RESPONSE; + sTVShowState = 11; break; - case BRAVOTOWER_STATE_RESPONSE: + case 11: CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = BRAVOTOWER_STATE_RESPONSE_SATISFIED; + sTVShowState = 12; else - sTVShowState = BRAVOTOWER_STATE_RESPONSE_UNSATISFIED; + sTVShowState = 13; break; - case BRAVOTOWER_STATE_RESPONSE_SATISFIED: - case BRAVOTOWER_STATE_RESPONSE_UNSATISFIED: + case 12: + case 13: CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]); TVShowConvertInternationalString(gStringVar2, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); TVShowConvertInternationalString(gStringVar3, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = BRAVOTOWER_STATE_OUTRO; + sTVShowState = 14; break; - case BRAVOTOWER_STATE_OUTRO: + case 14: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]); TVShowDone(); diff --git a/src/union_room.c b/src/union_room.c index 05b41a088..9a743dbab 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -4318,7 +4318,7 @@ static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void) for (i = 0; i < gPlayerPartyCount; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= UNION_ROOM_MAX_LEVEL + if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= 30 && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) count++; } diff --git a/src/union_room_chat.c b/src/union_room_chat.c index f8513b9f4..9890bc1f8 100755 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -2160,7 +2160,8 @@ static bool32 IsDisplaySubtask0Active(void) static void FreeDisplay(void) { FreeSprites(); - TRY_FREE_AND_SET_NULL(sDisplay); + if (sDisplay) + FREE_AND_SET_NULL(sDisplay); FreeAllWindowBuffers(); gScanlineEffect.state = 3; diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile index 8728fa8d0..b4244aa8d 100644 --- a/tools/gbagfx/Makefile +++ b/tools/gbagfx/Makefile @@ -1,10 +1,8 @@ CC = gcc CFLAGS = -Wall -Wextra -Werror -Wno-sign-compare -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK -CFLAGS += $(shell pkg-config --cflags libpng) LIBS = -lpng -lz -LDFLAGS += $(shell pkg-config --libs-only-L libpng) SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c huff.c diff --git a/tools/mid2agb/agb.cpp b/tools/mid2agb/agb.cpp index caa6f0ecd..d4d79f133 100644 --- a/tools/mid2agb/agb.cpp +++ b/tools/mid2agb/agb.cpp @@ -18,7 +18,6 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#include #include #include #include @@ -504,7 +503,7 @@ void PrintAgbTrack(std::vector& events) ResetTrackVars(); break; case EventType::Tempo: - PrintByte("TEMPO , %u*%s_tbs/2", static_cast(round(60000000.0f / static_cast(event.param2))), g_asmLabel.c_str()); + PrintByte("TEMPO , %u*%s_tbs/2", 60000000 / event.param2, g_asmLabel.c_str()); PrintWait(event.time); break; case EventType::InstrumentChange: diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile index 92e44b545..0bc88a42b 100644 --- a/tools/rsfont/Makefile +++ b/tools/rsfont/Makefile @@ -1,10 +1,8 @@ CC ?= gcc CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK -CFLAGS += $(shell pkg-config --cflags libpng) LIBS = -lpng -lz -LDFLAGS += $(shell pkg-config --libs-only-L libpng) SRCS = main.c convert_png.c util.c font.c