Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document Pokedex_Search #351

Merged
merged 3 commits into from
Jan 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions include/overlay021/ov21_021D0D80.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#include "overlay021/struct_ov21_021D0D80.h"
#include "overlay021/struct_ov21_021D0F60_decl.h"
#include "overlay021/struct_ov21_021D13FC.h"
#include "overlay021/struct_ov21_021D157C.h"
#include "overlay021/struct_ov21_021D22F8.h"
#include "overlay021/struct_ov21_021D3320.h"
#include "overlay021/struct_ov21_021D3FE0_decl.h"
Expand All @@ -22,6 +21,18 @@
#include "strbuf.h"
#include "touch_screen.h"

typedef struct PokedexLoadingScreen {
BgConfig *bgConfig;
NNSG2dScreenData *screenData;
int layer;
int topStart;
int bottomStart;
int topDist;
int bottomDist;
int counter;
int duration;
} PokedexLoadingScreen;

int ov21_021D0D80(OverlayManager *param0, int *param1);
int ov21_021D0E3C(OverlayManager *param0, int *param1);
int ov21_021D0EC8(OverlayManager *param0, int *param1);
Expand Down Expand Up @@ -51,8 +62,8 @@ void ov21_021D144C(CellActor *param0, int param1);
void ov21_021D1498(CellActor *param0, UnkStruct_ov21_021D4CA0 *param1, int param2);
void ov21_021D1524(CellActor *param0, UnkStruct_ov21_021D4CA0 *param1, int param2, int param3, int param4);
void ov21_021D154C(TouchScreenHitTable *hitTable, int param1, int param2, int param3, int param4);
void ov21_021D1558(UnkStruct_ov21_021D157C *param0, BgConfig *param1, int param2, NNSG2dScreenData *param3, int param4, int param5, int param6, int param7, int param8);
BOOL ov21_021D157C(UnkStruct_ov21_021D157C *param0);
void Pokedex_SetLoadingScreenParams(PokedexLoadingScreen *param0, BgConfig *param1, int param2, NNSG2dScreenData *param3, int param4, int param5, int param6, int param7, int param8);
BOOL Pokedex_LoadingScreenMove(PokedexLoadingScreen *param0);
void ov21_021D1650(Window *param0, int param1, int param2, int param3);
Window *ov21_021D16D8(UnkStruct_ov21_021D13FC *param0, const UnkStruct_ov21_021D3320 *param1, int param2, int param3);
Window *ov21_021D170C(UnkStruct_ov21_021D4C0C *param0, int param1, int param2);
Expand Down
26 changes: 0 additions & 26 deletions include/overlay021/ov21_021D85B0.h

This file was deleted.

35 changes: 35 additions & 0 deletions include/overlay021/pokedex_search.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#ifndef POKEPLATINUM_POKEDEX_SEARCH_H
#define POKEPLATINUM_POKEDEX_SEARCH_H

#include "overlay021/pokedex_sort.h"
#include "overlay021/struct_ov21_021D0F60_decl.h"
#include "overlay021/struct_ov21_021E68F4.h"

#include "heap.h"

enum FilterMethod {
FM_ORDER,
FM_NAME,
FM_TYPE,
FM_FORM,
MAX_FILTER_METHOD
};

void PokedexSearch_TransitionFunctions(UnkStruct_ov21_021E68F4 *param0, UnkStruct_ov21_021D0F60 *param1, enum HeapId heapID);
void PokedexSearch_FreeData(UnkStruct_ov21_021E68F4 *param0);
void PokedexSearch_SetFilterMethod(UnkStruct_ov21_021E68F4 *param0, enum FilterMethod filterMethod);
enum FilterMethod PokedexSearch_GetFilterMethod(const UnkStruct_ov21_021E68F4 *param0);
void PokedexSearch_SetSortOrder(UnkStruct_ov21_021E68F4 *param0, enum SortOrder sortOrder);
enum SortOrder PokedexSearch_GetSortOrder(const UnkStruct_ov21_021E68F4 *param0);
void PokedexSearch_SetFilterName(UnkStruct_ov21_021E68F4 *param0, enum FilterName filterName);
enum FilterName PokedexSearch_GetFilterName(const UnkStruct_ov21_021E68F4 *param0);
void PokedexSearch_SetFilterType(UnkStruct_ov21_021E68F4 *param0, enum FilterType filterType, int typeSlot);
enum FilterType PokedexSearch_GetFilterType(const UnkStruct_ov21_021E68F4 *param0, int typeSlot);
void PokedexSearch_SetFilterForm(UnkStruct_ov21_021E68F4 *param0, enum FilterForm filterForm);
enum FilterForm PokedexSearch_GetFilterForm(const UnkStruct_ov21_021E68F4 *param0);
void PokedexSearch_SetFilteredState(UnkStruct_ov21_021E68F4 *param0, BOOL applyFilter);
BOOL PokedexSearch_GetFilteredState(const UnkStruct_ov21_021E68F4 *param0);
int PokedexSearch_GetScreenState(const UnkStruct_ov21_021E68F4 *param0);
int PokedexSearch_GetScreenTimer(const UnkStruct_ov21_021E68F4 *param0);

#endif // POKEPLATINUM_POKEDEX_SEARCH_H
16 changes: 10 additions & 6 deletions include/overlay021/pokedex_sort.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ enum SortOrder {
SO_HEAVIEST,
SO_LIGHTEST,
SO_TALLEST,
SO_SMALLEST
SO_SMALLEST,
MAX_SORT_ORDER
};

enum FilterName {
Expand All @@ -27,7 +28,8 @@ enum FilterName {
FN_PQR,
FN_STU,
FN_VWX,
FN_YZ
FN_YZ,
MAX_FILTER_NAME
};

enum FilterType {
Expand All @@ -48,7 +50,8 @@ enum FilterType {
FT_PSYCHIC,
FT_ICE,
FT_DRAGON,
FT_DARK
FT_DARK,
MAX_FILTER_TYPE
};

enum FilterForm { // called form in game, but refers to body shape
Expand All @@ -66,7 +69,8 @@ enum FilterForm { // called form in game, but refers to body shape
FF_TENTACLES,
FF_FINS,
FF_HEAD,
FF_MULTIBODY
FF_MULTIBODY,
MAX_FILTER_FORM
};

void PokedexSort_PopulatePokedexStatus(UnkStruct_ov21_021D3320 *param0, UnkStruct_ov21_021D3208 *param1, enum HeapId heapID);
Expand All @@ -88,8 +92,8 @@ void ov21_021D3434(UnkStruct_ov21_021D3320 *param0, u32 param1);
u32 ov21_021D3440(const UnkStruct_ov21_021D3320 *param0);
void ov21_021D344C(UnkStruct_ov21_021D3320 *param0, u32 param1);
u32 ov21_021D3458(const UnkStruct_ov21_021D3320 *param0);
BOOL PokedexSort_Sort(UnkStruct_ov21_021D3320 *param0, int sortCategory, int firstLetterFilter, int typeFilter1, int typeFilter2, int bodyShapeFilter, int isNationalDex, enum HeapId heapID, BOOL isFiltered);
BOOL PokedexSort_SortUnfiltered(UnkStruct_ov21_021D3320 *param0, int sortOrder, int filterName, int filterType1, int filterType2, int filterForm, int isNationalDex, enum HeapId heapID);
BOOL PokedexSort_Sort(UnkStruct_ov21_021D3320 *param0, enum SortOrder sortOrder, enum FilterName filterName, enum FilterType typeFilter1, enum FilterType typeFilter2, enum FilterForm filterForm, int isNationalDex, enum HeapId heapID, BOOL isFiltered);
BOOL PokedexSort_SortUnfiltered(UnkStruct_ov21_021D3320 *param0, enum SortOrder sortOrder, enum FilterName filterName, enum FilterType filterType1, enum FilterType filterType2, enum FilterForm filterForm, int isNationalDex, enum HeapId heapID);
BOOL ov21_021D36A4(const UnkStruct_ov21_021D3320 *param0, int param1);
BOOL ov21_021D36C0(UnkStruct_ov21_021D3320 *param0, int param1);
int PokedexStatus_IsNationalDex(const UnkStruct_ov21_021D3320 *param0);
Expand Down
20 changes: 0 additions & 20 deletions include/overlay021/struct_ov21_021D157C.h

This file was deleted.

2 changes: 1 addition & 1 deletion include/overlay021/struct_ov21_021D3320.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ typedef struct {
BOOL isNationalDexUnlocked;
int numEncountered;
int numCaught;
int unk_1740;
BOOL unk_1740;
int timeOfDay;
HeightWeightData *HWData;
u32 trainerGameCode;
Expand Down
2 changes: 1 addition & 1 deletion platinum.us/main.lsf
Original file line number Diff line number Diff line change
Expand Up @@ -796,7 +796,7 @@ Overlay overlay21
Object main.nef.p/src_overlay021_pokedex_enc_data.c.o
Object main.nef.p/src_overlay021_ov21_021D5AEC.c.o
Object main.nef.p/src_overlay021_ov21_021D76B0.c.o
Object main.nef.p/src_overlay021_ov21_021D85B0.c.o
Object main.nef.p/src_overlay021_pokedex_search.c.o
Object main.nef.p/src_overlay021_ov21_021D94BC.c.o
Object main.nef.p/src_overlay021_ov21_021DC9BC.c.o
Object main.nef.p/src_overlay021_ov21_021DDD2C.c.o
Expand Down
2 changes: 1 addition & 1 deletion src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,7 @@ pokeplatinum_c = files(
'overlay021/pokedex_enc_data.c',
'overlay021/ov21_021D5AEC.c',
'overlay021/ov21_021D76B0.c',
'overlay021/ov21_021D85B0.c',
'overlay021/pokedex_search.c',
'overlay021/ov21_021D94BC.c',
'overlay021/ov21_021DC9BC.c',
'overlay021/ov21_021DDD2C.c',
Expand Down
61 changes: 30 additions & 31 deletions src/overlay021/ov21_021D0D80.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#include "overlay021/ov21_021D4C0C.h"
#include "overlay021/ov21_021D5AEC.h"
#include "overlay021/ov21_021D76B0.h"
#include "overlay021/ov21_021D85B0.h"
#include "overlay021/ov21_021D94BC.h"
#include "overlay021/ov21_021DC9BC.h"
#include "overlay021/ov21_021DDD2C.h"
Expand All @@ -32,12 +31,12 @@
#include "overlay021/ov21_021E737C.h"
#include "overlay021/ov21_021E8484.h"
#include "overlay021/pokedex_height_check.h"
#include "overlay021/pokedex_search.h"
#include "overlay021/pokedex_sort.h"
#include "overlay021/pokedex_text.h"
#include "overlay021/species_caught_status.h"
#include "overlay021/struct_ov21_021D0D80.h"
#include "overlay021/struct_ov21_021D13FC.h"
#include "overlay021/struct_ov21_021D157C.h"
#include "overlay021/struct_ov21_021D22F8.h"
#include "overlay021/struct_ov21_021D3208.h"
#include "overlay021/struct_ov21_021D3320.h"
Expand Down Expand Up @@ -247,7 +246,7 @@ static BOOL ov21_021D0F58(UnkStruct_ov21_021D0F18 *param0)

const static UnkFuncPtr_ov21_021E9B74 Unk_ov21_021E9B74[10] = {
ov21_021D5AEC,
ov21_021D85B0,
PokedexSearch_TransitionFunctions,
ov21_021DE668,
ov21_021DF734,
ov21_021E0C68,
Expand All @@ -271,7 +270,7 @@ const static UnkFuncPtr_ov21_021E9B74 Unk_ov21_021E9B34[8] = {

const static UnkFuncPtr_ov21_021E9B9C Unk_ov21_021E9B9C[10] = {
ov21_021D5B50,
ov21_021D8610,
PokedexSearch_FreeData,
ov21_021DE6C0,
ov21_021DF78C,
ov21_021E0CC0,
Expand Down Expand Up @@ -607,47 +606,47 @@ void ov21_021D154C(TouchScreenHitTable *hitTable, int param1, int param2, int pa
hitTable->rect.right = param4;
}

void ov21_021D1558(UnkStruct_ov21_021D157C *param0, BgConfig *param1, int param2, NNSG2dScreenData *param3, int param4, int param5, int param6, int param7, int param8)
void Pokedex_SetLoadingScreenParams(PokedexLoadingScreen *param0, BgConfig *bgConfig, int layer, NNSG2dScreenData *screenData, int topStart, int topEnd, int bottomStart, int bottomEnd, int duration)
{
param0->unk_00 = param1;
param0->unk_08 = param2;
param0->unk_04 = param3;
param0->unk_0C = param4;
param0->unk_14 = param5 - param4;
param0->unk_10 = param6;
param0->unk_18 = param7 - param6;
param0->unk_20 = param8;
param0->unk_1C = 0;
param0->bgConfig = bgConfig;
param0->layer = layer;
param0->screenData = screenData;
param0->topStart = topStart;
param0->topDist = topEnd - topStart;
param0->bottomStart = bottomStart;
param0->bottomDist = bottomEnd - bottomStart;
param0->duration = duration;
param0->counter = 0;
}

BOOL ov21_021D157C(UnkStruct_ov21_021D157C *param0)
BOOL Pokedex_LoadingScreenMove(PokedexLoadingScreen *loadingScreen)
{
int v0;
int v1;
int topPos;
int bottomPos;

if (param0->unk_1C <= param0->unk_20) {
Bg_FillTilemapRect(param0->unk_00, param0->unk_08, 0, 0, 0, 32, 24, 16);
if (loadingScreen->counter <= loadingScreen->duration) {
Bg_FillTilemapRect(loadingScreen->bgConfig, loadingScreen->layer, 0, 0, 0, 32, 24, 16);

v0 = (param0->unk_14 * param0->unk_1C) / param0->unk_20;
v1 = (param0->unk_18 * param0->unk_1C) / param0->unk_20;
v0 += param0->unk_0C;
v1 += param0->unk_10;
topPos = (loadingScreen->topDist * loadingScreen->counter) / loadingScreen->duration;
bottomPos = (loadingScreen->bottomDist * loadingScreen->counter) / loadingScreen->duration;
topPos += loadingScreen->topStart;
bottomPos += loadingScreen->bottomStart;

if (v0 > 0) {
Bg_CopyToTilemapRect(param0->unk_00, param0->unk_08, 0, 0, 32, v0, param0->unk_04->rawData, 0, 32 - v0, 32, 32);
if (topPos > 0) {
Bg_CopyToTilemapRect(loadingScreen->bgConfig, loadingScreen->layer, 0, 0, 32, topPos, loadingScreen->screenData->rawData, 0, 32 - topPos, 32, 32);
}

if ((32 - v1) > 0) {
Bg_CopyToTilemapRect(param0->unk_00, param0->unk_08, 0, 32 - v1, 32, v1, param0->unk_04->rawData, 0, 0, 32, 32);
if ((32 - bottomPos) > 0) {
Bg_CopyToTilemapRect(loadingScreen->bgConfig, loadingScreen->layer, 0, 32 - bottomPos, 32, bottomPos, loadingScreen->screenData->rawData, 0, 0, 32, 32);
}

Bg_ScheduleTilemapTransfer(param0->unk_00, param0->unk_08);
param0->unk_1C++;
Bg_ScheduleTilemapTransfer(loadingScreen->bgConfig, loadingScreen->layer);
loadingScreen->counter++;

return 0;
return FALSE;
}

return 1;
return TRUE;
}

void ov21_021D1650(Window *param0, int param1, int param2, int param3)
Expand Down
29 changes: 12 additions & 17 deletions src/overlay021/ov21_021D5AEC.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
#include "overlay021/species_caught_status.h"
#include "overlay021/struct_ov21_021D0F60_decl.h"
#include "overlay021/struct_ov21_021D13FC.h"
#include "overlay021/struct_ov21_021D157C.h"
#include "overlay021/struct_ov21_021D2648.h"
#include "overlay021/struct_ov21_021D4660.h"
#include "overlay021/struct_ov21_021D4CA0.h"
Expand Down Expand Up @@ -71,7 +70,7 @@ typedef struct {
CellActorResourceData unk_B4;
void *unk_D8;
NNSG2dScreenData *unk_DC;
UnkStruct_ov21_021D157C unk_E0;
PokedexLoadingScreen loadingScreen;
UnkStruct_ov21_021D2648 unk_104;
UnkStruct_ov21_021D2648 unk_124;
int unk_144;
Expand Down Expand Up @@ -1420,31 +1419,27 @@ static void ov21_021D6FB4(UnkStruct_ov21_021D71A8 *param0, UnkStruct_ov21_021D5C
}
}

ov21_021D1558(&param0->unk_E0, param1->unk_00->unk_00, 2, param0->unk_DC, v0, v1, v2, v3, v4);
Pokedex_SetLoadingScreenParams(&param0->loadingScreen, param1->unk_00->unk_00, 2, param0->unk_DC, v0, v1, v2, v3, v4);
}

static BOOL ov21_021D7044(UnkStruct_ov21_021D71A8 *param0, UnkStruct_ov21_021D5C08 *param1)
{
BOOL v0;
int v1;
BOOL moveComplete = Pokedex_LoadingScreenMove(&param0->loadingScreen);

v0 = ov21_021D157C(&param0->unk_E0);
if (moveComplete == FALSE) {
int bottomPos = (param0->loadingScreen.bottomDist * (param0->loadingScreen.counter - 1)) / param0->loadingScreen.duration;
bottomPos += param0->loadingScreen.bottomStart;
bottomPos *= 8;
bottomPos = bottomPos - (14 * 8);

if (v0 == 0) {
v1 = (param0->unk_E0.unk_18 * (param0->unk_E0.unk_1C - 1)) / param0->unk_E0.unk_20;
v1 += param0->unk_E0.unk_10;
v1 = v1;
v1 *= 8;
v1 = v1 - (14 * 8);

if (v1 < -48) {
v1 = -48;
if (bottomPos < -48) {
bottomPos = -48;
}

Bg_ScheduleScroll(param1->unk_00->unk_00, 1, 3, v1);
Bg_ScheduleScroll(param1->unk_00->unk_00, 1, 3, bottomPos);
}

return v0;
return moveComplete;
}

static void ov21_021D7094(UnkStruct_ov21_021D5C08 *param0, const UnkStruct_ov21_021D5B68 *param1, BOOL param2)
Expand Down
Loading
Loading