summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgarak <garakmon@gmail.com>2018-12-09 19:22:59 -0500
committergarak <garakmon@gmail.com>2018-12-09 19:22:59 -0500
commitb4312648e282909be909e084bf2302e29c538c68 (patch)
tree72f1a6421edcfd1acc9aa65824e9885dd6a9e4a2 /src
parent50f00b0827a4952a12f90009bd992f23c80a56af (diff)
decompile fldeff_80F9BCC with data
Diffstat (limited to 'src')
-rw-r--r--src/battle_util2.c2
-rw-r--r--src/fldeff_80F9BCC.c1606
-rw-r--r--src/secret_base.c70
-rw-r--r--src/tv.c4
4 files changed, 1637 insertions, 45 deletions
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 5881abf25..d3cbfbb01 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -42,7 +42,7 @@ void AllocateBattleResources(void)
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
{
- u16 currSecretBaseId = VarGet(VAR_0x4054);
+ u16 currSecretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
CreateSecretBaseEnemyParty(&gSaveBlock1Ptr->secretBases[currSecretBaseId]);
}
}
diff --git a/src/fldeff_80F9BCC.c b/src/fldeff_80F9BCC.c
index 4eddba5e4..c0fd0643e 100644
--- a/src/fldeff_80F9BCC.c
+++ b/src/fldeff_80F9BCC.c
@@ -1,12 +1,338 @@
#include "global.h"
+#include "fieldmap.h"
+#include "field_effect.h"
+#include "field_camera.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
+#include "constants/vars.h"
+#include "rom6.h"
+#include "strings.h"
+#include "secret_base.h"
+#include "event_data.h"
+#include "field_player_avatar.h"
+#include "party_menu.h"
+#include "metatile_behavior.h"
+#include "constants/metatile_behaviors.h"
+#include "event_object_movement.h"
#include "task.h"
+#include "sound.h"
+#include "script.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "string_util.h"
+
+extern struct MapPosition gPlayerFacingPosition;
+extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+
+extern const struct SpriteTemplate gUnknown_0858E600;
+extern const struct SpriteTemplate gUnknown_0858E618;
+extern const struct SpriteTemplate gUnknown_0858E630;
+
+extern u8 EventScript_275A86[];
+extern u8 EventScript_275ADF[];
+extern u8 EventScript_275B38[];
+
+extern const struct OamData gEventObjectBaseOam_32x8;
+
+extern const u8 gSpriteImage_858E1D8[];
+extern const u8 gSpriteImage_858E2D8[];
+extern const u8 gSpriteImage_858E3D8[];
+extern const u16 gTilesetPalettes_SecretBase[][16];
//
void sub_80F9C90(u8);
void sub_80F9DFC(u8);
+void sub_80FA4A0(u8);
+void sub_80FA62C(u8);
+void sub_80FA6AC(s16);
+
+void sub_80FAEF0(u8);
+void sub_80FAF64(u8);
+void sub_80FAFD4(u8);
+
void sub_80F9C44(TaskFunc, u16, u16, u8);
+void sub_80FA0DC(void);
+void sub_80FA1E8(void);
+void sub_80FA34C(void);
+void sub_80FA128(void);
+void sub_80FA234(void);
+void sub_80FA398(void);
+
+void door_restore_tilemap(struct Sprite *);
+void sub_80FA1A8(struct Sprite *);
+void sub_80FA1D8(struct Sprite *);
+void sub_80FA304(struct Sprite *);
+void sub_80FA33C(struct Sprite *);
+void sub_80FA418(struct Sprite *);
+void sub_80FA448(struct Sprite *);
+void sub_80FAC24(struct Sprite *);
+void sub_80FAC68(struct Sprite *);
+void sub_80FA18C(struct Sprite *);
+void sub_80FA2D8(struct Sprite *);
+void sub_80FA3FC(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");
+
+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");
+
+const struct OamData gOamData_858E4D8 =
+{
+ .y = 0,
+ .x = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 2,
+};
+
+const union AnimCmd gSpriteAnim_858E4E0[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E4F8[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E510[] =
+{
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E528[] =
+{
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 8, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E540[] =
+{
+ ANIMCMD_FRAME(4, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E558[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_858E570[] =
+{
+ gSpriteAnim_858E4E0,
+};
+
+const union AnimCmd *const gSpriteAnimTable_858E574[] =
+{
+ gSpriteAnim_858E4F8,
+ gSpriteAnim_858E510,
+ gSpriteAnim_858E528,
+ gSpriteAnim_858E540,
+};
+const union AnimCmd *const gSpriteAnimTable_858E584[] =
+{
+ gSpriteAnim_858E558,
+};
+
+const struct SpriteFrameImage gUnknown_858E588[] =
+{
+ {gSpriteImage_858D978, 0x80},
+ {gSpriteImage_858D9F8, 0x80},
+ {gSpriteImage_858DA78, 0x80},
+ {gSpriteImage_858DAF8, 0x80},
+ {gSpriteImage_858DB78, 0x80},
+};
+
+const struct SpriteFrameImage gUnknown_858E5B0[] =
+{
+ {gSpriteImage_858DEB8, 0x80},
+ {gSpriteImage_858DF38, 0x80},
+ {gSpriteImage_858DFB8, 0x80},
+ {gSpriteImage_858E038, 0x80},
+ {gSpriteImage_858E0B8, 0x80},
+};
+
+const struct SpriteFrameImage gUnknown_858E5D8[] =
+{
+ {gSpriteImage_858DC38, 0x80},
+ {gSpriteImage_858DCB8, 0x80},
+ {gSpriteImage_858DD38, 0x80},
+ {gSpriteImage_858DDB8, 0x80},
+ {gSpriteImage_858DE38, 0x80},
+};
+
+const struct SpriteTemplate gUnknown_0858E600 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1003,
+ .oam = &gOamData_858E4D8,
+ .anims = gSpriteAnimTable_858E570,
+ .images = gUnknown_858E588,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FA18C,
+};
+
+const struct SpriteTemplate gUnknown_0858E618 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1008,
+ .oam = &gOamData_858E4D8,
+ .anims = gSpriteAnimTable_858E574,
+ .images = gUnknown_858E5B0,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FA2D8,
+};
+
+const struct SpriteTemplate gUnknown_0858E630 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1008,
+ .oam = &gOamData_858E4D8,
+ .anims = gSpriteAnimTable_858E584,
+ .images = gUnknown_858E5D8,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FA3FC,
+};
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003};
+const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008};
+
+const struct OamData gOamData_858E658 =
+{
+ .x = 0,
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const union AnimCmd gSpriteAnim_858E660[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_FRAME(2, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_858E670[] =
+{
+ gSpriteAnim_858E660,
+};
+
+const struct SpriteFrameImage gUnknown_0858E674[] =
+{
+ {gSpriteImage_858E1D8, 0x100},// sizeof()?
+ {gSpriteImage_858E2D8, 0x100},
+ {gSpriteImage_858E3D8, 0x100},
+};
+
+const struct SpriteTemplate gUnknown_0858E68C =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x100E,
+ .oam = &gOamData_858E658,
+ .anims = gSpriteAnimTable_858E670,
+ .images = gUnknown_0858E674,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = door_restore_tilemap,
+};
+
+// This uses one of the secret base palettes, so there is no "field_effect_object_palette_09.pal" file.
+const struct SpritePalette gFieldEffectObjectPaletteInfo9 = {gTilesetPalettes_SecretBase[5], 0x100E};
+
+static const u8 gSpriteImage_858E6AC[] = INCBIN_U8("graphics/unknown/858E84C/0.4bpp");
+static const u8 gSpriteImage_858E72C[] = INCBIN_U8("graphics/unknown/858E84C/1.4bpp");
+static const u8 gSpriteImage_858E7AC[] = INCBIN_U8("graphics/unknown/858E84C/2.4bpp");
+static const u16 gUnknown_0858E82C[] = INCBIN_U16("graphics/unknown/unknown_58E82C.gbapal");
+
+static const struct SpriteFrameImage gUnknown_0858E84C[] =
+{
+ {gSpriteImage_858E6AC, sizeof(gSpriteImage_858E6AC)},
+ {gSpriteImage_858E72C, sizeof(gSpriteImage_858E72C)},
+ {gSpriteImage_858E7AC, sizeof(gSpriteImage_858E7AC)},
+};
+
+static const struct SpritePalette gUnknown_0858E864 = {gUnknown_0858E82C, 0x1000};// sizeof(gUnknown_0858E82C)?
+
+static const union AnimCmd gSpriteAnim_858E86C[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_FRAME(2, 30),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gSpriteAnimTable_858E87C[] =
+{
+ gSpriteAnim_858E86C,
+};
+
+static const struct SpriteTemplate gUnknown_0858E880 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1000,
+ .oam = &gEventObjectBaseOam_32x8,
+ .anims = gSpriteAnimTable_858E87C,
+ .images = gUnknown_0858E84C,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
// TODO: name these functions and arguments
void sub_80F9BCC(u16 a0, u16 a1, u8 a2)
@@ -31,59 +357,1325 @@ bool8 sub_80F9C30(void)
void sub_80F9C44(void (*a0) (u8), u16 a1, u16 a2, u8 a3)
{
- //
- u8 tempA, tempB;
+ u16 tempA, tempB;
- u8 taskId = CreateTask(a1, a3);
- struct Task *task = &gTasks[taskId];
- task->data[0] = 0;
+ u8 taskId = CreateTask(a0, a3);
+
+ gTasks[taskId].data[0] = 0;
tempA = 16;
if (a1 != 0)
{
tempA = a1;
}
- task->data[1] = tempA;
+ gTasks[taskId].data[1] = tempA;
tempB = 20;
if (a1 != 0)
{
tempB = a1;
}
- task->data[2] = tempB;
+ gTasks[taskId].data[2] = tempB;
+
+ gTasks[taskId].func(taskId);
+}
+
+#ifdef NONMATCHING
+void sub_80F9C90(u8 taskId)
+{
+ //
+ struct Task *task = &gTasks[taskId];
+ //u16 ta, tb;
+
+ switch(task->data[0])
+ {
+ case 0:// correct
+ task->data[3] = 0x78;
+ task->data[4] = 0x78;
+ task->data[5] = 0x50;
+ task->data[6] = 0x51;
+
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, task->data[3] << 8 | task->data[4]);
+ SetGpuReg(REG_OFFSET_WIN0H, task->data[5] << 8 | task->data[6]);
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+
+ break;
+
+ case 1:// correct
+ task->data[7] = GetGpuReg(REG_OFFSET_BLDCNT);
+ task->data[8] = GetGpuReg(REG_OFFSET_BLDY);
+
+ SetGpuReg(REG_OFFSET_BLDCNT, 0xBF);
+ SetGpuReg(REG_OFFSET_BLDY, 0x10);
+
+ break;
+
+ case 2:
+ //r5 = 0 somewhere in here
+ task->data[3] -= task->data[1];
+ task->data[4] += task->data[1];
+
+ if (task->data[3] <= 0 || task->data[4] > 0xEF)
+ {
+ //
+ task->data[3] = 0;// r5
+ task->data[4] = 0xF0;
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
+ //BlendPalettes(0xFFFF, 0, 0);
+ BlendPalettes(-1, 0, 0);// 0xFFFFFFFF ?
+ *gPlttBufferFaded = 0;// r5
+ }
+ //SetGpuReg(REG_OFFSET_WIN0H, task->data[3] << 8 | task->data[4]);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+
+ //break;
+ // can I ternary this? NO stupid
+ if (task->data[3] != 0) return;
+ break;
+
+ case 3:
+ task->data[5] -= task->data[2];
+ task->data[6] += task->data[2];
+
+ if (task->data[5] <= 0 || task->data[2] > 0x9F)
+ {
+ //
+ task->data[5] = 0;
+ task->data[6] = 0xA0;
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ }
+ //SetGpuReg(REG_OFFSET_WIN0V, task->data[5] << 8 | task->data[6]);
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+
+ if (task->data[5] != 0) return;
+ break;
+
+ //break;
+
+ default:
+ SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
+ DestroyTask(taskId);
+ return;
+ }
+ //
+ task->data[0] += 1;
+}
+#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)
+{
+ struct Task *task = &gTasks[taskId];
+
+ int temp = task->data[0];
+
+ switch (temp)
+ {
+ case 0:
+ gPlttBufferFaded[0] = temp;
+ break;
+
+ case 1:
+ task->data[3] = 0;
+ task->data[4] = 0xF0;
+ task->data[5] = 0;
+ task->data[6] = 0xA0;
+
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ break;
+
+ case 2:
+ task->data[5] += task->data[2];
+ task->data[6] -= task->data[2];
+
+ if (task->data[5] > 0x4F || task->data[6] <= 0x51)
+ {
+ task->data[5] = 0x50;
+ task->data[6] = 0x51;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0xBF);
+ SetGpuReg(REG_OFFSET_BLDY, 0x10);
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+
+ if (task->data[5] != 0x50) return;
+ break;
+
+ case 3:
+ task->data[3] += task->data[1];
+ task->data[4] -= task->data[1];
+
+ if (task->data[3] > 0x77 || task->data[4] <= 0x78)
+ {
+ task->data[3] = 0x78;
+ task->data[4] = 0x78;
+ BlendPalettes(-1, 0x10, 0);
+ gPlttBufferFaded[0] = 0;
+ }
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+
+ if (task->data[3] != 0x78) return;
+ break;
+
+ default:
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ DestroyTask(taskId);
+ return;
+ }
+ task->data[0] += 1;
+}
+
+//=============================================================================
+// fldeff_secretpower.c
+
+// SetCurrentSecretBase();
+void sub_80F9F5C(void)
+{
+ sub_80E9608(&gPlayerFacingPosition, gMapHeader.events);
+ sub_80E8B6C();
+}
+
+// AdjustSecretPowerSpritePixelOffsets
+void sub_80F9F78(void)
+{
+ if (gPlayerAvatar.flags & 0x6)
+ {
+ switch (gFieldEffectArguments[1])
+ {
+ case DIR_SOUTH:
+ gFieldEffectArguments[5] = 16;
+ gFieldEffectArguments[6] = 40;
+ break;
+ case DIR_NORTH:
+ gFieldEffectArguments[5] = 16;
+ gFieldEffectArguments[6] = 8;
+ break;
+ case DIR_WEST:
+ gFieldEffectArguments[5] = -8;
+ gFieldEffectArguments[6] = 24;
+ break;
+ case DIR_EAST:
+ gFieldEffectArguments[5] = 24;
+ gFieldEffectArguments[6] = 24;
+ break;
+ }
+ }
+ else
+ {
+ switch (gFieldEffectArguments[1])
+ {
+ case DIR_SOUTH:
+ gFieldEffectArguments[5] = 8;
+ gFieldEffectArguments[6] = 40;
+ break;
+ case DIR_NORTH:
+ gFieldEffectArguments[5] = 8;
+ gFieldEffectArguments[6] = 8;
+ break;
+ case DIR_WEST:
+ gFieldEffectArguments[5] = -8;
+ gFieldEffectArguments[6] = 24;
+ break;
+ case DIR_EAST:
+ gFieldEffectArguments[5] = 24;
+ gFieldEffectArguments[6] = 24;
+ break;
+ }
+ }
+}
+
+// SetUpFieldMove_SecretPower
+bool8 sub_80FA004(void)
+{
+ u8 mb;
+
+ sub_80E8BC8();
+
+ if (gSpecialVar_Result == 1 || GetPlayerFacingDirection() != DIR_NORTH)
+ return FALSE;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ mb = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y);
+
+ if (MetatileBehavior_IsSecretBaseCave(mb) == TRUE)
+ {
+ sub_80F9F5C();
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_80FA0DC;
+ return TRUE;
+ }
+
+ if (MetatileBehavior_IsSecretBaseTree(mb) == TRUE)
+ {
+ sub_80F9F5C();
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_80FA1E8;
+ return TRUE;
+ }
+
+ if (MetatileBehavior_IsSecretBaseShrub(mb) == TRUE)
+ {
+ sub_80F9F5C();
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_80FA34C;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+// FieldCallback_SecretBaseCave
+void sub_80FA0DC(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_275A86);
+}
+
+bool8 oei_sweet_scent(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)sub_80FA128 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80FA128;
+
+ return FALSE;
+}
+
+// StartSecretBaseCaveFieldEffect
+void sub_80FA128(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_CAVE);
+ FieldEffectStart(FLDEFF_SECRET_POWER_CAVE);
+}
+
+// FldEff_SecretPowerCave
+bool8 sub_80FA13C(void)
+{
+ sub_80F9F78();
+
+ CreateSprite(&gUnknown_0858E600,
+ gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
+ gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
+ 148);
+
+ return FALSE;
+}
+
+// CaveEntranceSpriteCallback1
+void sub_80FA18C(struct Sprite *sprite)
+{
+ PlaySE(SE_W088);
+
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FA1A8;
+}
+
+// CaveEntranceSpriteCallback2
+void sub_80FA1A8(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 40)
+ {
+ sprite->data[0]++;
+
+ if (sprite->data[0] == 20)
+ sub_80E8D4C();
+ }
+ else
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FA1D8;
+ }
+}
+
+// CaveEntranceSpriteCallbackEnd
+void sub_80FA1D8(struct Sprite *sprite)
+{
+ //
+ FieldEffectStop(sprite, FLDEFF_SECRET_POWER_CAVE);
+ EnableBothScriptContexts();
+}
+
+// FieldCallback_SecretBaseTree
+void sub_80FA1E8(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_275ADF);
+}
+
+// FldEff_UseSecretPowerTree
+bool8 sub_80FA208(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)sub_80FA234 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80FA234;
+
+ return FALSE;
+}
+
+// StartSecretBaseTreeFieldEffect
+void sub_80FA234(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_TREE);
+ FieldEffectStart(FLDEFF_SECRET_POWER_TREE);
+}
+
+// FldEff_SecretPowerTree
+bool8 sub_80FA248(void)
+{
+ s16 mb = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y) & 0xFFF;
+
+ if (mb == MB_SECRET_BASE_SPOT_TREE_LEFT)
+ gFieldEffectArguments[7] = 0;
+
+ if (mb == MB_SECRET_BASE_SPOT_TREE_RIGHT)
+ gFieldEffectArguments[7] = 2;
+
+ sub_80F9F78();
+
+ CreateSprite(&gUnknown_0858E618,
+ gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
+ gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
+ 148);
+
+ if (gFieldEffectArguments[7] == 1 || gFieldEffectArguments[7] == 3)
+ sub_80E8D4C();
+
+ return FALSE;
+}
+
+// TreeEntranceSpriteCallback1
+void sub_80FA2D8(struct Sprite *sprite)
+{
+ PlaySE(SE_W010);
+
+ sprite->animNum = gFieldEffectArguments[7];
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FA304;
+}
+
+// TreeEntranceSpriteCallback2
+void sub_80FA304(struct Sprite *sprite)
+{
+ sprite->data[0]++;
+
+ if (sprite->data[0] >= 40)
+ {
+ if (gFieldEffectArguments[7] == 0 || gFieldEffectArguments[7] == 2)
+ sub_80E8D4C();
+
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FA33C;
+ }
}
+// TreeEntranceSpriteCallbackEnd
+void sub_80FA33C(struct Sprite *sprite)
+{
+ FieldEffectStop(sprite, FLDEFF_SECRET_POWER_TREE);
+ EnableBothScriptContexts();
+}
+
+// FieldCallback_SecretBaseShrub
+void sub_80FA34C(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_275B38);
+}
+
+// FldEff_UseSecretPowerShrub
+bool8 sub_80FA36C(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)sub_80FA398 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80FA398;
+
+ return FALSE;
+}
+
+// StartSecretBaseShrubFieldEffect
+void sub_80FA398(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_SHRUB);
+ FieldEffectStart(FLDEFF_SECRET_POWER_SHRUB);
+}
+
+// FldEff_SecretPowerShrub
+bool8 sub_80FA3AC(void)
+{
+ sub_80F9F78();
+
+ CreateSprite(&gUnknown_0858E630,
+ gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
+ gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
+ 148);
+
+ return FALSE;
+}
+
+// ShrubEntranceSpriteCallback1
+void sub_80FA3FC(struct Sprite *sprite)
+{
+ PlaySE(SE_W077);
+
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FA418;
+}
+
+// ShrubEntranceSpriteCallback2
+void sub_80FA418(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 40)
+ {
+ sprite->data[0]++;
+
+ if (sprite->data[0] == 20)
+ sub_80E8D4C();
+ }
+ else
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FA448;
+ }
+}
+
+// ShrubEntranceSpriteCallbackEnd
+void sub_80FA448(struct Sprite *sprite)
+{
+ FieldEffectStop(sprite, FLDEFF_SECRET_POWER_SHRUB);
+ EnableBothScriptContexts();
+}
+
+//=============================================================================
+// fldeff_secretbase_pc.c
+
+// FldEff_SecretBasePCTurnOn
+u32 sub_80FA458(void)
+{
+ s16 x, y;
+ u8 taskId;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+
+ taskId = CreateTask(sub_80FA4A0, 0);
+ gTasks[taskId].data[0] = x;
+ gTasks[taskId].data[1] = y;
+ gTasks[taskId].data[2] = 0;
+
+ return 0;
+}
+
+// Task_SecretBasePCTurnOn
+void sub_80FA4A0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[2])
+ {
+ case 4:
+ case 12:
+ MapGridSetMetatileIdAt(data[0], data[1], 548);
+ CurrentMapDrawMetatileAt(data[0], data[1]);
+ break;
+ case 8:
+ case 16:
+ MapGridSetMetatileIdAt(data[0], data[1], 544);
+ CurrentMapDrawMetatileAt(data[0], data[1]);
+ break;
+ case 20:
+ MapGridSetMetatileIdAt(data[0], data[1], 548);
+ CurrentMapDrawMetatileAt(data[0], data[1]);
+ FieldEffectActiveListRemove(FLDEFF_PCTURN_ON);
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ return;
+ }
+
+ data[2]++;
+}
+
+// DoSecretBasePCTurnOffEffect
+void sub_80FA57C(void)
+{
+ s16 x, y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ PlaySE(SE_PC_OFF);
+
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ MapGridSetMetatileIdAt(x, y, 3616);
+ else
+ MapGridSetMetatileIdAt(x, y, 3617);
+
+ CurrentMapDrawMetatileAt(x, y);
+}
+
+//=============================================================================
+// fldeff_decoration.c
+
+// PopSecretBaseBalloon
+void sub_80FA5E4(s16 metatileId, s16 x, s16 y)
+{
+ u8 taskId = CreateTask(sub_80FA62C, 0);
+
+ gTasks[taskId].data[0] = metatileId;
+ gTasks[taskId].data[1] = x;
+ gTasks[taskId].data[2] = y;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 1;
+}
+
+//
+void sub_80FA62C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[3] == 6)
+ data[3] = 0;
+ else
+ data[3]++;
+
+ if (data[3] == 0)
+ {
+ if (data[4] == 2)
+ sub_80FA6AC(data[0]);
+
+ MapGridSetMetatileIdAt(data[1], data[2], data[0] + data[4]);
+ CurrentMapDrawMetatileAt(data[1], data[2]);
+
+ if (data[4] == 3)
+ DestroyTask(taskId);
+ else
+ data[4]++;
+ }
+}
+
+// DoBalloonSoundEffect
+void sub_80FA6AC(s16 metatileId)
+{
+ switch (metatileId)
+ {
+ case 824:
+ PlaySE(SE_FUUSEN1);
+ break;
+ case 828:
+ PlaySE(SE_FUUSEN2);
+ break;
+ case 832:
+ PlaySE(SE_FUUSEN3);
+ break;
+ case 552:
+ PlaySE(SE_TOY_DANGO);
+ break;
+ }
+}
+
+// FldEff_Nop47
+bool8 sub_80FA6FC(void)
+{
+ return FALSE;
+}
+
+// FldEff_Nop48
+bool8 sub_80FA700(void)
+{
+ return FALSE;
+}
+
+//
+void sub_80FA704(s16 x, s16 y)
+{
+ PlaySE(SE_TOY_KABE);
+ MapGridSetMetatileIdAt(x, y, 630);
+ MapGridSetMetatileIdAt(x, y - 1, 622);
+ CurrentMapDrawMetatileAt(x, y);
+ CurrentMapDrawMetatileAt(x, y - 1);
+}
+
+//
+void sub_80FA754(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 7)
+ {
+ sub_80FA704(gTasks[taskId].data[1], gTasks[taskId].data[2]);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[0]++;
+ }
+}
+
+// ShatterSecretBaseBreakableDoor
+void sub_80FA794(s16 x, s16 y)
+{
+ u8 dir = GetPlayerFacingDirection();
+
+ if (dir == DIR_SOUTH)
+ {
+ sub_80FA704(x, y);
+ }
+ else if (dir == DIR_NORTH)
+ {
+ u8 taskId = CreateTask(sub_80FA754, 5);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = x;
+ gTasks[taskId].data[2] = y;
+ }
+}
+
+#define tMetatileID data[0]
+// Task_SecretBaseMusicNoteMatSound
+void sub_80FA7EC(u8 taskId)
+{
+ if (gTasks[taskId].data[1] == 7)
+ {
+ switch (gTasks[taskId].tMetatileID) // metatileId
+ {
+ case 632:
+ PlaySE(SE_TOY_C);
+ break;
+ case 633:
+ PlaySE(SE_TOY_D);
+ break;
+ case 634:
+ PlaySE(SE_TOY_E);
+ break;
+ case 635:
+ PlaySE(SE_TOY_F);
+ break;
+ case 636:
+ PlaySE(SE_TOY_G);
+ break;
+ case 637:
+ PlaySE(SE_TOY_A);
+ break;
+ case 638:
+ PlaySE(SE_TOY_B);
+ break;
+ case 691:
+ PlaySE(SE_TOY_C1);
+ break;
+ }
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[1]++;
+ }
+}
+// PlaySecretBaseMusicNoteMatSound
+void sub_80FA970(s16 metatileId)
+{
+ u8 taskId = CreateTask(sub_80FA7EC, 5);
+
+ gTasks[taskId].tMetatileID = metatileId;
+ gTasks[taskId].data[1] = 0;
+}
+#undef tMetatileID
+// SpriteCB_GlitterMatSparkle
+void sub_80FA9A4(struct Sprite *sprite)
+{
+ sprite->data[0]++;
+
+ if (sprite->data[0] == 8)
+ PlaySE(SE_W215);
+
+ if (sprite->data[0] >= 32)
+ DestroySprite(sprite);
+}
+
+// DoSecretBaseGlitterMatSparkle
+void sub_80FA9D0(void)
+{
+ s16 x = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x;
+ s16 y = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y;
+ u8 spriteId;
+ sub_80930E0(&x, &y, 8, 4);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].oam.paletteNum = 5;
+ gSprites[spriteId].callback = sub_80FA9A4;
+ gSprites[spriteId].data[0] = 0;
+ }
+}
+
+// FldEff_SandPillar
+bool8 sub_80FAA7C(void)
+{
+ s16 x, y;
+
+ ScriptContext2_Enable();
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+
+ gFieldEffectArguments[5] = x;
+ gFieldEffectArguments[6] = y;
+
+ switch (GetPlayerFacingDirection())
+ {
+ case DIR_SOUTH:
+ CreateSprite(&gUnknown_0858E68C,
+ gSprites[gPlayerAvatar.spriteId].oam.x + 8,
+ gSprites[gPlayerAvatar.spriteId].oam.y + 32,
+ 0);
+
+ break;
+
+ case DIR_NORTH:
+ CreateSprite(&gUnknown_0858E68C,
+ 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;
+}
+// SpriteCB_SandPillar_0
+void door_restore_tilemap(struct Sprite *sprite)
+{
+ PlaySE(SE_W088);
+ if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == 646)
+ 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 = sub_80FAC24;
+}
+// SpriteCB_SandPillar_1
+void sub_80FAC24(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 18)
+ {
+ sprite->data[0]++;
+ }
+ else
+ {
+ MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 3724);
+ CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]);
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FAC68;
+ }
+}
+// SpriteCB_SandPillar_2
+void sub_80FAC68(struct Sprite *sprite)
+{
+ FieldEffectStop(sprite, FLDEFF_SAND_PILLAR);
+ EnableBothScriptContexts();
+}
+// GetShieldToyTVDecorationInfo
+void sub_80FAC78(void)
+{
+ s16 x, y;
+ s32 metatileId;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ metatileId = MapGridGetMetatileIdAt(x, y);
+ switch (metatileId)
+ {
+ case 822:
+ ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(gStringVar2, gText_Gold);
+ gSpecialVar_Result = 0;
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x10);
+ break;
+
+ case 734:
+ ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2);
+ StringCopy(gStringVar2, gText_Silver);
+ gSpecialVar_Result = 0;
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x20);
+ break;
+
+ case 756:
+ gSpecialVar_Result = 1;
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ break;
+
+ case 757:
+ gSpecialVar_Result = 2;
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ break;
+
+ case 758:
+ gSpecialVar_Result = 3;
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ break;
+ }
+}
+#ifdef NONMATCHING
+//
+bool8 sub_80FADE4(u16 arg0, u8 arg1)
+{
+ /*
+ //
+ if (CurrentMapIsSecretBase())
+ {
+ // return TRUE;
+ if (arg1 == 0)
+ {
+ //
+ if ((u16)(arg0 + 0xfffffd7b) <= 1 || (arg0 == 0x237))
+ return TRUE;
+ //if (arg0 == 0x237)
+ //else return FALSE;
+ }
+ else
+ {
+ //
+ if (arg0 == 0x28d || arg0 == 0x23f)
+ return TRUE;
+ //return FALSE;
+ }
+ }
+ return FALSE;
+ */
+ if (!CurrentMapIsSecretBase()) return FALSE;
+ else
+ {
+ // return TRUE;
+ if (arg1 == 0)
+ {
+ //
+ if ((u16)(arg0 + 0xfffffd7b) <= 1 || (arg0 == 0x237))
+ return TRUE;
+ //if (arg0 == 0x237)
+ //else return FALSE;
+ }
+ else
+ {
+ //
+ if (arg0 == 0x28d || arg0 == 0x23f)
+ return TRUE;
+ //return FALSE;
+ }
+ }
+ 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
+// Task_FieldPoisonEffect
+void task50_overworld_poison_effect(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ data[1] += 2;
+ if (data[1] > 8)
+ data[0]++;
+
+ break;
+
+ case 1:
+ data[1] -= 2;
+ if (data[1] == 0)
+ data[0]++;
+
+ break;
+
+ case 2:
+ DestroyTask(taskId);
+ return;
+ }
+ SetGpuReg(REG_OFFSET_MOSAIC, (data[1] << 4) | data[1]);
+}
+
+// FldeffPoison_Start
+void FldeffPoison_Start(void)
+{
+ PlaySE(SE_DOKU);
+ CreateTask(task50_overworld_poison_effect, 80);
+}
+
+// FldeffPoison_IsActive
+bool32 FieldPoisonEffectIsRunning(void)
+{
+ return FuncIsActiveTask(task50_overworld_poison_effect);
+}
+
+// Task_WateringBerryTreeAnim_0
+void sub_80FAED4(u8 taskId)
+{
+ gTasks[taskId].func = sub_80FAEF0;
+}
+
+// Task_WateringBerryTreeAnim_1
+void sub_80FAEF0(u8 taskId)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ if (!EventObjectIsMovementOverridden(playerEventObj)
+ || EventObjectClearHeldMovementIfFinished(playerEventObj))
+ {
+ sub_808C228(GetPlayerFacingDirection());
+ EventObjectSetHeldMovement(playerEventObj, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
+ gTasks[taskId].func = sub_80FAF64;
+ }
+}
+
+// Task_WateringBerryTreeAnim_2
+void sub_80FAF64(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 = sub_80FAFD4;
+ }
+}
+
+// Task_WateringBerryTreeAnim_3
+void sub_80FAFD4(u8 taskId)
+{
+ SetPlayerAvatarTransitionFlags(sub_808BCD0());
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+// DoWateringBerryTreeAnim
+void sub_80FAFF8(void)
+{
+ CreateTask(sub_80FAED4, 80);
+}
+
+//
+u8 CreateRecordMixingSprite(void)
+{
+ u8 spriteId;
+
+ LoadSpritePalette(&gUnknown_0858E864);
+
+ spriteId = CreateSprite(&gUnknown_0858E880, 0, 0, 82);
+
+ if (spriteId == MAX_SPRITES)
+ {
+ return MAX_SPRITES;
+ }
+ else
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ sub_8092FF0(16, 13, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->pos1.x += 16;
+ sprite->pos1.y += 2;
+ }
+
+ return spriteId;
+}
+
+void DestroyRecordMixingSprite(void)
+{
+ int i;
+
+ for (i = 0; i < MAX_SPRITES; i++)
+ {
+ if (gSprites[i].template == &gUnknown_0858E880)
+ {
+ FreeSpritePalette(&gSprites[i]);
+ DestroySprite(&gSprites[i]);
+ }
+ }
+}
diff --git a/src/secret_base.c b/src/secret_base.c
index 8436d8520..578db1902 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -190,7 +190,7 @@ void sub_80E8B6C(void)
continue;
}
gSpecialVar_Result = TRUE;
- VarSet(VAR_0x4054, i);
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
break;
}
}
@@ -320,7 +320,7 @@ void sub_80E8E18(void)
{
gSaveBlock1Ptr->secretBases[0].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
}
- VarSet(VAR_0x4054, 0);
+ VarSet(VAR_CURRENT_SECRET_BASE, 0);
StringCopyN(gSaveBlock1Ptr->secretBases[0].trainerName, gSaveBlock2Ptr->playerName, sub_80E8DF4(gSaveBlock2Ptr->playerName));
gSaveBlock1Ptr->secretBases[0].gender = gSaveBlock2Ptr->playerGender;
gSaveBlock1Ptr->secretBases[0].language = GAME_LANGUAGE;
@@ -383,7 +383,7 @@ void sub_80E8FD0(u8 taskId)
}
break;
case 1:
- secretBaseRecordId = VarGet(VAR_0x4054);
+ secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 < 255)
{
gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 ++;
@@ -479,7 +479,7 @@ void sub_80E9238(u8 flagIn)
if (CurrentMapIsSecretBase())
{
- curBaseId = VarGet(VAR_0x4054);
+ curBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
decorations = gSaveBlock1Ptr->secretBases[curBaseId].decorations;
decorPos = gSaveBlock1Ptr->secretBases[curBaseId].decorationPos;
for (x = 0; x < 16; x ++)
@@ -522,7 +522,7 @@ void sub_80E933C(void)
}
else
{
- curBase = VarGet(VAR_0x4054);
+ curBase = VarGet(VAR_CURRENT_SECRET_BASE);
roomDecor = gSaveBlock1Ptr->secretBases[curBase].decorations;
roomDecorPos = gSaveBlock1Ptr->secretBases[curBase].decorationPos;
nDecor = 16;
@@ -558,7 +558,7 @@ void sub_80E933C(void)
show_sprite(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
sub_808EBA8(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
sub_808F254(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- if (CurrentMapIsSecretBase() == TRUE && VarGet(VAR_0x4054) != 0)
+ if (CurrentMapIsSecretBase() == TRUE && VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
if (category == DECORCAT_DOLL)
{
@@ -594,7 +594,7 @@ void sub_80E9578(void)
void sub_80E95D4(void)
{
- VarSet(VAR_OBJ_GFX_ID_F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_0x4054))]);
+ VarSet(VAR_OBJ_GFX_ID_F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_CURRENT_SECRET_BASE))]);
}
void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events)
@@ -681,7 +681,7 @@ u8 *sub_80E9780(u8 *dest, u8 secretBaseRecordId)
u8 *GetSecretBaseMapName(u8 *dest)
{
- return sub_80E9780(dest, VarGet(VAR_0x4054));
+ return sub_80E9780(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
void sub_80E980C(void)
@@ -689,7 +689,7 @@ void sub_80E980C(void)
u8 secretBaseRecordId;
const u8 *src;
- secretBaseRecordId = VarGet(VAR_0x4054);
+ secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
src = gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName;
*StringCopyN(gStringVar1, src, sub_80E8DF4(src)) = EOS;
ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[secretBaseRecordId].language);
@@ -829,7 +829,7 @@ u8 sub_80E9BA8(void)
void sub_80E9BDC(void)
{
- if (sub_80E9878(VarGet(VAR_0x4054)) == TRUE)
+ if (sub_80E9878(VarGet(VAR_CURRENT_SECRET_BASE)) == TRUE)
{
gSpecialVar_Result = 1;
}
@@ -845,7 +845,7 @@ void sub_80E9BDC(void)
void sub_80E9C2C(void)
{
- gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_6 ^= 1;
+ gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_6 ^= 1;
FlagSet(0x10C);
}
@@ -1081,7 +1081,7 @@ void sub_80EA18C(u8 taskId)
void task_pc_turn_off(u8 taskId)
{
- if (VarGet(VAR_0x4054) == 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) == 0)
{
ScriptContext1_SetupScript(gUnknown_0823B4E8);
}
@@ -1101,7 +1101,7 @@ const u8 *GetSecretBaseTrainerLoseText(void)
{
u8 param;
- param = sub_80EA20C(VarGet(VAR_0x4054));
+ param = sub_80EA20C(VarGet(VAR_CURRENT_SECRET_BASE));
if (param == 0)
{
return SecretBase_RedCave1_Text_274966;
@@ -1150,7 +1150,7 @@ void sub_80EA2E4(void)
void sub_80EA30C(void)
{
- gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result;
+ gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_5 = gSpecialVar_Result;
}
void sub_80EA354(void)
@@ -1158,7 +1158,7 @@ void sub_80EA354(void)
u16 secretBaseRecordId;
u8 i;
- secretBaseRecordId = VarGet(VAR_0x4054);
+ secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
if (!FlagGet(0x922))
{
for (i = 0; i < 20; i ++)
@@ -1183,7 +1183,7 @@ void sub_80EA3E4(u8 taskId)
switch (data[1])
{
case 0:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
gUnknown_0203A01D = TRUE;
}
@@ -1783,7 +1783,7 @@ void sub_80EB1AC(void)
VarSet(VAR_0x40ED, 0);
VarSet(VAR_0x40EE, 0);
VarSet(VAR_0x40EF, 0);
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40F0, TRUE);
}
@@ -1811,7 +1811,7 @@ void sub_80EB218(void)
void sub_80EB290(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x800);
}
@@ -1819,7 +1819,7 @@ void sub_80EB290(void)
void sub_80EB2C8(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x400);
}
@@ -1827,7 +1827,7 @@ void sub_80EB2C8(void)
void sub_80EB300(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
@@ -1837,7 +1837,7 @@ void sub_80EB300(void)
void sub_80EB368(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
@@ -1847,7 +1847,7 @@ void sub_80EB368(void)
void sub_80EB3D0(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
@@ -1857,7 +1857,7 @@ void sub_80EB3D0(void)
void sub_80EB438(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
@@ -1888,7 +1888,7 @@ void sub_80EB498(void)
case 0x332:
case 0x333:
case 0x334:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x4000);
}
@@ -1906,7 +1906,7 @@ void sub_80EB56C(void)
{
case 0x28a:
case 0x28b:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x40);
}
@@ -1929,21 +1929,21 @@ void sub_80EB56C(void)
case 0x2f9:
case 0x2fa:
case 0x2fb:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8);
}
break;
case 0x22c:
case 0x233:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x40);
}
break;
case 0x288:
case 0x289:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
}
@@ -1951,7 +1951,7 @@ void sub_80EB56C(void)
case 0x22d:
case 0x22e:
case 0x22f:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
}
@@ -1979,7 +1979,7 @@ void sub_80EB56C(void)
case 0x2cd:
case 0x2ce:
case 0x2cf:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
}
@@ -2006,7 +2006,7 @@ void sub_80EB9E0(void)
case 0x2be:
case 0x2c3:
case 0x2c6:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
}
@@ -2044,14 +2044,14 @@ void sub_80EBB28(void)
case 0x2c4:
case 0x2c5:
case 0x2c7:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
}
break;
case 0x280:
case 0x281:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
}
@@ -2059,7 +2059,7 @@ void sub_80EBB28(void)
case 0x225:
case 0x226:
case 0x227:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
}
@@ -2077,7 +2077,7 @@ void sub_80EBE7C(void)
{
case 0x28d:
case 0x28e:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4);
}
diff --git a/src/tv.c b/src/tv.c
index d3d1e797b..f4811ee52 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -2572,13 +2572,13 @@ void sub_80EEA70(void)
show->secretBaseSecrets.flags = VarGet(0x40ee) + (VarGet(0x40ef) << 16);
tv_store_id_3x(show);
show->secretBaseSecrets.language = gGameLanguage;
- if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language == LANGUAGE_JAPANESE)
+ if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language == LANGUAGE_JAPANESE)
{
show->secretBaseSecrets.baseOwnersNameLanguage = LANGUAGE_JAPANESE;
}
else
{
- show->secretBaseSecrets.baseOwnersNameLanguage = gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language;
+ show->secretBaseSecrets.baseOwnersNameLanguage = gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language;
}
}
}