Doc storage - unk utility

This commit is contained in:
GriffinR
2021-04-17 23:31:29 -04:00
parent 7bf89d6446
commit 33c68255de
+75 -60
View File
@@ -342,21 +342,21 @@ struct StorageMenu
int textId; int textId;
}; };
struct UnkStruct_2000028 struct UnkUtilData
{ {
const u8 *unk_00; const u8 *src;
u8 *unk_04; u8 *dest;
u16 unk_08; u16 size;
u16 unk_0a; u16 unk;
u16 newField; u16 height;
void (*unk_0c)(struct UnkStruct_2000028 *data); void (*func)(struct UnkUtilData *data);
}; };
struct UnkStruct_2000020 struct UnkUtil
{ {
struct UnkStruct_2000028 *unk_00; struct UnkUtilData *data;
u8 unk_04; u8 numActive;
u8 unk_05; u8 max;
}; };
struct ChooseBoxMenu struct ChooseBoxMenu
@@ -391,8 +391,8 @@ struct PokemonStorageSystemData
u8 screenChangeType; u8 screenChangeType;
bool8 isReshowingPSS; bool8 isReshowingPSS;
u8 taskId; u8 taskId;
struct UnkStruct_2000020 unk_0020; struct UnkUtil unkUtil;
struct UnkStruct_2000028 unk_0028[8]; struct UnkUtilData unkUtilData[8];
u16 partyMenuTilemapBuffer[0x108]; u16 partyMenuTilemapBuffer[0x108];
u16 partyMenuUnused; // Never read u16 partyMenuUnused; // Never read
u16 partyMenuY; u16 partyMenuY;
@@ -770,10 +770,6 @@ static s8 GetMenuItemTextId(u8);
static u8 SetSelectionMenuTexts(void); static u8 SetSelectionMenuTexts(void);
static bool8 SetMenuTexts_Mon(void); static bool8 SetMenuTexts_Mon(void);
static bool8 SetMenuTexts_Item(void); static bool8 SetMenuTexts_Item(void);
static void sub_80D2A90(struct UnkStruct_2000020 *, struct UnkStruct_2000028 *, u32);
static void sub_80D2AA4(void);
static void sub_80D2B88(struct UnkStruct_2000028 *);
static void sub_80D2C1C(struct UnkStruct_2000028 *);
static u8 GetBoxWallpaper(u8); static u8 GetBoxWallpaper(u8);
static void SetBoxWallpaper(u8, u8); static void SetBoxWallpaper(u8, u8);
@@ -836,6 +832,12 @@ static void TilemapUtil_Update(u8);
static void TilemapUtil_DrawPrev(u8); static void TilemapUtil_DrawPrev(u8);
static void TilemapUtil_Draw(u8); static void TilemapUtil_Draw(u8);
// Functions for unknown utility
static void UnkUtil_Init(struct UnkUtil *, struct UnkUtilData *, u32);
static void UnkUtil_Run(void);
static void UnkUtil_CpuRun(struct UnkUtilData *);
static void UnkUtil_DmaRun(struct UnkUtilData *);
struct { struct {
const u8 *text; const u8 *text;
const u8 *desc; const u8 *desc;
@@ -1921,7 +1923,7 @@ static void VblankCb_PSS(void)
{ {
LoadOam(); LoadOam();
ProcessSpriteCopyRequests(); ProcessSpriteCopyRequests();
sub_80D2AA4(); UnkUtil_Run();
TransferPlttBuffer(); TransferPlttBuffer();
SetGpuReg(REG_OFFSET_BG2HOFS, sPSSData->bg2_X); SetGpuReg(REG_OFFSET_BG2HOFS, sPSSData->bg2_X);
} }
@@ -1995,7 +1997,7 @@ static void sub_80C7E98(void)
FreeAllSpritePalettes(); FreeAllSpritePalettes();
ClearDma3Requests(); ClearDma3Requests();
gReservedSpriteTileCount = 0x280; gReservedSpriteTileCount = 0x280;
sub_80D2A90(&sPSSData->unk_0020, sPSSData->unk_0028, 8); UnkUtil_Init(&sPSSData->unkUtil, sPSSData->unkUtilData, ARRAY_COUNT(sPSSData->unkUtilData));
gKeyRepeatStartDelay = 20; gKeyRepeatStartDelay = 20;
ClearScheduledBgCopiesToVram(); ClearScheduledBgCopiesToVram();
TilemapUtil_Init(TILEMAPID_COUNT); TilemapUtil_Init(TILEMAPID_COUNT);
@@ -9821,83 +9823,96 @@ static void TilemapUtil_Draw(u8 id)
} }
} }
EWRAM_DATA static struct UnkStruct_2000020 *gUnknown_02039D8C = NULL;
static void sub_80D2A90(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2) //------------------------------------------------------------------------------
// SECTION: UnkUtil
//
// Some data transfer utility that goes functionally unused.
// It gets initialized with UnkUtil_Init, and run every vblank in Pokémon
// Storage with UnkUtil_Run, but neither of the Add functions are ever used,
// so UnkUtil_Run performs no actions.
//------------------------------------------------------------------------------
EWRAM_DATA static struct UnkUtil *sUnkUtil = NULL;
static void UnkUtil_Init(struct UnkUtil *util, struct UnkUtilData *data, u32 max)
{ {
gUnknown_02039D8C = arg0; sUnkUtil = util;
arg0->unk_00 = arg1; util->data = data;
arg0->unk_05 = arg2; util->max = max;
arg0->unk_04 = 0; util->numActive = 0;
} }
static void sub_80D2AA4(void) static void UnkUtil_Run(void)
{ {
u16 i; u16 i;
if (sUnkUtil->numActive)
if (gUnknown_02039D8C->unk_04)
{ {
for (i = 0; i < gUnknown_02039D8C->unk_04; i++) for (i = 0; i < sUnkUtil->numActive; i++)
{ {
struct UnkStruct_2000028 *unkStruct = &gUnknown_02039D8C->unk_00[i]; struct UnkUtilData *data = &sUnkUtil->data[i];
unkStruct->unk_0c(unkStruct); data->func(data);
} }
sUnkUtil->numActive = 0;
gUnknown_02039D8C->unk_04 = 0;
} }
} }
static bool8 sub_80D2AEC(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg) // Unused
static bool8 UnkUtil_CpuAdd(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg)
{ {
struct UnkStruct_2000028 *unkStruct; struct UnkUtilData *data;
if (gUnknown_02039D8C->unk_04 >= gUnknown_02039D8C->unk_05) if (sUnkUtil->numActive >= sUnkUtil->max)
return FALSE; return FALSE;
unkStruct = &gUnknown_02039D8C->unk_00[gUnknown_02039D8C->unk_04++]; data = &sUnkUtil->data[sUnkUtil->numActive++];
unkStruct->unk_08 = width * 2; data->size = width * 2;
unkStruct->unk_04 = dest + 2 * (dTop * 32 + dLeft); data->dest = dest + 2 * (dTop * 32 + dLeft);
unkStruct->unk_00 = src + 2 * (sTop * unkArg + sLeft); data->src = src + 2 * (sTop * unkArg + sLeft);
unkStruct->newField = height; data->height = height;
unkStruct->unk_0a = unkArg; data->unk = unkArg;
unkStruct->unk_0c = sub_80D2B88; data->func = UnkUtil_CpuRun;
return TRUE; return TRUE;
} }
static void sub_80D2B88(struct UnkStruct_2000028 *unkStruct) // Functionally unused
static void UnkUtil_CpuRun(struct UnkUtilData *data)
{ {
u16 i; u16 i;
for (i = 0; i < unkStruct->newField; i++) for (i = 0; i < data->height; i++)
{ {
CpuSet(unkStruct->unk_00, unkStruct->unk_04, (unkStruct->unk_08 / 2)); CpuSet(data->src, data->dest, data->size / 2);
unkStruct->unk_04 += 64; data->dest += 64;
unkStruct->unk_00 += (unkStruct->unk_0a * 2); data->src += data->unk * 2;
} }
} }
static bool8 sub_80D2BC0(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height) // Unused
static bool8 UnkUtil_DmaAdd(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height)
{ {
struct UnkStruct_2000028 *unkStruct; struct UnkUtilData *data;
if (gUnknown_02039D8C->unk_04 >= gUnknown_02039D8C->unk_05) if (sUnkUtil->numActive >= sUnkUtil->max)
return FALSE; return FALSE;
unkStruct = &gUnknown_02039D8C->unk_00[gUnknown_02039D8C->unk_04++]; data = &sUnkUtil->data[sUnkUtil->numActive++];
unkStruct->unk_08 = width * 2; data->size = width * 2;
unkStruct->unk_04 = dest + ((dTop * 32) + dLeft) * 2; data->dest = dest + (dTop * 32 + dLeft) * 2;
unkStruct->newField = height; data->height = height;
unkStruct->unk_0c = sub_80D2C1C; data->func = UnkUtil_DmaRun;
return TRUE; return TRUE;
} }
static void sub_80D2C1C(struct UnkStruct_2000028 *unkStruct) // Functionally unused
static void UnkUtil_DmaRun(struct UnkUtilData *data)
{ {
u16 i; u16 i;
for (i = 0; i < unkStruct->newField; i++) for (i = 0; i < data->height; i++)
{ {
Dma3FillLarge_(0, unkStruct->unk_04, unkStruct->unk_08, 16); Dma3FillLarge16_(0, data->dest, data->size);
unkStruct->unk_04 += 64; data->dest += 64;
} }
} }