Match and clean up fldeff misc

This commit is contained in:
DizzyEggg 2018-12-22 19:33:45 +01:00
parent 8fcb3f71c7
commit 6dffa6d17c
4 changed files with 153 additions and 351 deletions

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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,8 +353,7 @@ 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];
@ -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]++;
@ -1245,7 +1068,7 @@ bool8 FldEff_SandPillar(void)
return FALSE;
}
void SpriteCB_SandPillar_0(struct Sprite *sprite)
static void SpriteCB_SandPillar_0(struct Sprite *sprite)
{
PlaySE(SE_W088);
@ -1262,7 +1085,7 @@ void SpriteCB_SandPillar_0(struct Sprite *sprite)
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))
if (arg0 == 0x285 || arg0 == 0x286)
return TRUE;
if (arg0 == 0x237)
return TRUE;
}
else
{
if (arg0 == 0x28d || arg0 == 0x23f)
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,12 +1223,12 @@ 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];
@ -1459,7 +1241,7 @@ 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];
@ -1475,7 +1257,7 @@ void Task_WateringBerryTreeAnim_2(u8 taskId)
}
}
void Task_WateringBerryTreeAnim_3(u8 taskId)
static void Task_WateringBerryTreeAnim_3(u8 taskId)
{
SetPlayerAvatarTransitionFlags(sub_808BCD0());
DestroyTask(taskId);