From 6dffa6d17c35fe13f5878bd7bbf8a3fe1054c20c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 22 Dec 2018 19:33:45 +0100 Subject: [PATCH] Match and clean up fldeff misc --- include/event_object_movement.h | 2 + include/event_scripts.h | 5 + include/fldeff_misc.h | 41 ++- src/fldeff_misc.c | 456 +++++++++----------------------- 4 files changed, 153 insertions(+), 351 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index cc45f1531..4d0c21f98 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -59,6 +59,8 @@ struct LockedAnimEventObjects }; extern const struct SpriteFrameImage gEventObjectPicTable_PechaBerryTree[]; +extern const struct OamData gEventObjectBaseOam_32x8; +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; extern const u8 gReflectionEffectPaletteMap[]; void ResetEventObjects(void); diff --git a/include/event_scripts.h b/include/event_scripts.h index 2661494d3..3dcb7f929 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -579,4 +579,9 @@ extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C4F[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C6A[]; +// fldeff misc +extern const u8 EventScript_275A86[]; +extern const u8 EventScript_275ADF[]; +extern const u8 EventScript_275B38[]; + #endif // GUARD_EVENT_SCRIPTS_H diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h index 954ecbb5c..fc2f1b3e3 100644 --- a/include/fldeff_misc.h +++ b/include/fldeff_misc.h @@ -1,24 +1,37 @@ #ifndef GUARD_FLDEFF_MISC_H #define GUARD_FLDEFF_MISC_H -void PopSecretBaseBalloon(s16 id, s16 x, s16 y); +void sub_80F9BCC(u16 a0, u16 a1, u8 a2); +void sub_80F9BF4(u16 a0, u16 a1, u8 a2); +bool8 sub_80F9C1C(void); +bool8 sub_80F9C30(void); +bool8 SetUpFieldMove_SecretPower(void); +bool8 FldEff_UseSecretPowerCave(void); +bool8 FldEff_SecretPowerCave(void); +bool8 FldEff_UseSecretPowerTree(void); +bool8 FldEff_SecretPowerTree(void); +bool8 FldEff_UseSecretPowerShrub(void); +bool8 FldEff_SecretPowerShrub(void); +bool8 FldEff_SecretBasePCTurnOn(void); +void DoSecretBasePCTurnOffEffect(void); +void PopSecretBaseBalloon(s16 metatileId, s16 x, s16 y); +bool8 FldEff_NopA6FC(void); +bool8 FldEff_NopA700(void); void ShatterSecretBaseBreakableDoor(s16 x, s16 y); -u8 CreateRecordMixingSprite(void); -void DestroyRecordMixingSprite(void); -void FldEffPoison_Start(void); void PlaySecretBaseMusicNoteMatSound(s16 metatileId); void DoSecretBaseGlitterMatSparkle(void); -bool8 sub_80FADE4(u16, u8); - -extern struct MapPosition gPlayerFacingPosition; -extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; - -extern u8 EventScript_275A86[]; -extern u8 EventScript_275ADF[]; -extern u8 EventScript_275B38[]; - -extern const struct OamData gEventObjectBaseOam_32x8; +bool8 FldEff_SandPillar(void); +void GetShieldToyTVDecorationInfo(void); +bool8 sub_80FADE4(u16 arg0, u8 arg1); +void FldEffPoison_Start(void); +bool32 FldEffPoison_IsActive(void); +void DoWateringBerryTreeAnim(void); +u8 CreateRecordMixingSprite(void); +void DestroyRecordMixingSprite(void); +const struct SpritePalette gFieldEffectObjectPaletteInfo7; +const struct SpritePalette gFieldEffectObjectPaletteInfo8; +const struct SpritePalette gFieldEffectObjectPaletteInfo9; extern const u16 gTilesetPalettes_SecretBase[][16]; #endif //GUARD_FLDEFF_MISC_H diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index 79f0a8ede..d9fe38197 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -11,8 +11,10 @@ #include "field_effect.h" #include "field_camera.h" #include "field_player_avatar.h" +#include "fldeff_misc.h" #include "secret_base.h" #include "event_data.h" +#include "event_scripts.h" #include "event_object_movement.h" #include "metatile_behavior.h" #include "string_util.h" @@ -20,70 +22,71 @@ #include "constants/metatile_behaviors.h" #include "constants/songs.h" #include "constants/vars.h" -#include "fldeff_misc.h" -void sub_80F9C90(u8); -void sub_80F9DFC(u8); +extern struct MapPosition gPlayerFacingPosition; -void Task_SecretBasePCTurnOn(u8); +static void sub_80F9C90(u8); +static void sub_80F9DFC(u8); -void Task_PopSecretBaseBalloon(u8); -void DoBalloonSoundEffect(s16); +static void Task_SecretBasePCTurnOn(u8); -void Task_WateringBerryTreeAnim_1(u8); -void Task_WateringBerryTreeAnim_2(u8); -void Task_WateringBerryTreeAnim_3(u8); +static void Task_PopSecretBaseBalloon(u8); +static void DoBalloonSoundEffect(s16); -void sub_80F9C44(TaskFunc, u16, u16, u8); +static void Task_WateringBerryTreeAnim_1(u8); +static void Task_WateringBerryTreeAnim_2(u8); +static void Task_WateringBerryTreeAnim_3(u8); -void FieldCallback_SecretBaseCave(void); +static void sub_80F9C44(TaskFunc, u16, u16, u8); + +static void FieldCallback_SecretBaseCave(void); static void CaveEntranceSpriteCallback1(struct Sprite *); static void CaveEntranceSpriteCallback2(struct Sprite *); static void CaveEntranceSpriteCallbackEnd(struct Sprite *); static void StartSecretBaseCaveFieldEffect(void); -void FieldCallback_SecretBaseTree(void); +static void FieldCallback_SecretBaseTree(void); static void TreeEntranceSpriteCallback1(struct Sprite *); static void TreeEntranceSpriteCallback2(struct Sprite *); static void TreeEntranceSpriteCallbackEnd(struct Sprite *); static void StartSecretBaseTreeFieldEffect(void); -void FieldCallback_SecretBaseShrub(void); +static void FieldCallback_SecretBaseShrub(void); static void ShrubEntranceSpriteCallback1(struct Sprite *); static void ShrubEntranceSpriteCallback2(struct Sprite *); static void ShrubEntranceSpriteCallbackEnd(struct Sprite *); static void StartSecretBaseShrubFieldEffect(void); -void SpriteCB_SandPillar_0(struct Sprite *); -void SpriteCB_SandPillar_1(struct Sprite *); -void SpriteCB_SandPillar_2(struct Sprite *); +static void SpriteCB_SandPillar_0(struct Sprite *); +static void SpriteCB_SandPillar_1(struct Sprite *); +static void SpriteCB_SandPillar_2(struct Sprite *); -const u8 gSpriteImage_858D978[] = INCBIN_U8("graphics/unknown/858E588/0.4bpp"); -const u8 gSpriteImage_858D9F8[] = INCBIN_U8("graphics/unknown/858E588/1.4bpp"); -const u8 gSpriteImage_858DA78[] = INCBIN_U8("graphics/unknown/858E588/2.4bpp"); -const u8 gSpriteImage_858DAF8[] = INCBIN_U8("graphics/unknown/858E588/3.4bpp"); -const u8 gSpriteImage_858DB78[] = INCBIN_U8("graphics/unknown/858E588/4.4bpp"); +static const u8 gSpriteImage_858D978[] = INCBIN_U8("graphics/unknown/858E588/0.4bpp"); +static const u8 gSpriteImage_858D9F8[] = INCBIN_U8("graphics/unknown/858E588/1.4bpp"); +static const u8 gSpriteImage_858DA78[] = INCBIN_U8("graphics/unknown/858E588/2.4bpp"); +static const u8 gSpriteImage_858DAF8[] = INCBIN_U8("graphics/unknown/858E588/3.4bpp"); +static const u8 gSpriteImage_858DB78[] = INCBIN_U8("graphics/unknown/858E588/4.4bpp"); -const u8 gUnusedEmptySpace_858DBF8[32] = {0}; +static const u8 gUnusedEmptySpace_858DBF8[32] = {0}; -const u16 gFieldEffectObjectPalette7[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_07.gbapal"); -const u8 gSpriteImage_858DC38[] = INCBIN_U8("graphics/unknown/858E5D8/0.4bpp"); -const u8 gSpriteImage_858DCB8[] = INCBIN_U8("graphics/unknown/858E5D8/1.4bpp"); -const u8 gSpriteImage_858DD38[] = INCBIN_U8("graphics/unknown/858E5D8/2.4bpp"); -const u8 gSpriteImage_858DDB8[] = INCBIN_U8("graphics/unknown/858E5D8/3.4bpp"); -const u8 gSpriteImage_858DE38[] = INCBIN_U8("graphics/unknown/858E5D8/4.4bpp"); -const u8 gSpriteImage_858DEB8[] = INCBIN_U8("graphics/unknown/858E5B0/0.4bpp"); -const u8 gSpriteImage_858DF38[] = INCBIN_U8("graphics/unknown/858E5B0/1.4bpp"); -const u8 gSpriteImage_858DFB8[] = INCBIN_U8("graphics/unknown/858E5B0/2.4bpp"); -const u8 gSpriteImage_858E038[] = INCBIN_U8("graphics/unknown/858E5B0/3.4bpp"); -const u8 gSpriteImage_858E0B8[] = INCBIN_U8("graphics/unknown/858E5B0/4.4bpp"); -const u8 gSpriteImage_858E138[] = INCBIN_U8("graphics/unknown/858E5B0/5.4bpp"); -const u16 gFieldEffectObjectPalette8[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_08.gbapal"); -const u8 gSpriteImage_858E1D8[] = INCBIN_U8("graphics/unknown/858E674/0.4bpp"); -const u8 gSpriteImage_858E2D8[] = INCBIN_U8("graphics/unknown/858E674/1.4bpp"); -const u8 gSpriteImage_858E3D8[] = INCBIN_U8("graphics/unknown/858E674/2.4bpp"); +static const u16 gFieldEffectObjectPalette7[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_07.gbapal"); +static const u8 gSpriteImage_858DC38[] = INCBIN_U8("graphics/unknown/858E5D8/0.4bpp"); +static const u8 gSpriteImage_858DCB8[] = INCBIN_U8("graphics/unknown/858E5D8/1.4bpp"); +static const u8 gSpriteImage_858DD38[] = INCBIN_U8("graphics/unknown/858E5D8/2.4bpp"); +static const u8 gSpriteImage_858DDB8[] = INCBIN_U8("graphics/unknown/858E5D8/3.4bpp"); +static const u8 gSpriteImage_858DE38[] = INCBIN_U8("graphics/unknown/858E5D8/4.4bpp"); +static const u8 gSpriteImage_858DEB8[] = INCBIN_U8("graphics/unknown/858E5B0/0.4bpp"); +static const u8 gSpriteImage_858DF38[] = INCBIN_U8("graphics/unknown/858E5B0/1.4bpp"); +static const u8 gSpriteImage_858DFB8[] = INCBIN_U8("graphics/unknown/858E5B0/2.4bpp"); +static const u8 gSpriteImage_858E038[] = INCBIN_U8("graphics/unknown/858E5B0/3.4bpp"); +static const u8 gSpriteImage_858E0B8[] = INCBIN_U8("graphics/unknown/858E5B0/4.4bpp"); +static const u8 gSpriteImage_858E138[] = INCBIN_U8("graphics/unknown/858E5B0/5.4bpp"); +static const u16 gFieldEffectObjectPalette8[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_08.gbapal"); +static const u8 gSpriteImage_858E1D8[] = INCBIN_U8("graphics/unknown/858E674/0.4bpp"); +static const u8 gSpriteImage_858E2D8[] = INCBIN_U8("graphics/unknown/858E674/1.4bpp"); +static const u8 gSpriteImage_858E3D8[] = INCBIN_U8("graphics/unknown/858E674/2.4bpp"); -const struct OamData gOamData_858E4D8 = +static const struct OamData gOamData_858E4D8 = { .y = 0, .x = 0, @@ -95,7 +98,7 @@ const struct OamData gOamData_858E4D8 = .priority = 2, }; -const union AnimCmd gSpriteAnim_858E4E0[] = +static const union AnimCmd gSpriteAnim_858E4E0[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(1, 8), @@ -105,7 +108,7 @@ const union AnimCmd gSpriteAnim_858E4E0[] = ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_858E4F8[] = +static const union AnimCmd gSpriteAnim_858E4F8[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(1, 8), @@ -115,7 +118,7 @@ const union AnimCmd gSpriteAnim_858E4F8[] = ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_858E510[] = +static const union AnimCmd gSpriteAnim_858E510[] = { ANIMCMD_FRAME(4, 8), ANIMCMD_FRAME(3, 8), @@ -125,7 +128,7 @@ const union AnimCmd gSpriteAnim_858E510[] = ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_858E528[] = +static const union AnimCmd gSpriteAnim_858E528[] = { ANIMCMD_FRAME(0, 8, .hFlip = TRUE), ANIMCMD_FRAME(1, 8, .hFlip = TRUE), @@ -135,7 +138,7 @@ const union AnimCmd gSpriteAnim_858E528[] = ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_858E540[] = +static const union AnimCmd gSpriteAnim_858E540[] = { ANIMCMD_FRAME(4, 8, .hFlip = TRUE), ANIMCMD_FRAME(3, 8, .hFlip = TRUE), @@ -145,7 +148,7 @@ const union AnimCmd gSpriteAnim_858E540[] = ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_858E558[] = +static const union AnimCmd gSpriteAnim_858E558[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(1, 8), @@ -155,12 +158,12 @@ const union AnimCmd gSpriteAnim_858E558[] = ANIMCMD_END, }; -const union AnimCmd *const gSpriteAnimTable_858E570[] = +static const union AnimCmd *const gSpriteAnimTable_858E570[] = { gSpriteAnim_858E4E0, }; -const union AnimCmd *const gSpriteAnimTable_858E574[] = +static const union AnimCmd *const gSpriteAnimTable_858E574[] = { gSpriteAnim_858E4F8, gSpriteAnim_858E510, @@ -168,12 +171,12 @@ const union AnimCmd *const gSpriteAnimTable_858E574[] = gSpriteAnim_858E540, }; -const union AnimCmd *const gSpriteAnimTable_858E584[] = +static const union AnimCmd *const gSpriteAnimTable_858E584[] = { gSpriteAnim_858E558, }; -const struct SpriteFrameImage gUnknown_858E588[] = +static const struct SpriteFrameImage gUnknown_858E588[] = { {gSpriteImage_858D978, 0x80}, {gSpriteImage_858D9F8, 0x80}, @@ -182,7 +185,7 @@ const struct SpriteFrameImage gUnknown_858E588[] = {gSpriteImage_858DB78, 0x80}, }; -const struct SpriteFrameImage gUnknown_858E5B0[] = +static const struct SpriteFrameImage gUnknown_858E5B0[] = { {gSpriteImage_858DEB8, 0x80}, {gSpriteImage_858DF38, 0x80}, @@ -191,7 +194,7 @@ const struct SpriteFrameImage gUnknown_858E5B0[] = {gSpriteImage_858E0B8, 0x80}, }; -const struct SpriteFrameImage gUnknown_858E5D8[] = +static const struct SpriteFrameImage gUnknown_858E5D8[] = { {gSpriteImage_858DC38, 0x80}, {gSpriteImage_858DCB8, 0x80}, @@ -200,7 +203,7 @@ const struct SpriteFrameImage gUnknown_858E5D8[] = {gSpriteImage_858DE38, 0x80}, }; -const struct SpriteTemplate gUnknown_0858E600 = +static const struct SpriteTemplate gUnknown_0858E600 = { .tileTag = 0xFFFF, .paletteTag = 0x1003, @@ -211,7 +214,7 @@ const struct SpriteTemplate gUnknown_0858E600 = .callback = CaveEntranceSpriteCallback1, }; -const struct SpriteTemplate gUnknown_0858E618 = +static const struct SpriteTemplate gUnknown_0858E618 = { .tileTag = 0xFFFF, .paletteTag = 0x1008, @@ -222,7 +225,7 @@ const struct SpriteTemplate gUnknown_0858E618 = .callback = TreeEntranceSpriteCallback1, }; -const struct SpriteTemplate gUnknown_0858E630 = +static const struct SpriteTemplate gUnknown_0858E630 = { .tileTag = 0xFFFF, .paletteTag = 0x1008, @@ -236,7 +239,7 @@ const struct SpriteTemplate gUnknown_0858E630 = const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003}; const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008}; -const struct OamData gOamData_858E658 = +static const struct OamData gOamData_858E658 = { .x = 0, .y = 0, @@ -248,7 +251,7 @@ const struct OamData gOamData_858E658 = .priority = 2, }; -const union AnimCmd gSpriteAnim_858E660[] = +static const union AnimCmd gSpriteAnim_858E660[] = { ANIMCMD_FRAME(0, 6), ANIMCMD_FRAME(1, 6), @@ -256,19 +259,19 @@ const union AnimCmd gSpriteAnim_858E660[] = ANIMCMD_END, }; -const union AnimCmd *const gSpriteAnimTable_858E670[] = +static const union AnimCmd *const gSpriteAnimTable_858E670[] = { gSpriteAnim_858E660, }; -const struct SpriteFrameImage gUnknown_0858E674[] = +static const struct SpriteFrameImage gUnknown_0858E674[] = { {gSpriteImage_858E1D8, 0x100}, {gSpriteImage_858E2D8, 0x100}, {gSpriteImage_858E3D8, 0x100}, }; -const struct SpriteTemplate gUnknown_0858E68C = +static const struct SpriteTemplate gUnknown_0858E68C = { .tileTag = 0xFFFF, .paletteTag = 0x100E, @@ -340,7 +343,7 @@ bool8 sub_80F9C30(void) return FuncIsActiveTask(sub_80F9DFC); } -void sub_80F9C44(void (*taskfunc) (u8), u16 a1, u16 a2, u8 a3) +static void sub_80F9C44(void (*taskfunc) (u8), u16 a1, u16 a2, u8 a3) { u8 taskId = CreateTask(taskfunc, a3); @@ -350,12 +353,11 @@ void sub_80F9C44(void (*taskfunc) (u8), u16 a1, u16 a2, u8 a3) gTasks[taskId].func(taskId); } -#ifdef NONMATCHING -void sub_80F9C90(u8 taskId) +static void sub_80F9C90(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch(task->data[0]) + switch (task->data[0]) { case 0: task->data[3] = 0x78; @@ -365,7 +367,7 @@ void sub_80F9C90(u8 taskId) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4])); - SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[5], task->data[6])); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6])); SetGpuReg(REG_OFFSET_WININ, 0x3F); SetGpuReg(REG_OFFSET_WINOUT, 0); @@ -400,7 +402,7 @@ void sub_80F9C90(u8 taskId) task->data[5] -= task->data[2]; task->data[6] += task->data[2]; - if (task->data[5] < 1 || task->data[2] > 0x9F) + if (task->data[5] < 1 || task->data[6] > 0x9F) { task->data[5] = 0; task->data[6] = 0xA0; @@ -416,189 +418,10 @@ void sub_80F9C90(u8 taskId) DestroyTask(taskId); return; } - task->data[0] += 1; + task->data[0]++; } -#else -NAKED -void sub_80F9C90(u8 taskId) -{ - asm_unified("\tpush {r4,r5,lr}\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tlsls r0, r5, 2\n" - "\tadds r0, r5\n" - "\tlsls r0, 3\n" - "\tldr r1, =gTasks\n" - "\tadds r4, r0, r1\n" - "\tmovs r1, 0x8\n" - "\tldrsh r0, [r4, r1]\n" - "\tcmp r0, 0x1\n" - "\tbeq _080F9D10\n" - "\tcmp r0, 0x1\n" - "\tbgt _080F9CB8\n" - "\tcmp r0, 0\n" - "\tbeq _080F9CC2\n" - "\tb _080F9DDE\n" - "\t.pool\n" - "_080F9CB8:\n" - "\tcmp r0, 0x2\n" - "\tbeq _080F9D32\n" - "\tcmp r0, 0x3\n" - "\tbeq _080F9D94\n" - "\tb _080F9DDE\n" - "_080F9CC2:\n" - "\tmovs r0, 0x78\n" - "\tstrh r0, [r4, 0xE]\n" - "\tstrh r0, [r4, 0x10]\n" - "\tmovs r0, 0x50\n" - "\tstrh r0, [r4, 0x12]\n" - "\tmovs r0, 0x51\n" - "\tstrh r0, [r4, 0x14]\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 6\n" - "\tmovs r0, 0\n" - "\tbl SetGpuRegBits\n" - "\tldrh r1, [r4, 0xE]\n" - "\tlsls r1, 8\n" - "\tldrh r0, [r4, 0x10]\n" - "\torrs r1, r0\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tmovs r0, 0x40\n" - "\tbl SetGpuReg\n" - "\tldrh r1, [r4, 0x12]\n" - "\tlsls r1, 8\n" - "\tldrh r0, [r4, 0x14]\n" - "\torrs r1, r0\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tmovs r0, 0x44\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x48\n" - "\tmovs r1, 0x3F\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x4A\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tb _080F9DEE\n" - "_080F9D10:\n" - "\tmovs r0, 0x50\n" - "\tbl GetGpuReg\n" - "\tstrh r0, [r4, 0x16]\n" - "\tmovs r0, 0x54\n" - "\tbl GetGpuReg\n" - "\tstrh r0, [r4, 0x18]\n" - "\tmovs r0, 0x50\n" - "\tmovs r1, 0xBF\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x54\n" - "\tmovs r1, 0x10\n" - "\tbl SetGpuReg\n" - "\tb _080F9DEE\n" - "_080F9D32:\n" - "\tldrh r0, [r4, 0xE]\n" - "\tldrh r1, [r4, 0xA]\n" - "\tsubs r0, r1\n" - "\tmovs r5, 0\n" - "\tstrh r0, [r4, 0xE]\n" - "\tldrh r2, [r4, 0x10]\n" - "\tadds r1, r2\n" - "\tstrh r1, [r4, 0x10]\n" - "\tlsls r0, 16\n" - "\tcmp r0, 0\n" - "\tble _080F9D50\n" - "\tlsls r0, r1, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0xEF\n" - "\tble _080F9D76\n" - "_080F9D50:\n" - "\tstrh r5, [r4, 0xE]\n" - "\tmovs r0, 0xF0\n" - "\tstrh r0, [r4, 0x10]\n" - "\tmovs r0, 0x54\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tldrh r1, [r4, 0x16]\n" - "\tmovs r0, 0x50\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tbl BlendPalettes\n" - "\tldr r0, =gPlttBufferFaded\n" - "\tstrh r5, [r0]\n" - "_080F9D76:\n" - "\tldrh r1, [r4, 0xE]\n" - "\tlsls r1, 8\n" - "\tldrh r0, [r4, 0x10]\n" - "\torrs r1, r0\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tmovs r0, 0x40\n" - "\tbl SetGpuReg\n" - "\tmovs r1, 0xE\n" - "\tldrsh r0, [r4, r1]\n" - "\tb _080F9DD8\n" - "\t.pool\n" - "_080F9D94:\n" - "\tldrh r0, [r4, 0x12]\n" - "\tldrh r1, [r4, 0xC]\n" - "\tsubs r0, r1\n" - "\tstrh r0, [r4, 0x12]\n" - "\tldrh r2, [r4, 0x14]\n" - "\tadds r1, r2\n" - "\tstrh r1, [r4, 0x14]\n" - "\tlsls r0, 16\n" - "\tcmp r0, 0\n" - "\tble _080F9DB0\n" - "\tlsls r0, r1, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x9F\n" - "\tble _080F9DC2\n" - "_080F9DB0:\n" - "\tmovs r0, 0\n" - "\tstrh r0, [r4, 0x12]\n" - "\tmovs r0, 0xA0\n" - "\tstrh r0, [r4, 0x14]\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 6\n" - "\tmovs r0, 0\n" - "\tbl ClearGpuRegBits\n" - "_080F9DC2:\n" - "\tldrh r1, [r4, 0x12]\n" - "\tlsls r1, 8\n" - "\tldrh r0, [r4, 0x14]\n" - "\torrs r1, r0\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tmovs r0, 0x44\n" - "\tbl SetGpuReg\n" - "\tmovs r1, 0x12\n" - "\tldrsh r0, [r4, r1]\n" - "_080F9DD8:\n" - "\tcmp r0, 0\n" - "\tbne _080F9DF4\n" - "\tb _080F9DEE\n" - "_080F9DDE:\n" - "\tldrh r1, [r4, 0x16]\n" - "\tmovs r0, 0x50\n" - "\tbl SetGpuReg\n" - "\tadds r0, r5, 0\n" - "\tbl DestroyTask\n" - "\tb _080F9DF4\n" - "_080F9DEE:\n" - "\tldrh r0, [r4, 0x8]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r4, 0x8]\n" - "_080F9DF4:\n" - "\tpop {r4,r5}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif -void sub_80F9DFC(u8 taskId) +static void sub_80F9DFC(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -660,16 +483,16 @@ void sub_80F9DFC(u8 taskId) DestroyTask(taskId); return; } - task->data[0] += 1; + task->data[0]++; } -void SetCurrentSecretBase(void) +static void SetCurrentSecretBase(void) { sub_80E9608(&gPlayerFacingPosition, gMapHeader.events); sub_80E8B6C(); } -void AdjustSecretPowerSpritePixelOffsets(void) +static void AdjustSecretPowerSpritePixelOffsets(void) { if (gPlayerAvatar.flags & 0x6) { @@ -756,7 +579,7 @@ bool8 SetUpFieldMove_SecretPower(void) return FALSE; } -void FieldCallback_SecretBaseCave(void) +static void FieldCallback_SecretBaseCave(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); ScriptContext1_SetupScript(EventScript_275A86); @@ -818,7 +641,7 @@ static void CaveEntranceSpriteCallbackEnd(struct Sprite *sprite) EnableBothScriptContexts(); } -void FieldCallback_SecretBaseTree(void) +static void FieldCallback_SecretBaseTree(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); ScriptContext1_SetupScript(EventScript_275ADF); @@ -892,7 +715,7 @@ static void TreeEntranceSpriteCallbackEnd(struct Sprite *sprite) EnableBothScriptContexts(); } -void FieldCallback_SecretBaseShrub(void) +static void FieldCallback_SecretBaseShrub(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); ScriptContext1_SetupScript(EventScript_275B38); @@ -956,7 +779,7 @@ static void ShrubEntranceSpriteCallbackEnd(struct Sprite *sprite) EnableBothScriptContexts(); } -u32 FldEff_SecretBasePCTurnOn(void) +bool8 FldEff_SecretBasePCTurnOn(void) { s16 x, y; u8 taskId; @@ -968,10 +791,10 @@ u32 FldEff_SecretBasePCTurnOn(void) gTasks[taskId].data[1] = y; gTasks[taskId].data[2] = 0; - return 0; + return FALSE; } -void Task_SecretBasePCTurnOn(u8 taskId) +static void Task_SecretBasePCTurnOn(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1025,7 +848,7 @@ void PopSecretBaseBalloon(s16 metatileId, s16 x, s16 y) gTasks[taskId].data[4] = 1; } -void Task_PopSecretBaseBalloon(u8 taskId) +static void Task_PopSecretBaseBalloon(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1049,7 +872,7 @@ void Task_PopSecretBaseBalloon(u8 taskId) } } -void DoBalloonSoundEffect(s16 metatileId) +static void DoBalloonSoundEffect(s16 metatileId) { switch (metatileId) { @@ -1078,7 +901,7 @@ bool8 FldEff_NopA700(void) return FALSE; } -void DoSecretBaseBreakableDoorEffect(s16 x, s16 y) +static void DoSecretBaseBreakableDoorEffect(s16 x, s16 y) { PlaySE(SE_TOY_KABE); MapGridSetMetatileIdAt(x, y, 630); @@ -1087,7 +910,7 @@ void DoSecretBaseBreakableDoorEffect(s16 x, s16 y) CurrentMapDrawMetatileAt(x, y - 1); } -void Task_ShatterSecretBaseBreakableDoor(u8 taskId) +static void Task_ShatterSecretBaseBreakableDoor(u8 taskId) { if (gTasks[taskId].data[0] == 7) { @@ -1118,7 +941,7 @@ void ShatterSecretBaseBreakableDoor(s16 x, s16 y) } #define tMetatileID data[0] -void Task_SecretBaseMusicNoteMatSound(u8 taskId) +static void Task_SecretBaseMusicNoteMatSound(u8 taskId) { if (gTasks[taskId].data[1] == 7) { @@ -1167,7 +990,7 @@ void PlaySecretBaseMusicNoteMatSound(s16 metatileId) } #undef tMetatileID -void SpriteCB_GlitterMatSparkle(struct Sprite *sprite) +static void SpriteCB_GlitterMatSparkle(struct Sprite *sprite) { sprite->data[0]++; @@ -1222,30 +1045,30 @@ bool8 FldEff_SandPillar(void) gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y, 148); - + break; - + case DIR_WEST: CreateSprite(&gUnknown_0858E68C, gSprites[gPlayerAvatar.spriteId].oam.x - 8, gSprites[gPlayerAvatar.spriteId].oam.y + 16, 148); - + break; - + case DIR_EAST: CreateSprite(&gUnknown_0858E68C, gSprites[gPlayerAvatar.spriteId].oam.x + 24, gSprites[gPlayerAvatar.spriteId].oam.y + 16, 148); - + break; } return FALSE; } -void SpriteCB_SandPillar_0(struct Sprite *sprite) +static void SpriteCB_SandPillar_0(struct Sprite *sprite) { PlaySE(SE_W088); @@ -1253,16 +1076,16 @@ void SpriteCB_SandPillar_0(struct Sprite *sprite) MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 3586); else MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 644); - + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 522); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]); - + sprite->data[0] = 0; sprite->callback = SpriteCB_SandPillar_1; } -void SpriteCB_SandPillar_1(struct Sprite *sprite) +static void SpriteCB_SandPillar_1(struct Sprite *sprite) { if (sprite->data[0] < 18) { @@ -1277,7 +1100,7 @@ void SpriteCB_SandPillar_1(struct Sprite *sprite) } } -void SpriteCB_SandPillar_2(struct Sprite *sprite) +static void SpriteCB_SandPillar_2(struct Sprite *sprite) { FieldEffectStop(sprite, FLDEFF_SAND_PILLAR); EnableBothScriptContexts(); @@ -1343,71 +1166,30 @@ void GetShieldToyTVDecorationInfo(void) } } -#ifdef NONMATCHING bool8 sub_80FADE4(u16 arg0, u8 arg1) { - if (CurrentMapIsSecretBase()) + if (!CurrentMapIsSecretBase()) + return FALSE; + + if (!arg1) { - if (arg1 == 0) - { - if ((u16)(arg0 + 0xfffffd7b) <= 1 || (arg0 == 0x237)) - return TRUE; - } - else - { - if (arg0 == 0x28d || arg0 == 0x23f) - return TRUE; - } + if (arg0 == 0x285 || arg0 == 0x286) + return TRUE; + if (arg0 == 0x237) + return TRUE; } + else + { + if (arg0 == 0x28d) + return TRUE; + if (arg0 == 0x23F) + return TRUE; + } + return FALSE; } -#else -NAKED -bool8 sub_80FADE4(u16 arg0, u8 arg1) -{ - asm_unified("\tpush {r4-r6,lr}\n" - "\tlsls r0, 16\n" - "\tlsrs r4, r0, 16\n" - "\tadds r6, r4, 0\n" - "\tlsls r1, 24\n" - "\tlsrs r5, r1, 24\n" - "\tbl CurrentMapIsSecretBase\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _080FAE28\n" - "\tcmp r5, 0\n" - "\tbne _080FAE1C\n" - "\tldr r1, =0xfffffd7b\n" - "\tadds r0, r4, r1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tcmp r0, 0x1\n" - "\tbls _080FAE10\n" - "\tldr r0, =0x00000237\n" - "\tcmp r4, r0\n" - "\tbne _080FAE28\n" - "_080FAE10:\n" - "\tmovs r0, 0x1\n" - "\tb _080FAE2A\n" - "\t.pool\n" - "_080FAE1C:\n" - "\tldr r0, =0x0000028d\n" - "\tcmp r4, r0\n" - "\tbeq _080FAE10\n" - "\tldr r0, =0x0000023f\n" - "\tcmp r6, r0\n" - "\tbeq _080FAE10\n" - "_080FAE28:\n" - "\tmovs r0, 0\n" - "_080FAE2A:\n" - "\tpop {r4-r6}\n" - "\tpop {r1}\n" - "\tbx r1\n" - "\t.pool"); -} -#endif -void Task_FieldPoisonEffect(u8 taskId) +static void Task_FieldPoisonEffect(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1441,15 +1223,15 @@ bool32 FldEffPoison_IsActive(void) return FuncIsActiveTask(Task_FieldPoisonEffect); } -void Task_WateringBerryTreeAnim_0(u8 taskId) +static void Task_WateringBerryTreeAnim_0(u8 taskId) { gTasks[taskId].func = Task_WateringBerryTreeAnim_1; } -void Task_WateringBerryTreeAnim_1(u8 taskId) +static void Task_WateringBerryTreeAnim_1(u8 taskId) { struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; - + if (!EventObjectIsMovementOverridden(playerEventObj) || EventObjectClearHeldMovementIfFinished(playerEventObj)) { @@ -1459,23 +1241,23 @@ void Task_WateringBerryTreeAnim_1(u8 taskId) } } -void Task_WateringBerryTreeAnim_2(u8 taskId) +static void Task_WateringBerryTreeAnim_2(u8 taskId) { struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; - + if (EventObjectClearHeldMovementIfFinished(playerEventObj)) { s16 value = gTasks[taskId].data[1]++; - + if (value < 10) EventObjectSetHeldMovement(playerEventObj, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection())); - + else gTasks[taskId].func = Task_WateringBerryTreeAnim_3; } } -void Task_WateringBerryTreeAnim_3(u8 taskId) +static void Task_WateringBerryTreeAnim_3(u8 taskId) { SetPlayerAvatarTransitionFlags(sub_808BCD0()); DestroyTask(taskId);