Merge pull request #404 from PikalaxALT/misc_doc
[PARTIALLY LEAK INFORMED] Miscellaneous cleanup and documentation
This commit is contained in:
@@ -143,8 +143,9 @@ TOOLBASE = $(TOOLDIRS:tools/%=%)
|
||||
TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE))
|
||||
|
||||
ALL_BUILDS := firered firered_rev1 leafgreen leafgreen_rev1
|
||||
ALL_BUILDS += $(ALL_BUILDS:%=%_modern)
|
||||
|
||||
.PHONY: all rom tools clean-tools mostlyclean clean compare tidy berry_fix $(TOOLDIRS) $(ALL_BUILDS) $(ALL_BUILDS:%=compare_%) $(ALL_BUILDS:%=%_modern) modern
|
||||
.PHONY: all rom tools clean-tools mostlyclean clean compare tidy berry_fix $(TOOLDIRS) $(ALL_BUILDS) $(ALL_BUILDS:%=compare_%) modern
|
||||
|
||||
MAKEFLAGS += --no-print-directory
|
||||
|
||||
|
||||
@@ -219,14 +219,14 @@ struct ObjectEventGraphicsInfo
|
||||
/*0x20*/ const union AffineAnimCmd *const *affineAnims;
|
||||
};
|
||||
|
||||
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
|
||||
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
|
||||
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
|
||||
#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
|
||||
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
|
||||
#define PLAYER_AVATAR_FLAG_FIELD_MOVE (1 << 5)
|
||||
#define PLAYER_AVATAR_FLAG_FISHING (1 << 6)
|
||||
#define PLAYER_AVATAR_FLAG_WATERING (1 << 7)
|
||||
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
|
||||
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
|
||||
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
|
||||
#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
|
||||
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
|
||||
#define PLAYER_AVATAR_FLAG_CONTROLLABLE (1 << 5)
|
||||
#define PLAYER_AVATAR_FLAG_FORCED (1 << 6)
|
||||
#define PLAYER_AVATAR_FLAG_WATERING (1 << 7)
|
||||
|
||||
enum
|
||||
{
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
gHelpSystemEnabled
|
||||
gHelpSystemState
|
||||
gHelpContextIdBackup
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
gHelpSystemState
|
||||
gHelpContextIdBackup
|
||||
@@ -0,0 +1 @@
|
||||
gHelpSystemEnabled
|
||||
@@ -1144,7 +1144,7 @@ CableClub_EventScript_EnterWirelessLinkRoom:: @ 81BBF88
|
||||
waitstate
|
||||
end
|
||||
|
||||
CableClub_EventScript_81BBFD8:: @ 81BBFD8
|
||||
CableClub_EventScript_ShowWirelessCommunicationScreen:: @ 81BBFD8
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
lockall
|
||||
goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_NotReadyYet
|
||||
|
||||
@@ -1,99 +1,99 @@
|
||||
@ Flavor text for interacting with various background objects
|
||||
|
||||
gUnknown_81A7606:: @ 81A7606
|
||||
msgbox gUnknown_81C0DB0, MSGBOX_SIGN
|
||||
EventScript_Bookshelf:: @ 81A7606
|
||||
msgbox Text_Bookshelf, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A760F:: @ 81A760F
|
||||
msgbox gUnknown_81C0DFD, MSGBOX_SIGN
|
||||
EventScript_PokeMartShelf:: @ 81A760F
|
||||
msgbox Text_PokeMartShelf, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7618:: @ 81A7618
|
||||
msgbox gUnknown_81C0F99, MSGBOX_SIGN
|
||||
EventScript_Food:: @ 81A7618
|
||||
msgbox Text_Food, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7621:: @ 81A7621
|
||||
msgbox gUnknown_81C12A7, MSGBOX_SIGN
|
||||
EventScript_VideoGame:: @ 81A7621
|
||||
msgbox Text_VideoGame, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A762A:: @ 81A762A
|
||||
msgbox gUnknown_81C10C1, MSGBOX_SIGN
|
||||
EventScript_Computer:: @ 81A762A
|
||||
msgbox Text_Computer, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7633:: @ 81A7633
|
||||
msgbox gUnknown_81C1273, MSGBOX_SIGN
|
||||
EventScript_ImpressiveMachine:: @ 81A7633
|
||||
msgbox Text_ImpressiveMachine, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A763C:: @ 81A763C
|
||||
msgbox gUnknown_81C0FD8, MSGBOX_SIGN
|
||||
EventScript_Blueprints:: @ 81A763C
|
||||
msgbox Text_Blueprints, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7645:: @ 81A7645
|
||||
msgbox gUnknown_81C12D6, MSGBOX_SIGN
|
||||
EventScript_Burglary:: @ 81A7645
|
||||
msgbox Text_Burglary, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A764E:: @ 81A764E
|
||||
msgbox gUnknown_81C1300, MSGBOX_SIGN
|
||||
EventScript_PlayerFacingTVScreen:: @ 81A764E
|
||||
msgbox Text_PlayerFacingTVScreen, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7657:: @ 81A7657
|
||||
EventScript_Cabinet:: @ 81A7657
|
||||
msgbox Text_DishesPlatesNeatlyLinedUp, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7660:: @ 81A7660
|
||||
msgbox gUnknown_81C0E40, MSGBOX_SIGN
|
||||
EventScript_Kitchen:: @ 81A7660
|
||||
msgbox Text_Kitchen, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7669:: @ 81A7669
|
||||
msgbox gUnknown_81C0E73, MSGBOX_SIGN
|
||||
EventScript_Dresser:: @ 81A7669
|
||||
msgbox Text_Dresser, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7672:: @ 81A7672
|
||||
msgbox gUnknown_81C0EAC, MSGBOX_SIGN
|
||||
EventScript_Snacks:: @ 81A7672
|
||||
msgbox Text_Snacks, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A767B:: @ 81A767B
|
||||
msgbox gUnknown_81C101B, MSGBOX_SIGN
|
||||
EventScript_Painting:: @ 81A767B
|
||||
msgbox Text_Painting, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7684:: @ 81A7684
|
||||
msgbox gUnknown_81C1060, MSGBOX_SIGN
|
||||
EventScript_PowerPlantMachine:: @ 81A7684
|
||||
msgbox Text_PowerPlantMachine, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A768D:: @ 81A768D
|
||||
msgbox gUnknown_81C109C, MSGBOX_SIGN
|
||||
EventScript_Telephone:: @ 81A768D
|
||||
msgbox Text_Telephone, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A7696:: @ 81A7696
|
||||
msgbox gUnknown_81C10FC, MSGBOX_SIGN
|
||||
EventScript_AdvertisingPoster:: @ 81A7696
|
||||
msgbox Text_AdvertisingPoster, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A769F:: @ 81A769F
|
||||
msgbox gUnknown_81C1134, MSGBOX_SIGN
|
||||
EventScript_TastyFood:: @ 81A769F
|
||||
msgbox Text_TastyFood, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A76A8:: @ 81A76A8
|
||||
msgbox gUnknown_81C116E, MSGBOX_SIGN
|
||||
EventScript_TrashBin:: @ 81A76A8
|
||||
msgbox Text_TrashBin, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A76B1:: @ 81A76B1
|
||||
msgbox gUnknown_81C1194, MSGBOX_SIGN
|
||||
EventScript_Cup:: @ 81A76B1
|
||||
msgbox Text_Cup, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A76BA:: @ 81A76BA
|
||||
msgbox gUnknown_81C11BA, MSGBOX_SIGN
|
||||
EventScript_PolishedWindow:: @ 81A76BA
|
||||
msgbox Text_PolishedWindow, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A76C3:: @ 81A76C3
|
||||
msgbox gUnknown_81C11DC, MSGBOX_SIGN
|
||||
EventScript_BeautifulSkyWindow:: @ 81A76C3
|
||||
msgbox Text_BeautifulSkyWindow, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A76CC:: @ 81A76CC
|
||||
msgbox gUnknown_81C1217, MSGBOX_SIGN
|
||||
EventScript_BlinkingLights:: @ 81A76CC
|
||||
msgbox Text_BlinkingLights, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
gUnknown_81A76D5:: @ 81A76D5
|
||||
msgbox gUnknown_81C124B, MSGBOX_SIGN
|
||||
EventScript_NeatlyLinedUpTools:: @ 81A76D5
|
||||
msgbox Text_NeatlyLinedUpTools, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
EventScript_PokemartSign:: @ 81A76DE
|
||||
|
||||
+23
-23
@@ -1,6 +1,6 @@
|
||||
@ Flavor text for interacting with various background objects
|
||||
|
||||
gUnknown_81C0DB0:: @ 81C0DB0
|
||||
Text_Bookshelf:: @ 81C0DB0
|
||||
.string "It's crammed full of POKéMON\n"
|
||||
.string "books.$"
|
||||
|
||||
@@ -11,7 +11,7 @@ Text_NothingButPokemonBooks:: @ 81C0DD4
|
||||
Text_ATownMap:: @ 81C0DF1
|
||||
.string "A TOWN MAP.$"
|
||||
|
||||
gUnknown_81C0DFD:: @ 81C0DFD
|
||||
Text_PokeMartShelf:: @ 81C0DFD
|
||||
.string "Wow!\n"
|
||||
.string "Tons of POKéMON stuff!$"
|
||||
|
||||
@@ -19,15 +19,15 @@ Text_DishesPlatesNeatlyLinedUp:: @ 81C0E19
|
||||
.string "Dishes and plates are neatly\n"
|
||||
.string "lined up.$"
|
||||
|
||||
gUnknown_81C0E40:: @ 81C0E40
|
||||
Text_Kitchen:: @ 81C0E40
|
||||
.string "It smells delicious!\n"
|
||||
.string "Somebody's been cooking here.$"
|
||||
|
||||
gUnknown_81C0E73:: @ 81C0E73
|
||||
Text_Dresser:: @ 81C0E73
|
||||
.string "It's a nicely made dresser.\n"
|
||||
.string "It will hold a lot of stuff.$"
|
||||
|
||||
gUnknown_81C0EAC:: @ 81C0EAC
|
||||
Text_Snacks:: @ 81C0EAC
|
||||
.string "There's a pile of snacks here.$"
|
||||
|
||||
Text_PokemartSign:: @ 81C0ECB
|
||||
@@ -48,75 +48,75 @@ Text_Indigo_HighestAuthority:: @ 81C0F59
|
||||
.string "The highest POKéMON authority!\n"
|
||||
.string "POKéMON LEAGUE HQ$"
|
||||
|
||||
gUnknown_81C0F99:: @ 81C0F99
|
||||
Text_Food:: @ 81C0F99
|
||||
.string "It should be packed with all kinds\n"
|
||||
.string "of delicious things to eat.$"
|
||||
|
||||
gUnknown_81C0FD8:: @ 81C0FD8
|
||||
Text_Blueprints:: @ 81C0FD8
|
||||
.string "It's a blueprint of some sort.\n"
|
||||
.string "It's filled with diagrams and text.$"
|
||||
|
||||
gUnknown_81C101B:: @ 81C101B
|
||||
Text_Painting:: @ 81C101B
|
||||
.string "It's a pretty picture of a POKéMON.\n"
|
||||
.string "It looks like it's feeling good.$"
|
||||
|
||||
gUnknown_81C1060:: @ 81C1060
|
||||
Text_PowerPlantMachine:: @ 81C1060
|
||||
.string "What could this machine be?\n"
|
||||
.string "Better not mess around with it!$"
|
||||
|
||||
gUnknown_81C109C:: @ 81C109C
|
||||
Text_Telephone:: @ 81C109C
|
||||
.string "It's a telephone.\n"
|
||||
.string "Better not use it.$"
|
||||
|
||||
gUnknown_81C10C1:: @ 81C10C1
|
||||
Text_Computer:: @ 81C10C1
|
||||
.string "It's all complicated words and\n"
|
||||
.string "numbers that make no sense…$"
|
||||
|
||||
gUnknown_81C10FC:: @ 81C10FC
|
||||
Text_AdvertisingPoster:: @ 81C10FC
|
||||
.string "It's an advertising poster about\n"
|
||||
.string "all kinds of products.$"
|
||||
|
||||
gUnknown_81C1134:: @ 81C1134
|
||||
Text_TastyFood:: @ 81C1134
|
||||
.string "Oh, that smells tasty!\n"
|
||||
.string "It might get the stomach growling!$"
|
||||
|
||||
gUnknown_81C116E:: @ 81C116E
|
||||
Text_TrashBin:: @ 81C116E
|
||||
.string "Inside this…\n"
|
||||
.string "……\p"
|
||||
.string "There's nothing here!$"
|
||||
|
||||
gUnknown_81C1194:: @ 81C1194
|
||||
Text_Cup:: @ 81C1194
|
||||
.string "It's a cup with a POKéMON mark\n"
|
||||
.string "on it.$"
|
||||
|
||||
gUnknown_81C11BA:: @ 81C11BA
|
||||
Text_PolishedWindow:: @ 81C11BA
|
||||
.string "The window is very well polished.$"
|
||||
|
||||
gUnknown_81C11DC:: @ 81C11DC
|
||||
Text_BeautifulSkyWindow:: @ 81C11DC
|
||||
.string "Outside the window…\p"
|
||||
.string "The sky looks fantastically\n"
|
||||
.string "beautiful.$"
|
||||
|
||||
gUnknown_81C1217:: @ 81C1217
|
||||
Text_BlinkingLights:: @ 81C1217
|
||||
.string "Lights in different colors are\n"
|
||||
.string "flashing on and off.$"
|
||||
|
||||
gUnknown_81C124B:: @ 81C124B
|
||||
Text_NeatlyLinedUpTools:: @ 81C124B
|
||||
.string "All sorts of tools are lined up\n"
|
||||
.string "neatly.$"
|
||||
|
||||
gUnknown_81C1273:: @ 81C1273
|
||||
Text_ImpressiveMachine:: @ 81C1273
|
||||
.string "It's a machine of some sort.\n"
|
||||
.string "It sure is impressive.$"
|
||||
|
||||
gUnknown_81C12A7:: @ 81C12A7
|
||||
Text_VideoGame:: @ 81C12A7
|
||||
.string "It's the latest video game!\n"
|
||||
.string "It sure looks fun!$"
|
||||
|
||||
gUnknown_81C12D6:: @ 81C12D6
|
||||
Text_Burglary:: @ 81C12D6
|
||||
.string "There are obvious signs of burglary\n"
|
||||
.string "here…$"
|
||||
|
||||
gUnknown_81C1300:: @ 81C1300
|
||||
Text_PlayerFacingTVScreen:: @ 81C1300
|
||||
.string "There's a POKéMON on TV!\n"
|
||||
.string "It looks like it's having fun.$"
|
||||
|
||||
|
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 200 B |
+12
-12
@@ -367,7 +367,7 @@ void TranslateSpriteInCircleOverDuration(struct Sprite *sprite);
|
||||
void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite);
|
||||
void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite);
|
||||
void WaitAnimForDuration(struct Sprite *sprite);
|
||||
void sub_8074C80(struct Sprite *sprite);
|
||||
void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite);
|
||||
void TranslateSpriteLinear(struct Sprite *sprite);
|
||||
void TranslateSpriteLinearFixedPoint(struct Sprite *sprite);
|
||||
void TranslateMonSpriteLinear(struct Sprite *sprite);
|
||||
@@ -412,13 +412,13 @@ void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite);
|
||||
void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite);
|
||||
bool8 AnimFastTranslateLinear(struct Sprite *sprite);
|
||||
void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite);
|
||||
void sub_8075830(struct Sprite *sprite);
|
||||
void InitAndStartAnimFastLinearTranslationWithSpeed(struct Sprite *sprite);
|
||||
void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
|
||||
void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode);
|
||||
void ResetSpriteRotScale(u8 spriteId);
|
||||
void SetBattlerSpriteYOffsetFromRotation(u8 spriteId);
|
||||
void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation);
|
||||
void sub_8075AD8(struct Sprite *sprite);
|
||||
void TryResetSpriteAffineState(struct Sprite *sprite);
|
||||
u16 ArcTan2Neg(s16 a, s16 b);
|
||||
void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor);
|
||||
u32 SelectBattleAnimSpriteAndBgPalettes(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7);
|
||||
@@ -439,26 +439,26 @@ void SetBattlerSpriteYOffsetFromYScale(u8 spriteId);
|
||||
void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId);
|
||||
void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr);
|
||||
void *LoadPointerFromVars(s16 lo, s16 hi);
|
||||
void sub_80765D4(struct Task *task, u8 spriteId, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7);
|
||||
u8 sub_8076640(struct Task *task);
|
||||
void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration);
|
||||
u8 BattleAnimHelper_RunSpriteSquash(struct Task *task);
|
||||
void AnimTask_GetFrustrationPowerLevel(u8 taskId);
|
||||
void sub_80767F0(void);
|
||||
void ResetSpritePriorityOfAllVisibleBattlers(void);
|
||||
u8 GetBattlerSpriteSubpriority(u8 battlerId);
|
||||
u8 GetBattlerSpriteBGPriority(u8 battlerId);
|
||||
|
||||
// Returns 2 if player left or opp right
|
||||
// Returns 1 if player right or opp left
|
||||
u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
|
||||
u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10);
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templateId, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 ignoreDeoxys);
|
||||
void DestroySpriteAndFreeResources_(struct Sprite *sprite);
|
||||
s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr);
|
||||
void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
|
||||
u8 sub_8076E34(s32 battlerId, u8 spriteId, s32 species);
|
||||
void sub_8076ED8(struct Sprite *sprite);
|
||||
void sub_8076F58(struct Sprite *sprite);
|
||||
void sub_8076FD0(struct Sprite *sprite);
|
||||
u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species);
|
||||
void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite);
|
||||
void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite);
|
||||
void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite);
|
||||
void AnimTask_AttackerPunchWithTrace(u8 taskId);
|
||||
void sub_807729C(struct Sprite *sprite);
|
||||
void SpriteCB_WeatherBallUp(struct Sprite *sprite);
|
||||
void AnimWeatherBallDown(struct Sprite *sprite);
|
||||
|
||||
// battle_anim_mon_movement.c
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@ void ObjectEventInteractionPickBerryTree(void);
|
||||
void ObjectEventInteractionRemoveBerryTree(void);
|
||||
u8 PlayerHasBerries(void);
|
||||
void ResetBerryTreeSparkleFlags(void);
|
||||
void sub_809C794(void);
|
||||
void ClearEnigmaBerries(void);
|
||||
const struct Berry * GetBerryInfo(u8 berryIdx);
|
||||
|
||||
extern const struct Berry gBerries[];
|
||||
|
||||
@@ -10,6 +10,6 @@
|
||||
// Exported ROM declarations
|
||||
|
||||
void BlendPalette(u16, u16, u8, u16);
|
||||
void sub_8045314(u16 * palbuff, u16 blend_pal, u32 coefficient, s32 size);
|
||||
void BlendPalettesAt(u16 * palbuff, u16 blend_pal, u32 coefficient, s32 size);
|
||||
|
||||
#endif //GUARD_BLEND_PALETTE_H
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set.
|
||||
#define BATTLE_TYPE_TRAINER 0x0008
|
||||
#define BATTLE_TYPE_FIRST_BATTLE 0x0010
|
||||
#define BATTLE_TYPE_20 0x0020
|
||||
#define BATTLE_TYPE_LINK_ESTABLISHED 0x0020 // Set when the link battle setup callback finishes.
|
||||
#define BATTLE_TYPE_MULTI 0x0040
|
||||
#define BATTLE_TYPE_SAFARI 0x0080
|
||||
#define BATTLE_TYPE_BATTLE_TOWER 0x0100
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
#define OBJ_EVENT_GFX_RED_NORMAL 0
|
||||
#define OBJ_EVENT_GFX_RED_BIKE 1
|
||||
#define OBJ_EVENT_GFX_RED_SURF 2
|
||||
#define OBJ_EVENT_GFX_RED_ITEM 3
|
||||
#define OBJ_EVENT_GFX_RED_FIELD_MOVE 3
|
||||
#define OBJ_EVENT_GFX_RED_FISH 4
|
||||
#define OBJ_EVENT_GFX_RED_VS_SEEKER 5
|
||||
#define OBJ_EVENT_GFX_RED_VS_SEEKER_BIKE 6
|
||||
#define OBJ_EVENT_GFX_GREEN_NORMAL 7
|
||||
#define OBJ_EVENT_GFX_GREEN_BIKE 8
|
||||
#define OBJ_EVENT_GFX_GREEN_SURF 9
|
||||
#define OBJ_EVENT_GFX_GREEN_ITEM 10
|
||||
#define OBJ_EVENT_GFX_GREEN_FIELD_MOVE 10
|
||||
#define OBJ_EVENT_GFX_GREEN_FISH 11
|
||||
#define OBJ_EVENT_GFX_GREEN_VS_SEEKER 12
|
||||
#define OBJ_EVENT_GFX_GREEN_VS_SEEKER_BIKE 13
|
||||
|
||||
@@ -1324,7 +1324,7 @@
|
||||
#define FLAG_SYS_FLASH_ACTIVE (SYS_FLAGS + 0x6)
|
||||
#define FLAG_SYS_SPECIAL_WILD_BATTLE (SYS_FLAGS + 0x7)
|
||||
|
||||
#define FLAG_0x808 (SYS_FLAGS + 0x8)
|
||||
#define FLAG_SYS_QL_DEPARTED (SYS_FLAGS + 0x8)
|
||||
#define FLAG_0x809 (SYS_FLAGS + 0x9)
|
||||
#define FLAG_0x80A (SYS_FLAGS + 0xA)
|
||||
#define FLAG_0x80B (SYS_FLAGS + 0xB)
|
||||
|
||||
@@ -107,11 +107,11 @@
|
||||
#define MB_CUP 0x9B
|
||||
#define MB_PORTHOLE 0x9C
|
||||
#define MB_BLINKING_LIGHTS 0x9E
|
||||
#define MB_9F 0x9F
|
||||
#define MB_NEATLY_LINED_UP_TOOLS 0x9F
|
||||
#define MB_IMPRESSIVE_MACHINE 0xA0
|
||||
#define MB_VIDEO_GAME 0xA1
|
||||
#define MB_BURGLARY 0xA2
|
||||
#define MB_A3 0xA3
|
||||
#define MB_TRAINER_TOWER_MONITOR 0xA3
|
||||
#define MB_CYCLING_ROAD_PULL_DOWN 0xD0
|
||||
#define MB_CYCLING_ROAD_PULL_DOWN_GRASS 0xD1
|
||||
|
||||
|
||||
@@ -198,15 +198,16 @@
|
||||
#define MON_FEMALE 0xFE
|
||||
#define MON_GENDERLESS 0xFF
|
||||
|
||||
#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
|
||||
#define FRIENDSHIP_EVENT_VITAMIN 0x1
|
||||
#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
|
||||
#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
|
||||
#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
|
||||
#define FRIENDSHIP_EVENT_WALKING 0x5
|
||||
#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
|
||||
#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
|
||||
#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
|
||||
#define FRIENDSHIP_EVENT_GROW_LEVEL 0
|
||||
#define FRIENDSHIP_EVENT_VITAMIN 1
|
||||
#define FRIENDSHIP_EVENT_BATTLE_ITEM 2
|
||||
#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 3
|
||||
#define FRIENDSHIP_EVENT_LEARN_TMHM 4
|
||||
#define FRIENDSHIP_EVENT_WALKING 5
|
||||
#define FRIENDSHIP_EVENT_MASSAGE 6
|
||||
#define FRIENDSHIP_EVENT_FAINT_SMALL 7
|
||||
#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 8
|
||||
#define FRIENDSHIP_EVENT_FAINT_LARGE 9
|
||||
|
||||
#define PARTY_SIZE 6
|
||||
#define MAX_TOTAL_EVS 510
|
||||
@@ -218,4 +219,9 @@
|
||||
#define EVO_MODE_ITEM_USE 2
|
||||
#define EVO_MODE_ITEM_CHECK 3 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve
|
||||
|
||||
// used by ShouldIgnoreDeoxysForm
|
||||
#define DEOXYS_CHECK_BATTLE_SPRITE 1
|
||||
#define DEOXYS_CHECK_TRADE_MAIN 3
|
||||
#define DEOXYS_CHECK_BATTLE_ANIM 5
|
||||
|
||||
#endif // GUARD_CONSTANTS_POKEMON_H
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
#define QL_START_NORMAL 1
|
||||
#define QL_START_WARP 2
|
||||
|
||||
// gGlobalFieldTintMode
|
||||
#define QL_TINT_NONE 0
|
||||
#define QL_TINT_GRAYSCALE 1
|
||||
#define QL_TINT_SEPIA 2
|
||||
#define QL_TINT_BACKUP_GRAYSCALE 3
|
||||
|
||||
#define QL_IS_PLAYBACK_STATE (gQuestLogState == QL_STATE_PLAYBACK || gQuestLogState == QL_STATE_PLAYBACK_LAST)
|
||||
|
||||
#define QL_EVENT_0 0 // Null
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
#define VAR_EGG_BRAG_STATE 0x404A
|
||||
#define VAR_LINK_WIN_BRAG_STATE 0x404B
|
||||
#define VAR_POKELOT_RND2 0x404C
|
||||
#define VAR_0x404D 0x404D
|
||||
#define VAR_QL_ENTRANCE 0x404D
|
||||
#define VAR_0x404E 0x404E
|
||||
#define VAR_LOTAD_SIZE_RECORD 0x404F
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent);
|
||||
u8 GetWalkNormalMovementAction(u32);
|
||||
u8 GetWalkFastMovementAction(u32);
|
||||
u8 GetWalkFastestMovementAction(u32);
|
||||
u8 sub_8063F2C(u32 direction);
|
||||
u8 GetWalkSlowestMovementAction(u32 direction);
|
||||
u8 GetTrainerFacingDirectionMovementType(u8 direction);
|
||||
u8 GetFaceDirectionMovementAction(u32);
|
||||
u8 GetFaceDirectionFastMovementAction(u32);
|
||||
@@ -149,7 +149,8 @@ const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId);
|
||||
u8 GetFirstInactiveObjectEventId(void);
|
||||
u8 GetCollisionFlagsAtCoords(struct ObjectEvent * objectEvent, s16 x, s16 y, u8 direction);
|
||||
u8 sub_8063FB0(u8 direction);
|
||||
void OverrideTemplateCoordsForObjectEvent(const struct ObjectEvent *objectEvent);void sub_805C774(void);
|
||||
void OverrideTemplateCoordsForObjectEvent(const struct ObjectEvent *objectEvent);
|
||||
void CancelPlayerForcedMovement(void);
|
||||
void FreezeObjectEvents(void);
|
||||
bool8 FreezeObjectEvent(struct ObjectEvent *);
|
||||
void UnfreezeObjectEvent(struct ObjectEvent *);
|
||||
@@ -208,7 +209,7 @@ u8 sub_8064008(u32 direction);
|
||||
u8 GetPlayerRunMovementAction(u32 direction);
|
||||
u8 GetPlayerRunSlowMovementAction(u32 direction);
|
||||
u8 GetWalkSlowMovementAction(u32 direction);
|
||||
u8 sub_80640E4(u32 direction);
|
||||
u8 GetSpinMovementAction(u32 direction);
|
||||
u8 GetAcroWheelieFaceDirectionMovementAction(u32 direction);
|
||||
u8 GetAcroPopWheelieFaceDirectionMovementAction(u32 direction);
|
||||
u8 GetAcroEndWheelieFaceDirectionMovementAction(u32 direction);
|
||||
|
||||
+25
-25
@@ -1218,32 +1218,32 @@ extern const u8 PalletTown_PlayersHouse_2F_EventScript_PC[];
|
||||
extern const u8 EventScript_HiddenItemScript[];
|
||||
extern const u8 EventScript_PC[];
|
||||
extern const u8 EventScript_WallTownMap[];
|
||||
extern const u8 gUnknown_81A7606[];
|
||||
extern const u8 gUnknown_81A760F[];
|
||||
extern const u8 gUnknown_81A7618[];
|
||||
extern const u8 gUnknown_81A7633[];
|
||||
extern const u8 gUnknown_81A763C[];
|
||||
extern const u8 gUnknown_81A7621[];
|
||||
extern const u8 gUnknown_81A7645[];
|
||||
extern const u8 gUnknown_81A762A[];
|
||||
extern const u8 EventScript_Bookshelf[];
|
||||
extern const u8 EventScript_PokeMartShelf[];
|
||||
extern const u8 EventScript_Food[];
|
||||
extern const u8 EventScript_ImpressiveMachine[];
|
||||
extern const u8 EventScript_Blueprints[];
|
||||
extern const u8 EventScript_VideoGame[];
|
||||
extern const u8 EventScript_Burglary[];
|
||||
extern const u8 EventScript_Computer[];
|
||||
extern const u8 TrainerTower_EventScript_ShowTime[];
|
||||
extern const u8 gUnknown_81A764E[];
|
||||
extern const u8 gUnknown_81A7657[];
|
||||
extern const u8 gUnknown_81A7660[];
|
||||
extern const u8 gUnknown_81A7669[];
|
||||
extern const u8 gUnknown_81A7672[];
|
||||
extern const u8 gUnknown_81A767B[];
|
||||
extern const u8 gUnknown_81A7684[];
|
||||
extern const u8 gUnknown_81A768D[];
|
||||
extern const u8 gUnknown_81A7696[];
|
||||
extern const u8 gUnknown_81A769F[];
|
||||
extern const u8 gUnknown_81A76A8[];
|
||||
extern const u8 gUnknown_81A76B1[];
|
||||
extern const u8 gUnknown_81A76BA[];
|
||||
extern const u8 gUnknown_81A76C3[];
|
||||
extern const u8 gUnknown_81A76CC[];
|
||||
extern const u8 gUnknown_81A76D5[];
|
||||
extern const u8 CableClub_EventScript_81BBFD8[];
|
||||
extern const u8 EventScript_PlayerFacingTVScreen[];
|
||||
extern const u8 EventScript_Cabinet[];
|
||||
extern const u8 EventScript_Kitchen[];
|
||||
extern const u8 EventScript_Dresser[];
|
||||
extern const u8 EventScript_Snacks[];
|
||||
extern const u8 EventScript_Painting[];
|
||||
extern const u8 EventScript_PowerPlantMachine[];
|
||||
extern const u8 EventScript_Telephone[];
|
||||
extern const u8 EventScript_AdvertisingPoster[];
|
||||
extern const u8 EventScript_TastyFood[];
|
||||
extern const u8 EventScript_TrashBin[];
|
||||
extern const u8 EventScript_Cup[];
|
||||
extern const u8 EventScript_PolishedWindow[];
|
||||
extern const u8 EventScript_BeautifulSkyWindow[];
|
||||
extern const u8 EventScript_BlinkingLights[];
|
||||
extern const u8 EventScript_NeatlyLinedUpTools[];
|
||||
extern const u8 CableClub_EventScript_ShowWirelessCommunicationScreen[];
|
||||
extern const u8 EventScript_Questionnaire[];
|
||||
extern const u8 CableClub_EventScript_ShowBattleRecords[];
|
||||
extern const u8 EventScript_Indigo_UltimateGoal[];
|
||||
|
||||
@@ -20,7 +20,7 @@ void FieldCB_FallWarpExit(void);
|
||||
void StartEscalatorWarp(u8 metatileBehavior, u8 priority);
|
||||
void StartLavaridgeGymB1FWarp(u8 a0);
|
||||
void StartLavaridgeGym1FWarp(u8 a0);
|
||||
void sub_8083598(u8 a0);
|
||||
void ApplyGlobalFieldPaletteTint(u8 paletteIdx);
|
||||
void FreeResourcesAndDestroySprite(struct Sprite * sprite, u8 spriteId);
|
||||
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, bool8 unused);
|
||||
void ReturnToFieldFromFlyMapSelect(void);
|
||||
|
||||
@@ -28,7 +28,7 @@ void StartFishing(u8 secondaryId);
|
||||
u8 GetPlayerAvatarObjectId(void);
|
||||
u8 PlayerGetZCoord(void);
|
||||
u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
|
||||
void sub_805CB70(void);
|
||||
void StartPlayerAvatarSummonMonForFieldMoveAnim(void);
|
||||
void SetPlayerInvisibility(bool8);
|
||||
void StartTeleportInPlayerAnim(void);
|
||||
void StartTeleportWarpOutPlayerAnim(void);
|
||||
@@ -37,11 +37,11 @@ bool32 WaitTeleportInPlayerAnim(void);
|
||||
bool8 PartyHasMonWithSurf(void);
|
||||
bool8 IsPlayerSurfingNorth(void);
|
||||
u8 player_get_pos_including_state_based_drift(s16 *x, s16 *y);
|
||||
void sub_805CBE8(void);
|
||||
void StartPlayerAvatarVsSeekerAnim(void);
|
||||
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender);
|
||||
u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender);
|
||||
u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior);
|
||||
void sub_805C0D4(u8 direction);
|
||||
void PlayerGoSlowest(u8 direction);
|
||||
void PlayerGoSlow(u8 direction);
|
||||
void PlayerGoSpeed1(u8 direction);
|
||||
void PlayerGoSpeed2(u8 direction);
|
||||
@@ -59,7 +59,7 @@ void PlayerJumpLedge(u8 direction);
|
||||
void sub_805C260(void);
|
||||
void player_step(u8 direction, u16 newKeys, u16 heldKeys);
|
||||
bool32 PlayerIsMovingOnRockStairs(u8 direction);
|
||||
void sub_805BEB8(void);
|
||||
void UpdatePlayerAvatarTransitionState(void);
|
||||
void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender);
|
||||
void nullsub_24(u8 direction);
|
||||
u8 GetRSAvatarGraphicsIdByGender(u8 gender);
|
||||
|
||||
@@ -34,7 +34,7 @@ void IncrementBirthIslandRockStepCount(void);
|
||||
void ResetCyclingRoadChallengeData(void);
|
||||
void ResetFieldTasksArgs(void);
|
||||
bool8 UsedPokemonCenterWarp(void);
|
||||
void sub_80CC534(void);
|
||||
void sub_80CC59C(void);
|
||||
void QuestLog_CheckDepartingIndoorsMap(void);
|
||||
void QuestLog_TryRecordDepartedLocation(void);
|
||||
|
||||
#endif // GUARD_FIELD_SPECIALS_H
|
||||
|
||||
+12
-12
@@ -35,8 +35,8 @@ struct Weather
|
||||
u8 fadeScreenCounter;
|
||||
bool8 readyForInit;
|
||||
u8 taskId;
|
||||
u8 unknown_6CA;
|
||||
u8 unknown_6CB;
|
||||
u8 fadeInActive;
|
||||
u8 fadeInCounter;
|
||||
u16 initStep;
|
||||
u16 finishStep;
|
||||
u8 currWeather;
|
||||
@@ -100,10 +100,10 @@ struct Weather
|
||||
u8 blendUpdateCounter;
|
||||
u8 blendFrameCounter;
|
||||
u8 blendDelay;
|
||||
s16 unknown_73C;
|
||||
s16 unknown_73E;
|
||||
s16 unknown_740;
|
||||
s16 unknown_742;
|
||||
s16 droughtBrightnessStage;
|
||||
s16 droughtLastBrightnessStage;
|
||||
s16 droughtTimer;
|
||||
s16 droughtState;
|
||||
u8 filler_744[0xD-4];
|
||||
s8 loadDroughtPalsIndex;
|
||||
u8 loadDroughtPalsOffset;
|
||||
@@ -119,11 +119,11 @@ void sub_80AEDBC(void);
|
||||
|
||||
void DoCurrentWeather(void);
|
||||
void SetSav1WeatherFromCurrMapHeader(void);
|
||||
void sub_807B0C4(u16 *, u16 *, u32);
|
||||
void SlightlyDarkenPalsInWeather(u16 *, u16 *, u32);
|
||||
void PlayRainStoppingSoundEffect(void);
|
||||
bool8 IsWeatherNotFadingIn(void);
|
||||
void SetWeatherScreenFadeOut(void);
|
||||
void sub_807B070(void);
|
||||
void WeatherProcessingIdle(void);
|
||||
u8 GetCurrentWeather(void);
|
||||
void delay(u8, u8, u32);
|
||||
void UpdateSpritePaletteWithWeather(u8 palIdx);
|
||||
@@ -138,11 +138,11 @@ bool8 Weather_UpdateBlend(void);
|
||||
void LoadCustomWeatherSpritePalette(const u16 *palette);
|
||||
void ResetDroughtWeatherPaletteLoading(void);
|
||||
bool8 LoadDroughtWeatherPalettes(void);
|
||||
void sub_807AC60(void);
|
||||
void sub_807AC98(void);
|
||||
void DroughtStateInit(void);
|
||||
void DroughtStateRun(void);
|
||||
void SetRainStrengthFromSoundEffect(u16 soundEffect);
|
||||
void sub_807A790(s8 gammaIndex);
|
||||
void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
|
||||
void WeatherShiftGammaIfPalStateIdle(s8 gammaIndex);
|
||||
void WeatherBeginGammaFade(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
|
||||
void ApplyWeatherGammaShiftToPal(u8 paletteIndex);
|
||||
void StartWeather(void);
|
||||
void ResumePausedWeather(void);
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ bool32 CanCameraMoveInDirection(s32);
|
||||
u32 GetBehaviorByMetatileIdAndMapLayout(const struct MapLayout *mapLayout, u16 metatile, u8 attr);
|
||||
const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection);
|
||||
struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y);
|
||||
void sub_8059948(u8 a0, u8 a1);
|
||||
void Fieldmap_ApplyGlobalTintToPaletteSlot(u8 slot, u8 count);
|
||||
|
||||
void save_serialize_map(void);
|
||||
u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit);
|
||||
|
||||
+20
-11
@@ -272,19 +272,28 @@ enum {
|
||||
PLAYER_AVATAR_STATE_ACRO_BIKE,
|
||||
PLAYER_AVATAR_STATE_SURFING,
|
||||
PLAYER_AVATAR_STATE_UNDERWATER,
|
||||
PLAYER_AVATAR_STATE_FIELD_MOVE,
|
||||
PLAYER_AVATAR_STATE_FISHING,
|
||||
PLAYER_AVATAR_STATE_WATERING,
|
||||
PLAYER_AVATAR_STATE_CONTROLLABLE,
|
||||
PLAYER_AVATAR_STATE_FORCED,
|
||||
PLAYER_AVATAR_STATE_DASH,
|
||||
};
|
||||
|
||||
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << PLAYER_AVATAR_STATE_NORMAL)
|
||||
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << PLAYER_AVATAR_STATE_MACH_BIKE)
|
||||
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << PLAYER_AVATAR_STATE_ACRO_BIKE)
|
||||
#define PLAYER_AVATAR_FLAG_SURFING (1 << PLAYER_AVATAR_STATE_SURFING)
|
||||
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << PLAYER_AVATAR_STATE_UNDERWATER)
|
||||
#define PLAYER_AVATAR_FLAG_FIELD_MOVE (1 << PLAYER_AVATAR_STATE_FIELD_MOVE)
|
||||
#define PLAYER_AVATAR_FLAG_FISHING (1 << PLAYER_AVATAR_STATE_FISHING)
|
||||
#define PLAYER_AVATAR_FLAG_DASH (1 << PLAYER_AVATAR_STATE_WATERING)
|
||||
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << PLAYER_AVATAR_STATE_NORMAL)
|
||||
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << PLAYER_AVATAR_STATE_MACH_BIKE)
|
||||
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << PLAYER_AVATAR_STATE_ACRO_BIKE)
|
||||
#define PLAYER_AVATAR_FLAG_SURFING (1 << PLAYER_AVATAR_STATE_SURFING)
|
||||
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << PLAYER_AVATAR_STATE_UNDERWATER)
|
||||
#define PLAYER_AVATAR_FLAG_CONTROLLABLE (1 << PLAYER_AVATAR_STATE_CONTROLLABLE)
|
||||
#define PLAYER_AVATAR_FLAG_FORCED (1 << PLAYER_AVATAR_STATE_FORCED)
|
||||
#define PLAYER_AVATAR_FLAG_DASH (1 << PLAYER_AVATAR_STATE_DASH)
|
||||
|
||||
enum {
|
||||
PLAYER_AVATAR_GFX_NORMAL,
|
||||
PLAYER_AVATAR_GFX_BIKE,
|
||||
PLAYER_AVATAR_GFX_RIDE,
|
||||
PLAYER_AVATAR_GFX_FIELD_MOVE,
|
||||
PLAYER_AVATAR_GFX_FISH,
|
||||
PLAYER_AVATAR_GFX_VSSEEKER,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
|
||||
+1
-1
@@ -4330,7 +4330,7 @@ extern const u32 gSubstituteDollPal[];
|
||||
// ice
|
||||
extern const u8 gWeatherFogHorizontalTiles[];
|
||||
extern const u32 gBattleAnimFogTilemap[];
|
||||
extern const u16 gUnknown_83C2CE0[];
|
||||
extern const u16 gDefaultWeatherSpritePalette[];
|
||||
|
||||
// party_menu
|
||||
extern const u32 gPartyMenuPokeball_Gfx[];
|
||||
|
||||
+17
-17
@@ -34,7 +34,7 @@ void SetHelpContextDontCheckBattle(u8);
|
||||
void SetHelpContextForMap(void);
|
||||
void SetHelpContext(u8);
|
||||
bool8 HelpSystem_UpdateHasntSeenIntro(void);
|
||||
bool8 sub_812B45C(void);
|
||||
bool8 HelpSystem_IsSinglePlayer(void);
|
||||
void HelpSystem_Disable(void);
|
||||
void HelpSystem_Enable(void);
|
||||
void HelpSystem_EnableToggleWithRButton(void);
|
||||
@@ -50,7 +50,7 @@ void HelpSystem_PrintTopicLabel(void);
|
||||
bool8 HelpMenuSubroutine_HelpItemPrint(struct HelpSystemListMenu * helpListMenu, struct ListMenuItem * listMenuItemsBuffer);
|
||||
bool8 HelpMenuSubroutine_ReturnFromHelpItem(struct HelpSystemListMenu * helpListMenu, struct ListMenuItem * listMenuItemsBuffer);
|
||||
bool8 HelpMenuSubroutine_HelpItemWaitButton(struct HelpSystemListMenu * helpListMenu, struct ListMenuItem * listMenuItemsBuffer);
|
||||
bool8 sub_812BF88(void);
|
||||
bool8 GetHelpSystemMenuLevel(void);
|
||||
|
||||
// help_system
|
||||
bool8 RunHelpSystemCallback(void);
|
||||
@@ -63,30 +63,30 @@ void RestoreGPURegs(void);
|
||||
void RestoreMapTiles(void);
|
||||
void RestoreMapTextColors(void);
|
||||
void CommitTilemap(void);
|
||||
void sub_813BCF4(void);
|
||||
void sub_813BD14(u8);
|
||||
void sub_813BD5C(u8);
|
||||
void sub_813BDA4(u8);
|
||||
void sub_813BDE8(u8);
|
||||
void sub_813BE30(u8);
|
||||
void sub_813BE78(u8);
|
||||
void sub_813BEE4(u8);
|
||||
void sub_813BF50(u8);
|
||||
void sub_813BFC0(u8);
|
||||
void sub_813C004(u8, u8);
|
||||
void HS_BufferFillMapWithTile1FF(void);
|
||||
void HS_ShowOrHideWordHELPinTopLeft(u8 mode);
|
||||
void HS_ShowOrHideControlsGuideInTopRight(u8 mode);
|
||||
void HS_ShowOrHideMainWindowText(u8 mode);
|
||||
void HS_SetMainWindowBgBrightness(u8 mode);
|
||||
void HS_ShowOrHideToplevelTooltipWindow(u8 mode);
|
||||
void HS_ShowOrHideHeaderAndFooterLines_Lighter(u8 mode);
|
||||
void HS_ShowOrHideHeaderAndFooterLines_Darker(u8 mode);
|
||||
void HS_ShowOrHideVerticalBlackBarsAlongSides(u8 mode);
|
||||
void HS_ShowOrHideHeaderLine_Darker_FooterStyle(u8 mode);
|
||||
void HS_ShowOrHideScrollArrows(u8 which, u8 mode);
|
||||
void HelpSystem_PrintTextRightAlign_Row52(const u8 *str);
|
||||
void HelpSystem_PrintTextAt(const u8 *, u8, u8);
|
||||
void HelpSystem_PrintTwoStrings(const u8 *a0, const u8 *a1);
|
||||
void HelpSystem_PrintText_813C584(const u8 *str);
|
||||
void HelpSystem_PrintQuestionAndAnswerPair(const u8 *a0, const u8 *a1);
|
||||
void HelpSystem_PrintTopicMouseoverDescription(const u8 *str);
|
||||
void HelpSystem_FillPanel2(void);
|
||||
void HelpSystem_FillPanel1(void);
|
||||
void HelpSystem_InitListMenuController(struct HelpSystemListMenu *, u8, u8);
|
||||
void HelpSystem_SetInputDelay(u8);
|
||||
s32 HelpSystem_GetMenuInput(void);
|
||||
void sub_813C75C(void);
|
||||
void HS_UpdateMenuScrollArrows(void);
|
||||
|
||||
void DecompressAndRenderGlyph(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height);
|
||||
void HelpSystem_PrintText_Row61(const u8 * str);
|
||||
void HelpSystem_PrintTextInTopLeftCorner(const u8 * str);
|
||||
void HelpSystem_FillPanel3(void);
|
||||
void PrintListMenuItems(void);
|
||||
void PlaceListMenuCursor(void);
|
||||
|
||||
@@ -127,7 +127,7 @@ bool8 MetatileBehavior_IsKitchen(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsDresser(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsSnacks(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsStrengthButton(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsPlayerFacingMB_8D(u8 tile, u8 playerDirection);
|
||||
bool8 MetatileBehavior_IsPlayerFacingCableClubWirelessMonitor(u8 tile, u8 playerDirection);
|
||||
bool8 MetatileBehavior_IsPlayerFacingBattleRecords(u8 tile, u8 playerDirection);
|
||||
bool8 MetatileBehavior_IsQuestionnaire(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsIndigoPlateauMark(u8 metatileBehavior);
|
||||
@@ -143,13 +143,13 @@ bool8 MetatileBehavior_IsAdvertisingPoster(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsTastyFood(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsTrashBin(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsCup(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_19(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_20(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsPolishedWindow(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsBeautifulSkyWindow(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsBlinkingLights(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsMB9F(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsNeatlyLinedUpTools(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsImpressiveMachine(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsVideoGame(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsBurglary(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsMBA3(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsTrainerTowerMonitor(u8 metatileBehavior);
|
||||
|
||||
#endif // GUARD_METATILE_BEHAVIOR
|
||||
|
||||
+1
-1
@@ -127,7 +127,7 @@ void CleanupOverworldWindowsAndTilemaps(void);
|
||||
u32 ComputeWhiteOutMoneyLoss(void);
|
||||
|
||||
extern u8 gDisableMapMusicChangeOnMapLoad;
|
||||
extern u8 gUnknown_2036E28;
|
||||
extern u8 gGlobalFieldTintMode;
|
||||
|
||||
extern bool8 (* gFieldCallback2)(void);
|
||||
|
||||
|
||||
+20
-15
@@ -6,12 +6,17 @@
|
||||
#include "constants/quest_log.h"
|
||||
#include "field_control_avatar.h"
|
||||
|
||||
// Parameter to QuestLog_OnEscalatorWarp
|
||||
#define QL_ESCALATOR_OUT 1
|
||||
#define QL_ESCALATOR_IN 2
|
||||
|
||||
struct QuestLogEntry
|
||||
{
|
||||
u8 localId;
|
||||
u8 mapNum;
|
||||
u8 mapGroup;
|
||||
u8 animId;
|
||||
// When command == 2, these fields have different meanings
|
||||
u8 localId; // cmd == 2: Pressed A/B, checked wild, held direction, took step
|
||||
u8 mapNum; // cmd == 2: Always set to 0
|
||||
u8 mapGroup; // cmd == 2: Dpad direction
|
||||
u8 animId; // cmd == 2: Always set to 0
|
||||
u16 duration;
|
||||
u8 command;
|
||||
};
|
||||
@@ -32,13 +37,13 @@ extern u16 *gUnknown_203AE04;
|
||||
extern u16 *sEventRecordingPointer;
|
||||
extern u16 sQuestLogCursor;
|
||||
|
||||
void sub_8112720(u8);
|
||||
void QuestLogRecordPlayerAvatarGfxTransition(u8);
|
||||
void SetQuestLogEvent(u16, const u16 *);
|
||||
void SetQLPlayedTheSlots(void);
|
||||
void QuestLog_RecordEnteredMap(u16);
|
||||
u8 sub_8112CAC(void);
|
||||
bool8 QuestLog_SchedulePlaybackCB(void (*func)(void));
|
||||
void sub_8111F38(u16 offset, u16 idx);
|
||||
void QuestLog_BackUpPalette(u16 offset, u16 size);
|
||||
void CommitQuestLogWindow1(void);
|
||||
void QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(void);
|
||||
void ResetQuestLog(void);
|
||||
@@ -54,15 +59,15 @@ void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx);
|
||||
void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
|
||||
void SetQuestLogRecordAndPlaybackPointers(void *oldSave);
|
||||
void sub_811246C(struct Sprite *sprite);
|
||||
void sub_81124EC(u8 a0, u8 a1, u8 a2, u8 a3);
|
||||
void QuestLogRecordNPCStep(u8 a0, u8 a1, u8 a2, u8 a3);
|
||||
bool8 sub_8111C2C(void);
|
||||
void sub_81128BC(u8 a0);
|
||||
void sub_811278C(u8 movementActionId, u8 duration);
|
||||
void QuestLog_OnEscalatorWarp(u8 direction);
|
||||
void QuestLogRecordPlayerAvatarGfxTransitionWithDuration(u8 movementActionId, u8 duration);
|
||||
void Special_UpdateTrainerFansAfterLinkBattle(void);
|
||||
void sub_8112628(u8 movementActionId);
|
||||
void sub_81126AC(u8 movementActionId, u8 duration);
|
||||
void sub_8112588(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 duration);
|
||||
void sub_8112C9C(void);
|
||||
void QuestLogRecordPlayerStep(u8 movementActionId);
|
||||
void QuestLogRecordPlayerStepWithDuration(u8 movementActionId, u8 duration);
|
||||
void QuestLogRecordNPCStepWithDuration(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 duration);
|
||||
void QL_AfterRecordFishActionSuccessful(void);
|
||||
void sub_8110920(void);
|
||||
void sub_8111708(void);
|
||||
void sub_81127F8(struct FieldInput * a0);
|
||||
@@ -73,7 +78,7 @@ bool8 QuestLogScenePlaybackIsEnding(void);
|
||||
void sub_8115798(void);
|
||||
bool8 QuestLog_ShouldEndSceneOnMapChange(void);
|
||||
void QuestLog_AdvancePlayhead_(void);
|
||||
void sub_8111F14(void);
|
||||
void QuestLog_InitPalettesBackup(void);
|
||||
void sub_8110FCC(void);
|
||||
u8 GetQuestLogStartType(void);
|
||||
void sub_81113E4(void);
|
||||
@@ -90,7 +95,7 @@ u16 *sub_8113CC8(u16 *, struct QuestLogEntry *);
|
||||
u16 *sub_8113D08(u16 *, struct QuestLogEntry *);
|
||||
u16 *sub_8113D48(u16 *, struct QuestLogEntry *);
|
||||
u16 *sub_8113D94(u16 *, struct QuestLogEntry *);
|
||||
void sub_811381C(void);
|
||||
void QL_EnableRecordingSteps(void);
|
||||
u16 *QuestLog_SkipCommand(u16 *, u16 **);
|
||||
void sub_8113ABC(const u16 *);
|
||||
u16 *sub_8113C20(u16 *, struct QuestLogEntry *);
|
||||
|
||||
@@ -3,8 +3,18 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void sub_8150454(void);
|
||||
bool32 sub_8150474(u8 a0);
|
||||
void sub_8150498(u8 a0);
|
||||
#define QL_PLAYER_GFX_NORMAL 0
|
||||
#define QL_PLAYER_GFX_BIKE 1
|
||||
#define QL_PLAYER_GFX_FISH 2
|
||||
#define QL_PLAYER_GFX_SURF 3
|
||||
#define QL_PLAYER_GFX_STOP_SURF_S 4
|
||||
#define QL_PLAYER_GFX_STOP_SURF_N 5
|
||||
#define QL_PLAYER_GFX_STOP_SURF_W 6
|
||||
#define QL_PLAYER_GFX_STOP_SURF_E 7
|
||||
#define QL_PLAYER_GFX_VSSEEKER 8
|
||||
|
||||
void QuestLogUpdatePlayerSprite(u8 state);
|
||||
bool32 QuestLogTryRecordPlayerAvatarGfxTransition(u8 state);
|
||||
void QuestLogCallUpdatePlayerSprite(u8 state);
|
||||
|
||||
#endif //GUARD_QUEST_LOG_PLAYER_H
|
||||
|
||||
+3
-3
@@ -105,9 +105,9 @@ u16 CalculateChecksum(void *data, u16 size);
|
||||
void UpdateSaveAddresses(void);
|
||||
u8 HandleSavingData(u8 saveType);
|
||||
u8 TrySavingData(u8 saveType);
|
||||
u8 sub_80DA3AC(void);
|
||||
bool8 sub_80DA3D8(void);
|
||||
u8 sub_80DA40C(void);
|
||||
u8 SaveGame_AfterLinkTrade(void);
|
||||
bool8 AfterLinkTradeSaveFailed(void);
|
||||
u8 ClearSaveAfterLinkTradeSaveFailure(void);
|
||||
u8 sub_80DA434(void);
|
||||
u8 sub_80DA45C(void);
|
||||
bool8 sub_80DA4A0(void);
|
||||
|
||||
+2
-2
@@ -46,7 +46,7 @@ void SE12PanpotControl(s8 pan);
|
||||
bool8 IsSEPlaying(void);
|
||||
bool8 IsBGMPlaying(void);
|
||||
bool8 IsSpecialSEPlaying(void);
|
||||
void sub_8072474(u16 volume);
|
||||
void sub_807249C(void);
|
||||
void SetBGMVolume_SuppressHelpSystemReduction(u16 volume);
|
||||
void BGMVolumeMax_EnableHelpSystemReduction(void);
|
||||
|
||||
#endif // GUARD_SOUND_H
|
||||
|
||||
+4
-4
@@ -148,10 +148,10 @@ extern const u8 gTeachyTvText_TMsScript2[];
|
||||
extern const u8 gTeachyTvText_RegisterScript2[];
|
||||
|
||||
// help_system_812B1E0
|
||||
extern const u8 gUnknown_841DFA5[];
|
||||
extern const u8 gUnknown_841DFAC[];
|
||||
extern const u8 gUnknown_841DFBE[];
|
||||
extern const u8 gUnknown_841DFC9[];
|
||||
extern const u8 gText_HelpSystemControls_A_Next[];
|
||||
extern const u8 gText_HelpSystemControls_PickOkEnd[];
|
||||
extern const u8 gText_HelpSystemControls_AorBtoCancel[];
|
||||
extern const u8 gText_HelpSystemControls_PickOkCancel[];
|
||||
|
||||
// help_system
|
||||
extern const u8 gString_Bill[];
|
||||
|
||||
+44
-23
@@ -81,16 +81,17 @@
|
||||
#define CHAR_x 0xEC
|
||||
#define CHAR_y 0xED
|
||||
#define CHAR_z 0xEE
|
||||
#define CHAR_SPECIAL_F7 0xF7
|
||||
#define CHAR_KEYPAD_ICON 0xF8
|
||||
#define CHAR_EXTRA_EMOJI 0xF9
|
||||
#define CHAR_COLON 0xF0
|
||||
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
|
||||
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
|
||||
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
|
||||
#define PLACEHOLDER_BEGIN 0xFD // string placeholder
|
||||
#define CHAR_NEWLINE 0xFE
|
||||
#define EOS 0xFF // end of string
|
||||
|
||||
#define CHAR_DYNAMIC_PLACEHOLDER 0xF7
|
||||
#define CHAR_KEYPAD_ICON 0xF8
|
||||
#define CHAR_EXTRA_EMOJI 0xF9
|
||||
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
|
||||
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
|
||||
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
|
||||
#define PLACEHOLDER_BEGIN 0xFD // string placeholder
|
||||
#define CHAR_NEWLINE 0xFE
|
||||
#define EOS 0xFF // end of string
|
||||
|
||||
#define TEXT_COLOR_TRANSPARENT 0x0
|
||||
#define TEXT_COLOR_WHITE 0x1
|
||||
@@ -125,19 +126,30 @@
|
||||
#define PLACEHOLDER_ID_KYOGRE 0xD
|
||||
|
||||
// battle placeholders are located in battle_message.h
|
||||
#define EXT_CTRL_CODE_COLOR 0x1
|
||||
#define EXT_CTRL_CODE_HIGHLIGHT 0x2
|
||||
#define EXT_CTRL_CODE_SHADOW 0x3
|
||||
#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x4
|
||||
//
|
||||
#define EXT_CTRL_CODE_UNKNOWN_7 0x7
|
||||
//
|
||||
#define EXT_CTRL_CODE_CLEAR 0x11
|
||||
//
|
||||
#define EXT_CTRL_CODE_CLEAR_TO 0x13
|
||||
#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14
|
||||
#define EXT_CTRL_CODE_JPN 0x15
|
||||
#define EXT_CTRL_CODE_ENG 0x16
|
||||
#define EXT_CTRL_CODE_COLOR 0x1
|
||||
#define EXT_CTRL_CODE_HIGHLIGHT 0x2
|
||||
#define EXT_CTRL_CODE_SHADOW 0x3
|
||||
#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x4
|
||||
#define EXT_CTRL_CODE_PALETTE 0x5
|
||||
#define EXT_CTRL_CODE_FONT 0x6
|
||||
#define EXT_CTRL_CODE_RESET_FONT 0x7
|
||||
#define EXT_CTRL_CODE_PAUSE 0x8
|
||||
#define EXT_CTRL_CODE_WAIT_BUTTON 0x9
|
||||
#define EXT_CTRL_CODE_WAIT_SE 0xA
|
||||
#define EXT_CTRL_CODE_PLAY_BGM 0xB
|
||||
#define EXT_CTRL_CODE_ESCAPE 0xC
|
||||
#define EXT_CTRL_CODE_SHIFT_RIGHT 0xD
|
||||
#define EXT_CTRL_CODE_SHIFT_DOWN 0xE
|
||||
#define EXT_CTRL_CODE_FILL_WINDOW 0xF
|
||||
#define EXT_CTRL_CODE_PLAY_SE 0x10
|
||||
#define EXT_CTRL_CODE_CLEAR 0x11
|
||||
#define EXT_CTRL_CODE_SKIP 0x12
|
||||
#define EXT_CTRL_CODE_CLEAR_TO 0x13
|
||||
#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14
|
||||
#define EXT_CTRL_CODE_JPN 0x15
|
||||
#define EXT_CTRL_CODE_ENG 0x16
|
||||
#define EXT_CTRL_CODE_STOP_BGM 0x17
|
||||
#define EXT_CTRL_CODE_RESUME_BGM 0x18
|
||||
|
||||
#define NUM_TEXT_PRINTERS 32
|
||||
|
||||
@@ -156,6 +168,15 @@ enum
|
||||
FONTATTR_COLOR_SHADOW
|
||||
};
|
||||
|
||||
struct GlyphInfo
|
||||
{
|
||||
u8 pixels[0x80];
|
||||
u8 width;
|
||||
u8 height;
|
||||
};
|
||||
|
||||
extern struct GlyphInfo gGlyphInfo;
|
||||
|
||||
struct TextPrinterSubStruct
|
||||
{
|
||||
u8 glyphId:4; // 0x14
|
||||
@@ -305,7 +326,7 @@ void DecompressGlyphFont5(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
|
||||
void sub_80062B0(struct Sprite *sprite);
|
||||
u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
|
||||
void sub_8006398(u8 spriteId);
|
||||
void DestroyTextCursorSprite(u8 spriteId);
|
||||
s32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese);
|
||||
|
||||
#endif // GUARD_TEXT_H
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ extern const u8 gText_MaleSymbol4[];
|
||||
extern const u8 gText_FemaleSymbol4[];
|
||||
extern const u8 gText_GenderlessSymbol[];
|
||||
|
||||
extern const u16 gUnknown_826601C[];
|
||||
extern const u16 gTradeOrHatchMonShadowTilemap[];
|
||||
void CB2_ReturnFromLinkTrade(void);
|
||||
s32 Trade_CalcLinkPlayerCompatibilityParam(void);
|
||||
s32 CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isEventLegal);
|
||||
|
||||
@@ -11,7 +11,7 @@ void InitTradeSequenceBgGpuRegs(void);
|
||||
void LinkTradeDrawWindow(void);
|
||||
void LoadTradeAnimGfx(void);
|
||||
|
||||
extern const u16 gUnknown_826601C[];
|
||||
extern const u16 gTradeOrHatchMonShadowTilemap[];
|
||||
extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate;
|
||||
|
||||
#endif //GUARD_TRADE_SCENE_H
|
||||
|
||||
@@ -34,7 +34,7 @@ struct WildPokemonHeader
|
||||
extern const struct WildPokemonHeader gWildMonHeaders[];
|
||||
|
||||
void DisableWildEncounters(bool8 disabled);
|
||||
bool8 StandardWildEncounter(u32 currMetaTileBehavior, u16 previousMetaTileBehavior);
|
||||
bool8 StandardWildEncounter(u32 currMetatileAttrs, u16 previousMetaTileBehavior);
|
||||
bool8 SweetScentWildEncounter(void);
|
||||
bool8 DoesCurrentMapHaveFishingMons(void);
|
||||
void FishingWildEncounter(u8 rod);
|
||||
@@ -46,6 +46,6 @@ u8 GetUnownLetterByPersonalityLoByte(u32 personality);
|
||||
bool8 SweetScentWildEncounter(void);
|
||||
void SeedWildEncounterRng(u16 randVal);
|
||||
void ResetEncounterRateModifiers(void);
|
||||
bool8 TryStandardWildEncounter(u32 currMetatileBehavior);
|
||||
bool8 TryStandardWildEncounter(u32 currMetatileAttrs);
|
||||
|
||||
#endif // GUARD_WILD_ENCOUNTER_H
|
||||
|
||||
+4
-4
@@ -258,7 +258,7 @@ SECTIONS {
|
||||
src/union_room_chat.o(.text);
|
||||
src/union_room_chat_display.o(.text);
|
||||
src/union_room_chat_objects.o(.text);
|
||||
src/help_system_812B1E0.o(.text);
|
||||
src/help_system.o(.text);
|
||||
src/quest_log_battle.o(.text);
|
||||
src/fame_checker.o(.text);
|
||||
src/menu2.o(.text);
|
||||
@@ -267,7 +267,7 @@ SECTIONS {
|
||||
src/menu_indicators.o(.text);
|
||||
src/pokedex_area_markers.o(.text);
|
||||
src/pokemon_summary_screen.o(.text);
|
||||
src/help_system.o(.text);
|
||||
src/help_system_util.o(.text);
|
||||
src/wild_pokemon_area.o(.text);
|
||||
src/dynamic_placeholder_text_util.o(.text);
|
||||
src/berry_pouch.o(.text);
|
||||
@@ -560,7 +560,7 @@ SECTIONS {
|
||||
src/union_room_chat.o(.rodata);
|
||||
src/union_room_chat_display.o(.rodata);
|
||||
src/union_room_chat_objects.o(.rodata);
|
||||
src/help_system_812B1E0.o(.rodata);
|
||||
src/help_system.o(.rodata);
|
||||
src/fame_checker.o(.rodata);
|
||||
src/menu2.o(.rodata);
|
||||
src/oak_speech.o(.rodata);
|
||||
@@ -568,7 +568,7 @@ SECTIONS {
|
||||
src/menu_indicators.o(.rodata);
|
||||
src/pokedex_area_markers.o(.rodata);
|
||||
src/pokemon_summary_screen.o(.rodata);
|
||||
src/help_system.o(.rodata);
|
||||
src/help_system_util.o(.rodata);
|
||||
src/wild_pokemon_area.o(.rodata);
|
||||
src/dynamic_placeholder_text_util.o(.rodata);
|
||||
src/berry_pouch.o(.rodata);
|
||||
|
||||
+2
-2
@@ -1823,7 +1823,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sub_80767F0();
|
||||
ResetSpritePriorityOfAllVisibleBattlers();
|
||||
UpdateOamPriorityInAllHealthboxes(0);
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
@@ -2128,7 +2128,7 @@ static void ScriptCmd_end(void)
|
||||
if (!continuousAnim)
|
||||
{
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
|
||||
sub_80767F0();
|
||||
ResetSpritePriorityOfAllVisibleBattlers();
|
||||
UpdateOamPriorityInAllHealthboxes(1);
|
||||
gAnimScriptActive = FALSE;
|
||||
}
|
||||
|
||||
@@ -3135,7 +3135,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
|
||||
|
||||
coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
spriteId = sub_80768D0(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId, gBattleAnimTarget, 1);
|
||||
spriteId = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId, gBattleAnimTarget, 1);
|
||||
gSprites[spriteId].oam.priority = priority;
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
FillPalette(RGB_WHITE, (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32);
|
||||
@@ -3172,7 +3172,7 @@ static void AnimTask_RolePlaySilhouetteStep2(u8 taskId)
|
||||
TrySetSpriteRotScale(&gSprites[spriteId], TRUE, gTasks[taskId].data[10], gTasks[taskId].data[11], 0);
|
||||
if (++gTasks[taskId].data[12] == 9)
|
||||
{
|
||||
sub_8075AD8(&gSprites[spriteId]);
|
||||
TryResetSpriteAffineState(&gSprites[spriteId]);
|
||||
DestroySpriteAndFreeResources_(&gSprites[spriteId]);
|
||||
gTasks[taskId].func = DestroyAnimVisualTaskAndDisableBlend;
|
||||
}
|
||||
@@ -4906,7 +4906,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
|
||||
x = -32;
|
||||
}
|
||||
|
||||
spriteId2 = sub_80768D0(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0);
|
||||
spriteId2 = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0);
|
||||
|
||||
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE)
|
||||
BlendPalette((gSprites[spriteId2].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE);
|
||||
|
||||
+68
-60
@@ -23,17 +23,17 @@ static void PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6(stru
|
||||
static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite);
|
||||
static bool8 Dummy_ReturnFalse(void);
|
||||
static void AnimThrowProjectile_Step(struct Sprite *sprite);
|
||||
static void sub_80760D0(u8 taskId);
|
||||
static void AnimTask_AlphaFadeIn_Step(u8 taskId);
|
||||
static void AnimTask_BlendMonInAndOutSetup(struct Task *task);
|
||||
static void AnimTask_BlendMonInAndOutStep(u8 taskId);
|
||||
static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId);
|
||||
static void sub_8077118(u8 taskId);
|
||||
static void sub_80771E4(struct Task *task, u8 taskId);
|
||||
static void sub_8077268(struct Sprite *sprite);
|
||||
static void sub_80772F4(struct Sprite *sprite);
|
||||
static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId);
|
||||
static void PunchAnim_CreateTraceSprite(struct Task *task, u8 taskId);
|
||||
static void SpriteCB_PunchTrace(struct Sprite *sprite);
|
||||
static void SpriteCB_WeatherBallUp_Step(struct Sprite *sprite);
|
||||
|
||||
static EWRAM_DATA union AffineAnimCmd *sAnimTaskAffineAnim = NULL;
|
||||
static EWRAM_DATA u32 gUnknown_2037F2C = 0; // not used
|
||||
UNUSED static EWRAM_DATA u32 gUnknown_2037F2C = 0; // not used
|
||||
|
||||
static const struct UCoords8 sBattlerCoords[][4] =
|
||||
{
|
||||
@@ -77,11 +77,11 @@ static const u8 sCastformBackSpriteYCoords[] =
|
||||
0, // HAIL
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_83AE054[] =
|
||||
static const struct SpriteTemplate sSpriteTemplates_AdditionalForAnim[] =
|
||||
{
|
||||
{
|
||||
.tileTag = 0xD755,
|
||||
.paletteTag = 0xD755,
|
||||
.tileTag = 55125,
|
||||
.paletteTag = 55125,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
@@ -89,8 +89,8 @@ static const struct SpriteTemplate gUnknown_83AE054[] =
|
||||
.callback = SpriteCallbackDummy,
|
||||
},
|
||||
{
|
||||
.tileTag = 0xD756,
|
||||
.paletteTag = 0xD756,
|
||||
.tileTag = 55126,
|
||||
.paletteTag = 55126,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
@@ -99,10 +99,10 @@ static const struct SpriteTemplate gUnknown_83AE054[] =
|
||||
}
|
||||
};
|
||||
|
||||
static const struct SpriteSheet gUnknown_83AE084[] =
|
||||
static const struct SpriteSheet sMoveAnimAdtlSprSheets[] =
|
||||
{
|
||||
{ gMiscBlank_Gfx, 0x800, 0xD755 },
|
||||
{ gMiscBlank_Gfx, 0x800, 0xD756 },
|
||||
{ gMiscBlank_Gfx, 0x800, 55125 },
|
||||
{ gMiscBlank_Gfx, 0x800, 55126 }, // unused
|
||||
};
|
||||
|
||||
u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
|
||||
@@ -390,6 +390,8 @@ static void SetCallbackToStoredInData6(struct Sprite *sprite)
|
||||
sprite->callback = (SpriteCallback)callback;
|
||||
}
|
||||
|
||||
// x = a * sin(theta0 + dtheta * t)
|
||||
// y = a * cos(theta0 + dtheta * t)
|
||||
void TranslateSpriteInCircleOverDuration(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
@@ -409,6 +411,8 @@ void TranslateSpriteInCircleOverDuration(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// x = (a0 + da * t) * sin(theta0 + dtheta * t)
|
||||
// y = (a0 + da * t) * cos(theta0 + dtheta * t)
|
||||
void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
@@ -430,7 +434,9 @@ void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_8074B5C(struct Sprite *sprite)
|
||||
// x = alpl * sin(alpha0 + dalpha * t)
|
||||
// y = ampl * cos(beta0 + dbeta * t)
|
||||
static void TranslateSpriteInLissajousCurveOverDuration(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
@@ -454,6 +460,8 @@ static void sub_8074B5C(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// x = a * sin(theta0 + dtheta * t)
|
||||
// y = b * cos(theta0 + dtheta * t)
|
||||
void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
@@ -484,14 +492,14 @@ void WaitAnimForDuration(struct Sprite *sprite)
|
||||
SetCallbackToStoredInData6(sprite);
|
||||
}
|
||||
|
||||
static void sub_8074C64(struct Sprite *sprite)
|
||||
static void SetupAndStartSpriteLinearTranslation(struct Sprite *sprite)
|
||||
{
|
||||
sub_8074C80(sprite);
|
||||
SetupLinearTranslationWithFixedDuration(sprite);
|
||||
sprite->callback = TranslateSpriteLinear;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
void sub_8074C80(struct Sprite *sprite)
|
||||
void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite)
|
||||
{
|
||||
s16 old;
|
||||
s32 xDiff;
|
||||
@@ -554,13 +562,13 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_8074D80(struct Sprite *sprite)
|
||||
static void SetupAndStartSpriteLinearTranslationToTarget(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
|
||||
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->callback = sub_8074C64;
|
||||
sprite->callback = SetupAndStartSpriteLinearTranslation;
|
||||
}
|
||||
|
||||
void TranslateMonSpriteLinear(struct Sprite *sprite)
|
||||
@@ -621,17 +629,17 @@ void DestroySpriteAndMatrix(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_8074EF4(struct Sprite *sprite)
|
||||
static void SetupAndStartSpriteLinearTranslationToAttacker(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
|
||||
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->callback = sub_8074C64;
|
||||
sprite->callback = SetupAndStartSpriteLinearTranslation;
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_8074F38(struct Sprite *sprite)
|
||||
static void SpriteResetPaletteStructAndDestroy(struct Sprite *sprite)
|
||||
{
|
||||
ResetPaletteStructByUid(sprite->data[5]);
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
@@ -1094,7 +1102,7 @@ void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
|
||||
InitAnimFastLinearTranslation(sprite);
|
||||
}
|
||||
|
||||
void sub_8075830(struct Sprite *sprite)
|
||||
void InitAndStartAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
@@ -1188,7 +1196,7 @@ void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 x
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8075AD8(struct Sprite *sprite)
|
||||
void TryResetSpriteAffineState(struct Sprite *sprite)
|
||||
{
|
||||
TrySetSpriteRotScale(sprite, TRUE, 0x100, 0x100, 0);
|
||||
sprite->affineAnimPaused = FALSE;
|
||||
@@ -1487,10 +1495,10 @@ void AnimTask_AlphaFadeIn(u8 taskId)
|
||||
gTasks[taskId].data[7] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[8] = gBattleAnimArgs[3];
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gBattleAnimArgs[0], gBattleAnimArgs[1]));
|
||||
gTasks[taskId].func = sub_80760D0;
|
||||
gTasks[taskId].func = AnimTask_AlphaFadeIn_Step;
|
||||
}
|
||||
|
||||
static void sub_80760D0(u8 taskId)
|
||||
static void AnimTask_AlphaFadeIn_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -1750,19 +1758,19 @@ void *LoadPointerFromVars(s16 lo, s16 hi)
|
||||
return (void *)((u16)lo | ((u16)hi << 16));
|
||||
}
|
||||
|
||||
void sub_80765D4(struct Task *task, u8 spriteId, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7)
|
||||
void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration)
|
||||
{
|
||||
task->data[8] = a7;
|
||||
task->data[8] = duration;
|
||||
task->data[15] = spriteId;
|
||||
task->data[9] = a3;
|
||||
task->data[10] = a4;
|
||||
task->data[13] = a5;
|
||||
task->data[14] = a6;
|
||||
task->data[11] = (a5 - a3) / a7;
|
||||
task->data[12] = (a6 - a4) / a7;
|
||||
task->data[9] = xScale0;
|
||||
task->data[10] = yScale0;
|
||||
task->data[13] = xScale1;
|
||||
task->data[14] = yScale1;
|
||||
task->data[11] = (xScale1 - xScale0) / duration;
|
||||
task->data[12] = (yScale1 - yScale0) / duration;
|
||||
}
|
||||
|
||||
u8 sub_8076640(struct Task *task)
|
||||
u8 BattleAnimHelper_RunSpriteSquash(struct Task *task)
|
||||
{
|
||||
if (!task->data[8])
|
||||
return 0;
|
||||
@@ -1801,7 +1809,7 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId)
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_80766EC(u8 priority)
|
||||
static void SetOamPriorityOfAllVisibleBattlers(u8 priority)
|
||||
{
|
||||
if (IsBattlerSpriteVisible(gBattleAnimTarget))
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority;
|
||||
@@ -1813,7 +1821,7 @@ static void sub_80766EC(u8 priority)
|
||||
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority;
|
||||
}
|
||||
|
||||
void sub_80767F0(void)
|
||||
void ResetSpritePriorityOfAllVisibleBattlers(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -1863,18 +1871,18 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10)
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templateId, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxys)
|
||||
{
|
||||
u8 spriteId;
|
||||
u16 sheet = LoadSpriteSheet(&gUnknown_83AE084[a3]);
|
||||
u16 palette = AllocSpritePalette(gUnknown_83AE054[a3].paletteTag);
|
||||
u16 sheet = LoadSpriteSheet(&sMoveAnimAdtlSprSheets[templateId]);
|
||||
u16 palette = AllocSpritePalette(sSpriteTemplates_AdditionalForAnim[templateId].paletteTag);
|
||||
|
||||
if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->multiUseBuffer == NULL)
|
||||
gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
|
||||
if (!isBackpic)
|
||||
{
|
||||
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
|
||||
if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
|
||||
if (ignoreDeoxys == TRUE || ShouldIgnoreDeoxysForm(DEOXYS_CHECK_BATTLE_ANIM, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
|
||||
LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
|
||||
gMonSpritesGfxPtr->multiUseBuffer,
|
||||
species,
|
||||
@@ -1890,7 +1898,7 @@ u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
|
||||
else
|
||||
{
|
||||
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
|
||||
if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
|
||||
if (ignoreDeoxys == TRUE || ShouldIgnoreDeoxysForm(DEOXYS_CHECK_BATTLE_ANIM, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
|
||||
LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
|
||||
gMonSpritesGfxPtr->multiUseBuffer,
|
||||
species,
|
||||
@@ -1906,9 +1914,9 @@ u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
|
||||
RequestDma3Copy(gMonSpritesGfxPtr->multiUseBuffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1);
|
||||
FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
|
||||
if (!isBackpic)
|
||||
spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
|
||||
spriteId = CreateSprite(&sSpriteTemplates_AdditionalForAnim[templateId], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
|
||||
else
|
||||
spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonBackPicCoords[species].y_offset, subpriority);
|
||||
spriteId = CreateSprite(&sSpriteTemplates_AdditionalForAnim[templateId], x, y + gMonBackPicCoords[species].y_offset, subpriority);
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
@@ -2048,20 +2056,20 @@ void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x
|
||||
*y = (battlerY + partnerY) / 2;
|
||||
}
|
||||
|
||||
u8 sub_8076E34(s32 battlerId, u8 spriteId, s32 species)
|
||||
u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species)
|
||||
{
|
||||
u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
|
||||
|
||||
gSprites[newSpriteId] = gSprites[spriteId];
|
||||
gSprites[newSpriteId].usingSheet = TRUE;
|
||||
gSprites[newSpriteId].oam.priority = 0;
|
||||
gSprites[newSpriteId].oam.objMode = 2;
|
||||
gSprites[newSpriteId].oam.objMode = ST_OAM_OBJ_WINDOW;
|
||||
gSprites[newSpriteId].oam.tileNum = gSprites[spriteId].oam.tileNum;
|
||||
gSprites[newSpriteId].callback = SpriteCallbackDummy;
|
||||
return newSpriteId;
|
||||
}
|
||||
|
||||
void sub_8076ED8(struct Sprite *sprite)
|
||||
void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
@@ -2083,7 +2091,7 @@ void sub_8076ED8(struct Sprite *sprite)
|
||||
sprite->callback = TranslateSpriteLinearAndFlicker;
|
||||
}
|
||||
|
||||
void sub_8076F58(struct Sprite *sprite)
|
||||
void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
@@ -2104,7 +2112,7 @@ void sub_8076F58(struct Sprite *sprite)
|
||||
sprite->callback = TranslateSpriteLinearAndFlicker;
|
||||
}
|
||||
|
||||
void sub_8076FD0(struct Sprite *sprite)
|
||||
void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
@@ -2138,16 +2146,16 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId)
|
||||
task->data[6] = 3;
|
||||
CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20);
|
||||
BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]);
|
||||
task->func = sub_8077118;
|
||||
task->func = AnimTask_AttackerPunchWithTrace_Step;
|
||||
}
|
||||
|
||||
static void sub_8077118(u8 taskId)
|
||||
static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
switch (task->data[2])
|
||||
{
|
||||
case 0:
|
||||
sub_80771E4(task, taskId);
|
||||
PunchAnim_CreateTraceSprite(task, taskId);
|
||||
gSprites[task->data[0]].pos2.x += task->data[1];
|
||||
if (++task->data[3] == 5)
|
||||
{
|
||||
@@ -2156,7 +2164,7 @@ static void sub_8077118(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sub_80771E4(task, taskId);
|
||||
PunchAnim_CreateTraceSprite(task, taskId);
|
||||
gSprites[task->data[0]].pos2.x -= task->data[1];
|
||||
if (--task->data[3] == 0)
|
||||
{
|
||||
@@ -2174,7 +2182,7 @@ static void sub_8077118(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80771E4(struct Task *task, u8 taskId)
|
||||
static void PunchAnim_CreateTraceSprite(struct Task *task, u8 taskId)
|
||||
{
|
||||
s16 spriteId = CloneBattlerSpriteWithBlend(0);
|
||||
|
||||
@@ -2186,12 +2194,12 @@ static void sub_80771E4(struct Task *task, u8 taskId)
|
||||
gSprites[spriteId].data[1] = taskId;
|
||||
gSprites[spriteId].data[2] = spriteId;
|
||||
gSprites[spriteId].pos2.x = gSprites[task->data[0]].pos2.x;
|
||||
gSprites[spriteId].callback = sub_8077268;
|
||||
gSprites[spriteId].callback = SpriteCB_PunchTrace;
|
||||
++task->data[5];
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8077268(struct Sprite *sprite)
|
||||
static void SpriteCB_PunchTrace(struct Sprite *sprite)
|
||||
{
|
||||
if (--sprite->data[0] == 0)
|
||||
{
|
||||
@@ -2200,7 +2208,7 @@ static void sub_8077268(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807729C(struct Sprite *sprite)
|
||||
void SpriteCB_WeatherBallUp(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
@@ -2209,10 +2217,10 @@ void sub_807729C(struct Sprite *sprite)
|
||||
else
|
||||
sprite->data[0] = -10;
|
||||
sprite->data[1] = -40;
|
||||
sprite->callback = sub_80772F4;
|
||||
sprite->callback = SpriteCB_WeatherBallUp_Step;
|
||||
}
|
||||
|
||||
static void sub_80772F4(struct Sprite *sprite)
|
||||
static void SpriteCB_WeatherBallUp_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[2] += sprite->data[0];
|
||||
sprite->data[3] += sprite->data[1];
|
||||
|
||||
@@ -43,7 +43,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF3F8 =
|
||||
.anims = sSpriteAnimTable_83BF3F4,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8076F58,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_83BF410 =
|
||||
@@ -54,7 +54,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF410 =
|
||||
.anims = sSpriteAnimTable_83BF3F4,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8076ED8,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker,
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF428[] =
|
||||
@@ -76,7 +76,7 @@ const struct SpriteTemplate gWeatherBallUpSpriteTemplate =
|
||||
.anims = sSpriteAnimTable_83BF430,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_807729C,
|
||||
.callback = SpriteCB_WeatherBallUp,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gWeatherBallNormalDownSpriteTemplate =
|
||||
@@ -113,7 +113,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF480 =
|
||||
.anims = sSpriteAnimTable_83BF47C,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8076FD0,
|
||||
.callback = SpriteCB_TrackOffsetFromAttackerAndWaitAnim,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_83BF498 =
|
||||
@@ -124,7 +124,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF498 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8076F58,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2,
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF4B0[] =
|
||||
@@ -160,7 +160,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF4D4 =
|
||||
.anims = sSpriteAniimTable_83BF4C8,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8076F58,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2,
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF4EC[] =
|
||||
@@ -194,7 +194,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF514 =
|
||||
.anims = sSpriteAnimTable_83BF4F4,
|
||||
.images = NULL,
|
||||
.affineAnims = sSpriteAffineAnimTable_83BF510,
|
||||
.callback = sub_8076ED8,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker,
|
||||
};
|
||||
|
||||
static const u8 sUnknown_83BF52C[] = _("TASK OVER\nタスクがオ-バ-しました");
|
||||
|
||||
@@ -330,7 +330,7 @@ void AnimTask_SetUpCurseBackground(u8 taskId)
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species);
|
||||
newSpriteId = CreateCloneOfSpriteInWindowMode(gBattleAnimAttacker, spriteId, species);
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap);
|
||||
if (IsContest())
|
||||
@@ -446,11 +446,11 @@ static void sub_80BB2A0(u8 taskId)
|
||||
u8 battlerSpriteId;
|
||||
|
||||
battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1];
|
||||
spriteId = sub_8076E34(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species);
|
||||
spriteId = CreateCloneOfSpriteInWindowMode(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species);
|
||||
if (sAnimStatsChangeData->data[3])
|
||||
{
|
||||
battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
|
||||
newSpriteId = sub_8076E34(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species);
|
||||
newSpriteId = CreateCloneOfSpriteInWindowMode(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species);
|
||||
}
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
if (sAnimStatsChangeData->data[0] == 0)
|
||||
@@ -752,9 +752,9 @@ void sub_80BBA20(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5,
|
||||
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
|
||||
spriteId = sub_8076E34(battler1, gBattlerSpriteIds[battler1], species);
|
||||
spriteId = CreateCloneOfSpriteInWindowMode(battler1, gBattlerSpriteIds[battler1], species);
|
||||
if (arg4)
|
||||
newSpriteId = sub_8076E34(battler2, gBattlerSpriteIds[battler2], species);
|
||||
newSpriteId = CreateCloneOfSpriteInWindowMode(battler2, gBattlerSpriteIds[battler2], species);
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap);
|
||||
if (IsContest())
|
||||
|
||||
@@ -487,7 +487,7 @@ void TryReceiveLinkBattleData(void)
|
||||
s32 j;
|
||||
u8 *recvBuffer;
|
||||
|
||||
if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_20) && (gLinkPlayers[0].linkType == 0x2211))
|
||||
if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_LINK_ESTABLISHED) && (gLinkPlayers[0].linkType == 0x2211))
|
||||
{
|
||||
LinkRfu_DestroyIdleTask();
|
||||
for (i = 0; i < GetLinkPlayerCount(); ++i)
|
||||
|
||||
@@ -387,7 +387,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
|
||||
}
|
||||
otId = GetMonData(mon, MON_DATA_OT_ID);
|
||||
position = GetBattlerPosition(battlerId);
|
||||
if (ShouldIgnoreDeoxysForm(1, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
|
||||
if (ShouldIgnoreDeoxysForm(DEOXYS_CHECK_BATTLE_SPRITE, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
|
||||
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
|
||||
gMonSpritesGfxPtr->sprites[position],
|
||||
species, currentPersonality);
|
||||
|
||||
+3
-3
@@ -701,7 +701,7 @@ static void CB2_InitBattleInternal(void)
|
||||
}
|
||||
gMain.inBattle = TRUE;
|
||||
for (i = 0; i < PARTY_SIZE; ++i)
|
||||
AdjustFriendship(&gPlayerParty[i], 3);
|
||||
AdjustFriendship(&gPlayerParty[i], FRIENDSHIP_EVENT_LEAGUE_BATTLE);
|
||||
gBattleCommunication[MULTIUSE_STATE] = 0;
|
||||
}
|
||||
|
||||
@@ -1051,7 +1051,7 @@ static void CB2_HandleStartBattle(void)
|
||||
SetMainCallback2(BattleMainCB2);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
gBattleTypeFlags |= BATTLE_TYPE_20;
|
||||
gBattleTypeFlags |= BATTLE_TYPE_LINK_ESTABLISHED;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1409,7 +1409,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
gMain.callback1 = BattleMainCB1;
|
||||
SetMainCallback2(BattleMainCB2);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
gBattleTypeFlags |= BATTLE_TYPE_20;
|
||||
gBattleTypeFlags |= BATTLE_TYPE_LINK_ESTABLISHED;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
|
||||
@@ -3241,7 +3241,7 @@ static void atk23_getexp(void)
|
||||
gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId];
|
||||
gBattlescriptCurrInstr = BattleScript_LevelUp;
|
||||
gBattleMoveDamage = (gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8));
|
||||
AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], 0);
|
||||
AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], FRIENDSHIP_EVENT_GROW_LEVEL);
|
||||
// update battle mon structure after level up
|
||||
if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && gBattleMons[0].hp)
|
||||
{
|
||||
|
||||
@@ -1033,7 +1033,7 @@ static bool8 BT_Phase2SlidingPokeballs_LoadBgGfx(struct Task *task)
|
||||
u16 *tilemapAddr, *tilesetAddr;
|
||||
|
||||
BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr);
|
||||
CpuSet(sSlidingPokeballTilemap, tilesetAddr, 0x20);
|
||||
CpuCopy16(sSlidingPokeballTilemap, tilesetAddr, 0x40);
|
||||
CpuFill32(0, tilemapAddr, 0x800);
|
||||
LoadPalette(sSlidingPokeballBigPokeballPalette, 0xF0, 0x20);
|
||||
++task->tState;
|
||||
@@ -1827,7 +1827,7 @@ static bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task)
|
||||
const u16 *mugshotsMap = sVsBarTilemap;
|
||||
|
||||
BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr);
|
||||
CpuSet(sVsBarTileset, tilesetAddr, 0xF0);
|
||||
CpuCopy16(sVsBarTileset, tilesetAddr, 0x1E0);
|
||||
LoadPalette(sVsBarOpponentPalettes[task->tWhichMugshot], 0xF0, 0x20);
|
||||
LoadPalette(sVsBarPlayerPalettes[gSaveBlock2Ptr->playerGender], 0xFA, 0xC);
|
||||
for (i = 0; i < 20; ++i)
|
||||
@@ -2438,7 +2438,7 @@ static bool8 BT_Phase2GridSquares_LoadGfx(struct Task *task)
|
||||
u16 *tilemapAddr, *tilesetAddr;
|
||||
|
||||
BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr);
|
||||
CpuSet(sGridSquareTileset, tilesetAddr, 0x10);
|
||||
CpuCopy16(sGridSquareTileset, tilesetAddr, 0x20);
|
||||
CpuFill16(0xF000, tilemapAddr, 0x800);
|
||||
LoadPalette(sSlidingPokeballBigPokeballPalette, 0xF0, 0x20);
|
||||
++task->tState;
|
||||
@@ -2454,7 +2454,7 @@ static bool8 BT_Phase2GridSquares_UpdateTileset(struct Task *task)
|
||||
BT_GetBg0TilesetBase(&tilesetAddr);
|
||||
task->tDelay = 3;
|
||||
++task->tWhichGrid;
|
||||
CpuSet(sGridSquareTileset + (task->tWhichGrid * 8), tilesetAddr, 0x10);
|
||||
CpuCopy16(sGridSquareTileset + (task->tWhichGrid * 8), tilesetAddr, 0x20);
|
||||
if (task->tWhichGrid > 0xD)
|
||||
{
|
||||
++task->tState;
|
||||
@@ -2501,7 +2501,7 @@ static bool8 BT_Phase2BlackDoodles_Init(struct Task *task)
|
||||
sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0);
|
||||
for (i = 0; i < 160; ++i)
|
||||
gScanlineEffectRegBuffers[0][i] = WIN_RANGE(0, 0xF0);
|
||||
CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 160);
|
||||
CpuCopy16(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 0x140);
|
||||
SetVBlankCallback(VBCB_BT_Phase2BlackDoodles);
|
||||
++task->tState;
|
||||
return TRUE;
|
||||
|
||||
+3
-3
@@ -85,12 +85,12 @@ void AdjustFriendshipOnBattleFaint(u8 battlerId)
|
||||
if (gBattleMons[opposingBattlerId].level > gBattleMons[battlerId].level)
|
||||
{
|
||||
if (gBattleMons[opposingBattlerId].level - gBattleMons[battlerId].level > 29)
|
||||
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 9);
|
||||
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_LARGE);
|
||||
else
|
||||
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 7);
|
||||
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_SMALL);
|
||||
}
|
||||
else
|
||||
{
|
||||
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 7);
|
||||
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_SMALL);
|
||||
}
|
||||
}
|
||||
|
||||
+21
-82
@@ -3,10 +3,6 @@
|
||||
#include "text.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
#if !defined(NONMATCHING) && MODERN
|
||||
#define static
|
||||
#endif
|
||||
|
||||
static const u8 sBerryDescriptionPart1_Cheri[] = _("とても かわいい はなが さく.");
|
||||
static const u8 sBerryDescriptionPart2_Cheri[] = _("まっかな みは とても からい.");
|
||||
static const u8 sBerryDescriptionPart1_Chesto[] = _("そとの かわの ぶぶんも なかみも すべてが");
|
||||
@@ -925,7 +921,7 @@ const struct BerryTree gBlankBerryTree = {};
|
||||
berries[ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX]; \
|
||||
})
|
||||
|
||||
void sub_809C718(void)
|
||||
void InitEnigmaBerry(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -937,96 +933,39 @@ void sub_809C718(void)
|
||||
gSaveBlock1Ptr->enigmaBerry.checksum = GetEnigmaBerryChecksum(&gSaveBlock1Ptr->enigmaBerry);
|
||||
}
|
||||
|
||||
void sub_809C794(void)
|
||||
void ClearEnigmaBerries(void)
|
||||
{
|
||||
CpuFill16(0, &gSaveBlock1Ptr->enigmaBerry, sizeof(gSaveBlock1Ptr->enigmaBerry));
|
||||
sub_809C718();
|
||||
InitEnigmaBerry();
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
struct ReceivedEnigmaBerry
|
||||
{
|
||||
struct Berry2 berry;
|
||||
u8 unk_001C[0x4FA];
|
||||
u8 itemEffect[18];
|
||||
u8 holdEffect;
|
||||
u8 holdEffectParam;
|
||||
};
|
||||
|
||||
void SetEnigmaBerry(u8 * berry)
|
||||
{
|
||||
struct EnigmaBerry * enigmaBerry;
|
||||
struct ReceivedEnigmaBerry * src2;
|
||||
s32 i;
|
||||
|
||||
sub_809C794();
|
||||
|
||||
{
|
||||
const struct Berry2 * src = (const struct Berry2 *)berry;
|
||||
struct Berry2 * dest = &gSaveBlock1Ptr->enigmaBerry.berry;
|
||||
*dest = *src;
|
||||
}
|
||||
ClearEnigmaBerries();
|
||||
|
||||
src2 = (struct ReceivedEnigmaBerry *)berry;
|
||||
enigmaBerry = &gSaveBlock1Ptr->enigmaBerry;
|
||||
{
|
||||
s32 i = 0;
|
||||
u8 * dest = gSaveBlock1Ptr->enigmaBerry.itemEffect;
|
||||
const u8 * src = berry + 0x516;
|
||||
|
||||
for (i = 0; i < 18; i++) dest[i] = src[i];
|
||||
}
|
||||
enigmaBerry->holdEffect = berry[0x528];
|
||||
enigmaBerry->holdEffectParam = berry[0x529];
|
||||
enigmaBerry->berry = src2->berry;
|
||||
for (i = 0; i < 18; i++)
|
||||
enigmaBerry->itemEffect[i] = src2->itemEffect[i];
|
||||
enigmaBerry->holdEffect = src2->holdEffect;
|
||||
enigmaBerry->holdEffectParam = src2->holdEffectParam;
|
||||
enigmaBerry->checksum = GetEnigmaBerryChecksum(enigmaBerry);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void SetEnigmaBerry(u8 * berry)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tbl sub_809C794\n"
|
||||
"\tadds r5, r4, 0\n"
|
||||
"\tldr r0, _0809C824 @ =gSaveBlock1Ptr\n"
|
||||
"\tldr r2, [r0]\n"
|
||||
"\tldr r0, _0809C828 @ =0x000030ec\n"
|
||||
"\tadds r4, r2, r0\n"
|
||||
"\tadds r1, r4, 0\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tldm r0!, {r3,r6,r7}\n"
|
||||
"\tstm r1!, {r3,r6,r7}\n"
|
||||
"\tldm r0!, {r3,r6,r7}\n"
|
||||
"\tstm r1!, {r3,r6,r7}\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tldr r0, _0809C82C @ =0x00003108\n"
|
||||
"\tadds r6, r2, r0\n"
|
||||
"\tldr r1, _0809C830 @ =0x00000516\n"
|
||||
"\tadds r2, r5, r1\n"
|
||||
"_0809C7F0:\n"
|
||||
"\tadds r0, r6, r3\n"
|
||||
"\tadds r1, r2, r3\n"
|
||||
"\tldrb r1, [r1]\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"\tcmp r3, 0x11\n"
|
||||
"\tble _0809C7F0\n"
|
||||
"\tmovs r3, 0xA5\n"
|
||||
"\tlsls r3, 3\n"
|
||||
"\tadds r0, r5, r3\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tadds r1, r4, 0\n"
|
||||
"\tadds r1, 0x2E\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tldr r6, _0809C834 @ =0x00000529\n"
|
||||
"\tadds r0, r5, r6\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl GetEnigmaBerryChecksum\n"
|
||||
"\tstr r0, [r4, 0x30]\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0809C824: .4byte gSaveBlock1Ptr\n"
|
||||
"_0809C828: .4byte 0x000030ec\n"
|
||||
"_0809C82C: .4byte 0x00003108\n"
|
||||
"_0809C830: .4byte 0x00000516\n"
|
||||
"_0809C834: .4byte 0x00000529");
|
||||
}
|
||||
#endif
|
||||
|
||||
u32 GetEnigmaBerryChecksum(struct EnigmaBerry * enigmaBerry)
|
||||
{
|
||||
|
||||
+3
-3
@@ -268,11 +268,11 @@ bool32 IsRunningDisallowed(u8 metatileBehavior)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool8 MetatileBehaviorForbidsBiking(u8 r4)
|
||||
static bool8 MetatileBehaviorForbidsBiking(u8 metatileBehavior)
|
||||
{
|
||||
if (MetatileBehavior_IsMB0A(r4))
|
||||
if (MetatileBehavior_IsMB0A(metatileBehavior))
|
||||
return TRUE;
|
||||
if (!MetatileBehavior_ReturnFalse_9(r4))
|
||||
if (!MetatileBehavior_ReturnFalse_9(metatileBehavior))
|
||||
return FALSE;
|
||||
if (PlayerGetZCoord() & 1)
|
||||
return FALSE;
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8045314(u16 * palbuff, u16 blend_pal, u32 coefficient, s32 size)
|
||||
void BlendPalettesAt(u16 * palbuff, u16 blend_pal, u32 coefficient, s32 size)
|
||||
{
|
||||
if (coefficient == 16)
|
||||
{
|
||||
|
||||
+7
-9
@@ -4,8 +4,6 @@
|
||||
#include "text.h"
|
||||
#include "sound.h"
|
||||
|
||||
extern u8 gGlyphInfo[];
|
||||
|
||||
static const u8 gUnknown_846FB08[] = {1, 2, 4};
|
||||
static const u16 sFont6BrailleGlyphs[] = INCBIN_U16("graphics/fonts/font6.fwjpnfont");
|
||||
|
||||
@@ -136,7 +134,7 @@ u16 Font6Func(struct TextPrinter *textPrinter)
|
||||
}
|
||||
DecompressGlyphFont6(char_);
|
||||
CopyGlyphToWindow(textPrinter);
|
||||
textPrinter->printerTemplate.currentX += gGlyphInfo[0x80] + textPrinter->printerTemplate.letterSpacing;
|
||||
textPrinter->printerTemplate.currentX += gGlyphInfo.width + textPrinter->printerTemplate.letterSpacing;
|
||||
return 0;
|
||||
case 1:
|
||||
if (TextPrinterWait(textPrinter))
|
||||
@@ -207,12 +205,12 @@ static void DecompressGlyphFont6(u16 glyph)
|
||||
const u16 *glyphs;
|
||||
|
||||
glyphs = sFont6BrailleGlyphs + 0x100 * (glyph / 8) + 0x10 * (glyph % 8);
|
||||
DecompressGlyphTile(glyphs, (u16 *)gGlyphInfo);
|
||||
DecompressGlyphTile(glyphs + 0x8, (u16 *)(gGlyphInfo + 0x20));
|
||||
DecompressGlyphTile(glyphs + 0x80, (u16 *)(gGlyphInfo + 0x40));
|
||||
DecompressGlyphTile(glyphs + 0x88, (u16 *)(gGlyphInfo + 0x60));
|
||||
gGlyphInfo[0x80] = 0x10;
|
||||
gGlyphInfo[0x81] = 0x10;
|
||||
DecompressGlyphTile(glyphs, (u16 *)gGlyphInfo.pixels);
|
||||
DecompressGlyphTile(glyphs + 0x8, (u16 *)(gGlyphInfo.pixels + 0x20));
|
||||
DecompressGlyphTile(glyphs + 0x80, (u16 *)(gGlyphInfo.pixels + 0x40));
|
||||
DecompressGlyphTile(glyphs + 0x88, (u16 *)(gGlyphInfo.pixels + 0x60));
|
||||
gGlyphInfo.width = 0x10;
|
||||
gGlyphInfo.height = 0x10;
|
||||
}
|
||||
|
||||
s32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese)
|
||||
|
||||
+1
-1
@@ -723,7 +723,7 @@ static void sub_8081624(void)
|
||||
|
||||
void CB2_ReturnFromCableClubBattle(void)
|
||||
{
|
||||
gBattleTypeFlags &= (u16)~BATTLE_TYPE_20;
|
||||
gBattleTypeFlags &= (u16)~BATTLE_TYPE_LINK_ESTABLISHED;
|
||||
Overworld_ResetMapMusic();
|
||||
LoadPlayerParty();
|
||||
SavePlayerBag();
|
||||
|
||||
+2
-1
@@ -11,6 +11,7 @@
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "menu.h"
|
||||
#include "field_weather.h"
|
||||
#include "quest_log.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/field_weather.h"
|
||||
|
||||
@@ -785,7 +786,7 @@ static bool32 DoOverworldMapScrollScene(UNUSED u8 unused)
|
||||
sCreditsMgr->subseqno++;
|
||||
// fallthrough
|
||||
case 1:
|
||||
if (!Overworld_DoScrollSceneForCredits(&sCreditsMgr->ovwldseqno, sOverworldMapScenes[sCreditsMgr->whichMon], 0))
|
||||
if (!Overworld_DoScrollSceneForCredits(&sCreditsMgr->ovwldseqno, sOverworldMapScenes[sCreditsMgr->whichMon], QL_TINT_NONE))
|
||||
return FALSE;
|
||||
CreateCreditsWindow();
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
|
||||
|
||||
+1
-1
@@ -799,7 +799,7 @@ void AnimTask_MetallicShine(u8 taskId)
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species);
|
||||
newSpriteId = CreateCloneOfSpriteInWindowMode(gBattleAnimAttacker, spriteId, species);
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap);
|
||||
AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedNormal = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_RedGreenNormal, gObjectEventPicTable_RedNormal, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedBike = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RedBike, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedSurf = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_RedGreenSurf, gObjectEventPicTable_RedSurf, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedItem = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_RedGreenItem, gObjectEventPicTable_RedItem, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedFieldMove = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_RedGreenItem, gObjectEventPicTable_RedItem, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Policeman = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Policeman, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RSBrendan = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RSBrendan, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RSMay = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RSMay, gDummySpriteAffineAnimTable};
|
||||
@@ -70,7 +70,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_StrengthBoulder =
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenNormal = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_RedGreenNormal, gObjectEventPicTable_GreenNormal, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenBike = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GreenBike, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenSurf = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_RedGreenSurf, gObjectEventPicTable_GreenSurf, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenItem = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_RedGreenItem, gObjectEventPicTable_GreenItem, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenFieldMove = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_RedGreenItem, gObjectEventPicTable_GreenItem, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_83A45F4 = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RedBike, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RocketM = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RocketM, gDummySpriteAffineAnimTable};
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Celio = {SPRITE_INVALID_TAG, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Celio, gDummySpriteAffineAnimTable};
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedNormal;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedBike;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedSurf;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedItem;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedFieldMove;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedFish;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedVSSeeker;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedVSSeekerBike;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenNormal;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenBike;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenSurf;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenItem;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenFieldMove;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenFish;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenVSSeeker;
|
||||
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreenVSSeekerBike;
|
||||
@@ -156,14 +156,14 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM
|
||||
[OBJ_EVENT_GFX_RED_NORMAL] = &gObjectEventGraphicsInfo_RedNormal,
|
||||
[OBJ_EVENT_GFX_RED_BIKE] = &gObjectEventGraphicsInfo_RedBike,
|
||||
[OBJ_EVENT_GFX_RED_SURF] = &gObjectEventGraphicsInfo_RedSurf,
|
||||
[OBJ_EVENT_GFX_RED_ITEM] = &gObjectEventGraphicsInfo_RedItem,
|
||||
[OBJ_EVENT_GFX_RED_FIELD_MOVE] = &gObjectEventGraphicsInfo_RedFieldMove,
|
||||
[OBJ_EVENT_GFX_RED_FISH] = &gObjectEventGraphicsInfo_RedFish,
|
||||
[OBJ_EVENT_GFX_RED_VS_SEEKER] = &gObjectEventGraphicsInfo_RedVSSeeker,
|
||||
[OBJ_EVENT_GFX_RED_VS_SEEKER_BIKE] = &gObjectEventGraphicsInfo_RedVSSeekerBike,
|
||||
[OBJ_EVENT_GFX_GREEN_NORMAL] = &gObjectEventGraphicsInfo_GreenNormal,
|
||||
[OBJ_EVENT_GFX_GREEN_BIKE] = &gObjectEventGraphicsInfo_GreenBike,
|
||||
[OBJ_EVENT_GFX_GREEN_SURF] = &gObjectEventGraphicsInfo_GreenSurf,
|
||||
[OBJ_EVENT_GFX_GREEN_ITEM] = &gObjectEventGraphicsInfo_GreenItem,
|
||||
[OBJ_EVENT_GFX_GREEN_FIELD_MOVE] = &gObjectEventGraphicsInfo_GreenFieldMove,
|
||||
[OBJ_EVENT_GFX_GREEN_FISH] = &gObjectEventGraphicsInfo_GreenFish,
|
||||
[OBJ_EVENT_GFX_GREEN_VS_SEEKER] = &gObjectEventGraphicsInfo_GreenVSSeeker,
|
||||
[OBJ_EVENT_GFX_GREEN_VS_SEEKER_BIKE] = &gObjectEventGraphicsInfo_GreenVSSeekerBike,
|
||||
|
||||
+6
-15
@@ -1,5 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "data.h"
|
||||
#include "battle.h"
|
||||
#include "constants/items.h"
|
||||
#include "mail_data.h"
|
||||
@@ -1682,13 +1683,13 @@ void ScriptHatchMon(void)
|
||||
AddHatchedMonToParty(gSpecialVar_0x8004);
|
||||
}
|
||||
|
||||
static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId)
|
||||
static bool8 BufferDayCareMonReceivedMail(struct DayCare *daycare, u8 daycareId)
|
||||
{
|
||||
u8 nick[0x20];
|
||||
struct DaycareMon *daycareMon = &daycare->mons[daycareId];
|
||||
|
||||
DayCare_GetBoxMonNickname(&daycareMon->mon, nick);
|
||||
if (daycareMon->mail.message.itemId != 0
|
||||
if (daycareMon->mail.message.itemId != ITEM_NONE
|
||||
&& (StringCompare(nick, daycareMon->mail.monName) != 0
|
||||
|| StringCompare(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0))
|
||||
{
|
||||
@@ -1702,7 +1703,7 @@ static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId)
|
||||
|
||||
bool8 DaycareMonReceivedMail(void)
|
||||
{
|
||||
return sub_8046E34(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
|
||||
return BufferDayCareMonReceivedMail(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
|
||||
}
|
||||
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
@@ -1841,7 +1842,7 @@ static void CB2_EggHatch_0(void)
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
||||
LoadPalette(gTradeGba2_Pal, 0x10, 0xA0);
|
||||
LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0);
|
||||
CopyToBgTilemapBuffer(1, gUnknown_826601C, 0x1000, 0);
|
||||
CopyToBgTilemapBuffer(1, gTradeOrHatchMonShadowTilemap, 0x1000, 0);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -2040,16 +2041,6 @@ static void SpriteCB_Egg_1(struct Sprite* sprite)
|
||||
}
|
||||
}
|
||||
|
||||
struct UnkStruct_82349CC
|
||||
{
|
||||
u8 field_0;
|
||||
u8 field_1;
|
||||
u8 field_2;
|
||||
u8 field_3;
|
||||
};
|
||||
|
||||
extern const struct UnkStruct_82349CC gMonFrontPicCoords[NUM_SPECIES];
|
||||
|
||||
static void SpriteCB_Egg_2(struct Sprite* sprite)
|
||||
{
|
||||
if (++sprite->data[2] > 30)
|
||||
@@ -2062,7 +2053,7 @@ static void SpriteCB_Egg_2(struct Sprite* sprite)
|
||||
sprite->data[0] = 0;
|
||||
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
|
||||
gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0;
|
||||
gSprites[sEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].field_1;
|
||||
gSprites[sEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -6,13 +6,13 @@ static EWRAM_DATA const u8 *sStringPointers[8] = {0};
|
||||
|
||||
static const u8 sTextColorTable[] =
|
||||
{
|
||||
// [LOW_NYBBLE / 2] = 0xXY, // HIGH_NYBBLE
|
||||
// [LOW_NYBBLE / 2] = 0xXY, // HIGH_NYBBLE
|
||||
[OBJ_EVENT_GFX_RED_NORMAL / 2] = 0x00, // OBJ_EVENT_GFX_RED_BIKE
|
||||
[OBJ_EVENT_GFX_RED_SURF / 2] = 0x00, // OBJ_EVENT_GFX_RED_ITEM
|
||||
[OBJ_EVENT_GFX_RED_SURF / 2] = 0x00, // OBJ_EVENT_GFX_RED_FIELD_MOVE
|
||||
[OBJ_EVENT_GFX_RED_FISH / 2] = 0x00, // OBJ_EVENT_GFX_RED_VS_SEEKER
|
||||
[OBJ_EVENT_GFX_RED_VS_SEEKER_BIKE / 2] = 0x10, // OBJ_EVENT_GFX_GREEN_NORMAL
|
||||
[OBJ_EVENT_GFX_RED_VS_SEEKER_BIKE / 2] = 0x10, // OBJ_EVENT_GFX_GREEN_NORMAL
|
||||
[OBJ_EVENT_GFX_GREEN_BIKE / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_SURF
|
||||
[OBJ_EVENT_GFX_GREEN_ITEM / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_FISH
|
||||
[OBJ_EVENT_GFX_GREEN_FIELD_MOVE / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_FISH
|
||||
[OBJ_EVENT_GFX_GREEN_VS_SEEKER / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_VS_SEEKER_BIKE
|
||||
[OBJ_EVENT_GFX_RS_BRENDAN / 2] = 0x10, // OBJ_EVENT_GFX_RS_MAY
|
||||
[OBJ_EVENT_GFX_LITTLE_BOY / 2] = 0x10, // OBJ_EVENT_GFX_LITTLE_GIRL
|
||||
@@ -108,7 +108,7 @@ u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src)
|
||||
{
|
||||
while (*src != EOS)
|
||||
{
|
||||
if (*src != CHAR_SPECIAL_F7)
|
||||
if (*src != CHAR_DYNAMIC_PLACEHOLDER)
|
||||
{
|
||||
*dest++ = *src++;
|
||||
}
|
||||
|
||||
@@ -2002,7 +2002,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI
|
||||
gPlayerAvatar.objectEventId = objectEventId;
|
||||
gPlayerAvatar.spriteId = spriteId;
|
||||
gPlayerAvatar.gender = GetPlayerAvatarGenderByGraphicsId(gObjectEvents[objectEventId].graphicsId);
|
||||
SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, 0x20);
|
||||
SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE);
|
||||
}
|
||||
|
||||
void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
|
||||
@@ -2223,7 +2223,7 @@ void PatchObjectPalette(u16 paletteTag, u8 paletteSlot)
|
||||
u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag);
|
||||
|
||||
LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20);
|
||||
sub_8083598(paletteSlot);
|
||||
ApplyGlobalFieldPaletteTint(paletteSlot);
|
||||
}
|
||||
|
||||
void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot)
|
||||
@@ -2787,7 +2787,7 @@ static bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, st
|
||||
|
||||
static bool8 MovementType_WanderAround_Step5Duplicate(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
ObjectEventSetSingleMovement(objectEvent, sprite, sub_8063F2C(objectEvent->movementDirection));
|
||||
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowestMovementAction(objectEvent->movementDirection));
|
||||
objectEvent->singleMovementActive = TRUE;
|
||||
sprite->data[1] = 6;
|
||||
return TRUE;
|
||||
@@ -5222,7 +5222,7 @@ u8 sub_8063F10(u32 idx)
|
||||
return gUnknown_83A64F6[direction];
|
||||
}
|
||||
|
||||
dirn_to_anim(sub_8063F2C, gUnknown_83A64FB);
|
||||
dirn_to_anim(GetWalkSlowestMovementAction, gUnknown_83A64FB);
|
||||
dirn_to_anim(GetWalkSlowMovementAction, gUnknown_83A6500);
|
||||
dirn_to_anim(GetWalkNormalMovementAction, gUnknown_83A6505);
|
||||
dirn_to_anim(GetWalkFastMovementAction, gUnknown_83A650A);
|
||||
@@ -5232,7 +5232,7 @@ dirn_to_anim(GetWalkFastestMovementAction, gUnknown_83A6519);
|
||||
dirn_to_anim(GetSlideMovementAction, gUnknown_83A651E);
|
||||
dirn_to_anim(GetPlayerRunMovementAction, gUnknown_83A6523);
|
||||
dirn_to_anim(GetPlayerRunSlowMovementAction, gUnknown_83A6528);
|
||||
dirn_to_anim(sub_80640E4, gUnknown_83A652D);
|
||||
dirn_to_anim(GetSpinMovementAction, gUnknown_83A652D);
|
||||
dirn_to_anim(GetJump2MovementAction, gUnknown_83A6532);
|
||||
dirn_to_anim(GetJumpInPlaceMovementAction, gUnknown_83A6537);
|
||||
dirn_to_anim(GetJumpInPlaceTurnAroundMovementAction, gUnknown_83A653C);
|
||||
@@ -5328,7 +5328,7 @@ static void ObjectEventSetSingleMovement(struct ObjectEvent *objectEvent, struct
|
||||
|
||||
if (gQuestLogPlaybackState == 2)
|
||||
{
|
||||
sub_81124EC(objectEvent->localId, objectEvent->mapNum, objectEvent->mapGroup, animId);
|
||||
QuestLogRecordNPCStep(objectEvent->localId, objectEvent->mapNum, objectEvent->mapGroup, animId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+47
-47
@@ -56,7 +56,7 @@ static bool8 TryStartMiscWalkingScripts(u16 metatileBehavior);
|
||||
static bool8 TryStartStepCountScript(u16 metatileBehavior);
|
||||
static void UpdateHappinessStepCounter(void);
|
||||
static bool8 UpdatePoisonStepCounter(void);
|
||||
static bool8 CheckStandardWildEncounter(u32 encounter);
|
||||
static bool8 CheckStandardWildEncounter(u32 metatileAttributes);
|
||||
static bool8 TrySetUpWalkIntoSignpostScript(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
|
||||
static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection);
|
||||
static u8 GetFacingSignpostType(u16 metatileBehvaior, u8 direction);
|
||||
@@ -105,11 +105,11 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
if (GetPlayerSpeed() != 4)
|
||||
{
|
||||
if ((newKeys & START_BUTTON) && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FISHING))
|
||||
if ((newKeys & START_BUTTON) && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED))
|
||||
input->pressedStartButton = TRUE;
|
||||
if (!QL_IS_PLAYBACK_STATE)
|
||||
{
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FISHING))
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED))
|
||||
{
|
||||
if (newKeys & SELECT_BUTTON)
|
||||
input->pressedSelectButton = TRUE;
|
||||
@@ -195,12 +195,12 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
|
||||
struct MapPosition position;
|
||||
u8 playerDirection;
|
||||
u16 metatileBehavior;
|
||||
u32 r8;
|
||||
u32 metatileAttributes;
|
||||
|
||||
ResetFacingNpcOrSignPostVars();
|
||||
playerDirection = GetPlayerFacingDirection();
|
||||
GetPlayerPosition(&position);
|
||||
r8 = MapGridGetMetatileAttributeAt(position.x, position.y, 0xFF);
|
||||
metatileAttributes = MapGridGetMetatileAttributeAt(position.x, position.y, 0xFF);
|
||||
metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
|
||||
|
||||
FieldClearPlayerInput(&gInputToStoreInQuestLogMaybe);
|
||||
@@ -241,7 +241,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
|
||||
metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
|
||||
}
|
||||
}
|
||||
if (input->checkStandardWildEncounter && CheckStandardWildEncounter(r8) == TRUE)
|
||||
if (input->checkStandardWildEncounter && CheckStandardWildEncounter(metatileAttributes) == TRUE)
|
||||
{
|
||||
gInputToStoreInQuestLogMaybe.checkStandardWildEncounter = TRUE;
|
||||
return TRUE;
|
||||
@@ -520,57 +520,57 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me
|
||||
if (MetatileBehavior_IsRegionMap(metatileBehavior) == TRUE)
|
||||
return EventScript_WallTownMap;
|
||||
if (MetatileBehavior_IsBookshelf(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7606;
|
||||
return EventScript_Bookshelf;
|
||||
if (MetatileBehavior_IsPokeMartShelf(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A760F;
|
||||
return EventScript_PokeMartShelf;
|
||||
if (MetatileBehavior_IsFood(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7618;
|
||||
return EventScript_Food;
|
||||
if (MetatileBehavior_IsImpressiveMachine(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7633;
|
||||
return EventScript_ImpressiveMachine;
|
||||
if (MetatileBehavior_IsBlueprints(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A763C;
|
||||
return EventScript_Blueprints;
|
||||
if (MetatileBehavior_IsVideoGame(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7621;
|
||||
return EventScript_VideoGame;
|
||||
if (MetatileBehavior_IsBurglary(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7645;
|
||||
return EventScript_Burglary;
|
||||
if (MetatileBehavior_IsComputer(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A762A;
|
||||
if (MetatileBehavior_IsMBA3(metatileBehavior) == TRUE)
|
||||
return EventScript_Computer;
|
||||
if (MetatileBehavior_IsTrainerTowerMonitor(metatileBehavior) == TRUE)
|
||||
return TrainerTower_EventScript_ShowTime;
|
||||
if (MetatileBehavior_IsPlayerFacingTVScreen(metatileBehavior, direction) == TRUE)
|
||||
return gUnknown_81A764E;
|
||||
return EventScript_PlayerFacingTVScreen;
|
||||
if (MetatileBehavior_IsCabinet(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7657;
|
||||
return EventScript_Cabinet;
|
||||
if (MetatileBehavior_IsKitchen(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7660;
|
||||
return EventScript_Kitchen;
|
||||
if (MetatileBehavior_IsDresser(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7669;
|
||||
return EventScript_Dresser;
|
||||
if (MetatileBehavior_IsSnacks(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7672;
|
||||
return EventScript_Snacks;
|
||||
if (MetatileBehavior_IsPainting(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A767B;
|
||||
return EventScript_Painting;
|
||||
if (MetatileBehavior_IsPowerPlantMachine(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7684;
|
||||
return EventScript_PowerPlantMachine;
|
||||
if (MetatileBehavior_IsTelephone(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A768D;
|
||||
return EventScript_Telephone;
|
||||
if (MetatileBehavior_IsAdvertisingPoster(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A7696;
|
||||
return EventScript_AdvertisingPoster;
|
||||
if (MetatileBehavior_IsTastyFood(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A769F;
|
||||
return EventScript_TastyFood;
|
||||
if (MetatileBehavior_IsTrashBin(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A76A8;
|
||||
return EventScript_TrashBin;
|
||||
if (MetatileBehavior_IsCup(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A76B1;
|
||||
if (MetatileBehavior_ReturnFalse_19(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A76BA;
|
||||
if (MetatileBehavior_ReturnFalse_20(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A76C3;
|
||||
return EventScript_Cup;
|
||||
if (MetatileBehavior_IsPolishedWindow(metatileBehavior) == TRUE)
|
||||
return EventScript_PolishedWindow;
|
||||
if (MetatileBehavior_IsBeautifulSkyWindow(metatileBehavior) == TRUE)
|
||||
return EventScript_BeautifulSkyWindow;
|
||||
if (MetatileBehavior_IsBlinkingLights(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A76CC;
|
||||
if (MetatileBehavior_IsMB9F(metatileBehavior) == TRUE)
|
||||
return gUnknown_81A76D5;
|
||||
if (MetatileBehavior_IsPlayerFacingMB_8D(metatileBehavior, direction) == TRUE)
|
||||
return CableClub_EventScript_81BBFD8;
|
||||
return EventScript_BlinkingLights;
|
||||
if (MetatileBehavior_IsNeatlyLinedUpTools(metatileBehavior) == TRUE)
|
||||
return EventScript_NeatlyLinedUpTools;
|
||||
if (MetatileBehavior_IsPlayerFacingCableClubWirelessMonitor(metatileBehavior, direction) == TRUE)
|
||||
return CableClub_EventScript_ShowWirelessCommunicationScreen;
|
||||
if (MetatileBehavior_IsQuestionnaire(metatileBehavior) == TRUE)
|
||||
return EventScript_Questionnaire;
|
||||
if (MetatileBehavior_IsPlayerFacingBattleRecords(metatileBehavior, direction) == TRUE)
|
||||
@@ -625,7 +625,7 @@ static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileB
|
||||
return TRUE;
|
||||
if (TryStartStepCountScript(metatileBehavior) == TRUE)
|
||||
return TRUE;
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FISHING) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior) && UpdateRepelCounter() == TRUE)
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior) && UpdateRepelCounter() == TRUE)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -655,7 +655,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
|
||||
|
||||
UpdateHappinessStepCounter();
|
||||
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FISHING) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
|
||||
{
|
||||
if (UpdateVsSeekerStepCounter() == TRUE)
|
||||
{
|
||||
@@ -737,37 +737,37 @@ void RestartWildEncounterImmunitySteps(void)
|
||||
ResetEncounterRateModifiers();
|
||||
}
|
||||
|
||||
static bool8 CheckStandardWildEncounter(u32 encounter)
|
||||
static bool8 CheckStandardWildEncounter(u32 metatileAttributes)
|
||||
{
|
||||
return TryStandardWildEncounter(encounter);
|
||||
return TryStandardWildEncounter(metatileAttributes);
|
||||
}
|
||||
|
||||
static bool8 TrySetUpWalkIntoSignpostScript(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection)
|
||||
{
|
||||
u8 r4;
|
||||
u8 signpostType;
|
||||
const u8 * script;
|
||||
if (JOY_HELD(DPAD_LEFT | DPAD_RIGHT))
|
||||
return FALSE;
|
||||
if (playerDirection == DIR_EAST || playerDirection == DIR_WEST)
|
||||
return FALSE;
|
||||
|
||||
r4 = GetFacingSignpostType(metatileBehavior, playerDirection);
|
||||
if (r4 == SIGNPOST_POKECENTER)
|
||||
signpostType = GetFacingSignpostType(metatileBehavior, playerDirection);
|
||||
if (signpostType == SIGNPOST_POKECENTER)
|
||||
{
|
||||
SetUpWalkIntoSignScript(EventScript_PokecenterSign, playerDirection);
|
||||
return TRUE;
|
||||
}
|
||||
else if (r4 == SIGNPOST_POKEMART)
|
||||
else if (signpostType == SIGNPOST_POKEMART)
|
||||
{
|
||||
SetUpWalkIntoSignScript(EventScript_PokemartSign, playerDirection);
|
||||
return TRUE;
|
||||
}
|
||||
else if (r4 == SIGNPOST_INDIGO_1)
|
||||
else if (signpostType == SIGNPOST_INDIGO_1)
|
||||
{
|
||||
SetUpWalkIntoSignScript(EventScript_Indigo_UltimateGoal, playerDirection);
|
||||
return TRUE;
|
||||
}
|
||||
else if (r4 == SIGNPOST_INDIGO_2)
|
||||
else if (signpostType == SIGNPOST_INDIGO_2)
|
||||
{
|
||||
SetUpWalkIntoSignScript(EventScript_Indigo_HighestAuthority, playerDirection);
|
||||
return TRUE;
|
||||
@@ -777,7 +777,7 @@ static bool8 TrySetUpWalkIntoSignpostScript(struct MapPosition * position, u16 m
|
||||
script = GetSignpostScriptAtMapPosition(position);
|
||||
if (script == NULL)
|
||||
return FALSE;
|
||||
if (r4 != SIGNPOST_SCRIPTED)
|
||||
if (signpostType != SIGNPOST_SCRIPTED)
|
||||
return FALSE;
|
||||
SetUpWalkIntoSignScript(script, playerDirection);
|
||||
return TRUE;
|
||||
|
||||
+27
-27
@@ -422,9 +422,9 @@ static void FieldEffectScript_LoadTiles(const u8 **script)
|
||||
*script += sizeof(u32);
|
||||
}
|
||||
|
||||
void sub_8083598(u8 paletteIdx)
|
||||
void ApplyGlobalFieldPaletteTint(u8 paletteIdx)
|
||||
{
|
||||
switch (gUnknown_2036E28)
|
||||
switch (gGlobalFieldTintMode)
|
||||
{
|
||||
case 0:
|
||||
return;
|
||||
@@ -435,7 +435,7 @@ void sub_8083598(u8 paletteIdx)
|
||||
TintPalette_SepiaTone(&gPlttBufferUnfaded[(paletteIdx + 16) * 16], 0x10);
|
||||
break;
|
||||
case 3:
|
||||
sub_8111F38((paletteIdx + 16) * 16, 0x10);
|
||||
QuestLog_BackUpPalette((paletteIdx + 16) * 16, 0x10);
|
||||
TintPalette_GrayScale(&gPlttBufferUnfaded[(paletteIdx + 16) * 16], 0x10);
|
||||
break;
|
||||
default:
|
||||
@@ -450,7 +450,7 @@ static void FieldEffectScript_LoadFadedPal(const u8 **script)
|
||||
u8 idx = IndexOfSpritePaletteTag(spritePalette->tag);
|
||||
LoadSpritePalette(spritePalette);
|
||||
if (idx == 0xFF)
|
||||
sub_8083598(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
ApplyGlobalFieldPaletteTint(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
*script += sizeof(u32);
|
||||
}
|
||||
@@ -461,7 +461,7 @@ static void FieldEffectScript_LoadPal(const u8 **script)
|
||||
u8 idx = IndexOfSpritePaletteTag(spritePalette->tag);
|
||||
LoadSpritePalette(spritePalette);
|
||||
if (idx != 0xFF)
|
||||
sub_8083598(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
ApplyGlobalFieldPaletteTint(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
*script += sizeof(u32);
|
||||
}
|
||||
|
||||
@@ -1293,7 +1293,7 @@ static bool8 EscalatorWarpEffect_1(struct Task * task)
|
||||
FreezeObjectEvents();
|
||||
CameraObjectReset2();
|
||||
StartEscalator(task->data[1]);
|
||||
sub_81128BC(1);
|
||||
QuestLog_OnEscalatorWarp(QL_ESCALATOR_OUT);
|
||||
task->data[0]++;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1534,7 +1534,7 @@ static bool8 EscalatorWarpInEffect_7(struct Task * task)
|
||||
UnfreezeObjectEvents();
|
||||
ObjectEventSetHeldMovement(objectEvent, GetWalkNormalMovementAction(DIR_EAST));
|
||||
DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpInFieldEffect));
|
||||
sub_81128BC(2);
|
||||
QuestLog_OnEscalatorWarp(QL_ESCALATOR_IN);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1600,7 +1600,7 @@ static bool8 waterfall_2_wait_anim_finish_probably(struct Task * task, struct Ob
|
||||
|
||||
static bool8 waterfall_3_move_player_probably(struct Task * task, struct ObjectEvent * playerObj)
|
||||
{
|
||||
ObjectEventSetHeldMovement(playerObj, sub_8063F2C(DIR_NORTH));
|
||||
ObjectEventSetHeldMovement(playerObj, GetWalkSlowestMovementAction(DIR_NORTH));
|
||||
task->data[0]++;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2907,7 +2907,7 @@ static void UseSurfEffect_1(struct Task * task)
|
||||
ScriptContext2_Enable();
|
||||
FreezeObjectEvents();
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
SetPlayerAvatarStateMask(8);
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
|
||||
PlayerGetDestCoords(&task->data[1], &task->data[2]);
|
||||
MoveCoords(gObjectEvents[gPlayerAvatar.objectEventId].movementDirection, &task->data[1], &task->data[2]);
|
||||
task->data[0]++;
|
||||
@@ -2919,7 +2919,7 @@ static void UseSurfEffect_2(struct Task * task)
|
||||
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
sub_805CB70();
|
||||
StartPlayerAvatarSummonMonForFieldMoveAnim();
|
||||
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
|
||||
task->data[0]++;
|
||||
}
|
||||
@@ -2943,7 +2943,7 @@ static void UseSurfEffect_4(struct Task * task)
|
||||
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
|
||||
{
|
||||
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(2));
|
||||
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_RIDE));
|
||||
ObjectEventClearHeldMovementIfFinished(objectEvent);
|
||||
ObjectEventSetHeldMovement(objectEvent, sub_80641C0(objectEvent->movementDirection));
|
||||
gFieldEffectArguments[0] = task->data[1];
|
||||
@@ -2961,7 +2961,7 @@ static void UseSurfEffect_5(struct Task * task)
|
||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
gPlayerAvatar.flags &= 0xdf;
|
||||
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_CONTROLLABLE;
|
||||
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection));
|
||||
sub_80DC44C(objectEvent->fieldEffectSpriteId, 1);
|
||||
UnfreezeObjectEvents();
|
||||
@@ -2988,7 +2988,7 @@ static void (*const sUseVsSeekerEffectFuncs[])(struct Task * task) = {
|
||||
u32 FldEff_UseVsSeeker(void)
|
||||
{
|
||||
if (gQuestLogState == QL_STATE_RECORDING)
|
||||
sub_811278C(8, 89);
|
||||
QuestLogRecordPlayerAvatarGfxTransitionWithDuration(8, 89);
|
||||
CreateTask(Task_FldEffUseVsSeeker, 0xFF);
|
||||
return 0;
|
||||
}
|
||||
@@ -3011,7 +3011,7 @@ static void UseVsSeekerEffect_2(struct Task * task)
|
||||
struct ObjectEvent * playerObj = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
if (!ObjectEventIsMovementOverridden(playerObj) || ObjectEventClearHeldMovementIfFinished(playerObj))
|
||||
{
|
||||
sub_805CBE8();
|
||||
StartPlayerAvatarVsSeekerAnim();
|
||||
ObjectEventSetHeldMovement(playerObj, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
|
||||
task->data[0]++;
|
||||
}
|
||||
@@ -3023,11 +3023,11 @@ static void UseVsSeekerEffect_3(struct Task * task)
|
||||
if (ObjectEventClearHeldMovementIfFinished(playerObj))
|
||||
{
|
||||
if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE))
|
||||
ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(1));
|
||||
ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_BIKE));
|
||||
else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(2));
|
||||
ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_RIDE));
|
||||
else
|
||||
ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(0));
|
||||
ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_NORMAL));
|
||||
ObjectEventForceSetHeldMovement(playerObj, GetFaceDirectionMovementAction(playerObj->facingDirection));
|
||||
task->data[0]++;
|
||||
}
|
||||
@@ -3131,8 +3131,8 @@ static void UseFlyEffect_1(struct Task * task)
|
||||
{
|
||||
task->data[15] = gPlayerAvatar.flags;
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
SetPlayerAvatarStateMask(1);
|
||||
sub_805CB70();
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
StartPlayerAvatarSummonMonForFieldMoveAnim();
|
||||
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
|
||||
task->data[0]++;
|
||||
}
|
||||
@@ -3191,7 +3191,7 @@ static void UseFlyEffect_6(struct Task * task)
|
||||
if ((++task->data[2]) >= 8)
|
||||
{
|
||||
struct ObjectEvent * objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(2));
|
||||
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_RIDE));
|
||||
StartSpriteAnim(&gSprites[objectEvent->spriteId], 0x16);
|
||||
objectEvent->inanimate = TRUE;
|
||||
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT);
|
||||
@@ -3437,12 +3437,12 @@ static void FlyInEffect_1(struct Task * task)
|
||||
task->data[2] = 33;
|
||||
task->data[15] = gPlayerAvatar.flags;
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
SetPlayerAvatarStateMask(0x01);
|
||||
if (task->data[15] & 0x08)
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
if (task->data[15] & PLAYER_AVATAR_FLAG_SURFING)
|
||||
{
|
||||
sub_80DC44C(objectEvent->fieldEffectSpriteId, 0);
|
||||
}
|
||||
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(2));
|
||||
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_RIDE));
|
||||
CameraObjectReset2();
|
||||
ObjectEventTurn(objectEvent, DIR_WEST);
|
||||
StartSpriteAnim(&gSprites[objectEvent->spriteId], 0x16);
|
||||
@@ -3518,7 +3518,7 @@ static void FlyInEffect_4(struct Task * task)
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sub_805CB70();
|
||||
StartPlayerAvatarSummonMonForFieldMoveAnim();
|
||||
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
|
||||
task->data[0]++;
|
||||
}
|
||||
@@ -3550,10 +3550,10 @@ static void FlyInEffect_7(struct Task * task)
|
||||
if ((--task->data[1]) == 0)
|
||||
{
|
||||
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
state = 0;
|
||||
if (task->data[15] & 0x08)
|
||||
state = PLAYER_AVATAR_GFX_NORMAL;
|
||||
if (task->data[15] & PLAYER_AVATAR_FLAG_SURFING)
|
||||
{
|
||||
state = 2;
|
||||
state = PLAYER_AVATAR_GFX_RIDE;
|
||||
sub_80DC44C(objectEvent->fieldEffectSpriteId, 1);
|
||||
}
|
||||
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(state));
|
||||
|
||||
+133
-132
@@ -26,13 +26,13 @@
|
||||
#include "constants/metatile_behaviors.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
static EWRAM_DATA struct ObjectEvent * gUnknown_2036E30 = NULL;
|
||||
static EWRAM_DATA struct ObjectEvent * sPlayerObjectPtr = NULL;
|
||||
static EWRAM_DATA u8 sTeleportSavedFacingDirection = DIR_NONE;
|
||||
EWRAM_DATA struct ObjectEvent gObjectEvents[OBJECT_EVENTS_COUNT] = {};
|
||||
EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {};
|
||||
|
||||
static u8 ObjectEventCB2_NoMovement2(struct ObjectEvent * object, struct Sprite * sprite);
|
||||
static bool8 sub_805B528(void);
|
||||
static bool8 TryUpdatePlayerSpinDirection(void);
|
||||
static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent * playerObjEvent, u8 direction);
|
||||
static void npc_clear_strange_bits(struct ObjectEvent * playerObjEvent);
|
||||
static bool8 TryDoMetatileBehaviorForcedMovement(void);
|
||||
@@ -77,18 +77,18 @@ static void PlayerAvatarTransition_Underwater(struct ObjectEvent * playerObject)
|
||||
static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent * playerObject);
|
||||
static bool8 PlayerIsAnimActive(void);
|
||||
static bool8 PlayerCheckIfAnimFinishedOrInactive(void);
|
||||
static bool8 player_is_anim_in_certain_ranges(void);
|
||||
static bool8 sub_805BF58(void);
|
||||
static bool8 PlayerAnimIsMultiFrameStationary(void);
|
||||
static bool8 PlayerAnimIsMultiFrameStationaryAndStateNotTurning(void);
|
||||
static void PlayCollisionSoundIfNotFacingWarp(u8 direction);
|
||||
static void PlayerGoSpin(u8 direction);
|
||||
static void sub_805C2CC(u8 metatileBehavior);
|
||||
static void PlayerApplyTileForcedMovement(u8 metatileBehavior);
|
||||
static bool8 MetatileAtCoordsIsWaterTile(s16 x, s16 y);
|
||||
static void sub_805CC40(struct ObjectEvent * playerObjEvent);
|
||||
static void HandleWarpArrowSpriteHideShow(struct ObjectEvent * playerObjEvent);
|
||||
static void StartStrengthAnim(u8 objectEventId, u8 direction);
|
||||
static void Task_BumpBoulder(u8 taskId);
|
||||
static bool8 sub_805CD64(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||
static bool8 do_boulder_dust(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||
static bool8 sub_805CE20(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||
static bool8 DoBoulderInit(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||
static bool8 DoBoulderDust(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||
static bool8 DoBoulderFinish(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj);
|
||||
static void DoPlayerMatJump(void);
|
||||
static void DoPlayerAvatarSecretBaseMatJump(u8 taskId);
|
||||
static bool8 PlayerAvatar_DoSecretBaseMatJump(struct Task * task, struct ObjectEvent * playerObj);
|
||||
@@ -136,8 +136,8 @@ void player_step(u8 direction, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
|
||||
sub_805CC40(playerObjEvent);
|
||||
if (!gPlayerAvatar.preventStep && !sub_805B528())
|
||||
HandleWarpArrowSpriteHideShow(playerObjEvent);
|
||||
if (!gPlayerAvatar.preventStep && !TryUpdatePlayerSpinDirection())
|
||||
{
|
||||
if (!TryInterruptObjectEventSpecialAnim(playerObjEvent, direction))
|
||||
{
|
||||
@@ -194,26 +194,26 @@ static void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 held
|
||||
static void PlayerAllowForcedMovementIfMovingSameDirection(void)
|
||||
{
|
||||
if (gPlayerAvatar.runningState == MOVING)
|
||||
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_FIELD_MOVE;
|
||||
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_CONTROLLABLE;
|
||||
}
|
||||
|
||||
static bool8 sub_805B528(void)
|
||||
static bool8 TryUpdatePlayerSpinDirection(void)
|
||||
{
|
||||
if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FISHING) && MetatileBehavior_IsSpinTile(gPlayerAvatar.lastSpinTile))
|
||||
if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED) && MetatileBehavior_IsSpinTile(gPlayerAvatar.lastSpinTile))
|
||||
{
|
||||
gUnknown_2036E30 = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
if (gUnknown_2036E30->heldMovementFinished)
|
||||
sPlayerObjectPtr = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
if (sPlayerObjectPtr->heldMovementFinished)
|
||||
{
|
||||
if (MetatileBehavior_IsStopSpinning(gUnknown_2036E30->currentMetatileBehavior))
|
||||
if (MetatileBehavior_IsStopSpinning(sPlayerObjectPtr->currentMetatileBehavior))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (MetatileBehavior_IsSpinTile(gUnknown_2036E30->currentMetatileBehavior))
|
||||
if (MetatileBehavior_IsSpinTile(sPlayerObjectPtr->currentMetatileBehavior))
|
||||
{
|
||||
gPlayerAvatar.lastSpinTile = gUnknown_2036E30->currentMetatileBehavior;
|
||||
gPlayerAvatar.lastSpinTile = sPlayerObjectPtr->currentMetatileBehavior;
|
||||
}
|
||||
ObjectEventClearHeldMovement(gUnknown_2036E30);
|
||||
sub_805C2CC(gPlayerAvatar.lastSpinTile);
|
||||
ObjectEventClearHeldMovement(sPlayerObjectPtr);
|
||||
PlayerApplyTileForcedMovement(gPlayerAvatar.lastSpinTile);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -221,8 +221,8 @@ static bool8 sub_805B528(void)
|
||||
}
|
||||
|
||||
static const struct {
|
||||
bool8 (*unk0)(u8 metatileBehavior);
|
||||
bool8 (*unk4)(void);
|
||||
bool8 (*check)(u8 metatileBehavior);
|
||||
bool8 (*apply)(void);
|
||||
} sForcedMovementFuncs[] = {
|
||||
{MetatileBehavior_IsUnknownMovement48, ForcedMovement_Slip},
|
||||
{MetatileBehavior_IsIce_2, ForcedMovement_Slip},
|
||||
@@ -252,37 +252,38 @@ static bool8 TryDoMetatileBehaviorForcedMovement(void)
|
||||
{
|
||||
int i;
|
||||
u8 behavior;
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FIELD_MOVE))
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_CONTROLLABLE))
|
||||
{
|
||||
behavior = gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior;
|
||||
for (i = 0; sForcedMovementFuncs[i].unk0 != NULL; i++)
|
||||
for (i = 0; sForcedMovementFuncs[i].check != NULL; i++)
|
||||
{
|
||||
if (sForcedMovementFuncs[i].unk0(behavior))
|
||||
if (sForcedMovementFuncs[i].check(behavior))
|
||||
{
|
||||
gPlayerAvatar.lastSpinTile = behavior;
|
||||
return sForcedMovementFuncs[i].unk4();
|
||||
return sForcedMovementFuncs[i].apply();
|
||||
}
|
||||
}
|
||||
return sForcedMovementFuncs[i].unk4();
|
||||
return sForcedMovementFuncs[i].apply();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; sForcedMovementFuncs[i].unk0 != NULL; i++)
|
||||
// Calls ForcedMovement_None but with extra steps
|
||||
for (i = 0; sForcedMovementFuncs[i].check != NULL; i++)
|
||||
;
|
||||
return sForcedMovementFuncs[i].unk4();
|
||||
return sForcedMovementFuncs[i].apply();
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 ForcedMovement_None(void)
|
||||
{
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FISHING)
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED)
|
||||
{
|
||||
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
|
||||
playerObjEvent->facingDirectionLocked = FALSE;
|
||||
playerObjEvent->enableAnim = TRUE;
|
||||
SetObjectEventDirection(playerObjEvent, playerObjEvent->facingDirection);
|
||||
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_FISHING;
|
||||
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_FORCED;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -292,7 +293,7 @@ static u8 DoForcedMovement(u8 direction, MovementAction movementAction)
|
||||
struct PlayerAvatar *playerAvatar = &gPlayerAvatar;
|
||||
u8 collision = CheckForPlayerAvatarCollision(direction);
|
||||
|
||||
playerAvatar->flags |= PLAYER_AVATAR_FLAG_FISHING;
|
||||
playerAvatar->flags |= PLAYER_AVATAR_FLAG_FORCED;
|
||||
if (collision)
|
||||
{
|
||||
ForcedMovement_None();
|
||||
@@ -304,7 +305,7 @@ static u8 DoForcedMovement(u8 direction, MovementAction movementAction)
|
||||
{
|
||||
if (collision == COLLISION_LEDGE_JUMP)
|
||||
PlayerJumpLedge(direction);
|
||||
playerAvatar->flags |= PLAYER_AVATAR_FLAG_FISHING;
|
||||
playerAvatar->flags |= PLAYER_AVATAR_FLAG_FORCED;
|
||||
playerAvatar->runningState = MOVING;
|
||||
return 1;
|
||||
}
|
||||
@@ -581,12 +582,12 @@ u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u
|
||||
return collision;
|
||||
}
|
||||
|
||||
static const u8 gUnknown_835B820[] = {
|
||||
MOVEMENT_ACTION_FACE_DOWN_FAST,
|
||||
MOVEMENT_ACTION_FACE_DOWN_FAST,
|
||||
MOVEMENT_ACTION_FACE_UP_FAST,
|
||||
MOVEMENT_ACTION_FACE_LEFT_FAST,
|
||||
MOVEMENT_ACTION_FACE_RIGHT_FAST
|
||||
static const u8 sQuestLogSurfDismountActionIds[] = {
|
||||
QL_PLAYER_GFX_STOP_SURF_S,
|
||||
QL_PLAYER_GFX_STOP_SURF_S,
|
||||
QL_PLAYER_GFX_STOP_SURF_N,
|
||||
QL_PLAYER_GFX_STOP_SURF_W,
|
||||
QL_PLAYER_GFX_STOP_SURF_E
|
||||
};
|
||||
|
||||
static bool8 CanStopSurfing(s16 x, s16 y, u8 direction)
|
||||
@@ -595,7 +596,7 @@ static bool8 CanStopSurfing(s16 x, s16 y, u8 direction)
|
||||
&& MapGridGetZCoordAt(x, y) == 3
|
||||
&& GetObjectEventIdByXYZ(x, y, 3) == OBJECT_EVENTS_COUNT)
|
||||
{
|
||||
sub_811278C(gUnknown_835B820[direction], 16);
|
||||
QuestLogRecordPlayerAvatarGfxTransitionWithDuration(sQuestLogSurfDismountActionIds[direction], 16);
|
||||
CreateStopSurfingTask(direction);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -641,7 +642,7 @@ static bool8 TryPushBoulder(s16 x, s16 y, u8 direction)
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 (*const gUnknown_835B828[])(u8) = {
|
||||
static bool8 (*const sAcroBikeTrickMetatiles[])(u8) = {
|
||||
MetatileBehavior_IsBumpySlope,
|
||||
MetatileBehavior_IsIsolatedVerticalRail,
|
||||
MetatileBehavior_IsIsolatedHorizontalRail,
|
||||
@@ -649,7 +650,7 @@ static bool8 (*const gUnknown_835B828[])(u8) = {
|
||||
MetatileBehavior_IsHorizontalRail
|
||||
};
|
||||
|
||||
static const u8 gUnknown_835B83C[] = {
|
||||
static const u8 sAcroBikeTrickCollisionTypes[] = {
|
||||
COLLISION_WHEELIE_HOP,
|
||||
COLLISION_ISOLATED_VERTICAL_RAIL,
|
||||
COLLISION_ISOLATED_HORIZONTAL_RAIL,
|
||||
@@ -661,11 +662,11 @@ static void CheckAcroBikeCollision(s16 x, s16 y, u8 metatileBehavior, u8 *collis
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < NELEMS(gUnknown_835B828); i++)
|
||||
for (i = 0; i < NELEMS(sAcroBikeTrickMetatiles); i++)
|
||||
{
|
||||
if (gUnknown_835B828[i](metatileBehavior))
|
||||
if (sAcroBikeTrickMetatiles[i](metatileBehavior))
|
||||
{
|
||||
*collision = gUnknown_835B83C[i];
|
||||
*collision = sAcroBikeTrickCollisionTypes[i];
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -677,15 +678,15 @@ void SetPlayerAvatarTransitionFlags(u16 flags)
|
||||
DoPlayerAvatarTransition();
|
||||
}
|
||||
|
||||
static void (*const gUnknown_835B844[])(struct ObjectEvent *) = {
|
||||
[PLAYER_AVATAR_STATE_NORMAL] = PlayerAvatarTransition_Normal,
|
||||
[PLAYER_AVATAR_STATE_MACH_BIKE] = PlayerAvatarTransition_Bike,
|
||||
[PLAYER_AVATAR_STATE_ACRO_BIKE] = PlayerAvatarTransition_Bike,
|
||||
[PLAYER_AVATAR_STATE_SURFING] = PlayerAvatarTransition_Surfing,
|
||||
[PLAYER_AVATAR_STATE_UNDERWATER] = PlayerAvatarTransition_Underwater,
|
||||
[PLAYER_AVATAR_STATE_FIELD_MOVE] = PlayerAvatarTransition_ReturnToField,
|
||||
[PLAYER_AVATAR_STATE_FISHING] = PlayerAvatarTransition_Dummy,
|
||||
[PLAYER_AVATAR_STATE_WATERING] = PlayerAvatarTransition_Dummy
|
||||
static void (*const sPlayerAvatarTransitionFuncs[])(struct ObjectEvent *) = {
|
||||
[PLAYER_AVATAR_STATE_NORMAL] = PlayerAvatarTransition_Normal,
|
||||
[PLAYER_AVATAR_STATE_MACH_BIKE] = PlayerAvatarTransition_Bike,
|
||||
[PLAYER_AVATAR_STATE_ACRO_BIKE] = PlayerAvatarTransition_Bike,
|
||||
[PLAYER_AVATAR_STATE_SURFING] = PlayerAvatarTransition_Surfing,
|
||||
[PLAYER_AVATAR_STATE_UNDERWATER] = PlayerAvatarTransition_Underwater,
|
||||
[PLAYER_AVATAR_STATE_CONTROLLABLE] = PlayerAvatarTransition_ReturnToField,
|
||||
[PLAYER_AVATAR_STATE_FORCED] = PlayerAvatarTransition_Dummy,
|
||||
[PLAYER_AVATAR_STATE_DASH] = PlayerAvatarTransition_Dummy
|
||||
};
|
||||
|
||||
static void DoPlayerAvatarTransition(void)
|
||||
@@ -695,10 +696,10 @@ static void DoPlayerAvatarTransition(void)
|
||||
|
||||
if (flags != 0)
|
||||
{
|
||||
for (i = 0; i < NELEMS(gUnknown_835B844); i++, flags >>= 1)
|
||||
for (i = 0; i < NELEMS(sPlayerAvatarTransitionFuncs); i++, flags >>= 1)
|
||||
{
|
||||
if (flags & 1)
|
||||
gUnknown_835B844[i](&gObjectEvents[gPlayerAvatar.objectEventId]);
|
||||
sPlayerAvatarTransitionFuncs[i](&gObjectEvents[gPlayerAvatar.objectEventId]);
|
||||
}
|
||||
gPlayerAvatar.transitionFlags = 0;
|
||||
}
|
||||
@@ -711,21 +712,21 @@ static void PlayerAvatarTransition_Dummy(struct ObjectEvent * playerObjEvent)
|
||||
|
||||
static void PlayerAvatarTransition_Normal(struct ObjectEvent * playerObjEvent)
|
||||
{
|
||||
sub_8150474(0);
|
||||
sub_8150498(0);
|
||||
QuestLogTryRecordPlayerAvatarGfxTransition(QL_PLAYER_GFX_NORMAL);
|
||||
QuestLogCallUpdatePlayerSprite(QL_PLAYER_GFX_NORMAL);
|
||||
}
|
||||
|
||||
static void PlayerAvatarTransition_Bike(struct ObjectEvent * playerObjEvent)
|
||||
{
|
||||
sub_8150474(1);
|
||||
sub_8150498(1);
|
||||
QuestLogTryRecordPlayerAvatarGfxTransition(QL_PLAYER_GFX_BIKE);
|
||||
QuestLogCallUpdatePlayerSprite(QL_PLAYER_GFX_BIKE);
|
||||
InitPlayerAvatarBikeState(0, 0);
|
||||
}
|
||||
|
||||
static void PlayerAvatarTransition_Surfing(struct ObjectEvent * playerObjEvent)
|
||||
{
|
||||
sub_8150474(3);
|
||||
sub_8150498(3);
|
||||
QuestLogTryRecordPlayerAvatarGfxTransition(QL_PLAYER_GFX_SURF);
|
||||
QuestLogCallUpdatePlayerSprite(QL_PLAYER_GFX_SURF);
|
||||
}
|
||||
|
||||
static void PlayerAvatarTransition_Underwater(struct ObjectEvent * playerObjEvent)
|
||||
@@ -735,28 +736,28 @@ static void PlayerAvatarTransition_Underwater(struct ObjectEvent * playerObjEven
|
||||
|
||||
static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent * playerObjEvent)
|
||||
{
|
||||
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_FIELD_MOVE;
|
||||
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_CONTROLLABLE;
|
||||
}
|
||||
|
||||
void sub_805BEB8(void)
|
||||
void UpdatePlayerAvatarTransitionState(void)
|
||||
{
|
||||
gPlayerAvatar.tileTransitionState = T_NOT_MOVING;
|
||||
if (PlayerIsAnimActive())
|
||||
{
|
||||
if (!PlayerCheckIfAnimFinishedOrInactive())
|
||||
{
|
||||
if (!player_is_anim_in_certain_ranges())
|
||||
if (!PlayerAnimIsMultiFrameStationary())
|
||||
gPlayerAvatar.tileTransitionState = T_TILE_TRANSITION;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!sub_805BF58())
|
||||
if (!PlayerAnimIsMultiFrameStationaryAndStateNotTurning())
|
||||
gPlayerAvatar.tileTransitionState = T_TILE_CENTER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 player_is_anim_in_certain_ranges(void)
|
||||
static bool8 PlayerAnimIsMultiFrameStationary(void)
|
||||
{
|
||||
u8 movementActionId = gObjectEvents[gPlayerAvatar.objectEventId].movementActionId;
|
||||
|
||||
@@ -770,9 +771,9 @@ static bool8 player_is_anim_in_certain_ranges(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_805BF58(void)
|
||||
static bool8 PlayerAnimIsMultiFrameStationaryAndStateNotTurning(void)
|
||||
{
|
||||
if (player_is_anim_in_certain_ranges() && gPlayerAvatar.runningState != TURN_DIRECTION)
|
||||
if (PlayerAnimIsMultiFrameStationary() && gPlayerAvatar.runningState != TURN_DIRECTION)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -809,25 +810,25 @@ static void PlayerSetAnimId(u8 movementActionId, u8 copyableMovement)
|
||||
{
|
||||
PlayerSetCopyableMovement(copyableMovement);
|
||||
if (!ObjectEventSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], movementActionId))
|
||||
sub_8112628(movementActionId);
|
||||
QuestLogRecordPlayerStep(movementActionId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_805C06C(struct ObjectEvent * objectEvent, u8 movementAction)
|
||||
static void QL_TryRecordPlayerStepWithDuration0(struct ObjectEvent * objectEvent, u8 movementAction)
|
||||
{
|
||||
if (!ObjectEventSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], movementAction))
|
||||
sub_81126AC(movementAction, 0);
|
||||
QuestLogRecordPlayerStepWithDuration(movementAction, 0);
|
||||
}
|
||||
|
||||
static void sub_805C0A4(struct ObjectEvent * objectEvent, u8 movementAction)
|
||||
static void QL_TryRecordNPCStepWithDuration32(struct ObjectEvent * objectEvent, u8 movementAction)
|
||||
{
|
||||
if (!ObjectEventSetHeldMovement(objectEvent, movementAction))
|
||||
sub_8112588(objectEvent->localId, objectEvent->mapNum, objectEvent->mapGroup, movementAction, 32);
|
||||
QuestLogRecordNPCStepWithDuration(objectEvent->localId, objectEvent->mapNum, objectEvent->mapGroup, movementAction, 32);
|
||||
}
|
||||
|
||||
void sub_805C0D4(u8 direction)
|
||||
void PlayerGoSlowest(u8 direction)
|
||||
{
|
||||
PlayerSetAnimId(sub_8063F2C(direction), 2);
|
||||
PlayerSetAnimId(GetWalkSlowestMovementAction(direction), 2);
|
||||
}
|
||||
|
||||
void PlayerGoSlow(u8 direction)
|
||||
@@ -919,17 +920,17 @@ void HandleEnforcedLookDirectionOnPlayerStopMoving(void)
|
||||
|
||||
static void PlayerGoSpin(u8 direction)
|
||||
{
|
||||
PlayerSetAnimId(sub_80640E4(direction), 3);
|
||||
PlayerSetAnimId(GetSpinMovementAction(direction), 3);
|
||||
}
|
||||
|
||||
static void sub_805C2CC(u8 metatileBehavior)
|
||||
static void PlayerApplyTileForcedMovement(u8 metatileBehavior)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; sForcedMovementFuncs[i].unk0 != NULL; i++)
|
||||
for (i = 0; sForcedMovementFuncs[i].check != NULL; i++)
|
||||
{
|
||||
if (sForcedMovementFuncs[i].unk0(metatileBehavior))
|
||||
sForcedMovementFuncs[i].unk4();
|
||||
if (sForcedMovementFuncs[i].check(metatileBehavior))
|
||||
sForcedMovementFuncs[i].apply();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -978,12 +979,12 @@ static void PlayerAcroWheelieCollide(u8 direction)
|
||||
PlayerSetAnimId(GetAcroWheelieInPlaceDirectionMovementAction(direction), 2);
|
||||
}
|
||||
|
||||
static void sub_805C408(u8 direction)
|
||||
static void PlayerAcroPopWheelie(u8 direction)
|
||||
{
|
||||
PlayerSetAnimId(GetAcroPopWheelieMoveDirectionMovementAction(direction), 2);
|
||||
}
|
||||
|
||||
static void sub_805C420(u8 direction)
|
||||
static void PlayerAcroWheelieMove(u8 direction)
|
||||
{
|
||||
PlayerSetAnimId(GetAcroWheelieMoveDirectionMovementAction(direction), 2);
|
||||
}
|
||||
@@ -1107,7 +1108,7 @@ u8 GetPlayerAvatarObjectId(void)
|
||||
return gPlayerAvatar.spriteId;
|
||||
}
|
||||
|
||||
void sub_805C774(void)
|
||||
void CancelPlayerForcedMovement(void)
|
||||
{
|
||||
ForcedMovement_None();
|
||||
}
|
||||
@@ -1126,12 +1127,12 @@ void StopPlayerAvatar(void)
|
||||
}
|
||||
|
||||
static const u8 sPlayerAvatarGfxIds[][GENDER_COUNT] = {
|
||||
{OBJ_EVENT_GFX_RED_NORMAL, OBJ_EVENT_GFX_GREEN_NORMAL},
|
||||
{OBJ_EVENT_GFX_RED_BIKE, OBJ_EVENT_GFX_GREEN_BIKE},
|
||||
{OBJ_EVENT_GFX_RED_SURF, OBJ_EVENT_GFX_GREEN_SURF},
|
||||
{OBJ_EVENT_GFX_RED_ITEM, OBJ_EVENT_GFX_GREEN_ITEM},
|
||||
{OBJ_EVENT_GFX_RED_FISH, OBJ_EVENT_GFX_GREEN_FISH},
|
||||
{OBJ_EVENT_GFX_RED_VS_SEEKER, OBJ_EVENT_GFX_GREEN_VS_SEEKER},
|
||||
[PLAYER_AVATAR_GFX_NORMAL] = {OBJ_EVENT_GFX_RED_NORMAL, OBJ_EVENT_GFX_GREEN_NORMAL},
|
||||
[PLAYER_AVATAR_GFX_BIKE] = {OBJ_EVENT_GFX_RED_BIKE, OBJ_EVENT_GFX_GREEN_BIKE},
|
||||
[PLAYER_AVATAR_GFX_RIDE] = {OBJ_EVENT_GFX_RED_SURF, OBJ_EVENT_GFX_GREEN_SURF},
|
||||
[PLAYER_AVATAR_GFX_FIELD_MOVE] = {OBJ_EVENT_GFX_RED_FIELD_MOVE, OBJ_EVENT_GFX_GREEN_FIELD_MOVE},
|
||||
[PLAYER_AVATAR_GFX_FISH] = {OBJ_EVENT_GFX_RED_FISH, OBJ_EVENT_GFX_GREEN_FISH},
|
||||
[PLAYER_AVATAR_GFX_VSSEEKER] = {OBJ_EVENT_GFX_RED_VS_SEEKER, OBJ_EVENT_GFX_GREEN_VS_SEEKER},
|
||||
};
|
||||
|
||||
static const u8 sHoennLinkPartnerGfxIds[] = {
|
||||
@@ -1166,7 +1167,7 @@ u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId)
|
||||
case OBJ_EVENT_GFX_GREEN_NORMAL:
|
||||
case OBJ_EVENT_GFX_GREEN_BIKE:
|
||||
case OBJ_EVENT_GFX_GREEN_SURF:
|
||||
case OBJ_EVENT_GFX_GREEN_ITEM:
|
||||
case OBJ_EVENT_GFX_GREEN_FIELD_MOVE:
|
||||
case OBJ_EVENT_GFX_GREEN_FISH:
|
||||
return FEMALE;
|
||||
default:
|
||||
@@ -1226,7 +1227,7 @@ void ClearPlayerAvatarInfo(void)
|
||||
|
||||
void SetPlayerAvatarStateMask(u8 flags)
|
||||
{
|
||||
gPlayerAvatar.flags &= (PLAYER_AVATAR_FLAG_DASH | PLAYER_AVATAR_FLAG_FISHING | PLAYER_AVATAR_FLAG_FIELD_MOVE);
|
||||
gPlayerAvatar.flags &= (PLAYER_AVATAR_FLAG_DASH | PLAYER_AVATAR_FLAG_FORCED | PLAYER_AVATAR_FLAG_CONTROLLABLE);
|
||||
gPlayerAvatar.flags |= flags;
|
||||
}
|
||||
|
||||
@@ -1258,21 +1259,21 @@ u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender)
|
||||
u8 GetPlayerAvatarGraphicsIdByCurrentState(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 r5 = gPlayerAvatar.flags;
|
||||
u8 flags = gPlayerAvatar.flags;
|
||||
|
||||
for (i = 0; i < NELEMS(*sPlayerAvatarGfxToStateFlag); i++)
|
||||
{
|
||||
if (sPlayerAvatarGfxToStateFlag[gPlayerAvatar.gender][i][1] & r5)
|
||||
if (sPlayerAvatarGfxToStateFlag[gPlayerAvatar.gender][i][1] & flags)
|
||||
return sPlayerAvatarGfxToStateFlag[gPlayerAvatar.gender][i][0];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 b)
|
||||
void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 extras)
|
||||
{
|
||||
u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender);
|
||||
|
||||
gPlayerAvatar.transitionFlags |= unk | b;
|
||||
gPlayerAvatar.transitionFlags |= unk | extras;
|
||||
DoPlayerAvatarTransition();
|
||||
}
|
||||
|
||||
@@ -1283,7 +1284,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
|
||||
struct ObjectEvent *objectEvent;
|
||||
|
||||
playerObjEventTemplate.localId = OBJ_EVENT_ID_PLAYER;
|
||||
playerObjEventTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, gender);
|
||||
playerObjEventTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_GFX_NORMAL, gender);
|
||||
playerObjEventTemplate.x = x - 7;
|
||||
playerObjEventTemplate.y = y - 7;
|
||||
playerObjEventTemplate.elevation = 0;
|
||||
@@ -1305,7 +1306,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
|
||||
gPlayerAvatar.objectEventId = objectEventId;
|
||||
gPlayerAvatar.spriteId = objectEvent->spriteId;
|
||||
gPlayerAvatar.gender = gender;
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_FIELD_MOVE | PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
}
|
||||
|
||||
void SetPlayerInvisibility(bool8 invisible)
|
||||
@@ -1315,34 +1316,34 @@ void SetPlayerInvisibility(bool8 invisible)
|
||||
gSprites[gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId].invisible = invisible;
|
||||
}
|
||||
|
||||
void sub_805CB70(void)
|
||||
void StartPlayerAvatarSummonMonForFieldMoveAnim(void)
|
||||
{
|
||||
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
|
||||
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_FIELD_MOVE));
|
||||
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0);
|
||||
}
|
||||
|
||||
static const u8 gUnknown_835B88E[] = {
|
||||
static const u8 sPlayerAvatarVsSeekerBikeGfxIds[] = {
|
||||
OBJ_EVENT_GFX_RED_VS_SEEKER_BIKE,
|
||||
OBJ_EVENT_GFX_GREEN_VS_SEEKER_BIKE
|
||||
};
|
||||
|
||||
u8 sub_805CBB8(void)
|
||||
u8 GetPlayerAvatarVsSeekerGfxId(void)
|
||||
{
|
||||
if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
|
||||
return gUnknown_835B88E[gPlayerAvatar.gender];
|
||||
return sPlayerAvatarVsSeekerBikeGfxIds[gPlayerAvatar.gender];
|
||||
else
|
||||
return GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FIELD_MOVE);
|
||||
return GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_VSSEEKER);
|
||||
}
|
||||
|
||||
void sub_805CBE8(void)
|
||||
void StartPlayerAvatarVsSeekerAnim(void)
|
||||
{
|
||||
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], sub_805CBB8());
|
||||
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarVsSeekerGfxId());
|
||||
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0);
|
||||
}
|
||||
|
||||
void sub_805CC2C(u8 direction)
|
||||
void StartPlayerAvatarFishAnim(u8 direction)
|
||||
{
|
||||
sub_8150498(2);
|
||||
QuestLogCallUpdatePlayerSprite(QL_PLAYER_GFX_FISH);
|
||||
}
|
||||
|
||||
void nullsub_24(u8 direction)
|
||||
@@ -1362,7 +1363,7 @@ static bool8 (*const sArrowWarpMetatileBehaviorChecks2[])(u8) = {
|
||||
MetatileBehavior_IsEastArrowWarp
|
||||
};
|
||||
|
||||
static void sub_805CC40(struct ObjectEvent *objectEvent)
|
||||
static void HandleWarpArrowSpriteHideShow(struct ObjectEvent *objectEvent)
|
||||
{
|
||||
s16 x;
|
||||
s16 y;
|
||||
@@ -1383,10 +1384,10 @@ static void sub_805CC40(struct ObjectEvent *objectEvent)
|
||||
SetSpriteInvisible(objectEvent->warpArrowSpriteId);
|
||||
}
|
||||
|
||||
static bool8 (*const gUnknown_835B8A0[])(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj) = {
|
||||
sub_805CD64,
|
||||
do_boulder_dust,
|
||||
sub_805CE20
|
||||
static bool8 (*const sBoulderTaskSteps[])(struct Task * task, struct ObjectEvent * playerObj, struct ObjectEvent * boulderObj) = {
|
||||
DoBoulderInit,
|
||||
DoBoulderDust,
|
||||
DoBoulderFinish
|
||||
};
|
||||
|
||||
static void StartStrengthAnim(u8 a, u8 b)
|
||||
@@ -1400,13 +1401,13 @@ static void StartStrengthAnim(u8 a, u8 b)
|
||||
|
||||
static void Task_BumpBoulder(u8 taskId)
|
||||
{
|
||||
while (gUnknown_835B8A0[gTasks[taskId].data[0]](&gTasks[taskId],
|
||||
while (sBoulderTaskSteps[gTasks[taskId].data[0]](&gTasks[taskId],
|
||||
&gObjectEvents[gPlayerAvatar.objectEventId],
|
||||
&gObjectEvents[gTasks[taskId].data[1]]))
|
||||
;
|
||||
}
|
||||
|
||||
static bool8 sub_805CD64(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||
static bool8 DoBoulderInit(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
@@ -1414,15 +1415,15 @@ static bool8 sub_805CD64(struct Task *task, struct ObjectEvent *playerObject, st
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 do_boulder_dust(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||
static bool8 DoBoulderDust(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||
{
|
||||
if (!ObjectEventIsMovementOverridden(playerObject)
|
||||
&& !ObjectEventIsMovementOverridden(strengthObject))
|
||||
{
|
||||
ObjectEventClearHeldMovementIfFinished(playerObject);
|
||||
ObjectEventClearHeldMovementIfFinished(strengthObject);
|
||||
sub_805C06C(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2]));
|
||||
sub_805C0A4(strengthObject, sub_8063F2C((u8)task->data[2]));
|
||||
QL_TryRecordPlayerStepWithDuration0(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2]));
|
||||
QL_TryRecordNPCStepWithDuration32(strengthObject, GetWalkSlowestMovementAction((u8)task->data[2]));
|
||||
gFieldEffectArguments[0] = strengthObject->currentCoords.x;
|
||||
gFieldEffectArguments[1] = strengthObject->currentCoords.y;
|
||||
gFieldEffectArguments[2] = strengthObject->previousElevation;
|
||||
@@ -1434,7 +1435,7 @@ static bool8 do_boulder_dust(struct Task *task, struct ObjectEvent *playerObject
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_805CE20(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||
static bool8 DoBoulderFinish(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject)
|
||||
{
|
||||
if (ObjectEventCheckHeldMovementStatus(playerObject)
|
||||
&& ObjectEventCheckHeldMovementStatus(strengthObject))
|
||||
@@ -1472,12 +1473,12 @@ static bool8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct ObjectEv
|
||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
PlaySE(SE_LEDGE);
|
||||
sub_805C06C(objectEvent, GetJumpInPlaceMovementAction(objectEvent->facingDirection));
|
||||
QL_TryRecordPlayerStepWithDuration0(objectEvent, GetJumpInPlaceMovementAction(objectEvent->facingDirection));
|
||||
task->data[1]++;
|
||||
if (task->data[1] > 1)
|
||||
{
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
gPlayerAvatar.transitionFlags |= PLAYER_AVATAR_FLAG_FIELD_MOVE;
|
||||
gPlayerAvatar.transitionFlags |= PLAYER_AVATAR_FLAG_CONTROLLABLE;
|
||||
DestroyTask(FindTaskIdByFunc(DoPlayerAvatarSecretBaseMatJump));
|
||||
}
|
||||
}
|
||||
@@ -1522,7 +1523,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct Objec
|
||||
{
|
||||
u8 direction;
|
||||
|
||||
sub_805C06C(objectEvent, GetFaceDirectionMovementAction(direction = directions[objectEvent->movementDirection - 1]));
|
||||
QL_TryRecordPlayerStepWithDuration0(objectEvent, GetFaceDirectionMovementAction(direction = directions[objectEvent->movementDirection - 1]));
|
||||
if (direction == (u8)task->data[1])
|
||||
task->data[2]++;
|
||||
task->data[0]++;
|
||||
@@ -1544,7 +1545,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct Objec
|
||||
|
||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
sub_805C06C(objectEvent, actions[task->data[2]]);
|
||||
QL_TryRecordPlayerStepWithDuration0(objectEvent, actions[task->data[2]]);
|
||||
task->data[0] = 1;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -1554,7 +1555,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct Objec
|
||||
{
|
||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
sub_805C06C(objectEvent, sub_8063F2C(GetOppositeDirection(task->data[1])));
|
||||
QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowestMovementAction(GetOppositeDirection(task->data[1])));
|
||||
ScriptContext2_Disable();
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin));
|
||||
@@ -1596,7 +1597,7 @@ void SeafoamIslandsB4F_CurrentDumpsPlayerOnLand(void)
|
||||
{
|
||||
if (gQuestLogPlaybackState != 1 && gQuestLogPlaybackState != 3)
|
||||
{
|
||||
sub_811278C(gUnknown_835B820[DIR_NORTH], 16);
|
||||
QuestLogRecordPlayerAvatarGfxTransitionWithDuration(sQuestLogSurfDismountActionIds[DIR_NORTH], 16);
|
||||
CreateStopSurfingTask(DIR_NORTH);
|
||||
}
|
||||
}
|
||||
@@ -1611,7 +1612,7 @@ static void Task_StopSurfingInit(u8 taskId)
|
||||
return;
|
||||
}
|
||||
sub_80DC44C(playerObjEvent->fieldEffectSpriteId, 2);
|
||||
sub_805C06C(playerObjEvent, sub_80641EC((u8)gTasks[taskId].data[0]));
|
||||
QL_TryRecordPlayerStepWithDuration0(playerObjEvent, sub_80641EC((u8)gTasks[taskId].data[0]));
|
||||
gTasks[taskId].func = Task_WaitStopSurfing;
|
||||
}
|
||||
|
||||
@@ -1621,8 +1622,8 @@ static void Task_WaitStopSurfing(u8 taskId)
|
||||
|
||||
if (ObjectEventClearHeldMovementIfFinished(playerObjEvent))
|
||||
{
|
||||
ObjectEventSetGraphicsId(playerObjEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_NORMAL));
|
||||
sub_805C06C(playerObjEvent, GetFaceDirectionMovementAction(playerObjEvent->facingDirection));
|
||||
ObjectEventSetGraphicsId(playerObjEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_NORMAL));
|
||||
QL_TryRecordPlayerStepWithDuration0(playerObjEvent, GetFaceDirectionMovementAction(playerObjEvent->facingDirection));
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
ScriptContext2_Disable();
|
||||
UnfreezeObjectEvents();
|
||||
@@ -1674,8 +1675,8 @@ void StartFishing(u8 rod)
|
||||
|
||||
gTasks[taskId].tFishingRod = rod;
|
||||
Task_Fishing(taskId);
|
||||
if (sub_8150474(2) == TRUE)
|
||||
sub_8112C9C();
|
||||
if (QuestLogTryRecordPlayerAvatarGfxTransition(QL_PLAYER_GFX_FISH) == TRUE)
|
||||
QL_AfterRecordFishActionSuccessful();
|
||||
}
|
||||
|
||||
|
||||
@@ -1705,7 +1706,7 @@ static bool8 Fishing2(struct Task *task)
|
||||
playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
ObjectEventClearHeldMovementIfActive(playerObjEvent);
|
||||
playerObjEvent->enableAnim = 1;
|
||||
sub_805CC2C(playerObjEvent->facingDirection);
|
||||
StartPlayerAvatarFishAnim(playerObjEvent->facingDirection);
|
||||
task->tStep++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ static void FaintFromFieldPoison(u8 partyIdx)
|
||||
{
|
||||
struct Pokemon *pokemon = gPlayerParty + partyIdx;
|
||||
u32 status = STATUS1_NONE;
|
||||
AdjustFriendship(pokemon, 8);
|
||||
AdjustFriendship(pokemon, FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE);
|
||||
SetMonData(pokemon, MON_DATA_STATUS, &status);
|
||||
GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
|
||||
StringGetEnd10(gStringVar1);
|
||||
|
||||
+54
-52
@@ -109,9 +109,9 @@ void ResetCyclingRoadChallengeData(void)
|
||||
|
||||
u8 GetPlayerAvatarBike(void)
|
||||
{
|
||||
if (TestPlayerAvatarFlags(4))
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
|
||||
return 1;
|
||||
else if (TestPlayerAvatarFlags(2))
|
||||
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
|
||||
return 2;
|
||||
else
|
||||
return 0;
|
||||
@@ -1800,10 +1800,10 @@ void SetUsedPkmnCenterQuestLogEvent(void)
|
||||
}
|
||||
|
||||
static const struct {
|
||||
u16 grp;
|
||||
u16 num;
|
||||
u16 grp2;
|
||||
u16 num2;
|
||||
u16 inside_grp;
|
||||
u16 inside_num;
|
||||
u16 outside_grp;
|
||||
u16 outside_num;
|
||||
} sInsideOutsidePairs[51] = {
|
||||
[QL_LOCATION_HOME] = {MAP(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP(PALLET_TOWN)},
|
||||
[QL_LOCATION_OAKS_LAB] = {MAP(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP(PALLET_TOWN)},
|
||||
@@ -1858,85 +1858,87 @@ static const struct {
|
||||
[QL_LOCATION_CERULEAN_CAVE] = {MAP(CERULEAN_CAVE_1F), MAP(CERULEAN_CITY)}
|
||||
};
|
||||
|
||||
void sub_80CC534(void)
|
||||
void QuestLog_CheckDepartingIndoorsMap(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < NELEMS(sInsideOutsidePairs); i++)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[i].grp && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[i].num)
|
||||
if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[i].inside_grp && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[i].inside_num)
|
||||
{
|
||||
if (VarGet(VAR_0x404D) != QL_LOCATION_ROCKET_HIDEOUT || i != QL_LOCATION_GAME_CORNER)
|
||||
if (VarGet(VAR_QL_ENTRANCE) != QL_LOCATION_ROCKET_HIDEOUT || i != QL_LOCATION_GAME_CORNER)
|
||||
{
|
||||
VarSet(VAR_0x404D, i);
|
||||
FlagSet(FLAG_0x808);
|
||||
VarSet(VAR_QL_ENTRANCE, i);
|
||||
FlagSet(FLAG_SYS_QL_DEPARTED);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80CC59C(void)
|
||||
struct QuestLogDepartedData {
|
||||
u8 map_section_id;
|
||||
u8 entrance_id;
|
||||
};
|
||||
|
||||
void QuestLog_TryRecordDepartedLocation(void)
|
||||
{
|
||||
s16 x, y;
|
||||
struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
} sp0;
|
||||
u16 r5 = VarGet(VAR_0x404D);
|
||||
sp0.unk0 = 0;
|
||||
sp0.unk1 = 0;
|
||||
if (FlagGet(FLAG_0x808))
|
||||
struct QuestLogDepartedData event_buffer;
|
||||
u16 ql_entrance_id = VarGet(VAR_QL_ENTRANCE);
|
||||
event_buffer.map_section_id = 0;
|
||||
event_buffer.entrance_id = 0;
|
||||
if (FlagGet(FLAG_SYS_QL_DEPARTED))
|
||||
{
|
||||
if (r5 == QL_LOCATION_VIRIDIAN_FOREST_1)
|
||||
if (ql_entrance_id == QL_LOCATION_VIRIDIAN_FOREST_1)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE)))
|
||||
{
|
||||
sp0.unk0 = MAPSEC_ROUTE_2;
|
||||
event_buffer.map_section_id = MAPSEC_ROUTE_2;
|
||||
if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE))
|
||||
sp0.unk1 = r5;
|
||||
event_buffer.entrance_id = ql_entrance_id;
|
||||
else
|
||||
sp0.unk1 = r5 + 1;
|
||||
SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&sp0);
|
||||
FlagClear(FLAG_0x808);
|
||||
event_buffer.entrance_id = ql_entrance_id + 1;
|
||||
SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&event_buffer);
|
||||
FlagClear(FLAG_SYS_QL_DEPARTED);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (r5 == QL_LOCATION_LEAGUE_GATE_1)
|
||||
else if (ql_entrance_id == QL_LOCATION_LEAGUE_GATE_1)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE22) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE23)))
|
||||
{
|
||||
sp0.unk0 = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId;
|
||||
event_buffer.map_section_id = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[ql_entrance_id].inside_grp, sInsideOutsidePairs[ql_entrance_id].inside_num)->regionMapSectionId;
|
||||
if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22))
|
||||
sp0.unk1 = r5;
|
||||
event_buffer.entrance_id = ql_entrance_id;
|
||||
else
|
||||
sp0.unk1 = r5 + 1;
|
||||
SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&sp0);
|
||||
FlagClear(FLAG_0x808);
|
||||
event_buffer.entrance_id = ql_entrance_id + 1;
|
||||
SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&event_buffer);
|
||||
FlagClear(FLAG_SYS_QL_DEPARTED);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[r5].grp2 && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[r5].num2)
|
||||
if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[ql_entrance_id].outside_grp && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[ql_entrance_id].outside_num)
|
||||
{
|
||||
sp0.unk0 = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId;
|
||||
sp0.unk1 = r5;
|
||||
if (r5 == QL_LOCATION_ROCK_TUNNEL_1)
|
||||
event_buffer.map_section_id = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[ql_entrance_id].inside_grp, sInsideOutsidePairs[ql_entrance_id].inside_num)->regionMapSectionId;
|
||||
event_buffer.entrance_id = ql_entrance_id;
|
||||
if (ql_entrance_id == QL_LOCATION_ROCK_TUNNEL_1)
|
||||
{
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != 15 || y != 26)
|
||||
sp0.unk1++;
|
||||
event_buffer.entrance_id++;
|
||||
}
|
||||
else if (r5 == QL_LOCATION_SEAFOAM_ISLANDS_1)
|
||||
else if (ql_entrance_id == QL_LOCATION_SEAFOAM_ISLANDS_1)
|
||||
{
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != 67 || y != 15)
|
||||
sp0.unk1++;
|
||||
event_buffer.entrance_id++;
|
||||
}
|
||||
SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&sp0);
|
||||
FlagClear(FLAG_0x808);
|
||||
if (r5 == QL_LOCATION_ROCKET_HIDEOUT)
|
||||
SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&event_buffer);
|
||||
FlagClear(FLAG_SYS_QL_DEPARTED);
|
||||
if (ql_entrance_id == QL_LOCATION_ROCKET_HIDEOUT)
|
||||
{
|
||||
VarSet(VAR_0x404D, QL_LOCATION_GAME_CORNER);
|
||||
FlagSet(FLAG_0x808);
|
||||
VarSet(VAR_QL_ENTRANCE, QL_LOCATION_GAME_CORNER);
|
||||
FlagSet(FLAG_SYS_QL_DEPARTED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2064,7 +2066,7 @@ void RunMassageCooldownStepCounter(void)
|
||||
|
||||
void DaisyMassageServices(void)
|
||||
{
|
||||
AdjustFriendship(&gPlayerParty[gSpecialVar_0x8004], 6);
|
||||
AdjustFriendship(&gPlayerParty[gSpecialVar_0x8004], FRIENDSHIP_EVENT_MASSAGE);
|
||||
VarSet(VAR_MASSAGE_COOLDOWN_STEP_COUNTER, 0);
|
||||
}
|
||||
|
||||
@@ -2143,7 +2145,7 @@ void DoPokemonLeagueLightingEffect(void)
|
||||
LoadPalette(sEliteFourLightingPalettes[0], 0x70, 0x20);
|
||||
}
|
||||
data[1] = 0;
|
||||
sub_8059948(7, 1);
|
||||
Fieldmap_ApplyGlobalTintToPaletteSlot(7, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2153,7 +2155,7 @@ static void Task_RunPokemonLeagueLightingEffect(u8 taskId)
|
||||
if (!gPaletteFade.active
|
||||
&& FlagGet(FLAG_TEMP_2) != FALSE
|
||||
&& FlagGet(FLAG_TEMP_5) != TRUE
|
||||
&& gUnknown_2036E28 != 3
|
||||
&& gGlobalFieldTintMode != QL_TINT_BACKUP_GRAYSCALE
|
||||
&& --data[0] == 0
|
||||
)
|
||||
{
|
||||
@@ -2170,7 +2172,7 @@ static void Task_RunPokemonLeagueLightingEffect(u8 taskId)
|
||||
data[0] = sEliteFourLightingTimers[data[1]];
|
||||
LoadPalette(sEliteFourLightingPalettes[data[1]], 0x70, 0x20);
|
||||
}
|
||||
sub_8059948(7, 1);
|
||||
Fieldmap_ApplyGlobalTintToPaletteSlot(7, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2187,7 +2189,7 @@ static void Task_CancelPokemonLeagueLightingEffect(u8 taskId)
|
||||
{
|
||||
LoadPalette(sEliteFourLightingPalettes[11], 0x70, 0x20);
|
||||
}
|
||||
sub_8059948(7, 1);
|
||||
Fieldmap_ApplyGlobalTintToPaletteSlot(7, 1);
|
||||
if (gPaletteFade.active)
|
||||
{
|
||||
BlendPalettes(0x00000080, 16, RGB_BLACK);
|
||||
@@ -2400,7 +2402,7 @@ static void MoveDeoxysObject(u8 num)
|
||||
{
|
||||
u8 mapObjId;
|
||||
LoadPalette(sDeoxysObjectPals[num], 0x1A0, 0x08);
|
||||
sub_8083598(10);
|
||||
ApplyGlobalFieldPaletteTint(10);
|
||||
TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjId);
|
||||
if (num == 0)
|
||||
PlaySE(SE_M_CONFUSE_RAY);
|
||||
@@ -2446,7 +2448,7 @@ void SetDeoxysTrianglePalette(void)
|
||||
{
|
||||
u8 num = VarGet(VAR_DEOXYS_INTERACTION_NUM);
|
||||
LoadPalette(sDeoxysObjectPals[num], 0x1A0, 0x08);
|
||||
sub_8083598(10);
|
||||
ApplyGlobalFieldPaletteTint(10);
|
||||
}
|
||||
|
||||
bool8 IsBadEggInParty(void)
|
||||
@@ -2481,7 +2483,7 @@ void BrailleCursorToggle(void)
|
||||
if (gSpecialVar_0x8006 == 0)
|
||||
sBrailleTextCursorSpriteID = CreateTextCursorSpriteForOakSpeech(0, x, gSpecialVar_0x8005, 0, 0);
|
||||
else
|
||||
sub_8006398(sBrailleTextCursorSpriteID);
|
||||
DestroyTextCursorSprite(sBrailleTextCursorSpriteID);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+51
-48
@@ -43,7 +43,7 @@ struct WeatherCallbacks
|
||||
static EWRAM_DATA struct Weather sWeather = {};
|
||||
static EWRAM_DATA u8 sFieldEffectPaletteGammaTypes[32] = {};
|
||||
static EWRAM_DATA const u8 *sPaletteGammaTypes = NULL;
|
||||
static EWRAM_DATA u16 gUnknown_20386A8 = 0;
|
||||
static EWRAM_DATA u16 sDroughtFrameDelay = 0;
|
||||
|
||||
static void Task_WeatherMain(u8 taskId);
|
||||
static void Task_WeatherInit(u8 taskId);
|
||||
@@ -127,7 +127,7 @@ static const u8 sBasePaletteGammaTypes[32] = {
|
||||
GAMMA_NORMAL,
|
||||
};
|
||||
|
||||
const u16 gUnknown_83C2CE0[] = INCBIN_U16("graphics/field_effects/unk_83C2CE0.gbapal");
|
||||
const u16 gDefaultWeatherSpritePalette[] = INCBIN_U16("graphics/weather/default.gbapal");
|
||||
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");
|
||||
@@ -146,8 +146,8 @@ void StartWeather(void)
|
||||
if (!FuncIsActiveTask(Task_WeatherMain))
|
||||
{
|
||||
u8 index = AllocSpritePalette(0x1200);
|
||||
CpuCopy32(gUnknown_83C2CE0, &gPlttBufferUnfaded[0x100 + index * 16], 32);
|
||||
sub_8083598(index);
|
||||
CpuCopy32(gDefaultWeatherSpritePalette, &gPlttBufferUnfaded[0x100 + index * 16], 32);
|
||||
ApplyGlobalFieldPaletteTint(index);
|
||||
BuildGammaShiftTables();
|
||||
gWeatherPtr->altGammaSpritePalIndex = index;
|
||||
gWeatherPtr->weatherPicSpritePalIndex = index;
|
||||
@@ -350,8 +350,8 @@ static void UpdateWeatherGammaShift(void)
|
||||
|
||||
static void FadeInScreenWithWeather(void)
|
||||
{
|
||||
if (++gWeatherPtr->unknown_6CB > 1)
|
||||
gWeatherPtr->unknown_6CA = 0;
|
||||
if (++gWeatherPtr->fadeInCounter > 1)
|
||||
gWeatherPtr->fadeInActive = 0;
|
||||
|
||||
switch (gWeatherPtr->currWeather)
|
||||
{
|
||||
@@ -692,7 +692,7 @@ static bool8 LightenSpritePaletteInFog(u8 paletteIndex)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_807A790(s8 gammaIndex)
|
||||
void WeatherShiftGammaIfPalStateIdle(s8 gammaIndex)
|
||||
{
|
||||
if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE)
|
||||
{
|
||||
@@ -701,7 +701,7 @@ void sub_807A790(s8 gammaIndex)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay)
|
||||
void WeatherBeginGammaFade(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay)
|
||||
{
|
||||
if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE)
|
||||
{
|
||||
@@ -710,7 +710,7 @@ void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay)
|
||||
gWeatherPtr->gammaTargetIndex = gammaTargetIndex;
|
||||
gWeatherPtr->gammaStepFrameCounter = 0;
|
||||
gWeatherPtr->gammaStepDelay = gammaStepDelay;
|
||||
sub_807A790(gammaIndex);
|
||||
WeatherShiftGammaIfPalStateIdle(gammaIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -761,7 +761,7 @@ void FadeScreen(u8 mode, s8 delay)
|
||||
if (fadeOut)
|
||||
{
|
||||
if (useWeatherPal)
|
||||
CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
|
||||
CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_SIZE);
|
||||
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, delay, 0, 16, fadeColor);
|
||||
gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT;
|
||||
@@ -775,8 +775,8 @@ void FadeScreen(u8 mode, s8 delay)
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, delay, 16, 0, fadeColor);
|
||||
|
||||
gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN;
|
||||
gWeatherPtr->unknown_6CA = 1;
|
||||
gWeatherPtr->unknown_6CB = 0;
|
||||
gWeatherPtr->fadeInActive = 1;
|
||||
gWeatherPtr->fadeInCounter = 0;
|
||||
Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB);
|
||||
gWeatherPtr->readyForInit = TRUE;
|
||||
}
|
||||
@@ -843,8 +843,8 @@ void FadeSelectedPals(u8 mode, s8 delay, u32 selectedPalettes)
|
||||
BeginNormalPaletteFade(selectedPalettes, delay, 16, 0, fadeColor);
|
||||
|
||||
gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN;
|
||||
gWeatherPtr->unknown_6CA = 1;
|
||||
gWeatherPtr->unknown_6CB = 0;
|
||||
gWeatherPtr->fadeInActive = 1;
|
||||
gWeatherPtr->fadeInCounter = 0;
|
||||
Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB);
|
||||
gWeatherPtr->readyForInit = TRUE;
|
||||
}
|
||||
@@ -864,7 +864,7 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex)
|
||||
switch (gWeatherPtr->palProcessingState)
|
||||
{
|
||||
case WEATHER_PAL_STATE_SCREEN_FADING_IN:
|
||||
if (gWeatherPtr->unknown_6CA != 0)
|
||||
if (gWeatherPtr->fadeInActive != 0)
|
||||
{
|
||||
if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL)
|
||||
MarkFogSpritePalToLighten(paletteIndex);
|
||||
@@ -899,10 +899,10 @@ void ApplyWeatherGammaShiftToPal(u8 paletteIndex)
|
||||
ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex);
|
||||
}
|
||||
|
||||
static u8 sub_80ABF20(void)
|
||||
static u8 IsWeatherFadingIn(void)
|
||||
{
|
||||
if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_SCREEN_FADING_IN)
|
||||
return gWeatherPtr->unknown_6CA;
|
||||
return gWeatherPtr->fadeInActive;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
@@ -937,51 +937,54 @@ bool8 LoadDroughtWeatherPalettes(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_807AC50(s8 gammaIndex)
|
||||
static void SetDroughtGamma(s8 gammaIndex)
|
||||
{
|
||||
sub_807A790(-gammaIndex - 1);
|
||||
WeatherShiftGammaIfPalStateIdle(-gammaIndex - 1);
|
||||
}
|
||||
|
||||
void sub_807AC60(void)
|
||||
void DroughtStateInit(void)
|
||||
{
|
||||
gWeatherPtr->unknown_73C = 0;
|
||||
gWeatherPtr->unknown_740 = 0;
|
||||
gWeatherPtr->unknown_742 = 0;
|
||||
gWeatherPtr->unknown_73E = 0;
|
||||
gUnknown_20386A8 = 5;
|
||||
gWeatherPtr->droughtBrightnessStage = 0;
|
||||
gWeatherPtr->droughtTimer = 0;
|
||||
gWeatherPtr->droughtState = 0;
|
||||
gWeatherPtr->droughtLastBrightnessStage = 0;
|
||||
sDroughtFrameDelay = 5;
|
||||
}
|
||||
|
||||
void sub_807AC98(void)
|
||||
void DroughtStateRun(void)
|
||||
{
|
||||
switch (gWeatherPtr->unknown_742)
|
||||
switch (gWeatherPtr->droughtState)
|
||||
{
|
||||
case 0:
|
||||
if (++gWeatherPtr->unknown_740 > gUnknown_20386A8)
|
||||
// Ramp up
|
||||
if (++gWeatherPtr->droughtTimer > sDroughtFrameDelay)
|
||||
{
|
||||
gWeatherPtr->unknown_740 = 0;
|
||||
sub_807AC50(gWeatherPtr->unknown_73C++);
|
||||
if (gWeatherPtr->unknown_73C > 5)
|
||||
gWeatherPtr->droughtTimer = 0;
|
||||
SetDroughtGamma(gWeatherPtr->droughtBrightnessStage++);
|
||||
if (gWeatherPtr->droughtBrightnessStage > 5)
|
||||
{
|
||||
gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C;
|
||||
gWeatherPtr->unknown_742 = 1;
|
||||
gWeatherPtr->unknown_740 = 0x3C;
|
||||
gWeatherPtr->droughtLastBrightnessStage = gWeatherPtr->droughtBrightnessStage;
|
||||
gWeatherPtr->droughtState = 1;
|
||||
gWeatherPtr->droughtTimer = 60;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
gWeatherPtr->unknown_740 = (gWeatherPtr->unknown_740 + 3) & 0x7F;
|
||||
gWeatherPtr->unknown_73C = ((gSineTable[gWeatherPtr->unknown_740] - 1) >> 6) + 2;
|
||||
if (gWeatherPtr->unknown_73C != gWeatherPtr->unknown_73E)
|
||||
sub_807AC50(gWeatherPtr->unknown_73C);
|
||||
gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C;
|
||||
// Oscillate
|
||||
gWeatherPtr->droughtTimer = (gWeatherPtr->droughtTimer + 3) & 0x7F;
|
||||
gWeatherPtr->droughtBrightnessStage = ((gSineTable[gWeatherPtr->droughtTimer] - 1) >> 6) + 2;
|
||||
if (gWeatherPtr->droughtBrightnessStage != gWeatherPtr->droughtLastBrightnessStage)
|
||||
SetDroughtGamma(gWeatherPtr->droughtBrightnessStage);
|
||||
gWeatherPtr->droughtLastBrightnessStage = gWeatherPtr->droughtBrightnessStage;
|
||||
break;
|
||||
case 2:
|
||||
if (++gWeatherPtr->unknown_740 > gUnknown_20386A8)
|
||||
// Ramp down
|
||||
if (++gWeatherPtr->droughtTimer > sDroughtFrameDelay)
|
||||
{
|
||||
gWeatherPtr->unknown_740 = 0;
|
||||
sub_807AC50(--gWeatherPtr->unknown_73C);
|
||||
if (gWeatherPtr->unknown_73C == 3)
|
||||
gWeatherPtr->unknown_742 = 0;
|
||||
gWeatherPtr->droughtTimer = 0;
|
||||
SetDroughtGamma(--gWeatherPtr->droughtBrightnessStage);
|
||||
if (gWeatherPtr->droughtBrightnessStage == 3)
|
||||
gWeatherPtr->droughtState = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1042,7 +1045,7 @@ bool8 Weather_UpdateBlend(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_807AF00(u8 a)
|
||||
UNUSED static void Unused_SetWeather(u8 a)
|
||||
{
|
||||
switch (a)
|
||||
{
|
||||
@@ -1137,7 +1140,7 @@ void SetWeatherScreenFadeOut(void)
|
||||
gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT;
|
||||
}
|
||||
|
||||
void sub_807B070(void)
|
||||
void WeatherProcessingIdle(void)
|
||||
{
|
||||
gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
|
||||
}
|
||||
@@ -1154,7 +1157,7 @@ void ResetPreservedPalettesInWeather(void)
|
||||
sPaletteGammaTypes = sBasePaletteGammaTypes;
|
||||
}
|
||||
|
||||
void sub_807B0C4(u16 *palbuf, u16 *unused, u32 size)
|
||||
void SlightlyDarkenPalsInWeather(u16 *palbuf, u16 *unused, u32 size)
|
||||
{
|
||||
switch (gWeatherPtr->currWeather)
|
||||
{
|
||||
@@ -1163,7 +1166,7 @@ void sub_807B0C4(u16 *palbuf, u16 *unused, u32 size)
|
||||
case WEATHER_RAIN_THUNDERSTORM:
|
||||
case WEATHER_SHADE:
|
||||
case WEATHER_DOWNPOUR:
|
||||
sub_8045314(palbuf, RGB_BLACK, 3, size);
|
||||
BlendPalettesAt(palbuf, RGB_BLACK, 3, size);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,19 +239,19 @@ void Drought_Main(void)
|
||||
gWeatherPtr->initStep++;
|
||||
break;
|
||||
case 3:
|
||||
sub_807AC60();
|
||||
DroughtStateInit();
|
||||
gWeatherPtr->initStep++;
|
||||
break;
|
||||
case 4:
|
||||
sub_807AC98();
|
||||
if (gWeatherPtr->unknown_73C == 6)
|
||||
DroughtStateRun();
|
||||
if (gWeatherPtr->droughtBrightnessStage == 6)
|
||||
{
|
||||
gWeatherPtr->weatherGfxLoaded = TRUE;
|
||||
gWeatherPtr->initStep++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
sub_807AC98();
|
||||
DroughtStateRun();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1064,7 +1064,7 @@ void Thunderstorm_Main(void)
|
||||
gWeatherPtr->initStep++;
|
||||
// fall through
|
||||
case 8:
|
||||
sub_807A790(19);
|
||||
WeatherShiftGammaIfPalStateIdle(19);
|
||||
if (gWeatherPtr->unknown_6EB == 0 && gWeatherPtr->unknown_6EC == 1)
|
||||
SetThunderCounter(20);
|
||||
|
||||
@@ -1074,7 +1074,7 @@ void Thunderstorm_Main(void)
|
||||
case 9:
|
||||
if (--gWeatherPtr->unknown_6E6 == 0)
|
||||
{
|
||||
sub_807A790(3);
|
||||
WeatherShiftGammaIfPalStateIdle(3);
|
||||
gWeatherPtr->unknown_6EA = 1;
|
||||
if (--gWeatherPtr->unknown_6EC != 0)
|
||||
{
|
||||
@@ -1103,7 +1103,7 @@ void Thunderstorm_Main(void)
|
||||
if (--gWeatherPtr->unknown_6E6 == 0)
|
||||
{
|
||||
SetThunderCounter(100);
|
||||
sub_807A790(19);
|
||||
WeatherShiftGammaIfPalStateIdle(19);
|
||||
gWeatherPtr->unknown_6E6 = (Random() & 0xF) + 30;
|
||||
gWeatherPtr->initStep++;
|
||||
}
|
||||
@@ -1111,7 +1111,7 @@ void Thunderstorm_Main(void)
|
||||
case 13:
|
||||
if (--gWeatherPtr->unknown_6E6 == 0)
|
||||
{
|
||||
sub_807A7C4(19, 3, 5);
|
||||
WeatherBeginGammaFade(19, 3, 5);
|
||||
gWeatherPtr->initStep++;
|
||||
}
|
||||
break;
|
||||
|
||||
+26
-26
@@ -31,7 +31,7 @@ EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
|
||||
EWRAM_DATA struct MapHeader gMapHeader = {};
|
||||
EWRAM_DATA struct Camera gCamera = {};
|
||||
static EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
||||
EWRAM_DATA u8 gUnknown_2036E28 = 0;
|
||||
EWRAM_DATA u8 gGlobalFieldTintMode = QL_TINT_NONE;
|
||||
|
||||
static const struct ConnectionFlags sDummyConnectionFlags = {};
|
||||
|
||||
@@ -890,48 +890,48 @@ static void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 nu
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80598CC(u16 a0, u16 a1)
|
||||
static void Fieldmap_ApplyGlobalTintToPaletteEntries(u16 offset, u16 size)
|
||||
{
|
||||
switch (gUnknown_2036E28)
|
||||
switch (gGlobalFieldTintMode)
|
||||
{
|
||||
case 0:
|
||||
case QL_TINT_NONE:
|
||||
return;
|
||||
case 1:
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1);
|
||||
case QL_TINT_GRAYSCALE:
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + offset, size);
|
||||
break;
|
||||
case 2:
|
||||
TintPalette_SepiaTone(gPlttBufferUnfaded + a0, a1);
|
||||
case QL_TINT_SEPIA:
|
||||
TintPalette_SepiaTone(gPlttBufferUnfaded + offset, size);
|
||||
break;
|
||||
case 3:
|
||||
sub_8111F38(a0, a1);
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1);
|
||||
case QL_TINT_BACKUP_GRAYSCALE:
|
||||
QuestLog_BackUpPalette(offset, size);
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + offset, size);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
CpuCopy16(gPlttBufferUnfaded + a0, gPlttBufferFaded + a0, a1 * sizeof(u16));
|
||||
CpuCopy16(gPlttBufferUnfaded + offset, gPlttBufferFaded + offset, size * sizeof(u16));
|
||||
}
|
||||
|
||||
void sub_8059948(u8 a0, u8 a1)
|
||||
void Fieldmap_ApplyGlobalTintToPaletteSlot(u8 slot, u8 count)
|
||||
{
|
||||
switch (gUnknown_2036E28)
|
||||
switch (gGlobalFieldTintMode)
|
||||
{
|
||||
case 0:
|
||||
case QL_TINT_NONE:
|
||||
return;
|
||||
case 1:
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
|
||||
case QL_TINT_GRAYSCALE:
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + slot * 16, count * 16);
|
||||
break;
|
||||
case 2:
|
||||
TintPalette_SepiaTone(gPlttBufferUnfaded + a0 * 16, a1 * 16);
|
||||
case QL_TINT_SEPIA:
|
||||
TintPalette_SepiaTone(gPlttBufferUnfaded + slot * 16, count * 16);
|
||||
break;
|
||||
case 3:
|
||||
sub_8111F38(a0 * 16, a1 * 16);
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
|
||||
case QL_TINT_BACKUP_GRAYSCALE:
|
||||
QuestLog_BackUpPalette(slot * 16, count * 16);
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + slot * 16, count * 16);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
CpuFastCopy(gPlttBufferUnfaded + a0 * 16, gPlttBufferFaded + a0 * 16, a1 * 16 * sizeof(u16));
|
||||
CpuFastCopy(gPlttBufferUnfaded + slot * 16, gPlttBufferFaded + slot * 16, count * 16 * sizeof(u16));
|
||||
}
|
||||
|
||||
static void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size)
|
||||
@@ -944,17 +944,17 @@ static void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOff
|
||||
{
|
||||
LoadPalette(&black, destOffset, 2);
|
||||
LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2);
|
||||
sub_80598CC(destOffset + 1, (size - 2) >> 1);
|
||||
Fieldmap_ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - 2) >> 1);
|
||||
}
|
||||
else if (tileset->isSecondary == TRUE)
|
||||
{
|
||||
LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size);
|
||||
sub_80598CC(destOffset, size >> 1);
|
||||
Fieldmap_ApplyGlobalTintToPaletteEntries(destOffset, size >> 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadCompressedPalette((u32*)tileset->palettes, destOffset, size);
|
||||
sub_80598CC(destOffset, size >> 1);
|
||||
Fieldmap_ApplyGlobalTintToPaletteEntries(destOffset, size >> 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+11
-11
@@ -29,7 +29,7 @@ static void AnimFireRing_Step3(struct Sprite *sprite);
|
||||
static void UpdateFireRingCircleOffset(struct Sprite *sprite);
|
||||
static void sub_80ACE28(struct Sprite *sprite);
|
||||
static void sub_80ACE50(struct Sprite *sprite);
|
||||
static void sub_80ACF14(u8 taskId);
|
||||
static void AnimTask_EruptionLaunchRocks_Step(u8 taskId);
|
||||
static void sub_80AD1F8(u8 spriteId, u8 taskId, u8 a3);
|
||||
static u16 sub_80AD374(u8 spriteId);
|
||||
static void sub_80AD3C8(struct Sprite *sprite, s16 x, s16 y);
|
||||
@@ -741,17 +741,17 @@ void AnimTask_EruptionLaunchRocks(u8 taskId) // initialize animation task for Mo
|
||||
task->data[5] = GetBattlerSide(gBattleAnimAttacker);
|
||||
task->data[6] = 0;
|
||||
PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
|
||||
task->func = sub_80ACF14;
|
||||
task->func = AnimTask_EruptionLaunchRocks_Step;
|
||||
}
|
||||
|
||||
static void sub_80ACF14(u8 taskId) // animate Move_ERUPTION?
|
||||
static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) // animate Move_ERUPTION?
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
sub_80765D4(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 0x20);
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 0x20);
|
||||
++task->data[0];
|
||||
// fall through
|
||||
case 1:
|
||||
@@ -771,7 +771,7 @@ static void sub_80ACF14(u8 taskId) // animate Move_ERUPTION?
|
||||
++gSprites[task->data[15]].pos1.y;
|
||||
}
|
||||
}
|
||||
if(!sub_8076640(task))
|
||||
if(!BattleAnimHelper_RunSpriteSquash(task))
|
||||
{
|
||||
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
|
||||
gSprites[task->data[15]].pos2.x = 0;
|
||||
@@ -785,15 +785,15 @@ static void sub_80ACF14(u8 taskId) // animate Move_ERUPTION?
|
||||
if (++task->data[1] > 4)
|
||||
{
|
||||
if (task->data[5])
|
||||
sub_80765D4(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 0x6);
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 0x6);
|
||||
else
|
||||
sub_80765D4(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 0x6);
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 0x6);
|
||||
task->data[1] = 0;
|
||||
++task->data[0];
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!sub_8076640(task))
|
||||
if (!BattleAnimHelper_RunSpriteSquash(task))
|
||||
{
|
||||
sub_80AD1F8(task->data[15], taskId, 6);
|
||||
++task->data[0];
|
||||
@@ -811,9 +811,9 @@ static void sub_80ACF14(u8 taskId) // animate Move_ERUPTION?
|
||||
if (++task->data[3] > 0x18)
|
||||
{
|
||||
if (task->data[5])
|
||||
sub_80765D4(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 0x8);
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 0x8);
|
||||
else
|
||||
sub_80765D4(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 0x8);
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 0x8);
|
||||
if (task->data[2] & 1)
|
||||
gSprites[task->data[15]].pos2.y -= 3;
|
||||
task->data[1] = 0;
|
||||
@@ -825,7 +825,7 @@ static void sub_80ACF14(u8 taskId) // animate Move_ERUPTION?
|
||||
case 5:
|
||||
if (task->data[5])
|
||||
--gSprites[task->data[15]].pos1.y;
|
||||
if (!sub_8076640(task))
|
||||
if (!BattleAnimHelper_RunSpriteSquash(task))
|
||||
{
|
||||
gSprites[task->data[15]].pos1.y = task->data[4];
|
||||
ResetSpriteRotScale(task->data[15]);
|
||||
|
||||
@@ -60,7 +60,7 @@ static void Task_FieldEffectShowMon_Init(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_805CB70();
|
||||
StartPlayerAvatarSummonMonForFieldMoveAnim();
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_WaitPlayerAnim;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "wild_encounter.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
static EWRAM_DATA u8 *gUnknown_203AAB0 = NULL;
|
||||
static EWRAM_DATA u8 *sPlttBufferBak = NULL;
|
||||
|
||||
static void FieldCallback_SweetScent(void);
|
||||
static void StartSweetScentFieldEffect(void);
|
||||
@@ -51,9 +51,9 @@ static void StartSweetScentFieldEffect(void)
|
||||
u8 taskId;
|
||||
|
||||
PlaySE(SE_M_SWEET_SCENT);
|
||||
gUnknown_203AAB0 = (u8 *)Alloc(0x400);
|
||||
CpuFastSet(gPlttBufferUnfaded, gUnknown_203AAB0, 0x100);
|
||||
CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100);
|
||||
sPlttBufferBak = (u8 *)Alloc(PLTT_SIZE);
|
||||
CpuFastCopy(gPlttBufferUnfaded, sPlttBufferBak, PLTT_SIZE);
|
||||
CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_SIZE);
|
||||
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB(31, 0, 0));
|
||||
taskId = CreateTask(TrySweetScentEncounter, 0);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
@@ -71,7 +71,7 @@ static void TrySweetScentEncounter(u8 taskId)
|
||||
data[0] = 0;
|
||||
if (SweetScentWildEncounter() == TRUE)
|
||||
{
|
||||
Free(gUnknown_203AAB0);
|
||||
Free(sPlttBufferBak);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
@@ -91,9 +91,9 @@ static void FailSweetScentEncounter(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
CpuFastSet(gUnknown_203AAB0, gPlttBufferUnfaded, 0x100);
|
||||
sub_807B070();
|
||||
Free(gUnknown_203AAB0);
|
||||
CpuFastCopy(sPlttBufferBak, gPlttBufferUnfaded, PLTT_SIZE);
|
||||
WeatherProcessingIdle();
|
||||
Free(sPlttBufferBak);
|
||||
ScriptContext1_SetupScript(EventScript_FailSweetScent);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
+1
-1
@@ -1159,7 +1159,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
|
||||
sprite->pos2.y = t2;
|
||||
if (sprite->data[2] == 24)
|
||||
{
|
||||
sub_8075AD8(sprite);
|
||||
TryResetSpriteAffineState(sprite);
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
break;
|
||||
|
||||
+1
-1
@@ -643,7 +643,7 @@ static void sub_80B5AD4(u8 taskId)
|
||||
break;
|
||||
case 1:
|
||||
task->data[14] = (task->data[14] + 16) * 16;
|
||||
CpuSet(&gPlttBufferUnfaded[task->data[4]], &gPlttBufferFaded[task->data[14]], 0x4000008);
|
||||
CpuCopy32(&gPlttBufferUnfaded[task->data[4]], &gPlttBufferFaded[task->data[14]], 0x20);
|
||||
BlendPalette(task->data[4], 16, 10, RGB(13, 0, 15));
|
||||
++task->data[15];
|
||||
break;
|
||||
|
||||
+2454
-1177
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,856 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "decompress.h"
|
||||
#include "m4a.h"
|
||||
#include "event_data.h"
|
||||
#include "help_system.h"
|
||||
#include "list_menu.h"
|
||||
#include "strings.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
#define ZERO 0
|
||||
|
||||
bool8 gHelpSystemEnabled;
|
||||
|
||||
struct HelpSystemVideoState
|
||||
{
|
||||
/*0x00*/ MainCallback savedVblankCb;
|
||||
/*0x04*/ MainCallback savedHblankCb;
|
||||
/*0x08*/ u16 savedDispCnt;
|
||||
/*0x0a*/ u16 savedBg0Cnt;
|
||||
/*0x0c*/ u16 savedBg0Hofs;
|
||||
/*0x0e*/ u16 savedBg0Vofs;
|
||||
/*0x10*/ u16 savedBldCnt;
|
||||
/*0x12*/ u8 savedTextColor[3];
|
||||
/*0x15*/ u8 state;
|
||||
};
|
||||
|
||||
static EWRAM_DATA u8 sMapTilesBackup[BG_CHAR_SIZE] = {0};
|
||||
EWRAM_DATA u8 gDisableHelpSystemVolumeReduce = 0;
|
||||
EWRAM_DATA bool8 gHelpSystemToggleWithRButtonDisabled = FALSE;
|
||||
static EWRAM_DATA u8 sDelayTimer = 0;
|
||||
static EWRAM_DATA u8 sInHelpSystem = 0;
|
||||
static EWRAM_DATA struct HelpSystemVideoState sVideoState = {0};
|
||||
EWRAM_DATA struct HelpSystemListMenu gHelpSystemListMenu = {0};
|
||||
EWRAM_DATA struct ListMenuItem gHelpSystemListMenuItems[52] = {0};
|
||||
|
||||
static const u16 sTiles[] = INCBIN_U16("graphics/help_system/bg_tiles.4bpp");
|
||||
static const u16 sPals[] = INCBIN_U16("graphics/help_system/bg_tiles.gbapal");
|
||||
|
||||
u8 RunHelpSystemCallback(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
switch (sVideoState.state)
|
||||
{
|
||||
case 0:
|
||||
sInHelpSystem = 0;
|
||||
if (gSaveBlock2Ptr->optionsButtonMode != OPTIONS_BUTTON_MODE_HELP)
|
||||
return 0;
|
||||
if (JOY_NEW(R_BUTTON) && gHelpSystemToggleWithRButtonDisabled == TRUE)
|
||||
return 0;
|
||||
if (JOY_NEW(L_BUTTON | R_BUTTON))
|
||||
{
|
||||
if (!HelpSystem_IsSinglePlayer() || !gHelpSystemEnabled)
|
||||
{
|
||||
PlaySE(SE_HELP_ERROR);
|
||||
return 0;
|
||||
}
|
||||
m4aMPlayStop(&gMPlayInfo_SE1);
|
||||
m4aMPlayStop(&gMPlayInfo_SE2);
|
||||
PlaySE(SE_HELP_OPEN);
|
||||
if (!gDisableHelpSystemVolumeReduce)
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80);
|
||||
SaveCallbacks();
|
||||
sInHelpSystem = 1;
|
||||
sVideoState.state = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
SaveMapTiles();
|
||||
SaveMapGPURegs();
|
||||
SaveMapTextColors();
|
||||
(*(vu16 *)PLTT) = sPals[15];
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
sVideoState.state = 2;
|
||||
break;
|
||||
case 2:
|
||||
RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, DMA3_16BIT);
|
||||
RequestDma3Copy(sPals, (void *)PLTT, sizeof(sPals), DMA3_16BIT);
|
||||
RequestDma3Copy(sTiles, gDecompressionBuffer + 0x3EE0, sizeof(sTiles), DMA3_16BIT);
|
||||
sVideoState.state = 3;
|
||||
break;
|
||||
case 3:
|
||||
HS_BufferFillMapWithTile1FF();
|
||||
HelpSystem_FillPanel3();
|
||||
HelpSystem_FillPanel2();
|
||||
HelpSystem_PrintTextInTopLeftCorner(gString_Help);
|
||||
HS_ShowOrHideWordHELPinTopLeft(1);
|
||||
if (HelpSystem_UpdateHasntSeenIntro() == TRUE)
|
||||
HelpSystemSubroutine_PrintWelcomeMessage(&gHelpSystemListMenu, gHelpSystemListMenuItems);
|
||||
else
|
||||
HelpSystemSubroutine_WelcomeEndGotoMenu(&gHelpSystemListMenu, gHelpSystemListMenuItems);
|
||||
HS_ShowOrHideHeaderAndFooterLines_Lighter(1);
|
||||
HS_ShowOrHideVerticalBlackBarsAlongSides(1);
|
||||
CommitTilemap();
|
||||
sVideoState.state = 4;
|
||||
break;
|
||||
case 4:
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31));
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON);
|
||||
sVideoState.state = 5;
|
||||
break;
|
||||
case 5:
|
||||
if (!RunHelpMenuSubroutine(&gHelpSystemListMenu, gHelpSystemListMenuItems))
|
||||
{
|
||||
PlaySE(SE_HELP_CLOSE);
|
||||
sVideoState.state = 6;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
RestoreMapTiles();
|
||||
for (i = 0; i < 0x200; i += 2)
|
||||
{
|
||||
*((vu16 *)(PLTT + 0x000 + i)) = sPals[15];
|
||||
*((vu16 *)(PLTT + 0x200 + i)) = sPals[15];
|
||||
}
|
||||
sVideoState.state = 7;
|
||||
break;
|
||||
case 7:
|
||||
if (!gDisableHelpSystemVolumeReduce)
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
|
||||
RestoreMapTextColors();
|
||||
RestoreGPURegs();
|
||||
sVideoState.state = 8;
|
||||
break;
|
||||
case 8:
|
||||
RestoreCallbacks();
|
||||
sInHelpSystem = 0;
|
||||
sVideoState.state = 0;
|
||||
break;
|
||||
}
|
||||
return sVideoState.state;
|
||||
}
|
||||
|
||||
void SaveCallbacks(void)
|
||||
{
|
||||
vu16 * dma;
|
||||
sVideoState.savedVblankCb = gMain.vblankCallback;
|
||||
sVideoState.savedHblankCb = gMain.hblankCallback;
|
||||
gMain.vblankCallback = NULL;
|
||||
gMain.hblankCallback = NULL;
|
||||
|
||||
dma = (void *)REG_ADDR_DMA0;
|
||||
dma[5] &= ~(DMA_START_MASK | DMA_DREQ_ON | DMA_REPEAT);
|
||||
dma[5] &= ~DMA_ENABLE;
|
||||
dma[5];
|
||||
}
|
||||
|
||||
void SaveMapGPURegs(void)
|
||||
{
|
||||
sVideoState.savedDispCnt = GetGpuReg(REG_OFFSET_DISPCNT);
|
||||
sVideoState.savedBg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT);
|
||||
sVideoState.savedBg0Hofs = GetGpuReg(REG_OFFSET_BG0HOFS);
|
||||
sVideoState.savedBg0Vofs = GetGpuReg(REG_OFFSET_BG0VOFS);
|
||||
sVideoState.savedBldCnt = GetGpuReg(REG_OFFSET_BLDCNT);
|
||||
}
|
||||
|
||||
void SaveMapTiles(void)
|
||||
{
|
||||
RequestDma3Copy((void *)BG_CHAR_ADDR(3), sMapTilesBackup, BG_CHAR_SIZE, DMA3_16BIT);
|
||||
}
|
||||
|
||||
void SaveMapTextColors(void)
|
||||
{
|
||||
SaveTextColors(
|
||||
&sVideoState.savedTextColor[0],
|
||||
&sVideoState.savedTextColor[1],
|
||||
&sVideoState.savedTextColor[2]
|
||||
);
|
||||
}
|
||||
|
||||
void RestoreCallbacks(void)
|
||||
{
|
||||
gMain.vblankCallback = sVideoState.savedVblankCb;
|
||||
gMain.hblankCallback = sVideoState.savedHblankCb;
|
||||
}
|
||||
|
||||
void RestoreGPURegs(void)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, sVideoState.savedBldCnt);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, sVideoState.savedBg0Hofs);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, sVideoState.savedBg0Vofs);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, sVideoState.savedBg0Cnt);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, sVideoState.savedDispCnt);
|
||||
}
|
||||
|
||||
void RestoreMapTiles(void)
|
||||
{
|
||||
RequestDma3Copy(sMapTilesBackup, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, DMA3_16BIT);
|
||||
}
|
||||
|
||||
void RestoreMapTextColors(void)
|
||||
{
|
||||
RestoreTextColors(
|
||||
&sVideoState.savedTextColor[0],
|
||||
&sVideoState.savedTextColor[1],
|
||||
&sVideoState.savedTextColor[2]
|
||||
);
|
||||
}
|
||||
|
||||
void CommitTilemap(void)
|
||||
{
|
||||
RequestDma3Copy(gDecompressionBuffer, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, DMA3_16BIT);
|
||||
}
|
||||
|
||||
void HS_DrawBgTilemapRect(u16 baseTile, u8 left, u8 top, u8 width, u8 height, u16 increment)
|
||||
{
|
||||
u16 i, j;
|
||||
|
||||
for (i = top; i < top + height; i++)
|
||||
{
|
||||
for (j = left; j < left + width; j++)
|
||||
{
|
||||
*((u16 *)(gDecompressionBuffer + 0x3800 + 64 * i + 2 * j)) = baseTile;
|
||||
baseTile += increment;
|
||||
}
|
||||
}
|
||||
|
||||
CommitTilemap();
|
||||
}
|
||||
|
||||
void HS_BufferFillMapWithTile1FF(void)
|
||||
{
|
||||
HS_DrawBgTilemapRect(0x1FF, 0, 0, 30, 20, 0);
|
||||
}
|
||||
|
||||
void HS_ShowOrHideWordHELPinTopLeft(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 1, 0, 7, 2, 0);
|
||||
break;
|
||||
case 1:
|
||||
HS_DrawBgTilemapRect(0x1E8, 1, 0, 7, 2, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_ShowOrHideControlsGuideInTopRight(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 13, 0, 16, 2, 0);
|
||||
break;
|
||||
case 1:
|
||||
HS_DrawBgTilemapRect(0x1A0, 13, 0, 16, 2, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_ShowOrHideMainWindowText(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 2, 3, 26, 16, 0);
|
||||
break;
|
||||
case 1:
|
||||
HS_DrawBgTilemapRect(0x000, 2, 3, 26, 16, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_SetMainWindowBgBrightness(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
// Brighter
|
||||
HS_DrawBgTilemapRect(0x1FF, 1, 3, 28, 16, 0);
|
||||
break;
|
||||
case 1:
|
||||
// Darker
|
||||
HS_DrawBgTilemapRect(0x1FA, 1, 3, 28, 17, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_ShowOrHideToplevelTooltipWindow(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 2, 14, 26, 5, 0);
|
||||
break;
|
||||
case 1:
|
||||
HS_DrawBgTilemapRect(0x11E, 2, 14, 26, 5, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_ShowOrHideHeaderAndFooterLines_Lighter(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 1, 2, 28, 1, 0);
|
||||
HS_DrawBgTilemapRect(0x1FF, 1, 19, 28, 1, 0);
|
||||
break;
|
||||
case 1:
|
||||
HS_DrawBgTilemapRect(0x1F7, 1, 2, 28, 1, 0);
|
||||
HS_DrawBgTilemapRect(0x1F8, 1, 19, 28, 1, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_ShowOrHideHeaderAndFooterLines_Darker(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 1, 2, 28, 1, 0);
|
||||
HS_DrawBgTilemapRect(0x1FF, 1, 19, 28, 1, 0);
|
||||
break;
|
||||
case 1:
|
||||
HS_DrawBgTilemapRect(0x1FB, 1, 2, 28, 1, 0);
|
||||
HS_DrawBgTilemapRect(0x1FC, 1, 19, 28, 1, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_ShowOrHideVerticalBlackBarsAlongSides(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 0, 0, 1, 20, 0);
|
||||
HS_DrawBgTilemapRect(0x1FF, 29, 0, 1, 20, 0);
|
||||
break;
|
||||
case 1:
|
||||
HS_DrawBgTilemapRect(0x1F9, 0, 0, 1, 20, 0);
|
||||
HS_DrawBgTilemapRect(0x1F9, 29, 0, 1, 20, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_ShowOrHideHeaderLine_Darker_FooterStyle(u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 1, 5, 28, 1, 0);
|
||||
break;
|
||||
case 1:
|
||||
HS_DrawBgTilemapRect(0x1FC, 1, 5, 28, 1, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HS_ShowOrHideScrollArrows(u8 which, u8 mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
HS_DrawBgTilemapRect(0x1FF, 28, 3, 1, 1, 0);
|
||||
HS_DrawBgTilemapRect(0x1FF, 28, 18, 1, 1, 0);
|
||||
break;
|
||||
case 1:
|
||||
if (which == 0) // top
|
||||
HS_DrawBgTilemapRect(0x1FE, 28, 3, 1, 1, 0);
|
||||
else // bottom
|
||||
HS_DrawBgTilemapRect(0x1FD, 28, 18, 1, 1, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height)
|
||||
{
|
||||
// font -> sp+24
|
||||
// dest -> sp+28
|
||||
// src -> r9
|
||||
// x -> sp+34
|
||||
// y -> r10
|
||||
// width -> sp+2C
|
||||
// height -> sp+30
|
||||
struct Bitmap srcBlit;
|
||||
struct Bitmap destBlit;
|
||||
u8 orig_x = x;
|
||||
u8 i = 0;
|
||||
s32 clearPixels = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
u16 curChar = *src;
|
||||
src++;
|
||||
switch (curChar)
|
||||
{
|
||||
case EOS:
|
||||
return;
|
||||
case CHAR_NEWLINE:
|
||||
x = orig_x;
|
||||
y += gGlyphInfo.height + 1;
|
||||
break;
|
||||
case PLACEHOLDER_BEGIN:
|
||||
curChar = *src;
|
||||
src++;
|
||||
if (curChar == PLACEHOLDER_ID_PLAYER) {
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
if (gSaveBlock2Ptr->playerName[i] == EOS)
|
||||
{
|
||||
break;
|
||||
}
|
||||
DecompressAndRenderGlyph(font, gSaveBlock2Ptr->playerName[i], &srcBlit, &destBlit, dest, x, y, width, height);
|
||||
// This is required to match a dummy [sp+#0x24] read here
|
||||
if (font == 0)
|
||||
{
|
||||
x += gGlyphInfo.width;
|
||||
}
|
||||
else
|
||||
{
|
||||
x += gGlyphInfo.width + ZERO;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (curChar == PLACEHOLDER_ID_STRING_VAR_1)
|
||||
{
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC) == TRUE)
|
||||
{
|
||||
if (gString_Bill[i] == EOS)
|
||||
{
|
||||
break;
|
||||
}
|
||||
DecompressAndRenderGlyph(font, gString_Bill[i], &srcBlit, &destBlit, dest, x, y, width, height);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gString_Someone[i] == EOS)
|
||||
{
|
||||
break;
|
||||
}
|
||||
DecompressAndRenderGlyph(font, gString_Someone[i], &srcBlit, &destBlit, dest, x, y, width, height);
|
||||
}
|
||||
if (font == 0)
|
||||
{
|
||||
x += gGlyphInfo.width;
|
||||
}
|
||||
else
|
||||
{
|
||||
x += gGlyphInfo.width + ZERO;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case CHAR_PROMPT_SCROLL:
|
||||
case CHAR_PROMPT_CLEAR:
|
||||
x = orig_x;
|
||||
y += gGlyphInfo.height + 1;
|
||||
break;
|
||||
case EXT_CTRL_CODE_BEGIN:
|
||||
curChar = *src;
|
||||
src++;
|
||||
switch (curChar)
|
||||
{
|
||||
case EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW:
|
||||
src++;
|
||||
//fallthrough
|
||||
case EXT_CTRL_CODE_PLAY_BGM:
|
||||
case EXT_CTRL_CODE_PLAY_SE:
|
||||
src++;
|
||||
//fallthrough
|
||||
case EXT_CTRL_CODE_COLOR:
|
||||
case EXT_CTRL_CODE_HIGHLIGHT:
|
||||
case EXT_CTRL_CODE_SHADOW:
|
||||
case EXT_CTRL_CODE_PALETTE:
|
||||
case EXT_CTRL_CODE_FONT:
|
||||
case EXT_CTRL_CODE_PAUSE:
|
||||
case EXT_CTRL_CODE_ESCAPE:
|
||||
case EXT_CTRL_CODE_SHIFT_RIGHT:
|
||||
case EXT_CTRL_CODE_SHIFT_DOWN:
|
||||
src++;
|
||||
break;
|
||||
case EXT_CTRL_CODE_CLEAR_TO:
|
||||
{
|
||||
#ifdef NONMATCHING
|
||||
curChar = *src;
|
||||
clearPixels = curChar + orig_x - x;
|
||||
#else // dumb fakematch
|
||||
s32 r0;
|
||||
register const u8 * _src asm("r2") = src;
|
||||
asm("":::"r1");
|
||||
r0 = *_src;
|
||||
r0 += orig_x;
|
||||
clearPixels = r0 - x;
|
||||
#endif
|
||||
if (clearPixels > 0)
|
||||
{
|
||||
destBlit.pixels = dest;
|
||||
destBlit.width = width * 8;
|
||||
destBlit.height = height * 8;
|
||||
FillBitmapRect4Bit(&destBlit, x, y, clearPixels, GetFontAttribute(font, FONTATTR_MAX_LETTER_HEIGHT),
|
||||
0);
|
||||
x += clearPixels;
|
||||
}
|
||||
src++;
|
||||
break;
|
||||
}
|
||||
case EXT_CTRL_CODE_CLEAR:
|
||||
case EXT_CTRL_CODE_SKIP:
|
||||
case EXT_CTRL_CODE_MIN_LETTER_SPACING:
|
||||
src++;
|
||||
break;
|
||||
case EXT_CTRL_CODE_RESET_FONT:
|
||||
case EXT_CTRL_CODE_WAIT_BUTTON:
|
||||
case EXT_CTRL_CODE_WAIT_SE:
|
||||
case EXT_CTRL_CODE_FILL_WINDOW:
|
||||
break;
|
||||
case EXT_CTRL_CODE_JPN:
|
||||
case EXT_CTRL_CODE_ENG:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case CHAR_KEYPAD_ICON:
|
||||
curChar = *src;
|
||||
src++;
|
||||
srcBlit.pixels = (u8 *)gKeypadIconTiles + 0x20 * GetKeypadIconTileOffset(curChar);
|
||||
srcBlit.width = 0x80;
|
||||
srcBlit.height = 0x80;
|
||||
destBlit.pixels = dest;
|
||||
destBlit.width = width * 8;
|
||||
destBlit.height = height * 8;
|
||||
BlitBitmapRect4Bit(&srcBlit, &destBlit, 0, 0, x, y, GetKeypadIconWidth(curChar), GetKeypadIconHeight(curChar), 0);
|
||||
x += GetKeypadIconWidth(curChar);
|
||||
break;
|
||||
case CHAR_EXTRA_EMOJI:
|
||||
curChar = *src + 0x100;
|
||||
src++;
|
||||
//fallthrough
|
||||
default:
|
||||
if (curChar == CHAR_SPACE)
|
||||
{
|
||||
if (font == 0)
|
||||
{
|
||||
x += 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
x += 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DecompressAndRenderGlyph(font, curChar, &srcBlit, &destBlit, dest, x, y, width, height);
|
||||
if (font == 0)
|
||||
{
|
||||
x += gGlyphInfo.width;
|
||||
}
|
||||
else
|
||||
{
|
||||
x += gGlyphInfo.width + ZERO;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DecompressAndRenderGlyph(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height)
|
||||
{
|
||||
if (font == 0)
|
||||
DecompressGlyphFont0(glyph, FALSE);
|
||||
else if (font == 5)
|
||||
DecompressGlyphFont5(glyph, FALSE);
|
||||
else
|
||||
DecompressGlyphFont2(glyph, FALSE);
|
||||
srcBlit->pixels = gGlyphInfo.pixels;
|
||||
srcBlit->width = 16;
|
||||
srcBlit->height = 16;
|
||||
destBlit->pixels = destBuffer;
|
||||
destBlit->width = width * 8;
|
||||
destBlit->height = height * 8;
|
||||
BlitBitmapRect4Bit(srcBlit, destBlit, 0, 0, x, y, gGlyphInfo.width, gGlyphInfo.height, 0);
|
||||
}
|
||||
|
||||
void HelpSystem_PrintTextInTopLeftCorner(const u8 * str)
|
||||
{
|
||||
GenerateFontHalfRowLookupTable(1, 15, 2);
|
||||
HelpSystemRenderText(5, gDecompressionBuffer + 0x3D00, str, 6, 2, 7, 2);
|
||||
}
|
||||
|
||||
void HelpSystem_PrintTextRightAlign_Row52(const u8 * str)
|
||||
{
|
||||
s32 left = 0x7C - GetStringWidth(0, str, 0);
|
||||
GenerateFontHalfRowLookupTable(1, 15, 2);
|
||||
HelpSystemRenderText(0, gDecompressionBuffer + 0x3400, str, left, 2, 16, 2);
|
||||
}
|
||||
|
||||
void HelpSystem_PrintTextAt(const u8 * str, u8 x, u8 y)
|
||||
{
|
||||
GenerateFontHalfRowLookupTable(1, 15, 2);
|
||||
HelpSystemRenderText(2, gDecompressionBuffer + 0x0000, str, x, y, 26, 16);
|
||||
}
|
||||
|
||||
void HelpSystem_PrintQuestionAndAnswerPair(const u8 * question, const u8 * answer)
|
||||
{
|
||||
CpuFill16(0xEEEE, gDecompressionBuffer + 0x0000, 0x3400);
|
||||
GenerateFontHalfRowLookupTable(1, 14, 2);
|
||||
HelpSystemRenderText(2, gDecompressionBuffer + 0x0000, question, 0, 0, 26, 16);
|
||||
HelpSystemRenderText(2, gDecompressionBuffer + 0x09C0, answer, 0, 0, 26, 13);
|
||||
}
|
||||
|
||||
void HelpSystem_PrintTopicMouseoverDescription(const u8 * str)
|
||||
{
|
||||
CpuFill16(0x1111, gDecompressionBuffer + 0x23C0, 0x1040);
|
||||
GenerateFontHalfRowLookupTable(2, 1, 3);
|
||||
HelpSystemRenderText(2, gDecompressionBuffer + 0x23C0, str, 2, 6, 26, 5);
|
||||
}
|
||||
|
||||
void HelpSystem_FillPanel3(void)
|
||||
{
|
||||
CpuFill16(0xFFFF, gDecompressionBuffer + 0x3D00, 0x1C0);
|
||||
}
|
||||
|
||||
void HelpSystem_FillPanel2(void)
|
||||
{
|
||||
CpuFill16(0xFFFF, gDecompressionBuffer + 0x3400, 0x400);
|
||||
}
|
||||
|
||||
void HelpSystem_FillPanel1(void)
|
||||
{
|
||||
CpuFill16(0xFFFF, gDecompressionBuffer + 0x0000, 0x3400);
|
||||
}
|
||||
|
||||
void HelpSystem_InitListMenuController(struct HelpSystemListMenu * a0, u8 a1, u8 a2)
|
||||
{
|
||||
gHelpSystemListMenu.sub = a0->sub;
|
||||
gHelpSystemListMenu.itemsAbove = a1;
|
||||
gHelpSystemListMenu.cursorPos = a2;
|
||||
gHelpSystemListMenu.state = 0;
|
||||
if (gHelpSystemListMenu.sub.totalItems < gHelpSystemListMenu.sub.maxShowed)
|
||||
gHelpSystemListMenu.sub.maxShowed = gHelpSystemListMenu.sub.totalItems;
|
||||
HS_ShowOrHideMainWindowText(0);
|
||||
HelpSystem_FillPanel1();
|
||||
PrintListMenuItems();
|
||||
PlaceListMenuCursor();
|
||||
}
|
||||
|
||||
void HelpSystem_SetInputDelay(u8 a0)
|
||||
{
|
||||
sDelayTimer = a0;
|
||||
}
|
||||
|
||||
s32 HelpSystem_GetMenuInput(void)
|
||||
{
|
||||
if (sDelayTimer != 0)
|
||||
{
|
||||
sDelayTimer--;
|
||||
return -1;
|
||||
}
|
||||
else if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return gHelpSystemListMenu.sub.items[gHelpSystemListMenu.itemsAbove + gHelpSystemListMenu.cursorPos].index;
|
||||
}
|
||||
else if (JOY_NEW(B_BUTTON))
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return -2;
|
||||
}
|
||||
else if (JOY_NEW(L_BUTTON | R_BUTTON))
|
||||
{
|
||||
return -6;
|
||||
}
|
||||
else if (JOY_REPT(DPAD_UP))
|
||||
{
|
||||
if (!MoveCursor(1, 0))
|
||||
PlaySE(SE_SELECT);
|
||||
return -4;
|
||||
}
|
||||
else if (JOY_REPT(DPAD_DOWN))
|
||||
{
|
||||
if (!MoveCursor(1, 1))
|
||||
PlaySE(SE_SELECT);
|
||||
return -5;
|
||||
}
|
||||
else if (JOY_REPT(DPAD_LEFT))
|
||||
{
|
||||
if (!MoveCursor(7, 0))
|
||||
PlaySE(SE_SELECT);
|
||||
return -4;
|
||||
}
|
||||
else if (JOY_REPT(DPAD_RIGHT))
|
||||
{
|
||||
if (!MoveCursor(7, 1))
|
||||
PlaySE(SE_SELECT);
|
||||
return -5;
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
void HS_UpdateMenuScrollArrows(void)
|
||||
{
|
||||
u8 topItemIdx = gHelpSystemListMenu.sub.totalItems - 7;
|
||||
if (gHelpSystemListMenu.sub.totalItems > 7)
|
||||
{
|
||||
s32 cursorPos = gHelpSystemListMenu.itemsAbove + gHelpSystemListMenu.cursorPos;
|
||||
HS_ShowOrHideScrollArrows(0, 0); // Hide both
|
||||
if (cursorPos == 0)
|
||||
HS_ShowOrHideScrollArrows(1, 1); // Show bottom
|
||||
else if (gHelpSystemListMenu.itemsAbove == 0 && gHelpSystemListMenu.cursorPos != 0)
|
||||
HS_ShowOrHideScrollArrows(1, 1); // Show bottom
|
||||
else if (gHelpSystemListMenu.itemsAbove == topItemIdx)
|
||||
HS_ShowOrHideScrollArrows(0, 1); // Show top
|
||||
else if (gHelpSystemListMenu.itemsAbove != 0)
|
||||
{
|
||||
// Show both
|
||||
HS_ShowOrHideScrollArrows(0, 1);
|
||||
HS_ShowOrHideScrollArrows(1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PrintListMenuItems(void)
|
||||
{
|
||||
u8 glyphHeight = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 1;
|
||||
s32 i;
|
||||
s32 r5 = gHelpSystemListMenu.itemsAbove;
|
||||
|
||||
for (i = 0; i < gHelpSystemListMenu.sub.maxShowed; i++)
|
||||
{
|
||||
u8 x = gHelpSystemListMenu.sub.left + 8;
|
||||
u8 y = gHelpSystemListMenu.sub.top + glyphHeight * i;
|
||||
HelpSystem_PrintTextAt(gHelpSystemListMenu.sub.items[r5].label, x, y);
|
||||
r5++;
|
||||
}
|
||||
}
|
||||
|
||||
void PlaceListMenuCursor(void)
|
||||
{
|
||||
u8 glyphHeight = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 1;
|
||||
u8 x = gHelpSystemListMenu.sub.left;
|
||||
u8 y = gHelpSystemListMenu.sub.top + glyphHeight * gHelpSystemListMenu.cursorPos;
|
||||
HelpSystem_PrintTextAt(gText_SelectorArrow2, x, y);
|
||||
}
|
||||
|
||||
void HS_RemoveSelectionCursorAt(u8 i)
|
||||
{
|
||||
u8 glyphHeight = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 1;
|
||||
u8 x = gHelpSystemListMenu.sub.left;
|
||||
u8 y = gHelpSystemListMenu.sub.top + i * glyphHeight;
|
||||
HelpSystem_PrintTextAt(gString_HelpSystem_ClearTo8, x, y);
|
||||
}
|
||||
|
||||
u8 TryMoveCursor1(u8 dirn)
|
||||
{
|
||||
u16 midPoint;
|
||||
if (dirn == 0)
|
||||
{
|
||||
if (gHelpSystemListMenu.sub.maxShowed == 1)
|
||||
midPoint = 0;
|
||||
else
|
||||
midPoint = gHelpSystemListMenu.sub.maxShowed - (gHelpSystemListMenu.sub.maxShowed / 2 + (gHelpSystemListMenu.sub.maxShowed & 1)) - 1;
|
||||
if (gHelpSystemListMenu.itemsAbove == 0)
|
||||
{
|
||||
if (gHelpSystemListMenu.cursorPos != 0)
|
||||
{
|
||||
gHelpSystemListMenu.cursorPos--;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
if (gHelpSystemListMenu.cursorPos > midPoint)
|
||||
{
|
||||
gHelpSystemListMenu.cursorPos--;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gHelpSystemListMenu.itemsAbove--;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gHelpSystemListMenu.sub.maxShowed == 1)
|
||||
midPoint = 0;
|
||||
else
|
||||
midPoint = gHelpSystemListMenu.sub.maxShowed / 2 + (gHelpSystemListMenu.sub.maxShowed & 1);
|
||||
if (gHelpSystemListMenu.itemsAbove == gHelpSystemListMenu.sub.totalItems - gHelpSystemListMenu.sub.maxShowed)
|
||||
{
|
||||
if (gHelpSystemListMenu.cursorPos < gHelpSystemListMenu.sub.maxShowed - 1)
|
||||
{
|
||||
gHelpSystemListMenu.cursorPos++;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if (gHelpSystemListMenu.cursorPos < midPoint)
|
||||
{
|
||||
gHelpSystemListMenu.cursorPos++;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gHelpSystemListMenu.itemsAbove++;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 MoveCursor(u8 by, u8 dirn)
|
||||
{
|
||||
u8 r7 = gHelpSystemListMenu.cursorPos;
|
||||
u8 flags = 0;
|
||||
s32 i;
|
||||
for (i = 0; i < by; i++)
|
||||
flags |= TryMoveCursor1(dirn);
|
||||
|
||||
switch (flags)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
// neither changed
|
||||
return TRUE;
|
||||
case 1:
|
||||
// changed cursorPos only
|
||||
HS_RemoveSelectionCursorAt(r7);
|
||||
PlaceListMenuCursor();
|
||||
CommitTilemap();
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
// changed itemsAbove
|
||||
if (GetHelpSystemMenuLevel() == 1)
|
||||
{
|
||||
HelpSystem_SetInputDelay(2);
|
||||
HelpSystem_FillPanel1();
|
||||
PrintListMenuItems();
|
||||
PlaceListMenuCursor();
|
||||
HelpSystem_PrintTopicLabel();
|
||||
HS_UpdateMenuScrollArrows();
|
||||
}
|
||||
else
|
||||
{
|
||||
HS_ShowOrHideMainWindowText(0);
|
||||
HelpSystem_FillPanel1();
|
||||
PrintListMenuItems();
|
||||
PlaceListMenuCursor();
|
||||
HS_ShowOrHideMainWindowText(1);
|
||||
}
|
||||
CommitTilemap();
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -533,7 +533,7 @@ static void sub_80AF108(struct Sprite *sprite)
|
||||
sprite->data[2] = gBattleAnimArgs[2] + targetX;
|
||||
sprite->data[3] = gBattleAnimArgs[1] + attackerY;
|
||||
sprite->data[4] = gBattleAnimArgs[3] + targetY;
|
||||
sub_8074C80(sprite);
|
||||
SetupLinearTranslationWithFixedDuration(sprite);
|
||||
// won't match with while loop
|
||||
for (; (targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192); targetX += sprite->data[1], targetY += sprite->data[2])
|
||||
;
|
||||
@@ -548,7 +548,7 @@ static void sub_80AF108(struct Sprite *sprite)
|
||||
sprite->data[2] = targetX;
|
||||
sprite->data[3] = attackerY;
|
||||
sprite->data[4] = targetY;
|
||||
sub_8074C80(sprite);
|
||||
SetupLinearTranslationWithFixedDuration(sprite);
|
||||
sprite->data[3] = gBattleAnimArgs[5];
|
||||
sprite->data[4] = gBattleAnimArgs[6];
|
||||
sprite->callback = sub_80AF28C;
|
||||
@@ -686,7 +686,7 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
||||
sprite->pos2.x = sprite->pos2.y = 0;
|
||||
for (i = 0; i < 8; ++i)
|
||||
sprite->data[i] = tempDataHolder[i];
|
||||
sprite->callback = sub_8075830;
|
||||
sprite->callback = InitAndStartAnimFastLinearTranslationWithSpeed;
|
||||
StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step2);
|
||||
}
|
||||
|
||||
@@ -944,7 +944,7 @@ void AnimTask_Haze1(u8 taskId)
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
|
||||
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap);
|
||||
LoadPalette(&gUnknown_83C2CE0, animBg.paletteId * 16, 32);
|
||||
LoadPalette(&gDefaultWeatherSpritePalette, animBg.paletteId * 16, 32);
|
||||
if (IsContest())
|
||||
sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||
gTasks[taskId].func = AnimTask_Haze2;
|
||||
@@ -1042,7 +1042,7 @@ void AnimTask_LoadMistTiles(u8 taskId)
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
|
||||
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap);
|
||||
LoadPalette(&gUnknown_83C2CE0, animBg.paletteId * 16, 32);
|
||||
LoadPalette(&gDefaultWeatherSpritePalette, animBg.paletteId * 16, 32);
|
||||
if (IsContest())
|
||||
sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||
gTasks[taskId].data[15] = -1;
|
||||
|
||||
+1
-1
@@ -1369,7 +1369,7 @@ static void LinkCB_WaitAckCommand5FFF(void)
|
||||
}
|
||||
if (count == linkPlayerCount)
|
||||
{
|
||||
gBattleTypeFlags &= ~(BATTLE_TYPE_20 | 0xFFFF0000);
|
||||
gBattleTypeFlags &= ~(BATTLE_TYPE_LINK_ESTABLISHED | 0xFFFF0000);
|
||||
gLinkVSyncDisabled = TRUE;
|
||||
CloseLink();
|
||||
gLinkCallback = NULL;
|
||||
|
||||
+1
-1
@@ -1325,7 +1325,7 @@ static void RfuFunc_WaitAck5F00(void)
|
||||
}
|
||||
if (count == playerCount)
|
||||
{
|
||||
gBattleTypeFlags &= ~(BATTLE_TYPE_20 | 0xFFFF0000);
|
||||
gBattleTypeFlags &= ~(BATTLE_TYPE_LINK_ESTABLISHED | 0xFFFF0000);
|
||||
if (Rfu.parent_child == MODE_CHILD)
|
||||
{
|
||||
Rfu.errorState = 3;
|
||||
|
||||
@@ -850,7 +850,7 @@ bool8 MetatileBehavior_IsStrengthButton(u8 metatileBehavior)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsPlayerFacingMB_8D(u8 tile, u8 playerDirection)
|
||||
bool8 MetatileBehavior_IsPlayerFacingCableClubWirelessMonitor(u8 tile, u8 playerDirection)
|
||||
{
|
||||
if(playerDirection != DIR_NORTH)
|
||||
return FALSE;
|
||||
@@ -986,8 +986,8 @@ bool8 MetatileBehavior_IsCup(u8 metatileBehavior)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_ReturnFalse_19(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_ReturnFalse_20(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_IsPolishedWindow(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_IsBeautifulSkyWindow(u8 metatileBehavior) { return FALSE; }
|
||||
|
||||
bool8 MetatileBehavior_IsBlinkingLights(u8 metatileBehavior)
|
||||
{
|
||||
@@ -997,9 +997,9 @@ bool8 MetatileBehavior_IsBlinkingLights(u8 metatileBehavior)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsMB9F(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_IsNeatlyLinedUpTools(u8 metatileBehavior)
|
||||
{
|
||||
if(metatileBehavior == MB_9F)
|
||||
if(metatileBehavior == MB_NEATLY_LINED_UP_TOOLS)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -1029,9 +1029,9 @@ bool8 MetatileBehavior_IsBurglary(u8 metatileBehavior)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsMBA3(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_IsTrainerTowerMonitor(u8 metatileBehavior)
|
||||
{
|
||||
if(metatileBehavior == MB_A3)
|
||||
if(metatileBehavior == MB_TRAINER_TOWER_MONITOR)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
@@ -317,7 +317,7 @@ static void sub_8145A98(void)
|
||||
}
|
||||
for (i = 0, r6 = 0; i < 40; i++)
|
||||
{
|
||||
if (sMEventScreenData->wonderCard.unk_122[i] != CHAR_SPECIAL_F7)
|
||||
if (sMEventScreenData->wonderCard.unk_122[i] != CHAR_DYNAMIC_PLACEHOLDER)
|
||||
{
|
||||
sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].nameTxt[r6] = sMEventScreenData->wonderCard.unk_122[i];
|
||||
r6++;
|
||||
|
||||
+1
-1
@@ -138,7 +138,7 @@ void NewGameInitData(void)
|
||||
gSaveBlock1Ptr->registeredItem = 0;
|
||||
ClearBag();
|
||||
NewGameInitPCItems();
|
||||
sub_809C794();
|
||||
ClearEnigmaBerries();
|
||||
InitEasyChatPhrases();
|
||||
ResetTrainerFanClub();
|
||||
UnionRoomChat_InitializeRegisteredTexts();
|
||||
|
||||
+2
-2
@@ -704,7 +704,7 @@ static void Task_OakSpeech5(u8 taskId)
|
||||
}
|
||||
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 18);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
sub_8006398(gTasks[taskId].data[5]);
|
||||
DestroyTextCursorSprite(gTasks[taskId].data[5]);
|
||||
sOakSpeechResources->unk_0014[0] = RGB_BLACK;
|
||||
LoadPalette(sOakSpeechResources->unk_0014, 0, 2);
|
||||
gTasks[taskId].data[3] = 32;
|
||||
@@ -822,7 +822,7 @@ static void Task_OakSpeech7(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
sub_8006398(gTasks[taskId].data[5]);
|
||||
DestroyTextCursorSprite(gTasks[taskId].data[5]);
|
||||
PlayBGM(MUS_NEW_GAME_EXIT);
|
||||
data[15] = 24;
|
||||
gMain.state++;
|
||||
|
||||
+21
-21
@@ -292,8 +292,8 @@ void Overworld_ResetStateAfterFly(void)
|
||||
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
|
||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||
FlagClear(FLAG_SYS_FLASH_ACTIVE);
|
||||
FlagClear(FLAG_0x808);
|
||||
VarSet(VAR_0x404D, 0);
|
||||
FlagClear(FLAG_SYS_QL_DEPARTED);
|
||||
VarSet(VAR_QL_ENTRANCE, 0);
|
||||
}
|
||||
|
||||
void Overworld_ResetStateAfterTeleport(void)
|
||||
@@ -306,8 +306,8 @@ void Overworld_ResetStateAfterTeleport(void)
|
||||
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
|
||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||
FlagClear(FLAG_SYS_FLASH_ACTIVE);
|
||||
FlagClear(FLAG_0x808);
|
||||
VarSet(VAR_0x404D, 0);
|
||||
FlagClear(FLAG_SYS_QL_DEPARTED);
|
||||
VarSet(VAR_QL_ENTRANCE, 0);
|
||||
}
|
||||
|
||||
void Overworld_ResetStateAfterDigEscRope(void)
|
||||
@@ -320,8 +320,8 @@ void Overworld_ResetStateAfterDigEscRope(void)
|
||||
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
|
||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||
FlagClear(FLAG_SYS_FLASH_ACTIVE);
|
||||
FlagClear(FLAG_0x808);
|
||||
VarSet(VAR_0x404D, 0);
|
||||
FlagClear(FLAG_SYS_QL_DEPARTED);
|
||||
VarSet(VAR_QL_ENTRANCE, 0);
|
||||
}
|
||||
|
||||
static void Overworld_ResetStateAfterWhitingOut(void)
|
||||
@@ -334,8 +334,8 @@ static void Overworld_ResetStateAfterWhitingOut(void)
|
||||
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
|
||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||
FlagClear(FLAG_SYS_FLASH_ACTIVE);
|
||||
FlagClear(FLAG_0x808);
|
||||
VarSet(VAR_0x404D, 0);
|
||||
FlagClear(FLAG_SYS_QL_DEPARTED);
|
||||
VarSet(VAR_QL_ENTRANCE, 0);
|
||||
}
|
||||
|
||||
static void Overworld_ResetStateOnContinue(void)
|
||||
@@ -1393,7 +1393,7 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys)
|
||||
struct FieldInput fieldInput;
|
||||
|
||||
sub_8112B3C();
|
||||
sub_805BEB8();
|
||||
UpdatePlayerAvatarTransitionState();
|
||||
FieldClearPlayerInput(&fieldInput);
|
||||
FieldGetPlayerInput(&fieldInput, newKeys, heldKeys);
|
||||
FieldInput_HandleCancelSignpost(&fieldInput);
|
||||
@@ -1419,7 +1419,7 @@ static void DoCB1_Overworld_QuestLogPlayback(void)
|
||||
struct FieldInput fieldInput;
|
||||
|
||||
sub_8112B3C();
|
||||
sub_805BEB8();
|
||||
UpdatePlayerAvatarTransitionState();
|
||||
sub_8111C68();
|
||||
FieldClearPlayerInput(&fieldInput);
|
||||
fieldInput = gQuestLogFieldInput;
|
||||
@@ -1848,7 +1848,7 @@ static bool32 load_map_stuff(u8 *state, bool32 a1)
|
||||
(*state)++;
|
||||
break;
|
||||
case 1:
|
||||
sub_8111F14();
|
||||
QuestLog_InitPalettesBackup();
|
||||
(*state)++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -1865,8 +1865,8 @@ static bool32 load_map_stuff(u8 *state, bool32 a1)
|
||||
sub_8057114();
|
||||
if (gQuestLogState != QL_STATE_PLAYBACK)
|
||||
{
|
||||
sub_80CC534();
|
||||
sub_80CC59C();
|
||||
QuestLog_CheckDepartingIndoorsMap();
|
||||
QuestLog_TryRecordDepartedLocation();
|
||||
}
|
||||
SetHelpContextForMap();
|
||||
(*state)++;
|
||||
@@ -1931,7 +1931,7 @@ static bool32 sub_8056CD8(u8 *state)
|
||||
{
|
||||
case 0:
|
||||
InitOverworldBgs();
|
||||
sub_8111F14();
|
||||
QuestLog_InitPalettesBackup();
|
||||
sub_8057024(FALSE);
|
||||
sub_8057100();
|
||||
sub_8057114();
|
||||
@@ -1965,7 +1965,7 @@ static bool32 map_loading_iteration_2_link(u8 *state)
|
||||
(*state)++;
|
||||
break;
|
||||
case 1:
|
||||
sub_8111F14();
|
||||
QuestLog_InitPalettesBackup();
|
||||
sub_8057024(1);
|
||||
(*state)++;
|
||||
break;
|
||||
@@ -2203,7 +2203,7 @@ static void CreateLinkPlayerSprites(void)
|
||||
void CB2_SetUpOverworldForQLPlaybackWithWarpExit(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gUnknown_2036E28 = 1;
|
||||
gGlobalFieldTintMode = QL_TINT_GRAYSCALE;
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
SetMainCallback1(NULL);
|
||||
@@ -2214,7 +2214,7 @@ void CB2_SetUpOverworldForQLPlaybackWithWarpExit(void)
|
||||
void CB2_SetUpOverworldForQLPlayback(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gUnknown_2036E28 = 1;
|
||||
gGlobalFieldTintMode = QL_TINT_GRAYSCALE;
|
||||
LoadSaveblockMapHeader();
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
@@ -2243,7 +2243,7 @@ static bool32 LoadMap_QLPlayback(u8 *state)
|
||||
case 0:
|
||||
InitOverworldBgs();
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
sub_8111F14();
|
||||
QuestLog_InitPalettesBackup();
|
||||
sub_81113E4();
|
||||
sub_8111438();
|
||||
if (GetQuestLogStartType() == QL_START_WARP)
|
||||
@@ -2316,7 +2316,7 @@ void CB2_EnterFieldFromQuestLog(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
StopMapMusic();
|
||||
gUnknown_2036E28 = 3;
|
||||
gGlobalFieldTintMode = QL_TINT_BACKUP_GRAYSCALE;
|
||||
ResetSafariZoneFlag_();
|
||||
LoadSaveblockMapHeader();
|
||||
LoadSaveblockObjEventScripts();
|
||||
@@ -2367,10 +2367,10 @@ static bool8 FieldCB2_Credits_WaitFade(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 Overworld_DoScrollSceneForCredits(u8 *state_p, const struct CreditsOverworldCmd * script, u8 a2)
|
||||
bool32 Overworld_DoScrollSceneForCredits(u8 *state_p, const struct CreditsOverworldCmd * script, u8 tintMode)
|
||||
{
|
||||
sCreditsOverworld_Script = script;
|
||||
gUnknown_2036E28 = a2;
|
||||
gGlobalFieldTintMode = tintMode;
|
||||
return SetUpScrollSceneForCredits(state_p, 0);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -4315,7 +4315,7 @@ static void sub_8124E48(void)
|
||||
&& PSA_IsCancelDisabled() == TRUE)
|
||||
{
|
||||
GiveMoveToMon(&gPlayerParty[gPartyMenu.slotId], ItemIdToBattleMoveId(gSpecialVar_ItemId));
|
||||
AdjustFriendship(&gPlayerParty[gPartyMenu.slotId], 4);
|
||||
AdjustFriendship(&gPlayerParty[gPartyMenu.slotId], FRIENDSHIP_EVENT_LEARN_TMHM);
|
||||
if (gSpecialVar_ItemId <= ITEM_TM50)
|
||||
RemoveBagItem(gSpecialVar_ItemId, 1);
|
||||
SetMainCallback2(gPartyMenu.exitCallback);
|
||||
@@ -4336,7 +4336,7 @@ static void sub_8124EFC(void)
|
||||
|
||||
RemoveMonPPBonus(mon, moveIdx);
|
||||
SetMonMoveSlot(mon, ItemIdToBattleMoveId(gSpecialVar_ItemId), moveIdx);
|
||||
AdjustFriendship(mon, 4);
|
||||
AdjustFriendship(mon, FRIENDSHIP_EVENT_LEARN_TMHM);
|
||||
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, mon, gSpecialVar_ItemId, move);
|
||||
if (gSpecialVar_ItemId <= ITEM_TM50)
|
||||
RemoveBagItem(gSpecialVar_ItemId, 1);
|
||||
@@ -4837,7 +4837,7 @@ static void Task_LearnedMove(u8 taskId)
|
||||
|
||||
if (move[1] == 0)
|
||||
{
|
||||
AdjustFriendship(mon, 4);
|
||||
AdjustFriendship(mon, FRIENDSHIP_EVENT_LEARN_TMHM);
|
||||
if (item < ITEM_HM01_CUT)
|
||||
RemoveBagItem(item, 1);
|
||||
}
|
||||
|
||||
@@ -868,7 +868,7 @@ void sub_810250C(void)
|
||||
gUnknown_203ACF0->field_6C = sub_8104BBC(1, 1);
|
||||
gUnknown_203ACF0->field_66 = sub_8104BBC(0, 0);
|
||||
gUnknown_203ACF0->field_68 = sub_8104BBC(1, 0);
|
||||
sub_8072474(0x80);
|
||||
SetBGMVolume_SuppressHelpSystemReduction(0x80);
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
ChangeBgX(1, 0, 0);
|
||||
@@ -925,7 +925,7 @@ bool8 sub_8102798(void)
|
||||
FREE_IF_NOT_NULL(GetBgTilemapBuffer(1));
|
||||
FREE_IF_NOT_NULL(GetBgTilemapBuffer(2));
|
||||
FREE_IF_NOT_NULL(GetBgTilemapBuffer(3));
|
||||
sub_807249C();
|
||||
BGMVolumeMax_EnableHelpSystemReduction();
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
+96
-85
@@ -1594,16 +1594,16 @@ static const u8 sStatsToRaise[] =
|
||||
|
||||
static const s8 sFriendshipEventDeltas[][3] =
|
||||
{
|
||||
{ 5, 3, 2 },
|
||||
{ 5, 3, 2 },
|
||||
{ 1, 1, 0 },
|
||||
{ 3, 2, 1 },
|
||||
{ 1, 1, 0 },
|
||||
{ 1, 1, 1 },
|
||||
{ 3, 3, 3 },
|
||||
{-1, -1, -1 },
|
||||
{-5, -5, -10 },
|
||||
{-5, -5, -10 },
|
||||
[FRIENDSHIP_EVENT_GROW_LEVEL] = { 5, 3, 2 },
|
||||
[FRIENDSHIP_EVENT_VITAMIN] = { 5, 3, 2 },
|
||||
[FRIENDSHIP_EVENT_BATTLE_ITEM] = { 1, 1, 0 },
|
||||
[FRIENDSHIP_EVENT_LEAGUE_BATTLE] = { 3, 2, 1 },
|
||||
[FRIENDSHIP_EVENT_LEARN_TMHM] = { 1, 1, 0 },
|
||||
[FRIENDSHIP_EVENT_WALKING] = { 1, 1, 1 },
|
||||
[FRIENDSHIP_EVENT_MASSAGE] = { 3, 3, 3 },
|
||||
[FRIENDSHIP_EVENT_FAINT_SMALL] = {-1, -1, -1 },
|
||||
[FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE] = {-5, -5, -10 },
|
||||
[FRIENDSHIP_EVENT_FAINT_LARGE] = {-5, -5, -10 },
|
||||
};
|
||||
|
||||
static const u16 sHMMoves[] =
|
||||
@@ -1622,7 +1622,7 @@ static const u16 sDeoxysBaseStats[] =
|
||||
180, // Sp.Attack
|
||||
20, // Sp.Defense
|
||||
};
|
||||
#elif defined LEAFGREEN
|
||||
#elif defined(LEAFGREEN)
|
||||
static const u16 sDeoxysBaseStats[] =
|
||||
{
|
||||
50, // Hp
|
||||
@@ -4410,7 +4410,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
|
||||
static bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
|
||||
{
|
||||
u32 status = GetMonData(mon, MON_DATA_STATUS, 0);
|
||||
u32 status = GetMonData(mon, MON_DATA_STATUS, NULL);
|
||||
|
||||
if (status & healMask)
|
||||
{
|
||||
@@ -4874,7 +4874,7 @@ const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId)
|
||||
|
||||
u8 GetNature(struct Pokemon *mon)
|
||||
{
|
||||
return GetMonData(mon, MON_DATA_PERSONALITY, 0) % 25;
|
||||
return GetMonData(mon, MON_DATA_PERSONALITY, NULL) % 25;
|
||||
}
|
||||
|
||||
static u8 GetNatureFromPersonality(u32 personality)
|
||||
@@ -4886,12 +4886,12 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
|
||||
{
|
||||
int i;
|
||||
u16 targetSpecies = 0;
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
|
||||
u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
|
||||
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0);
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
|
||||
u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL);
|
||||
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
|
||||
u8 level;
|
||||
u16 friendship;
|
||||
u8 beauty = GetMonData(mon, MON_DATA_BEAUTY, 0);
|
||||
u8 beauty = GetMonData(mon, MON_DATA_BEAUTY, NULL);
|
||||
u16 upperPersonality = personality >> 16;
|
||||
u8 holdEffect;
|
||||
|
||||
@@ -4906,8 +4906,8 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
|
||||
switch (type)
|
||||
{
|
||||
case EVO_MODE_NORMAL:
|
||||
level = GetMonData(mon, MON_DATA_LEVEL, 0);
|
||||
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0);
|
||||
level = GetMonData(mon, MON_DATA_LEVEL, NULL);
|
||||
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL);
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
@@ -4938,17 +4938,17 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
|
||||
break;
|
||||
case EVO_LEVEL_ATK_GT_DEF:
|
||||
if (gEvolutionTable[species][i].param <= level)
|
||||
if (GetMonData(mon, MON_DATA_ATK, 0) > GetMonData(mon, MON_DATA_DEF, 0))
|
||||
if (GetMonData(mon, MON_DATA_ATK, NULL) > GetMonData(mon, MON_DATA_DEF, NULL))
|
||||
targetSpecies = gEvolutionTable[species][i].targetSpecies;
|
||||
break;
|
||||
case EVO_LEVEL_ATK_EQ_DEF:
|
||||
if (gEvolutionTable[species][i].param <= level)
|
||||
if (GetMonData(mon, MON_DATA_ATK, 0) == GetMonData(mon, MON_DATA_DEF, 0))
|
||||
if (GetMonData(mon, MON_DATA_ATK, NULL) == GetMonData(mon, MON_DATA_DEF, NULL))
|
||||
targetSpecies = gEvolutionTable[species][i].targetSpecies;
|
||||
break;
|
||||
case EVO_LEVEL_ATK_LT_DEF:
|
||||
if (gEvolutionTable[species][i].param <= level)
|
||||
if (GetMonData(mon, MON_DATA_ATK, 0) < GetMonData(mon, MON_DATA_DEF, 0))
|
||||
if (GetMonData(mon, MON_DATA_ATK, NULL) < GetMonData(mon, MON_DATA_DEF, NULL))
|
||||
targetSpecies = gEvolutionTable[species][i].targetSpecies;
|
||||
break;
|
||||
case EVO_LEVEL_SILCOON:
|
||||
@@ -5237,15 +5237,10 @@ static u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
|
||||
return n;
|
||||
}
|
||||
|
||||
// TODO: Move these to constants/trainers.h
|
||||
#define TRAINER_CLASS_ELITE_FOUR 0x54
|
||||
#define TRAINER_CLASS_LEADER 0x57
|
||||
#define TRAINER_CLASS_CHAMPION 0x5A
|
||||
|
||||
void AdjustFriendship(struct Pokemon *mon, u8 event)
|
||||
{
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
|
||||
u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, NULL);
|
||||
u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL);
|
||||
u8 holdEffect;
|
||||
|
||||
if (heldItem == ITEM_ENIGMA_BERRY)
|
||||
@@ -5262,40 +5257,56 @@ void AdjustFriendship(struct Pokemon *mon, u8 event)
|
||||
|
||||
if (species && species != SPECIES_EGG)
|
||||
{
|
||||
s8 delta;
|
||||
// Friendship level refers to the column in sFriendshipEventDeltas.
|
||||
// 0-99: Level 0 (maximum increase, typically)
|
||||
// 100-199: Level 1
|
||||
// 200-255: Level 2
|
||||
u8 friendshipLevel = 0;
|
||||
s16 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0);
|
||||
if (friendship > 99)
|
||||
s16 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL);
|
||||
if (friendship >= 100)
|
||||
friendshipLevel++;
|
||||
if (friendship > 199)
|
||||
if (friendship >= 200)
|
||||
friendshipLevel++;
|
||||
|
||||
if ((event != FRIENDSHIP_EVENT_WALKING || !(Random() & 1))
|
||||
&& (event != FRIENDSHIP_EVENT_LEAGUE_BATTLE
|
||||
|| ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
&& (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR
|
||||
|| gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_LEADER
|
||||
|| gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION))))
|
||||
if (event == FRIENDSHIP_EVENT_WALKING)
|
||||
{
|
||||
s8 delta = sFriendshipEventDeltas[event][friendshipLevel];
|
||||
if (delta > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
|
||||
delta = (150 * delta) / 100;
|
||||
|
||||
friendship += delta;
|
||||
if (delta > 0)
|
||||
{
|
||||
if (GetMonData(mon, MON_DATA_POKEBALL, 0) == ITEM_LUXURY_BALL)
|
||||
friendship++;
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, 0) == GetCurrentRegionMapSectionId())
|
||||
friendship++;
|
||||
}
|
||||
|
||||
if (friendship < 0)
|
||||
friendship = 0;
|
||||
if (friendship > 255)
|
||||
friendship = 255;
|
||||
|
||||
SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship);
|
||||
// 50% chance every 128 steps
|
||||
if (Random() & 1)
|
||||
return;
|
||||
}
|
||||
if (event == FRIENDSHIP_EVENT_LEAGUE_BATTLE)
|
||||
{
|
||||
// Only if it's a trainer battle with league progression significance
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
|
||||
return;
|
||||
if (!(gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_LEADER_2
|
||||
|| gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_ELITE_FOUR_2
|
||||
|| gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION_2))
|
||||
return;
|
||||
}
|
||||
|
||||
delta = sFriendshipEventDeltas[event][friendshipLevel];
|
||||
if (delta > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
|
||||
// 50% increase, rounding down
|
||||
delta = (150 * delta) / 100;
|
||||
|
||||
friendship += delta;
|
||||
if (delta > 0)
|
||||
{
|
||||
if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == ITEM_LUXURY_BALL)
|
||||
friendship++;
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId())
|
||||
friendship++;
|
||||
}
|
||||
|
||||
// Clamp to u8
|
||||
if (friendship < 0)
|
||||
friendship = 0;
|
||||
if (friendship > 255)
|
||||
friendship = 255;
|
||||
|
||||
SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5310,7 +5321,7 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
||||
|
||||
for (i = 0; i < NUM_STATS; i++)
|
||||
{
|
||||
evs[i] = GetMonData(mon, MON_DATA_HP_EV + i, 0);
|
||||
evs[i] = GetMonData(mon, MON_DATA_HP_EV + i, NULL);
|
||||
totalEVs += evs[i];
|
||||
}
|
||||
|
||||
@@ -5351,7 +5362,7 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
||||
break;
|
||||
}
|
||||
|
||||
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
|
||||
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL);
|
||||
|
||||
if (heldItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
@@ -5390,7 +5401,7 @@ u16 GetMonEVCount(struct Pokemon *mon)
|
||||
u16 count = 0;
|
||||
|
||||
for (i = 0; i < NUM_STATS; i++)
|
||||
count += GetMonData(mon, MON_DATA_HP_EV + i, 0);
|
||||
count += GetMonData(mon, MON_DATA_HP_EV + i, NULL);
|
||||
|
||||
return count;
|
||||
}
|
||||
@@ -5417,7 +5428,7 @@ u8 CheckPartyPokerus(struct Pokemon *party, u8 selection)
|
||||
{
|
||||
do
|
||||
{
|
||||
if ((selection & 1) && (GetMonData(&party[partyIndex], MON_DATA_POKERUS, 0) & 0xF))
|
||||
if ((selection & 1) && (GetMonData(&party[partyIndex], MON_DATA_POKERUS, NULL) & 0xF))
|
||||
retVal |= curBit;
|
||||
partyIndex++;
|
||||
curBit <<= 1;
|
||||
@@ -5425,7 +5436,7 @@ u8 CheckPartyPokerus(struct Pokemon *party, u8 selection)
|
||||
}
|
||||
while (selection);
|
||||
}
|
||||
else if (GetMonData(&party[0], MON_DATA_POKERUS, 0) & 0xF)
|
||||
else if (GetMonData(&party[0], MON_DATA_POKERUS, NULL) & 0xF)
|
||||
{
|
||||
retVal = 1;
|
||||
}
|
||||
@@ -5445,7 +5456,7 @@ u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection)
|
||||
{
|
||||
do
|
||||
{
|
||||
if ((selection & 1) && GetMonData(&party[partyIndex], MON_DATA_POKERUS, 0))
|
||||
if ((selection & 1) && GetMonData(&party[partyIndex], MON_DATA_POKERUS, NULL))
|
||||
retVal |= curBit;
|
||||
partyIndex++;
|
||||
curBit <<= 1;
|
||||
@@ -5453,7 +5464,7 @@ u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection)
|
||||
}
|
||||
while (selection);
|
||||
}
|
||||
else if (GetMonData(&party[0], MON_DATA_POKERUS, 0))
|
||||
else if (GetMonData(&party[0], MON_DATA_POKERUS, NULL))
|
||||
{
|
||||
retVal = 1;
|
||||
}
|
||||
@@ -5511,7 +5522,7 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon)
|
||||
|
||||
u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm)
|
||||
{
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, NULL);
|
||||
if (species == SPECIES_EGG)
|
||||
{
|
||||
return 0;
|
||||
@@ -5532,12 +5543,12 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves)
|
||||
{
|
||||
u16 learnedMoves[4];
|
||||
u8 numMoves = 0;
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
|
||||
u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
|
||||
u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL);
|
||||
int i, j, k;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0);
|
||||
learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, NULL);
|
||||
|
||||
for (i = 0; i < 20; i++)
|
||||
{
|
||||
@@ -5583,15 +5594,15 @@ u8 GetNumberOfRelearnableMoves(struct Pokemon *mon)
|
||||
u16 learnedMoves[4];
|
||||
u16 moves[20];
|
||||
u8 numMoves = 0;
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
|
||||
u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, NULL);
|
||||
u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL);
|
||||
int i, j, k;
|
||||
|
||||
if (species == SPECIES_EGG)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0);
|
||||
learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, NULL);
|
||||
|
||||
for (i = 0; i < 20; i++)
|
||||
{
|
||||
@@ -5685,9 +5696,9 @@ void PlayMapChosenOrBattleBGM(u16 songId)
|
||||
|
||||
const u32 *GetMonFrontSpritePal(struct Pokemon *mon)
|
||||
{
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
|
||||
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
|
||||
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0);
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, NULL);
|
||||
u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
|
||||
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
|
||||
return GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality);
|
||||
}
|
||||
|
||||
@@ -5707,9 +5718,9 @@ const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 p
|
||||
|
||||
const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon)
|
||||
{
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
|
||||
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
|
||||
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0);
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, NULL);
|
||||
u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
|
||||
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
|
||||
return GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
|
||||
}
|
||||
|
||||
@@ -5757,7 +5768,7 @@ bool8 IsTradedMon(struct Pokemon *mon)
|
||||
u8 otName[PLAYER_NAME_LENGTH];
|
||||
u32 otId;
|
||||
GetMonData(mon, MON_DATA_OT_NAME, otName);
|
||||
otId = GetMonData(mon, MON_DATA_OT_ID, 0);
|
||||
otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
|
||||
return IsOtherTrainer(otId, otName);
|
||||
}
|
||||
|
||||
@@ -5824,7 +5835,7 @@ void SetWildMonHeldItem(void)
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_POKEDUDE | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER)))
|
||||
{
|
||||
u16 rnd = Random() % 100;
|
||||
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0);
|
||||
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
|
||||
if (gBaseStats[species].item1 == gBaseStats[species].item2)
|
||||
{
|
||||
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1);
|
||||
@@ -5843,8 +5854,8 @@ void SetWildMonHeldItem(void)
|
||||
|
||||
bool8 IsMonShiny(struct Pokemon *mon)
|
||||
{
|
||||
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
|
||||
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0);
|
||||
u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
|
||||
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
|
||||
return IsShinyOtIdPersonality(otId, personality);
|
||||
}
|
||||
|
||||
@@ -5893,7 +5904,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
|
||||
case 0:
|
||||
default:
|
||||
return FALSE;
|
||||
case 1:
|
||||
case DEOXYS_CHECK_BATTLE_SPRITE:
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
return FALSE;
|
||||
if (!gMain.inBattle)
|
||||
@@ -5903,7 +5914,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
case DEOXYS_CHECK_TRADE_MAIN:
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
return FALSE;
|
||||
if (!gMain.inBattle)
|
||||
@@ -5913,7 +5924,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
|
||||
return FALSE;
|
||||
case 4:
|
||||
break;
|
||||
case 5:
|
||||
case DEOXYS_CHECK_BATTLE_ANIM:
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (!gMain.inBattle)
|
||||
@@ -5948,7 +5959,7 @@ static u16 GetDeoxysStat(struct Pokemon *mon, s32 statId)
|
||||
u16 statValue;
|
||||
u8 nature;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_20 || GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK_ESTABLISHED || GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
|
||||
{
|
||||
return statValue = 0;
|
||||
}
|
||||
|
||||
@@ -3996,16 +3996,16 @@ static void sub_813995C(void)
|
||||
if (sMonSummaryScreen->savedCallback == CB2_ReturnToTradeMenuFromSummary)
|
||||
{
|
||||
if (sMonSummaryScreen->isEnemyParty == TRUE)
|
||||
spriteId = CreateMonPicSprite(species, trainerId, personality, 1, 60, 65, 12, 0xffff, 1);
|
||||
spriteId = CreateMonPicSprite(species, trainerId, personality, TRUE, 60, 65, 12, 0xffff, TRUE);
|
||||
else
|
||||
spriteId = CreateMonPicSprite_HandleDeoxys(species, trainerId, personality, 1, 60, 65, 12, 0xffff);
|
||||
spriteId = CreateMonPicSprite_HandleDeoxys(species, trainerId, personality, TRUE, 60, 65, 12, 0xffff);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ShouldIgnoreDeoxysForm(3, sLastViewedMonIndex))
|
||||
spriteId = CreateMonPicSprite(species, trainerId, personality, 1, 60, 65, 12, 0xffff, 1);
|
||||
if (ShouldIgnoreDeoxysForm(DEOXYS_CHECK_TRADE_MAIN, sLastViewedMonIndex))
|
||||
spriteId = CreateMonPicSprite(species, trainerId, personality, TRUE, 60, 65, 12, 0xffff, TRUE);
|
||||
else
|
||||
spriteId = CreateMonPicSprite_HandleDeoxys(species, trainerId, personality, 1, 60, 65, 12, 0xffff);
|
||||
spriteId = CreateMonPicSprite_HandleDeoxys(species, trainerId, personality, TRUE, 60, 65, 12, 0xffff);
|
||||
}
|
||||
|
||||
FreeSpriteOamMatrix(&gSprites[spriteId]);
|
||||
@@ -4130,7 +4130,7 @@ static void sub_8139DBC(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ShouldIgnoreDeoxysForm(3, sLastViewedMonIndex))
|
||||
if (ShouldIgnoreDeoxysForm(DEOXYS_CHECK_TRADE_MAIN, sLastViewedMonIndex))
|
||||
sMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 0);
|
||||
else
|
||||
sMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 1);
|
||||
|
||||
+47
-36
@@ -77,7 +77,7 @@ EWRAM_DATA u16 *gUnknown_203AE04 = NULL;
|
||||
EWRAM_DATA u16 *sEventRecordingPointer = NULL;
|
||||
static EWRAM_DATA u16 *gUnknown_203AE0C[32] = {NULL};
|
||||
static EWRAM_DATA void (* sQuestLogCB)(void) = NULL;
|
||||
static EWRAM_DATA u16 *gUnknown_203AE90 = NULL;
|
||||
static EWRAM_DATA u16 *sPalettesBackup = NULL;
|
||||
static EWRAM_DATA struct UnkStruct_203AE94 sQuestLogCurrentScene = {0};
|
||||
static EWRAM_DATA struct QuestLogEntry sQuestLogSceneRecordBuffer[32] = {0};
|
||||
EWRAM_DATA u16 sQuestLogCursor = 0;
|
||||
@@ -121,7 +121,7 @@ static void Task_QuestLogScene_SavedGame(u8);
|
||||
static void Task_WaitAtEndOfQuestLog(u8);
|
||||
static void Task_EndQuestLog(u8);
|
||||
static bool8 sub_81121D8(u8);
|
||||
static void sub_811229C(void);
|
||||
static void QL_SlightlyDarkenSomePals(void);
|
||||
static void TogglePlaybackStateForOverworldLock(u8);
|
||||
static void SetUpQuestLogEntry(u8, struct QuestLogEntry *, u16);
|
||||
static bool8 RecordHeadAtEndOfEntryOrScriptContext2Enabled(void);
|
||||
@@ -420,7 +420,7 @@ void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
sub_811381C();
|
||||
QL_EnableRecordingSteps();
|
||||
sNumScenes = 0;
|
||||
for (i = 0; i < QUEST_LOG_SCENE_COUNT; i++)
|
||||
{
|
||||
@@ -1066,15 +1066,15 @@ static void QuestLog_WaitFadeAndCancelPlayback(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8111F14(void)
|
||||
void QuestLog_InitPalettesBackup(void)
|
||||
{
|
||||
if (gQuestLogState == QL_STATE_PLAYBACK_LAST)
|
||||
gUnknown_203AE90 = AllocZeroed(0x200 * sizeof(u16));
|
||||
sPalettesBackup = AllocZeroed(PLTT_SIZE);
|
||||
}
|
||||
|
||||
void sub_8111F38(u16 a0, u16 a1)
|
||||
void QuestLog_BackUpPalette(u16 offset, u16 size)
|
||||
{
|
||||
CpuSet(gPlttBufferUnfaded + a0, gUnknown_203AE90 + a0, a1);
|
||||
CpuCopy16(gPlttBufferUnfaded + offset, sPalettesBackup + offset, size * 2);
|
||||
}
|
||||
|
||||
static bool8 FieldCB2_FinalScene(void)
|
||||
@@ -1152,7 +1152,7 @@ static void Task_EndQuestLog(u8 taskId)
|
||||
case 0:
|
||||
gDisableMapMusicChangeOnMapLoad = 0;
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
sub_811229C();
|
||||
QL_SlightlyDarkenSomePals();
|
||||
FillWindowPixelRect(sQuestLogHeaderWindowIds[0], 0xF, 0, 0, sQuestLogHeaderWindowTemplates[0].width * 8, sQuestLogHeaderWindowTemplates[0].height * 8);
|
||||
tState++;
|
||||
break;
|
||||
@@ -1178,13 +1178,13 @@ static void Task_EndQuestLog(u8 taskId)
|
||||
default:
|
||||
if (sQuestLogCurrentScene.sceneEndMode == 1)
|
||||
ShowMapNamePopup(TRUE);
|
||||
CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400);
|
||||
Free(gUnknown_203AE90);
|
||||
CpuCopy16(sPalettesBackup, gPlttBufferUnfaded, PLTT_SIZE);
|
||||
Free(sPalettesBackup);
|
||||
sQuestLogCurrentScene = (struct UnkStruct_203AE94){};
|
||||
ClearPlayerHeldMovementAndUnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
gTextFlags.autoScroll = FALSE;
|
||||
gUnknown_2036E28 = 0;
|
||||
gGlobalFieldTintMode = QL_TINT_NONE;
|
||||
DisableWildEncounters(FALSE);
|
||||
gHelpSystemEnabled = TRUE;
|
||||
DestroyTask(taskId);
|
||||
@@ -1212,16 +1212,16 @@ static bool8 sub_81121D8(u8 taskId)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_811229C(void)
|
||||
static void QL_SlightlyDarkenSomePals(void)
|
||||
{
|
||||
u16 *buffer = Alloc(0x400);
|
||||
CpuCopy16(gUnknown_203AE90, buffer, 0x400);
|
||||
sub_807B0C4(gUnknown_203AE90, gUnknown_203AE90, 0xd0);
|
||||
sub_807B0C4(gUnknown_203AE90 + 0x110, gUnknown_203AE90 + 0x110, 0x10);
|
||||
sub_807B0C4(gUnknown_203AE90 + 0x160, gUnknown_203AE90 + 0x160, 0x40);
|
||||
sub_807B0C4(gUnknown_203AE90 + 0x1b0, gUnknown_203AE90 + 0x1b0, 0x50);
|
||||
CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400);
|
||||
CpuCopy16(buffer, gUnknown_203AE90, 0x400);
|
||||
u16 *buffer = Alloc(PLTT_SIZE);
|
||||
CpuCopy16(sPalettesBackup, buffer, PLTT_SIZE);
|
||||
SlightlyDarkenPalsInWeather(sPalettesBackup, sPalettesBackup, 13 * 16);
|
||||
SlightlyDarkenPalsInWeather(sPalettesBackup + 17 * 16, sPalettesBackup + 17 * 16, 1 * 16);
|
||||
SlightlyDarkenPalsInWeather(sPalettesBackup + 22 * 16, sPalettesBackup + 22 * 16, 4 * 16);
|
||||
SlightlyDarkenPalsInWeather(sPalettesBackup + 27 * 16, sPalettesBackup + 27 * 16, 5 * 16);
|
||||
CpuCopy16(sPalettesBackup, gPlttBufferUnfaded, PLTT_SIZE);
|
||||
CpuCopy16(buffer, sPalettesBackup, PLTT_SIZE);
|
||||
Free(buffer);
|
||||
}
|
||||
|
||||
@@ -1295,10 +1295,10 @@ void sub_811246C(struct Sprite *sprite)
|
||||
ObjectEventSetHeldMovement(objectEvent, sMovementScripts[0][0]);
|
||||
sMovementScripts[0][0] = 0xFF;
|
||||
}
|
||||
if (sMovementScripts[0][1] != OBJ_EVENT_ID_PLAYER)
|
||||
if (sMovementScripts[0][1] != 0xFF)
|
||||
{
|
||||
sub_8150454();
|
||||
sMovementScripts[0][1] = OBJ_EVENT_ID_PLAYER;
|
||||
QuestLogUpdatePlayerSprite(sMovementScripts[0][1]);
|
||||
sMovementScripts[0][1] = 0xFF;
|
||||
}
|
||||
sub_8063E28(objectEvent, sprite);
|
||||
}
|
||||
@@ -1313,7 +1313,7 @@ void sub_811246C(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81124EC(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId)
|
||||
void QuestLogRecordNPCStep(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId)
|
||||
{
|
||||
if (!RecordHeadAtEndOfEntryOrScriptContext2Enabled())
|
||||
{
|
||||
@@ -1328,7 +1328,7 @@ void sub_81124EC(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8112588(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 duration)
|
||||
void QuestLogRecordNPCStepWithDuration(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 duration)
|
||||
{
|
||||
if (!RecordHeadAtEndOfEntry())
|
||||
{
|
||||
@@ -1343,7 +1343,7 @@ void sub_8112588(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 dur
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8112628(u8 movementActionId)
|
||||
void QuestLogRecordPlayerStep(u8 movementActionId)
|
||||
{
|
||||
if (!RecordHeadAtEndOfEntryOrScriptContext2Enabled())
|
||||
{
|
||||
@@ -1360,7 +1360,7 @@ void sub_8112628(u8 movementActionId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81126AC(u8 movementActionId, u8 duration)
|
||||
void QuestLogRecordPlayerStepWithDuration(u8 movementActionId, u8 duration)
|
||||
{
|
||||
if (!RecordHeadAtEndOfEntry())
|
||||
{
|
||||
@@ -1374,7 +1374,7 @@ void sub_81126AC(u8 movementActionId, u8 duration)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8112720(u8 movementActionId)
|
||||
void QuestLogRecordPlayerAvatarGfxTransition(u8 movementActionId)
|
||||
{
|
||||
if (!RecordHeadAtEndOfEntry())
|
||||
{
|
||||
@@ -1387,7 +1387,7 @@ void sub_8112720(u8 movementActionId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811278C(u8 movementActionId, u8 duration)
|
||||
void QuestLogRecordPlayerAvatarGfxTransitionWithDuration(u8 movementActionId, u8 duration)
|
||||
{
|
||||
if (!RecordHeadAtEndOfEntry())
|
||||
{
|
||||
@@ -1404,13 +1404,21 @@ void sub_81127F8(struct FieldInput * a0)
|
||||
{
|
||||
if (sQuestLogCursor < sNumEventsInLogEntry)
|
||||
{
|
||||
// Retain only the following fields:
|
||||
// - pressedAButton
|
||||
// - checkStandardWildEncounter
|
||||
// - heldDirection
|
||||
// - heldDirection2
|
||||
// - tookStep
|
||||
// - pressedBButton
|
||||
// - dpadDirection
|
||||
u32 r2 = *(u32 *)a0 & 0x00FF00F3;
|
||||
sCurQuestLogEntry[sQuestLogCursor].duration = sNextStepDelay;
|
||||
sCurQuestLogEntry[sQuestLogCursor].command = 2;
|
||||
sCurQuestLogEntry[sQuestLogCursor].localId = r2;
|
||||
sCurQuestLogEntry[sQuestLogCursor].mapNum = r2 >> 8;
|
||||
sCurQuestLogEntry[sQuestLogCursor].mapNum = r2 >> 8; // always 0
|
||||
sCurQuestLogEntry[sQuestLogCursor].mapGroup = r2 >> 16;
|
||||
sCurQuestLogEntry[sQuestLogCursor].animId = r2 >> 24;
|
||||
sCurQuestLogEntry[sQuestLogCursor].animId = r2 >> 24; // always 0
|
||||
sQuestLogCursor++;
|
||||
if (ScriptContext2_IsEnabled())
|
||||
sNextStepDelay = TRUE;
|
||||
@@ -1434,13 +1442,13 @@ static void TogglePlaybackStateForOverworldLock(u8 a0)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81128BC(u8 a0)
|
||||
void QuestLog_OnEscalatorWarp(u8 direction)
|
||||
{
|
||||
u8 r1 = sub_8112CAC();
|
||||
|
||||
switch (a0)
|
||||
switch (direction)
|
||||
{
|
||||
case 1:
|
||||
case QL_ESCALATOR_OUT: // warp out
|
||||
if (r1 == 1)
|
||||
gQuestLogPlaybackState = 3;
|
||||
else if (r1 == 2)
|
||||
@@ -1452,7 +1460,7 @@ void sub_81128BC(u8 a0)
|
||||
gQuestLogPlaybackState = 4;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case QL_ESCALATOR_IN: // warp in
|
||||
if (r1 == 1)
|
||||
gQuestLogPlaybackState = 1;
|
||||
else if (r1 == 2)
|
||||
@@ -1546,9 +1554,11 @@ void sub_8112B3C(void)
|
||||
switch (sCurQuestLogEntry[sQuestLogCursor].command)
|
||||
{
|
||||
case 0:
|
||||
// NPC movement action
|
||||
sMovementScripts[sCurQuestLogEntry[sQuestLogCursor].localId][0] = sCurQuestLogEntry[sQuestLogCursor].animId;
|
||||
break;
|
||||
case 1:
|
||||
// State transition
|
||||
sMovementScripts[sCurQuestLogEntry[sQuestLogCursor].localId][1] = sCurQuestLogEntry[sQuestLogCursor].animId;
|
||||
break;
|
||||
case 2:
|
||||
@@ -1556,6 +1566,7 @@ void sub_8112B3C(void)
|
||||
*(u32 *)&gQuestLogFieldInput = ((sCurQuestLogEntry[sQuestLogCursor].animId << 24) | (sCurQuestLogEntry[sQuestLogCursor].mapGroup << 16) | (sCurQuestLogEntry[sQuestLogCursor].mapNum << 8) | (sCurQuestLogEntry[sQuestLogCursor].localId << 0));
|
||||
break;
|
||||
case 3:
|
||||
// End
|
||||
gQuestLogPlaybackState = 3;
|
||||
break;
|
||||
case 0xFE:
|
||||
@@ -1596,7 +1607,7 @@ void sub_8112B3C(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8112C9C(void)
|
||||
void QL_AfterRecordFishActionSuccessful(void)
|
||||
{
|
||||
sNextStepDelay++;
|
||||
}
|
||||
|
||||
@@ -173,10 +173,10 @@ void SetQuestLogEvent(u16 eventId, const u16 *eventData)
|
||||
|
||||
if (eventId == QL_EVENT_DEPARTED && sEventShouldNotRecordSteps == 2)
|
||||
{
|
||||
sub_811381C();
|
||||
QL_EnableRecordingSteps();
|
||||
return;
|
||||
}
|
||||
sub_811381C();
|
||||
QL_EnableRecordingSteps();
|
||||
if (gQuestLogState == QL_STATE_PLAYBACK)
|
||||
return;
|
||||
|
||||
@@ -348,7 +348,7 @@ static bool8 ShouldRegisterEvent_HandleBeatStoryTrainer(u16 eventId, const u16 *
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_811381C(void)
|
||||
void QL_EnableRecordingSteps(void)
|
||||
{
|
||||
sEventShouldNotRecordSteps = 0;
|
||||
}
|
||||
|
||||
+56
-55
@@ -7,71 +7,72 @@
|
||||
#include "field_effect.h"
|
||||
#include "field_effect_helpers.h"
|
||||
#include "quest_log.h"
|
||||
#include "quest_log_player.h"
|
||||
|
||||
static void sub_81504A8(void);
|
||||
static void sub_81504E8(void);
|
||||
static void sub_8150530(void);
|
||||
static void sub_81505C4(u8 taskId);
|
||||
static void sub_8150708(void);
|
||||
static void sub_815077C(void);
|
||||
static void sub_8150794(u8 taskId);
|
||||
static void sub_81507CC(void);
|
||||
static void sub_81507D8(void);
|
||||
static void sub_81507E4(void);
|
||||
static void sub_81507F0(void);
|
||||
static void sub_81507BC(struct ObjectEvent *a0, u8 a1);
|
||||
static void QL_GfxTransition_Normal(void);
|
||||
static void QL_GfxTransition_Bike(void);
|
||||
static void QL_GfxTransition_Fish(void);
|
||||
static void Task_QLFishMovement(u8 taskId);
|
||||
static void QL_GfxTransition_StartSurf(void);
|
||||
static void QL_GfxTransition_VSSeeker(void);
|
||||
static void Task_QLVSSeekerMovement(u8 taskId);
|
||||
static void QL_GfxTransition_StopSurfSouth(void);
|
||||
static void QL_GfxTransition_StopSurfNorth(void);
|
||||
static void QL_GfxTransition_StopSurfWest(void);
|
||||
static void QL_GfxTransition_StopSurfEast(void);
|
||||
static void QL_SetObjectGraphicsId(struct ObjectEvent *object, u8 graphicsId);
|
||||
|
||||
static void (*const gUnknown_8471EDC[])(void) = {
|
||||
sub_81504A8,
|
||||
sub_81504E8,
|
||||
sub_8150530,
|
||||
sub_8150708,
|
||||
sub_81507CC,
|
||||
sub_81507D8,
|
||||
sub_81507E4,
|
||||
sub_81507F0,
|
||||
sub_815077C
|
||||
static void (*const sQLGfxTransitions[])(void) = {
|
||||
[QL_PLAYER_GFX_NORMAL] = QL_GfxTransition_Normal,
|
||||
[QL_PLAYER_GFX_BIKE] = QL_GfxTransition_Bike,
|
||||
[QL_PLAYER_GFX_FISH] = QL_GfxTransition_Fish,
|
||||
[QL_PLAYER_GFX_SURF] = QL_GfxTransition_StartSurf,
|
||||
[QL_PLAYER_GFX_STOP_SURF_S] = QL_GfxTransition_StopSurfSouth,
|
||||
[QL_PLAYER_GFX_STOP_SURF_N] = QL_GfxTransition_StopSurfNorth,
|
||||
[QL_PLAYER_GFX_STOP_SURF_W] = QL_GfxTransition_StopSurfWest,
|
||||
[QL_PLAYER_GFX_STOP_SURF_E] = QL_GfxTransition_StopSurfEast,
|
||||
[QL_PLAYER_GFX_VSSEEKER] = QL_GfxTransition_VSSeeker
|
||||
};
|
||||
|
||||
void sub_8150454(u8 a0)
|
||||
void QuestLogUpdatePlayerSprite(u8 state)
|
||||
{
|
||||
if (a0 < NELEMS(gUnknown_8471EDC))
|
||||
gUnknown_8471EDC[a0]();
|
||||
if (state < NELEMS(sQLGfxTransitions))
|
||||
sQLGfxTransitions[state]();
|
||||
}
|
||||
|
||||
bool32 sub_8150474(u8 a0)
|
||||
bool32 QuestLogTryRecordPlayerAvatarGfxTransition(u8 state)
|
||||
{
|
||||
if (gQuestLogPlaybackState == 2)
|
||||
{
|
||||
sub_8112720(a0);
|
||||
QuestLogRecordPlayerAvatarGfxTransition(state);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8150498(u8 a0)
|
||||
void QuestLogCallUpdatePlayerSprite(u8 state)
|
||||
{
|
||||
return sub_8150454(a0);
|
||||
return QuestLogUpdatePlayerSprite(state);
|
||||
}
|
||||
|
||||
static void sub_81504A8(void)
|
||||
static void QL_GfxTransition_Normal(void)
|
||||
{
|
||||
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(0));
|
||||
QL_SetObjectGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_NORMAL));
|
||||
ObjectEventTurn(objectEvent, objectEvent->movementDirection);
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
}
|
||||
|
||||
static void sub_81504E8(void)
|
||||
static void QL_GfxTransition_Bike(void)
|
||||
{
|
||||
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(1));
|
||||
QL_SetObjectGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_BIKE));
|
||||
ObjectEventTurn(objectEvent, objectEvent->movementDirection);
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_MACH_BIKE);
|
||||
InitPlayerAvatarBikeState(0, 0);
|
||||
}
|
||||
|
||||
static void sub_8150530(void)
|
||||
static void QL_GfxTransition_Fish(void)
|
||||
{
|
||||
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
struct Sprite *sprite = &gSprites[objectEvent->spriteId];
|
||||
@@ -81,17 +82,17 @@ static void sub_8150530(void)
|
||||
u8 taskId;
|
||||
ScriptContext2_Enable();
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
taskId = CreateTask(sub_81505C4, 0xFF);
|
||||
taskId = CreateTask(Task_QLFishMovement, 0xFF);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(4));
|
||||
QL_SetObjectGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_FISH));
|
||||
StartSpriteAnim(sprite, GetFishingDirectionAnimNum(objectEvent->facingDirection));
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81505C4(u8 taskId)
|
||||
static void Task_QLFishMovement(u8 taskId)
|
||||
{
|
||||
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
struct Sprite *sprite = &gSprites[objectEvent->spriteId];
|
||||
@@ -101,7 +102,7 @@ static void sub_81505C4(u8 taskId)
|
||||
case 0:
|
||||
ObjectEventClearHeldMovementIfActive(objectEvent);
|
||||
objectEvent->enableAnim = TRUE;
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(4));
|
||||
QL_SetObjectGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_FISH));
|
||||
StartSpriteAnim(sprite, GetFishingDirectionAnimNum(objectEvent->facingDirection));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
@@ -122,9 +123,9 @@ static void sub_81505C4(u8 taskId)
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING))
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(0));
|
||||
QL_SetObjectGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_NORMAL));
|
||||
else
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(2));
|
||||
QL_SetObjectGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_RIDE));
|
||||
ObjectEventTurn(objectEvent, objectEvent->movementDirection);
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
@@ -135,14 +136,14 @@ static void sub_81505C4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8150708(void)
|
||||
static void QL_GfxTransition_StartSurf(void)
|
||||
{
|
||||
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
u8 fieldEffectId;
|
||||
|
||||
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING))
|
||||
{
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(2));
|
||||
QL_SetObjectGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_RIDE));
|
||||
ObjectEventTurn(objectEvent, objectEvent->movementDirection);
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
|
||||
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
|
||||
@@ -154,13 +155,13 @@ static void sub_8150708(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_815077C(void)
|
||||
static void QL_GfxTransition_VSSeeker(void)
|
||||
{
|
||||
FieldEffectStart(FLDEFF_USE_VS_SEEKER);
|
||||
CreateTask(sub_8150794, 0x00);
|
||||
CreateTask(Task_QLVSSeekerMovement, 0x00);
|
||||
}
|
||||
|
||||
static void sub_8150794(u8 taskId)
|
||||
static void Task_QLVSSeekerMovement(u8 taskId)
|
||||
{
|
||||
if (!FieldEffectActiveListContains(FLDEFF_USE_VS_SEEKER))
|
||||
{
|
||||
@@ -170,27 +171,27 @@ static void sub_8150794(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81507BC(struct ObjectEvent * a0, u8 a1)
|
||||
static void QL_SetObjectGraphicsId(struct ObjectEvent * object, u8 graphicsId)
|
||||
{
|
||||
ObjectEventSetGraphicsId(a0, a1);
|
||||
ObjectEventSetGraphicsId(object, graphicsId);
|
||||
}
|
||||
|
||||
static void sub_81507CC(void)
|
||||
static void QL_GfxTransition_StopSurfSouth(void)
|
||||
{
|
||||
CreateStopSurfingTask_NoMusicChange(1);
|
||||
CreateStopSurfingTask_NoMusicChange(DIR_SOUTH);
|
||||
}
|
||||
|
||||
static void sub_81507D8(void)
|
||||
static void QL_GfxTransition_StopSurfNorth(void)
|
||||
{
|
||||
CreateStopSurfingTask_NoMusicChange(2);
|
||||
CreateStopSurfingTask_NoMusicChange(DIR_NORTH);
|
||||
}
|
||||
|
||||
static void sub_81507E4(void)
|
||||
static void QL_GfxTransition_StopSurfWest(void)
|
||||
{
|
||||
CreateStopSurfingTask_NoMusicChange(3);
|
||||
CreateStopSurfingTask_NoMusicChange(DIR_WEST);
|
||||
}
|
||||
|
||||
static void sub_81507F0(void)
|
||||
static void QL_GfxTransition_StopSurfEast(void)
|
||||
{
|
||||
CreateStopSurfingTask_NoMusicChange(4);
|
||||
CreateStopSurfingTask_NoMusicChange(DIR_EAST);
|
||||
}
|
||||
|
||||
+7
-7
@@ -702,7 +702,7 @@ OK:
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 sub_80DA3AC(void)
|
||||
u8 SaveGame_AfterLinkTrade(void)
|
||||
{
|
||||
if (gFlashMemoryPresent != TRUE)
|
||||
return 1;
|
||||
@@ -712,18 +712,18 @@ u8 sub_80DA3AC(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool8 sub_80DA3D8(void)
|
||||
bool8 AfterLinkTradeSaveFailed(void)
|
||||
{
|
||||
u8 retVal = sub_80D9AA4(0xE, gRamSaveSectionLocations);
|
||||
if (gDamagedSaveSectors)
|
||||
DoSaveFailedScreen(SAVE_NORMAL);
|
||||
if (retVal == 0xFF)
|
||||
if (retVal == SAVE_STATUS_ERROR)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 sub_80DA40C(void)
|
||||
u8 ClearSaveAfterLinkTradeSaveFailure(void)
|
||||
{
|
||||
sub_80D9B04(0xE, gRamSaveSectionLocations);
|
||||
if (gDamagedSaveSectors)
|
||||
@@ -865,7 +865,7 @@ void Task_SaveGame_UpdatedLinkRecords(u8 taskId)
|
||||
break;
|
||||
case 3:
|
||||
SetContinueGameWarpStatusToDynamicWarp();
|
||||
sub_80DA3AC();
|
||||
SaveGame_AfterLinkTrade();
|
||||
gTasks[taskId].data[0] = 4;
|
||||
break;
|
||||
case 4:
|
||||
@@ -876,13 +876,13 @@ void Task_SaveGame_UpdatedLinkRecords(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (sub_80DA3D8())
|
||||
if (AfterLinkTradeSaveFailed())
|
||||
gTasks[taskId].data[0] = 6;
|
||||
else
|
||||
gTasks[taskId].data[0] = 4;
|
||||
break;
|
||||
case 6:
|
||||
sub_80DA40C();
|
||||
ClearSaveAfterLinkTradeSaveFailure();
|
||||
gTasks[taskId].data[0] = 7;
|
||||
break;
|
||||
case 7:
|
||||
|
||||
+5
-5
@@ -16,7 +16,7 @@ struct Fanfare
|
||||
|
||||
// TODO: what are these
|
||||
extern u8 gDisableMapMusicChangeOnMapLoad;
|
||||
extern u8 gUnknown_203F174;
|
||||
extern u8 gDisableHelpSystemVolumeReduce;
|
||||
|
||||
// ewram
|
||||
EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL;
|
||||
@@ -630,14 +630,14 @@ bool8 IsSpecialSEPlaying(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8072474(u16 volume)
|
||||
void SetBGMVolume_SuppressHelpSystemReduction(u16 volume)
|
||||
{
|
||||
gUnknown_203F174 = 1;
|
||||
gDisableHelpSystemVolumeReduce = TRUE;
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, volume);
|
||||
}
|
||||
|
||||
void sub_807249C(void)
|
||||
void BGMVolumeMax_EnableHelpSystemReduction(void)
|
||||
{
|
||||
gUnknown_203F174 = 0;
|
||||
gDisableHelpSystemVolumeReduce = FALSE;
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
|
||||
}
|
||||
|
||||
+4
-4
@@ -1173,10 +1173,10 @@ const u8 gUnknown_841DF8B[] = _("BRONZE");
|
||||
const u8 gUnknown_841DF92[] = _("COPPER");
|
||||
const u8 gUnknown_841DF99[] = _("SILVER");
|
||||
const u8 gUnknown_841DFA0[] = _("GOLD");
|
||||
const u8 gUnknown_841DFA5[] = _("{A_BUTTON}NEXT");
|
||||
const u8 gUnknown_841DFAC[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}END");
|
||||
const u8 gUnknown_841DFBE[] = _("{A_BUTTON}{B_BUTTON}CANCEL");
|
||||
const u8 gUnknown_841DFC9[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}CANCEL");
|
||||
const u8 gText_HelpSystemControls_A_Next[] = _("{A_BUTTON}NEXT");
|
||||
const u8 gText_HelpSystemControls_PickOkEnd[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}END");
|
||||
const u8 gText_HelpSystemControls_AorBtoCancel[] = _("{A_BUTTON}{B_BUTTON}CANCEL");
|
||||
const u8 gText_HelpSystemControls_PickOkCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}CANCEL");
|
||||
const u8 gEasyChatGroupName_Pokemon[] = _("POKéMON");
|
||||
const u8 gEasyChatGroupName_Trainer[] = _("TRAINER");
|
||||
const u8 gEasyChatGroupName_Status[] = _("STATUS");
|
||||
|
||||
+5
-5
@@ -1283,7 +1283,7 @@ static void TeachyTvLoadMapTilesetToBuffer(struct Tileset *ts, u8 *dstBuffer, u1
|
||||
if (ts)
|
||||
{
|
||||
if (!ts->isCompressed)
|
||||
CpuFastSet(ts->tiles, dstBuffer, 8 * size);
|
||||
CpuFastCopy(ts->tiles, dstBuffer, 0x20 * size);
|
||||
else
|
||||
LZDecompressWram(ts->tiles, dstBuffer);
|
||||
}
|
||||
@@ -1291,7 +1291,7 @@ static void TeachyTvLoadMapTilesetToBuffer(struct Tileset *ts, u8 *dstBuffer, u1
|
||||
|
||||
static void TeachyTvPushBackNewMapPalIndexArrayEntry(const struct MapLayout *mStruct, u16 *buf1, u8 *palIndexArray, u16 mapEntry, u16 offset)
|
||||
{
|
||||
u16 * metaTileEntryAddr = mapEntry <= 0x27F ? &((u16*)(mStruct->primaryTileset->metatiles))[8 * mapEntry] : &((u16*)(mStruct->secondaryTileset->metatiles))[8 * (mapEntry - 0x280)];
|
||||
u16 * metaTileEntryAddr = mapEntry < 0x280 ? &((u16*)(mStruct->primaryTileset->metatiles))[8 * mapEntry] : &((u16*)(mStruct->secondaryTileset->metatiles))[8 * (mapEntry - 0x280)];
|
||||
buf1[0] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[0]) << 12) + 4 * offset;
|
||||
buf1[1] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[1]) << 12) + 4 * offset + 1;
|
||||
buf1[32] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[2]) << 12) + 4 * offset + 2;
|
||||
@@ -1316,7 +1316,7 @@ static void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBu
|
||||
u8 i, j;
|
||||
u8 * buffer = AllocZeroed(0x20);
|
||||
u8 * src = AllocZeroed(0x20);
|
||||
CpuFastSet(tileset, buffer, 8);
|
||||
CpuFastCopy(tileset, buffer, 0x20);
|
||||
if (metaTile & 1)
|
||||
{
|
||||
for (i = 0; i < 8; ++i)
|
||||
@@ -1328,13 +1328,13 @@ static void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBu
|
||||
src[(i << 2) + j] = ((value & 0xF) << 4) + ((value & 0xF0) >> 4);
|
||||
}
|
||||
}
|
||||
CpuFastSet(src, buffer, 8);
|
||||
CpuFastCopy(src, buffer, 0x20);
|
||||
}
|
||||
if (metaTile & 2)
|
||||
{
|
||||
for (i = 0; i < 8; ++i)
|
||||
memcpy(&src[4 * i], &buffer[4 * (7 - i)], 4);
|
||||
CpuFastSet(src, buffer, 8);
|
||||
CpuFastCopy(src, buffer, 0x20);
|
||||
}
|
||||
for (i = 0; i < 32; ++i)
|
||||
{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user