Merge pull request #404 from PikalaxALT/misc_doc

[PARTIALLY LEAK INFORMED] Miscellaneous cleanup and documentation
This commit is contained in:
GriffinR
2021-03-24 23:19:48 -04:00
committed by GitHub
109 changed files with 4885 additions and 5195 deletions
+2 -1
View File
@@ -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
+8 -8
View File
@@ -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
{
+2 -1
View File
@@ -1 +1,2 @@
gHelpSystemEnabled
gHelpSystemState
gHelpContextIdBackup
-2
View File
@@ -1,2 +0,0 @@
gHelpSystemState
gHelpContextIdBackup
+1
View File
@@ -0,0 +1 @@
gHelpSystemEnabled
+1 -1
View File
@@ -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
+47 -47
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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[];
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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
+15 -9
View File
@@ -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
+6
View File
@@ -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
+1 -1
View File
@@ -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
+4 -3
View File
@@ -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
View File
@@ -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[];
+1 -1
View File
@@ -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);
+4 -4
View File
@@ -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);
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+5 -5
View File
@@ -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
View File
@@ -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
View File
@@ -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 *);
+13 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+3 -3
View File
@@ -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
View File
@@ -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];
+7 -7
View File
@@ -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タスクがオ-バ-しました");
+5 -5
View File
@@ -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())
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
View File
@@ -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:
+1 -1
View File
@@ -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)
{
+5 -5
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
{
+5 -5
View File
@@ -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++;
}
+6 -6
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
}
+8 -8
View File
@@ -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
View File
@@ -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
View File
@@ -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]);
+1 -1
View File
@@ -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;
}
+8 -8
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+856
View File
@@ -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;
}
+5 -5
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+7 -7
View File
@@ -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;
+1 -1
View File
@@ -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
View File
@@ -138,7 +138,7 @@ void NewGameInitData(void)
gSaveBlock1Ptr->registeredItem = 0;
ClearBag();
NewGameInitPCItems();
sub_809C794();
ClearEnigmaBerries();
InitEasyChatPhrases();
ResetTrainerFanClub();
UnionRoomChat_InitializeRegisteredTexts();
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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);
}
+2 -2
View File
@@ -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
View File
@@ -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;
}
+6 -6
View File
@@ -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
View File
@@ -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++;
}
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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