Document Pokedex Forms Subscreen (#815)

This commit is contained in:
h2o-DS 2025-11-01 16:13:02 -04:00 committed by GitHub
parent 9f9ecd01b5
commit d12c696ff0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
36 changed files with 831 additions and 874 deletions

View File

@ -0,0 +1,12 @@
#ifndef POKEPLATINUM_POKEDEX_FORMSUB_H
#define POKEPLATINUM_POKEDEX_FORMSUB_H
#include "applications/pokedex/pokedex_app.h"
#include "applications/pokedex/struct_ov21_021E68F4.h"
#include "heap.h"
void FormSub_Init(PokedexScreenManager *screenMan, PokedexApp *pokedexApp, enum HeapID heapID);
void FormSub_Free(PokedexScreenManager *screenMan);
#endif // POKEPLATINUM_POKEDEX_FORMSUB_H

View File

@ -1,12 +0,0 @@
#ifndef POKEPLATINUM_OV21_021E8484_H
#define POKEPLATINUM_OV21_021E8484_H
#include "applications/pokedex/pokedex_app.h"
#include "applications/pokedex/struct_ov21_021E68F4.h"
#include "heap.h"
void ov21_021E8484(PokedexScreenManager *param0, PokedexApp *param1, enum HeapID heapID);
void ov21_021E84E4(PokedexScreenManager *param0);
#endif // POKEPLATINUM_OV21_021E8484_H

View File

@ -71,7 +71,7 @@ PokedexGraphicData *PokedexMain_GetGraphicData(PokedexApp *pokedexApp);
PokedexScreenManager *ov21_021D1410(PokedexApp *pokedexApp, int param1);
PokedexScreenManager *ov21_021D1430(PokedexApp *pokedexApp, int param1);
void ov21_021D144C(Sprite *param0, int param1);
void ov21_021D1498(Sprite *param0, PokedexTextData *textData, int param2);
void PokedexMain_SetButtonY(Sprite *param0, PokedexTextData *textData, int setY);
void ov21_021D1524(Sprite *param0, PokedexTextData *textData, int param2, int param3, int param4);
void PokedexMain_SetHitTableRect(TouchScreenHitTable *hitTable, int top, int bottom, int left, int right);
void PokedexMain_SetLoadingScreenParams(PokedexLoadingScreen *pokedexLoadingScreen, BgConfig *bgConfig, int layer, NNSG2dScreenData *screenData, int topStart, int topEnd, int bottomStart, int bottomEnd, int duration);

View File

@ -4,7 +4,7 @@
#include "applications/pokedex/pokedex_updater.h"
#include "applications/pokedex/struct_ov21_021D4660.h"
typedef struct {
typedef struct PokedexScreenManager {
void *pageData;
void *pageGraphics;
PokedexDataFunction dataFunc[3];

View File

@ -16,9 +16,9 @@ void sub_020127BC(UnkStruct_02012744 *param0);
FontOAM *sub_020127E8(const UnkStruct_020127E8 *param0);
void sub_02012870(FontOAM *param0);
int sub_02012898(const Window *param0, int param1, int heapID);
void sub_020128C4(FontOAM *param0, int param1, int param2);
void FontOAM_SetXY(FontOAM *fontOAM, int x, int y);
void sub_02012938(FontOAM *param0);
void sub_020129A4(const FontOAM *param0, int *param1, int *param2);
void FontOAM_GetXY(const FontOAM *fontOAM, int *x, int *y);
void sub_020129D0(FontOAM *param0, BOOL param1);
void sub_02012A00(FontOAM *param0, u8 param1);
void sub_02012A30(FontOAM *param0, u32 param1);

View File

@ -810,7 +810,7 @@ Overlay pokedex
Object main.nef.p/src_applications_pokedex_pokedex_height_check.c.o
Object main.nef.p/src_applications_pokedex_ov21_021E68F4.c.o
Object main.nef.p/src_applications_pokedex_ov21_021E737C.c.o
Object main.nef.p/src_applications_pokedex_ov21_021E8484.c.o
Object main.nef.p/src_applications_pokedex_formsub.c.o
Object main.nef.p/src_applications_pokedex_ov21_021E8D48.c.o
}

View File

@ -0,0 +1,659 @@
#include "applications/pokedex/formsub.h"
#include <nitro.h>
#include <string.h>
#include "applications/pokedex/ov21_021DF734.h"
#include "applications/pokedex/ov21_021E29DC.h"
#include "applications/pokedex/pokedex_app.h"
#include "applications/pokedex/pokedex_data_manager.h"
#include "applications/pokedex/pokedex_graphics.h"
#include "applications/pokedex/pokedex_graphics_manager.h"
#include "applications/pokedex/pokedex_main.h"
#include "applications/pokedex/pokedex_sort.h"
#include "applications/pokedex/pokedex_sort_data.h"
#include "applications/pokedex/pokedex_text_manager.h"
#include "applications/pokedex/struct_ov21_021D4660.h"
#include "applications/pokedex/struct_ov21_021E68F4.h"
#include "bg_window.h"
#include "brightness_controller.h"
#include "heap.h"
#include "narc.h"
#include "pltt_transfer.h"
#include "sprite.h"
#include "sprite_resource.h"
#include "sprite_transfer.h"
#include "sprite_util.h"
#include "system.h"
#include "touch_screen.h"
#include "touch_screen_actions.h"
#include "unk_02012744.h"
#include "vram_transfer.h"
#include "res/graphics/pokedex/zukan.naix.h"
#include "res/text/bank/pokedex.h"
/*
* Pokedex Forms Page Sub Screen
*/
// constants used in this file
#define FORMSUB_GRAPHIC_ID 13000
// form button constants
#define BUTTON_X 128
#define BUTTON_Y 144
#define BUTTON_WIDTH 228
#define BUTTON_HEIGHT 64
#define BUTTON_HITBOX_WIDTH 240
#define BUTTON_HITBOX_HEIGHT 80
enum FormSubButtons {
FORMSUB_ANOTHER = 0,
MAX_FORMSUBBUTTONS,
};
typedef struct FormSubData {
int *unk_00;
PokedexSortData *sortData;
PokedexScreenManager *subScreen;
PokedexScreenManager *mainScreen;
} FormSubData;
typedef struct Context {
void *formSubData;
void *formSubPageData;
} Context;
typedef struct FormSubPageData {
TouchScreenActions *buttonTouchScreenActions;
TouchScreenHitTable *buttonHitTable;
Context context;
enum TouchScreenButtonState buttonState[MAX_FORMSUBBUTTONS];
BOOL buttonPressed;
} FormSubPageData;
typedef struct FormSubGraphics {
Sprite *buttonSprite;
PokedexTextData *buttonText;
SpriteResource *buttonSpriteResource[MAX_SPRITE_RESOURCE_GEN4];
Sprite *unused[4];
int backgroundState;
void *paletteFile;
} FormSubGraphics;
static FormSubData *LoadAppData(enum HeapID heapID, PokedexApp *pokedexApp);
static PokedexGraphicData **LoadAppGraphics(enum HeapID heapID, PokedexApp *pokedexApp);
static UnkStruct_ov21_021D4660 *ScreenStates(enum HeapID heapID, PokedexApp *pokedexApp);
static void FreeFormSubData(FormSubData *formSubData);
static void FreeGraphicData(PokedexGraphicData **graphicData);
static void FreeScreenStates(UnkStruct_ov21_021D4660 *param0);
static int NumStates(void);
static BOOL FormSubDataEnter(PokedexDataManager *dataMan, void *data);
static BOOL FormSubDataUpdate(PokedexDataManager *dataMan, void *data);
static BOOL FormSubDataExit(PokedexDataManager *dataMan, void *data);
static BOOL FormSubGraphicsEnter(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan);
static BOOL FormSubGraphicsUpdate(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan);
static BOOL FormSubGraphicsExit(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan);
static void SetSpriteOAMModesXLU(FormSubGraphics *formSubGraphics);
static void SetSpriteOAMModesNormal(FormSubGraphics *formSubGraphics);
static void InitBlendTransition(FormSubGraphics *formSubGraphics, PokedexGraphicData **param1, const FormSubData *formSubData, BOOL isEntering);
static BOOL AdvanceBlendTransition(FormSubGraphics *formSubGraphics, PokedexGraphicData **graphicData, const FormSubData *formSubData, BOOL isEntering);
static void SetTouchScreen(FormSubPageData *formSubPageData, FormSubData *formSubData, enum HeapID heapID);
static void SetButtonOutOfBounds(FormSubPageData *formSubPageData);
static void RunButtonAction(FormSubPageData *formSubPageData, FormSubData *formSubData);
static void FreeTouchScreen(FormSubPageData *formSubPageData);
static void ButtonTouchActions(u32 button, enum TouchScreenButtonState touchScreenButtonState, void *data);
static void UpdateButtonText(Sprite *sprite, PokedexTextData *textData, int y, int textPaletteOffsetUnpressed, int textPaletteOffsetPressed);
static void UpdateButtonDisplay(PokedexGraphicData **graphicData, FormSubGraphics *formSubGraphics, const FormSubPageData *formSubPageData, enum HeapID heapID);
static void AdvanceMainScreen(const FormSubData *formSubData);
static void CheckButtonKeyHeld(FormSubPageData *formSubPageData, FormSubData *formSubData);
static void CursorToButton(PokedexGraphicData **graphicdata, const FormSubData *formSubData);
static void TransformCursor(PokedexGraphicData **graphicdata, int x, int y, int width, int height);
static void LoadFormSubGraphics(FormSubGraphics *formSubGraphics, PokedexGraphicData **graphicData, enum HeapID heapID);
static void FreeGraphics(FormSubGraphics *formSubGraphics, PokedexGraphicData **graphicData, enum HeapID heapID);
static void LoadBackgroundTilemaps(PokedexGraphicData **graphicData, enum HeapID heapID);
static void LoadButtonSprite(FormSubGraphics *formSubGraphics, PokedexGraphicData **pokedexGraphicData, enum HeapID heapID);
static void FreeButtonSpriteResource(FormSubGraphics *formSubGraphics, PokedexGraphicData **pokedexGraphicData);
static void AnimateSprites(FormSubGraphics *formSubGraphics, PokedexGraphicData **pokedexGraphicData, enum HeapID heapID);
static void FreeButtonSprite(FormSubGraphics *formSubGraphics);
static void LoadButtonText(FormSubGraphics *formSubGraphics, PokedexGraphicData **pokedexGraphicData, enum HeapID heapID);
static void FreeTextData(FormSubGraphics *formSubGraphics, PokedexGraphicData **graphicData);
static void UpdateButtonGraphics(PokedexGraphicData **graphicData, Sprite *sprite, PokedexTextData *textData, int buttonState, int y, int destAddr, int *backgroundState, enum HeapID heapID, int textPaletteOffsetUnpressed, int textPaletteOffsetPressed, void **paletteFile);
void FormSub_Init(PokedexScreenManager *screenMan, PokedexApp *pokedexApp, enum HeapID heapID)
{
FormSubData *formSubData = LoadAppData(heapID, pokedexApp);
PokedexGraphicData **pokedexGraphicData = LoadAppGraphics(heapID, pokedexApp);
UnkStruct_ov21_021D4660 *screenStates = ScreenStates(heapID, pokedexApp);
screenMan->pageData = formSubData;
screenMan->pageGraphics = pokedexGraphicData;
screenMan->screenStates = screenStates;
screenMan->numStates = NumStates();
screenMan->dataFunc[0] = FormSubDataEnter;
screenMan->dataFunc[1] = FormSubDataUpdate;
screenMan->dataFunc[2] = FormSubDataExit;
screenMan->graphicsFunc[0] = FormSubGraphicsEnter;
screenMan->graphicsFunc[1] = FormSubGraphicsUpdate;
screenMan->graphicsFunc[2] = FormSubGraphicsExit;
}
void FormSub_Free(PokedexScreenManager *screenMan)
{
FreeFormSubData(screenMan->pageData);
FreeGraphicData(screenMan->pageGraphics);
FreeScreenStates(screenMan->screenStates);
}
static FormSubData *LoadAppData(enum HeapID heapID, PokedexApp *pokedexApp)
{
FormSubData *formSubData = Heap_Alloc(heapID, sizeof(FormSubData));
GF_ASSERT(formSubData);
memset(formSubData, 0, sizeof(FormSubData));
formSubData->unk_00 = ov21_021D13A0(pokedexApp);
formSubData->subScreen = ov21_021D1430(pokedexApp, 3);
formSubData->mainScreen = ov21_021D1410(pokedexApp, 3);
formSubData->sortData = PokedexMain_GetSortData(pokedexApp);
return formSubData;
}
static PokedexGraphicData **LoadAppGraphics(enum HeapID heapID, PokedexApp *pokedexApp)
{
PokedexGraphicData **graphicData = Heap_Alloc(heapID, sizeof(PokedexGraphicData *));
GF_ASSERT(graphicData);
memset(graphicData, 0, sizeof(PokedexGraphicData *));
*graphicData = PokedexMain_GetGraphicData(pokedexApp);
return graphicData;
}
static UnkStruct_ov21_021D4660 *ScreenStates(enum HeapID heapID, PokedexApp *param1)
{
return NULL;
}
static void FreeFormSubData(FormSubData *formSubData)
{
GF_ASSERT(formSubData);
Heap_Free(formSubData);
}
static void FreeGraphicData(PokedexGraphicData **graphicData)
{
GF_ASSERT(graphicData);
Heap_Free(graphicData);
}
static void FreeScreenStates(UnkStruct_ov21_021D4660 *param0)
{
return;
}
static int NumStates(void)
{
return 0;
}
static BOOL FormSubDataEnter(PokedexDataManager *dataMan, void *data)
{
FormSubData *formSubData = data;
FormSubPageData *formSubPageData = Heap_Alloc(dataMan->heapID, sizeof(FormSubPageData));
memset(formSubPageData, 0, sizeof(FormSubPageData));
formSubPageData->buttonState[FORMSUB_ANOTHER] = TOUCH_BUTTON_HELD_OUT_OF_BOUNDS + 1;
SetTouchScreen(formSubPageData, formSubData, dataMan->heapID);
RunButtonAction(formSubPageData, formSubData);
dataMan->pageData = formSubPageData;
return TRUE;
}
static BOOL FormSubDataUpdate(PokedexDataManager *dataMan, void *data)
{
FormSubData *formSubData = data;
FormSubPageData *formSubPageData = dataMan->pageData;
if (dataMan->exit == TRUE) {
return TRUE;
}
if (dataMan->unchanged == TRUE) {
return FALSE;
}
if (ov21_021E33AC(formSubData->subScreen)) {
SetButtonOutOfBounds(formSubPageData);
if (ov21_021E33BC(formSubData->subScreen) && (ov21_021D3998(formSubData->sortData) == 2)) {
CheckButtonKeyHeld(formSubPageData, formSubData);
}
RunButtonAction(formSubPageData, formSubData);
if (formSubPageData->buttonPressed) {
AdvanceMainScreen(formSubData);
formSubPageData->buttonPressed = FALSE;
}
}
return FALSE;
}
static BOOL FormSubDataExit(PokedexDataManager *dataMan, void *data)
{
FormSubPageData *formSubPageData = dataMan->pageData;
FreeTouchScreen(formSubPageData);
Heap_Free(formSubPageData);
return TRUE;
}
static BOOL FormSubGraphicsEnter(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan)
{
const FormSubData *formSubData = data;
PokedexGraphicData **graphicData = graphics;
FormSubGraphics *formSubGraphics = graphicsMan->pageGraphics;
switch (graphicsMan->state) {
case 0:
graphicsMan->pageGraphics = Heap_Alloc(graphicsMan->heapID, sizeof(FormSubGraphics));
memset(graphicsMan->pageGraphics, 0, sizeof(FormSubGraphics));
graphicsMan->state++;
break;
case 1:
LoadFormSubGraphics(formSubGraphics, graphicData, graphicsMan->heapID);
InitBlendTransition(formSubGraphics, graphicData, formSubData, TRUE);
graphicsMan->state++;
break;
case 2:
if (AdvanceBlendTransition(formSubGraphics, graphicData, formSubData, TRUE)) {
graphicsMan->state++;
}
break;
case 3:
PokedexGraphics_SetStaticCursorSize(&(*graphicData)->cursorGraphics, FALSE);
return TRUE;
default:
break;
}
return FALSE;
}
static BOOL FormSubGraphicsUpdate(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan)
{
const FormSubData *formSubData = data;
const FormSubPageData *formSubPageData = dataMan->pageData;
PokedexGraphicData **graphicData = graphics;
FormSubGraphics *formSubGraphics = graphicsMan->pageGraphics;
if (ov21_021E33AC(formSubData->subScreen)) {
UpdateButtonDisplay(graphicData, formSubGraphics, formSubPageData, graphicsMan->heapID);
CursorToButton(graphicData, formSubData);
}
return FALSE;
}
static BOOL FormSubGraphicsExit(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan)
{
const FormSubData *formSubData = data;
PokedexGraphicData **graphicData = graphics;
FormSubGraphics *formSubGraphics = graphicsMan->pageGraphics;
switch (graphicsMan->state) {
case 0:
PokedexGraphics_SetStaticCursorSize(&(*graphicData)->cursorGraphics, TRUE);
InitBlendTransition(formSubGraphics, graphicData, formSubData, FALSE);
graphicsMan->state++;
break;
case 1:
if (AdvanceBlendTransition(formSubGraphics, graphicData, formSubData, FALSE)) {
graphicsMan->state++;
}
break;
case 2:
FreeGraphics(formSubGraphics, graphicData, graphicsMan->heapID);
graphicsMan->state++;
break;
case 3:
Heap_Free(graphicsMan->pageGraphics);
graphicsMan->state++;
break;
case 4:
return TRUE;
default:
break;
}
return FALSE;
}
static void SetSpriteOAMModesXLU(FormSubGraphics *formSubGraphics)
{
Sprite_SetExplicitOAMMode(formSubGraphics->buttonSprite, GX_OAM_MODE_XLU);
sub_02012AF0(formSubGraphics->buttonText->fontOAM, GX_OAM_MODE_XLU);
}
static void SetSpriteOAMModesNormal(FormSubGraphics *formSubGraphics)
{
Sprite_SetExplicitOAMMode(formSubGraphics->buttonSprite, GX_OAM_MODE_NORMAL);
sub_02012AF0(formSubGraphics->buttonText->fontOAM, GX_OAM_MODE_NORMAL);
}
static void InitBlendTransition(FormSubGraphics *formSubGraphics, PokedexGraphicData **param1, const FormSubData *formSubData, BOOL isEntering)
{
SetSpriteOAMModesXLU(formSubGraphics);
if (ov21_021E33A4(formSubData->subScreen)) {
if (isEntering) {
PokedexGraphics_InitBlendTransition(&(*param1)->blendSub, 1, -16, 0, 0, 16, (GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BD), (GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BD), 1);
} else {
PokedexGraphics_InitBlendTransition(&(*param1)->blendSub, 1, 0, -16, 16, 0, (GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BD), (GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BD), 1);
}
}
}
static BOOL AdvanceBlendTransition(FormSubGraphics *formSubGraphics, PokedexGraphicData **graphicData, const FormSubData *formSubData, BOOL isEntering)
{
BOOL transitionComplete;
if (ov21_021E33A4(formSubData->subScreen)) {
transitionComplete = PokedexGraphics_TakeBlendTransitionStep(&(*graphicData)->blendSub);
} else {
transitionComplete = BrightnessController_IsTransitionComplete(BRIGHTNESS_SUB_SCREEN);
}
if (transitionComplete) {
if (isEntering) {
SetSpriteOAMModesNormal(formSubGraphics);
}
return TRUE;
}
return FALSE;
}
static void SetTouchScreen(FormSubPageData *formSubPageData, FormSubData *formSubData, enum HeapID heapID)
{
formSubPageData->buttonHitTable = Heap_Alloc(heapID, sizeof(TouchScreenHitTable));
PokedexMain_SetHitTableRect(formSubPageData->buttonHitTable, BUTTON_Y - (BUTTON_HITBOX_HEIGHT / 2), BUTTON_Y + (BUTTON_HITBOX_HEIGHT / 2), BUTTON_X - (BUTTON_HITBOX_WIDTH / 2), BUTTON_X + (BUTTON_HITBOX_WIDTH / 2));
formSubPageData->context.formSubData = formSubData;
formSubPageData->context.formSubPageData = formSubPageData;
formSubPageData->buttonTouchScreenActions = TouchScreenActions_RegisterHandler(formSubPageData->buttonHitTable, 1, ButtonTouchActions, &formSubPageData->context, heapID);
}
static void SetButtonOutOfBounds(FormSubPageData *formSubPageData)
{
formSubPageData->buttonState[FORMSUB_ANOTHER] = TOUCH_BUTTON_HELD_OUT_OF_BOUNDS;
}
static void RunButtonAction(FormSubPageData *formSubPageData, FormSubData *formSubData)
{
TouchScreenActions_HandleAction(formSubPageData->buttonTouchScreenActions);
if (formSubPageData->buttonPressed) {
formSubPageData->buttonState[FORMSUB_ANOTHER] = TOUCH_BUTTON_HELD;
}
}
static void FreeTouchScreen(FormSubPageData *formSubPageData)
{
TouchScreenActions_Free(formSubPageData->buttonTouchScreenActions);
Heap_Free(formSubPageData->buttonHitTable);
formSubPageData->buttonHitTable = NULL;
}
static void ButtonTouchActions(u32 button, enum TouchScreenButtonState touchScreenButtonState, void *data)
{
Context *context = data;
FormSubData *formSubData = context->formSubData;
FormSubPageData *formSubPageData = context->formSubPageData;
formSubPageData->buttonState[button] = touchScreenButtonState;
switch (touchScreenButtonState) {
case TOUCH_BUTTON_PRESSED:
switch (button) {
case FORMSUB_ANOTHER:
ov21_021E33B4(formSubData->subScreen, TRUE);
formSubPageData->buttonPressed = TRUE;
break;
default:
break;
}
break;
case TOUCH_BUTTON_HELD:
switch (button) {
case FORMSUB_ANOTHER:
formSubPageData->buttonPressed = TRUE;
break;
default:
break;
}
break;
default:
break;
}
}
static void LoadFormSubGraphics(FormSubGraphics *formSubGraphics, PokedexGraphicData **graphicData, enum HeapID heapID)
{
LoadBackgroundTilemaps(graphicData, heapID);
LoadButtonSprite(formSubGraphics, graphicData, heapID);
AnimateSprites(formSubGraphics, graphicData, heapID);
LoadButtonText(formSubGraphics, graphicData, heapID);
}
static void FreeGraphics(FormSubGraphics *formSubGraphics, PokedexGraphicData **graphicData, enum HeapID heapID)
{
PokedexGraphics_LoadGraphicNarcPaletteData(*graphicData, background_sub_2_NCLR, PAL_LOAD_SUB_BG, 4 * 32, 32, heapID);
FreeButtonSprite(formSubGraphics);
FreeTextData(formSubGraphics, graphicData);
FreeButtonSpriteResource(formSubGraphics, graphicData);
if (formSubGraphics->paletteFile) {
Heap_Free(formSubGraphics->paletteFile);
}
}
static void LoadBackgroundTilemaps(PokedexGraphicData **graphicData, enum HeapID heapID)
{
NNSG2dScreenData *screenData;
PokedexGraphics_LoadGraphicNarcCharacterData(*graphicData, entry_sub_NCGR_lz, (*graphicData)->bgConfig, BG_LAYER_SUB_2, 0, 0, TRUE, heapID);
void *tilemap = PokedexGraphics_GetGraphicNarcTilemapData(*graphicData, forms_sub_NSCR_lz, TRUE, &screenData, heapID);
Bg_LoadToTilemapRect((*graphicData)->bgConfig, BG_LAYER_SUB_2, screenData->rawData, 0, 0, screenData->screenWidth / 8, screenData->screenHeight / 8);
Heap_Free(tilemap);
Bg_ScheduleTilemapTransfer((*graphicData)->bgConfig, BG_LAYER_SUB_2);
}
static void LoadButtonSprite(FormSubGraphics *formSubGraphics, PokedexGraphicData **pokedexGraphicData, enum HeapID heapID)
{
PokedexGraphicData *graphicData = *pokedexGraphicData;
NARC *narc = PokedexGraphics_GetNARC(graphicData);
formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTilesFrom(graphicData->spriteResourceCollection[SPRITE_RESOURCE_CHAR], narc, size_buttons_pressed_NCGR_lz, TRUE, size_buttons_pressed_NCGR_lz + FORMSUB_GRAPHIC_ID, NNS_G2D_VRAM_TYPE_2DSUB, heapID);
SpriteTransfer_RequestCharAtEnd(formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_CHAR]);
SpriteResource_ReleaseData(formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_CHAR]);
formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_CELL] = SpriteResourceCollection_AddFrom(graphicData->spriteResourceCollection[SPRITE_RESOURCE_CELL], narc, size_buttons_pressed_cell_NCER_lz, TRUE, size_buttons_pressed_cell_NCER_lz + FORMSUB_GRAPHIC_ID, SPRITE_RESOURCE_CELL, heapID);
formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_AddFrom(graphicData->spriteResourceCollection[SPRITE_RESOURCE_ANIM], narc, size_buttons_pressed_anim_NANR_lz, TRUE, size_buttons_pressed_anim_NANR_lz + FORMSUB_GRAPHIC_ID, SPRITE_RESOURCE_ANIM, heapID);
}
static void FreeButtonSpriteResource(FormSubGraphics *formSubGraphics, PokedexGraphicData **pokedexGraphicData)
{
PokedexGraphicData *graphicData = *pokedexGraphicData;
SpriteTransfer_ResetCharTransfer(formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_CHAR]);
SpriteResourceCollection_Remove(graphicData->spriteResourceCollection[SPRITE_RESOURCE_CHAR], formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_CHAR]);
SpriteResourceCollection_Remove(graphicData->spriteResourceCollection[SPRITE_RESOURCE_CELL], formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_CELL]);
SpriteResourceCollection_Remove(graphicData->spriteResourceCollection[SPRITE_RESOURCE_ANIM], formSubGraphics->buttonSpriteResource[SPRITE_RESOURCE_ANIM]);
}
static void AnimateSprites(FormSubGraphics *formSubGraphics, PokedexGraphicData **pokedexGraphicData, enum HeapID heapID)
{
SpriteResourcesHeader spriteResourcesHeader;
SpriteListTemplate spriteListTemplate;
PokedexGraphicData *graphicData = *pokedexGraphicData;
SpriteResourcesHeader_Init(&spriteResourcesHeader, size_buttons_pressed_NCGR_lz + FORMSUB_GRAPHIC_ID, info_NCLR + 2100, size_buttons_pressed_cell_NCER_lz + FORMSUB_GRAPHIC_ID, size_buttons_pressed_anim_NANR_lz + FORMSUB_GRAPHIC_ID, 0xffffffff, 0xffffffff, FALSE, 2, graphicData->spriteResourceCollection[SPRITE_RESOURCE_CHAR], graphicData->spriteResourceCollection[SPRITE_RESOURCE_PLTT], graphicData->spriteResourceCollection[SPRITE_RESOURCE_CELL], graphicData->spriteResourceCollection[SPRITE_RESOURCE_ANIM], NULL, NULL);
spriteListTemplate.list = graphicData->spriteList;
spriteListTemplate.resourceData = &spriteResourcesHeader;
spriteListTemplate.priority = 31;
spriteListTemplate.vramType = NNS_G2D_VRAM_TYPE_2DSUB;
spriteListTemplate.heapID = heapID;
spriteListTemplate.position.x = BUTTON_X << FX32_SHIFT;
spriteListTemplate.position.y = BUTTON_Y << FX32_SHIFT;
spriteListTemplate.position.y += (HW_LCD_HEIGHT << FX32_SHIFT);
formSubGraphics->buttonSprite = SpriteList_Add(&spriteListTemplate);
Sprite_SetAnim(formSubGraphics->buttonSprite, 2);
}
static void FreeButtonSprite(FormSubGraphics *formSubGraphics)
{
Sprite_Delete(formSubGraphics->buttonSprite);
}
static void LoadButtonText(FormSubGraphics *formSubGraphics, PokedexGraphicData **pokedexGraphicData, enum HeapID heapID)
{
PokedexGraphicData *graphicData = *pokedexGraphicData;
GF_ASSERT(formSubGraphics->buttonSprite);
SpriteResource *spriteResource = SpriteResourceCollection_Find(graphicData->spriteResourceCollection[SPRITE_RESOURCE_PLTT], info_NCLR + 2100);
PokedexDisplayBox displayBox;
displayBox.textMan = graphicData->textMan;
displayBox.paletteProxy = SpriteTransfer_GetPaletteProxy(spriteResource, NULL);
displayBox.y = -8;
displayBox.spriteResourcePriority = 2;
displayBox.spriteListPriority = 0;
displayBox.vramType = NNS_G2D_VRAM_TYPE_2DSUB;
displayBox.heapID = heapID;
int plttOffset = PlttTransfer_GetPlttOffset(displayBox.paletteProxy, NNS_G2D_VRAM_TYPE_2DSUB);
Window *window = PokedexTextManager_NewWindow(graphicData->textMan, 16, 2);
u32 strWidth = PokedexTextManager_DisplayMessage(graphicData->textMan, window, TEXT_BANK_POKEDEX, pl_msg_pokedex_anotherform, 0, 0);
displayBox.x = -(strWidth / 2);
displayBox.window = window;
displayBox.sprite = formSubGraphics->buttonSprite;
formSubGraphics->buttonText = PokedexTextManager_NextTextData(&displayBox);
sub_02012A60(formSubGraphics->buttonText->fontOAM, plttOffset + 4);
PokedexTextManager_FreeWindow(window);
}
static void FreeTextData(FormSubGraphics *formSubGraphics, PokedexGraphicData **graphicData)
{
PokedexTextManager_FreeTextData(formSubGraphics->buttonText);
}
static void UpdateButtonGraphics(PokedexGraphicData **graphicData, Sprite *sprite, PokedexTextData *textData, int buttonState, int y, int destAddr, int *backgroundState, enum HeapID heapID, int textPaletteOffsetUnpressed, int textPaletteOffsetPressed, void **paletteFile)
{
NNSG2dPaletteData *paletteData;
BOOL validFrame = FALSE;
int memberIndex;
ov21_021D144C(sprite, buttonState);
UpdateButtonText(sprite, textData, y, textPaletteOffsetUnpressed, textPaletteOffsetPressed);
switch (Sprite_GetAnimFrame(sprite)) {
case 0:
case 1:
if (*backgroundState != 0) {
validFrame = TRUE;
memberIndex = background_sub_2_NCLR;
*backgroundState = 0;
}
break;
case 2:
if (*backgroundState != 1) {
validFrame = TRUE;
memberIndex = background_sub_3_NCLR;
*backgroundState = 1;
}
break;
case 3:
if (*backgroundState != 2) {
validFrame = TRUE;
memberIndex = background_sub_1_NCLR;
*backgroundState = 2;
}
break;
}
if (validFrame) {
if (*paletteFile) {
Heap_Free(*paletteFile);
}
*paletteFile = PokedexGraphics_GetGraphicNarcPaletteData(*graphicData, memberIndex, &paletteData, heapID);
GF_ASSERT(VramTransfer_Request(NNS_GFD_DST_2D_BG_PLTT_SUB, destAddr * 32, paletteData->pRawData, 32));
}
}
static void UpdateButtonText(Sprite *sprite, PokedexTextData *textData, int y, int textPaletteOffsetUnpressed, int textPaletteOffsetPressed)
{
PokedexMain_SetButtonY(sprite, textData, y);
if ((int)Sprite_GetAnimFrame(sprite) < 2) {
sub_02012AC0(textData->fontOAM, textPaletteOffsetUnpressed);
} else {
sub_02012AC0(textData->fontOAM, textPaletteOffsetPressed);
}
}
static void UpdateButtonDisplay(PokedexGraphicData **graphicData, FormSubGraphics *formSubGraphics, const FormSubPageData *formSubPageData, enum HeapID heapID)
{
UpdateButtonGraphics(graphicData, formSubGraphics->buttonSprite, formSubGraphics->buttonText, formSubPageData->buttonState[FORMSUB_ANOTHER], -8, 4, &formSubGraphics->backgroundState, heapID, 4, 1, &formSubGraphics->paletteFile);
}
static void CheckButtonKeyHeld(FormSubPageData *formSubPageData, FormSubData *formSubData)
{
if (gSystem.heldKeys & PAD_BUTTON_A) {
formSubPageData->buttonPressed = TRUE;
}
}
static void CursorToButton(PokedexGraphicData **graphicdata, const FormSubData *formSubData)
{
if (ov21_021E33BC(formSubData->subScreen) == 1) {
TransformCursor(graphicdata, BUTTON_X, BUTTON_Y, BUTTON_WIDTH, BUTTON_HEIGHT);
}
}
static void TransformCursor(PokedexGraphicData **graphicdata, int x, int y, int width, int height)
{
PokedexGraphics_TransformCursor(*graphicdata, x, y, width, height);
}
static void AdvanceMainScreen(const FormSubData *formSubData)
{
ov21_021DF7A0(formSubData->mainScreen, 1);
}

View File

@ -1163,7 +1163,7 @@ static void ov21_021D6C44(UnkStruct_ov21_021D71A8 *param0, PokedexGraphicData *p
for (v0 = 0; v0 < 9; v0++) {
if (param0->unk_28[v4]) {
ov21_021D6CA4(param0->unk_00[v4], &v1, &v2);
sub_020128C4(param0->unk_28[v4]->fontOAM, v1, v2);
FontOAM_SetXY(param0->unk_28[v4]->fontOAM, v1, v2);
v5 = Sprite_GetPriority(param0->unk_00[v4]);
v5--;

View File

@ -1,699 +0,0 @@
#include "applications/pokedex/ov21_021E8484.h"
#include <nitro.h>
#include <string.h>
#include "applications/pokedex/ov21_021DF734.h"
#include "applications/pokedex/ov21_021E29DC.h"
#include "applications/pokedex/pokedex_app.h"
#include "applications/pokedex/pokedex_data_manager.h"
#include "applications/pokedex/pokedex_graphics.h"
#include "applications/pokedex/pokedex_graphics_manager.h"
#include "applications/pokedex/pokedex_main.h"
#include "applications/pokedex/pokedex_sort.h"
#include "applications/pokedex/pokedex_sort_data.h"
#include "applications/pokedex/pokedex_text_manager.h"
#include "applications/pokedex/struct_ov21_021D4660.h"
#include "applications/pokedex/struct_ov21_021E68F4.h"
#include "bg_window.h"
#include "brightness_controller.h"
#include "heap.h"
#include "narc.h"
#include "pltt_transfer.h"
#include "sprite.h"
#include "sprite_resource.h"
#include "sprite_transfer.h"
#include "sprite_util.h"
#include "system.h"
#include "touch_screen.h"
#include "touch_screen_actions.h"
#include "unk_02012744.h"
#include "vram_transfer.h"
#include "res/graphics/pokedex/zukan.naix.h"
#include "res/text/bank/pokedex.h"
typedef struct {
int *unk_00;
PokedexSortData *unk_04;
PokedexScreenManager *unk_08;
PokedexScreenManager *unk_0C;
} UnkStruct_ov21_021E8570;
typedef struct {
void *unk_00;
void *unk_04;
} UnkStruct_ov21_021E88E8;
typedef struct {
TouchScreenActions *unk_00;
TouchScreenHitTable *unk_04;
UnkStruct_ov21_021E88E8 unk_08;
int unk_10[1];
BOOL unk_14;
} UnkStruct_ov21_021E88B0;
typedef struct {
Sprite *unk_00[1];
PokedexTextData *unk_04[1];
SpriteResource *unk_08[4];
Sprite *unk_18[4];
int unk_28[1];
void *unk_2C[1];
} UnkStruct_ov21_021E8794;
static UnkStruct_ov21_021E8570 *ov21_021E84FC(enum HeapID heapID, PokedexApp *param1);
static PokedexGraphicData **ov21_021E8544(enum HeapID heapID, PokedexApp *param1);
static UnkStruct_ov21_021D4660 *ov21_021E856C(enum HeapID heapID, PokedexApp *param1);
static void ov21_021E8570(UnkStruct_ov21_021E8570 *param0);
static void ov21_021E8584(PokedexGraphicData **param0);
static void ov21_021E8598(UnkStruct_ov21_021D4660 *param0);
static int ov21_021E859C(void);
static int ov21_021E85A0(PokedexDataManager *dataMan, void *data);
static int ov21_021E85DC(PokedexDataManager *dataMan, void *data);
static int ov21_021E8640(PokedexDataManager *dataMan, void *data);
static int ov21_021E8654(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan);
static int ov21_021E86DC(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan);
static int ov21_021E870C(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan);
static void ov21_021E8794(UnkStruct_ov21_021E8794 *param0);
static void ov21_021E87AC(UnkStruct_ov21_021E8794 *param0);
static void ov21_021E87C4(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, const UnkStruct_ov21_021E8570 *param2, BOOL param3);
static BOOL ov21_021E8830(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, const UnkStruct_ov21_021E8570 *param2, BOOL param3);
static void ov21_021E886C(UnkStruct_ov21_021E88B0 *param0, UnkStruct_ov21_021E8570 *param1, enum HeapID heapID);
static void ov21_021E88B0(UnkStruct_ov21_021E88B0 *param0);
static void ov21_021E88B8(UnkStruct_ov21_021E88B0 *param0, UnkStruct_ov21_021E8570 *param1);
static void ov21_021E88D0(UnkStruct_ov21_021E88B0 *param0);
static void ov21_021E88E8(u32 param0, enum TouchScreenButtonState param1, void *param2);
static void ov21_021E8C94(Sprite *param0, PokedexTextData *textData, int param2, int param3, int param4);
static void ov21_021E8CBC(PokedexGraphicData **param0, UnkStruct_ov21_021E8794 *param1, const UnkStruct_ov21_021E88B0 *param2, int param3);
static void ov21_021E8D3C(const UnkStruct_ov21_021E8570 *param0);
static void ov21_021E8CF0(UnkStruct_ov21_021E88B0 *param0, UnkStruct_ov21_021E8570 *param1);
static void ov21_021E8D04(PokedexGraphicData **param0, const UnkStruct_ov21_021E8570 *param1);
static void ov21_021E8D28(PokedexGraphicData **param0, int param1, int param2, int param3, int param4);
static void ov21_021E891C(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int heapID);
static void ov21_021E894C(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int heapID);
static void ov21_021E898C(PokedexGraphicData **param0, int heapID);
static void ov21_021E89F4(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int param2);
static void ov21_021E8A74(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1);
static void ov21_021E8AA8(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int param2);
static void ov21_021E8B34(UnkStruct_ov21_021E8794 *param0);
static void ov21_021E8B40(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int param2);
static void ov21_021E8BDC(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1);
void ov21_021E8484(PokedexScreenManager *param0, PokedexApp *param1, enum HeapID heapID)
{
UnkStruct_ov21_021E8570 *v0;
PokedexGraphicData **v1;
UnkStruct_ov21_021D4660 *v2;
v0 = ov21_021E84FC(heapID, param1);
v1 = ov21_021E8544(heapID, param1);
v2 = ov21_021E856C(heapID, param1);
param0->pageData = v0;
param0->pageGraphics = v1;
param0->screenStates = v2;
param0->numStates = ov21_021E859C();
param0->dataFunc[0] = ov21_021E85A0;
param0->dataFunc[1] = ov21_021E85DC;
param0->dataFunc[2] = ov21_021E8640;
param0->graphicsFunc[0] = ov21_021E8654;
param0->graphicsFunc[1] = ov21_021E86DC;
param0->graphicsFunc[2] = ov21_021E870C;
}
void ov21_021E84E4(PokedexScreenManager *param0)
{
ov21_021E8570(param0->pageData);
ov21_021E8584(param0->pageGraphics);
ov21_021E8598(param0->screenStates);
}
static UnkStruct_ov21_021E8570 *ov21_021E84FC(enum HeapID heapID, PokedexApp *param1)
{
UnkStruct_ov21_021E8570 *v0 = Heap_Alloc(heapID, sizeof(UnkStruct_ov21_021E8570));
GF_ASSERT(v0);
memset(v0, 0, sizeof(UnkStruct_ov21_021E8570));
v0->unk_00 = ov21_021D13A0(param1);
v0->unk_08 = ov21_021D1430(param1, 3);
v0->unk_0C = ov21_021D1410(param1, 3);
v0->unk_04 = PokedexMain_GetSortData(param1);
return v0;
}
static PokedexGraphicData **ov21_021E8544(enum HeapID heapID, PokedexApp *param1)
{
PokedexGraphicData **v0;
PokedexScreenManager *v1;
v0 = Heap_Alloc(heapID, sizeof(PokedexGraphicData **));
GF_ASSERT(v0);
memset(v0, 0, sizeof(PokedexGraphicData **));
*v0 = PokedexMain_GetGraphicData(param1);
return v0;
}
static UnkStruct_ov21_021D4660 *ov21_021E856C(enum HeapID heapID, PokedexApp *param1)
{
return NULL;
}
static void ov21_021E8570(UnkStruct_ov21_021E8570 *param0)
{
GF_ASSERT(param0);
Heap_Free(param0);
}
static void ov21_021E8584(PokedexGraphicData **param0)
{
GF_ASSERT(param0);
Heap_Free(param0);
}
static void ov21_021E8598(UnkStruct_ov21_021D4660 *param0)
{
return;
}
static int ov21_021E859C(void)
{
return 0;
}
static int ov21_021E85A0(PokedexDataManager *dataMan, void *data)
{
UnkStruct_ov21_021E8570 *v0 = data;
UnkStruct_ov21_021E88B0 *v1 = dataMan->pageData;
int v2;
v1 = Heap_Alloc(dataMan->heapID, sizeof(UnkStruct_ov21_021E88B0));
memset(v1, 0, sizeof(UnkStruct_ov21_021E88B0));
for (v2 = 0; v2 < 1; v2++) {
v1->unk_10[v2] = (3 + 1);
}
ov21_021E886C(v1, v0, dataMan->heapID);
ov21_021E88B8(v1, v0);
dataMan->pageData = v1;
return 1;
}
static int ov21_021E85DC(PokedexDataManager *dataMan, void *data)
{
UnkStruct_ov21_021E8570 *v0 = data;
UnkStruct_ov21_021E88B0 *v1 = dataMan->pageData;
if (dataMan->exit == 1) {
return 1;
}
if (dataMan->unchanged == 1) {
return 0;
}
if (ov21_021E33AC(v0->unk_08)) {
ov21_021E88B0(v1);
if (ov21_021E33BC(v0->unk_08) && (ov21_021D3998(v0->unk_04) == 2)) {
ov21_021E8CF0(v1, v0);
}
ov21_021E88B8(v1, v0);
if (v1->unk_14) {
ov21_021E8D3C(v0);
v1->unk_14 = 0;
}
}
return 0;
}
static int ov21_021E8640(PokedexDataManager *dataMan, void *data)
{
UnkStruct_ov21_021E8570 *v0 = data;
UnkStruct_ov21_021E88B0 *v1 = dataMan->pageData;
ov21_021E88D0(v1);
Heap_Free(v1);
return 1;
}
static int ov21_021E8654(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan)
{
const UnkStruct_ov21_021E8570 *v0 = data;
const UnkStruct_ov21_021E88B0 *v1 = dataMan->pageData;
PokedexGraphicData **v2 = graphics;
UnkStruct_ov21_021E8794 *v3 = graphicsMan->pageGraphics;
switch (graphicsMan->state) {
case 0:
graphicsMan->pageGraphics = Heap_Alloc(graphicsMan->heapID, sizeof(UnkStruct_ov21_021E8794));
memset(graphicsMan->pageGraphics, 0, sizeof(UnkStruct_ov21_021E8794));
graphicsMan->state++;
break;
case 1:
ov21_021E891C(v3, v2, graphicsMan->heapID);
ov21_021E87C4(v3, v2, v0, 1);
graphicsMan->state++;
break;
case 2:
if (ov21_021E8830(v3, v2, v0, 1)) {
graphicsMan->state++;
}
break;
case 3:
PokedexGraphics_SetStaticCursorSize(&(*v2)->cursorGraphics, 0);
return 1;
default:
break;
}
return 0;
}
static int ov21_021E86DC(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan)
{
const UnkStruct_ov21_021E8570 *v0 = data;
const UnkStruct_ov21_021E88B0 *v1 = dataMan->pageData;
PokedexGraphicData **v2 = graphics;
UnkStruct_ov21_021E8794 *v3 = graphicsMan->pageGraphics;
if (ov21_021E33AC(v0->unk_08)) {
ov21_021E8CBC(v2, v3, v1, graphicsMan->heapID);
ov21_021E8D04(v2, v0);
}
return 0;
}
static int ov21_021E870C(void *graphics, PokedexGraphicsManager *graphicsMan, const void *data, const PokedexDataManager *dataMan)
{
const UnkStruct_ov21_021E8570 *v0 = data;
const UnkStruct_ov21_021E88B0 *v1 = dataMan->pageData;
PokedexGraphicData **v2 = graphics;
UnkStruct_ov21_021E8794 *v3 = graphicsMan->pageGraphics;
switch (graphicsMan->state) {
case 0:
PokedexGraphics_SetStaticCursorSize(&(*v2)->cursorGraphics, 1);
ov21_021E87C4(v3, v2, v0, 0);
graphicsMan->state++;
break;
case 1:
if (ov21_021E8830(v3, v2, v0, 0)) {
graphicsMan->state++;
}
break;
case 2:
ov21_021E894C(v3, v2, graphicsMan->heapID);
graphicsMan->state++;
break;
case 3:
Heap_Free(graphicsMan->pageGraphics);
graphicsMan->state++;
break;
case 4:
return 1;
default:
break;
}
return 0;
}
static void ov21_021E8794(UnkStruct_ov21_021E8794 *param0)
{
int v0;
for (v0 = 0; v0 < 1; v0++) {
Sprite_SetExplicitOAMMode(param0->unk_00[v0], GX_OAM_MODE_XLU);
sub_02012AF0(param0->unk_04[v0]->fontOAM, GX_OAM_MODE_XLU);
}
}
static void ov21_021E87AC(UnkStruct_ov21_021E8794 *param0)
{
int v0;
for (v0 = 0; v0 < 1; v0++) {
Sprite_SetExplicitOAMMode(param0->unk_00[v0], GX_OAM_MODE_NORMAL);
sub_02012AF0(param0->unk_04[v0]->fontOAM, GX_OAM_MODE_NORMAL);
}
}
static void ov21_021E87C4(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, const UnkStruct_ov21_021E8570 *param2, BOOL param3)
{
ov21_021E8794(param0);
if (ov21_021E33A4(param2->unk_08)) {
if (param3) {
PokedexGraphics_InitBlendTransition(&(*param1)->blendSub, 1, -16, 0, 0, 16, (GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BD), (GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BD), 1);
} else {
PokedexGraphics_InitBlendTransition(&(*param1)->blendSub, 1, 0, -16, 16, 0, (GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BD), (GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BD), 1);
}
}
}
static BOOL ov21_021E8830(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, const UnkStruct_ov21_021E8570 *param2, BOOL param3)
{
BOOL v0;
if (ov21_021E33A4(param2->unk_08)) {
v0 = PokedexGraphics_TakeBlendTransitionStep(&(*param1)->blendSub);
} else {
v0 = BrightnessController_IsTransitionComplete(BRIGHTNESS_SUB_SCREEN);
}
if (v0) {
if (param3) {
ov21_021E87AC(param0);
}
return 1;
}
return 0;
}
static void ov21_021E886C(UnkStruct_ov21_021E88B0 *param0, UnkStruct_ov21_021E8570 *param1, enum HeapID heapID)
{
param0->unk_04 = Heap_Alloc(heapID, sizeof(TouchScreenHitTable) * 1);
PokedexMain_SetHitTableRect(&param0->unk_04[0], 144 - (80 / 2), 144 + (80 / 2), 128 - (240 / 2), 128 + (240 / 2));
param0->unk_08.unk_00 = param1;
param0->unk_08.unk_04 = param0;
param0->unk_00 = TouchScreenActions_RegisterHandler(param0->unk_04, 1, ov21_021E88E8, &param0->unk_08, heapID);
}
static void ov21_021E88B0(UnkStruct_ov21_021E88B0 *param0)
{
int v0;
for (v0 = 0; v0 < 1; v0++) {
param0->unk_10[v0] = 3;
}
}
static void ov21_021E88B8(UnkStruct_ov21_021E88B0 *param0, UnkStruct_ov21_021E8570 *param1)
{
TouchScreenActions_HandleAction(param0->unk_00);
if (param0->unk_14) {
param0->unk_10[0] = 2;
}
}
static void ov21_021E88D0(UnkStruct_ov21_021E88B0 *param0)
{
TouchScreenActions_Free(param0->unk_00);
Heap_Free(param0->unk_04);
param0->unk_04 = NULL;
}
static void ov21_021E88E8(u32 param0, enum TouchScreenButtonState param1, void *param2)
{
UnkStruct_ov21_021E88E8 *v0 = param2;
UnkStruct_ov21_021E8570 *v1 = v0->unk_00;
UnkStruct_ov21_021E88B0 *v2 = v0->unk_04;
v2->unk_10[param0] = param1;
switch (param1) {
case TOUCH_BUTTON_PRESSED:
switch (param0) {
case 0:
ov21_021E33B4(v1->unk_08, 1);
v2->unk_14 = 1;
break;
default:
break;
}
break;
case TOUCH_BUTTON_HELD:
switch (param0) {
case 0:
v2->unk_14 = 1;
break;
default:
break;
}
break;
default:
break;
}
}
static void ov21_021E891C(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int heapID)
{
ov21_021E898C(param1, heapID);
ov21_021E89F4(param0, param1, heapID);
ov21_021E8AA8(param0, param1, heapID);
ov21_021E8B40(param0, param1, heapID);
}
static void ov21_021E894C(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int heapID)
{
int v0;
PokedexGraphics_LoadGraphicNarcPaletteData(*param1, background_sub_2_NCLR, 4, 4 * 32, 32, heapID);
ov21_021E8B34(param0);
ov21_021E8BDC(param0, param1);
ov21_021E8A74(param0, param1);
for (v0 = 0; v0 < 1; v0++) {
if (param0->unk_2C[v0]) {
Heap_Free(param0->unk_2C[v0]);
}
}
}
static void ov21_021E898C(PokedexGraphicData **param0, int heapID)
{
void *v0;
NNSG2dScreenData *v1;
PokedexGraphics_LoadGraphicNarcCharacterData(*param0, entry_sub_NCGR_lz, (*param0)->bgConfig, 6, 0, 0, TRUE, heapID);
v0 = PokedexGraphics_GetGraphicNarcTilemapData(*param0, forms_sub_NSCR_lz, TRUE, &v1, heapID);
Bg_LoadToTilemapRect((*param0)->bgConfig, 6, v1->rawData, 0, 0, v1->screenWidth / 8, v1->screenHeight / 8);
Heap_Free(v0);
Bg_ScheduleTilemapTransfer((*param0)->bgConfig, 6);
}
static void ov21_021E89F4(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int param2)
{
PokedexGraphicData *v0 = *param1;
NARC *v1 = PokedexGraphics_GetNARC(v0);
param0->unk_08[0] = SpriteResourceCollection_AddTilesFrom(v0->spriteResourceCollection[0], v1, size_buttons_pressed_NCGR_lz, TRUE, size_buttons_pressed_NCGR_lz + 13000, NNS_G2D_VRAM_TYPE_2DSUB, param2);
SpriteTransfer_RequestCharAtEnd(param0->unk_08[0]);
SpriteResource_ReleaseData(param0->unk_08[0]);
param0->unk_08[2] = SpriteResourceCollection_AddFrom(v0->spriteResourceCollection[2], v1, size_buttons_pressed_cell_NCER_lz, TRUE, size_buttons_pressed_cell_NCER_lz + 13000, 2, param2);
param0->unk_08[3] = SpriteResourceCollection_AddFrom(v0->spriteResourceCollection[3], v1, size_buttons_pressed_anim_NANR_lz, TRUE, size_buttons_pressed_anim_NANR_lz + 13000, 3, param2);
}
static void ov21_021E8A74(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1)
{
PokedexGraphicData *v0 = *param1;
SpriteTransfer_ResetCharTransfer(param0->unk_08[0]);
SpriteResourceCollection_Remove(v0->spriteResourceCollection[0], param0->unk_08[0]);
SpriteResourceCollection_Remove(v0->spriteResourceCollection[2], param0->unk_08[2]);
SpriteResourceCollection_Remove(v0->spriteResourceCollection[3], param0->unk_08[3]);
}
static void ov21_021E8AA8(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int param2)
{
SpriteResourcesHeader v0;
SpriteListTemplate v1;
PokedexGraphicData *v2 = *param1;
int v3;
SpriteResourcesHeader_Init(&v0, size_buttons_pressed_NCGR_lz + 13000, info_NCLR + 2100, size_buttons_pressed_cell_NCER_lz + 13000, size_buttons_pressed_anim_NANR_lz + 13000, 0xffffffff, 0xffffffff, FALSE, 2, v2->spriteResourceCollection[0], v2->spriteResourceCollection[1], v2->spriteResourceCollection[2], v2->spriteResourceCollection[3], NULL, NULL);
v1.list = v2->spriteList;
v1.resourceData = &v0;
v1.priority = 31;
v1.vramType = NNS_G2D_VRAM_TYPE_2DSUB;
v1.heapID = param2;
v1.position.x = 128 << FX32_SHIFT;
v1.position.y = 144 << FX32_SHIFT;
v1.position.y += (192 << FX32_SHIFT);
param0->unk_00[0] = SpriteList_Add(&v1);
Sprite_SetAnim(param0->unk_00[0], 2);
}
static void ov21_021E8B34(UnkStruct_ov21_021E8794 *param0)
{
int v0;
for (v0 = 0; v0 < 1; v0++) {
Sprite_Delete(param0->unk_00[v0]);
}
}
static void ov21_021E8B40(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1, int param2)
{
Window *v0;
PokedexDisplayBox displayBox;
SpriteResource *v2;
PokedexGraphicData *v3 = *param1;
int v4;
u32 v5;
GF_ASSERT(param0->unk_00[0]);
v2 = SpriteResourceCollection_Find(v3->spriteResourceCollection[1], info_NCLR + 2100);
displayBox.textMan = v3->textMan;
displayBox.paletteProxy = SpriteTransfer_GetPaletteProxy(v2, NULL);
displayBox.y = -8;
displayBox.spriteResourcePriority = 2;
displayBox.spriteListPriority = 0;
displayBox.vramType = NNS_G2D_VRAM_TYPE_2DSUB;
displayBox.heapID = param2;
v4 = PlttTransfer_GetPlttOffset(displayBox.paletteProxy, NNS_G2D_VRAM_TYPE_2DSUB);
v0 = PokedexTextManager_NewWindow(v3->textMan, 16, 2);
v5 = PokedexTextManager_DisplayMessage(v3->textMan, v0, TEXT_BANK_POKEDEX, pl_msg_pokedex_anotherform, 0, 0);
displayBox.x = -(v5 / 2);
displayBox.window = v0;
displayBox.sprite = param0->unk_00[0];
param0->unk_04[0] = PokedexTextManager_NextTextData(&displayBox);
sub_02012A60(param0->unk_04[0]->fontOAM, v4 + 4);
PokedexTextManager_FreeWindow(v0);
}
static void ov21_021E8BDC(UnkStruct_ov21_021E8794 *param0, PokedexGraphicData **param1)
{
int v0;
for (v0 = 0; v0 < 1; v0++) {
PokedexTextManager_FreeTextData(param0->unk_04[v0]);
}
}
static void ov21_021E8BE8(PokedexGraphicData **param0, Sprite *param1, PokedexTextData *textData, int param3, int param4, int param5, int *param6, int heapID, int param8, int param9, void **param10)
{
int v0;
NNSG2dPaletteData *v1;
BOOL v2;
BOOL v3 = 0;
int v4;
ov21_021D144C(param1, param3);
ov21_021E8C94(param1, textData, param4, param8, param9);
v0 = Sprite_GetAnimFrame(param1);
switch (v0) {
case 0:
case 1:
if (*param6 != 0) {
v3 = 1;
v4 = background_sub_2_NCLR;
*param6 = 0;
}
break;
case 2:
if (*param6 != 1) {
v3 = 1;
v4 = background_sub_3_NCLR;
*param6 = 1;
}
break;
case 3:
if (*param6 != 2) {
v3 = 1;
v4 = background_sub_1_NCLR;
*param6 = 2;
}
break;
}
if (v3) {
if (*param10) {
Heap_Free(*param10);
}
*param10 = PokedexGraphics_GetGraphicNarcPaletteData(*param0, v4, &v1, heapID);
v2 = VramTransfer_Request(NNS_GFD_DST_2D_BG_PLTT_SUB, param5 * 32, v1->pRawData, 32);
GF_ASSERT(v2);
}
}
static void ov21_021E8C94(Sprite *param0, PokedexTextData *textData, int param2, int param3, int param4)
{
int v0;
ov21_021D1498(param0, textData, param2);
v0 = Sprite_GetAnimFrame(param0);
if (v0 < 2) {
sub_02012AC0(textData->fontOAM, param3);
} else {
sub_02012AC0(textData->fontOAM, param4);
}
}
static void ov21_021E8CBC(PokedexGraphicData **param0, UnkStruct_ov21_021E8794 *param1, const UnkStruct_ov21_021E88B0 *param2, int param3)
{
int v0;
int v1;
for (v0 = 0; v0 < 1; v0++) {
v1 = 4;
ov21_021E8BE8(param0, param1->unk_00[v0], param1->unk_04[v0], param2->unk_10[v0], -8, v1, &param1->unk_28[v0], param3, 4, 1, &param1->unk_2C[v0]);
}
}
static void ov21_021E8CF0(UnkStruct_ov21_021E88B0 *param0, UnkStruct_ov21_021E8570 *param1)
{
if (gSystem.heldKeys & PAD_BUTTON_A) {
param0->unk_14 = 1;
}
}
static void ov21_021E8D04(PokedexGraphicData **param0, const UnkStruct_ov21_021E8570 *param1)
{
if (ov21_021E33BC(param1->unk_08) == 1) {
ov21_021E8D28(param0, 128, 144, 228, 64);
}
}
static void ov21_021E8D28(PokedexGraphicData **param0, int param1, int param2, int param3, int param4)
{
PokedexGraphicData *v0 = *param0;
PokedexGraphics_TransformCursor(v0, param1, param2, param3, param4);
}
static void ov21_021E8D3C(const UnkStruct_ov21_021E8570 *param0)
{
ov21_021DF7A0(param0->unk_0C, 1);
}

View File

@ -7,6 +7,7 @@
#include "struct_defs/struct_02099F80.h"
#include "applications/pokedex/crysub.h"
#include "applications/pokedex/formsub.h"
#include "applications/pokedex/funcptr_ov21_021E9B74.h"
#include "applications/pokedex/funcptr_ov21_021E9B9C.h"
#include "applications/pokedex/ov21_021D423C.h"
@ -24,7 +25,6 @@
#include "applications/pokedex/ov21_021E3FFC.h"
#include "applications/pokedex/ov21_021E68F4.h"
#include "applications/pokedex/ov21_021E737C.h"
#include "applications/pokedex/ov21_021E8484.h"
#include "applications/pokedex/pokedex_app.h"
#include "applications/pokedex/pokedex_graphics.h"
#include "applications/pokedex/pokedex_height_check.h"
@ -222,7 +222,7 @@ const static UnkFuncPtr_ov21_021E9B74 Unk_ov21_021E9B34[8] = {
ov21_021DDD2C,
CrySub_Init,
ov21_021E68F4,
ov21_021E8484
FormSub_Init
};
const static UnkFuncPtr_ov21_021E9B9C Unk_ov21_021E9B9C[10] = {
@ -246,7 +246,7 @@ const static UnkFuncPtr_ov21_021E9B9C Unk_ov21_021E9B54[8] = {
ov21_021DDD8C,
CrySub_Free,
ov21_021E6954,
ov21_021E84E4
FormSub_Free
};
PokedexApp *PokedexMain_NewPokedexApp(enum HeapID heapID, const PokedexOverlayArgs *pokedexOverlayArgs)
@ -509,31 +509,31 @@ void ov21_021D144C(Sprite *param0, int param1)
}
}
void ov21_021D1498(Sprite *param0, PokedexTextData *textData, int param2)
void PokedexMain_SetButtonY(Sprite *sprite, PokedexTextData *textData, int setY)
{
int v0 = Sprite_GetAnimFrame(param0);
int v1, v2;
int frame = Sprite_GetAnimFrame(sprite);
int x, y;
switch (v0) {
switch (frame) {
case 0:
sub_020129A4(textData->fontOAM, &v1, &v2);
v2 = param2;
sub_020128C4(textData->fontOAM, v1, v2);
FontOAM_GetXY(textData->fontOAM, &x, &y);
y = setY;
FontOAM_SetXY(textData->fontOAM, x, y);
break;
case 1:
sub_020129A4(textData->fontOAM, &v1, &v2);
v2 = param2 + -2;
sub_020128C4(textData->fontOAM, v1, v2);
FontOAM_GetXY(textData->fontOAM, &x, &y);
y = setY + -2;
FontOAM_SetXY(textData->fontOAM, x, y);
break;
case 2:
sub_020129A4(textData->fontOAM, &v1, &v2);
v2 = param2 + -4;
sub_020128C4(textData->fontOAM, v1, v2);
FontOAM_GetXY(textData->fontOAM, &x, &y);
y = setY + -4;
FontOAM_SetXY(textData->fontOAM, x, y);
break;
case 3:
sub_020129A4(textData->fontOAM, &v1, &v2);
v2 = param2 + -2;
sub_020128C4(textData->fontOAM, v1, v2);
FontOAM_GetXY(textData->fontOAM, &x, &y);
y = setY + -2;
FontOAM_SetXY(textData->fontOAM, x, y);
break;
}
}
@ -542,7 +542,7 @@ void ov21_021D1524(Sprite *param0, PokedexTextData *textData, int param2, int pa
{
int v0;
ov21_021D1498(param0, textData, param2);
PokedexMain_SetButtonY(param0, textData, param2);
v0 = Sprite_GetAnimFrame(param0);
if (v0 < 2) {

View File

@ -1835,7 +1835,7 @@ static void ov16_02269668(UnkStruct_ov16_02268A14 *param0, int param1, int param
ov16_0226A698(param0);
v8 = ov16_0226A7A4(param0, v7, v5, v6->unk_04, v6->unk_06, v6->unk_03);
sub_020129A4(param0->unk_4CC[0].unk_00, &v9, &v10);
FontOAM_GetXY(param0->unk_4CC[0].unk_00, &v9, &v10);
if (v5 == 4) {
v9 += param0->unk_4CC[0].unk_10 + 32 / 2;
@ -2678,7 +2678,7 @@ static void ov16_0226A98C(UnkStruct_ov16_02268A14 *param0, UnkStruct_ov16_0226A9
v4 = sub_020127E8(&v0);
sub_02012AC0(v4, param5);
sub_020128C4(v4, param7, param8);
FontOAM_SetXY(v4, param7, param8);
if (param10 == NULL) {
Window_Remove(&v1);
@ -3236,8 +3236,8 @@ static void ov16_0226B390(SysTask *param0, void *param1)
switch (v0->unk_67C.unk_00) {
case 0:
ov16_0226B31C(v0, v0->unk_67C.unk_04_val3.unk_00, v0->unk_67C.unk_04_val3.unk_04, v0->unk_67C.unk_04_val3.unk_0C, 2);
sub_020129A4(v0->unk_4CC[v0->unk_67C.unk_04_val3.unk_0D].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[v0->unk_67C.unk_04_val3.unk_0D].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_4CC[v0->unk_67C.unk_04_val3.unk_0D].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[v0->unk_67C.unk_04_val3.unk_0D].unk_00, v2, v3 + -2);
if ((v0->unk_67C.unk_04_val3.unk_0E != 0xff) && (v0->unk_60C[v0->unk_67C.unk_04_val3.unk_0E] != NULL)) {
ManagedSprite_OffsetPositionXY(v0->unk_60C[v0->unk_67C.unk_04_val3.unk_0E], 0, -2);
@ -3256,8 +3256,8 @@ static void ov16_0226B390(SysTask *param0, void *param1)
v0->unk_67C.unk_00++;
case 2:
ov16_0226B31C(v0, v0->unk_67C.unk_04_val3.unk_00, v0->unk_67C.unk_04_val3.unk_04, v0->unk_67C.unk_04_val3.unk_0C, 1);
sub_020129A4(v0->unk_4CC[v0->unk_67C.unk_04_val3.unk_0D].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[v0->unk_67C.unk_04_val3.unk_0D].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_4CC[v0->unk_67C.unk_04_val3.unk_0D].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[v0->unk_67C.unk_04_val3.unk_0D].unk_00, v2, v3 + 1);
if ((v0->unk_67C.unk_04_val3.unk_0E != 0xff) && (v0->unk_60C[v0->unk_67C.unk_04_val3.unk_0E] != NULL)) {
ManagedSprite_OffsetPositionXY(v0->unk_60C[v0->unk_67C.unk_04_val3.unk_0E], 0, 1);
@ -3338,12 +3338,12 @@ static void ov16_0226B4E0(SysTask *param0, void *param1)
ov16_0226B31C(v0, v0->unk_67C.unk_04_val3.unk_00, v0->unk_67C.unk_04_val3.unk_04, v0->unk_67C.unk_04_val3.unk_0C, 2);
if (v0->unk_67C.unk_04_val3.unk_08 != 0xff) {
sub_020129A4(v0->unk_4CC[v4].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[v4].unk_00, v2, v3 + -2);
sub_020129A4(v0->unk_4CC[v5].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[v5].unk_00, v2, v3 + -2);
sub_020129A4(v0->unk_4CC[v6].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[v6].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_4CC[v4].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[v4].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_4CC[v5].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[v5].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_4CC[v6].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[v6].unk_00, v2, v3 + -2);
if (v9 != 0) {
Sprite_OffsetPositionXY(v0->moveSelectSprites[v7]->sprite, 0, -2);
@ -3353,8 +3353,8 @@ static void ov16_0226B4E0(SysTask *param0, void *param1)
}
}
} else {
sub_020129A4(v0->unk_4CC[4].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[4].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_4CC[4].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[4].unk_00, v2, v3 + -2);
}
v0->unk_67C.unk_00++;
@ -3372,12 +3372,12 @@ static void ov16_0226B4E0(SysTask *param0, void *param1)
ov16_0226B31C(v0, v0->unk_67C.unk_04_val3.unk_00, v0->unk_67C.unk_04_val3.unk_04, v0->unk_67C.unk_04_val3.unk_0C, 1);
if (v0->unk_67C.unk_04_val3.unk_08 != 0xff) {
sub_020129A4(v0->unk_4CC[v4].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[v4].unk_00, v2, v3 + 1);
sub_020129A4(v0->unk_4CC[v5].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[v5].unk_00, v2, v3 + 1);
sub_020129A4(v0->unk_4CC[v6].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[v6].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_4CC[v4].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[v4].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_4CC[v5].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[v5].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_4CC[v6].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[v6].unk_00, v2, v3 + 1);
if (v9 != 0) {
Sprite_OffsetPositionXY(v0->moveSelectSprites[v7]->sprite, 0, 1);
@ -3387,8 +3387,8 @@ static void ov16_0226B4E0(SysTask *param0, void *param1)
}
}
} else {
sub_020129A4(v0->unk_4CC[4].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[4].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_4CC[4].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[4].unk_00, v2, v3 + 1);
}
v0->unk_67C.unk_00++;
@ -3423,8 +3423,8 @@ static void ov16_0226B780(SysTask *param0, void *param1)
ov16_0226B31C(v0, Unk_ov16_022703D4[i], &Unk_ov16_0227033C[i], 4, 2);
if (v0->unk_4CC[0 + i].unk_00 != NULL) {
sub_020129A4(v0->unk_4CC[0 + i].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[0 + i].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_4CC[0 + i].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[0 + i].unk_00, v2, v3 + -2);
}
if (v0->unk_60C[i] != NULL) {
@ -3452,8 +3452,8 @@ static void ov16_0226B780(SysTask *param0, void *param1)
ov16_0226B31C(v0, Unk_ov16_022703D4[i], &Unk_ov16_0227033C[i], 4, 1);
if (v0->unk_4CC[0 + i].unk_00 != NULL) {
sub_020129A4(v0->unk_4CC[0 + i].unk_00, &v2, &v3);
sub_020128C4(v0->unk_4CC[0 + i].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_4CC[0 + i].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_4CC[0 + i].unk_00, v2, v3 + 1);
}
if (v0->unk_60C[i] != NULL) {

View File

@ -620,7 +620,7 @@ pokeplatinum_c = files(
'applications/pokedex/pokedex_height_check.c',
'applications/pokedex/ov21_021E68F4.c',
'applications/pokedex/ov21_021E737C.c',
'applications/pokedex/ov21_021E8484.c',
'applications/pokedex/formsub.c',
'applications/pokedex/ov21_021E8D48.c',
'overlay022/ov22_02254DE0.c',
'overlay022/ov22_02255094.c',

View File

@ -1590,7 +1590,7 @@ static void ov10_022213B8(UnkStruct_ov10_0221FB28 *param0)
static void ov10_02221440(UnkStruct_ov10_0221FB28 *param0, u32 param1, s16 param2, s16 param3)
{
sub_020128C4(param0->unk_B3C[param1], param0->unk_B60[param1] + param2, param0->unk_B64[param1] + param3);
FontOAM_SetXY(param0->unk_B3C[param1], param0->unk_B60[param1] + param2, param0->unk_B64[param1] + param3);
}
static void ov10_0222146C(UnkStruct_ov10_0221FB28 *param0)

View File

@ -155,7 +155,7 @@ void ov17_0223F1E8(int heapID, BgConfig *param1, SpriteManager *param2, UnkStruc
sub_02012A90(v4, param8);
}
sub_020128C4(v4, param10, param11);
FontOAM_SetXY(v4, param10, param11);
Window_Remove(&v1);
param4->unk_00 = v4;
@ -176,7 +176,7 @@ void ov17_0223F2F8(UnkStruct_ov17_0223F2E4 *param0, int param1, int param2, int
}
param2 += 0 - 8;
sub_020128C4(param0->unk_00, param1, param2);
FontOAM_SetXY(param0->unk_00, param1, param2);
}
Strbuf *ov17_0223F310(u32 param0, u32 heapID)

View File

@ -1039,7 +1039,7 @@ static void ov17_02240138(UnkStruct_ov17_0223F7E4 *param0, UnkStruct_ov17_022401
v4 = sub_020127E8(&v0);
sub_02012AC0(v4, param5);
sub_020128C4(v4, param7, param8);
FontOAM_SetXY(v4, param7, param8);
if (param10 == NULL) {
Window_Remove(&v1);
@ -1212,8 +1212,8 @@ static void ov17_0224051C(SysTask *param0, void *param1)
switch (v0->unk_2CC.unk_00) {
case 0:
ov17_022403B0(v0, v0->unk_2CC.unk_04_val1.unk_0C, v0->unk_2CC.unk_04_val1.unk_10, v0->unk_2CC.unk_04_val1.unk_18, 2);
sub_020129A4(v0->unk_40[v0->unk_2CC.unk_04_val1.unk_19].unk_00, &v2, &v3);
sub_020128C4(v0->unk_40[v0->unk_2CC.unk_04_val1.unk_19].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_40[v0->unk_2CC.unk_04_val1.unk_19].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_40[v0->unk_2CC.unk_04_val1.unk_19].unk_00, v2, v3 + -2);
for (v4 = 0; v4 < 3; v4++) {
if (v0->unk_2CC.unk_04_val1.unk_00[v4] != NULL) {
@ -1235,8 +1235,8 @@ static void ov17_0224051C(SysTask *param0, void *param1)
case 2:
ov17_022403B0(v0, v0->unk_2CC.unk_04_val1.unk_0C, v0->unk_2CC.unk_04_val1.unk_10, v0->unk_2CC.unk_04_val1.unk_18, 1);
sub_020129A4(v0->unk_40[v0->unk_2CC.unk_04_val1.unk_19].unk_00, &v2, &v3);
sub_020128C4(v0->unk_40[v0->unk_2CC.unk_04_val1.unk_19].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_40[v0->unk_2CC.unk_04_val1.unk_19].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_40[v0->unk_2CC.unk_04_val1.unk_19].unk_00, v2, v3 + 1);
for (v4 = 0; v4 < 3; v4++) {
if (v0->unk_2CC.unk_04_val1.unk_00[v4] != NULL) {
@ -1321,12 +1321,12 @@ static void ov17_02240658(SysTask *param0, void *param1)
ov17_022403B0(v0, v0->unk_2CC.unk_04_val1.unk_0C, v0->unk_2CC.unk_04_val1.unk_10, v0->unk_2CC.unk_04_val1.unk_18, 2);
if (1) {
sub_020129A4(v0->unk_40[v4].unk_00, &v2, &v3);
sub_020128C4(v0->unk_40[v4].unk_00, v2, v3 + -2);
sub_020129A4(v0->unk_40[v5].unk_00, &v2, &v3);
sub_020128C4(v0->unk_40[v5].unk_00, v2, v3 + -2);
sub_020129A4(v0->unk_40[v6].unk_00, &v2, &v3);
sub_020128C4(v0->unk_40[v6].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_40[v4].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_40[v4].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_40[v5].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_40[v5].unk_00, v2, v3 + -2);
FontOAM_GetXY(v0->unk_40[v6].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_40[v6].unk_00, v2, v3 + -2);
if (v8 != 0) {
Sprite_OffsetPositionXY(v0->unk_118[v7]->sprite, 0, -2);
@ -1356,12 +1356,12 @@ static void ov17_02240658(SysTask *param0, void *param1)
ov17_022403B0(v0, v0->unk_2CC.unk_04_val1.unk_0C, v0->unk_2CC.unk_04_val1.unk_10, v0->unk_2CC.unk_04_val1.unk_18, 1);
if (1) {
sub_020129A4(v0->unk_40[v4].unk_00, &v2, &v3);
sub_020128C4(v0->unk_40[v4].unk_00, v2, v3 + 1);
sub_020129A4(v0->unk_40[v5].unk_00, &v2, &v3);
sub_020128C4(v0->unk_40[v5].unk_00, v2, v3 + 1);
sub_020129A4(v0->unk_40[v6].unk_00, &v2, &v3);
sub_020128C4(v0->unk_40[v6].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_40[v4].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_40[v4].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_40[v5].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_40[v5].unk_00, v2, v3 + 1);
FontOAM_GetXY(v0->unk_40[v6].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_40[v6].unk_00, v2, v3 + 1);
if (v8 != 0) {
Sprite_OffsetPositionXY(v0->unk_118[v7]->sprite, 0, 1);

View File

@ -709,7 +709,7 @@ static void ov17_02249BC4(UnkStruct_ov17_022492DC *param0, UnkStruct_ov17_02249B
v4 = sub_020127E8(&v0);
sub_02012AC0(v4, param5);
sub_020128C4(v4, param7, param8);
FontOAM_SetXY(v4, param7, param8);
Window_Remove(&v1);
param1->unk_00 = v4;
@ -797,8 +797,8 @@ static void ov17_02249DA0(SysTask *param0, void *param1)
case 0:
v0->unk_8C.unk_04_val1.unk_00 = ov17_02249B08(v0, 4, v0->unk_8C.unk_04_val1.unk_2C, v0->unk_8C.unk_04_val1.unk_1C[0], v0->unk_8C.unk_04_val1.unk_04[0], v0->unk_8C.unk_04_val1.unk_2E);
sub_020129A4(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, &v2, &v3);
sub_020128C4(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, v2, v3 + 16);
FontOAM_GetXY(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, v2, v3 + 16);
for (v4 = 0; v4 < 3; v4++) {
if (v0->unk_8C.unk_04_val1.unk_10[v4] != NULL) {
@ -826,8 +826,8 @@ static void ov17_02249DA0(SysTask *param0, void *param1)
case 3:
v0->unk_8C.unk_04_val1.unk_00 = ov17_02249B08(v0, 4, v0->unk_8C.unk_04_val1.unk_2C, v0->unk_8C.unk_04_val1.unk_1C[1], v0->unk_8C.unk_04_val1.unk_04[1], v0->unk_8C.unk_04_val1.unk_2E);
sub_020129A4(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, &v2, &v3);
sub_020128C4(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, v2, v3 + -4);
FontOAM_GetXY(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, v2, v3 + -4);
for (v4 = 0; v4 < 3; v4++) {
if (v0->unk_8C.unk_04_val1.unk_10[v4] != NULL) {
@ -855,8 +855,8 @@ static void ov17_02249DA0(SysTask *param0, void *param1)
case 6:
v0->unk_8C.unk_04_val1.unk_00 = ov17_02249B08(v0, 4, v0->unk_8C.unk_04_val1.unk_2C, v0->unk_8C.unk_04_val1.unk_1C[2], v0->unk_8C.unk_04_val1.unk_04[2], v0->unk_8C.unk_04_val1.unk_2E);
sub_020129A4(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, &v2, &v3);
sub_020128C4(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, v2, v3 + (-(16 + -4)));
FontOAM_GetXY(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, &v2, &v3);
FontOAM_SetXY(v0->unk_1C[v0->unk_8C.unk_04_val1.unk_30].unk_00, v2, v3 + (-(16 + -4)));
for (v4 = 0; v4 < 3; v4++) {
if (v0->unk_8C.unk_04_val1.unk_10[v4] != NULL) {

View File

@ -708,9 +708,9 @@ static void ov17_0224A8D4(SysTask *param0, void *param1)
switch (v0->unk_10) {
case 0:
sub_020129A4(v0->unk_04->unk_00, &v1, &v2);
FontOAM_GetXY(v0->unk_04->unk_00, &v1, &v2);
v2 += -4;
sub_020128C4(v0->unk_04->unk_00, v1, v2);
FontOAM_SetXY(v0->unk_04->unk_00, v1, v2);
ManagedSprite_OffsetPositionXY(v0->unk_00, 0, -4);
v0->unk_0C++;

View File

@ -406,15 +406,15 @@ static void ov22_0225A2D0(UnkStruct_ov22_02259C58 *param0, int param1)
static void ov22_0225A2F4(UnkStruct_ov22_0225A154 *param0, int param1)
{
if (param1 == 0) {
sub_020128C4(param0->unk_10, 0, 15);
FontOAM_SetXY(param0->unk_10, 0, 15);
sub_02012A60(param0->unk_10, 4);
} else {
if (param1 == 1) {
sub_020128C4(param0->unk_10, 0, 19);
FontOAM_SetXY(param0->unk_10, 0, 19);
}
if (param1 == 3) {
sub_020128C4(param0->unk_10, 0, 19);
FontOAM_SetXY(param0->unk_10, 0, 19);
sub_02012A60(param0->unk_10, 3);
}
}

View File

@ -325,7 +325,7 @@ void ov62_022307C0(UnkStruct_0208C06C *param0)
for (v0 = 0; v0 < 5; v0++) {
ov62_02230E68(v1->unk_00[v0].unk_00, 42 + 8, (25 + (36 * 4) + (16 * (5 - (param0->unk_534.unk_1AC)))) + 48);
sub_020128C4(param0->unk_534.unk_00[v0].unk_14, 36, -8);
FontOAM_SetXY(param0->unk_534.unk_00[v0].unk_14, 36, -8);
}
v0 = 0;
@ -477,7 +477,7 @@ void ov62_02230AF0(UnkStruct_0208C06C *param0)
for (v0 = 0; v0 < param0->unk_534.unk_1A4; v0++) {
ManagedSprite_SetAnim(param0->unk_534.unk_00[v0].unk_00, param0->unk_534.unk_190[v0]->unk_0C);
ov62_02230FC8(param0, &param0->unk_534.unk_00[v0], param0->unk_534.unk_190[v0]->unk_08, param0->unk_534.unk_190[v0]);
sub_020128C4(param0->unk_534.unk_00[v0].unk_14, 36, -8);
FontOAM_SetXY(param0->unk_534.unk_00[v0].unk_14, 36, -8);
sub_020129D0(param0->unk_534.unk_00[v0].unk_14, 1);
ManagedSprite_SetDrawFlag(param0->unk_534.unk_00[v0].unk_00, 1);
}

View File

@ -2512,7 +2512,7 @@ void ov62_0223454C(UnkStruct_0208C06C *param0, UnkStruct_ov62_022312B0 *param1,
ov62_0223118C(param1, &param0->unk_14, param2);
ov62_0223124C(param1, &param0->unk_14, param3);
ManagedSprite_SetPositionXY(param1->unk_08, param4, param5);
sub_020128C4(param1->unk_0C, param6, param7);
FontOAM_SetXY(param1->unk_0C, param6, param7);
sub_020129D0(param1->unk_0C, param9);
ManagedSprite_SetAnim(param1->unk_08, param8);
}

View File

@ -297,7 +297,7 @@ BOOL ov62_02235008(UnkStruct_0208C06C *param0)
ov62_02230E68(param0->unk_534.unk_C8[v1].unk_00, 42, (25 + (36 * (5 - 1)) + (16 * (5 - (param0->unk_534.unk_1AC)))));
ManagedSprite_GetPositionFxXY(param0->unk_534.unk_C8[v1].unk_00, &v0->unk_00[v1].unk_0C, &v2);
ManagedSprite_SetPositionFxXY(param0->unk_534.unk_C8[v1].unk_00, v0->unk_00[v1].unk_0C, (25 + (36 * (5 - 1)) + (16 * (5 - (param0->unk_534.unk_1AC)))) * FX32_ONE);
sub_020128C4(param0->unk_534.unk_C8[v1].unk_14, 36, -8);
FontOAM_SetXY(param0->unk_534.unk_C8[v1].unk_14, 36, -8);
sub_020129D0(param0->unk_534.unk_C8[v1].unk_14, 1);
}
@ -340,7 +340,7 @@ BOOL ov62_02235008(UnkStruct_0208C06C *param0)
v0->unk_00[v3].unk_04 += (-4 * 1);
ManagedSprite_SetPositionFxXY(param0->unk_534.unk_C8[v3].unk_00, v7, v8);
sub_020128C4(param0->unk_534.unk_C8[v3].unk_14, 36, -8);
FontOAM_SetXY(param0->unk_534.unk_C8[v3].unk_14, 36, -8);
}
if (v4 == param0->unk_534.unk_1AC) {
param0->unk_08++;

View File

@ -209,7 +209,7 @@ void ov62_022354A4(SysTask *param0, void *param1)
}
ov62_02230E68(v0->unk_20, v1, v2);
sub_020128C4(v0->unk_24, 36, -8);
FontOAM_SetXY(v0->unk_24, 36, -8);
*(v0->unk_2C) = 1;
} break;

View File

@ -739,7 +739,7 @@ static void ov62_02236C20(UnkStruct_0208C06C *param0)
ManagedSprite_SetAnim(v0->unk_158[0].unk_08, 0);
ManagedSprite_SetPositionXY(v0->unk_158[0].unk_08, 80, 232);
sub_020128C4(v0->unk_158[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_158[0].unk_0C, 36, -8);
sub_020129D0(v0->unk_158[0].unk_0C, 1);
}

View File

@ -79,7 +79,7 @@ static void ov62_02236CBC(UnkStruct_0208C06C *param0, int param1)
ManagedSprite_SetPositionXY(v0->unk_9C[1].unk_08, 80, 232);
}
sub_020128C4(v0->unk_9C[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_9C[1].unk_0C, 36, -8);
}
static void ov62_02236CF8(UnkStruct_0208C06C *param0, int param1)
@ -107,7 +107,7 @@ static void ov62_02236D48(UnkStruct_0208C06C *param0)
ov62_0223124C(&v0->unk_9C[1], &param0->unk_14, 3);
ManagedSprite_SetPositionXY(v0->unk_9C[1].unk_08, 128, 232);
sub_020128C4(v0->unk_9C[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_9C[1].unk_0C, 36, -8);
sub_020129D0(v0->unk_9C[1].unk_0C, 1);
v0->unk_94[1] = ov62_022313E0(param0, NNS_G2D_VRAM_TYPE_2DSUB);

View File

@ -1311,8 +1311,8 @@ static void ov62_0223958C(UnkStruct_0208C06C *param0, int param1)
ManagedSprite_SetPositionXY(v0->unk_198[0].unk_08, 80, 232);
}
sub_020128C4(v0->unk_198[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_198[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_198[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_198[1].unk_0C, 36, -8);
}
static void ov62_02239608(UnkStruct_0208C06C *param0)
@ -1333,8 +1333,8 @@ static void ov62_02239608(UnkStruct_0208C06C *param0)
ManagedSprite_SetAnim(v0->unk_198[1].unk_08, 4);
ManagedSprite_SetPositionXY(v0->unk_198[0].unk_08, 32, 232);
ManagedSprite_SetPositionXY(v0->unk_198[1].unk_08, 128, 232);
sub_020128C4(v0->unk_198[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_198[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_198[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_198[1].unk_0C, 36, -8);
sub_020129D0(v0->unk_198[0].unk_0C, 1);
sub_020129D0(v0->unk_198[1].unk_0C, 1);

View File

@ -580,8 +580,8 @@ static void ov62_0223A4C8(UnkStruct_0208C06C *param0, int param1)
ManagedSprite_SetPositionXY(v0->unk_348[0].unk_08, 80, 232);
}
sub_020128C4(v0->unk_348[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_348[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_348[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_348[1].unk_0C, 36, -8);
}
static BOOL ov62_0223A544(UnkStruct_0208C06C *param0)

View File

@ -521,8 +521,8 @@ static void ov62_0223D3A8(UnkStruct_0208C06C *param0, int param1)
ManagedSprite_SetPositionXY(v0->unk_A4[1].unk_08, 80, 232);
}
sub_020128C4(v0->unk_A4[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_A4[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_A4[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_A4[1].unk_0C, 36, -8);
}
static void ov62_0223D424(UnkStruct_0208C06C *param0)
@ -541,8 +541,8 @@ static void ov62_0223D424(UnkStruct_0208C06C *param0)
ManagedSprite_SetPositionXY(v0->unk_A4[0].unk_08, 32, 232);
ManagedSprite_SetPositionXY(v0->unk_A4[1].unk_08, 128, 232);
sub_020128C4(v0->unk_A4[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_A4[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_A4[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_A4[1].unk_0C, 36, -8);
sub_020129D0(v0->unk_A4[0].unk_0C, 0);
sub_020129D0(v0->unk_A4[1].unk_0C, 1);

View File

@ -224,8 +224,8 @@ static void ov62_0223E01C(UnkStruct_0208C06C *param0)
ManagedSprite_SetAnim(v0->unk_114[1].unk_08, 3);
ManagedSprite_SetPositionXY(v0->unk_114[0].unk_08, 32, 232);
ManagedSprite_SetPositionXY(v0->unk_114[1].unk_08, 128, 232);
sub_020128C4(v0->unk_114[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_114[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_114[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_114[1].unk_0C, 36, -8);
sub_020129D0(v0->unk_114[0].unk_0C, 1);
sub_020129D0(v0->unk_114[1].unk_0C, 1);
@ -870,7 +870,7 @@ static void ov62_0223EF60(UnkStruct_0208C06C *param0)
ManagedSprite_SetPositionXY(v0->unk_114[v1].unk_08, 42 + 8, (25 + (36 * (v1)) + (16 * (5 - 4))) + 64);
ManagedSprite_SetAnim(v0->unk_114[v1].unk_08, v3[v1]);
sub_020128C4(v0->unk_114[v1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_114[v1].unk_0C, 36, -8);
sub_020129D0(v0->unk_114[v1].unk_0C, 1);
}
}
@ -913,8 +913,8 @@ static void ov62_0223F0A8(UnkStruct_0208C06C *param0, int param1)
ManagedSprite_SetPositionXY(v0->unk_114[0].unk_08, 80, 232);
}
sub_020128C4(v0->unk_114[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_114[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_114[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_114[1].unk_0C, 36, -8);
}
static void ov62_0223F124(UnkStruct_0208C06C *param0)

View File

@ -3148,7 +3148,7 @@ static void ov62_02244BE4(UnkStruct_0208C06C *param0)
ManagedSprite_SetPositionXY(v0->unk_10[v1].unk_08, 42 + 8, (25 + (36 * (v1)) + (16 * (5 - 4))) + 64);
ManagedSprite_SetAnim(v0->unk_10[v1].unk_08, v3[v1]);
sub_020128C4(v0->unk_10[v1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[v1].unk_0C, 36, -8);
sub_020129D0(v0->unk_10[v1].unk_0C, 1);
}
}
@ -3925,8 +3925,8 @@ static void ov62_02245AC8(UnkStruct_0208C06C *param0, int param1)
ManagedSprite_SetPositionXY(v0->unk_10[1].unk_08, 80, 232 - 64);
}
sub_020128C4(v0->unk_10[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_10[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[1].unk_0C, 36, -8);
}
static void ov62_02245B24(UnkStruct_0208C06C *param0)
@ -3945,8 +3945,8 @@ static void ov62_02245B24(UnkStruct_0208C06C *param0)
ManagedSprite_SetPositionXY(v0->unk_10[0].unk_08, 32, 232 - 64);
ManagedSprite_SetPositionXY(v0->unk_10[1].unk_08, 128, 232 - 64);
sub_020128C4(v0->unk_10[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_10[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[1].unk_0C, 36, -8);
sub_020129D0(v0->unk_10[0].unk_0C, 1);
sub_020129D0(v0->unk_10[1].unk_0C, 1);
ManagedSprite_SetAnim(v0->unk_10[0].unk_08, 0);
@ -3982,8 +3982,8 @@ static void ov62_02245C08(UnkStruct_0208C06C *param0, int param1)
ManagedSprite_SetPositionXY(v0->unk_10[0].unk_08, 80, 232);
}
sub_020128C4(v0->unk_10[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_10[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[1].unk_0C, 36, -8);
}
static void ov62_02245C64(UnkStruct_0208C06C *param0)
@ -4012,8 +4012,8 @@ static void ov62_02245C64(UnkStruct_0208C06C *param0)
ManagedSprite_SetPositionXY(v0->unk_10[0].unk_08, 32, 232);
ManagedSprite_SetPositionXY(v0->unk_10[1].unk_08, 128, 232);
sub_020128C4(v0->unk_10[0].unk_0C, 36, -8);
sub_020128C4(v0->unk_10[1].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_10[1].unk_0C, 36, -8);
sub_020129D0(v0->unk_10[0].unk_0C, 1);
sub_020129D0(v0->unk_10[1].unk_0C, 1);

View File

@ -6042,7 +6042,7 @@ static void ov65_02234E50(UnkStruct_ov65_02234E50 *param0, u32 param1)
Sprite_SetAnimFrame(param0->unk_21C[param1], 5 - 1);
if (param1 == 1) {
sub_020128C4(param0->unk_234, -18, Unk_ov65_0223893C[0]);
FontOAM_SetXY(param0->unk_234, -18, Unk_ov65_0223893C[0]);
}
}
@ -6065,7 +6065,7 @@ static BOOL ov65_02234E8C(UnkStruct_ov65_02234E50 *param0, u32 param1, u32 param
v1 = Sprite_GetAnimFrame(param0->unk_21C[param1]);
if (param1 == 1) {
sub_020128C4(param0->unk_234, -18, Unk_ov65_0223893C[v1]);
FontOAM_SetXY(param0->unk_234, -18, Unk_ov65_0223893C[v1]);
}
if (v1 >= 3) {

View File

@ -467,8 +467,8 @@ static void ov76_0223D984(FontOAM *param0, int param1, int param2)
int v1;
if (param0 != NULL) {
sub_020129A4(param0, &v0, &v1);
sub_020128C4(param0, v0 + param1, v1 + param2);
FontOAM_GetXY(param0, &v0, &v1);
FontOAM_SetXY(param0, v0 + param1, v1 + param2);
}
}

View File

@ -465,7 +465,7 @@ static void ov104_0223E29C(UnkStruct_ov104_0223DD30 *param0, UnkStruct_ov104_022
v4 = sub_020127E8(&v0);
sub_02012AC0(v4, param5);
sub_020128C4(v4, param7, param8);
FontOAM_SetXY(v4, param7, param8);
if (param10 == NULL) {
Window_Remove(&v1);

View File

@ -1526,7 +1526,7 @@ static void ov113_0225E15C(UnkStruct_ov113_0225DBCC *param0, UnkStruct_ov113_022
v4 = sub_020127E8(&v0);
sub_02012AC0(v4, param5);
sub_020128C4(v4, param7, param8);
FontOAM_SetXY(v4, param7, param8);
Window_Remove(&v1);
param1->unk_00 = v4;

View File

@ -2051,7 +2051,7 @@ void ov117_02265DB8(BgConfig *param0, SpriteManager *param1, UnkStruct_02012744
sub_02012A90(v4, param7);
}
sub_020128C4(v4, param9, param10);
FontOAM_SetXY(v4, param9, param10);
Window_Remove(&v1);
param3->unk_00 = v4;
@ -2086,9 +2086,9 @@ void ov117_02265EC8(UnkStruct_ov117_02265EC8 *param0)
v6 = v5 - v2;
}
sub_020129A4(param0->unk_04[v0][0].unk_00, &v3, &v4);
sub_020128C4(param0->unk_04[v0][0].unk_00, v3, 168 - v5);
sub_020128C4(param0->unk_04[v0][1].unk_00, v3, 168 - v6);
FontOAM_GetXY(param0->unk_04[v0][0].unk_00, &v3, &v4);
FontOAM_SetXY(param0->unk_04[v0][0].unk_00, v3, 168 - v5);
FontOAM_SetXY(param0->unk_04[v0][1].unk_00, v3, 168 - v6);
}
}
@ -2232,7 +2232,7 @@ void ov117_02266150(UnkStruct_ov117_02261280 *param0)
GF_ASSERT(param0->unk_15A8.unk_108[v1].unk_00 == NULL);
v0 = MessageLoader_GetNewStrbuf(param0->unk_80, 4 + (v4 % 10));
v4 /= 10;
sub_020129A4(param0->unk_15A8.unk_04[v1][0].unk_00, &v2, &v3);
FontOAM_GetXY(param0->unk_15A8.unk_04[v1][0].unk_00, &v2, &v3);
ov117_02265DB8(param0->unk_2C, param0->unk_28, param0->unk_90, &param0->unk_15A8.unk_108[v1], v0, FONT_SYSTEM, TEXT_COLOR(14, 15, 0), 0, 10003, v2, 168, 0, 1, 12, 2 * 1);
Strbuf_Free(v0);
}

View File

@ -21,8 +21,8 @@ typedef struct FontOAM {
UnkStruct_02012CE0_sub1 *unk_00;
int unk_04;
const Sprite *unk_08;
int unk_0C;
int unk_10;
int x;
int y;
} FontOAM;
typedef struct UnkStruct_02012744_t {
@ -140,8 +140,8 @@ FontOAM *sub_020127E8(const UnkStruct_020127E8 *param0)
GF_ASSERT(v0);
v0->unk_08 = param0->unk_10;
v0->unk_0C = param0->unk_18;
v0->unk_10 = param0->unk_1C;
v0->x = param0->unk_18;
v0->y = param0->unk_1C;
v1.unk_0C = &v1;
v1.unk_10 = &v1;
@ -185,34 +185,31 @@ int sub_02012898(const Window *param0, int param1, int heapID)
return v1;
}
void sub_020128C4(FontOAM *param0, int param1, int param2)
void FontOAM_SetXY(FontOAM *fontOAM, int x, int y)
{
int v0;
VecFx32 v1;
const VecFx32 *v2;
GF_ASSERT(fontOAM);
GF_ASSERT(param0);
fontOAM->x = x;
fontOAM->y = y;
param0->unk_0C = param1;
param0->unk_10 = param2;
x *= FX32_ONE;
y *= FX32_ONE;
param1 *= FX32_ONE;
param2 *= FX32_ONE;
if (fontOAM->unk_08) {
const VecFx32 *fontPos = Sprite_GetPosition(fontOAM->unk_08);
if (param0->unk_08) {
v2 = Sprite_GetPosition(param0->unk_08);
param1 += v2->x;
param2 += v2->y;
x += fontPos->x;
y += fontPos->y;
}
v1.z = 0;
VecFx32 spritePos;
spritePos.z = 0;
for (v0 = 0; v0 < param0->unk_04; v0++) {
v1.x = param1 + (param0->unk_00[v0].unk_04 << FX32_SHIFT);
v1.y = param2 + (param0->unk_00[v0].unk_08 << FX32_SHIFT);
for (int v0 = 0; v0 < fontOAM->unk_04; v0++) {
spritePos.x = x + (fontOAM->unk_00[v0].unk_04 << FX32_SHIFT);
spritePos.y = y + (fontOAM->unk_00[v0].unk_08 << FX32_SHIFT);
Sprite_SetPosition(param0->unk_00[v0].unk_00, &v1);
Sprite_SetPosition(fontOAM->unk_00[v0].unk_00, &spritePos);
}
}
@ -226,8 +223,8 @@ void sub_02012938(FontOAM *param0)
GF_ASSERT(param0);
if (param0->unk_08) {
v3 = param0->unk_0C << FX32_SHIFT;
v4 = param0->unk_10 << FX32_SHIFT;
v3 = param0->x << FX32_SHIFT;
v4 = param0->y << FX32_SHIFT;
v2 = Sprite_GetPosition(param0->unk_08);
v3 += v2->x;
@ -244,14 +241,14 @@ void sub_02012938(FontOAM *param0)
}
}
void sub_020129A4(const FontOAM *param0, int *param1, int *param2)
void FontOAM_GetXY(const FontOAM *fontOAM, int *x, int *y)
{
GF_ASSERT(param0);
GF_ASSERT(param1);
GF_ASSERT(param2);
GF_ASSERT(fontOAM);
GF_ASSERT(x);
GF_ASSERT(y);
*param1 = param0->unk_0C;
*param2 = param0->unk_10;
*x = fontOAM->x;
*y = fontOAM->y;
}
void sub_020129D0(FontOAM *param0, BOOL param1)
@ -364,8 +361,8 @@ FontOAM *sub_02012B60(const UnkStruct_020127E8 *param0, const UnkStruct_02012B20
GF_ASSERT(v0);
v0->unk_08 = param0->unk_10;
v0->unk_0C = param0->unk_18;
v0->unk_10 = param0->unk_1C;
v0->x = param0->unk_18;
v0->y = param0->unk_1C;
v1 = Heap_AllocAtEnd(param0->heapID, sizeof(NNSG2dImageProxy) * param1->unk_14);

View File

@ -374,7 +374,7 @@ static void sub_0208AC80(FontOAM *param0, int param1, int param2)
int v1;
if (param0 != NULL) {
sub_020128C4(param0, param1, param2);
FontOAM_SetXY(param0, param1, param2);
}
}