start pokenav documentation

This commit is contained in:
Evan
2020-10-10 16:17:34 -06:00
parent 13f37cf974
commit 2b2be90a52
21 changed files with 2043 additions and 1968 deletions

View File

@@ -15,9 +15,9 @@
struct PokenavMainMenuResources
{
void (*unk0)(u32);
u32 (*unk4)(void);
u32 unk8;
void (*loopTask)(u32);
u32 (*isLoopTaskActiveFunc)(void);
u32 unused;
u32 currentTaskId;
u32 helpBarWindowId;
u32 palettes;
@@ -47,8 +47,8 @@ static void SpriteCB_MoveLeftHeader(struct Sprite *sprite);
static void InitPokenavMainMenuResources(void);
static void InitHoennMapHeaderSprites(void);
static void InitHelpBar(void);
static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0);
static u32 LoopedTask_ScrollMenuHeaderUp(s32 a0);
static u32 LoopedTask_SlideMenuHeaderUp(s32 a0);
static u32 LoopedTask_SlideMenuHeaderDown(s32 a0);
static void DrawHelpBar(u32 windowId);
static void SpriteCB_SpinningPokenav(struct Sprite* sprite);
static u32 LoopedTask_InitPokenavMenu(s32 a0);
@@ -294,7 +294,7 @@ bool32 InitPokenavMainMenu(void)
{
struct PokenavMainMenuResources *structPtr;
structPtr = AllocSubstruct(0, sizeof(struct PokenavMainMenuResources));
structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_MAIN_MENU, sizeof(struct PokenavMainMenuResources));
if (structPtr == NULL)
return FALSE;
@@ -306,14 +306,14 @@ bool32 InitPokenavMainMenu(void)
u32 PokenavMainMenuLoopedTaskIsActive(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
return IsLoopedTaskActive(structPtr->currentTaskId);
}
void ShutdownPokenav(void)
{
PlaySE(SE_POKENAV_OFF);
sub_81CAADC();
ResetBldCnt_();
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
}
@@ -345,7 +345,7 @@ static u32 LoopedTask_InitPokenavMenu(s32 a0)
ResetTempTileDataBuffers();
return LT_INC_AND_CONTINUE;
case 1:
structPtr = GetSubstructPtr(0);
structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
DecompressAndCopyTileDataToVram(0, &gPokenavHeader_Gfx, 0, 0, 0);
SetBgTilemapBuffer(0, structPtr->tilemapBuffer);
CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0);
@@ -371,46 +371,46 @@ static u32 LoopedTask_InitPokenavMenu(s32 a0)
}
}
void sub_81C7834(void *func1, void *func2) // Fix types later.
void SetActiveMenuLoopTasks(void *createLoopTask, void *isLoopTaskActive) // Fix types later.
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
structPtr->unk0 = func1;
structPtr->unk4 = func2;
structPtr->unk8 = 0;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
structPtr->loopTask = createLoopTask;
structPtr->isLoopTaskActiveFunc = isLoopTaskActive;
structPtr->unused = 0;
}
void sub_81C7850(u32 a0)
void RunMainMenuLoopedTask(u32 a0)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
structPtr->unk8 = 0;
structPtr->unk0(a0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
structPtr->unused = 0;
structPtr->loopTask(a0);
}
u32 sub_81C786C(void)
u32 IsActiveMenuLoopTaskActive(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
return structPtr->unk4();
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
return structPtr->isLoopTaskActiveFunc();
}
void sub_81C7880(void)
void SlideMenuHeaderUp(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
structPtr->currentTaskId = CreateLoopedTask(LoopedTask_ScrollMenuHeaderDown, 4);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
structPtr->currentTaskId = CreateLoopedTask(LoopedTask_SlideMenuHeaderUp, 4);
}
void sub_81C78A0(void)
void SlideMenuHeaderDown(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
structPtr->currentTaskId = CreateLoopedTask(LoopedTask_ScrollMenuHeaderUp, 4);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
structPtr->currentTaskId = CreateLoopedTask(LoopedTask_SlideMenuHeaderDown, 4);
}
bool32 MainMenuLoopedTaskIsBusy(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
return IsLoopedTaskActive(structPtr->currentTaskId);
}
static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0)
static u32 LoopedTask_SlideMenuHeaderUp(s32 a0)
{
switch (a0)
{
@@ -431,7 +431,7 @@ static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0)
}
}
static u32 LoopedTask_ScrollMenuHeaderUp(s32 a0)
static u32 LoopedTask_SlideMenuHeaderDown(s32 a0)
{
if (ChangeBgY(0, 384, 2) <= 0)
{
@@ -465,35 +465,35 @@ void Pokenav_AllocAndLoadPalettes(const struct SpritePalette *palettes)
}
}
void sub_81C7990(u32 a0, u16 a1)
void PokenavFillPalette(u32 palIndex, u16 fillValue)
{
CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16));
CpuFill16(fillValue, gPlttBufferFaded + 0x100 + (palIndex * 16), 16 * sizeof(u16));
}
void sub_81C79BC(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *palette)
void PokenavCopyPalette(const u16 *src, const u16 *dest, int size, int a3, int a4, u16 *palette)
{
if (a4 == 0)
{
CpuCopy16(a0, palette, a2 * 2);
CpuCopy16(src, palette, size * 2);
}
else if (a4 >= a3)
{
CpuCopy16(a1, palette, a2 * 2);
CpuCopy16(dest, palette, size * 2);
}
else
{
int r, g, b;
int r1, g1, b1;
while (a2--)
while (size--)
{
r = GET_R(*a0);
g = GET_G(*a0);
b = GET_B(*a0);
r = GET_R(*src);
g = GET_G(*src);
b = GET_B(*src);
r1 = ((((GET_R(*a1) << 8) - (r << 8)) / a3) * a4) >> 8;
g1 = ((((GET_G(*a1) << 8) - (g << 8)) / a3) * a4) >> 8;
b1 = ((((GET_B(*a1) << 8) - (b << 8)) / a3) * a4) >> 8;
r1 = ((((GET_R(*dest) << 8) - (r << 8)) / a3) * a4) >> 8;
g1 = ((((GET_G(*dest) << 8) - (g << 8)) / a3) * a4) >> 8;
b1 = ((((GET_B(*dest) << 8) - (b << 8)) / a3) * a4) >> 8;
r = (r + r1) & 0x1F; //_RGB(r + r1, g + g1, b + b1); doesn't match; I have to assign the value of ((r + r1) & 0x1F) to r1
g = (g + g1) & 0x1F; //See above
@@ -501,7 +501,7 @@ void sub_81C79BC(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *pale
*palette = RGB2(r, g, b); //See above comment
a0++, a1++;
src++, dest++;
palette++;
}
}
@@ -509,7 +509,7 @@ void sub_81C79BC(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *pale
void PokenavFadeScreen(s32 fadeType)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
switch (fadeType)
{
@@ -548,7 +548,7 @@ void InitBgTemplates(const struct BgTemplate *templates, int count)
static void InitHelpBar(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
InitWindows(&sHelpBarWindowTemplate[0]);
structPtr->helpBarWindowId = 0;
@@ -559,7 +559,7 @@ static void InitHelpBar(void)
void PrintHelpBarText(u32 textId)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
DrawHelpBar(structPtr->helpBarWindowId);
AddTextPrinterParameterized3(structPtr->helpBarWindowId, 1, 0, 1, sHelpBarTextColors, 0, sHelpBarTexts[textId]);
@@ -580,7 +580,7 @@ static void InitPokenavMainMenuResources(void)
{
s32 i;
u8 spriteId;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
for (i = 0; i < ARRAY_COUNT(gSpinningPokenavSpriteSheet); i++)
LoadCompressedSpriteSheet(&gSpinningPokenavSpriteSheet[i]);
@@ -593,7 +593,7 @@ static void InitPokenavMainMenuResources(void)
static void CleanupPokenavMainMenuResources(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
DestroySprite(structPtr->spinningPokenav);
FreeSpriteTilesByTag(0);
@@ -608,7 +608,7 @@ static void SpriteCB_SpinningPokenav(struct Sprite *sprite)
struct Sprite *PauseSpinningPokenavSprite(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
structPtr->spinningPokenav->callback = SpriteCallbackDummy;
return structPtr->spinningPokenav;
@@ -616,7 +616,7 @@ struct Sprite *PauseSpinningPokenavSprite(void)
void ResumeSpinningPokenavSprite(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
structPtr->spinningPokenav->pos1.x = 220;
structPtr->spinningPokenav->pos1.y = 12;
@@ -629,7 +629,7 @@ void ResumeSpinningPokenavSprite(void)
static void InitHoennMapHeaderSprites(void)
{
s32 i, spriteId;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
LoadCompressedSpriteSheet(&sPokenavHoennMapLeftHeaderSpriteSheet);
AllocSpritePalette(1);
@@ -658,9 +658,9 @@ void LoadLeftHeaderGfxForIndex(u32 menuGfxId)
LoadLeftHeaderGfxForSubMenu(menuGfxId - POKENAV_GFX_SUBMENUS_START);
}
void sub_81C7E14(u32 menuGfxId)
void UpdateRegionMapRightHeaderTiles(u32 menuGfxId)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_OUT)
structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 32;
@@ -676,7 +676,7 @@ static void LoadLeftHeaderGfxForMenu(u32 menuGfxId)
if (menuGfxId >= POKENAV_GFX_SUBMENUS_START)
return;
structPtr = GetSubstructPtr(0);
structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
tag = sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].tag;
size = GetDecompressedDataSize(sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].data);
LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20);
@@ -704,33 +704,33 @@ static void LoadLeftHeaderGfxForSubMenu(u32 menuGfxId)
RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)VRAM + 0x10800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
}
void sub_81C7FA0(u32 menuGfxId, bool32 arg1, bool32 arg2)
void ShowLeftHeaderGfx(u32 menuGfxId, bool32 isMain, bool32 isOnRightSide)
{
u32 var;
u32 tileTop;
if (!arg1)
var = 0x30;
if (!isMain)
tileTop = 0x30;
else
var = 0x10;
tileTop = 0x10;
if (menuGfxId < POKENAV_GFX_SUBMENUS_START)
ShowLeftHeaderSprites(var, arg2);
ShowLeftHeaderSprites(tileTop, isOnRightSide);
else
ShowLeftHeaderSubmenuSprites(var, arg2);
ShowLeftHeaderSubmenuSprites(tileTop, isOnRightSide);
}
void sub_81C7FC4(u32 arg0, bool32 arg1)
void HideMainOrSubMenuLeftHeader(u32 id, bool32 onRightSide)
{
if (arg0 < 6)
HideLeftHeaderSprites(arg1);
if (id < POKENAV_GFX_PARTY_MENU)
HideLeftHeaderSprites(onRightSide);
else
HideLeftHeaderSubmenuSprites(arg1);
HideLeftHeaderSubmenuSprites(onRightSide);
}
void sub_81C7FDC(void)
void SetLeftHeaderSpritesInvisibility(void)
{
s32 i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
{
@@ -739,9 +739,9 @@ void sub_81C7FDC(void)
}
}
bool32 sub_81C8010(void)
bool32 AreLeftHeaderSpritesMoving(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (structPtr->leftHeaderSprites[0]->callback == SpriteCallbackDummy && structPtr->submenuLeftHeaderSprites[0]->callback == SpriteCallbackDummy)
return FALSE;
@@ -752,7 +752,7 @@ bool32 sub_81C8010(void)
static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
{
s32 start, end, i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (!isOnRightSide)
start = -96, end = 32;
@@ -769,7 +769,7 @@ static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
{
s32 start, end, i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (!isOnRightSide)
start = -96, end = 16;
@@ -786,7 +786,7 @@ static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
static void HideLeftHeaderSprites(bool32 isOnRightSide)
{
s32 start, end, i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (!isOnRightSide)
start = 32, end = -96;
@@ -802,7 +802,7 @@ static void HideLeftHeaderSprites(bool32 isOnRightSide)
static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
{
s32 start, end, i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (!isOnRightSide)
start = 16, end = -96;