summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDiegoisawesome <Diegoisawesome@users.noreply.github.com>2018-11-19 13:29:07 -0600
committerGitHub <noreply@github.com>2018-11-19 13:29:07 -0600
commit6acf6aed0486d090bf4f8e731189b9d4ad07dadb (patch)
tree14944f58ff26ce5d59ed1383e9550a6215cbc83e /src
parent8f2ddf2997041bc813a32ac604002fcbb987e3a0 (diff)
parent58a1bba059a74203edb5d8819bf7af7e1171877a (diff)
Merge pull request #391 from DizzyEggg/frontier
Clean up bss/common/ewram symbols and decompile mossdeep
Diffstat (limited to 'src')
-rw-r--r--src/apprentice.c7
-rw-r--r--src/battle_factory.c2
-rw-r--r--src/battle_factory_screen.c4
-rw-r--r--src/battle_main.c12
-rw-r--r--src/battle_palace.c1
-rw-r--r--src/battle_pyramid.c1
-rw-r--r--src/battle_tent.c5
-rw-r--r--src/battle_tower.c5
-rw-r--r--src/berry_blender.c10
-rw-r--r--src/contest_painting.c8
-rw-r--r--src/easy_chat.c1
-rw-r--r--src/fldeff_strength.c1
-rw-r--r--src/fossil_specials.c803
-rw-r--r--src/mossdeep_gym.c313
-rw-r--r--src/multiboot.c2
-rw-r--r--src/mystery_event_script.c1
-rw-r--r--src/new_game.c5
-rw-r--r--src/overworld.c16
-rw-r--r--src/pokedex.c7
-rw-r--r--src/save.c1
-rw-r--r--src/scrcmd.c19
-rw-r--r--src/start_menu.c6
-rw-r--r--src/string_util.c8
23 files changed, 690 insertions, 548 deletions
diff --git a/src/apprentice.c b/src/apprentice.c
index fa4e08385..499f85094 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -340,9 +340,10 @@ extern const u8 gText_082B7185[];
extern const u8 gText_082B71C1[];
extern const u8 gText_082B71F9[];
-extern struct Unk030062ECStruct *gUnknown_030062EC;
-extern struct Unk030062F0Struct *gUnknown_030062F0;
-extern void (*gUnknown_030062F4)(void);
+// IWRAM common
+struct Unk030062ECStruct *gUnknown_030062EC;
+struct Unk030062F0Struct *gUnknown_030062F0;
+void (*gUnknown_030062F4)(void);
// This file's functions.
static u16 sub_819FF98(u8 arg0);
diff --git a/src/battle_factory.c b/src/battle_factory.c
index 37abf6add..1d7fbafc9 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -13,8 +13,6 @@
#include "constants/trainers.h"
#include "constants/moves.h"
-extern u16 gUnknown_03006298[];
-
extern const struct FacilityMon gBattleFrontierMons[];
extern const struct FacilityMon gSlateportBattleTentMons[];
extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index 255cf5aa1..42a9b579c 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -131,7 +131,6 @@ struct FactorySwapMonsStruct
bool8 unk30;
};
-extern u8 (*gUnknown_030062E8)(void);
extern u8 gUnknown_0203CF20;
extern const u16 gBattleFrontierHeldItems[];
@@ -237,6 +236,9 @@ static IWRAM_DATA struct FactorySelectMonsStruct *sFactorySelectScreen;
static IWRAM_DATA void (*sSwap_CurrentTableFunc)(u8 taskId);
static IWRAM_DATA struct FactorySwapMonsStruct *sFactorySwapScreen;
+// IWRAM common
+u8 (*gUnknown_030062E8)(void);
+
// Const rom data.
static const u16 gUnknown_0860F13C[] = INCBIN_U16("graphics/unknown/unknown_60F13C.gbapal");
static const u16 gUnknown_0860F15C[] = INCBIN_U16("graphics/unknown/unknown_60F15C.gbapal");
diff --git a/src/battle_main.c b/src/battle_main.c
index 4669e9123..116f5963a 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -173,6 +173,18 @@ static void HandleAction_NothingIsFainted(void);
static void HandleAction_ActionFinished(void);
// EWRAM vars
+EWRAM_DATA u16 gBattle_BG0_X = 0;
+EWRAM_DATA u16 gBattle_BG0_Y = 0;
+EWRAM_DATA u16 gBattle_BG1_X = 0;
+EWRAM_DATA u16 gBattle_BG1_Y = 0;
+EWRAM_DATA u16 gBattle_BG2_X = 0;
+EWRAM_DATA u16 gBattle_BG2_Y = 0;
+EWRAM_DATA u16 gBattle_BG3_X = 0;
+EWRAM_DATA u16 gBattle_BG3_Y = 0;
+EWRAM_DATA u16 gBattle_WIN0H = 0;
+EWRAM_DATA u16 gBattle_WIN0V = 0;
+EWRAM_DATA u16 gBattle_WIN1H = 0;
+EWRAM_DATA u16 gBattle_WIN1V = 0;
EWRAM_DATA u8 gDisplayedStringBattle[300] = {0};
EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0};
EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0};
diff --git a/src/battle_palace.c b/src/battle_palace.c
index d435f7e15..4033712b6 100644
--- a/src/battle_palace.c
+++ b/src/battle_palace.c
@@ -6,6 +6,7 @@
#include "battle_tower.h"
#include "frontier_util.h"
#include "item.h"
+#include "string_util.h"
#include "constants/items.h"
// This file's functions.
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index 878ea4e70..01f138925 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -15,6 +15,7 @@
#include "sound.h"
#include "task.h"
#include "start_menu.h"
+#include "string_util.h"
#include "trainer_see.h"
#include "main.h"
#include "load_save.h"
diff --git a/src/battle_tent.c b/src/battle_tent.c
index 678222ff5..c7e70912c 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -10,6 +10,7 @@
#include "item.h"
#include "battle_factory_screen.h"
#include "frontier_util.h"
+#include "string_util.h"
#include "constants/items.h"
#include "constants/region_map_sections.h"
@@ -17,10 +18,6 @@ extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
extern const struct FacilityMon gSlateportBattleTentMons[];
extern const u16 gBattleFrontierHeldItems[];
-extern u16 gUnknown_03006298[];
-
-extern void sub_81A4C30(void);
-
// This file's functions.
static void sub_81B99D4(void);
static void sub_81B9A28(void);
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 000a03a5b..165b6bf64 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -28,8 +28,6 @@
#include "constants/moves.h"
#include "constants/species.h"
-extern u16 gUnknown_03006298[];
-
extern void sub_81A4C30(void);
extern const u8 *const *const gUnknown_085DD690[];
@@ -68,6 +66,9 @@ extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224166[];
EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL;
EWRAM_DATA const struct FacilityMon *gFacilityTrainerMons = NULL;
+// IWRAM common
+u16 gUnknown_03006298[4];
+
// This file's functions.
static void sub_8161F94(void);
static void sub_8162054(void);
diff --git a/src/berry_blender.c b/src/berry_blender.c
index fca544e03..7320e905f 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -33,6 +33,7 @@
#include "item_menu.h"
#include "battle_records.h"
#include "graphics.h"
+#include "new_game.h"
#define BLENDER_SCORE_BEST 0
#define BLENDER_SCORE_GOOD 1
@@ -132,8 +133,6 @@ struct BerryBlenderData
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u8 gInGameOpponentsNo;
-extern u8 gUnknown_020322D5;
// text
extern const u8 gText_SavingDontTurnOff2[];
@@ -195,18 +194,21 @@ static void sub_8083170(u16 a0, u16 a1);
static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst);
static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *a1);
-// ewram
+// EWRAM
EWRAM_DATA static struct BerryBlenderData *sBerryBlenderData = NULL;
EWRAM_DATA static s32 sUnknown_020322A8[5] = {0};
EWRAM_DATA static s32 sUnknown_020322BC[5] = {0};
EWRAM_DATA static u32 sUnknown_020322D0 = 0;
-// iwram
+// IWRAM bss
IWRAM_DATA static s16 sUnknown_03000DE8[8];
IWRAM_DATA static s16 sUnknown_03000DF8[6];
IWRAM_DATA static s16 sUnknown_03000E04;
IWRAM_DATA static s16 sUnknown_03000E06;
+// IWRAM common
+u8 gInGameOpponentsNo;
+
// rom
static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal");
diff --git a/src/contest_painting.c b/src/contest_painting.c
new file mode 100644
index 000000000..7950b7cac
--- /dev/null
+++ b/src/contest_painting.c
@@ -0,0 +1,8 @@
+#include "global.h"
+
+// IWRAM bss
+IWRAM_DATA u8 gUnknown_030011F0;
+IWRAM_DATA u16 gUnknown_030011F2;
+IWRAM_DATA u16 gUnknown_030011F4;
+IWRAM_DATA u8 gUnknown_030011F6;
+IWRAM_DATA u8 gUnknown_030011F7;
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 7d25d1430..e4233fb7f 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -13,6 +13,7 @@
#include "palette.h"
#include "event_data.h"
#include "easy_chat.h"
+#include "string_util.h"
// Static type declarations
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index c9b91f97f..f796ecea6 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -5,6 +5,7 @@
#include "party_menu.h"
#include "rom6.h"
#include "script.h"
+#include "string_util.h"
#include "task.h"
#include "constants/event_objects.h"
#include "constants/field_effects.h"
diff --git a/src/fossil_specials.c b/src/fossil_specials.c
index 49db0f5b6..8164a3a78 100644
--- a/src/fossil_specials.c
+++ b/src/fossil_specials.c
@@ -17,29 +17,32 @@
#include "task.h"
#include "window.h"
-#define MIRAGE_TOWER_GFX_LENGTH (sizeof(gUnknown_08617274) + sizeof(gMirageTower_Gfx))
+#define MIRAGE_TOWER_GFX_LENGTH (32 + sizeof(gMirageTower_Gfx))
#define MIRAGE_TOWER_PALETTE_LENGTH 0x800
#define ROOT_FOSSIL_GFX_LENGTH sizeof(gRootFossil_Gfx)
#define ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH 0x100
-//struct
-struct Struct8617DA4 {
+struct Struct8617DA4
+{
u8 x;
u8 y;
u16 tileId;
};
-struct Struct203CF10 {
+struct Struct203CF10
+{
u8 *buffer;
- u8 curr_buffer_index;
+ u8 currIndex;
};
-struct DynamicSpriteFrameImage{
+struct DynamicSpriteFrameImage
+{
u8 *data;
u16 size;
};
-struct Struct203CF0C {
+struct Struct203CF0C
+{
u8 *frameImageTiles;
struct DynamicSpriteFrameImage *frameImage;
u8 spriteId;
@@ -52,10 +55,10 @@ static void sub_81BED50(u8 taskId);
static void sub_81BEBF4(u8 taskId);
static void sub_81BF028(u8 taskId);
static void sub_81BF248(struct Sprite *);
-/*static*/ void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
+static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
// .rodata
-static const u8 gUnknown_08617274[] = {00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00};
+static const u8 gUnknown_08617274[32] = {0};
static const u8 gMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
static const u16 gUnknown_08617B94[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
static const u16 gRootFossil_Pal[] = INCBIN_U16("graphics/misc/fossil.gbapal");
@@ -64,16 +67,16 @@ static const u8 gMirageTowerCrumbles_Gfx[] = INCBIN_U8("graphics/misc/mirage_tow
static const u16 gMirageTowerCrumbles_Palette[] = INCBIN_U16("graphics/misc/mirage_tower_crumbles.gbapal");
const s16 gUnknown_08617D64[][3] =
- {
- { 0, 10, 65},
- { 17, 3, 50},
- {-12, 0, 75},
- { 10, 15, 90},
- { 7, 8, 65},
- {-18, 5, 75},
- { 22, -10, 55},
- {-24, -4, 65},
- };
+{
+ { 0, 10, 65},
+ { 17, 3, 50},
+ {-12, 0, 75},
+ { 10, 15, 90},
+ { 7, 8, 65},
+ {-18, 5, 75},
+ { 22, -10, 55},
+ {-24, -4, 65},
+};
const struct SpriteSheet gUnknown_08617D94[] =
{
@@ -82,26 +85,26 @@ const struct SpriteSheet gUnknown_08617D94[] =
};
static const struct Struct8617DA4 gUnknown_08617DA4[] =
- {
- {0x12, 0x35, 0x251},
- {0x13, 0x35, 0x251},
- {0x14, 0x35, 0x251},
- {0x12, 0x36, 0x251},
- {0x13, 0x36, 0x251},
- {0x14, 0x36, 0x251},
- {0x12, 0x37, 0x251},
- {0x13, 0x37, 0x251},
- {0x14, 0x37, 0x251},
- {0x12, 0x38, 0x251},
- {0x13, 0x38, 0x251},
- {0x14, 0x38, 0x251},
- {0x12, 0x39, 0x259},
- {0x13, 0x39, 0x259},
- {0x14, 0x39, 0x259},
- {0x12, 0x3A, 0x121},
- {0x13, 0x3A, 0x121},
- {0x14, 0x3A, 0x121},
- };
+{
+ {0x12, 0x35, 0x251},
+ {0x13, 0x35, 0x251},
+ {0x14, 0x35, 0x251},
+ {0x12, 0x36, 0x251},
+ {0x13, 0x36, 0x251},
+ {0x14, 0x36, 0x251},
+ {0x12, 0x37, 0x251},
+ {0x13, 0x37, 0x251},
+ {0x14, 0x37, 0x251},
+ {0x12, 0x38, 0x251},
+ {0x13, 0x38, 0x251},
+ {0x14, 0x38, 0x251},
+ {0x12, 0x39, 0x259},
+ {0x13, 0x39, 0x259},
+ {0x14, 0x39, 0x259},
+ {0x12, 0x3A, 0x121},
+ {0x13, 0x3A, 0x121},
+ {0x14, 0x3A, 0x121},
+};
static const union AnimCmd gSpriteAnim_8617DEC[] =
{
@@ -131,67 +134,70 @@ static const union AnimCmd *const gSpriteAnimTable_8617DFC[] =
gSpriteAnim_8617DEC,
};
-static const struct SpriteTemplate gUnknown_08617E00 = {
+static const struct SpriteTemplate gUnknown_08617E00 =
+{
0xFFFF, 0xFFFF, &gOamData_8617DF4, gSpriteAnimTable_8617DFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
};
-// ewram
-EWRAM_DATA u8* gUnknown_0203CF04 = NULL;
-EWRAM_DATA u8* gUnknown_0203CF08 = NULL;
-EWRAM_DATA struct Struct203CF0C *gUnknown_0203CF0C = NULL;
-EWRAM_DATA struct Struct203CF10 *gUnknown_0203CF10 = NULL;
-EWRAM_DATA u16 *gUnknown_0203CF14 = NULL;
+// EWRAM
+EWRAM_DATA static u8* sUnknown_0203CF04 = NULL;
+EWRAM_DATA static u8* sUnknown_0203CF08 = NULL;
+EWRAM_DATA static struct Struct203CF0C *sUnknown_0203CF0C = NULL;
+EWRAM_DATA static struct Struct203CF10 *sUnknown_0203CF10 = NULL;
+EWRAM_DATA static u16 *sUnknown_0203CF14 = NULL;
-// iwram
-IWRAM_DATA u16 gUnknown_030012A8[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+// IWRAM bss
+IWRAM_DATA static u16 gUnknown_030012A8[8];
// text
void sub_81BEB24(void)
{
u8 i;
- for(i = 0; i < (sizeof(gUnknown_08617DA4)/sizeof(gUnknown_08617DA4[0])); i++)
+ for (i = 0; i < (sizeof(gUnknown_08617DA4)/sizeof(gUnknown_08617DA4[0])); i++)
MapGridSetMetatileIdAt(gUnknown_08617DA4[i].x + 7, gUnknown_08617DA4[i].y + 7, gUnknown_08617DA4[i].tileId);
DrawWholeMapView();
}
void sub_81BEB54(void)
{
- CreateTask(sub_81BED50, 0x9);
+ CreateTask(sub_81BED50, 9);
}
void sub_81BEB68(void)
{
- CreateTask(sub_81BEBF4, 0x9);
+ CreateTask(sub_81BEBF4, 9);
}
void sub_81BEB7C(void)
{
- CreateTask(sub_81BF028, 0x9);
+ CreateTask(sub_81BF028, 9);
}
void sub_81BEB90(void)
{
- SetGpuReg(REG_OFFSET_BG0HOFS, gUnknown_0203CF14[0]);
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_0203CF14[1]);
+ SetGpuReg(REG_OFFSET_BG0HOFS, sUnknown_0203CF14[0]);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sUnknown_0203CF14[1]);
}
void sub_81BEBB4(u8 taskId)
{
- if(!(gTasks[taskId].data[0]))
+ if (!(gTasks[taskId].data[0]))
{
- gUnknown_0203CF14[0] = -gUnknown_0203CF14[0];
+ sUnknown_0203CF14[0] = -sUnknown_0203CF14[0];
gTasks[taskId].data[0] = 2;
sub_81BEB90();
}
else
+ {
gTasks[taskId].data[0]--;
+ }
}
static void sub_81BEBF4(u8 taskId)
{
u8 zero;
- switch(gTasks[taskId].data[0])
+ switch (gTasks[taskId].data[0])
{
case 0:
FreeAllWindowBuffers();
@@ -199,19 +205,19 @@ static void sub_81BEBF4(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 1:
- gUnknown_0203CF04 = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
- gUnknown_0203CF08 = (u8 *)AllocZeroed(MIRAGE_TOWER_PALETTE_LENGTH);
+ sUnknown_0203CF04 = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
+ sUnknown_0203CF08 = (u8 *)AllocZeroed(MIRAGE_TOWER_PALETTE_LENGTH);
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
gTasks[taskId].data[0]++;
break;
case 2:
- CpuSet(gUnknown_08617274, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH / 2);
- LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
+ CpuSet(gUnknown_08617274, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH / 2);
+ LoadBgTiles(0, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
gTasks[taskId].data[0]++;
break;
case 3:
- SetBgTilemapBuffer(0, gUnknown_0203CF08);
+ SetBgTilemapBuffer(0, sUnknown_0203CF08);
CopyToBgTilemapBufferRect_ChangePalette(0, &gUnknown_08617B94, 12, 29, 6, 12, 17);
CopyBgTilemapBufferToVram(0);
gTasks[taskId].data[0]++;
@@ -225,10 +231,10 @@ static void sub_81BEBF4(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 6:
- gUnknown_0203CF14 = (u16 *)Alloc(4);
+ sUnknown_0203CF14 = Alloc(4);
zero = 0;
- gUnknown_0203CF14[0] = 2;
- gUnknown_0203CF14[1] = zero;
+ sUnknown_0203CF14[0] = 2;
+ sUnknown_0203CF14[1] = zero;
CreateTask(sub_81BEBB4, 0xA);
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -236,86 +242,76 @@ static void sub_81BEBF4(u8 taskId)
}
}
-#ifdef NONMATCHING
#define OUTER_BUFFER_LENGTH 0x60
#define INNER_BUFFER_LENGTH 0x30
static void sub_81BED50(u8 taskId)
{
u8 anotherTaskId, j;
+ u16 i;
+ u8 index;
-
- switch(gTasks[taskId].data[0])
+ switch (gTasks[taskId].data[0])
{
case 1:
- gUnknown_0203CF10 = (struct Struct203CF10 *)AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
+ sUnknown_0203CF10 = AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
break;
case 3:
+ if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
{
- u16 i;
- u16 left;
- u32 index, next;
-
- index = (u16)gTasks[taskId].data[3];
- if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
+ if (gTasks[taskId].data[1] > 1)
{
- if(gTasks[taskId].data[1] > 1)
+ index = gTasks[taskId].data[3];
+ sUnknown_0203CF10[index].buffer = Alloc(INNER_BUFFER_LENGTH);
+ for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
+ sUnknown_0203CF10[index].buffer[i] = i;
+ for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
{
- index = (u8)index;
- gUnknown_0203CF10[index].buffer = (u8 *)Alloc(INNER_BUFFER_LENGTH);
- for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
- gUnknown_0203CF10[index].buffer[i] = i;
- for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
- {
- u16 rand1, rand2, temp;
-
- rand1 = Random() % 0x30;
- rand2 = Random() % 0x30;
- temp = gUnknown_0203CF10[index].buffer[rand2];
- gUnknown_0203CF10[index].buffer[rand2] = gUnknown_0203CF10[index].buffer[rand1];
- gUnknown_0203CF10[index].buffer[rand1] = temp;
- }
- if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
- gTasks[taskId].data[3]++;
- gTasks[taskId].data[1] = 0;
+ u16 rand1, rand2, temp;
+
+ rand1 = Random() % 0x30;
+ rand2 = Random() % 0x30;
+ SWAP(sUnknown_0203CF10[index].buffer[rand2], sUnknown_0203CF10[index].buffer[rand1], temp);
}
- gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
+ gTasks[taskId].data[3]++;
+ gTasks[taskId].data[1] = 0;
}
- index = (u8)gTasks[taskId].data[3];
- for(left = (u8)gTasks[taskId].data[2]; left < (u16)index; left = next)
+ gTasks[taskId].data[1]++;
+ }
+ index = gTasks[taskId].data[3];
+ for (i = (u8)(gTasks[taskId].data[2]); i < index; i++)
+ {
+ for (j = 0; j < 1; j++)
{
- j = 0;
- next = left + 1;
- while(!j)
- {
- sub_81BF2B8(gUnknown_0203CF04, ((((OUTER_BUFFER_LENGTH - 1) - left) * INNER_BUFFER_LENGTH) + gUnknown_0203CF10[left].buffer[(gUnknown_0203CF10[left].curr_buffer_index)++]), 0, INNER_BUFFER_LENGTH, 1);
- j++;
- }
- if(gUnknown_0203CF10[left].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
- {
- FREE_AND_SET_NULL(gUnknown_0203CF10[left].buffer);
- gTasks[taskId].data[2]++;
- if((left % 2) == 1)
- gUnknown_0203CF14[1]--;
- }
+ sub_81BF2B8(sUnknown_0203CF04,
+ ((((OUTER_BUFFER_LENGTH - 1) - i) * INNER_BUFFER_LENGTH) + sUnknown_0203CF10[i].buffer[(sUnknown_0203CF10[i].currIndex)++]),
+ 0, INNER_BUFFER_LENGTH, 1);
+ }
+ if (sUnknown_0203CF10[i].currIndex > (INNER_BUFFER_LENGTH - 1))
+ {
+ FREE_AND_SET_NULL(sUnknown_0203CF10[i].buffer);
+ gTasks[taskId].data[2]++;
+ if ((i % 2) == 1)
+ sUnknown_0203CF14[1]--;
}
- LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
- if(gUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
- break;
- return;
}
+ LoadBgTiles(0, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
+ if (sUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].currIndex > (INNER_BUFFER_LENGTH - 1))
+ break;
+ return;
case 4:
UnsetBgTilemapBuffer(0);
anotherTaskId = FindTaskIdByFunc(sub_81BEBB4);
- if(anotherTaskId != 0xFF)
+ if (anotherTaskId != 0xFF)
DestroyTask(anotherTaskId);
- gUnknown_0203CF14[1] = gUnknown_0203CF14[0] = 0;
+ sUnknown_0203CF14[1] = sUnknown_0203CF14[0] = 0;
sub_81BEB90();
break;
case 5:
- FREE_AND_SET_NULL(gUnknown_0203CF14);
- FREE_AND_SET_NULL(gUnknown_0203CF10);
- FREE_AND_SET_NULL(gUnknown_0203CF04);
- FREE_AND_SET_NULL(gUnknown_0203CF08);
+ FREE_AND_SET_NULL(sUnknown_0203CF14);
+ FREE_AND_SET_NULL(sUnknown_0203CF10);
+ FREE_AND_SET_NULL(sUnknown_0203CF04);
+ FREE_AND_SET_NULL(sUnknown_0203CF08);
break;
case 6:
SetGpuRegBits(REG_OFFSET_BG2CNT, 0x2);
@@ -334,423 +330,75 @@ static void sub_81BED50(u8 taskId)
gTasks[taskId].data[0]++;
}
-#else
-NAKED
-static void sub_81BED50(u8 taskId)
-{
- asm("\n\
- .syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x10\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldr r1, =gTasks\n\
- lsls r0, 2\n\
- add r0, r10\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x8]\n\
- subs r0, 0x1\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- adds r6, r1, 0\n\
- cmp r0, 0x7\n\
- bls _081BED7C\n\
- b _081BF002\n\
- _081BED7C:\n\
- lsls r0, 2\n\
- ldr r1, =_081BED90\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
- _081BED90:\n\
- .4byte _081BEDB0\n\
- .4byte _081BF002\n\
- .4byte _081BEDC4\n\
- .4byte _081BEF64\n\
- .4byte _081BEF94\n\
- .4byte _081BEFD0\n\
- .4byte _081BEFF0\n\
- .4byte _081BEFF8\n\
- _081BEDB0:\n\
- ldr r4, =gUnknown_0203CF10\n\
- movs r0, 0xC0\n\
- lsls r0, 2\n\
- bl AllocZeroed\n\
- str r0, [r4]\n\
- b _081BF002\n\
- .pool\n\
- _081BEDC4:\n\
- mov r1, r10\n\
- lsls r0, r1, 2\n\
- adds r1, r0, r1\n\
- lsls r1, 3\n\
- adds r2, r1, r6\n\
- ldrh r3, [r2, 0xE]\n\
- movs r4, 0xE\n\
- ldrsh r1, [r2, r4]\n\
- str r0, [sp, 0x8]\n\
- cmp r1, 0x5F\n\
- bgt _081BEE8A\n\
- movs r1, 0xA\n\
- ldrsh r0, [r2, r1]\n\
- cmp r0, 0x1\n\
- ble _081BEE7C\n\
- lsls r0, r3, 24\n\
- lsrs r4, r0, 24\n\
- movs r0, 0x30\n\
- bl Alloc\n\
- ldr r3, =gUnknown_0203CF10\n\
- ldr r1, [r3]\n\
- lsls r2, r4, 3\n\
- adds r1, r2, r1\n\
- str r0, [r1]\n\
- movs r5, 0\n\
- adds r4, r2, 0\n\
- _081BEDFA:\n\
- ldr r0, [r3]\n\
- adds r0, r4, r0\n\
- ldr r0, [r0]\n\
- adds r0, r5\n\
- strb r5, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x2F\n\
- bls _081BEDFA\n\
- movs r5, 0\n\
- ldr r7, =gUnknown_0203CF10\n\
- adds r6, r2, 0\n\
- _081BEE14:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x30\n\
- bl __umodsi3\n\
- adds r4, r0, 0\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x30\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- ldr r1, [r7]\n\
- adds r1, r6, r1\n\
- ldr r1, [r1]\n\
- adds r0, r1, r0\n\
- ldrb r2, [r0]\n\
- adds r1, r4 \n\
- ldrb r1, [r1]\n\
- strb r1, [r0]\n\
- ldr r0, [r7]\n\
- adds r0, r6, r0\n\
- ldr r0, [r0]\n\
- adds r0, r4\n\
- strb r2, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x2F\n\
- bls _081BEE14\n\
- ldr r0, =gTasks\n\
- ldr r1, [sp, 0x8]\n\
- add r1, r10\n\
- lsls r1, 3\n\
- adds r2, r1, r0\n\
- ldrh r3, [r2, 0xE]\n\
- movs r4, 0xE\n\
- ldrsh r1, [r2, r4]\n\
- adds r6, r0, 0\n\
- cmp r1, 0x5F\n\
- bgt _081BEE78\n\
- adds r0, r3, 0x1\n\
- strh r0, [r2, 0xE]\n\
- _081BEE78:\n\
- movs r0, 0\n\
- strh r0, [r2, 0xA]\n\
- _081BEE7C:\n\
- ldr r1, [sp, 0x8]\n\
- add r1, r10\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- ldrh r0, [r1, 0xA]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0xA]\n\
- _081BEE8A:\n\
- ldr r0, [sp, 0x8]\n\
- add r0, r10\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- ldrb r4, [r0, 0xE]\n\
- ldrb r5, [r0, 0xC]\n\
- lsls r0, r4, 16\n\
- cmp r5, r4\n\
- bcs _081BEF32\n\
- str r0, [sp, 0xC]\n\
- _081BEE9E:\n\
- movs r6, 0\n\
- adds r0, r5, 0x1\n\
- str r0, [sp, 0x4]\n\
- lsls r4, r5, 3\n\
- movs r2, 0x5F\n\
- subs r1, r2, r5\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 4\n\
- mov r9, r0\n\
- _081BEEB2:\n\
- ldr r0, =gUnknown_0203CF04\n\
- ldr r0, [r0]\n\
- ldr r7, =gUnknown_0203CF10\n\
- ldr r3, [r7]\n\
- adds r3, r4, r3\n\
- ldrb r2, [r3, 0x4]\n\
- adds r1, r2, 0x1\n\
- strb r1, [r3, 0x4]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- ldr r1, [r3]\n\
- adds r1, r2\n\
- ldrb r1, [r1]\n\
- add r1, r9\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- movs r2, 0x1\n\
- mov r8, r2\n\
- str r2, [sp]\n\
- movs r2, 0\n\
- movs r3, 0x30\n\
- bl sub_81BF2B8\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0\n\
- beq _081BEEB2\n\
- ldr r0, [r7]\n\
- adds r1, r4, r0\n\
- ldrb r0, [r1, 0x4]\n\
- cmp r0, 0x2F\n\
- bls _081BEF24\n\
- ldr r0, [r1]\n\
- bl Free\n\
- ldr r0, [r7]\n\
- adds r0, r4, r0\n\
- movs r1, 0\n\
- str r1, [r0]\n\
- ldr r1, [sp, 0x8]\n\
- add r1, r10\n\
- lsls r1, 3\n\
- ldr r4, =gTasks\n\
- adds r1, r4\n\
- ldrh r0, [r1, 0xC]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0xC]\n\
- mov r0, r8\n\
- ands r5, r0\n\
- cmp r5, 0x1\n\
- bne _081BEF24\n\
- ldr r0, =gUnknown_0203CF14\n\
- ldr r1, [r0]\n\
- ldrh r0, [r1, 0x2]\n\
- subs r0, 0x1\n\
- strh r0, [r1, 0x2]\n\
- _081BEF24:\n\
- ldr r1, [sp, 0x4]\n\
- lsls r0, r1, 16\n\
- lsrs r5, r0, 16\n\
- ldr r2, [sp, 0xC]\n\
- lsrs r0, r2, 16\n\
- cmp r5, r0\n\
- bcc _081BEE9E\n\
- _081BEF32:\n\
- ldr r0, =gUnknown_0203CF04\n\
- ldr r1, [r0]\n\
- movs r2, 0x92\n\
- lsls r2, 4\n\
- movs r0, 0\n\
- movs r3, 0\n\
- bl LoadBgTiles\n\
- ldr r0, =gUnknown_0203CF10\n\
- ldr r0, [r0]\n\
- movs r4, 0xBE\n\
- lsls r4, 2\n\
- adds r0, r4\n\
- ldrb r0, [r0, 0x4]\n\
- cmp r0, 0x2F\n\
- bhi _081BF002\n\
- b _081BF014\n\
- .pool\n\
- _081BEF64:\n\
- movs r0, 0\n\
- bl UnsetBgTilemapBuffer\n\
- ldr r0, =sub_81BEBB4\n\
- bl FindTaskIdByFunc\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- beq _081BEF7C\n\
- bl DestroyTask\n\
- _081BEF7C:\n\
- ldr r0, =gUnknown_0203CF14\n\
- ldr r1, [r0]\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- strh r0, [r1, 0x2]\n\
- bl sub_81BEB90\n\
- b _081BF002\n\
- .pool\n\
- _081BEF94:\n\
- ldr r4, =gUnknown_0203CF14\n\
- ldr r0, [r4]\n\
- bl Free\n\
- movs r5, 0\n\
- str r5, [r4]\n\
- ldr r4, =gUnknown_0203CF10\n\
- ldr r0, [r4]\n\
- bl Free\n\
- str r5, [r4]\n\
- ldr r4, =gUnknown_0203CF04\n\
- ldr r0, [r4]\n\
- bl Free\n\
- str r5, [r4]\n\
- ldr r4, =gUnknown_0203CF08\n\
- ldr r0, [r4]\n\
- bl Free\n\
- str r5, [r4]\n\
- b _081BF002\n\
- .pool\n\
- _081BEFD0:\n\
- movs r0, 0xC\n\
- movs r1, 0x2\n\
- bl SetGpuRegBits\n\
- movs r0, 0x8\n\
- movs r1, 0\n\
- bl SetGpuRegBits\n\
- movs r0, 0\n\
- movs r1, 0x7\n\
- movs r2, 0\n\
- bl SetBgAttribute\n\
- bl sub_81971D0\n\
- b _081BF002\n\
- _081BEFF0:\n\
- movs r0, 0\n\
- bl ShowBg\n\
- b _081BF002\n\
- _081BEFF8:\n\
- mov r0, r10\n\
- bl DestroyTask\n\
- bl EnableBothScriptContexts\n\
- _081BF002:\n\
- ldr r0, =gTasks\n\
- mov r2, r10\n\
- lsls r1, r2, 2\n\
- add r1, r10\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldrh r0, [r1, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0x8]\n\
- _081BF014:\n\
- add sp, 0x10\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
-
static void sub_81BF028(u8 taskId)
{
u16 i;
+ u8 *buffer;
- switch(gTasks[taskId].data[0])
+ switch (gTasks[taskId].data[0])
{
case 1:
- gUnknown_0203CF0C = (struct Struct203CF0C *)AllocZeroed(sizeof(struct Struct203CF0C));
- gUnknown_0203CF0C->frameImageTiles = (u8 *)AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
- gUnknown_0203CF0C->frameImage = (struct DynamicSpriteFrameImage *) AllocZeroed(sizeof(struct DynamicSpriteFrameImage));
- gUnknown_0203CF0C->unkC = (u16 *)AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
- gUnknown_0203CF0C->unk10 = 0;
+ sUnknown_0203CF0C = AllocZeroed(sizeof(*sUnknown_0203CF0C));
+ sUnknown_0203CF0C->frameImageTiles = AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
+ sUnknown_0203CF0C->frameImage = AllocZeroed(sizeof(*sUnknown_0203CF0C->frameImage));
+ sUnknown_0203CF0C->unkC = AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
+ sUnknown_0203CF0C->unk10 = 0;
break;
case 2:
- {
- u8 *buffer;
- buffer = gUnknown_0203CF0C->frameImageTiles;
- for(i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
- *buffer = gRootFossil_Gfx[i];
- }
+ buffer = sUnknown_0203CF0C->frameImageTiles;
+ for (i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
+ *buffer = gRootFossil_Gfx[i];
break;
case 3:
- gUnknown_0203CF0C->frameImage->data = gUnknown_0203CF0C->frameImageTiles;
- gUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
+ sUnknown_0203CF0C->frameImage->data = sUnknown_0203CF0C->frameImageTiles;
+ sUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
break;
case 4:
{
- u8 spriteId, zero;
struct SpriteTemplate fossilTemplate;
fossilTemplate = gUnknown_08617E00;
- fossilTemplate.images = (struct SpriteFrameImage *)(gUnknown_0203CF0C->frameImage);
- spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
- gUnknown_0203CF0C->spriteId = spriteId;
- zero = 0;
- gSprites[gUnknown_0203CF0C->spriteId].centerToCornerVecX = zero;
- gSprites[gUnknown_0203CF0C->spriteId].data[0] = gSprites[gUnknown_0203CF0C->spriteId].pos1.x;
- gSprites[gUnknown_0203CF0C->spriteId].data[1] = 1;
+ fossilTemplate.images = (struct SpriteFrameImage *)(sUnknown_0203CF0C->frameImage);
+ sUnknown_0203CF0C->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
+ gSprites[sUnknown_0203CF0C->spriteId].centerToCornerVecX = 0;
+ gSprites[sUnknown_0203CF0C->spriteId].data[0] = gSprites[sUnknown_0203CF0C->spriteId].pos1.x;
+ gSprites[sUnknown_0203CF0C->spriteId].data[1] = 1;
}
case 5:
- for(i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
- gUnknown_0203CF0C->unkC[i] = i;
+ for (i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
+ sUnknown_0203CF0C->unkC[i] = i;
break;
case 6:
+ for (i = 0; i < (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)); i++)
{
- u16 rand1, rand2, temp, j;
- j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
- for(i = 0; i <= j; i++)
- {
- rand1 = Random() % 0x100;
- rand2 = Random() % 0x100;
- j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
- temp = gUnknown_0203CF0C->unkC[rand2];
- gUnknown_0203CF0C->unkC[rand2] = gUnknown_0203CF0C->unkC[rand1];
- gUnknown_0203CF0C->unkC[rand1] = temp;
- }
- gSprites[gUnknown_0203CF0C->spriteId].callback = sub_81BF248;
- break;
+ u16 rand1, rand2, temp;
+
+ rand1 = Random() % 0x100;
+ rand2 = Random() % 0x100;
+ SWAP(sUnknown_0203CF0C->unkC[rand2], sUnknown_0203CF0C->unkC[rand1], temp);
}
+ gSprites[sUnknown_0203CF0C->spriteId].callback = sub_81BF248;
+ break;
case 7:
- if(gSprites[gUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
+ if (gSprites[sUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
return;
- DestroySprite(&gSprites[gUnknown_0203CF0C->spriteId]);
- FREE_AND_SET_NULL(gUnknown_0203CF0C->unkC);;
- FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImage);
- FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImageTiles);
- FREE_AND_SET_NULL(gUnknown_0203CF0C);
+ DestroySprite(&gSprites[sUnknown_0203CF0C->spriteId]);
+ FREE_AND_SET_NULL(sUnknown_0203CF0C->unkC);;
+ FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImage);
+ FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImageTiles);
+ FREE_AND_SET_NULL(sUnknown_0203CF0C);
break;
case 8:
EnableBothScriptContexts();
+ break;
}
- ++gTasks[taskId].data[0];
+
+ gTasks[taskId].data[0]++;
}
static void sub_81BF248(struct Sprite *sprite)
{
- if (gUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
+ if (sUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
{
sprite->callback = SpriteCallbackDummy;
}
@@ -759,7 +407,7 @@ static void sub_81BF248(struct Sprite *sprite)
u8 i;
for (i = 0; i < 2; i++)
{
- sub_81BF2B8(gUnknown_0203CF0C->frameImageTiles, gUnknown_0203CF0C->unkC[gUnknown_0203CF0C->unk10++], 0, 16, 0);
+ sub_81BF2B8(sUnknown_0203CF0C->frameImageTiles, sUnknown_0203CF0C->unkC[sUnknown_0203CF0C->unk10++], 0, 16, 0);
}
StartSpriteAnim(sprite, 0);
}
@@ -768,3 +416,146 @@ static void sub_81BF248(struct Sprite *sprite)
sprite->pos1.y++;
}
}
+
+#ifdef NONMATCHING
+static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
+{
+ u8 r5, r4, r0, r2;
+ u16 var;
+
+ r4 = r5 = b / d;
+ gUnknown_030012A8[0] = r4;
+
+ r0 = r2 = b % d;
+ gUnknown_030012A8[1] = r2;
+
+ r4 &= 7;
+ r2 &= 7;
+ gUnknown_030012A8[2] = r4;
+ gUnknown_030012A8[3] = r2;
+
+ r0 /= 8;
+ r5 /= 8;
+ gUnknown_030012A8[4] = r0;
+ gUnknown_030012A8[5] = r5;
+
+ var = ((d / 8) * (r5 * 64)) + (r0 * 64);
+ gUnknown_030012A8[6] = var;
+
+ var += (r4 * 8) + r2;
+ gUnknown_030012A8[7] = var;
+
+ // This part is non-matching. 99% sure it IS functionally equivalent, though.
+ b = (b & 1) ^ 1;
+ c = (c << ((b) << 2)) | (15 << ((b ^ 1) << 2));
+
+ a[(var / 2) + (e * 32)] &= c;
+}
+
+#else
+NAKED
+static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ str r0, [sp]\n\
+ mov r10, r1\n\
+ adds r6, r2, 0\n\
+ mov r8, r3\n\
+ ldr r0, [sp, 0x28]\n\
+ mov r9, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r10, r1\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ mov r0, r8\n\
+ lsls r0, 24\n\
+ mov r8, r0\n\
+ lsrs r7, r0, 24\n\
+ mov r1, r9\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r9, r1\n\
+ mov r0, r10\n\
+ adds r1, r7, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ lsls r5, 24\n\
+ lsrs r4, r5, 24\n\
+ ldr r3, =gUnknown_030012A8\n\
+ strh r4, [r3]\n\
+ mov r0, r10\n\
+ adds r1, r7, 0\n\
+ str r3, [sp, 0x4]\n\
+ bl __modsi3\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r3, [sp, 0x4]\n\
+ strh r2, [r3, 0x2]\n\
+ movs r1, 0x7\n\
+ ands r4, r1\n\
+ ands r2, r1\n\
+ strh r4, [r3, 0x4]\n\
+ strh r2, [r3, 0x6]\n\
+ lsrs r0, 27\n\
+ lsrs r5, 27\n\
+ strh r0, [r3, 0x8]\n\
+ strh r5, [r3, 0xA]\n\
+ mov r1, r8\n\
+ lsrs r1, 27\n\
+ lsls r1, 6\n\
+ mov r8, r1\n\
+ mov r1, r8\n\
+ muls r1, r5\n\
+ lsls r0, 6\n\
+ adds r1, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ strh r1, [r3, 0xC]\n\
+ lsls r4, 3\n\
+ adds r4, r2\n\
+ adds r1, r4\n\
+ lsls r4, r1, 16\n\
+ lsrs r4, 17\n\
+ strh r1, [r3, 0xE]\n\
+ movs r1, 0x1\n\
+ mov r0, r10\n\
+ ands r1, r0\n\
+ movs r2, 0x1\n\
+ eors r1, r2\n\
+ lsls r0, r1, 2\n\
+ lsls r6, r0\n\
+ eors r1, r2\n\
+ lsls r1, 2\n\
+ movs r0, 0xF\n\
+ lsls r0, r1\n\
+ orrs r6, r0\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ mov r1, r9\n\
+ lsls r1, 5\n\
+ mov r9, r1\n\
+ add r9, r4\n\
+ ldr r1, [sp]\n\
+ add r1, r9\n\
+ ldrb r0, [r1]\n\
+ ands r6, r0\n\
+ strb r6, [r1]\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ ");
+}
+#endif // NONMATCHING
diff --git a/src/mossdeep_gym.c b/src/mossdeep_gym.c
new file mode 100644
index 000000000..cd377ad83
--- /dev/null
+++ b/src/mossdeep_gym.c
@@ -0,0 +1,313 @@
+#include "global.h"
+#include "event_object_movement.h"
+#include "fieldmap.h"
+#include "malloc.h"
+#include "mossdeep_gym.h"
+#include "script_movement.h"
+#include "constants/event_object_movement_constants.h"
+
+// Movement scripts.
+extern const u8 gUnknown_08612698[];
+extern const u8 gUnknown_0861269C[];
+extern const u8 gUnknown_086126A0[];
+extern const u8 gUnknown_086126A4[];
+extern const u8 gUnknown_086126A8[];
+extern const u8 gUnknown_086126AA[];
+extern const u8 gUnknown_086126AC[];
+extern const u8 gUnknown_086126AE[];
+
+struct MossdeepSubStruct
+{
+ u8 unk0;
+ u8 eventTemplateId;
+};
+
+struct MossdeepStruct
+{
+ struct MossdeepSubStruct objects[EVENT_OBJECTS_COUNT];
+ u8 count;
+ bool8 unk41;
+};
+
+// This file's functions.
+static void AddEventObject(u8 eventTemplateId, u8 arg1);
+static void sub_81A8D94(u8 eventTemplateId, u8 arg1);
+
+// EWRAM vars
+EWRAM_DATA static struct MossdeepStruct *gUnknown_0203CE50 = NULL;
+
+// code
+void InitMossdeepGymTiles(bool8 arg0)
+{
+ if (gUnknown_0203CE50 == NULL)
+ gUnknown_0203CE50 = AllocZeroed(sizeof(*gUnknown_0203CE50));
+
+ gUnknown_0203CE50->unk41 = arg0;
+}
+
+void FinishMossdeepGymTiles(void)
+{
+ u8 id;
+
+ if (gUnknown_0203CE50 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203CE50);
+
+ id = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[id]);
+ sub_80D338C();
+}
+
+u16 MossdeepGym_MoveEvents(u8 arg0)
+{
+ u8 i;
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+ u16 localId = 0;
+
+ for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
+ {
+ s32 var;
+ u8 r5;
+ s16 x = events[i].x + 7;
+ s16 y = events[i].y + 7;
+ u16 metatile = MapGridGetMetatileIdAt(x, y);
+
+ if (!gUnknown_0203CE50->unk41)
+ var = 0x250;
+ else
+ var = 0x298;
+
+ if (metatile < 0x250)
+ continue;
+
+ if ((u8)((metatile - var) / 8) >= 5)
+ continue;
+ if ((u8)((metatile - var) / 8) != arg0)
+ continue;
+
+ r5 = (u8)((metatile - var) % 8);
+ if (r5 < 4)
+ {
+ s8 x = 0;
+ s8 y = 0;
+ const u8 *movementScript;
+
+ switch (r5)
+ {
+ case 0:
+ movementScript = gUnknown_08612698;
+ x = 1;
+ break;
+ case 1:
+ movementScript = gUnknown_0861269C;
+ y = 1;
+ break;
+ case 2:
+ movementScript = gUnknown_086126A0;
+ x = -1;
+ break;
+ case 3:
+ movementScript = gUnknown_086126A4;
+ y = -1;
+ break;
+ default:
+ continue;
+ }
+
+ events[i].x += x;
+ events[i].y += y;
+ if (GetEventObjectIdByLocalIdAndMap(events[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup) != EVENT_OBJECTS_COUNT)
+ {
+ AddEventObject(i, r5);
+ localId = events[i].localId;
+ ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript);
+ }
+ else
+ {
+ sub_81A8D94(i, r5);
+ }
+ }
+ }
+
+ return localId;
+}
+
+void MossdeepGym_TurnEvents(void)
+{
+ u8 i;
+ s32 var;
+ struct EventObjectTemplate *events;
+
+ if (gUnknown_0203CE50 == NULL)
+ return;
+
+ if (!gUnknown_0203CE50->unk41)
+ var = 0x250;
+ else
+ var = 0x298;
+
+ events = gSaveBlock1Ptr->eventObjectTemplates;
+ for (i = 0; i < gUnknown_0203CE50->count; i++)
+ {
+ s32 r6;
+ s8 r0;
+ u8 eventObjectId;
+ s16 x = events[gUnknown_0203CE50->objects[i].eventTemplateId].x + 7;
+ s16 y = events[gUnknown_0203CE50->objects[i].eventTemplateId].y + 7;
+ u16 metatile = MapGridGetMetatileIdAt(x, y);
+
+ r0 = (u8)((metatile - var) % 8);
+ r0 -= (gUnknown_0203CE50->objects[i].unk0);
+ if (r0 < 0 || r0 == 3)
+ {
+ if (r0 == -3)
+ r6 = 1;
+ else
+ r6 = 0;
+ }
+ else
+ {
+ if (r0 > 0)
+ r6 = 1;
+ else
+ r6 = 2;
+ }
+
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ if (eventObjectId != EVENT_OBJECTS_COUNT)
+ {
+ const u8 *movementScript;
+ u8 direction = gEventObjects[eventObjectId].facingDirection;
+ if (r6 == 0)
+ {
+ switch (direction)
+ {
+ case DIR_EAST:
+ movementScript = gUnknown_086126AE;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
+ break;
+ case DIR_SOUTH:
+ movementScript = gUnknown_086126A8;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
+ break;
+ case DIR_WEST:
+ movementScript = gUnknown_086126AA;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
+ break;
+ case DIR_NORTH:
+ movementScript = gUnknown_086126AC;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
+ break;
+ default:
+ continue;
+ }
+ ScriptMovement_StartObjectMovementScript(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId,
+ gSaveBlock1Ptr->location.mapNum,
+ gSaveBlock1Ptr->location.mapGroup,
+ movementScript);
+ }
+ else if (r6 == 1)
+ {
+ switch (direction)
+ {
+ case DIR_EAST:
+ movementScript = gUnknown_086126AA;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
+ break;
+ case DIR_SOUTH:
+ movementScript = gUnknown_086126AC;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
+ break;
+ case DIR_WEST:
+ movementScript = gUnknown_086126AE;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
+ break;
+ case DIR_NORTH:
+ movementScript = gUnknown_086126A8;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
+ break;
+ default:
+ continue;
+ }
+ ScriptMovement_StartObjectMovementScript(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId,
+ gSaveBlock1Ptr->location.mapNum,
+ gSaveBlock1Ptr->location.mapGroup,
+ movementScript);
+ }
+ }
+ }
+}
+
+static void AddEventObject(u8 eventTemplateId, u8 arg1)
+{
+ gUnknown_0203CE50->objects[gUnknown_0203CE50->count].eventTemplateId = eventTemplateId;
+ gUnknown_0203CE50->objects[gUnknown_0203CE50->count].unk0 = arg1;
+ gUnknown_0203CE50->count++;
+}
+
+static void sub_81A8D94(u8 eventTemplateId, u8 arg1)
+{
+ s8 r0;
+ s32 r6;
+ s32 var;
+ u16 movementType;
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+ s16 x = events[eventTemplateId].x + 7;
+ s16 y = events[eventTemplateId].y + 7;
+ u16 metatile = MapGridGetMetatileIdAt(x, y);
+
+ if (!gUnknown_0203CE50->unk41)
+ var = 0x250;
+ else
+ var = 0x298;
+
+ r0 = (u8)((metatile - var) % 8);
+ r0 -= arg1;
+ if (r0 < 0 || r0 == 3)
+ r6 = 0;
+ else if (r0 > 0 || r0 == -3)
+ r6 = 1;
+ else
+ r6 = 2;
+
+ movementType = events[eventTemplateId].movementType;
+ if (r6 == 0)
+ {
+ switch (movementType)
+ {
+ case MOVEMENT_TYPE_FACE_RIGHT:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
+ break;
+ case MOVEMENT_TYPE_FACE_DOWN:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
+ break;
+ case MOVEMENT_TYPE_FACE_LEFT:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
+ break;
+ case MOVEMENT_TYPE_FACE_UP:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
+ break;
+ default:
+ break;
+ }
+ }
+ else if (r6 == 1)
+ {
+ switch (movementType)
+ {
+ case MOVEMENT_TYPE_FACE_RIGHT:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
+ break;
+ case MOVEMENT_TYPE_FACE_DOWN:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
+ break;
+ case MOVEMENT_TYPE_FACE_LEFT:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
+ break;
+ case MOVEMENT_TYPE_FACE_UP:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
+ break;
+ default:
+ break;
+ }
+ }
+}
diff --git a/src/multiboot.c b/src/multiboot.c
index 7fd6df2d0..da90a55c0 100644
--- a/src/multiboot.c
+++ b/src/multiboot.c
@@ -1,7 +1,7 @@
#include "gba/gba.h"
#include "multiboot.h"
-static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
+IWRAM_DATA static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
static int MultiBootSend(struct MultiBootParam *mp, u16 data);
static int MultiBootHandShake(struct MultiBootParam *mp);
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 921c8e97c..4196bb34c 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -18,7 +18,6 @@
#include "pokemon_storage_system.h"
extern void sub_811EFC0(u8);
-extern void ValidateEReaderTrainer(void);
extern ScrCmdFunc gMysteryEventScriptCmdTable[];
extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
diff --git a/src/new_game.c b/src/new_game.c
index cdabd5ccc..18b128624 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -28,7 +28,6 @@
#include "apprentice.h"
#include "frontier_util.h"
-extern u8 gDifferentSaveFile;
extern u16 gSaveFileStatus;
extern u8 gUnknown_030060B0;
@@ -61,6 +60,10 @@ static void ClearFrontierRecord(void);
static void WarpToTruck(void);
static void ResetMiniGamesResults(void);
+// EWRAM vars
+EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
+EWRAM_DATA bool8 gUnknown_020322D5 = FALSE;
+
// const rom data
static const struct ContestWinner sContestWinnerPicDummy =
{
diff --git a/src/overworld.c b/src/overworld.c
index 28d2d02ca..10f2ebd26 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -88,12 +88,6 @@ extern const struct MapHeader *const *const gMapGroups[];
extern const s32 gMaxFlashLevel;
extern const u16 gUnknown_82EC7C4[];
-u16 gUnknown_03005DA8;
-MainCallback gFieldCallback;
-bool8 (*gFieldCallback2)(void);
-u8 gUnknown_03005DB4;
-u8 gFieldLinkPlayerCount;
-
// functions
extern void HealPlayerParty(void);
extern void move_tilemap_camera_to_upper_left_corner(void);
@@ -256,6 +250,16 @@ IWRAM_DATA static u8 sUnknown_03000E18;
IWRAM_DATA static u8 sUnknown_03000E19;
IWRAM_DATA static u32 sUnusedVar;
+// IWRAM common
+u16 *gBGTilemapBuffers1;
+u16 *gBGTilemapBuffers2;
+u16 *gBGTilemapBuffers3;
+u16 gUnknown_03005DA8;
+void (*gFieldCallback)(void);
+bool8 (*gFieldCallback2)(void);
+u8 gUnknown_03005DB4;
+u8 gFieldLinkPlayerCount;
+
// EWRAM vars
EWRAM_DATA static u8 sUnknown_020322D8 = 0;
EWRAM_DATA struct WarpData gLastUsedWarp = {0};
diff --git a/src/pokedex.c b/src/pokedex.c
index 93ff06876..1405393c1 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -29,14 +29,17 @@
#include "constants/songs.h"
#include "constants/species.h"
+extern u8 gUnknown_030061EC;
+
+// EWRAM
static EWRAM_DATA struct PokedexView *gUnknown_02039B4C = NULL;
static EWRAM_DATA u16 gUnknown_02039B50 = 0;
static EWRAM_DATA u8 gUnknown_02039B52 = 0;
static EWRAM_DATA struct PokedexListItem *gUnknown_02039B54 = NULL;
+// IWRAM common
u8 gUnknown_030060B0;
-MainCallback gUnknown_030060B4;
-u8 gUnknown_030061EC;
+void (*gUnknown_030060B4)(void);
struct PokedexEntry
{
diff --git a/src/save.c b/src/save.c
index 3ee98f4f7..4ae516fc9 100644
--- a/src/save.c
+++ b/src/save.c
@@ -94,6 +94,7 @@ u16 gSaveUnusedVar2;
u16 gUnknown_03006294;
EWRAM_DATA struct SaveSection gSaveDataBuffer = {0};
+EWRAM_DATA static u8 sUnusedVar = 0;
void ClearSaveData(void)
{
diff --git a/src/scrcmd.c b/src/scrcmd.c
index d2a6c2a17..310387337 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -4,6 +4,7 @@
#include "berry.h"
#include "clock.h"
#include "coins.h"
+#include "contest.h"
#include "contest_link_80F57C4.h"
#include "contest_painting.h"
#include "data2.h"
@@ -27,6 +28,7 @@
#include "event_obj_lock.h"
#include "menu.h"
#include "money.h"
+#include "mossdeep_gym.h"
#include "mystery_event_script.h"
#include "palette.h"
#include "party_menu.h"
@@ -49,11 +51,6 @@
#include "tv.h"
#include "window.h"
-extern u16 sub_81A89A0(u8);
-extern void sub_81A8AF8(void);
-extern void sub_81A895C(void);
-extern void sub_81A8934(u8);
-
typedef u16 (*SpecialFunc)(void);
typedef void (*NativeFunc)(void);
@@ -66,8 +63,6 @@ static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
-extern u16 gSpecialVar_ContestCategory;
-
IWRAM_DATA u8 gUnknown_03000F30;
extern const SpecialFunc gSpecials[];
@@ -2157,13 +2152,13 @@ bool8 ScrCmd_mossdeepgym1(struct ScriptContext *ctx)
{
u16 v1 = VarGet(ScriptReadHalfword(ctx));
- sMovingNpcId = sub_81A89A0(v1);
+ sMovingNpcId = MossdeepGym_MoveEvents(v1);
return FALSE;
}
bool8 ScrCmd_mossdeepgym2(struct ScriptContext *ctx)
{
- sub_81A8AF8();
+ MossdeepGym_TurnEvents();
return FALSE;
}
@@ -2171,13 +2166,13 @@ bool8 ScrCmd_mossdeepgym3(struct ScriptContext *ctx)
{
u16 v1 = VarGet(ScriptReadHalfword(ctx));
- sub_81A8934(v1);
+ InitMossdeepGymTiles(v1);
return FALSE;
}
bool8 ScrCmd_mossdeepgym4(struct ScriptContext *ctx)
{
- sub_81A895C();
+ FinishMossdeepGymTiles();
return FALSE;
}
@@ -2204,7 +2199,7 @@ bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
}
}
-// This command will force the Pokémon to be obedient, you don't get to make it disobedient
+// This command will force the Pokémon to be obedient, you don't get to make it disobedient.
bool8 ScrCmd_setmonobedient(struct ScriptContext *ctx)
{
bool8 obedient = TRUE;
diff --git a/src/start_menu.c b/src/start_menu.c
index 976cbe2a6..455d26509 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -35,6 +35,7 @@
#include "field_player_avatar.h"
#include "battle_pyramid_bag.h"
#include "battle_pike.h"
+#include "new_game.h"
// Menu actions
enum
@@ -63,6 +64,10 @@ enum
SAVE_ERROR
};
+// IWRAM common
+bool8 (*gMenuCallback)(void);
+
+// EWRAM
EWRAM_DATA static u8 sSafariBallsWindowId = 0;
EWRAM_DATA static u8 sBattlePyramidFloorWindowId = 0;
EWRAM_DATA static u8 sStartMenuCursorPos = 0;
@@ -76,7 +81,6 @@ EWRAM_DATA static bool8 sSavingComplete = FALSE;
EWRAM_DATA static u8 sSaveInfoWindowId = 0;
// Extern variables.
-extern u8 gDifferentSaveFile;
extern u8 gUnknown_03005DB4;
// Extern functions in not decompiled files.
diff --git a/src/string_util.c b/src/string_util.c
index 3fbf79d87..8ce9a97ed 100644
--- a/src/string_util.c
+++ b/src/string_util.c
@@ -2,7 +2,11 @@
#include "string_util.h"
#include "text.h"
-EWRAM_DATA u8 gUnknownStringVar[16] = {0};
+EWRAM_DATA u8 gStringVar1[0x100] = {0};
+EWRAM_DATA u8 gStringVar2[0x100] = {0};
+EWRAM_DATA u8 gStringVar3[0x100] = {0};
+EWRAM_DATA u8 gStringVar4[0x3E8] = {0};
+EWRAM_DATA static u8 sUnknownStringVar[16] = {0};
static const u8 sDigits[] = __("0123456789ABCDEF");
@@ -421,7 +425,7 @@ u8 *StringBraille(u8 *dest, const u8 *src)
static const u8 *ExpandPlaceholder_UnknownStringVar(void)
{
- return gUnknownStringVar;
+ return sUnknownStringVar;
}
static const u8 *ExpandPlaceholder_PlayerName(void)