documentation, 3

This commit is contained in:
PikalaxALT 2024-07-05 17:48:16 -04:00
parent 4ffacbe6d1
commit e9ce2988e3
No known key found for this signature in database
GPG Key ID: 7774E96AA69E5B61
9 changed files with 176 additions and 174 deletions

Binary file not shown.

View File

@ -26,7 +26,7 @@ typedef enum NarcId
NARC_itemtool_itemdata_item_icon = 18,
NARC_a_0_1_9 = 19,
NARC_poketool_icongra_poke_icon = 20,
NARC_a_0_2_1 = 21,
NARC_graphic_plist_gra = 21,
NARC_a_0_2_2 = 22,
NARC_a_0_2_3 = 23,
NARC_a_0_2_4 = 24,

View File

@ -135,7 +135,7 @@ typedef enum PartyMonContextMenuItem {
PARTY_MON_CONTEXT_MENU_SOFTBOILED,
PARTY_MON_CONTEXT_MENU_MAX,
PARTY_MON_CONTEXT_MENU_FIELD_MOVES_BEGIN = PARTY_MON_CONTEXT_MENU_CUT,
PARTY_MON_CONTEXT_MENU_FIELD_MOVES_BEGIN = PARTY_MON_CONTEXT_MENU_CUT,PARTY_MON_CONTEXT_MENU_FIELD_MOVES_COUNT = PARTY_MON_CONTEXT_MENU_MAX - PARTY_MON_CONTEXT_MENU_FIELD_MOVES_BEGIN,
PARTY_MON_CONTEXT_MENU_NUM_STRINGS = PARTY_MON_CONTEXT_MENU_CUT + MAX_MON_MOVES,
} PartyMonContextMenuItem;
@ -372,21 +372,21 @@ typedef struct PartyMenuMonsDrawState {
s16 unk_1E; // 846
s16 unk_20; // 848
u8 filler_22[2]; // alignment padding
Sprite *unk_24; // 84C
Sprite *iconSprite; // 84C
Sprite *mainScreenIconSprite; // 850
u8 unk_2C; // 854
u8 active; // 855
} PartyMenuMonsDrawState;
typedef struct UnkPartyMenuSub_94C {
u16 unk_000[2][0x60];
u16 unk_180[2][0x60];
u8 unk_300[2];
u8 unk_302[2];
u8 unk_304;
u8 unk_305;
u8 unk_306;
} UnkPartyMenuSub_94C;
typedef struct PartyMenuSwapMonsData {
u16 bg2Tilemaps[2][0x60];
u16 bg1Tilemaps[2][0x60];
u8 slots[2];
u8 directions[2];
u8 active;
u8 state;
u8 xOffset;
} PartyMenuSwapMonsData;
struct PartyMenuStruct {
BgConfig *bgConfig;
@ -396,7 +396,7 @@ struct PartyMenuStruct {
u16 unk_314[6 * 0x10];
u16 unk_3D4[6 * 0x10];
u16 unk_494[6 * 0x10];
u16 unk_554[0x80];
u16 hpBarPalettes[0x80];
PartyMenuArgs *args; //0x654
SpriteRenderer *spriteRenderer;
SpriteGfxHandler *spriteGfxHandler;
@ -413,7 +413,7 @@ struct PartyMenuStruct {
PartyMenuContextMenuCursor *contextMenuCursor;
PartyMenuMonsDrawState monsDrawState[PARTY_SIZE]; //0x828
const UnkStruct_02020654 *unk_948;
UnkPartyMenuSub_94C unk_94C;
PartyMenuSwapMonsData swapMonsData;
int (*itemUseCallback)(PartyMenuStruct *);
int (*yesCallback)(PartyMenuStruct *); //0xc58
int (*noCallback)(PartyMenuStruct *); //0xc5c
@ -421,7 +421,7 @@ struct PartyMenuStruct {
u8 unk_C61;
u8 afterTextPrinterState;
u8 softboiledDonorSlot:6;
u8 unk_C63_6:1;
u8 secondCursorActive:1;
u8 cancelDisabled:1;
u8 textPrinterId;
u8 partyMonIndex; // 0xc65

View File

@ -3,6 +3,7 @@
#include "overlay_manager.h"
#include "pm_string.h"
#include "options.h"
extern const OVY_MGR_TEMPLATE _02102610;

View File

@ -1314,10 +1314,10 @@ static void ov84_0223F4B4(GAME_BOARD_SUB_3E8 *work) {
}
static void ov84_0223F538(GAME_BOARD_SUB_3E8 *work) {
NARC *narc = NARC_New(NARC_a_0_2_1, HEAP_ID_GAME_BOARD);
NARC *narc = NARC_New(NARC_graphic_plist_gra, HEAP_ID_GAME_BOARD);
work->resourceObj[2][GF_GFX_RES_TYPE_CHAR] = AddCharResObjFromOpenNarc(work->resourceMan[0], narc, sub_0207CA9C(), FALSE, 2, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_GAME_BOARD);
work->resourceObj[2][GF_GFX_RES_TYPE_PLTT] = AddPlttResObjFromNarc(work->resourceMan[1], NARC_a_0_2_1, sub_0207CAA0(), FALSE, 2, NNS_G2D_VRAM_TYPE_2DMAIN, 3, HEAP_ID_GAME_BOARD);
work->resourceObj[2][GF_GFX_RES_TYPE_PLTT] = AddPlttResObjFromNarc(work->resourceMan[1], NARC_graphic_plist_gra, sub_0207CAA0(), FALSE, 2, NNS_G2D_VRAM_TYPE_2DMAIN, 3, HEAP_ID_GAME_BOARD);
work->resourceObj[2][GF_GFX_RES_TYPE_CELL] = AddCellOrAnimResObjFromOpenNarc(work->resourceMan[2], narc, sub_0207CAA4(), FALSE, 2, GF_GFX_RES_TYPE_CELL, HEAP_ID_GAME_BOARD);
work->resourceObj[2][GF_GFX_RES_TYPE_ANIM] = AddCellOrAnimResObjFromOpenNarc(work->resourceMan[3], narc, sub_0207CAA8(), FALSE, 2, GF_GFX_RES_TYPE_ANIM, HEAP_ID_GAME_BOARD);

View File

@ -576,13 +576,13 @@ void PartyMenu_DrawMonHpBarOnWindow(PartyMenuStruct *partyMenu, u8 partySlot) {
return;
case 4:
case 3:
BG_LoadPlttData(1, &partyMenu->unk_554[9], 4, (window->paletteNum * 16 + 9) * sizeof(u16));
BG_LoadPlttData(1, &partyMenu->hpBarPalettes[9], 4, (window->paletteNum * 16 + 9) * sizeof(u16));
break;
case 2:
BG_LoadPlttData(1, &partyMenu->unk_554[16 + 9], 4, (window->paletteNum * 16 + 9) * sizeof(u16));
BG_LoadPlttData(1, &partyMenu->hpBarPalettes[16 + 9], 4, (window->paletteNum * 16 + 9) * sizeof(u16));
break;
case 1:
BG_LoadPlttData(1, &partyMenu->unk_554[32 + 9], 4, (window->paletteNum * 16 + 9) * sizeof(u16));
BG_LoadPlttData(1, &partyMenu->hpBarPalettes[32 + 9], 4, (window->paletteNum * 16 + 9) * sizeof(u16));
break;
}

View File

@ -28,6 +28,7 @@
#include "vram_transfer_manager.h"
#include "constants/moves.h"
#include "msgdata/msg/msg_0300.h"
#include "graphic/plist_gra.naix"
FS_EXTERN_OVERLAY(OVY_94);
@ -98,7 +99,7 @@ static u8 sub_0207B23C(PartyMenuStruct *partyMenu, u8 *buf);
static u8 sub_0207B32C(PartyMenuStruct *partyMenu, u8 *buf);
static u8 sub_0207B28C(PartyMenuStruct *partyMenu, u8 *buf);
static u8 sub_0207B2DC(PartyMenuStruct *partyMenu, u8 *buf);
static u8 sub_0207BCC0(u16 move);
static u8 MoveId_GetFieldEffectId(u16 move);
static int PartyMenu_SoftboiledTryTargetCheck(PartyMenuStruct *partyMenu);
static void sub_0207B51C(PartyMenuStruct *partyMenu, u8 selection, BOOL active);
static u8 sub_0207B600(PartyMenuStruct *partyMenu);
@ -195,7 +196,7 @@ static const UnkStruct_02020654 _021014CC[8] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
};
static const u16 sFieldMoves[16] = {
static const u16 sFieldMoves[PARTY_MON_CONTEXT_MENU_FIELD_MOVES_COUNT] = {
MOVE_CUT,
MOVE_FLY,
MOVE_SURF,
@ -230,7 +231,7 @@ static BOOL PartyMenuApp_Init(OVY_MANAGER *manager, int *pState) {
SetKeyRepeatTimers(4, 8);
CreateHeap(HEAP_ID_3, HEAP_ID_PARTY_MENU, 0x30000);
narc = NARC_New(NARC_a_0_2_1, HEAP_ID_PARTY_MENU);
narc = NARC_New(NARC_graphic_plist_gra, HEAP_ID_PARTY_MENU);
partyMenu = sub_02079BD8(manager);
BeginNormalPaletteFade(2, 3, 3, RGB_BLACK, 6, 1, HEAP_ID_PARTY_MENU);
sub_02079CE4(partyMenu);
@ -912,10 +913,10 @@ static void sub_02079A0C(GF3DVramMan *gf3dVramMan) {
}
static void sub_02079A14(PartyMenuStruct *partyMenu, NARC *narc) {
GfGfxLoader_LoadCharDataFromOpenNarc(narc, 15, partyMenu->bgConfig, GF_BG_LYR_MAIN_3, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadScrnDataFromOpenNarc(narc, 17, partyMenu->bgConfig, GF_BG_LYR_MAIN_3, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000015_NCGR, partyMenu->bgConfig, GF_BG_LYR_MAIN_3, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadScrnDataFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000017_NSCR, partyMenu->bgConfig, GF_BG_LYR_MAIN_3, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
void *nclrFile = NARC_AllocAndReadWholeMember(narc, 16, HEAP_ID_PARTY_MENU);
void *nclrFile = NARC_AllocAndReadWholeMember(narc, NARC_plist_gra_plist_gra_00000016_NCLR, HEAP_ID_PARTY_MENU);
NNSG2dPaletteData *plttData;
NNS_G2dGetUnpackedPaletteData(nclrFile, &plttData);
u16 *plttBuf = AllocFromHeap(HEAP_ID_PARTY_MENU, plttData->szByte);
@ -923,20 +924,20 @@ static void sub_02079A14(PartyMenuStruct *partyMenu, NARC *narc) {
plttBuf[0] = RGB_BLACK;
BG_LoadPlttData(GF_PAL_LOCATION_MAIN_OBJEXT, plttBuf, plttData->szByte, 0);
FreeToHeap(plttBuf);
memcpy(partyMenu->unk_554, (u8 *)plttData->pRawData + 0x60, 0x100);
memcpy(partyMenu->hpBarPalettes, (u8 *)plttData->pRawData + 0x60, 0x100);
FreeToHeap(nclrFile);
LoadFontPal1(GF_PAL_LOCATION_MAIN_BG, (enum GFPalSlotOffset)0x1A0, HEAP_ID_PARTY_MENU);
LoadFontPal1(GF_PAL_LOCATION_SUB_BG, (enum GFPalSlotOffset)0x40, HEAP_ID_PARTY_MENU);
LoadUserFrameGfx1(partyMenu->bgConfig, GF_BG_LYR_MAIN_0, 1, 14, 0, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, 26, partyMenu->bgConfig, GF_BG_LYR_MAIN_0, 10, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000026_NCGR, partyMenu->bgConfig, GF_BG_LYR_MAIN_0, 10, 0, FALSE, HEAP_ID_PARTY_MENU);
LoadUserFrameGfx2(partyMenu->bgConfig, GF_BG_LYR_MAIN_0, 42, 15, Options_GetFrame(partyMenu->args->options), HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, 3, partyMenu->bgConfig, GF_BG_LYR_SUB_0, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_GXLoadPalFromOpenNarc(narc, 4, GF_PAL_LOCATION_SUB_BG, (enum GFPalSlotOffset)0x20, 0x20, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, 12, partyMenu->bgConfig, GF_BG_LYR_SUB_1, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadScrnDataFromOpenNarc(narc, 14, partyMenu->bgConfig, GF_BG_LYR_SUB_1, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, 24, partyMenu->bgConfig, GF_BG_LYR_SUB_0, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadScrnDataFromOpenNarc(narc, 25, partyMenu->bgConfig, GF_BG_LYR_SUB_0, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_GXLoadPalFromOpenNarc(narc, 13, GF_PAL_LOCATION_SUB_BG, (enum GFPalSlotOffset)0, 0x40, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000003_NCGR, partyMenu->bgConfig, GF_BG_LYR_SUB_0, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_GXLoadPalFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000004_NCLR, GF_PAL_LOCATION_SUB_BG, (enum GFPalSlotOffset)0x20, 0x20, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000012_NCGR, partyMenu->bgConfig, GF_BG_LYR_SUB_1, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadScrnDataFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000014_NSCR, partyMenu->bgConfig, GF_BG_LYR_SUB_1, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadCharDataFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000024_NCGR, partyMenu->bgConfig, GF_BG_LYR_SUB_0, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_LoadScrnDataFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000025_NSCR, partyMenu->bgConfig, GF_BG_LYR_SUB_0, 0, 0, FALSE, HEAP_ID_PARTY_MENU);
GfGfxLoader_GXLoadPalFromOpenNarc(narc, NARC_plist_gra_plist_gra_00000013_NCLR, GF_PAL_LOCATION_SUB_BG, (enum GFPalSlotOffset)0, 0x40, HEAP_ID_PARTY_MENU);
sub_0207CAAC(HEAP_ID_PARTY_MENU, partyMenu->unk_314, partyMenu->unk_3D4, partyMenu->unk_494);
BG_SetMaskColor(GF_BG_LYR_MAIN_0, RGB_BLACK);
BG_SetMaskColor(GF_BG_LYR_SUB_0, RGB_BLACK);
@ -1262,7 +1263,7 @@ static void sub_0207A780(PartyMenuStruct *partyMenu, u8 partySlot, s16 x, s16 y)
void sub_0207A7F4(PartyMenuStruct *partyMenu, u8 partySlot) {
Pokemon *mon = Party_GetMonByIndex(partyMenu->args->party, partySlot);
u8 paletteSlot;
if (partyMenu->unk_C63_6 == TRUE && (partySlot == partyMenu->partyMonIndex || partySlot == partyMenu->softboiledDonorSlot)) {
if (partyMenu->secondCursorActive == TRUE && (partySlot == partyMenu->partyMonIndex || partySlot == partyMenu->softboiledDonorSlot)) {
paletteSlot = 7;
} else {
if (partySlot == partyMenu->partyMonIndex) {
@ -1276,7 +1277,7 @@ void sub_0207A7F4(PartyMenuStruct *partyMenu, u8 partySlot) {
paletteSlot += 1;
}
}
BG_LoadPlttData(GF_BG_LYR_MAIN_2, &partyMenu->unk_554[16 * paletteSlot], 0x10, (partySlot + 3) * 32);
BG_LoadPlttData(GF_BG_LYR_MAIN_2, &partyMenu->hpBarPalettes[16 * paletteSlot], 0x10, (partySlot + 3) * 32);
}
static BOOL sub_0207A880(PartyMenuStruct *partyMenu, u8 partySlot) {
@ -1571,35 +1572,35 @@ static u8 PartyMenu_HandleInput(PartyMenuStruct *partyMenu) {
static void sub_0207AFC4(PartyMenuStruct *partyMenu) {
ClearFrameAndWindow2(&partyMenu->windows[PARTY_MENU_WINDOW_ID_32], TRUE);
u8 *buf = AllocFromHeap(HEAP_ID_PARTY_MENU, 8);
u8 r2;
u8 numItems;
switch (partyMenu->args->context) {
case PARTY_MENU_CONTEXT_0:
r2 = sub_0207B0B0(partyMenu, buf);
numItems = sub_0207B0B0(partyMenu, buf);
break;
case PARTY_MENU_CONTEXT_2:
case PARTY_MENU_CONTEXT_17:
r2 = sub_0207B23C(partyMenu, buf);
numItems = sub_0207B23C(partyMenu, buf);
break;
case PARTY_MENU_CONTEXT_15:
r2 = sub_0207B1BC(partyMenu, buf);
numItems = sub_0207B1BC(partyMenu, buf);
break;
case PARTY_MENU_CONTEXT_18:
r2 = sub_0207B1C8(partyMenu, buf);
numItems = sub_0207B1C8(partyMenu, buf);
break;
case PARTY_MENU_CONTEXT_21:
r2 = sub_0207B32C(partyMenu, buf);
numItems = sub_0207B32C(partyMenu, buf);
break;
case PARTY_MENU_CONTEXT_22:
r2 = sub_0207B28C(partyMenu, buf);
numItems = sub_0207B28C(partyMenu, buf);
break;
case PARTY_MENU_CONTEXT_23:
r2 = sub_0207B2DC(partyMenu, buf);
numItems = sub_0207B2DC(partyMenu, buf);
break;
default:
r2 = sub_0207B200(partyMenu, buf);
numItems = sub_0207B200(partyMenu, buf);
break;
}
PartyMenu_OpenContextMenu(partyMenu, buf, r2);
PartyMenu_OpenContextMenu(partyMenu, buf, numItems);
FreeToHeapExplicit(HEAP_ID_PARTY_MENU, buf);
sub_0207D1C8(partyMenu);
PartyMenu_PrintMessageOnWindow33(partyMenu, -1, TRUE);
@ -1609,7 +1610,7 @@ static void sub_0207AFC4(PartyMenuStruct *partyMenu) {
static u8 sub_0207B0B0(PartyMenuStruct *partyMenu, u8 *buf) {
Pokemon *pokemon = Party_GetMonByIndex(partyMenu->args->party, partyMenu->partyMonIndex);
u16 move;
u8 r4 = 0;
u8 fieldMoveIndex = 0;
u8 i;
u8 count = 0;
u8 fieldEffect;
@ -1633,12 +1634,12 @@ static u8 sub_0207B0B0(PartyMenuStruct *partyMenu, u8 *buf) {
if (move == MOVE_NONE) {
break;
}
fieldEffect = sub_0207BCC0(move);
fieldEffect = MoveId_GetFieldEffectId(move);
if (fieldEffect != 0xFF) {
buf[count] = fieldEffect;
++count;
PartyMenu_ContextMenuAddFieldMove(partyMenu, move, r4);
++r4;
PartyMenu_ContextMenuAddFieldMove(partyMenu, move, fieldMoveIndex);
++fieldMoveIndex;
}
}
} else {
@ -2168,10 +2169,10 @@ static BOOL PartyMenu_Subtask_HandleContextMenuInput(PartyMenuStruct *partyMenu,
return FALSE;
}
static u8 sub_0207BCC0(u16 move) {
for (u8 i = 0; i < 16; ++i) {
static u8 MoveId_GetFieldEffectId(u16 move) {
for (u8 i = 0; i < PARTY_MON_CONTEXT_MENU_FIELD_MOVES_COUNT; ++i) {
if (move == sFieldMoves[i]) {
return i + 16;
return i + PARTY_MON_CONTEXT_MENU_FIELD_MOVES_BEGIN;
}
}
return 0xFF;
@ -2690,7 +2691,7 @@ void sub_0207CAAC(HeapID heapId, u16 *a1, u16 *a2, u16 *a3) {
const u16 *src;
u32 i;
pNscrFile = AllocAndReadWholeNarcMemberByIdPair(NARC_a_0_2_1, 22, heapId);
pNscrFile = AllocAndReadWholeNarcMemberByIdPair(NARC_graphic_plist_gra, NARC_plist_gra_plist_gra_00000022_NSCR, heapId);
NNS_G2dGetUnpackedScreenData(pNscrFile, &screenData);
src = (const u16 *)screenData->rawData;

View File

@ -322,7 +322,7 @@ int sub_0207FAD4(PartyMenuStruct *partyMenu) {
}
static void PartyMonContextMenuAction_Switch(PartyMenuStruct *partyMenu, int *pState) {
partyMenu->unk_C63_6 = 1;
partyMenu->secondCursorActive = 1;
partyMenu->softboiledDonorSlot = partyMenu->partyMonIndex;
thunk_Sprite_SetPalIndex(partyMenu->sprites[PARTY_MENU_SPRITE_ID_CURSOR], 0);
@ -340,7 +340,7 @@ static void PartyMonContextMenuAction_Switch(PartyMenuStruct *partyMenu, int *pS
}
void sub_0207FBC8(PartyMenuStruct *partyMenu) {
partyMenu->unk_C63_6 = 0;
partyMenu->secondCursorActive = 0;
Set2dSpriteVisibleFlag(partyMenu->sprites[PARTY_MENU_SPRITE_ID_SWITCH_MON_CURSOR], FALSE);
if (partyMenu->partyMonIndex < PARTY_SIZE) {
sub_0207A7F4(partyMenu, partyMenu->partyMonIndex);
@ -358,83 +358,83 @@ void sub_0207FC1C(PartyMenuStruct *partyMenu) {
s8 sp4;
s8 sp0;
u16 i;
partyMenu->unk_94C.unk_300[0] = partyMenu->partyMonIndex;
partyMenu->unk_94C.unk_300[1] = partyMenu->softboiledDonorSlot;
partyMenu->unk_94C.unk_304 = 1;
partyMenu->unk_94C.unk_306 = 0;
partyMenu->unk_94C.unk_305 = 0;
if (partyMenu->unk_94C.unk_300[0] & 1) {
partyMenu->unk_94C.unk_302[0] = 1;
partyMenu->swapMonsData.slots[0] = partyMenu->partyMonIndex;
partyMenu->swapMonsData.slots[1] = partyMenu->softboiledDonorSlot;
partyMenu->swapMonsData.active = 1;
partyMenu->swapMonsData.xOffset = 0;
partyMenu->swapMonsData.state = 0;
if (partyMenu->swapMonsData.slots[0] & 1) {
partyMenu->swapMonsData.directions[0] = 1;
} else {
partyMenu->unk_94C.unk_302[0] = 0;
partyMenu->swapMonsData.directions[0] = 0;
}
if (partyMenu->unk_94C.unk_300[1] & 1) {
partyMenu->unk_94C.unk_302[1] = 1;
if (partyMenu->swapMonsData.slots[1] & 1) {
partyMenu->swapMonsData.directions[1] = 1;
} else {
partyMenu->unk_94C.unk_302[1] = 0;
partyMenu->swapMonsData.directions[1] = 0;
}
bg2Tilemap = GetBgTilemapBuffer(partyMenu->bgConfig, GF_BG_LYR_MAIN_2);
bg1Tilemap = GetBgTilemapBuffer(partyMenu->bgConfig, GF_BG_LYR_MAIN_1);
spC = partyMenu->monsDrawState[partyMenu->unk_94C.unk_300[0]].unk_15;
sp8 = partyMenu->monsDrawState[partyMenu->unk_94C.unk_300[0]].unk_14;
sp4 = partyMenu->monsDrawState[partyMenu->unk_94C.unk_300[1]].unk_15;
sp0 = partyMenu->monsDrawState[partyMenu->unk_94C.unk_300[1]].unk_14;
spC = partyMenu->monsDrawState[partyMenu->swapMonsData.slots[0]].unk_15;
sp8 = partyMenu->monsDrawState[partyMenu->swapMonsData.slots[0]].unk_14;
sp4 = partyMenu->monsDrawState[partyMenu->swapMonsData.slots[1]].unk_15;
sp0 = partyMenu->monsDrawState[partyMenu->swapMonsData.slots[1]].unk_14;
for (i = 0; i < PARTY_SIZE; ++i) {
memcpy(&partyMenu->unk_94C.unk_000[0][i * 16], &bg2Tilemap[sp8 + (spC + i) * 32], 0x20);
memcpy(&partyMenu->unk_94C.unk_180[0][i * 16], &bg1Tilemap[sp8 + (spC + i) * 32], 0x20);
memcpy(&partyMenu->unk_94C.unk_000[1][i * 16], &bg2Tilemap[sp0 + (sp4 + i) * 32], 0x20);
memcpy(&partyMenu->unk_94C.unk_180[1][i * 16], &bg1Tilemap[sp0 + (sp4 + i) * 32], 0x20);
memcpy(&partyMenu->swapMonsData.bg2Tilemaps[0][i * 16], &bg2Tilemap[sp8 + (spC + i) * 32], 0x20);
memcpy(&partyMenu->swapMonsData.bg1Tilemaps[0][i * 16], &bg1Tilemap[sp8 + (spC + i) * 32], 0x20);
memcpy(&partyMenu->swapMonsData.bg2Tilemaps[1][i * 16], &bg2Tilemap[sp0 + (sp4 + i) * 32], 0x20);
memcpy(&partyMenu->swapMonsData.bg1Tilemaps[1][i * 16], &bg1Tilemap[sp0 + (sp4 + i) * 32], 0x20);
}
Set2dSpriteVisibleFlag(partyMenu->sprites[PARTY_MENU_SPRITE_ID_CURSOR], FALSE);
Set2dSpriteVisibleFlag(partyMenu->sprites[PARTY_MENU_SPRITE_ID_SWITCH_MON_CURSOR], FALSE);
}
BOOL sub_0207FD6C(PartyMenuStruct *partyMenu) {
UnkPartyMenuSub_94C *r4 = &partyMenu->unk_94C;
PartyMenuSwapMonsData *r4 = &partyMenu->swapMonsData;
switch (r4->unk_305) {
switch (r4->state) {
case 0:
PlaySE(SEQ_SE_DP_POKELIST_001);
PartyMenu_SetTopScreenSelectionPanelVisibility(partyMenu, FALSE);
r4->unk_305 = 1;
r4->state = 1;
break;
case 1:
++r4->unk_306;
++r4->xOffset;
PartyMenu_SwapMonsPanelsStep(partyMenu, 0);
PartyMenu_SwapMonsPanelsStep(partyMenu, 1);
PartyMenu_SwapMonsSpritesStep(partyMenu, 0, r4->unk_302[0]);
PartyMenu_SwapMonsSpritesStep(partyMenu, 1, r4->unk_302[1]);
PartyMenu_SwapMonsSpritesStep(partyMenu, 0, r4->directions[0]);
PartyMenu_SwapMonsSpritesStep(partyMenu, 1, r4->directions[1]);
ScheduleBgTilemapBufferTransfer(partyMenu->bgConfig, GF_BG_LYR_MAIN_2);
ScheduleBgTilemapBufferTransfer(partyMenu->bgConfig, GF_BG_LYR_MAIN_1);
if (r4->unk_306 == 16) {
r4->unk_305 = 2;
if (r4->xOffset == 16) {
r4->state = 2;
}
break;
case 2:
PartyMenu_SwapMonsData(partyMenu);
PlaySE(SEQ_SE_DP_POKELIST_001);
r4->unk_305 = 3;
r4->state = 3;
break;
case 3:
--r4->unk_306;
--r4->xOffset;
PartyMenu_SwapMonsPanelsStep(partyMenu, 0);
PartyMenu_SwapMonsPanelsStep(partyMenu, 1);
PartyMenu_SwapMonsSpritesStep(partyMenu, 0, r4->unk_302[0] ^ 1);
PartyMenu_SwapMonsSpritesStep(partyMenu, 1, r4->unk_302[1] ^ 1);
PartyMenu_SwapMonsSpritesStep(partyMenu, 0, r4->directions[0] ^ 1);
PartyMenu_SwapMonsSpritesStep(partyMenu, 1, r4->directions[1] ^ 1);
ScheduleBgTilemapBufferTransfer(partyMenu->bgConfig, GF_BG_LYR_MAIN_2);
ScheduleBgTilemapBufferTransfer(partyMenu->bgConfig, GF_BG_LYR_MAIN_1);
if (r4->unk_306 == 0) {
r4->unk_305 = 4;
if (r4->xOffset == 0) {
r4->state = 4;
}
break;
case 4:
Party_SwapSlots(partyMenu->args->party, r4->unk_300[0], r4->unk_300[1]);
Party_SwapSlots(partyMenu->args->party, r4->slots[0], r4->slots[1]);
Set2dSpriteVisibleFlag(partyMenu->sprites[PARTY_MENU_SPRITE_ID_CURSOR], TRUE);
r4->unk_304 = 0;
partyMenu->unk_C63_6 = 0;
r4->active = 0;
partyMenu->secondCursorActive = 0;
sub_0207A7F4(partyMenu, partyMenu->partyMonIndex);
sub_0207A7F4(partyMenu, partyMenu->softboiledDonorSlot);
PartyMenu_PrintMessageOnWindow32(partyMenu, msg_0300_00029, FALSE);
@ -445,105 +445,105 @@ BOOL sub_0207FD6C(PartyMenuStruct *partyMenu) {
}
static void PartyMenu_SwapMonsPanelsStep(PartyMenuStruct *partyMenu, u8 slot) {
UnkPartyMenuSub_94C *r4 = &partyMenu->unk_94C;
s8 x = partyMenu->monsDrawState[r4->unk_300[slot]].unk_14;
s8 y = partyMenu->monsDrawState[r4->unk_300[slot]].unk_15;
PartyMenuSwapMonsData *r4 = &partyMenu->swapMonsData;
s8 x = partyMenu->monsDrawState[r4->slots[slot]].unk_14;
s8 y = partyMenu->monsDrawState[r4->slots[slot]].unk_15;
FillBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_2, 0, x, y, 16, 6, TILEMAP_FILL_KEEP_PAL);
FillBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_1, 0, x, y, 16, 6, TILEMAP_FILL_KEEP_PAL);
if (r4->unk_302[slot] == 0) {
CopyToBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_2, x, y, 16 - r4->unk_306, 6, r4->unk_000[slot], r4->unk_306, 0, 16, 6);
CopyToBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_1, x, y, 16 - r4->unk_306, 6, r4->unk_180[slot], r4->unk_306, 0, 16, 6);
if (r4->directions[slot] == 0) {
CopyToBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_2, x, y, 16 - r4->xOffset, 6, r4->bg2Tilemaps[slot], r4->xOffset, 0, 16, 6);
CopyToBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_1, x, y, 16 - r4->xOffset, 6, r4->bg1Tilemaps[slot], r4->xOffset, 0, 16, 6);
} else {
CopyToBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_2, x + r4->unk_306, y, 16 - r4->unk_306, 6, r4->unk_000[slot], 0, 0, 16, 6);
CopyToBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_1, x + r4->unk_306, y, 16 - r4->unk_306, 6, r4->unk_180[slot], 0, 0, 16, 6);
CopyToBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_2, x + r4->xOffset, y, 16 - r4->xOffset, 6, r4->bg2Tilemaps[slot], 0, 0, 16, 6);
CopyToBgTilemapRect(partyMenu->bgConfig, GF_BG_LYR_MAIN_1, x + r4->xOffset, y, 16 - r4->xOffset, 6, r4->bg1Tilemaps[slot], 0, 0, 16, 6);
}
}
static void PartyMenu_SwapMonsSpritesStep(PartyMenuStruct *partyMenu, u8 slot, u8 direction) {
UnkPartyMenuSub_94C *r4 = &partyMenu->unk_94C;
PartyMenuSwapMonsData *r4 = &partyMenu->swapMonsData;
s16 x, y;
Sprite_GetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_BALL + r4->unk_300[slot]], &x, &y);
Sprite_GetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_BALL + r4->slots[slot]], &x, &y);
if (direction == 0) {
partyMenu->monsDrawState[r4->unk_300[slot]].unk_16 -= 8;
partyMenu->monsDrawState[r4->unk_300[slot]].unk_1A -= 8;
partyMenu->monsDrawState[r4->unk_300[slot]].unk_1E -= 8;
partyMenu->monsDrawState[r4->slots[slot]].unk_16 -= 8;
partyMenu->monsDrawState[r4->slots[slot]].unk_1A -= 8;
partyMenu->monsDrawState[r4->slots[slot]].unk_1E -= 8;
x -= 8;
} else {
partyMenu->monsDrawState[r4->unk_300[slot]].unk_16 += 8;
partyMenu->monsDrawState[r4->unk_300[slot]].unk_1A += 8;
partyMenu->monsDrawState[r4->unk_300[slot]].unk_1E += 8;
partyMenu->monsDrawState[r4->slots[slot]].unk_16 += 8;
partyMenu->monsDrawState[r4->slots[slot]].unk_1A += 8;
partyMenu->monsDrawState[r4->slots[slot]].unk_1E += 8;
x += 8;
}
Sprite_SetPositionXY(partyMenu->monsDrawState[r4->unk_300[slot]].unk_24, partyMenu->monsDrawState[r4->unk_300[slot]].unk_16, partyMenu->monsDrawState[r4->unk_300[slot]].unk_18);
Sprite_SetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_10 + r4->unk_300[slot]], partyMenu->monsDrawState[r4->unk_300[slot]].unk_1A, partyMenu->monsDrawState[r4->unk_300[slot]].unk_1C);
Sprite_SetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_HELD_ITEM_ICON + r4->unk_300[slot]], partyMenu->monsDrawState[r4->unk_300[slot]].unk_1E, partyMenu->monsDrawState[r4->unk_300[slot]].unk_20);
Sprite_SetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_CAPSULE_ICON + r4->unk_300[slot]], partyMenu->monsDrawState[r4->unk_300[slot]].unk_1E + 8, partyMenu->monsDrawState[r4->unk_300[slot]].unk_20);
Sprite_SetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_BALL + r4->unk_300[slot]], x, y);
Sprite_SetPositionXY(partyMenu->monsDrawState[r4->slots[slot]].iconSprite, partyMenu->monsDrawState[r4->slots[slot]].unk_16, partyMenu->monsDrawState[r4->slots[slot]].unk_18);
Sprite_SetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_10 + r4->slots[slot]], partyMenu->monsDrawState[r4->slots[slot]].unk_1A, partyMenu->monsDrawState[r4->slots[slot]].unk_1C);
Sprite_SetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_HELD_ITEM_ICON + r4->slots[slot]], partyMenu->monsDrawState[r4->slots[slot]].unk_1E, partyMenu->monsDrawState[r4->slots[slot]].unk_20);
Sprite_SetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_CAPSULE_ICON + r4->slots[slot]], partyMenu->monsDrawState[r4->slots[slot]].unk_1E + 8, partyMenu->monsDrawState[r4->slots[slot]].unk_20);
Sprite_SetPositionXY(partyMenu->sprites[PARTY_MENU_SPRITE_ID_BALL + r4->slots[slot]], x, y);
}
static void PartyMenu_SwapMonsData(PartyMenuStruct *partyMenu) {
UnkPartyMenuSub_94C *r4 = &partyMenu->unk_94C;
PartyMenuSwapMonsData *r4 = &partyMenu->swapMonsData;
PartyMenuMonsDrawState *monBuf;
s16 pos;
monBuf = AllocFromHeap(HEAP_ID_PARTY_MENU, sizeof(PartyMenuMonsDrawState));
*monBuf = partyMenu->monsDrawState[r4->unk_300[0]];
partyMenu->monsDrawState[r4->unk_300[0]] = partyMenu->monsDrawState[r4->unk_300[1]];
partyMenu->monsDrawState[r4->unk_300[1]] = *monBuf;
*monBuf = partyMenu->monsDrawState[r4->slots[0]];
partyMenu->monsDrawState[r4->slots[0]] = partyMenu->monsDrawState[r4->slots[1]];
partyMenu->monsDrawState[r4->slots[1]] = *monBuf;
FreeToHeapExplicit(HEAP_ID_PARTY_MENU, monBuf);
pos = partyMenu->monsDrawState[r4->unk_300[0]].unk_16;
partyMenu->monsDrawState[r4->unk_300[0]].unk_16 = partyMenu->monsDrawState[r4->unk_300[1]].unk_16;
partyMenu->monsDrawState[r4->unk_300[1]].unk_16 = pos;
pos = partyMenu->monsDrawState[r4->unk_300[0]].unk_18;
partyMenu->monsDrawState[r4->unk_300[0]].unk_18 = partyMenu->monsDrawState[r4->unk_300[1]].unk_18;
partyMenu->monsDrawState[r4->unk_300[1]].unk_18 = pos;
pos = partyMenu->monsDrawState[r4->slots[0]].unk_16;
partyMenu->monsDrawState[r4->slots[0]].unk_16 = partyMenu->monsDrawState[r4->slots[1]].unk_16;
partyMenu->monsDrawState[r4->slots[1]].unk_16 = pos;
pos = partyMenu->monsDrawState[r4->slots[0]].unk_18;
partyMenu->monsDrawState[r4->slots[0]].unk_18 = partyMenu->monsDrawState[r4->slots[1]].unk_18;
partyMenu->monsDrawState[r4->slots[1]].unk_18 = pos;
pos = partyMenu->monsDrawState[r4->unk_300[0]].unk_1A;
partyMenu->monsDrawState[r4->unk_300[0]].unk_1A = partyMenu->monsDrawState[r4->unk_300[1]].unk_1A;
partyMenu->monsDrawState[r4->unk_300[1]].unk_1A = pos;
pos = partyMenu->monsDrawState[r4->unk_300[0]].unk_1C;
partyMenu->monsDrawState[r4->unk_300[0]].unk_1C = partyMenu->monsDrawState[r4->unk_300[1]].unk_1C;
partyMenu->monsDrawState[r4->unk_300[1]].unk_1C = pos;
pos = partyMenu->monsDrawState[r4->slots[0]].unk_1A;
partyMenu->monsDrawState[r4->slots[0]].unk_1A = partyMenu->monsDrawState[r4->slots[1]].unk_1A;
partyMenu->monsDrawState[r4->slots[1]].unk_1A = pos;
pos = partyMenu->monsDrawState[r4->slots[0]].unk_1C;
partyMenu->monsDrawState[r4->slots[0]].unk_1C = partyMenu->monsDrawState[r4->slots[1]].unk_1C;
partyMenu->monsDrawState[r4->slots[1]].unk_1C = pos;
pos = partyMenu->monsDrawState[r4->unk_300[0]].unk_1E;
partyMenu->monsDrawState[r4->unk_300[0]].unk_1E = partyMenu->monsDrawState[r4->unk_300[1]].unk_1E;
partyMenu->monsDrawState[r4->unk_300[1]].unk_1E = pos;
pos = partyMenu->monsDrawState[r4->unk_300[0]].unk_20;
partyMenu->monsDrawState[r4->unk_300[0]].unk_20 = partyMenu->monsDrawState[r4->unk_300[1]].unk_20;
partyMenu->monsDrawState[r4->unk_300[1]].unk_20 = pos;
pos = partyMenu->monsDrawState[r4->slots[0]].unk_1E;
partyMenu->monsDrawState[r4->slots[0]].unk_1E = partyMenu->monsDrawState[r4->slots[1]].unk_1E;
partyMenu->monsDrawState[r4->slots[1]].unk_1E = pos;
pos = partyMenu->monsDrawState[r4->slots[0]].unk_20;
partyMenu->monsDrawState[r4->slots[0]].unk_20 = partyMenu->monsDrawState[r4->slots[1]].unk_20;
partyMenu->monsDrawState[r4->slots[1]].unk_20 = pos;
pos = partyMenu->monsDrawState[r4->unk_300[0]].unk_14;
partyMenu->monsDrawState[r4->unk_300[0]].unk_14 = partyMenu->monsDrawState[r4->unk_300[1]].unk_14;
partyMenu->monsDrawState[r4->unk_300[1]].unk_14 = pos;
pos = partyMenu->monsDrawState[r4->unk_300[0]].unk_15;
partyMenu->monsDrawState[r4->unk_300[0]].unk_15 = partyMenu->monsDrawState[r4->unk_300[1]].unk_15;
partyMenu->monsDrawState[r4->unk_300[1]].unk_15 = pos;
pos = partyMenu->monsDrawState[r4->slots[0]].unk_14;
partyMenu->monsDrawState[r4->slots[0]].unk_14 = partyMenu->monsDrawState[r4->slots[1]].unk_14;
partyMenu->monsDrawState[r4->slots[1]].unk_14 = pos;
pos = partyMenu->monsDrawState[r4->slots[0]].unk_15;
partyMenu->monsDrawState[r4->slots[0]].unk_15 = partyMenu->monsDrawState[r4->slots[1]].unk_15;
partyMenu->monsDrawState[r4->slots[1]].unk_15 = pos;
sub_0207D5DC(partyMenu, r4->unk_300[0]);
sub_0207D5DC(partyMenu, r4->unk_300[1]);
PartyMenu_CommitPartyMonPanelWindowsToVram_NotInVBlank(partyMenu, r4->unk_300[0]);
PartyMenu_CommitPartyMonPanelWindowsToVram_NotInVBlank(partyMenu, r4->unk_300[1]);
sub_0207D5DC(partyMenu, r4->slots[0]);
sub_0207D5DC(partyMenu, r4->slots[1]);
PartyMenu_CommitPartyMonPanelWindowsToVram_NotInVBlank(partyMenu, r4->slots[0]);
PartyMenu_CommitPartyMonPanelWindowsToVram_NotInVBlank(partyMenu, r4->slots[1]);
PartyMenu_RedrawMonHpBarAfterSwap(partyMenu, 0);
PartyMenu_RedrawMonHpBarAfterSwap(partyMenu, 1);
PartyMenu_DrawMonStatusIcon(partyMenu, r4->unk_300[0], partyMenu->monsDrawState[r4->unk_300[0]].status);
PartyMenu_DrawMonStatusIcon(partyMenu, r4->unk_300[1], partyMenu->monsDrawState[r4->unk_300[1]].status);
PartyMenu_DrawMonHeldItemIcon(partyMenu, r4->unk_300[0], partyMenu->monsDrawState[r4->unk_300[0]].heldItem);
PartyMenu_DrawMonHeldItemIcon(partyMenu, r4->unk_300[1], partyMenu->monsDrawState[r4->unk_300[1]].heldItem);
PartyMenu_DrawMonCapsuleIcon(partyMenu, r4->unk_300[0]);
PartyMenu_DrawMonCapsuleIcon(partyMenu, r4->unk_300[1]);
PartyMenu_DrawMonStatusIcon(partyMenu, r4->slots[0], partyMenu->monsDrawState[r4->slots[0]].status);
PartyMenu_DrawMonStatusIcon(partyMenu, r4->slots[1], partyMenu->monsDrawState[r4->slots[1]].status);
PartyMenu_DrawMonHeldItemIcon(partyMenu, r4->slots[0], partyMenu->monsDrawState[r4->slots[0]].heldItem);
PartyMenu_DrawMonHeldItemIcon(partyMenu, r4->slots[1], partyMenu->monsDrawState[r4->slots[1]].heldItem);
PartyMenu_DrawMonCapsuleIcon(partyMenu, r4->slots[0]);
PartyMenu_DrawMonCapsuleIcon(partyMenu, r4->slots[1]);
}
static void PartyMenu_RedrawMonHpBarAfterSwap(PartyMenuStruct *partyMenu, u8 slot) {
UnkPartyMenuSub_94C *r4 = &partyMenu->unk_94C;
u16 *r5 = r4->unk_000[slot];
PartyMenuSwapMonsData *r4 = &partyMenu->swapMonsData;
u16 *r5 = r4->bg2Tilemaps[slot];
const u16 *r3 = sub_0207A16C(partyMenu);
u16 color;
u16 i;
if (partyMenu->monsDrawState[r4->unk_300[slot]].isEgg == TRUE) {
if (partyMenu->monsDrawState[r4->slots[slot]].isEgg == TRUE) {
for (i = 0; i < 9; ++i) {
color = r5[0x36 + i] & 0xF000;
r5[0x36 + i] = color | 0x04B;
@ -806,7 +806,7 @@ static int sub_02080A58(PartyMenuStruct *partyMenu) {
PartyMenu_PrintMessageOnWindow34(partyMenu, msg_0300_00127, TRUE);partyMenu->afterTextPrinterState = PARTY_MENU_STATE_3;
return PARTY_MENU_STATE_WAIT_TEXT_PRINTER;
}
partyMenu->unk_C63_6 = 1;
partyMenu->secondCursorActive = 1;
partyMenu->softboiledDonorSlot = partyMenu->partyMonIndex;
thunk_Sprite_SetPalIndex(partyMenu->sprites[PARTY_MENU_SPRITE_ID_CURSOR], 0);
s16 x, y;

View File

@ -6,8 +6,8 @@
#include "vram_transfer_manager.h"
#include "data/resdat.naix"
void sub_0207F0FC(Sprite *sprite, u8 seqNo);
int sub_0207F11C(PartyMenuMonsDrawState *monDraw);
static void sub_0207F0FC(Sprite *sprite, u8 seqNo);
static int sub_0207F11C(PartyMenuMonsDrawState *monDraw);
static const UnkStruct_0200D2B4 sSpriteTemplates[24] = {
{
@ -340,7 +340,7 @@ void sub_0207EBE4(PartyMenuStruct *partyMenu, u8 partySlot, u16 x, u16 y, NARC *
sp1C.unk_1C = 0;
sp1C.unk_20 = 0;
sp1C.unk_24 = 0;
partyMenu->monsDrawState[partySlot].unk_24 = SpriteRenderer_CreateSprite(partyMenu->spriteRenderer, partyMenu->spriteGfxHandler, &sp1C);
partyMenu->monsDrawState[partySlot].iconSprite = SpriteRenderer_CreateSprite(partyMenu->spriteRenderer, partyMenu->spriteGfxHandler, &sp1C);
sp1C.whichScreen = NNS_G2D_VRAM_TYPE_2DMAIN;
sp1C.unk_10 = GetMonIconPaletteEx(partyMenu->monsDrawState[partySlot].species, partyMenu->monsDrawState[partySlot].form, isEgg) + 1;
sp1C.x = x;
@ -362,7 +362,7 @@ void sub_0207ECE0(PartyMenuStruct *partyMenu, u8 partySlot) {
species = GetMonData(mon, MON_DATA_SPECIES, NULL);
form = GetMonData(mon, MON_DATA_FORM, NULL);
narc = NARC_New(NARC_poketool_icongra_poke_icon, HEAP_ID_PARTY_MENU);
imageLocation = NNS_G2dGetImageLocation(Sprite_GetImageProxy(partyMenu->monsDrawState[partySlot].unk_24), NNS_G2D_VRAM_TYPE_2DMAIN);
imageLocation = NNS_G2dGetImageLocation(Sprite_GetImageProxy(partyMenu->monsDrawState[partySlot].iconSprite), NNS_G2D_VRAM_TYPE_2DMAIN);
ncgrFile = GfGfxLoader_LoadFromOpenNarc(narc, Pokemon_GetIconNaix(mon), FALSE, HEAP_ID_PARTY_MENU, TRUE);
if (NNS_G2dGetUnpackedCharacterData(ncgrFile, &pCharData)) {
DC_FlushRange(pCharData->pRawData, pCharData->szByte);
@ -372,7 +372,7 @@ void sub_0207ECE0(PartyMenuStruct *partyMenu, u8 partySlot) {
GXS_LoadOBJ(pCharData->pRawData, subImageLocation, pCharData->szByte);
}
FreeToHeap(ncgrFile);
thunk_Sprite_SetPalIndex(partyMenu->monsDrawState[partySlot].unk_24, GetMonIconPaletteEx(species, form, FALSE) + 3);
thunk_Sprite_SetPalIndex(partyMenu->monsDrawState[partySlot].iconSprite, GetMonIconPaletteEx(species, form, FALSE) + 3);
thunk_Sprite_SetPalIndex(partyMenu->monsDrawState[partySlot].mainScreenIconSprite, GetMonIconPaletteEx(species, form, FALSE) + 1);
NARC_Delete(narc);
}
@ -476,14 +476,14 @@ void PartyMenu_DrawMonCapsuleIcon(PartyMenuStruct *partyMenu, u8 partySlot) {
}
}
void sub_0207F0FC(Sprite *sprite, u8 seqNo) {
static void sub_0207F0FC(Sprite *sprite, u8 seqNo) {
if (seqNo != Get2dSpriteCurrentAnimSeqNo(sprite)) {
Sprite_SetAnimCtrlCurrentFrame(sprite, 0);
Set2dSpriteAnimSeqNo(sprite, seqNo);
}
}
int sub_0207F11C(PartyMenuMonsDrawState *monDraw) {
static int sub_0207F11C(PartyMenuMonsDrawState *monDraw) {
if (monDraw->hp == 0) {
return 0;
}
@ -512,22 +512,22 @@ void sub_0207F178(PartyMenuStruct *partyMenu) {
for (i = 0; i < 6; ++i) {
monDraw = &partyMenu->monsDrawState[i];
if (monDraw->active) {
int r7;
if (partyMenu->unk_94C.unk_304 == 1 && (partyMenu->unk_94C.unk_300[0] == i || partyMenu->unk_94C.unk_300[1] == i)) {
r7 = 0;
int animSeqNo;
if (partyMenu->swapMonsData.active == 1 && (partyMenu->swapMonsData.slots[0] == i || partyMenu->swapMonsData.slots[1] == i)) {
animSeqNo = 0;
} else {
r7 = sub_0207F11C(monDraw);
animSeqNo = sub_0207F11C(monDraw);
}
sub_0207F0FC(monDraw->unk_24, r7);
Sprite_TickCellOrMulticellAnimation(monDraw->unk_24, FX32_ONE);
if (partyMenu->partyMonIndex == i && r7 != 0 && r7 != 5) {
if (Sprite_GetAnimCtrlCurrentFrame(monDraw->unk_24) == 0) {
Sprite_SetPositionXY(monDraw->unk_24, monDraw->unk_16, monDraw->unk_18 - 3);
sub_0207F0FC(monDraw->iconSprite, animSeqNo);
Sprite_TickCellOrMulticellAnimation(monDraw->iconSprite, FX32_ONE);
if (partyMenu->partyMonIndex == i && animSeqNo != 0 && animSeqNo != 5) {
if (Sprite_GetAnimCtrlCurrentFrame(monDraw->iconSprite) == 0) {
Sprite_SetPositionXY(monDraw->iconSprite, monDraw->unk_16, monDraw->unk_18 - 3);
} else {
Sprite_SetPositionXY(monDraw->unk_24, monDraw->unk_16, monDraw->unk_18 + 1);
Sprite_SetPositionXY(monDraw->iconSprite, monDraw->unk_16, monDraw->unk_18 + 1);
}
} else {
Sprite_SetPositionXY(monDraw->unk_24, monDraw->unk_16, monDraw->unk_18);
Sprite_SetPositionXY(monDraw->iconSprite, monDraw->unk_16, monDraw->unk_18);
}
}
}