Document the bag interface overlay (#679)

This commit is contained in:
Rachel 2025-09-08 17:29:06 -07:00 committed by GitHub
commit 40518a2a61
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
79 changed files with 7567 additions and 4829 deletions

View File

@ -0,0 +1,30 @@
#ifndef POKEPLATINUM_APPLICATIONS_BAG_APPLICATION_H
#define POKEPLATINUM_APPLICATIONS_BAG_APPLICATION_H
#include "overlay_manager.h"
enum BagApplicationMode {
BAG_MODE_NORMAL = 0,
BAG_MODE_GIVE_TO_MON,
BAG_MODE_SELL_ITEMS,
BAG_MODE_GARDENING,
BAG_MODE_POFFIN_SINGLEPLAYER,
BAG_MODE_POFFIN_MULTIPLAYER,
};
enum BagApplicationExitCode {
BAG_EXIT_CODE_USE_ITEM = 0,
BAG_EXIT_CODE_SHOW_BERRY_DATA,
BAG_EXIT_CODE_GIVE_ITEM,
BAG_EXIT_CODE_POFFIN_BERRY_CHOSEN,
BAG_EXIT_CODE_GIVE_FROM_MON_MENU,
BAG_EXIT_CODE_DONE,
};
int BagApplication_Init(ApplicationManager *appMan, int *state);
int BagApplication_Main(ApplicationManager *appMan, int *state);
int BagApplication_Exit(ApplicationManager *appMan, int *state);
extern const ApplicationManagerTemplate gBagApplicationTemplate;
#endif // POKEPLATINUM_APPLICATIONS_BAG_APPLICATION_H

View File

@ -0,0 +1,165 @@
#ifndef POKEPLATINUM_APPLICATIONS_BAG_DEFS_H
#define POKEPLATINUM_APPLICATIONS_BAG_DEFS_H
#include "bag.h"
#include "bag_context.h"
#include "bg_window.h"
#include "font_special_chars.h"
#include "game_options.h"
#include "list_menu.h"
#include "menu.h"
#include "message.h"
#include "narc.h"
#include "sprite_system.h"
#include "strbuf.h"
#include "string_list.h"
#include "string_template.h"
#include "trainer_info.h"
#define BAG_UI_NUM_VISIBLE_ITEMS 9
enum BagUISprite {
BAG_SPRITE_BAG = 0,
BAG_SPRITE_POCKET_HIGHLIGHT,
BAG_SPRITE_POCKET_SELECTOR_LEFT_ARROW,
BAG_SPRITE_POCKET_SELECTOR_RIGHT_ARROW,
BAG_SPRITE_ITEM_HIGHLIGHT,
BAG_SPRITE_MOVING_ITEM_POS_BAR,
BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE,
BAG_SPRITE_ITEM,
BAG_SPRITE_ITEM_COUNT_ARROW_UP,
BAG_SPRITE_ITEM_COUNT_ARROW_DOWN,
BAG_SPRITE_MOVE_TYPE,
BAG_SPRITE_MOVE_CATEGORY,
NUM_BAG_UI_SPRITES,
};
enum BagUIItemCountArrowsPosition {
BAG_ITEM_COUNT_ARROWS_POS_TRASH = 0,
BAG_ITEM_COUNT_ARROWS_POS_SELL,
};
enum BagUIWindow {
BAG_UI_WINDOW_ITEM_LIST = 0,
BAG_UI_WINDOW_ITEM_DESCRIPTION,
BAG_UI_WINDOW_POCKET_NAMES,
BAG_UI_WINDOW_MSG_BOX,
BAG_UI_WINDOW_MSG_BOX_NARROW,
BAG_UI_WINDOW_POCKET_INDICATOR,
BAG_UI_WINDOW_MSG_BOX_WIDE,
BAG_UI_WINDOW_SELL_COUNT_VALUE,
BAG_UI_WINDOW_MONEY,
BAG_UI_WINDOW_THROW_AWAY_COUNT,
BAG_UI_WINDOW_POFFIN_COUNT,
NUM_BAG_UI_WINDOWS,
};
enum ItemAction {
ITEM_ACTION_USE = 0,
ITEM_ACTION_WALK,
ITEM_ACTION_CHECK,
ITEM_ACTION_PLANT,
ITEM_ACTION_OPEN,
ITEM_ACTION_TRASH,
ITEM_ACTION_REGISTER,
ITEM_ACTION_DESELECT,
ITEM_ACTION_GIVE,
ITEM_ACTION_CHECK_TAG,
ITEM_ACTION_CONFIRM,
ITEM_ACTION_CANCEL,
NUM_ITEM_ACTIONS
};
enum BagApplicationItemSlotParam {
BAG_APP_ITEM_SLOT_PARAM_ITEM,
BAG_APP_ITEM_SLOT_PARAM_QUANTITY
};
typedef struct BagController BagController;
typedef int (*ItemActionFuncPtr)(BagController *param0);
typedef int (*ItemUseCallback)(BagController *);
typedef struct BagPocketSelector {
u8 nextPocket;
u8 nextPocketDirection;
u8 animStage;
u8 animFrame;
u8 pocketChangeState;
u8 pocketChangeFrame;
u8 pressedPocketBtnIdx;
u8 unk_07_0 : 4;
u8 unk_07_4 : 3;
u8 unk_07_7 : 1;
} BagPocketSelector;
typedef struct BagPocketHighlight {
u8 isMoving;
u8 direction;
u8 padding_02;
u8 currentStep;
fx32 positions[8];
} BagPocketHighlight;
struct BagController {
BgConfig *bgConfig;
Window windows[NUM_BAG_UI_WINDOWS];
Window itemActionsWindow;
BagContext *bagCtx;
Bag *bag;
TrainerInfo *trainerInfo;
Options *options;
NARC *bagGraphicsNARC;
SpriteSystem *spriteSystem;
SpriteManager *spriteMan;
ManagedSprite *sprites[NUM_BAG_UI_SPRITES];
FontSpecialCharsContext *specialChars;
MessageLoader *bagStringsLoader;
StringTemplate *strTemplate;
MessageLoader *itemNamesLoader;
MessageLoader *moveNamesLoader;
Strbuf *itemActionStrings[NUM_ITEM_ACTIONS];
StringList *itemActionChoices;
Menu *menu;
ListMenu *itemList;
StringList *itemListEntries;
Strbuf *itemNames[LARGEST_POCKET_SIZE];
Strbuf *strBuffer;
Strbuf *itemCountX;
Strbuf *itemCountNumberFmt;
Strbuf *pocketNames[POCKET_MAX];
u8 numPockets;
u8 trainerGender;
u8 msgBoxPrinterID;
u8 pocketSelectorIconsX;
u8 pocketSelectorIconsSpacing;
BagPocketSelector pocketSelector;
u8 padding_431[35];
BagPocketHighlight pocketHighlight;
u8 nextPocket;
u8 hideDescription;
u8 isMovingItem;
u8 movedItemPos;
u32 movedItemID;
u8 pocketSelectorArrowsAnimStep;
u8 pocketSelectorArrowsAnimTimer;
u8 cursorSoundIdx;
u8 itemUseTaskState;
ItemUseCallback itemUseCallback;
s16 selectedItemCount;
u16 selectedItemCountLimit;
u32 soldItemPrice;
u8 dialButtonAnimStep;
u8 dialButtonAnimFrame;
u8 isTouchingDial;
u8 padding_493;
s32 queuedScrollRemainder;
s16 queuedScroll;
s16 dialRotation;
u8 padding_49C[2];
u16 previousTouchX;
u16 previousTouchY;
u8 padding_4A2[2];
};
#endif

View File

@ -0,0 +1,9 @@
#ifndef POKEPLATINUM_APPLICATIONS_BAG_MAIN_H
#define POKEPLATINUM_APPLICATIONS_BAG_MAIN_H
#include "applications/bag/defs.h"
u16 BagInterface_GetItemSlotParam(BagController *controller, u16 slotIndex, u16 itemParam);
const u32 BagApplication_GetItemActionFunc(enum ItemAction action);
#endif // POKEPLATINUM_APPLICATIONS_BAG_MAIN_H

View File

@ -0,0 +1,20 @@
#ifndef POKEPLATINUM_APPLICATIONS_BAG_SPRITES_H
#define POKEPLATINUM_APPLICATIONS_BAG_SPRITES_H
#include "applications/bag/defs.h"
void BagUI_InitSprites(BagController *controller);
void BagUI_FreeSprites(BagController *controller);
void BagUI_TickSpriteAnimations(BagController *controller);
void BagUI_UpdateItemSprite(BagController *controller, u16 item);
void BagUI_SetHighlightSpritesPalette(BagController *controller, u8 palette);
void BagUI_StartMovingPocketHighlight(BagController *controller);
void BagUI_StepPocketHighlightMovement(BagController *controller);
u8 BagUI_IsPocketHighlightDoneMoving(BagController *controller);
void BagUI_ShowItemCountArrows(BagController *controller, u8 position);
void BagUI_ToggleItemCountArrows(BagController *controller, u8 show);
void BagUI_UpdateTypeAndCategoryIcons(BagController *controller, u16 item, u8 draw);
void BagUI_DrawBtnShockwave(BagController *controller, s16 x, s16 y);
void BagUI_TickBtnShockwaveAnim(BagController *controller);
#endif // POKEPLATINUM_APPLICATIONS_BAG_SPRITES_H

View File

@ -0,0 +1,41 @@
#ifndef POKEPLATINUM_APPLICATIONS_BAG_WINDOWS_H
#define POKEPLATINUM_APPLICATIONS_BAG_WINDOWS_H
#include "applications/bag/defs.h"
#include "bag.h"
#include "bg_window.h"
void BagUI_CreateWindows(BagController *controller);
void BagUI_DeleteWindows(Window windows[NUM_BAG_UI_WINDOWS]);
void BagUI_LoadPocketNames(BagController *controller);
void BagUI_FreePocketNames(BagController *controller);
void BagUI_ClearPocketNameBox(BagController *controller);
void BagUI_PrintPocketNames(BagController *controller);
void BagUI_DrawPocketSelectorIcon(BagController *controller, u8 pocketIndex, u8 focused);
void BagUI_DrawPocketSelectorIcons(BagController *controller);
void BagUI_PrintItemDescription(BagController *controller, u16 item);
void BagUI_PrintTMHMMoveStats(BagController *controller, u16 item);
void BagUI_LoadItemCountStrings(BagController *controller);
void BagUI_FreeItemCountStrings(BagController *controller);
void BagUI_PrintItemCount(BagController *controller, u16 count, u16 yOffset, u32 color);
void BagUI_PrintTMHMNumber(BagController *controller, BagItem *itemSlot, u32 yOffset);
void BagUI_PrintBerryNumber(BagController *controller, BagItem *itemSlot, u32 yOffset);
void BagUI_PrintCloseBagEntry(BagController *controller, u32 yOffset);
void BagUI_DrawRegisteredIcon(BagController *controller, u32 yOffset);
void BagUI_LoadItemActionStrings(BagController *controller);
void BagUI_FreeItemActionStrings(BagController *controller);
void BagUI_ShowItemActionsMenu(BagController *controller, u8 *actions, u8 numActions);
void BagUI_CloseItemActionsMenu(BagController *controller);
void BagUI_PrintMovingItemMsg(BagController *controller);
void BagUI_ShowItemTrashWindows(BagController *controller);
void BagUI_PrintItemTrashCount(BagController *controller);
void BagUI_CloseItemTrashWindows(BagController *controller);
void BagUI_PrintConfirmItemTrashMsg(BagController *controller);
u8 BagUI_PrintStrBufferToWideMsgBox(BagController *controller);
void BagUI_ShowYesNoMenu(BagController *controller);
void BagUI_PrintSellCountAndValue(BagController *controller, u8 skipFrame);
void BagUI_PrintMoney(BagController *controller, u8 skipLabel);
void BagUI_DrawPoffinCountMsgBox(BagController *controller);
#endif // POKEPLATINUM_APPLICATIONS_BAG_WINDOWS_H

View File

@ -15,6 +15,18 @@
#define POKEBALL_POCKET_SIZE 15
#define BATTLE_ITEM_POCKET_SIZE 30
// clang-format off
#define LARGEST_POCKET_SIZE \
max(ITEM_POCKET_SIZE, \
max(KEY_ITEM_POCKET_SIZE, \
max(TMHM_POCKET_SIZE, \
max(MAIL_POCKET_SIZE, \
max(MEDICINE_POCKET_SIZE, \
max(BERRY_POCKET_SIZE, \
max(POKEBALL_POCKET_SIZE, \
BATTLE_ITEM_POCKET_SIZE)))))))
// clang-format on
typedef struct BagItem {
u16 item;
u16 quantity;

51
include/bag_context.h Normal file
View File

@ -0,0 +1,51 @@
#ifndef POKEPLATINUM_BAG_CONTEXT_H
#define POKEPLATINUM_BAG_CONTEXT_H
#include "bag.h"
#include "item_use_functions.h"
#include "savedata.h"
#include "strbuf.h"
#include "trainer_info.h"
typedef struct BagApplicationPocket {
BagItem *items;
u16 cursorPos;
u16 cursorScroll;
u8 pocketType;
u8 listEntryCount;
u8 padding_0A[2];
} BagApplicationPocket;
typedef struct BagContext {
SaveData *saveData;
BagApplicationPocket accessiblePockets[POCKET_MAX];
u8 currPocketIdx;
u8 mode;
u16 selectedItem;
u16 exitCode;
u8 padding_6A[2];
BagCursor *bagCursor;
ItemUseContext *itemUseCtx;
u8 selectedMonSlot;
u8 soldAmount; // Not the exact amount of items sold. 0: nothing sold, 1: one item sold, >=2: two or more items sold.
u16 isCycling : 1;
u16 mapLoadType : 15;
} BagContext;
BagContext *BagContext_New(u8 heapID);
u32 BagContext_GetSize(void);
void BagContext_SetMode(BagContext *bagContext, u8 mode);
void BagContext_Init(BagContext *bagContext, SaveData *saveData, u8 mode, BagCursor *bagCursor);
void BagContext_InitPocket(BagContext *bagContext, BagItem *items, u8 pocketType, u8 pocketIdx);
void BagContext_SetIsCycling(BagContext *bagContext);
void BagContext_SetItemUseContext(BagContext *bagContext, ItemUseContext *itemUseCtx);
void BagContext_SetSelectedMonSlot(BagContext *bagContext, u8 slot);
void BagContext_SetMapLoadType(BagContext *bagContext, u16 mapLoadType);
u16 BagContext_GetItem(BagContext *bagContext);
u16 BagContext_GetExitCode(BagContext *bagContext);
u8 BagContext_GetSelectedMonSlot(BagContext *bagContext);
u8 BagContext_GetSoldAmount(BagContext *bagContext);
BOOL BagContext_FormatUsageMessage(SaveData *saveData, Strbuf *dstString, u16 item, u32 heapID);
void BagContext_FormatErrorMessage(TrainerInfo *playerInfo, Strbuf *dstString, u16 unused, u32 error, u32 heapID);
#endif // POKEPLATINUM_BAG_CONTEXT_H

View File

@ -1,43 +0,0 @@
#ifndef POKEPLATINUM_BAG_SYSTEM_H
#define POKEPLATINUM_BAG_SYSTEM_H
#include "overlay084/struct_ov84_0223BE5C.h"
#include "bag.h"
#include "savedata.h"
#include "strbuf.h"
#include "trainer_info.h"
typedef struct BagSystem {
SaveData *saveData;
BagInterfacePocketInfo accessiblePockets[8];
u8 currPocketIdx;
u8 mode;
u16 selectedItem;
u16 exitCode;
u8 padding_6A[2];
BagCursor *bagCursor;
void *unk_70;
u8 selectedMonSlot;
u8 unk_75;
u16 isCycling : 1;
u16 mapLoadType : 15;
} BagSystem;
BagSystem *BagSystem_New(u8 heapID);
u32 BagSystem_GetSize(void);
void BagSystem_SetMode(BagSystem *bagSystem, u8 mode);
void BagSystem_Init(BagSystem *bagSystem, SaveData *saveData, u8 mode, BagCursor *bagCursor);
void BagSystem_InitPocket(BagSystem *bagSystem, BagItem *items, u8 pocketType, u8 pocketIdx);
void BagSystem_SetIsCycling(BagSystem *bagSystem);
void sub_0207CB6C(BagSystem *bagSystem, void *param1);
void BagSystem_SetSelectedMonSlot(BagSystem *bagSystem, u8 slot);
void BagSystem_SetMapLoadType(BagSystem *bagSystem, u16 mapLoadType);
u16 BagSystem_GetItem(BagSystem *bagSystem);
u16 BagSystem_GetExitCode(BagSystem *bagSystem);
u8 BagSystem_GetSelectedMonSlot(BagSystem *bagSystem);
u8 sub_0207CBAC(BagSystem *bagSystem);
BOOL BagSystem_FormatUsageMessage(SaveData *saveData, Strbuf *dstString, u16 item, u32 heapID);
void BagSystem_FormatErrorMessage(TrainerInfo *playerInfo, Strbuf *dstString, u16 unused, u32 error, u32 heapID);
#endif // POKEPLATINUM_BAG_SYSTEM_H

View File

@ -8,7 +8,7 @@ enum HeapID {
HEAP_ID_APPLICATION,
HEAP_ID_FIELD1,
HEAP_ID_BATTLE,
HEAP_ID_6,
HEAP_ID_BAG,
HEAP_ID_POKETCH_MAIN,
HEAP_ID_POKETCH_APP,
HEAP_ID_BOX_DATA,
@ -134,6 +134,8 @@ enum HeapSize {
HEAP_SIZE_DEBUG = 0x10,
HEAP_SIZE_APPLICATION = 0x10D800,
HEAP_SIZE_BAG = 0x30000,
HEAP_SIZE_PRE_POKETCH_SUBSCREEN = 0x18000,
HEAP_SIZE_POKETCH_MAIN = 0xC000,
HEAP_SIZE_POKETCH_APP = 0xC000,

View File

@ -1,8 +0,0 @@
#ifndef POKEPLATINUM_CONST_OV84_02241130_H
#define POKEPLATINUM_CONST_OV84_02241130_H
#include "overlay_manager.h"
extern const ApplicationManagerTemplate Unk_ov84_02241130;
#endif // POKEPLATINUM_CONST_OV84_02241130_H

View File

@ -1,8 +0,0 @@
#ifndef POKEPLATINUM_FUNCPTR_OV84_0223D730_H
#define POKEPLATINUM_FUNCPTR_OV84_0223D730_H
#include "overlay084/struct_ov84_0223B5A0.h"
typedef int (*UnkFuncPtr_ov84_0223D730)(UnkStruct_ov84_0223B5A0 *param0);
#endif // POKEPLATINUM_FUNCPTR_OV84_0223D730_H

View File

@ -1,14 +0,0 @@
#ifndef POKEPLATINUM_OV84_0223B5A0_H
#define POKEPLATINUM_OV84_0223B5A0_H
#include "overlay084/struct_ov84_0223B5A0.h"
#include "overlay_manager.h"
int ov84_0223B5A0(ApplicationManager *appMan, int *param1);
int ov84_0223B76C(ApplicationManager *appMan, int *param1);
int ov84_0223B900(ApplicationManager *appMan, int *param1);
u16 ov84_0223BE5C(UnkStruct_ov84_0223B5A0 *param0, u16 param1, u16 param2);
const u32 ov84_0223D84C(u32 param0);
#endif // POKEPLATINUM_OV84_0223B5A0_H

View File

@ -1,41 +0,0 @@
#ifndef POKEPLATINUM_OV84_0223F040_H
#define POKEPLATINUM_OV84_0223F040_H
#include "overlay084/struct_ov84_0223B5A0.h"
#include "bag.h"
#include "bg_window.h"
void ov84_0223F040(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223F1DC(Window *param0);
void ov84_0223F1F8(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223F238(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223F25C(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223F2FC(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223F3AC(UnkStruct_ov84_0223B5A0 *param0, u8 param1, u8 param2);
void ov84_0223F438(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223F528(UnkStruct_ov84_0223B5A0 *param0, u16 param1);
void ov84_0223F584(UnkStruct_ov84_0223B5A0 *param0, u16 param1);
void ov84_0223F7D4(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223F800(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223F81C(UnkStruct_ov84_0223B5A0 *param0, u16 param1, u16 param2, u32 param3);
void ov84_0223F8D0(UnkStruct_ov84_0223B5A0 *param0, BagItem *param1, u32 param2);
void ov84_0223F94C(UnkStruct_ov84_0223B5A0 *param0, BagItem *param1, u32 param2);
void ov84_0223F9F0(UnkStruct_ov84_0223B5A0 *param0, u32 param1);
void ov84_0223FA44(UnkStruct_ov84_0223B5A0 *param0, u32 param1);
void ov84_0223FA88(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223FB50(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223FB70(UnkStruct_ov84_0223B5A0 *param0, u8 *param1, u8 param2);
void ov84_0223FD84(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223FE18(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223FE94(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223FF44(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223FFC0(UnkStruct_ov84_0223B5A0 *param0);
void ov84_0223FFF0(UnkStruct_ov84_0223B5A0 *param0);
u8 ov84_022400A0(UnkStruct_ov84_0223B5A0 *param0);
void ov84_02240120(UnkStruct_ov84_0223B5A0 *param0);
void ov84_02240148(UnkStruct_ov84_0223B5A0 *param0, u8 param1);
void ov84_02240248(UnkStruct_ov84_0223B5A0 *param0, u8 param1);
void ov84_02240328(UnkStruct_ov84_0223B5A0 *param0);
#endif // POKEPLATINUM_OV84_0223F040_H

View File

@ -1,20 +0,0 @@
#ifndef POKEPLATINUM_OV84_022403F4_H
#define POKEPLATINUM_OV84_022403F4_H
#include "overlay084/struct_ov84_0223B5A0.h"
void ov84_022403F4(UnkStruct_ov84_0223B5A0 *param0);
void ov84_02240A88(UnkStruct_ov84_0223B5A0 *param0);
void ov84_02240ABC(UnkStruct_ov84_0223B5A0 *param0);
void ov84_02240AD8(UnkStruct_ov84_0223B5A0 *param0, u16 param1);
void ov84_02240B34(UnkStruct_ov84_0223B5A0 *param0, u8 param1);
u8 ov84_02240B50(UnkStruct_ov84_0223B5A0 *param0);
void ov84_02240B68(UnkStruct_ov84_0223B5A0 *param0);
void ov84_02240B80(UnkStruct_ov84_0223B5A0 *param0);
void ov84_02240CF0(UnkStruct_ov84_0223B5A0 *param0, u8 param1);
void ov84_02240D3C(UnkStruct_ov84_0223B5A0 *param0, u8 param1);
void ov84_02240D5C(UnkStruct_ov84_0223B5A0 *param0, u16 param1, u8 param2);
void ov84_02240E24(UnkStruct_ov84_0223B5A0 *param0, s16 param1, s16 param2);
void ov84_02240E5C(UnkStruct_ov84_0223B5A0 *param0);
#endif // POKEPLATINUM_OV84_022403F4_H

View File

@ -1,83 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV84_0223B5A0_H
#define POKEPLATINUM_STRUCT_OV84_0223B5A0_H
#include "overlay084/struct_ov84_0223B5A0_sub1.h"
#include "overlay084/struct_ov84_0223C920.h"
#include "bag.h"
#include "bag_system.h"
#include "bg_window.h"
#include "font_special_chars.h"
#include "game_options.h"
#include "list_menu.h"
#include "menu.h"
#include "message.h"
#include "narc.h"
#include "sprite_system.h"
#include "strbuf.h"
#include "string_list.h"
#include "string_template.h"
#include "trainer_info.h"
typedef struct {
BgConfig *unk_00;
Window unk_04[11];
Window unk_B4[1];
BagSystem *unk_C4;
Bag *unk_C8;
TrainerInfo *unk_CC;
Options *options;
NARC *unk_D4;
SpriteSystem *unk_D8;
SpriteManager *unk_DC;
ManagedSprite *unk_E0[12];
FontSpecialCharsContext *unk_110;
MessageLoader *unk_114;
StringTemplate *unk_118;
MessageLoader *unk_11C;
MessageLoader *unk_120;
Strbuf *unk_124[12];
StringList *unk_154;
Menu *unk_158;
ListMenu *unk_15C;
StringList *unk_160;
Strbuf *unk_164[165];
Strbuf *unk_3F8;
Strbuf *unk_3FC;
Strbuf *unk_400;
Strbuf *unk_404[8];
u8 unk_424;
u8 unk_425;
u8 unk_426;
u8 unk_427;
u8 unk_428;
UnkStruct_ov84_0223C920 unk_429;
u8 padding_431[35];
UnkStruct_ov84_0223B5A0_sub1 unk_454;
u8 unk_478;
u8 unk_479;
u8 unk_47A;
u8 unk_47B;
u32 unk_47C;
u8 unk_480;
u8 unk_481;
u8 unk_482;
u8 unk_483;
u32 unk_484;
s16 unk_488;
u16 unk_48A;
u32 unk_48C;
u8 unk_490;
u8 unk_491;
u8 unk_492;
u8 padding_493;
s32 unk_494;
s16 unk_498;
s16 unk_49A;
u8 padding_49C[2];
u16 unk_49E;
u16 unk_4A0;
u8 padding_4A2[2];
} UnkStruct_ov84_0223B5A0;
#endif // POKEPLATINUM_STRUCT_OV84_0223B5A0_H

View File

@ -1,12 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV84_0223B5A0_SUB1_H
#define POKEPLATINUM_STRUCT_OV84_0223B5A0_SUB1_H
typedef struct {
u8 unk_00;
u8 unk_01;
u8 padding_02;
u8 unk_03;
fx32 unk_04[8];
} UnkStruct_ov84_0223B5A0_sub1;
#endif // POKEPLATINUM_STRUCT_OV84_0223B5A0_SUB1_H

View File

@ -1,15 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV84_0223BE5C_H
#define POKEPLATINUM_STRUCT_OV84_0223BE5C_H
#include "bag.h"
typedef struct {
BagItem *items;
u16 unk_04;
u16 unk_06;
u8 pocketType;
u8 unk_09;
u8 padding_0A[2];
} BagInterfacePocketInfo;
#endif // POKEPLATINUM_STRUCT_OV84_0223BE5C_H

View File

@ -1,17 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV84_0223C920_H
#define POKEPLATINUM_STRUCT_OV84_0223C920_H
typedef struct {
u8 unk_00;
u8 unk_01;
u8 unk_02;
u8 unk_03;
u8 unk_04;
u8 unk_05;
u8 unk_06;
u8 unk_07_0 : 4;
u8 unk_07_4 : 3;
u8 unk_07_7 : 1;
} UnkStruct_ov84_0223C920;
#endif // POKEPLATINUM_STRUCT_OV84_0223C920_H

View File

@ -216,7 +216,7 @@ res/prebuilt/graphic/ntag_gra.narc,/graphic/ntag_gra.narc
res/prebuilt/graphic/nutmixer.narc,/graphic/nutmixer.narc
res/prebuilt/graphic/oekaki.narc,/graphic/oekaki.narc
res/prebuilt/graphic/opening.narc,/graphic/opening.narc
res/prebuilt/graphic/pl_bag_gra.narc,/graphic/pl_bag_gra.narc
res/graphics/bag/bag_graphics.narc,/graphic/pl_bag_gra.narc
res/fonts/pl_font.narc,/graphic/pl_font.narc
res/prebuilt/graphic/pl_plist_gra.narc,/graphic/pl_plist_gra.narc
res/graphics/pokemon_summary_screen/pl_pst_gra.narc,/graphic/pl_pst_gra.narc

1 Source File Target File
216 res/prebuilt/graphic/nutmixer.narc /graphic/nutmixer.narc
217 res/prebuilt/graphic/oekaki.narc /graphic/oekaki.narc
218 res/prebuilt/graphic/opening.narc /graphic/opening.narc
219 res/prebuilt/graphic/pl_bag_gra.narc res/graphics/bag/bag_graphics.narc /graphic/pl_bag_gra.narc
220 res/fonts/pl_font.narc /graphic/pl_font.narc
221 res/prebuilt/graphic/pl_plist_gra.narc /graphic/pl_plist_gra.narc
222 res/graphics/pokemon_summary_screen/pl_pst_gra.narc /graphic/pl_pst_gra.narc

View File

@ -215,7 +215,7 @@ e7266bd8b7095861b6e1fdaf4f13cb648a9c325d *res/prebuilt/graphic/footprint_board.n
46742a8665062b1fa4fe576491fa2ad67ca83f49 *res/prebuilt/graphic/nutmixer.narc
e22f0296444ce01e0b7619f73a8cf2016b2307b4 *res/prebuilt/graphic/oekaki.narc
917f25f4e5bb3f5e1837471d2a90225e9e95363d *res/prebuilt/graphic/opening.narc
dd0663e46347230d1d1b9eb8b583cee9acc10f31 *res/prebuilt/graphic/pl_bag_gra.narc
dd0663e46347230d1d1b9eb8b583cee9acc10f31 *res/graphics/bag/bag_graphics.narc
0929061d78710595aa53796ecffe3545f8406d82 *res/fonts/pl_font.narc
d397dbd087737151aa8bea242016c626afb55fa5 *res/prebuilt/graphic/pl_plist_gra.narc
883e6afb310f0ab02c26f2026cba1c76210bb3ac *res/graphics/pokemon_summary_screen/pl_pst_gra.narc

View File

@ -299,7 +299,7 @@ Static main
Object main.nef.p/src_evolution.c.o
Object main.nef.p/src_unk_0207C63C.c.o
Object main.nef.p/src_type_icon.c.o
Object main.nef.p/src_bag_system.c.o
Object main.nef.p/src_bag_context.c.o
Object main.nef.p/src_item.c.o
Object main.nef.p/src_bag.c.o
Object main.nef.p/src_unk_0207DA28.c.o
@ -1347,17 +1347,17 @@ Overlay overlay83
Object main.nef.p/src_overlay083_ov83_0223F7F4.c.o
}
Overlay overlay84
Overlay bag
{
After overlay82
Object main.nef.p/src_overlay084_ov84_0223B5A0.c.o
Object main.nef.p/src_overlay084_ov84_0223F040.c.o
Object main.nef.p/src_overlay084_ov84_022403F4.c.o
Object main.nef.p/src_applications_bag_main.c.o
Object main.nef.p/src_applications_bag_windows.c.o
Object main.nef.p/src_applications_bag_sprites.c.o
}
Overlay overlay85
{
After overlay84
After bag
Object main.nef.p/src_overlay085_ov85_02241440.c.o
}

View File

@ -83,7 +83,7 @@ b8c85f32459d20b3a6cfde5a1e349215dd0157a0 *overlay79.sbin
1982ed52ba9469dd625dc5951277fd1c001b26af *journal_display.sbin
429a576c3e5a24f25167051957b22f194d2af781 *overlay82.sbin
1904a30bcfb722856130ab7b3d0e79fd0070520d *overlay83.sbin
8bd6a805631e2d661f9d5889e568a72e60f93a04 *overlay84.sbin
8bd6a805631e2d661f9d5889e568a72e60f93a04 *bag.sbin
c197c9edb988d64dec0a56427dfc6960646dc1f7 *overlay85.sbin
a563e0430b460ee5a39442667561e0bd5428dcdb *overlay86.sbin
8c7f762ebf90f08b09b9efd49946176bb6ed1c69 *overlay87.sbin

View File

@ -9,7 +9,7 @@
_000A:
LockAll
BufferNumber 0, VAR_0x8000
Message 106
Message Bag_Text_BatteryHasRunDry
WaitABXPadPress
CloseMessage
ReleaseAll
@ -17,7 +17,7 @@ _000A:
_001C:
LockAll
Message 107
Message Bag_Text_GrassyPatchRemainedQuiet
WaitABXPadPress
CloseMessage
ReleaseAll

View File

@ -0,0 +1,39 @@
bag_sprite_anim.NANR
bag_sprite_cell.NCER
bag_sprite_male.NCGR
bag_sprite_male.NCLR
bag_sprite_anim_female_unused.NANR
bag_sprite_cell_female_unused.NCER
bag_sprite_female.NCGR
bag_sprite_female.NCLR
pocket_selector_arrows_anim.NANR
pocket_selector_arrows_cell.NCER
pocket_selector_arrows.NCGR
bag_ui_main_tileset.NCGR
bag_ui_main.NCLR
item_list_border.NSCR
bag_ui_main.NSCR
pokeball_borders_tileset.NCGR
pokeball_borders.NCLR
pokeball_borders.NSCR
buttons.NCLR
buttons.NCGR
ui_elements.NCLR
pocket_selector_icons.NCGR
pocket_selector_icons.NCLR
pocket_highlight_anim.NANR
pocket_highlight_cell.NCER
pocket_highlight.NCGR
item_highlight_anim.NANR
item_highlight_cell.NCER
item_highlight.NCGR
moving_item_pos_bar_anim.NANR
moving_item_pos_bar_cell.NCER
moving_item_pos_bar.NCGR
pokeball_inside.NCGR
pokeball_inside.NSCR
button_shockwave_anim.NANR
button_shockwave_cell.NCER
button_shockwave.NCGR
button_shockwave.NCLR
item_entry_icons.NCGR

View File

@ -0,0 +1,522 @@
{
"labelEnabled": true,
"sequenceCount": 16,
"frameCount": 40,
"sequences": [{
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 4,
"resultId": 0
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 4,
"resultId": 1
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 4,
"resultId": 2
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 4,
"resultId": 3
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 4,
"resultId": 4
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 4,
"resultId": 5
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 4,
"resultId": 6
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 4,
"resultId": 7
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 1,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 2,
"resultId": 8
}, {
"frameDelay": 2,
"resultId": 9
}, {
"frameDelay": 2,
"resultId": 10
}, {
"frameDelay": 2,
"resultId": 11
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 1,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 2,
"resultId": 12
}, {
"frameDelay": 2,
"resultId": 13
}, {
"frameDelay": 2,
"resultId": 14
}, {
"frameDelay": 2,
"resultId": 15
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 1,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 2,
"resultId": 16
}, {
"frameDelay": 2,
"resultId": 17
}, {
"frameDelay": 2,
"resultId": 18
}, {
"frameDelay": 2,
"resultId": 19
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 1,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 2,
"resultId": 20
}, {
"frameDelay": 2,
"resultId": 21
}, {
"frameDelay": 2,
"resultId": 22
}, {
"frameDelay": 2,
"resultId": 23
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 1,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 2,
"resultId": 24
}, {
"frameDelay": 2,
"resultId": 25
}, {
"frameDelay": 2,
"resultId": 26
}, {
"frameDelay": 2,
"resultId": 27
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 1,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 2,
"resultId": 28
}, {
"frameDelay": 2,
"resultId": 29
}, {
"frameDelay": 2,
"resultId": 30
}, {
"frameDelay": 2,
"resultId": 31
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 1,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 2,
"resultId": 32
}, {
"frameDelay": 2,
"resultId": 33
}, {
"frameDelay": 2,
"resultId": 34
}, {
"frameDelay": 2,
"resultId": 35
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 1,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 2,
"resultId": 36
}, {
"frameDelay": 2,
"resultId": 37
}, {
"frameDelay": 2,
"resultId": 38
}, {
"frameDelay": 2,
"resultId": 39
}]
}],
"animationResults": [{
"resultType": 0,
"index": 1
}, {
"resultType": 0,
"index": 3
}, {
"resultType": 0,
"index": 4
}, {
"resultType": 0,
"index": 7
}, {
"resultType": 0,
"index": 2
}, {
"resultType": 0,
"index": 6
}, {
"resultType": 0,
"index": 5
}, {
"resultType": 0,
"index": 0
}, {
"resultType": 1,
"index": 1,
"rotation": 64080,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 1,
"rotation": 1092,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 1,
"rotation": 64990,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 1,
"rotation": 0,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 3,
"rotation": 64080,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 3,
"rotation": 1092,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 3,
"rotation": 64990,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 3,
"rotation": 0,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 4,
"rotation": 64080,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 4,
"rotation": 1092,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 4,
"rotation": 64990,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 4,
"rotation": 0,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 7,
"rotation": 64080,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 7,
"rotation": 1092,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 7,
"rotation": 64990,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 7,
"rotation": 0,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 2,
"rotation": 64080,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 2,
"rotation": 1092,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 2,
"rotation": 64990,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 2,
"rotation": 0,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 6,
"rotation": 64080,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 6,
"rotation": 1092,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 6,
"rotation": 64990,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 6,
"rotation": 0,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 5,
"rotation": 64080,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 5,
"rotation": 1092,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 5,
"rotation": 64990,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 5,
"rotation": 0,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 0,
"rotation": 64080,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 0,
"rotation": 1092,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 0,
"rotation": 64990,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}, {
"resultType": 1,
"index": 0,
"rotation": 0,
"scaleX": 4096,
"scaleY": 4096,
"positionX": 0,
"positionY": 0
}],
"resultCount": 40,
"labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3", "CellAnime4", "CellAnime5", "CellAnime6", "CellAnime7", "ca1", "ca3", "ca4", "ca7", "ca2", "ca6", "ca5", "ca0"],
"labelCount": 16
}

View File

@ -0,0 +1,282 @@
{
"labelEnabled": true,
"extended": true,
"vramTransferEnabled": false,
"cellCount": 8,
"mappingType": 0,
"cells": [{
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 0,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 64,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 128,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 192,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 256,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 320,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 384,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 448,
"Priority": 0,
"Palette": 0
}
}]
}],
"labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3", "CellAnime4", "CellAnime5", "CellAnime6", "CellAnime7", "ca1", "ca3", "ca4", "ca7", "ca2", "ca6", "ca5", "ca0"],
"labelCount": 16
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

View File

@ -0,0 +1,259 @@
JASC-PAL
0100
256
0 0 0
255 255 255
222 238 238
189 213 222
156 189 205
123 164 189
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
189 246 255
255 255 255
115 123 148
197 222 230
90 205 82
197 106 65
189 139 139
246 172 82
255 205 98
139 230 98
148 148 148
164 205 246
172 213 255
164 172 246
115 82 246
82 98 156
213 238 222
156 180 172
172 213 255
180 213 255
180 222 255
180 230 255
189 238 246
90 205 82
255 255 255
139 230 98
148 148 148
123 213 222
106 172 197
115 98 213
148 172 222
156 222 230
156 197 106
16 24 32
172 189 189
255 255 255
172 189 189
0 0 0
0 0 0
0 0 0
164 180 205
106 139 180
222 41 8
255 255 255
255 197 189
246 148 123
0 0 0
255 255 255
156 197 106
255 255 255
172 189 189
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
255 255 255
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 B

View File

@ -0,0 +1,32 @@
{
"labelEnabled": true,
"sequenceCount": 1,
"frameCount": 3,
"sequences": [{
"frameCount": 3,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 1,
"frameData": [{
"frameDelay": 3,
"resultId": 0
}, {
"frameDelay": 2,
"resultId": 1
}, {
"frameDelay": 1,
"resultId": 1
}]
}],
"animationResults": [{
"resultType": 0,
"index": 0
}, {
"resultType": 0,
"index": 1
}],
"resultCount": 2,
"labels": ["CellAnime0"],
"labelCount": 1
}

View File

@ -0,0 +1,138 @@
{
"labelEnabled": true,
"extended": true,
"vramTransferEnabled": false,
"cellCount": 2,
"mappingType": 0,
"cells": [{
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 12
},
"maxX": 31,
"maxY": 31,
"minX": -32,
"minY": -32,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 224,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 480,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 0,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 17
},
"maxX": 47,
"maxY": 47,
"minX": -48,
"minY": -48,
"oamCount": 4,
"OAM": [{
"Attr0": {
"YCoordinate": 208,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 464,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 64,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 208,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 2
},
"Attr1": {
"XCoordinate": 16,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 128,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 16,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 1
},
"Attr1": {
"XCoordinate": 464,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 160,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 16,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 16,
"RotationScaling": 0,
"Size": 2
},
"Attr2": {
"CharName": 192,
"Priority": 0,
"Palette": 0
}
}]
}],
"labels": ["CellAnime0"],
"labelCount": 1
}

View File

@ -0,0 +1,259 @@
JASC-PAL
0100
256
156 213 238
255 255 197
172 172 172
164 156 98
255 255 255
255 246 148
197 180 106
148 123 74
98 90 65
238 205 123
246 222 115
255 82 82
255 156 106
246 230 139
213 148 98
230 189 123
90 189 222
255 255 255
230 230 230
90 90 90
197 197 197
230 230 230
222 222 222
172 172 172
131 131 131
115 115 115
189 180 164
164 164 164
148 123 90
205 205 205
180 180 180
172 172 172
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

View File

@ -0,0 +1,23 @@
{
"labelEnabled": true,
"sequenceCount": 1,
"frameCount": 1,
"sequences": [{
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 4,
"resultId": 0
}]
}],
"animationResults": [{
"resultType": 0,
"index": 0
}],
"resultCount": 1,
"labels": ["CellAnime0"],
"labelCount": 1
}

View File

@ -0,0 +1,104 @@
{
"labelEnabled": true,
"extended": true,
"vramTransferEnabled": false,
"cellCount": 1,
"mappingType": 0,
"cells": [{
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 21
},
"maxX": 79,
"maxY": 15,
"minX": -72,
"minY": -16,
"oamCount": 4,
"OAM": [{
"Attr0": {
"YCoordinate": 240,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 1
},
"Attr1": {
"XCoordinate": 440,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 0,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 240,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 1
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 0,
"Size": 3
},
"Attr2": {
"CharName": 32,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 240,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 2
},
"Attr1": {
"XCoordinate": 56,
"RotationScaling": 0,
"Size": 2
},
"Attr2": {
"CharName": 64,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 240,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 2
},
"Attr1": {
"XCoordinate": 72,
"RotationScaling": 0,
"Size": 1
},
"Attr2": {
"CharName": 72,
"Priority": 0,
"Palette": 0
}
}]
}],
"labels": ["CellAnime0"],
"labelCount": 1
}

Binary file not shown.

View File

@ -0,0 +1,141 @@
tilemaps_nscr = copy_gen.process(files(
'bag_ui_main.NSCR',
'item_list_border.NSCR',
'pokeball_borders.NSCR',
'pokeball_inside.NSCR',
))
sprite_anims_nanr = nanr_gen.process(files(
'bag_sprite_anim.json',
'pocket_selector_arrows_anim.json',
'pocket_highlight_anim.json',
'item_highlight_anim.json',
'moving_item_pos_bar_anim.json',
'button_shockwave_anim.json',
))
bag_sprite_female_anim_unused_nanr = generator(nitrogfx_exe,
arguments: ['@INPUT@', '@OUTPUT@'],
output: '@BASENAME@_female_unused.NANR',
).process(files('bag_sprite_anim.json'))
sprite_cells_ncer = ncer_gen.process(files(
'bag_sprite_cell.json',
'pocket_selector_arrows_cell.json',
'pocket_highlight_cell.json',
'item_highlight_cell.json',
'moving_item_pos_bar_cell.json',
'button_shockwave_cell.json',
))
bag_sprite_female_cell_unused_ncer = generator(nitrogfx_exe,
arguments: ['@INPUT@', '@OUTPUT@'],
output: '@BASENAME@_female_unused.NCER',
).process(files('bag_sprite_cell.json'))
palettes_8bpp = nclr_gen.process(
files(
'bag_ui_main.pal',
'buttons.pal',
'pokeball_borders.pal',
'ui_elements.pal',
),
extra_args: [
'-bitdepth', '4'
],
)
palettes_4bpp = nclr_gen.process(
files(
'bag_sprite_male.png',
'bag_sprite_female.png',
'pocket_selector_icons.png',
'button_shockwave.png',
),
extra_args: [
'-bitdepth', '4'
]
)
sprites_ncgr_sopc = ncgr_gen.process(
files(
'bag_ui_main_tileset.png',
'buttons.png',
'item_entry_icons.png',
'pocket_selector_icons.png',
'pokeball_borders_tileset.png',
),
extra_args: [
'-version101',
'-sopc',
'-bitdepth', '4',
]
)
sprites_ncgr_clobbersize = ncgr_gen.process(
files(
'bag_sprite_male.png',
'bag_sprite_female.png',
'pocket_selector_arrows.png',
'pocket_highlight.png',
'button_shockwave.png',
),
extra_args: [
'-version101',
'-clobbersize',
'-bitdepth', '4',
]
)
sprites_ncgr_cell = ncgr_cell_gen.process(
files(
'item_highlight.png',
'moving_item_pos_bar.png',
),
extra_args: [
'-version101',
'-clobbersize',
'-bitdepth', '4',
]
)
sprites_ncgr_8bpp = ncgr_gen.process(
files(
'pokeball_inside.png',
),
extra_args: [
'-version101',
'-sopc',
'-bitdepth', '8',
],
)
bag_graphics_narc = custom_target('bag_graphics.narc',
command: [
narc_exe, 'create',
'--naix',
'--order', files('bag_graphics.order'),
'--output', '@OUTPUT0@',
'@PRIVATE_DIR@',
],
input: [
tilemaps_nscr,
sprite_anims_nanr,
sprite_cells_ncer,
bag_sprite_female_anim_unused_nanr,
bag_sprite_female_cell_unused_ncer,
palettes_8bpp,
palettes_4bpp,
sprites_ncgr_sopc,
sprites_ncgr_clobbersize,
sprites_ncgr_cell,
sprites_ncgr_8bpp,
],
output: [
'bag_graphics.narc',
'bag_graphics.naix.h',
],
)
nitrofs_files += bag_graphics_narc
naix_headers += bag_graphics_narc[1]

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View File

@ -0,0 +1,23 @@
{
"labelEnabled": true,
"sequenceCount": 1,
"frameCount": 1,
"sequences": [{
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 4,
"resultId": 0
}]
}],
"animationResults": [{
"resultType": 0,
"index": 0
}],
"resultCount": 1,
"labels": ["CellAnime0"],
"labelCount": 1
}

View File

@ -0,0 +1,124 @@
{
"labelEnabled": true,
"extended": true,
"vramTransferEnabled": false,
"cellCount": 1,
"mappingType": 0,
"cells": [{
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 18
},
"maxX": 71,
"maxY": 7,
"minX": -72,
"minY": -8,
"oamCount": 5,
"OAM": [{
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 1
},
"Attr1": {
"XCoordinate": 440,
"RotationScaling": 0,
"Size": 2
},
"Attr2": {
"CharName": 0,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 1
},
"Attr1": {
"XCoordinate": 472,
"RotationScaling": 0,
"Size": 2
},
"Attr2": {
"CharName": 8,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 1
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 0,
"Size": 2
},
"Attr2": {
"CharName": 16,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 1
},
"Attr1": {
"XCoordinate": 24,
"RotationScaling": 0,
"Size": 2
},
"Attr2": {
"CharName": 24,
"Priority": 0,
"Palette": 0
}
}, {
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 56,
"RotationScaling": 0,
"Size": 1
},
"Attr2": {
"CharName": 32,
"Priority": 0,
"Palette": 0
}
}]
}],
"labels": ["CellAnime0"],
"labelCount": 1
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

View File

@ -0,0 +1,23 @@
{
"labelEnabled": true,
"sequenceCount": 1,
"frameCount": 1,
"sequences": [{
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 4,
"resultId": 0
}]
}],
"animationResults": [{
"resultType": 0,
"index": 0
}],
"resultCount": 1,
"labels": ["CellAnime0"],
"labelCount": 1
}

View File

@ -0,0 +1,44 @@
{
"labelEnabled": true,
"extended": true,
"vramTransferEnabled": false,
"cellCount": 1,
"mappingType": 0,
"cells": [{
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 3
},
"maxX": 7,
"maxY": 7,
"minX": -8,
"minY": -8,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 0,
"Size": 1
},
"Attr2": {
"CharName": 0,
"Priority": 0,
"Palette": 0
}
}]
}],
"labels": ["CellAnime0"],
"labelCount": 1
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

View File

@ -0,0 +1,62 @@
{
"labelEnabled": true,
"sequenceCount": 4,
"frameCount": 4,
"sequences": [{
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 4,
"resultId": 0
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 4,
"resultId": 1
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 4,
"resultId": 2
}]
}, {
"frameCount": 1,
"loopStartFrame": 0,
"animationElement": 0,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 4,
"resultId": 3
}]
}],
"animationResults": [{
"resultType": 0,
"index": 0
}, {
"resultType": 0,
"index": 1
}, {
"resultType": 0,
"index": 2
}, {
"resultType": 0,
"index": 3
}],
"resultCount": 4,
"labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3"],
"labelCount": 4
}

View File

@ -0,0 +1,146 @@
{
"labelEnabled": true,
"extended": true,
"vramTransferEnabled": false,
"cellCount": 4,
"mappingType": 0,
"cells": [{
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 3
},
"maxX": 7,
"maxY": 7,
"minX": -8,
"minY": -8,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 0,
"Size": 1
},
"Attr2": {
"CharName": 0,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": true,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 3
},
"maxX": 7,
"maxY": 7,
"minX": -8,
"minY": -8,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 8,
"Size": 1
},
"Attr2": {
"CharName": 0,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 3
},
"maxX": 7,
"maxY": 7,
"minX": -8,
"minY": -8,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 0,
"Size": 1
},
"Attr2": {
"CharName": 4,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": true,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 3
},
"maxX": 7,
"maxY": 7,
"minX": -8,
"minY": -8,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 16,
"Size": 1
},
"Attr2": {
"CharName": 4,
"Priority": 0,
"Palette": 0
}
}]
}],
"labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3"],
"labelCount": 4
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

View File

@ -0,0 +1,259 @@
JASC-PAL
0100
256
0 0 0
246 115 115
197 164 106
148 123 90
238 205 123
255 255 255
238 197 106
0 0 0
189 115 90
205 189 172
180 164 139
0 0 0
0 0 0
0 0 0
255 32 230
255 255 255
90 189 222
255 255 255
230 230 230
90 90 90
197 197 197
230 230 230
222 222 222
172 172 172
131 131 131
115 115 115
189 180 164
0 0 0
148 123 90
205 205 205
180 180 180
172 172 172
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 906 B

View File

@ -0,0 +1,259 @@
JASC-PAL
0100
256
213 213 238
255 0 0
16 115 255
16 139 255
0 82 255
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
123 123 123
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

View File

@ -1,3 +1,4 @@
subdir('bag')
subdir('diploma')
subdir('item_icons')
subdir('naming_screen')

View File

@ -11,6 +11,16 @@ ncgr_gen = generator(nitrogfx_exe,
output: '@BASENAME@.NCGR',
)
ncgr_cell_gen = generator(nitrogfx_exe,
arguments: [
'@INPUT@',
'@OUTPUT@',
'-cell', '@CURRENT_SOURCE_DIR@/@BASENAME@_cell.json',
'@EXTRA_ARGS@',
],
output: '@BASENAME@.NCGR',
)
ncgr_lz_gen = generator(nitrogfx_exe,
arguments: [ '@INPUT@', '@OUTPUT@', '@EXTRA_ARGS@', ],
output: '@BASENAME@.NCGR.lz',

View File

@ -26,7 +26,6 @@ prebuilt_files = [
'nutmixer.narc',
'oekaki.narc',
'opening.narc',
'pl_bag_gra.narc',
'pl_plist_gra.narc',
'pl_wifinote.narc',
'plist_gra.narc',

Binary file not shown.

View File

@ -2,236 +2,236 @@
"key": 705,
"messages": [
{
"id": "pl_msg_00000007_00000",
"id": "Bag_Text_Use",
"en_US": "USE"
},
{
"id": "pl_msg_00000007_00001",
"id": "Bag_Text_Trash",
"en_US": "TRASH"
},
{
"id": "pl_msg_00000007_00002",
"id": "Bag_Text_Register",
"en_US": "REGISTER"
},
{
"id": "pl_msg_00000007_00003",
"id": "Bag_Text_Give",
"en_US": "GIVE"
},
{
"id": "pl_msg_00000007_00004",
"id": "Bag_Text_CheckTag",
"en_US": "CHECK TAG"
},
{
"id": "pl_msg_00000007_00005",
"id": "Bag_Text_Confirm",
"en_US": "CONFIRM"
},
{
"id": "pl_msg_00000007_00006",
"id": "Bag_Text_Walk",
"en_US": "WALK"
},
{
"id": "pl_msg_00000007_00007",
"id": "Bag_Text_Dummy1",
"garbage": 3
},
{
"id": "pl_msg_00000007_00008",
"id": "Bag_Text_Cancel",
"en_US": "CANCEL"
},
{
"id": "pl_msg_00000007_00009",
"id": "Bag_Text_Dummy2",
"garbage": 3
},
{
"id": "pl_msg_00000007_00010",
"id": "Bag_Text_Dummy3",
"garbage": 3
},
{
"id": "pl_msg_00000007_00011",
"id": "Bag_Text_Dummy4",
"garbage": 5
},
{
"id": "pl_msg_00000007_00012",
"id": "Bag_Text_Dummy5",
"garbage": 4
},
{
"id": "pl_msg_00000007_00013",
"id": "Bag_Text_Dummy6",
"garbage": 3
},
{
"id": "pl_msg_00000007_00014",
"id": "Bag_Text_Dummy7",
"garbage": 4
},
{
"id": "pl_msg_00000007_00015",
"id": "Bag_Text_Dummy8",
"garbage": 4
},
{
"id": "pl_msg_00000007_00016",
"id": "Bag_Text_Check",
"en_US": "CHECK"
},
{
"id": "pl_msg_00000007_00017",
"id": "Bag_Text_Dummy9",
"garbage": 2
},
{
"id": "pl_msg_00000007_00018",
"id": "Bag_Text_Deselect",
"en_US": "DESELECT"
},
{
"id": "pl_msg_00000007_00019",
"id": "Bag_Text_Dummy10",
"garbage": 3
},
{
"id": "pl_msg_00000007_00020",
"id": "Bag_Text_Dummy11",
"garbage": 5
},
{
"id": "pl_msg_00000007_00021",
"id": "Bag_Text_Dummy12",
"garbage": 1
},
{
"id": "pl_msg_00000007_00022",
"id": "Bag_Text_Dummy13",
"garbage": 1
},
{
"id": "pl_msg_00000007_00023",
"id": "Bag_Text_Dummy14",
"garbage": 2
},
{
"id": "pl_msg_00000007_00024",
"id": "Bag_Text_Not_Applicable",
"en_US": "---"
},
{
"id": "pl_msg_00000007_00025",
"id": "Bag_Text_Dummy15",
"garbage": 1
},
{
"id": "pl_msg_00000007_00026",
"id": "Bag_Text_Dummy16",
"garbage": 1
},
{
"id": "pl_msg_00000007_00027",
"id": "Bag_Text_Dummy17",
"garbage": 2
},
{
"id": "pl_msg_00000007_00028",
"id": "Bag_Text_Dummy18",
"garbage": 2
},
{
"id": "pl_msg_00000007_00029",
"id": "Bag_Text_Dummy19",
"garbage": 1
},
{
"id": "pl_msg_00000007_00030",
"id": "Bag_Text_Dummy20",
"garbage": 1
},
{
"id": "pl_msg_00000007_00031",
"id": "Bag_Text_Dummy21",
"garbage": 4
},
{
"id": "pl_msg_00000007_00032",
"id": "Bag_Text_Empty",
"garbage": 0
},
{
"id": "pl_msg_00000007_00033",
"id": "Bag_Text_Dummy22",
"garbage": 4
},
{
"id": "pl_msg_00000007_00034",
"id": "Bag_Text_Dummy23",
"garbage": 10
},
{
"id": "pl_msg_00000007_00035",
"id": "Bag_Text_Dummy24",
"garbage": 9
},
{
"id": "pl_msg_00000007_00036",
"id": "Bag_Text_Dummy25",
"garbage": 3
},
{
"id": "pl_msg_00000007_00037",
"id": "Bag_Text_ItemCountNum",
"en_US": "{STRVAR_1 52, 0, 0}"
},
{
"id": "pl_msg_00000007_00038",
"id": "Bag_Text_ItemCountX",
"en_US": "x"
},
{
"id": "pl_msg_00000007_00039",
"id": "Bag_Text_Dummy26",
"garbage": 2
},
{
"id": "pl_msg_00000007_00040",
"id": "Bag_Text_Dummy27",
"garbage": 7
},
{
"id": "pl_msg_00000007_00041",
"id": "Bag_Text_CloseBag",
"en_US": "CLOSE BAG"
},
{
"id": "pl_msg_00000007_00042",
"id": "Bag_Text_ItemIsSelected",
"en_US": [
"{STRVAR_1 8, 0, 0} is\n",
"selected."
]
},
{
"id": "pl_msg_00000007_00043",
"id": "Bag_Text_Dummy28",
"garbage": 21
},
{
"id": "pl_msg_00000007_00044",
"id": "Bag_Text_Dummy29",
"garbage": 12
},
{
"id": "pl_msg_00000007_00045",
"id": "Bag_Text_MoveItemWhere",
"en_US": "Move the {STRVAR_1 8, 0, 0} where?"
},
{
"id": "pl_msg_00000007_00046",
"id": "Bag_Text_ItemCantBeHeld",
"en_US": "The {STRVAR_1 8, 0, 0} cant be held."
},
{
"id": "pl_msg_00000007_00047",
"id": "Bag_Text_Dummy30",
"garbage": 26
},
{
"id": "pl_msg_00000007_00048",
"id": "Bag_Text_Dummy31",
"garbage": 18
},
{
"id": "pl_msg_00000007_00049",
"id": "Bag_Text_Dummy32",
"garbage": 20
},
{
"id": "pl_msg_00000007_00050",
"id": "Bag_Text_Dummy33",
"garbage": 16
},
{
"id": "pl_msg_00000007_00051",
"id": "Bag_Text_Dummy34",
"garbage": 29
},
{
"id": "pl_msg_00000007_00052",
"id": "Bag_Text_ThrowAwayHowMany",
"en_US": [
"Throw away how many\n",
"{STRVAR_1 8, 0, 0}(s)?"
]
},
{
"id": "pl_msg_00000007_00053",
"id": "Bag_Text_ThrewAwayItem",
"en_US": "Threw away {STRVAR_1 51, 1, 0} {STRVAR_1 8, 0, 0}."
},
{
"id": "pl_msg_00000007_00054",
"id": "Bag_Text_ThrowAwayOK",
"en_US": [
"Is it OK to throw away\n",
"{STRVAR_1 52, 1, 0} {STRVAR_1 8, 0, 0}?"
]
},
{
"id": "pl_msg_00000007_00055",
"id": "Bag_Text_Dummy35",
"garbage": 41
},
{
@ -243,15 +243,15 @@
"en_US": "Your Coins: {STRVAR_1 54, 0, 0}"
},
{
"id": "pl_msg_00000007_00058",
"id": "Bag_Text_BootedUpTM",
"en_US": "Booted up a TM.{WAIT 3}{WAIT 4}\n"
},
{
"id": "pl_msg_00000007_00059",
"id": "Bag_Text_BootedUpHM",
"en_US": "Booted up an HM.{WAIT 3}{WAIT 4}\n"
},
{
"id": "pl_msg_00000007_00060",
"id": "Bag_Text_TMHMContainedMove",
"en_US": [
"It contained\n",
"{STRVAR_1 6, 0, 0}.\r",
@ -260,21 +260,21 @@
]
},
{
"id": "pl_msg_00000007_00061",
"id": "Bag_Text_UsedRepel",
"en_US": [
"{STRVAR_1 3, 0, 0} used the\n",
"{STRVAR_1 8, 1, 0}."
]
},
{
"id": "pl_msg_00000007_00062",
"id": "Bag_Text_RepelEffectsLinger",
"en_US": [
"Since a Repels effects still linger,\n",
"you cant use this now."
]
},
{
"id": "pl_msg_00000007_00063",
"id": "Bag_Text_UsedWhiteFlute",
"en_US": [
"{STRVAR_1 3, 0, 0} used the\n",
"{STRVAR_1 8, 1, 0}.\r",
@ -282,7 +282,7 @@
]
},
{
"id": "pl_msg_00000007_00064",
"id": "Bag_Text_UsedBlackFlute",
"en_US": [
"{STRVAR_1 3, 0, 0} used the\n",
"{STRVAR_1 8, 1, 0}.\r",
@ -290,123 +290,123 @@
]
},
{
"id": "pl_msg_00000007_00065",
"id": "Bag_Text_BoxFull",
"en_US": "The Box is full."
},
{
"id": "pl_msg_00000007_00066",
"id": "Bag_Text_Dummy36",
"garbage": 13
},
{
"id": "pl_msg_00000007_00067",
"id": "Bag_Text_Unused1",
"en_US": "No.{STRVAR_1 51, 0, 0}{STRVAR_1 6, 1, 0}"
},
{
"id": "pl_msg_00000007_00068",
"id": "Bag_Text_Unused2",
"en_US": "No.{STRVAR_1 51, 0, 0}{STRVAR_1 6, 1, 0}"
},
{
"id": "pl_msg_00000007_00069",
"id": "Bag_Text_Unused3",
"en_US": "{STRVAR_1 51, 0, 0}{STRVAR_1 6, 1, 0}"
},
{
"id": "pl_msg_00000007_00070",
"id": "Bag_Text_Dummy37",
"garbage": 6
},
{
"id": "pl_msg_00000007_00071",
"id": "Bag_Text_Dummy38",
"garbage": 30
},
{
"id": "pl_msg_00000007_00072",
"id": "Bag_Text_Dummy39",
"garbage": 13
},
{
"id": "pl_msg_00000007_00073",
"id": "Bag_Text_Dummy40",
"garbage": 23
},
{
"id": "pl_msg_00000007_00074",
"id": "Bag_Text_CantSellItem",
"en_US": [
"{STRVAR_1 8, 0, 0}? Oh, no.\n",
"I cant buy that."
]
},
{
"id": "pl_msg_00000007_00075",
"id": "Bag_Text_SellHowMany",
"en_US": [
"{STRVAR_1 8, 0, 0}?\n",
"How many would you like to sell?"
]
},
{
"id": "pl_msg_00000007_00076",
"id": "Bag_Text_ConfirmSellPrice",
"en_US": [
"I can pay ${STRVAR_1 55, 0, 0}.\n",
"Would that be OK?"
]
},
{
"id": "pl_msg_00000007_00077",
"id": "Bag_Text_TurnedOverItems",
"en_US": [
"Turned over the {STRVAR_1 8, 0, 0}\n",
"and received ${STRVAR_1 55, 1, 0}."
]
},
{
"id": "pl_msg_00000007_00078",
"id": "Bag_Text_MoneyLabel",
"en_US": "MONEY"
},
{
"id": "pl_msg_00000007_00079",
"id": "Bag_Text_MoneyNum",
"en_US": "${STRVAR_1 55, 0, 0}"
},
{
"id": "pl_msg_00000007_00080",
"id": "Bag_Text_SellNum",
"en_US": "x{STRVAR_1 51, 0, 0}"
},
{
"id": "pl_msg_00000007_00081",
"id": "Bag_Text_SellValue",
"en_US": "${STRVAR_1 55, 0, 0}"
},
{
"id": "pl_msg_00000007_00082",
"id": "Bag_Text_Yes",
"en_US": "Yes"
},
{
"id": "pl_msg_00000007_00083",
"id": "Bag_Text_No",
"en_US": "No"
},
{
"id": "pl_msg_00000007_00084",
"id": "Bag_Text_ThrowAwayCount",
"en_US": "x{STRVAR_1 52, 0, 0}"
},
{
"id": "pl_msg_00000007_00085",
"id": "Bag_Text_Dummy41",
"garbage": 4
},
{
"id": "pl_msg_00000007_00086",
"id": "Bag_Text_PP",
"en_US": "PP"
},
{
"id": "pl_msg_00000007_00087",
"id": "Bag_Text_Power",
"en_US": "POWER"
},
{
"id": "pl_msg_00000007_00088",
"id": "Bag_Text_Accuracy",
"en_US": "ACCURACY"
},
{
"id": "pl_msg_00000007_00089",
"id": "Bag_Text_Category",
"en_US": "CATEGORY"
},
{
"id": "pl_msg_00000007_00090",
"id": "Bag_Text_MaxPPNum",
"en_US": "{STRVAR_1 51, 0, 0}"
},
{
"id": "pl_msg_00000007_00091",
"id": "Bag_Text_PowerAccuracyNum",
"en_US": "{STRVAR_1 52, 0, 0}"
},
{
@ -421,15 +421,15 @@
]
},
{
"id": "pl_msg_00000007_00094",
"id": "Bag_Text_CloseBagDescription",
"en_US": "Close Bag"
},
{
"id": "pl_msg_00000007_00095",
"id": "Bag_Text_Plant",
"en_US": "PLANT"
},
{
"id": "pl_msg_00000007_00096",
"id": "Bag_Text_Open",
"en_US": "OPEN"
},
{
@ -440,7 +440,7 @@
]
},
{
"id": "pl_msg_00000007_00098",
"id": "Bag_Text_Type",
"en_US": "TYPE"
},
{
@ -451,31 +451,31 @@
]
},
{
"id": "pl_msg_00000007_00100",
"id": "Bag_Text_Dummy42",
"garbage": 18
},
{
"id": "pl_msg_00000007_00101",
"id": "Bag_Text_Dummy43",
"garbage": 14
},
{
"id": "pl_msg_00000007_00102",
"id": "Bag_Text_Dummy44",
"garbage": 20
},
{
"id": "pl_msg_00000007_00103",
"id": "Bag_Text_Dummy45",
"garbage": 10
},
{
"id": "pl_msg_00000007_00104",
"id": "Bag_Text_Dummy46",
"garbage": 15
},
{
"id": "pl_msg_00000007_00105",
"id": "Bag_Text_Dummy47",
"garbage": 29
},
{
"id": "pl_msg_00000007_00106",
"id": "Bag_Text_BatteryHasRunDry",
"en_US": [
"The battery has run dry!\n",
"For it to recharge, you need to walk\f",
@ -483,19 +483,19 @@
]
},
{
"id": "pl_msg_00000007_00107",
"id": "Bag_Text_GrassyPatchRemainedQuiet",
"en_US": "The grassy patch remained quiet..."
},
{
"id": "pl_msg_00000007_00108",
"id": "Bag_Text_PoffinCountLabel",
"en_US": "No. of Poffins:"
},
{
"id": "pl_msg_00000007_00109",
"id": "Bag_Text_PoffinCountNum",
"en_US": "{STRVAR_1 52, 0, 0}/100"
},
{
"id": "pl_msg_00000007_00110",
"id": "Bag_Text_ChooseBerryToCook",
"en_US": [
"Please choose the Berry you want to\n",
"cook from your Bag."

3135
src/applications/bag/main.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,455 @@
#include "applications/bag/sprites.h"
#include <nitro.h>
#include <string.h>
#include "constants/narc.h"
#include "generated/pokemon_types.h"
#include "applications/bag/main.h"
#include "bag_context.h"
#include "genders.h"
#include "gx_layers.h"
#include "item.h"
#include "move_classes.h"
#include "move_table.h"
#include "sprite.h"
#include "sprite_system.h"
#include "type_icon.h"
#include "vram_transfer.h"
#include "res/graphics/bag/bag_graphics.naix.h"
#include "res/graphics/shop_menu/shop_gra.naix.h"
static void InitSpriteSystem(BagController *controller);
static void LoadSpriteResources(BagController *controller);
static void InitSprites(BagController *controller);
static void CalcPocketHighlightMovement(BagController *controller);
static u8 CalcPocketHighlightXForPocket(BagController *controller, u8 pocketIdx);
static void StepPocketHighlightMovingAnim(BagController *controller);
static const SpriteTemplate sBagUISpriteTemplates[] = {
[BAG_SPRITE_BAG] = {
.x = 48,
.y = 50,
.z = 0,
.animIdx = 0,
.priority = 1,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49401, 49401, 49401, 49401, 0, 0 },
.bgPriority = 1,
.vramTransfer = FALSE,
},
[BAG_SPRITE_POCKET_HIGHLIGHT] = {
.x = 13,
.y = 97,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49402, 49402, 49402, 49402, 0, 0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
[BAG_SPRITE_POCKET_SELECTOR_LEFT_ARROW] = {
.x = 2,
.y = 96,
.z = 0,
.animIdx = 1,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49405, 49402, 49405, 49405, 0, 0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
[BAG_SPRITE_POCKET_SELECTOR_RIGHT_ARROW] = {
.x = 98,
.y = 96,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49405, 49402, 49405, 49405, 0, 0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
[BAG_SPRITE_ITEM_HIGHLIGHT] = {
.x = 177,
.y = 24,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49403, 49402, 49403, 49403, 0, 0 },
.bgPriority = 1,
.vramTransfer = FALSE,
},
[BAG_SPRITE_MOVING_ITEM_POS_BAR] = {
.x = 177,
.y = 14,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49404, 49402, 49404, 49404, 0, 0 },
.bgPriority = 1,
.vramTransfer = FALSE,
},
[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE] = {
.x = 0,
.y = 0,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DSUB,
.resources = { 49406, 49403, 49406, 49406, 0, 0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
[BAG_SPRITE_ITEM] = {
.x = 22,
.y = 172,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49407, 49404, 49407, 49407, 0, 0 },
.bgPriority = 1,
.vramTransfer = FALSE,
},
[BAG_SPRITE_ITEM_COUNT_ARROW_UP] = {
.x = 220,
.y = 156,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49408, 49405, 49408, 49408, 0, 0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
[BAG_SPRITE_ITEM_COUNT_ARROW_DOWN] = {
.x = 220,
.y = 180,
.z = 0,
.animIdx = 1,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49408, 49405, 49408, 49408, 0, 0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
[BAG_SPRITE_MOVE_TYPE] = {
.x = 64,
.y = 152,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49409, 49406, 49409, 49409, 0, 0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
[BAG_SPRITE_MOVE_CATEGORY] = {
.x = 168,
.y = 152,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 49410, 49406, 49409, 49409, 0, 0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
};
void BagUI_InitSprites(BagController *controller)
{
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, TRUE);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_OBJ, TRUE);
VramTransfer_New(32, HEAP_ID_BAG);
InitSpriteSystem(controller);
LoadSpriteResources(controller);
InitSprites(controller);
}
static void InitSpriteSystem(BagController *controller)
{
SpriteResourceCapacities capacities = { 10, 6, 9, 9, 0, 0 };
controller->spriteSystem = SpriteSystem_Alloc(HEAP_ID_BAG);
controller->spriteMan = SpriteManager_New(controller->spriteSystem);
RenderOamTemplate oamTemplate = {
.mainOamStart = 0,
.mainOamCount = 128,
.mainAffineOamStart = 0,
.mainAffineOamCount = 32,
.subOamStart = 0,
.subOamCount = 128,
.subAffineOamStart = 0,
.subAffineOamCount = 32,
};
CharTransferTemplateWithModes transferTemplate = {
.maxTasks = 12,
.sizeMain = 1024 * 128,
.sizeSub = 1024 * 16,
.modeMain = GX_OBJVRAMMODE_CHAR_1D_32K,
.modeSub = GX_OBJVRAMMODE_CHAR_1D_32K
};
SpriteSystem_Init(controller->spriteSystem, &oamTemplate, &transferTemplate, 32);
SpriteSystem_InitSprites(controller->spriteSystem, controller->spriteMan, NUM_BAG_UI_SPRITES);
SpriteSystem_InitManagerWithCapacities(controller->spriteSystem, controller->spriteMan, &capacities);
}
static void LoadSpriteResources(BagController *controller)
{
u32 bagSpriteIdx, bagPaletteIdx;
if (controller->trainerGender == GENDER_MALE) {
bagSpriteIdx = bag_sprite_male_NCGR;
bagPaletteIdx = bag_sprite_male_NCLR;
} else {
bagSpriteIdx = bag_sprite_female_NCGR;
bagPaletteIdx = bag_sprite_female_NCLR;
}
SpriteSystem_LoadCharResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, bagSpriteIdx, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49401);
SpriteSystem_LoadCharResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, pocket_highlight_NCGR, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49402);
SpriteSystem_LoadCharResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, item_highlight_NCGR, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49403);
SpriteSystem_LoadCharResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, moving_item_pos_bar_NCGR, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49404);
SpriteSystem_LoadCharResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, pocket_selector_arrows_NCGR, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49405);
SpriteSystem_LoadCharResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, button_shockwave_NCGR, FALSE, NNS_G2D_VRAM_TYPE_2DSUB, 49406);
SpriteSystem_LoadCharResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_GRAPHIC__SHOP_GRA, scroll_arrow_NCGR, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49408);
SpriteSystem_LoadCharResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_ITEMTOOL__ITEMDATA__ITEM_ICON, Item_FileID(ITEM_NONE, ITEM_FILE_TYPE_ICON), FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49407);
TypeIcon_LoadChar(controller->spriteSystem, controller->spriteMan, NNS_G2D_VRAM_TYPE_2DMAIN, TYPE_NORMAL, 49409);
CategoryIcon_LoadChar(controller->spriteSystem, controller->spriteMan, NNS_G2D_VRAM_TYPE_2DMAIN, CLASS_PHYSICAL, 49410);
SpriteSystem_LoadPlttResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, bagPaletteIdx, FALSE, PLTT_1, NNS_G2D_VRAM_TYPE_2DMAIN, 49401);
SpriteSystem_LoadPlttResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, ui_elements_NCLR, FALSE, PLTT_2, NNS_G2D_VRAM_TYPE_2DMAIN, 49402);
SpriteSystem_LoadPlttResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_ITEMTOOL__ITEMDATA__ITEM_ICON, Item_FileID(ITEM_NONE, ITEM_FILE_TYPE_PALETTE), FALSE, PLTT_1, NNS_G2D_VRAM_TYPE_2DMAIN, 49404);
SpriteSystem_LoadPlttResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_GRAPHIC__SHOP_GRA, sprites_NCLR, FALSE, PLTT_2, NNS_G2D_VRAM_TYPE_2DMAIN, 49405);
TypeIcon_LoadPlttSrc(controller->spriteSystem, controller->spriteMan, NNS_G2D_VRAM_TYPE_2DMAIN, 49406);
SpriteSystem_LoadPlttResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, button_shockwave_NCLR, FALSE, PLTT_1, NNS_G2D_VRAM_TYPE_2DSUB, 49403);
SpriteSystem_LoadCellResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, bag_sprite_cell_NCER, FALSE, 49401);
SpriteSystem_LoadCellResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, pocket_highlight_cell_NCER, FALSE, 49402);
SpriteSystem_LoadCellResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, item_highlight_cell_NCER, FALSE, 49403);
SpriteSystem_LoadCellResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, moving_item_pos_bar_cell_NCER, FALSE, 49404);
SpriteSystem_LoadCellResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, pocket_selector_arrows_cell_NCER, FALSE, 49405);
SpriteSystem_LoadCellResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, button_shockwave_cell_NCER, FALSE, 49406);
SpriteSystem_LoadCellResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_ITEMTOOL__ITEMDATA__ITEM_ICON, Item_IconNCERFile(), FALSE, 49407);
SpriteSystem_LoadCellResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_GRAPHIC__SHOP_GRA, scroll_arrow_cell_NCER, FALSE, 49408);
SpriteSystem_LoadAnimResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, bag_sprite_anim_NANR, FALSE, 49401);
SpriteSystem_LoadAnimResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, pocket_highlight_anim_NANR, FALSE, 49402);
SpriteSystem_LoadAnimResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, item_highlight_anim_NANR, FALSE, 49403);
SpriteSystem_LoadAnimResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, moving_item_pos_bar_anim_NANR, FALSE, 49404);
SpriteSystem_LoadAnimResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, pocket_selector_arrows_anim_NANR, FALSE, 49405);
SpriteSystem_LoadAnimResObjFromOpenNarc(controller->spriteSystem, controller->spriteMan, controller->bagGraphicsNARC, button_shockwave_anim_NANR, FALSE, 49406);
SpriteSystem_LoadAnimResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_ITEMTOOL__ITEMDATA__ITEM_ICON, Item_IconNANRFile(), FALSE, 49407);
SpriteSystem_LoadAnimResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_GRAPHIC__SHOP_GRA, scroll_arrow_anim_NANR, FALSE, 49408);
TypeIcon_LoadAnim(controller->spriteSystem, controller->spriteMan, 49409, 49409);
}
static void InitSprites(BagController *interface)
{
for (u32 i = 0; i < NUM_BAG_UI_SPRITES; i++) {
interface->sprites[i] = SpriteSystem_NewSprite(interface->spriteSystem, interface->spriteMan, &sBagUISpriteTemplates[i]);
}
ManagedSprite_SetDrawFlag(interface->sprites[BAG_SPRITE_MOVING_ITEM_POS_BAR], FALSE);
ManagedSprite_SetDrawFlag(interface->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE], FALSE);
ManagedSprite_SetDrawFlag(interface->sprites[BAG_SPRITE_MOVE_TYPE], FALSE);
ManagedSprite_SetDrawFlag(interface->sprites[BAG_SPRITE_MOVE_CATEGORY], FALSE);
if ((interface->bagCtx->mode == 4) || (interface->bagCtx->mode == 5)) {
ManagedSprite_SetDrawFlag(interface->sprites[BAG_SPRITE_POCKET_HIGHLIGHT], FALSE);
}
if (interface->numPockets == 1) {
ManagedSprite_SetDrawFlag(interface->sprites[BAG_SPRITE_POCKET_SELECTOR_LEFT_ARROW], FALSE);
ManagedSprite_SetDrawFlag(interface->sprites[BAG_SPRITE_POCKET_SELECTOR_RIGHT_ARROW], FALSE);
}
BagUI_ToggleItemCountArrows(interface, FALSE);
ManagedSprite_SetAnim(interface->sprites[BAG_SPRITE_BAG], interface->bagCtx->accessiblePockets[interface->bagCtx->currPocketIdx].pocketType);
ManagedSprite_SetPositionXY(interface->sprites[BAG_SPRITE_POCKET_HIGHLIGHT], CalcPocketHighlightXForPocket(interface, interface->bagCtx->currPocketIdx), 97);
ManagedSprite_SetPositionXY(interface->sprites[BAG_SPRITE_ITEM_HIGHLIGHT], 177, 24 + (interface->bagCtx->accessiblePockets[interface->bagCtx->currPocketIdx].cursorPos - 1) * 16);
VecFx32 spriteScale = { FX32_ONE, FX32_ONE, FX32_ONE };
Sprite_SetAffineScaleEx(interface->sprites[BAG_SPRITE_BAG]->sprite, &spriteScale, AFFINE_OVERWRITE_MODE_DOUBLE);
}
void BagUI_FreeSprites(BagController *controller)
{
for (u32 i = 0; i < NUM_BAG_UI_SPRITES; i++) {
Sprite_DeleteAndFreeResources(controller->sprites[i]);
}
SpriteSystem_FreeResourcesAndManager(controller->spriteSystem, controller->spriteMan);
SpriteSystem_Free(controller->spriteSystem);
}
void BagUI_TickSpriteAnimations(BagController *controller)
{
for (u32 i = 0; i < NUM_BAG_UI_SPRITES; i++) {
ManagedSprite_TickFrame(controller->sprites[i]);
}
}
void BagUI_UpdateItemSprite(BagController *controller, u16 item)
{
SpriteSystem_ReplaceCharResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_ITEMTOOL__ITEMDATA__ITEM_ICON, Item_FileID(item, ITEM_FILE_TYPE_ICON), FALSE, 49407);
SpriteSystem_ReplacePlttResObj(controller->spriteSystem, controller->spriteMan, NARC_INDEX_ITEMTOOL__ITEMDATA__ITEM_ICON, Item_FileID(item, ITEM_FILE_TYPE_PALETTE), FALSE, 49404);
}
void BagUI_SetHighlightSpritesPalette(BagController *controller, u8 palette)
{
ManagedSprite_SetExplicitPalette(controller->sprites[BAG_SPRITE_ITEM_HIGHLIGHT], palette);
ManagedSprite_SetExplicitPalette(controller->sprites[BAG_SPRITE_POCKET_HIGHLIGHT], palette);
}
u8 BagUI_IsPocketHighlightDoneMoving(BagController *controller)
{
return controller->pocketHighlight.isMoving == FALSE;
}
void BagUI_StartMovingPocketHighlight(BagController *controller)
{
controller->pocketHighlight.currentStep = 0;
controller->pocketHighlight.isMoving = TRUE;
CalcPocketHighlightMovement(controller);
}
void BagUI_StepPocketHighlightMovement(BagController *controller)
{
switch (controller->pocketHighlight.isMoving) {
case FALSE:
break;
case TRUE:
StepPocketHighlightMovingAnim(controller);
break;
}
}
static void StepPocketHighlightMovingAnim(BagController *controller)
{
VecFx32 pocketHighlighPos = *(Sprite_GetPosition(controller->sprites[BAG_SPRITE_POCKET_HIGHLIGHT]->sprite));
if (controller->pocketHighlight.direction == 0) {
pocketHighlighPos.x -= controller->pocketHighlight.positions[controller->pocketHighlight.currentStep];
} else {
pocketHighlighPos.x += controller->pocketHighlight.positions[controller->pocketHighlight.currentStep];
}
Sprite_SetPosition(controller->sprites[BAG_SPRITE_POCKET_HIGHLIGHT]->sprite, &pocketHighlighPos);
controller->pocketHighlight.currentStep++;
if (controller->pocketHighlight.currentStep == 8) {
pocketHighlighPos.x = CalcPocketHighlightXForPocket(controller, controller->nextPocket) * FX32_ONE;
Sprite_SetPosition(controller->sprites[BAG_SPRITE_POCKET_HIGHLIGHT]->sprite, &pocketHighlighPos);
controller->pocketHighlight.isMoving = 0;
}
}
static u8 CalcPocketHighlightXForPocket(BagController *controller, u8 pocketIdx)
{
return controller->pocketSelectorIconsX + controller->pocketSelectorIconsSpacing * pocketIdx + 6;
}
static void CalcPocketHighlightMovement(BagController *controller)
{
VecFx32 pocketHighlighterPos = *(Sprite_GetPosition(controller->sprites[BAG_SPRITE_POCKET_HIGHLIGHT]->sprite));
fx32 targetX = CalcPocketHighlightXForPocket(controller, controller->nextPocket) * FX32_ONE;
fx32 displacement;
if (targetX < pocketHighlighterPos.x) {
displacement = (pocketHighlighterPos.x - targetX) / 100;
controller->pocketHighlight.direction = 0;
} else {
displacement = (targetX - pocketHighlighterPos.x) / 100;
controller->pocketHighlight.direction = 1;
}
controller->pocketHighlight.positions[0] = 0;
controller->pocketHighlight.positions[1] = displacement * 40;
controller->pocketHighlight.positions[2] = displacement * 25;
controller->pocketHighlight.positions[3] = displacement * 15;
controller->pocketHighlight.positions[4] = displacement * 10;
controller->pocketHighlight.positions[5] = displacement * 7;
controller->pocketHighlight.positions[6] = displacement * 3;
controller->pocketHighlight.positions[7] = 0;
}
void BagUI_ShowItemCountArrows(BagController *controller, u8 position)
{
if (position == BAG_ITEM_COUNT_ARROWS_POS_TRASH) {
ManagedSprite_SetPositionXY(controller->sprites[BAG_SPRITE_ITEM_COUNT_ARROW_UP], 220, 156);
ManagedSprite_SetPositionXY(controller->sprites[BAG_SPRITE_ITEM_COUNT_ARROW_DOWN], 220, 180);
} else {
ManagedSprite_SetPositionXY(controller->sprites[BAG_SPRITE_ITEM_COUNT_ARROW_UP], 162, 108);
ManagedSprite_SetPositionXY(controller->sprites[BAG_SPRITE_ITEM_COUNT_ARROW_DOWN], 162, 132);
}
BagUI_ToggleItemCountArrows(controller, TRUE);
}
void BagUI_ToggleItemCountArrows(BagController *controller, u8 show)
{
ManagedSprite_SetDrawFlag(controller->sprites[BAG_SPRITE_ITEM_COUNT_ARROW_UP], show);
ManagedSprite_SetDrawFlag(controller->sprites[BAG_SPRITE_ITEM_COUNT_ARROW_DOWN], show);
}
void BagUI_UpdateTypeAndCategoryIcons(BagController *controller, u16 item, u8 draw)
{
ManagedSprite_SetDrawFlag(controller->sprites[BAG_SPRITE_MOVE_TYPE], draw);
ManagedSprite_SetDrawFlag(controller->sprites[BAG_SPRITE_MOVE_CATEGORY], draw);
if (draw == FALSE) {
return;
}
u16 move = Item_MoveForTMHM(item);
u16 moveType = MoveTable_LoadParam(move, MOVEATTRIBUTE_TYPE);
u16 moveCategory = MoveTable_LoadParam(move, MOVEATTRIBUTE_CLASS);
SpriteSystem_ReplaceCharResObj(controller->spriteSystem, controller->spriteMan, TypeIcon_GetNARC(), TypeIcon_GetChar(moveType), TRUE, 49409);
ManagedSprite_SetExplicitPalette(controller->sprites[BAG_SPRITE_MOVE_TYPE], TypeIcon_GetPltt(moveType) + 6);
SpriteSystem_ReplaceCharResObj(controller->spriteSystem, controller->spriteMan, CategoryIcon_GetNARC(), CategoryIcon_GetChar(moveCategory), TRUE, 49410);
ManagedSprite_SetExplicitPalette(controller->sprites[BAG_SPRITE_MOVE_CATEGORY], CategoryIcon_GetPltt(moveCategory) + 6);
}
void BagUI_DrawBtnShockwave(BagController *controller, s16 x, s16 y)
{
ManagedSprite_SetDrawFlag(controller->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE], TRUE);
ManagedSprite_SetPositionXY(controller->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE], x, y);
ManagedSprite_SetAnimationFrame(controller->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE], 0);
ManagedSprite_SetAnim(controller->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE], 0);
}
void BagUI_TickBtnShockwaveAnim(BagController *controller)
{
if (ManagedSprite_GetDrawFlag(controller->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE]) == TRUE) {
ManagedSprite_TickNFrames(controller->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE], FX32_ONE);
if (ManagedSprite_GetAnimationFrame(controller->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE]) == 2) {
ManagedSprite_SetDrawFlag(controller->sprites[BAG_SPRITE_PRESSED_BUTTON_SHOCKWAVE], FALSE);
}
}
}

View File

@ -0,0 +1,673 @@
#include "applications/bag/windows.h"
#include <nitro.h>
#include <string.h>
#include "applications/bag/main.h"
#include "applications/bag/sprites.h"
#include "bag.h"
#include "bag_context.h"
#include "bg_window.h"
#include "font.h"
#include "font_special_chars.h"
#include "game_options.h"
#include "heap.h"
#include "item.h"
#include "menu.h"
#include "message.h"
#include "move_table.h"
#include "narc.h"
#include "poffin.h"
#include "render_text.h"
#include "render_window.h"
#include "sound_playback.h"
#include "strbuf.h"
#include "string_list.h"
#include "string_template.h"
#include "text.h"
#include "trainer_info.h"
#include "res/graphics/bag/bag_graphics.naix.h"
#include "res/text/bank/bag.h"
#define ITEM_LIST_WINDOW_WIDTH 17
#define ITEM_LIST_WINDOW_HEIGHT TEXT_LINES_TILES(BAG_UI_NUM_VISIBLE_ITEMS)
#define ITEM_DESCRIPTION_WINDOW_WIDTH (HW_LCD_WIDTH / TILE_WIDTH_PIXELS)
#define ITEM_DESCRIPTION_WINDOW_HEIGHT TEXT_LINES_TILES(3)
#define MSG_BOX_WINDOW_WIDTH 14
#define MSG_BOX_NARROW_WINDOW_WIDTH 13
#define MSG_BOX_WIDE_WINDOW_WIDTH 27
#define MSG_BOX_WINDOW_HEIGHT TEXT_LINES_TILES(2)
#define POCKET_SELECTOR_WINDOW_WIDTH 12
#define POCKET_SELECTOR_WINDOW_HEIGHT 2
#define POCKET_NAMES_WINDOW_WIDTH (12 * 3)
#define POCKET_NAMES_WINDOW_HEIGHT 3
#define YES_NO_WINDOW_WIDTH 7
#define YES_NO_WINDOW_HEIGHT TEXT_LINES_TILES(2)
#define SELL_WINDOW_WIDTH 12
#define SELL_WINDOW_HEIGHT TEXT_LINES_TILES(2)
#define MONEY_WINDOW_WIDTH 10
#define MONEY_WINDOW_HEIGHT TEXT_LINES_TILES(2)
#define POFFIN_COUNT_WINDOW_WIDTH 11
#define POFFIN_COUNT_WINDOW_HEIGHT TEXT_LINES_TILES(2)
#define BASE_TILE_ITEM_LIST 1
#define BASE_TILE_ITEM_DESCRIPTION (BASE_TILE_ITEM_LIST + (ITEM_LIST_WINDOW_WIDTH * ITEM_LIST_WINDOW_HEIGHT))
#define BASE_TILE_POCKET_NAMES (BASE_TILE_ITEM_DESCRIPTION + ITEM_DESCRIPTION_WINDOW_WIDTH * ITEM_DESCRIPTION_WINDOW_HEIGHT)
#define BASE_TILE_MSG_BOX (BASE_TILE_POCKET_NAMES + POCKET_NAMES_WINDOW_WIDTH * POCKET_NAMES_WINDOW_HEIGHT)
#define BASE_TILE_MSG_BOX_NARROW BASE_TILE_MSG_BOX
#define BASE_TILE_POCKET_SELECTOR (BASE_TILE_MSG_BOX + MSG_BOX_WINDOW_WIDTH * MSG_BOX_WINDOW_HEIGHT)
#define BASE_TILE_MSG_BOX_WIDE (BASE_TILE_POCKET_SELECTOR + POCKET_SELECTOR_WINDOW_WIDTH * POCKET_SELECTOR_WINDOW_HEIGHT)
#define BASE_TILE_YES_NO (BASE_TILE_MSG_BOX_WIDE + MSG_BOX_WIDE_WINDOW_WIDTH * MSG_BOX_WINDOW_HEIGHT)
#define BASE_TILE_SELL_COUNT_VALUE (BASE_TILE_YES_NO + YES_NO_WINDOW_WIDTH * YES_NO_WINDOW_HEIGHT)
#define BASE_TILE_ITEM_ACTIONS_MENU BASE_TILE_SELL_COUNT_VALUE
#define BASE_TILE_MONEY (BASE_TILE_SELL_COUNT_VALUE + SELL_WINDOW_WIDTH * SELL_WINDOW_HEIGHT)
#define BASE_TILE_POFFIN_COUNT 903
#define BASE_TILE_THROW_AWAY_COUNT 903
#define BASE_TILE_STANDARD_WINDOW_FRAME (1024 - NUM_TILES_STANDARD_WINDOW_FRAME)
#define BASE_TILE_MSG_BOX_FRAME (BASE_TILE_STANDARD_WINDOW_FRAME - NUM_TILES_MESSAGE_BOX_FRAME)
#define DIGIT_WIDTH 6
#define ITEM_COUNT_X_OFFSET 7
#define ITEM_COUNT_NUMBER_START_POS (ITEM_LIST_WINDOW_WIDTH * TILE_WIDTH_PIXELS - 2)
#define ITEM_COUNT_START_POS (ITEM_COUNT_NUMBER_START_POS - 3 * DIGIT_WIDTH - ITEM_COUNT_X_OFFSET)
static void DrawHMIcon(BagController *param0, u32 param1);
static BOOL BagUITextPrinterCallback(TextPrinterTemplate *param0, u16 param1);
static const WindowTemplate sYesNoMenuTemplate = {
.bgLayer = BG_LAYER_MAIN_0,
.tilemapLeft = 23,
.tilemapTop = 13,
.width = YES_NO_WINDOW_WIDTH,
.height = YES_NO_WINDOW_HEIGHT,
.palette = PLTT_3,
.baseTile = BASE_TILE_YES_NO
};
void BagUI_CreateWindows(BagController *controller)
{
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_ITEM_LIST], BG_LAYER_MAIN_2, 14, 0, ITEM_LIST_WINDOW_WIDTH, ITEM_LIST_WINDOW_HEIGHT, PLTT_3, BASE_TILE_ITEM_LIST);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION], BG_LAYER_MAIN_0, 0, 18, ITEM_DESCRIPTION_WINDOW_WIDTH, ITEM_DESCRIPTION_WINDOW_HEIGHT, PLTT_3, BASE_TILE_ITEM_DESCRIPTION);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_POCKET_NAMES], BG_LAYER_MAIN_2, 0, 13, POCKET_NAMES_WINDOW_WIDTH, POCKET_NAMES_WINDOW_HEIGHT, PLTT_3, BASE_TILE_POCKET_NAMES);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_MSG_BOX], BG_LAYER_MAIN_0, 6, 19, MSG_BOX_WINDOW_WIDTH, MSG_BOX_WINDOW_HEIGHT, PLTT_11, BASE_TILE_MSG_BOX);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_MSG_BOX_NARROW], BG_LAYER_MAIN_0, 6, 19, MSG_BOX_NARROW_WINDOW_WIDTH, MSG_BOX_WINDOW_HEIGHT, PLTT_11, BASE_TILE_MSG_BOX_NARROW);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_POCKET_INDICATOR], BG_LAYER_MAIN_0, 0, 11, POCKET_SELECTOR_WINDOW_WIDTH, POCKET_SELECTOR_WINDOW_HEIGHT, PLTT_13, BASE_TILE_POCKET_SELECTOR);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_MSG_BOX_WIDE], BG_LAYER_MAIN_0, 2, 19, MSG_BOX_WIDE_WINDOW_WIDTH, MSG_BOX_WINDOW_HEIGHT, PLTT_11, BASE_TILE_MSG_BOX_WIDE);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_SELL_COUNT_VALUE], BG_LAYER_MAIN_0, 19, 13, SELL_WINDOW_WIDTH, SELL_WINDOW_HEIGHT, PLTT_3, BASE_TILE_SELL_COUNT_VALUE);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_MONEY], BG_LAYER_MAIN_0, 1, 1, MONEY_WINDOW_WIDTH, TEXT_LINES_TILES(2), PLTT_3, BASE_TILE_MONEY);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_THROW_AWAY_COUNT], BG_LAYER_MAIN_0, 24, 19, 7, 4, PLTT_3, BASE_TILE_THROW_AWAY_COUNT);
Window_Add(controller->bgConfig, &controller->windows[BAG_UI_WINDOW_POFFIN_COUNT], BG_LAYER_MAIN_0, 1, 12, POFFIN_COUNT_WINDOW_WIDTH, TEXT_LINES_TILES(2), PLTT_3, BASE_TILE_POFFIN_COUNT);
}
void BagUI_DeleteWindows(Window windows[NUM_BAG_UI_WINDOWS])
{
for (u16 i = 0; i < NUM_BAG_UI_WINDOWS; i++) {
Window_Remove(&windows[i]);
}
}
void BagUI_LoadPocketNames(BagController *controller)
{
MessageLoader *msgLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_BAG_POCKET_NAMES, HEAP_ID_BAG);
for (u16 i = 0; i < POCKET_MAX; i++) {
controller->pocketNames[i] = MessageLoader_GetNewStrbuf(msgLoader, i);
}
MessageLoader_Free(msgLoader);
}
void BagUI_FreePocketNames(BagController *controller)
{
for (u16 i = 0; i < POCKET_MAX; i++) {
Strbuf_Free(controller->pocketNames[i]);
}
}
void BagUI_ClearPocketNameBox(BagController *controller)
{
for (u16 i = 0; i < 12; i++) {
Bg_FillTilemapRect(controller->bgConfig, BG_LAYER_MAIN_2, BASE_TILE_POCKET_NAMES + 12 + i, i, 13, 1, 1, PLTT_3);
Bg_FillTilemapRect(controller->bgConfig, BG_LAYER_MAIN_2, BASE_TILE_POCKET_NAMES + POCKET_NAMES_WINDOW_WIDTH + 12 + i, i, 13 + 1, 1, 1, PLTT_3);
}
}
static void PrintPocketNameCentered(BagController *controller, Strbuf *string, u16 centerY)
{
u32 stringWidth = Font_CalcStrbufWidth(FONT_SYSTEM, string, 0);
Text_AddPrinterWithParamsAndColor(&controller->windows[BAG_UI_WINDOW_POCKET_NAMES], FONT_SYSTEM, string, centerY - stringWidth / 2, 2, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(1, 2, 0), NULL);
}
void BagUI_PrintPocketNames(BagController *controller)
{
Window_FillTilemap(&controller->windows[BAG_UI_WINDOW_POCKET_NAMES], 0);
BagPocketSelector *pocketSelector = &controller->pocketSelector;
Strbuf *currentPocketName = controller->pocketNames[controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx].pocketType];
Strbuf *nextPocketName = controller->pocketNames[controller->bagCtx->accessiblePockets[pocketSelector->nextPocket].pocketType];
u16 curPocketNamePos;
if (pocketSelector->nextPocketDirection == 0) {
curPocketNamePos = 96 + 50 + 12 * pocketSelector->animFrame;
PrintPocketNameCentered(controller, nextPocketName, curPocketNamePos - 96);
} else {
curPocketNamePos = 96 + 50 - 12 * pocketSelector->animFrame;
PrintPocketNameCentered(controller, nextPocketName, curPocketNamePos + 96);
}
PrintPocketNameCentered(controller, currentPocketName, curPocketNamePos);
Window_LoadTiles(&controller->windows[BAG_UI_WINDOW_POCKET_NAMES]);
}
static void *LoadPocketSelectorIcons(BagController *interface, NNSG2dCharacterData **charData)
{
void *file = NARC_AllocAndReadWholeMember(interface->bagGraphicsNARC, pocket_selector_icons_NCGR, HEAP_ID_BAG);
NNS_G2dGetUnpackedBGCharacterData(file, charData);
return file;
}
void BagUI_DrawPocketSelectorIcon(BagController *controller, u8 pocketIndex, u8 focused)
{
NNSG2dCharacterData *icons;
void *iconsFile = LoadPocketSelectorIcons(controller, &icons);
u8 iconX;
if (focused == TRUE) {
iconX = controller->bagCtx->accessiblePockets[pocketIndex].pocketType * 32 + 16;
} else {
iconX = controller->bagCtx->accessiblePockets[pocketIndex].pocketType * 32;
}
Window_BlitBitmapRect(&controller->windows[BAG_UI_WINDOW_POCKET_INDICATOR], icons->pRawData, iconX, 0, 32 * POCKET_MAX, 16, controller->pocketSelectorIconsX + controller->pocketSelectorIconsSpacing * pocketIndex, 3, 10, 10);
Window_ScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_POCKET_INDICATOR]);
Heap_FreeExplicit(HEAP_ID_BAG, iconsFile);
}
void BagUI_DrawPocketSelectorIcons(BagController *controller)
{
NNSG2dCharacterData *icons;
void *iconsFile = LoadPocketSelectorIcons(controller, &icons);
Window_FillTilemap(&controller->windows[BAG_UI_WINDOW_POCKET_INDICATOR], 0);
for (u8 i = 0; i < controller->numPockets; i++) {
u8 iconX;
if (i == controller->bagCtx->currPocketIdx) {
iconX = controller->bagCtx->accessiblePockets[i].pocketType * 32 + 16;
} else {
iconX = controller->bagCtx->accessiblePockets[i].pocketType * 32;
}
Window_BlitBitmapRect(&controller->windows[BAG_UI_WINDOW_POCKET_INDICATOR], icons->pRawData, iconX, 0, 32 * POCKET_MAX, 16, controller->pocketSelectorIconsX + controller->pocketSelectorIconsSpacing * i, 3, 10, 10);
}
Window_ScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_POCKET_INDICATOR]);
Heap_FreeExplicit(HEAP_ID_BAG, iconsFile);
}
static void BufferPocketSlotItemName(BagController *controller, u32 slotIdx, u32 templateParamIdx)
{
StringTemplate_SetItemName(controller->strTemplate, templateParamIdx, BagInterface_GetItemSlotParam(controller, slotIdx, BAG_APP_ITEM_SLOT_PARAM_ITEM));
}
static void BufferPocketSlotItemNamePlural(BagController *controller, u32 slotIdx, u32 templateParamIdx)
{
StringTemplate_SetItemNamePlural(controller->strTemplate, templateParamIdx, BagInterface_GetItemSlotParam(controller, slotIdx, BAG_APP_ITEM_SLOT_PARAM_ITEM));
}
void BagUI_PrintItemDescription(BagController *controller, u16 item)
{
Strbuf *strBuf;
if (item != 0xffff) {
strBuf = Strbuf_Init(130, HEAP_ID_BAG);
Item_LoadDescription(strBuf, item, HEAP_ID_BAG);
} else {
strBuf = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_CloseBagDescription);
}
Text_AddPrinterWithParamsAndColor(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION], FONT_SYSTEM, strBuf, 40, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(strBuf);
}
void BagUI_PrintTMHMMoveStats(BagController *controller, u16 item)
{
Window *window = &controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION];
u16 move = Item_MoveForTMHM(item);
Strbuf *string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Type);
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, string, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(string);
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_PP);
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, string, 0, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(string);
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Category);
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, string, 96, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(string);
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Power);
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, string, 96, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(string);
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Accuracy);
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, string, 96, 32, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(string);
u16 moveStat = MoveTable_CalcMaxPP(move, 0);
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_MaxPPNum);
StringTemplate_SetNumber(controller->strTemplate, 0, moveStat, 2, PADDING_MODE_SPACES, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, string);
Strbuf_Free(string);
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, controller->strBuffer, 48, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
moveStat = MoveTable_LoadParam(move, MOVEATTRIBUTE_POWER);
if (moveStat <= 1) {
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Not_Applicable);
} else {
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_PowerAccuracyNum);
}
StringTemplate_SetNumber(controller->strTemplate, 0, moveStat, 3, PADDING_MODE_NONE, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, string);
Strbuf_Free(string);
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, controller->strBuffer, 96 + 64, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
moveStat = MoveTable_LoadParam(move, MOVEATTRIBUTE_ACCURACY);
if (moveStat == 0) {
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Not_Applicable);
} else {
string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_PowerAccuracyNum);
}
StringTemplate_SetNumber(controller->strTemplate, 0, moveStat, 3, PADDING_MODE_NONE, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, string);
Strbuf_Free(string);
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, controller->strBuffer, 96 + 64, 32, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
}
void BagUI_LoadItemCountStrings(BagController *controller)
{
controller->itemCountX = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_ItemCountX);
controller->itemCountNumberFmt = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_ItemCountNum);
}
void BagUI_FreeItemCountStrings(BagController *controller)
{
Strbuf_Free(controller->itemCountX);
Strbuf_Free(controller->itemCountNumberFmt);
}
void BagUI_PrintItemCount(BagController *controller, u16 count, u16 yOffset, u32 color)
{
if (controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx].pocketType == POCKET_TMHMS) {
Text_AddPrinterWithParamsAndColor(&controller->windows[BAG_UI_WINDOW_ITEM_LIST], FONT_SYSTEM, controller->itemCountX, ITEM_COUNT_START_POS + DIGIT_WIDTH, yOffset, TEXT_SPEED_NO_TRANSFER, color, NULL);
} else {
Text_AddPrinterWithParamsAndColor(&controller->windows[BAG_UI_WINDOW_ITEM_LIST], FONT_SYSTEM, controller->itemCountX, ITEM_COUNT_START_POS, yOffset, TEXT_SPEED_NO_TRANSFER, color, NULL);
}
Strbuf *string = Strbuf_Init(10, HEAP_ID_BAG);
StringTemplate_SetNumber(controller->strTemplate, 0, count, 3, PADDING_MODE_NONE, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, string, controller->itemCountNumberFmt);
u32 stringWidth = Font_CalcStrbufWidth(FONT_SYSTEM, string, 0);
Text_AddPrinterWithParamsAndColor(&controller->windows[BAG_UI_WINDOW_ITEM_LIST], FONT_SYSTEM, string, ITEM_COUNT_NUMBER_START_POS - stringWidth, yOffset, TEXT_SPEED_NO_TRANSFER, color, NULL);
Strbuf_Free(string);
}
void BagUI_PrintTMHMNumber(BagController *controller, BagItem *itemSlot, u32 yOffset)
{
u16 item = itemSlot->item;
if (item < ITEM_HM01) {
item = item - ITEM_TM01 + 1;
FontSpecialChars_DrawPartyScreenText(controller->specialChars, SPECIAL_CHAR_NUMBER, item, 2, PADDING_MODE_ZEROES, &controller->windows[BAG_UI_WINDOW_ITEM_LIST], 0, yOffset + 5);
BagUI_PrintItemCount(controller, itemSlot->quantity, yOffset, TEXT_COLOR(1, 2, 0));
} else {
item = item - ITEM_HM01 + 1;
FontSpecialChars_DrawPartyScreenHPText(controller->specialChars, item, 2, PADDING_MODE_SPACES, &controller->windows[BAG_UI_WINDOW_ITEM_LIST], 16, yOffset + 5);
DrawHMIcon(controller, yOffset);
}
}
void BagUI_PrintBerryNumber(BagController *controller, BagItem *itemSlot, u32 yOffset)
{
FontSpecialChars_DrawPartyScreenText(controller->specialChars, SPECIAL_CHAR_NUMBER, Item_BerryNumber(itemSlot->item) + 1, 2, PADDING_MODE_ZEROES, &controller->windows[BAG_UI_WINDOW_ITEM_LIST], 0, yOffset + 5);
BagUI_PrintItemCount(controller, itemSlot->quantity, yOffset, TEXT_COLOR(1, 2, 0));
}
static void *LoadBagUIItemEntrySprites(BagController *controller, NNSG2dCharacterData **charData)
{
void *file = NARC_AllocAndReadWholeMember(controller->bagGraphicsNARC, item_entry_icons_NCGR, HEAP_ID_BAG);
NNS_G2dGetUnpackedBGCharacterData(file, charData);
return file;
}
static void DrawHMIcon(BagController *controller, u32 yOffset)
{
NNSG2dCharacterData *imageData;
void *file = LoadBagUIItemEntrySprites(controller, &imageData);
Window_BlitBitmapRect(&controller->windows[BAG_UI_WINDOW_ITEM_LIST], imageData->pRawData, 40, 0, 64, 16, 0, yOffset, 24, 16);
Heap_FreeExplicit(HEAP_ID_BAG, file);
}
void BagUI_PrintCloseBagEntry(BagController *controller, u32 yOffset)
{
Strbuf *string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_CloseBag);
Window_FillRectWithColor(&controller->windows[BAG_UI_WINDOW_ITEM_LIST], 0, 0, yOffset, ITEM_LIST_WINDOW_WIDTH * TILE_WIDTH_PIXELS, TEXT_LINES(1));
Text_AddPrinterWithParamsAndColor(&controller->windows[BAG_UI_WINDOW_ITEM_LIST], FONT_SYSTEM, string, 0, yOffset, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(1, 2, 0), NULL);
Strbuf_Free(string);
}
void BagUI_DrawRegisteredIcon(BagController *controller, u32 yOffset)
{
NNSG2dCharacterData *imageData;
void *file = LoadBagUIItemEntrySprites(controller, &imageData);
Window_BlitBitmapRect(&controller->windows[BAG_UI_WINDOW_ITEM_LIST], imageData->pRawData, 0, 0, 64, 16, 96, yOffset, 40, 16);
Heap_FreeExplicit(HEAP_ID_BAG, file);
}
void BagUI_LoadItemActionStrings(BagController *controller)
{
controller->itemActionStrings[0] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Use);
controller->itemActionStrings[1] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Walk);
controller->itemActionStrings[2] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Check);
controller->itemActionStrings[3] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Plant);
controller->itemActionStrings[4] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Open);
controller->itemActionStrings[5] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Trash);
controller->itemActionStrings[6] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Register);
controller->itemActionStrings[7] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Deselect);
controller->itemActionStrings[8] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Give);
controller->itemActionStrings[9] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_CheckTag);
controller->itemActionStrings[10] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Confirm);
controller->itemActionStrings[11] = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_Cancel);
}
void BagUI_FreeItemActionStrings(BagController *param0)
{
for (u16 i = 0; i < 12; i++) {
Strbuf_Free(param0->itemActionStrings[i]);
}
}
void BagUI_ShowItemActionsMenu(BagController *controller, u8 *actions, u8 numActions)
{
u16 msgBoxWindowIdx;
if (controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx].pocketType == POCKET_BERRIES) {
Window_Add(controller->bgConfig, &controller->itemActionsWindow, BG_LAYER_MAIN_0, 23, 23 - TEXT_LINES_TILES(numActions), 8, TEXT_LINES_TILES(numActions), PLTT_3, BASE_TILE_ITEM_ACTIONS_MENU);
msgBoxWindowIdx = BAG_UI_WINDOW_MSG_BOX_NARROW;
} else {
Window_Add(controller->bgConfig, &controller->itemActionsWindow, BG_LAYER_MAIN_0, 23 + 1, 23 - TEXT_LINES_TILES(numActions), 8 - 1, TEXT_LINES_TILES(numActions), PLTT_3, BASE_TILE_ITEM_ACTIONS_MENU);
msgBoxWindowIdx = BAG_UI_WINDOW_MSG_BOX;
}
controller->itemActionChoices = StringList_New(numActions, HEAP_ID_BAG);
for (u16 i = 0; i < numActions; i++) {
StringList_AddFromStrbuf(controller->itemActionChoices, controller->itemActionStrings[actions[i]], BagApplication_GetItemActionFunc(actions[i]));
}
MenuTemplate menuTemplate;
menuTemplate.choices = controller->itemActionChoices;
menuTemplate.window = &controller->itemActionsWindow;
menuTemplate.fontID = FONT_SYSTEM;
menuTemplate.xSize = 1;
menuTemplate.ySize = numActions;
menuTemplate.lineSpacing = 0;
menuTemplate.suppressCursor = FALSE;
if (numActions >= 4) {
menuTemplate.loopAround = TRUE;
} else {
menuTemplate.loopAround = FALSE;
}
controller->menu = Menu_New(&menuTemplate, 8, 0, 0, HEAP_ID_BAG, PAD_BUTTON_B);
if (controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx].pocketType == POCKET_TMHMS) {
Window_FillTilemap(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION], 0);
BagUI_PrintTMHMMoveStats(controller, controller->bagCtx->selectedItem);
Window_ScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION]);
BagUI_UpdateTypeAndCategoryIcons(controller, controller->bagCtx->selectedItem, TRUE);
} else {
Window_DrawMessageBoxWithScrollCursor(&controller->windows[msgBoxWindowIdx], TRUE, BASE_TILE_MSG_BOX_FRAME, PLTT_12);
Window_FillTilemap(&controller->windows[msgBoxWindowIdx], 15);
Strbuf *template = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_ItemIsSelected);
Strbuf *formatted = Strbuf_Init(28 * 2, HEAP_ID_BAG);
BagApplicationPocket *pocket = &controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx];
BufferPocketSlotItemName(controller, pocket->cursorScroll + pocket->cursorPos - 1, 0);
StringTemplate_Format(controller->strTemplate, formatted, template);
Text_AddPrinterWithParams(&controller->windows[msgBoxWindowIdx], FONT_MESSAGE, formatted, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Strbuf_Free(formatted);
Strbuf_Free(template);
Window_ScheduleCopyToVRAM(&controller->windows[msgBoxWindowIdx]);
}
Window_DrawStandardFrame(&controller->itemActionsWindow, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_14);
Window_ScheduleCopyToVRAM(&controller->itemActionsWindow);
}
void BagUI_CloseItemActionsMenu(BagController *controller)
{
u32 msgBoxWindowIdx;
if (controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx].pocketType == POCKET_BERRIES) {
msgBoxWindowIdx = BAG_UI_WINDOW_MSG_BOX_NARROW;
} else {
msgBoxWindowIdx = BAG_UI_WINDOW_MSG_BOX;
}
if (controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx].pocketType != POCKET_TMHMS) {
Window_EraseMessageBox(&controller->windows[msgBoxWindowIdx], TRUE);
Window_ClearAndScheduleCopyToVRAM(&controller->windows[msgBoxWindowIdx]);
}
Window_EraseStandardFrame(&controller->itemActionsWindow, TRUE);
Window_ClearAndScheduleCopyToVRAM(&controller->itemActionsWindow);
Menu_Free(controller->menu, NULL);
StringList_Free(controller->itemActionChoices);
Window_Remove(&controller->itemActionsWindow);
Window_FillTilemap(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION], 0);
BagUI_PrintItemDescription(controller, controller->bagCtx->selectedItem);
Window_ScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION]);
BagUI_UpdateTypeAndCategoryIcons(controller, ITEM_NONE, FALSE);
}
void BagUI_PrintMovingItemMsg(BagController *controller)
{
Window_FillTilemap(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION], 0);
Strbuf *template = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_MoveItemWhere);
Strbuf *formatted = Strbuf_Init(130, HEAP_ID_BAG);
BufferPocketSlotItemName(controller, controller->movedItemPos - 1, 0);
StringTemplate_Format(controller->strTemplate, formatted, template);
Text_AddPrinterWithParamsAndColor(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION], FONT_SYSTEM, formatted, 40, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Window_ScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION]);
Strbuf_Free(formatted);
Strbuf_Free(template);
}
void BagUI_ShowItemTrashWindows(BagController *controller)
{
Window_DrawStandardFrame(&controller->windows[BAG_UI_WINDOW_THROW_AWAY_COUNT], 1, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_14);
BagUI_PrintItemTrashCount(controller);
Window_DrawMessageBoxWithScrollCursor(&controller->windows[BAG_UI_WINDOW_MSG_BOX], 1, BASE_TILE_MSG_BOX_FRAME, PLTT_12);
Window_FillTilemap(&controller->windows[BAG_UI_WINDOW_MSG_BOX], 15);
Strbuf *template = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_ThrowAwayHowMany);
Strbuf *formatted = Strbuf_Init(14 * 2 * 2, HEAP_ID_BAG);
BagApplicationPocket *pocket = &controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx];
BufferPocketSlotItemName(controller, pocket->cursorScroll + pocket->cursorPos - 1, 0);
StringTemplate_Format(controller->strTemplate, formatted, template);
Text_AddPrinterWithParams(&controller->windows[BAG_UI_WINDOW_MSG_BOX], FONT_MESSAGE, formatted, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_MSG_BOX]);
Strbuf_Free(formatted);
Strbuf_Free(template);
}
void BagUI_PrintItemTrashCount(BagController *controller)
{
Window *window = &controller->windows[BAG_UI_WINDOW_THROW_AWAY_COUNT];
Window_FillTilemap(window, 15);
Strbuf *string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_ThrowAwayCount);
StringTemplate_SetNumber(controller->strTemplate, 0, controller->selectedItemCount, 3, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, string);
Text_AddPrinterWithParams(window, FONT_SYSTEM, controller->strBuffer, 16, 8, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(window);
Strbuf_Free(string);
}
void BagUI_CloseItemTrashWindows(BagController *controller)
{
Window_EraseMessageBox(&controller->windows[BAG_UI_WINDOW_MSG_BOX], TRUE);
Window_EraseStandardFrame(&controller->windows[BAG_UI_WINDOW_THROW_AWAY_COUNT], TRUE);
Window_ClearAndScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_MSG_BOX]);
Window_ClearAndScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_THROW_AWAY_COUNT]);
Window_ScheduleCopyToVRAM(&controller->windows[BAG_UI_WINDOW_ITEM_DESCRIPTION]);
}
void BagUI_PrintConfirmItemTrashMsg(BagController *controller)
{
Window_DrawMessageBoxWithScrollCursor(&controller->windows[BAG_UI_WINDOW_MSG_BOX_WIDE], TRUE, BASE_TILE_MSG_BOX_FRAME, PLTT_12);
Window_FillTilemap(&controller->windows[BAG_UI_WINDOW_MSG_BOX_WIDE], 15);
Strbuf *string = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_ThrowAwayOK);
BagApplicationPocket *pocket = &controller->bagCtx->accessiblePockets[controller->bagCtx->currPocketIdx];
if (controller->selectedItemCount == 1) {
BufferPocketSlotItemName(controller, pocket->cursorScroll + pocket->cursorPos - 1, 0);
} else {
BufferPocketSlotItemNamePlural(controller, pocket->cursorScroll + pocket->cursorPos - 1, 0);
}
StringTemplate_SetNumber(controller->strTemplate, 1, controller->selectedItemCount, 3, PADDING_MODE_NONE, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, string);
Strbuf_Free(string);
controller->msgBoxPrinterID = BagUI_PrintStrBufferToWideMsgBox(controller);
}
u8 BagUI_PrintStrBufferToWideMsgBox(BagController *interface)
{
RenderControlFlags_SetCanABSpeedUpPrint(TRUE);
RenderControlFlags_SetAutoScrollFlags(FALSE);
u8 textPrinterID = Text_AddPrinterWithParams(&interface->windows[BAG_UI_WINDOW_MSG_BOX_WIDE], FONT_MESSAGE, interface->strBuffer, 0, 0, Options_TextFrameDelay(interface->options), BagUITextPrinterCallback);
return textPrinterID;
}
static BOOL BagUITextPrinterCallback(TextPrinterTemplate *template, u16 param1)
{
switch (param1) {
case 1:
return Sound_IsAnyEffectPlaying();
case 2:
return Sound_IsBGMPausedByFanfare();
case 3:
Sound_PlayEffect(SEQ_SE_DP_PC_LOGIN);
break;
case 4:
return Sound_IsEffectPlaying(SEQ_SE_DP_PC_LOGIN);
}
return FALSE;
}
void BagUI_ShowYesNoMenu(BagController *controller)
{
controller->menu = Menu_MakeYesNoChoice(controller->bgConfig, &sYesNoMenuTemplate, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_14, HEAP_ID_BAG);
}
void BagUI_PrintSellCountAndValue(BagController *controller, u8 skipFrame)
{
Window *window = &controller->windows[BAG_UI_WINDOW_SELL_COUNT_VALUE];
if (skipFrame == FALSE) {
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_14);
}
Window_FillTilemap(window, 15);
Strbuf *sellCount = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_SellNum);
StringTemplate_SetNumber(controller->strTemplate, 0, controller->selectedItemCount, 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, sellCount);
Text_AddPrinterWithParams(window, FONT_SYSTEM, controller->strBuffer, 0, 8, TEXT_SPEED_NO_TRANSFER, NULL);
Strbuf_Free(sellCount);
Strbuf *sellValue = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_SellValue);
StringTemplate_SetNumber(controller->strTemplate, 0, controller->soldItemPrice * controller->selectedItemCount, 6, PADDING_MODE_SPACES, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, sellValue);
u32 stringWidth = Font_CalcStrbufWidth(FONT_SYSTEM, controller->strBuffer, 0);
Text_AddPrinterWithParams(window, FONT_SYSTEM, controller->strBuffer, SELL_WINDOW_WIDTH * TILE_WIDTH_PIXELS - stringWidth, 8, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(window);
Strbuf_Free(sellValue);
}
void BagUI_PrintMoney(BagController *controller, u8 skipLabel)
{
Window *window = &controller->windows[BAG_UI_WINDOW_MONEY];
if (skipLabel == FALSE) {
Window_FillTilemap(window, 15);
Window_DrawStandardFrame(window, 1, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_14);
Strbuf *label = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_MoneyLabel);
Text_AddPrinterWithParams(window, FONT_SYSTEM, label, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Strbuf_Free(label);
} else {
Window_FillRectWithColor(window, 15, 0, 16, MONEY_WINDOW_WIDTH * TILE_WIDTH_PIXELS, TEXT_LINES(1));
}
Strbuf *amount = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_MoneyNum);
StringTemplate_SetNumber(controller->strTemplate, 0, TrainerInfo_Money(controller->trainerInfo), 6, PADDING_MODE_SPACES, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, amount);
u32 stringWidth = Font_CalcStrbufWidth(FONT_SYSTEM, controller->strBuffer, 0);
Text_AddPrinterWithParams(window, FONT_SYSTEM, controller->strBuffer, MONEY_WINDOW_WIDTH * TILE_WIDTH_PIXELS - stringWidth, TEXT_LINES(1), TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(window);
Strbuf_Free(amount);
}
void BagUI_DrawPoffinCountMsgBox(BagController *controller)
{
Window *window = &controller->windows[BAG_UI_WINDOW_POFFIN_COUNT];
Window_FillTilemap(window, 15);
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_14);
Strbuf *label = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_PoffinCountLabel);
Text_AddPrinterWithParams(window, FONT_SYSTEM, label, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Strbuf_Free(label);
Strbuf *count = MessageLoader_GetNewStrbuf(controller->bagStringsLoader, Bag_Text_PoffinCountNum);
StringTemplate_SetNumber(controller->strTemplate, 0, PoffinCase_CountFilledSlots(SaveData_GetPoffinCase(controller->bagCtx->saveData)), 3, PADDING_MODE_SPACES, CHARSET_MODE_EN);
StringTemplate_Format(controller->strTemplate, controller->strBuffer, count);
Strbuf_Free(count);
u32 stringWidth = Font_CalcStrbufWidth(FONT_SYSTEM, controller->strBuffer, 0);
Text_AddPrinterWithParams(window, FONT_SYSTEM, controller->strBuffer, POFFIN_COUNT_WINDOW_WIDTH * TILE_WIDTH_PIXELS - stringWidth, 16, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(window);
}

View File

@ -10,6 +10,7 @@
#include "struct_decls/pc_boxes_decl.h"
#include "struct_defs/chatot_cry.h"
#include "applications/bag/application.h"
#include "applications/naming_screen.h"
#include "applications/pc_boxes/box_application.h"
#include "applications/pc_boxes/box_cursor.h"
@ -27,11 +28,10 @@
#include "applications/pc_boxes/touch_dial.h"
#include "applications/pokemon_summary_screen/main.h"
#include "global/utility.h"
#include "overlay084/const_ov84_02241130.h"
#include "savedata/save_table.h"
#include "bag.h"
#include "bag_system.h"
#include "bag_context.h"
#include "dexmode_checker.h"
#include "enums.h"
#include "game_options.h"
@ -60,7 +60,7 @@
#include "constdata/const_020F410C.h"
#include "res/text/bank/box_messages.h"
FS_EXTERN_OVERLAY(overlay84);
FS_EXTERN_OVERLAY(bag);
enum BoxSelectorState {
BOX_SELECTOR_START,
@ -2561,7 +2561,7 @@ enum GiveItemFromBag {
static void BoxAppMan_GiveItemFromBagAction(BoxApplicationManager *boxAppMan, u32 *state)
{
FS_EXTERN_OVERLAY(overlay84);
FS_EXTERN_OVERLAY(bag);
static const u8 bagPockets[] = {
POCKET_ITEMS,
@ -2587,19 +2587,19 @@ static void BoxAppMan_GiveItemFromBagAction(BoxApplicationManager *boxAppMan, u3
Bag *bag = SaveData_GetBag(boxAppMan->saveData);
boxAppMan->bagAppArgs = sub_0207D824(bag, bagPockets, HEAP_ID_BOX_DATA);
BagSystem_Init(boxAppMan->bagAppArgs, boxAppMan->saveData, 1, NULL);
Overlay_LoadByID(FS_OVERLAY_ID(overlay84), OVERLAY_LOAD_ASYNC);
boxAppMan->ApplicationManager = ApplicationManager_New(&Unk_ov84_02241130, boxAppMan->bagAppArgs, HEAP_ID_BOX_DATA);
BagContext_Init(boxAppMan->bagAppArgs, boxAppMan->saveData, 1, NULL);
Overlay_LoadByID(FS_OVERLAY_ID(bag), OVERLAY_LOAD_ASYNC);
boxAppMan->ApplicationManager = ApplicationManager_New(&gBagApplicationTemplate, boxAppMan->bagAppArgs, HEAP_ID_BOX_DATA);
(*state)++;
}
break;
case GIVE_FROM_BAG_SELECT_ITEM:
if (ApplicationManager_Exec(boxAppMan->ApplicationManager)) {
item = BagSystem_GetItem(boxAppMan->bagAppArgs);
item = BagContext_GetItem(boxAppMan->bagAppArgs);
ApplicationManager_Free(boxAppMan->ApplicationManager);
Heap_Free(boxAppMan->bagAppArgs);
Overlay_UnloadByID(FS_OVERLAY_ID(overlay84));
Overlay_UnloadByID(FS_OVERLAY_ID(bag));
if (item == ITEM_GRISEOUS_ORB && BoxPokemon_GetValue(boxAppMan->boxApp.pcMonPreview.mon, MON_DATA_SPECIES, NULL) != SPECIES_GIRATINA) {
(void)0;

View File

@ -8,7 +8,7 @@
#include "constants/savedata/save_table.h"
#include "generated/items.h"
#include "bag_system.h"
#include "bag_context.h"
#include "heap.h"
#include "item.h"
#include "savedata.h"
@ -321,36 +321,36 @@ void Pocket_Sort(BagItem *pocket, const u32 size)
void *sub_0207D824(Bag *bag, const u8 *pockets, enum HeapID heapID)
{
BagSystem *v0;
BagContext *v0;
int i;
v0 = BagSystem_New(heapID);
v0 = BagContext_New(heapID);
for (i = 0; pockets[i] != 0xff; i++) {
switch (pockets[i]) {
case POCKET_KEY_ITEMS:
BagSystem_InitPocket(v0, bag->keyItems, POCKET_KEY_ITEMS, i);
BagContext_InitPocket(v0, bag->keyItems, POCKET_KEY_ITEMS, i);
break;
case POCKET_ITEMS:
BagSystem_InitPocket(v0, bag->items, POCKET_ITEMS, i);
BagContext_InitPocket(v0, bag->items, POCKET_ITEMS, i);
break;
case POCKET_BERRIES:
BagSystem_InitPocket(v0, bag->berries, POCKET_BERRIES, i);
BagContext_InitPocket(v0, bag->berries, POCKET_BERRIES, i);
break;
case POCKET_MEDICINE:
BagSystem_InitPocket(v0, bag->medicine, POCKET_MEDICINE, i);
BagContext_InitPocket(v0, bag->medicine, POCKET_MEDICINE, i);
break;
case POCKET_BALLS:
BagSystem_InitPocket(v0, bag->pokeballs, POCKET_BALLS, i);
BagContext_InitPocket(v0, bag->pokeballs, POCKET_BALLS, i);
break;
case POCKET_BATTLE_ITEMS:
BagSystem_InitPocket(v0, bag->battleItems, POCKET_BATTLE_ITEMS, i);
BagContext_InitPocket(v0, bag->battleItems, POCKET_BATTLE_ITEMS, i);
break;
case POCKET_MAIL:
BagSystem_InitPocket(v0, bag->mail, POCKET_MAIL, i);
BagContext_InitPocket(v0, bag->mail, POCKET_MAIL, i);
break;
case POCKET_TMHMS:
BagSystem_InitPocket(v0, bag->tmHms, POCKET_TMHMS, i);
BagContext_InitPocket(v0, bag->tmHms, POCKET_TMHMS, i);
break;
}
}

View File

@ -1,4 +1,4 @@
#include "bag_system.h"
#include "bag_context.h"
#include <string.h>
@ -31,75 +31,75 @@ static u32 GetNumAccessories(SaveData *saveData);
static u32 GetNumBackdrops(SaveData *saveData);
static u32 GetNumBattlePoints(SaveData *saveData);
BagSystem *BagSystem_New(u8 heapID)
BagContext *BagContext_New(u8 heapID)
{
BagSystem *bagSystem = Heap_Alloc(heapID, sizeof(BagSystem));
memset(bagSystem, 0, sizeof(BagSystem));
return bagSystem;
BagContext *bagContext = Heap_Alloc(heapID, sizeof(BagContext));
memset(bagContext, 0, sizeof(BagContext));
return bagContext;
}
u32 BagSystem_GetSize(void)
u32 BagContext_GetSize(void)
{
return sizeof(BagSystem);
return sizeof(BagContext);
}
void BagSystem_SetMode(BagSystem *bagSystem, u8 mode)
void BagContext_SetMode(BagContext *bagContext, u8 mode)
{
bagSystem->mode = mode;
bagContext->mode = mode;
}
void BagSystem_Init(BagSystem *bagSystem, SaveData *saveData, u8 mode, BagCursor *bagCursor)
void BagContext_Init(BagContext *bagContext, SaveData *saveData, u8 mode, BagCursor *bagCursor)
{
BagSystem_SetMode(bagSystem, mode);
bagSystem->saveData = saveData;
bagSystem->bagCursor = bagCursor;
bagSystem->selectedItem = ITEM_NONE;
BagContext_SetMode(bagContext, mode);
bagContext->saveData = saveData;
bagContext->bagCursor = bagCursor;
bagContext->selectedItem = ITEM_NONE;
}
void BagSystem_InitPocket(BagSystem *bagSystem, BagItem *items, u8 pocketType, u8 pocketIdx)
void BagContext_InitPocket(BagContext *bagContext, BagItem *items, u8 pocketType, u8 pocketIdx)
{
bagSystem->accessiblePockets[pocketIdx].items = items;
bagSystem->accessiblePockets[pocketIdx].pocketType = pocketType;
bagContext->accessiblePockets[pocketIdx].items = items;
bagContext->accessiblePockets[pocketIdx].pocketType = pocketType;
}
void BagSystem_SetIsCycling(BagSystem *bagSystem)
void BagContext_SetIsCycling(BagContext *bagContext)
{
bagSystem->isCycling = TRUE;
bagContext->isCycling = TRUE;
}
void sub_0207CB6C(BagSystem *bagSystem, void *param1)
void BagContext_SetItemUseContext(BagContext *bagContext, ItemUseContext *itemUseCtx)
{
bagSystem->unk_70 = param1;
bagContext->itemUseCtx = itemUseCtx;
}
void BagSystem_SetSelectedMonSlot(BagSystem *bagSystem, u8 slot)
void BagContext_SetSelectedMonSlot(BagContext *bagContext, u8 slot)
{
bagSystem->selectedMonSlot = slot;
bagContext->selectedMonSlot = slot;
}
void BagSystem_SetMapLoadType(BagSystem *bagSystem, u16 mapLoadType)
void BagContext_SetMapLoadType(BagContext *bagContext, u16 mapLoadType)
{
bagSystem->mapLoadType = mapLoadType;
bagContext->mapLoadType = mapLoadType;
}
u16 BagSystem_GetItem(BagSystem *bagSystem)
u16 BagContext_GetItem(BagContext *bagContext)
{
return bagSystem->selectedItem;
return bagContext->selectedItem;
}
u16 BagSystem_GetExitCode(BagSystem *bagSystem)
u16 BagContext_GetExitCode(BagContext *bagContext)
{
return bagSystem->exitCode;
return bagContext->exitCode;
}
u8 BagSystem_GetSelectedMonSlot(BagSystem *bagSystem)
u8 BagContext_GetSelectedMonSlot(BagContext *bagContext)
{
return bagSystem->selectedMonSlot;
return bagContext->selectedMonSlot;
}
u8 sub_0207CBAC(BagSystem *bagSystem)
u8 BagContext_GetSoldAmount(BagContext *bagContext)
{
return bagSystem->unk_75;
return bagContext->soldAmount;
}
static u32 GetNumCoins(SaveData *saveData)
@ -137,7 +137,7 @@ static u32 GetNumBattlePoints(SaveData *saveData)
return sub_0202D230(sub_0202D750(saveData), 0, 0);
}
BOOL BagSystem_FormatUsageMessage(SaveData *saveData, Strbuf *dstString, u16 item, u32 heapID)
BOOL BagContext_FormatUsageMessage(SaveData *saveData, Strbuf *dstString, u16 item, u32 heapID)
{
MessageLoader *msgLoader;
StringTemplate *template;
@ -174,7 +174,7 @@ BOOL BagSystem_FormatUsageMessage(SaveData *saveData, Strbuf *dstString, u16 ite
return TRUE;
}
void BagSystem_FormatErrorMessage(TrainerInfo *playerInfo, Strbuf *dstString, u16 unused, u32 error, u32 heapID)
void BagContext_FormatErrorMessage(TrainerInfo *playerInfo, Strbuf *dstString, u16 unused, u32 error, u32 heapID)
{
MessageLoader *msgLoader;
StringTemplate *template;

View File

@ -24,7 +24,7 @@
#include "savedata/save_table.h"
#include "bag.h"
#include "bag_system.h"
#include "bag_context.h"
#include "bg_window.h"
#include "field_map_change.h"
#include "field_message.h"
@ -866,7 +866,7 @@ static BOOL UseBagMessageItem(ItemFieldUseContext *usageContext)
v0->unk_16 = 0;
v0->unk_10 = Strbuf_Init(128, HEAP_ID_FIELD2);
BagSystem_FormatUsageMessage(usageContext->fieldSystem->saveData, v0->unk_10, Bag_GetRegisteredItem(SaveData_GetBag(usageContext->fieldSystem->saveData)), 11);
BagContext_FormatUsageMessage(usageContext->fieldSystem->saveData, v0->unk_10, Bag_GetRegisteredItem(SaveData_GetBag(usageContext->fieldSystem->saveData)), HEAP_ID_FIELD2);
FieldSystem_CreateTask(usageContext->fieldSystem, PrintRegisteredKeyItemUseMessage, v0);
return FALSE;
@ -1108,7 +1108,7 @@ static void PrintRegisteredKeyItemError(ItemFieldUseContext *usageContext, u32 e
v0->unk_16 = 0;
v0->unk_10 = Strbuf_Init(128, HEAP_ID_FIELD2);
BagSystem_FormatErrorMessage(SaveData_GetTrainerInfo(usageContext->fieldSystem->saveData), v0->unk_10, usageContext->unk_28, error, HEAP_ID_FIELD2);
BagContext_FormatErrorMessage(SaveData_GetTrainerInfo(usageContext->fieldSystem->saveData), v0->unk_10, usageContext->unk_28, error, HEAP_ID_FIELD2);
FieldSystem_CreateTask(usageContext->fieldSystem, PrintRegisteredKeyItemUseMessage, v0);
}

View File

@ -283,7 +283,7 @@ pokeplatinum_c = files(
'evolution.c',
'unk_0207C63C.c',
'type_icon.c',
'bag_system.c',
'bag_context.c',
'bag.c',
'unk_0207DA28.c',
'unk_0207DFAC.c',
@ -835,9 +835,9 @@ pokeplatinum_c = files(
'overlay083/ov83_0223D4CC.c',
'overlay083/ov83_0223D6A8.c',
'overlay083/ov83_0223F7F4.c',
'overlay084/ov84_0223B5A0.c',
'overlay084/ov84_0223F040.c',
'overlay084/ov84_022403F4.c',
'applications/bag/main.c',
'applications/bag/windows.c',
'applications/bag/sprites.c',
'overlay085/ov85_02241440.c',
'overlay086/ov86_0223B140.c',
'applications/pc_hall_of_fame/manager.c',

View File

@ -14,7 +14,7 @@
#include "overlay005/ov5_021D2F14.h"
#include "bag.h"
#include "bag_system.h"
#include "bag_context.h"
#include "bg_window.h"
#include "camera.h"
#include "field_message.h"
@ -1619,7 +1619,7 @@ static void Shop_FinishScreenTransition(FieldTask *task)
Bag *bag = SaveData_GetBag(fieldSystem->saveData);
shopMenu->unk_04 = sub_0207D824(bag, sShop_BagPockets, HEAP_ID_FIELD2);
BagSystem_Init(shopMenu->unk_04, fieldSystem->saveData, 2, fieldSystem->bagCursor);
BagContext_Init(shopMenu->unk_04, fieldSystem->saveData, 2, fieldSystem->bagCursor);
sub_0203D1E4(fieldSystem, shopMenu->unk_04);
FieldTask_InitJump(task, FieldTask_ShopMisc, shopMenu);

View File

@ -3,21 +3,20 @@
#include <nitro.h>
#include <string.h>
#include "applications/bag/application.h"
#include "overlay082/ov82_0223B140.h"
#include "overlay083/struct_ov83_0223C344.h"
#include "overlay084/const_ov84_02241130.h"
#include "overlay084/ov84_0223B5A0.h"
#include "overlay085/ov85_02241440.h"
#include "bag.h"
#include "bag_system.h"
#include "bag_context.h"
#include "heap.h"
#include "item.h"
#include "overlay_manager.h"
#include "unk_020972FC.h"
FS_EXTERN_OVERLAY(overlay83);
FS_EXTERN_OVERLAY(overlay84);
FS_EXTERN_OVERLAY(bag);
FS_EXTERN_OVERLAY(overlay85);
static int ov82_0223B380(UnkStruct_ov83_0223C344 *param0);
@ -90,10 +89,10 @@ static int ov82_0223B380(UnkStruct_ov83_0223C344 *param0)
void *v0;
u32 v1;
FS_EXTERN_OVERLAY(overlay84);
FS_EXTERN_OVERLAY(bag);
const ApplicationManagerTemplate Unk_ov84_02241130 = {
ov84_0223B5A0, ov84_0223B76C, ov84_0223B900, FS_OVERLAY_ID(overlay84)
BagApplication_Init, BagApplication_Main, BagApplication_Exit, FS_OVERLAY_ID(bag)
};
static const u8 v3[] = {
4, 0xff
@ -107,7 +106,7 @@ static int ov82_0223B380(UnkStruct_ov83_0223C344 *param0)
v1 = 4;
}
BagSystem_Init(v0, param0->unk_10->saveData, v1, param0->unk_0C);
BagContext_Init(v0, param0->unk_10->saveData, v1, param0->unk_0C);
param0->appMan = ApplicationManager_New(&Unk_ov84_02241130, v0, param0->heapID);
param0->unk_18 = v0;
@ -117,23 +116,23 @@ static int ov82_0223B380(UnkStruct_ov83_0223C344 *param0)
static int ov82_0223B3DC(UnkStruct_ov83_0223C344 *param0)
{
BagSystem *v0 = NULL;
BagContext *v0 = NULL;
BOOL v1;
if (!ov82_0223B140(&param0->appMan)) {
return 1;
}
v0 = BagSystem_New(param0->heapID);
memcpy(v0, param0->unk_18, BagSystem_GetSize());
v0 = BagContext_New(param0->heapID);
memcpy(v0, param0->unk_18, BagContext_GetSize());
Heap_Free(param0->unk_18);
param0->unk_18 = NULL;
param0->unk_08 = BagSystem_GetItem(v0); //
param0->unk_08 = BagContext_GetItem(v0); //
Heap_Free(v0);
switch (BagSystem_GetExitCode(v0)) {
switch (BagContext_GetExitCode(v0)) {
case 1:
return 2;
case 0:

File diff suppressed because it is too large Load Diff

View File

@ -1,696 +0,0 @@
#include "overlay084/ov84_0223F040.h"
#include <nitro.h>
#include <string.h>
#include "overlay084/ov84_0223B5A0.h"
#include "overlay084/ov84_022403F4.h"
#include "overlay084/struct_ov84_0223B5A0.h"
#include "overlay084/struct_ov84_0223BE5C.h"
#include "overlay084/struct_ov84_0223C920.h"
#include "bag.h"
#include "bag_system.h"
#include "bg_window.h"
#include "font.h"
#include "font_special_chars.h"
#include "game_options.h"
#include "heap.h"
#include "item.h"
#include "menu.h"
#include "message.h"
#include "move_table.h"
#include "narc.h"
#include "poffin.h"
#include "render_text.h"
#include "render_window.h"
#include "sound_playback.h"
#include "strbuf.h"
#include "string_list.h"
#include "string_template.h"
#include "text.h"
#include "trainer_info.h"
static void ov84_0223F9B0(UnkStruct_ov84_0223B5A0 *param0, u32 param1);
static BOOL ov84_022400E0(TextPrinterTemplate *param0, u16 param1);
static const WindowTemplate Unk_ov84_02241150 = {
0x0,
0x17,
0xD,
0x7,
0x4,
0x3,
0x31B
};
void ov84_0223F040(UnkStruct_ov84_0223B5A0 *param0)
{
Window_Add(param0->unk_00, &param0->unk_04[0], 2, 14, 0, 17, 18, 3, 1);
Window_Add(param0->unk_00, &param0->unk_04[1], 0, 0, 18, 32, 6, 3, 1 + 17 * 18);
Window_Add(param0->unk_00, &param0->unk_04[2], 2, 0, 13, 12 * 3, 3, 3, 499);
Window_Add(param0->unk_00, &param0->unk_04[3], 0, 6, 19, 14, 4, 11, 607);
Window_Add(param0->unk_00, &param0->unk_04[4], 0, 6, 19, 13, 4, 11, 607);
Window_Add(param0->unk_00, &param0->unk_04[5], 0, 0, 11, 12, 2, 13, 663);
Window_Add(param0->unk_00, &param0->unk_04[6], 0, 2, 19, 27, 4, 11, 687);
Window_Add(param0->unk_00, &param0->unk_04[7], 0, 19, 13, 12, 4, 3, 823);
Window_Add(param0->unk_00, &param0->unk_04[8], 0, 1, 1, 10, 4, 3, 871);
Window_Add(param0->unk_00, &param0->unk_04[9], 0, 24, 19, 7, 4, 3, 903);
Window_Add(param0->unk_00, &param0->unk_04[10], 0, 1, 12, 11, 4, 3, 903);
}
void ov84_0223F1DC(Window *param0)
{
u16 v0;
for (v0 = 0; v0 < 11; v0++) {
Window_Remove(&param0[v0]);
}
}
void ov84_0223F1F8(UnkStruct_ov84_0223B5A0 *param0)
{
MessageLoader *v0;
u16 v1;
v0 = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_BAG_POCKET_NAMES, HEAP_ID_6);
for (v1 = 0; v1 < 8; v1++) {
param0->unk_404[v1] = MessageLoader_GetNewStrbuf(v0, v1);
}
MessageLoader_Free(v0);
}
void ov84_0223F238(UnkStruct_ov84_0223B5A0 *param0)
{
u16 v0;
for (v0 = 0; v0 < 8; v0++) {
Strbuf_Free(param0->unk_404[v0]);
}
}
void ov84_0223F25C(UnkStruct_ov84_0223B5A0 *param0)
{
u16 v0;
u16 v1 = (12 * 3) / 3;
for (v0 = 0; v0 < v1; v0++) {
Bg_FillTilemapRect(param0->unk_00, 2, ((1 + 17 * 18) + 32 * 6) + v1 + v0, 0 + v0, 13, 1, 1, 3);
Bg_FillTilemapRect(param0->unk_00, 2, ((1 + 17 * 18) + 32 * 6) + (12 * 3) + v1 + v0, 0 + v0, 13 + 1, 1, 1, 3);
}
}
static void ov84_0223F2C0(UnkStruct_ov84_0223B5A0 *param0, Strbuf *param1, u16 param2)
{
u32 v0 = Font_CalcStrbufWidth(FONT_SYSTEM, param1, 0);
Text_AddPrinterWithParamsAndColor(&param0->unk_04[2], FONT_SYSTEM, param1, param2 - v0 / 2, 2, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(1, 2, 0), NULL);
}
void ov84_0223F2FC(UnkStruct_ov84_0223B5A0 *param0)
{
UnkStruct_ov84_0223C920 *v0;
Strbuf *v1;
Strbuf *v2;
u16 v3;
Window_FillTilemap(&param0->unk_04[2], 0);
v0 = &param0->unk_429;
v2 = param0->unk_404[param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx].pocketType];
v1 = param0->unk_404[param0->unk_C4->accessiblePockets[v0->unk_00].pocketType];
if (v0->unk_01 == 0) {
v3 = 96 + 50 + 12 * v0->unk_03;
ov84_0223F2C0(param0, v1, v3 - 96);
} else {
v3 = 96 + 50 - 12 * v0->unk_03;
ov84_0223F2C0(param0, v1, 96 + v3);
}
ov84_0223F2C0(param0, v2, v3);
Window_LoadTiles(&param0->unk_04[2]);
}
static void *ov84_0223F390(UnkStruct_ov84_0223B5A0 *param0, NNSG2dCharacterData **param1)
{
void *v0 = NARC_AllocAndReadWholeMember(param0->unk_D4, 21, 6);
NNS_G2dGetUnpackedBGCharacterData(v0, param1);
return v0;
}
void ov84_0223F3AC(UnkStruct_ov84_0223B5A0 *param0, u8 param1, u8 param2)
{
NNSG2dCharacterData *v0;
void *v1;
u8 v2;
v1 = ov84_0223F390(param0, &v0);
if (param2 == 1) {
v2 = param0->unk_C4->accessiblePockets[param1].pocketType * 32 + 16;
} else {
v2 = param0->unk_C4->accessiblePockets[param1].pocketType * 32;
}
Window_BlitBitmapRect(&param0->unk_04[5], v0->pRawData, v2, 0, 32 * 8, 16, param0->unk_427 + param0->unk_428 * param1, 3, 10, 10);
Window_ScheduleCopyToVRAM(&param0->unk_04[5]);
Heap_FreeExplicit(HEAP_ID_6, v1);
}
void ov84_0223F438(UnkStruct_ov84_0223B5A0 *param0)
{
NNSG2dCharacterData *v0;
void *v1;
u8 v2;
u8 v3;
v1 = ov84_0223F390(param0, &v0);
Window_FillTilemap(&param0->unk_04[5], 0);
for (v2 = 0; v2 < param0->unk_424; v2++) {
if (v2 == param0->unk_C4->currPocketIdx) {
v3 = param0->unk_C4->accessiblePockets[v2].pocketType * 32 + 16;
} else {
v3 = param0->unk_C4->accessiblePockets[v2].pocketType * 32;
}
Window_BlitBitmapRect(&param0->unk_04[5], v0->pRawData, v3, 0, 32 * 8, 16, param0->unk_427 + param0->unk_428 * v2, 3, 10, 10);
}
Window_ScheduleCopyToVRAM(&param0->unk_04[5]);
Heap_FreeExplicit(HEAP_ID_6, v1);
}
static void ov84_0223F4E8(UnkStruct_ov84_0223B5A0 *param0, u32 param1, u32 param2)
{
StringTemplate_SetItemName(param0->unk_118, param2, ov84_0223BE5C(param0, param1, 0));
}
static void ov84_0223F508(UnkStruct_ov84_0223B5A0 *param0, u32 param1, u32 param2)
{
StringTemplate_SetItemNamePlural(param0->unk_118, param2, ov84_0223BE5C(param0, param1, 0));
}
void ov84_0223F528(UnkStruct_ov84_0223B5A0 *param0, u16 param1)
{
Strbuf *v0;
if (param1 != 0xffff) {
v0 = Strbuf_Init(130, HEAP_ID_6);
Item_LoadDescription(v0, param1, 6);
} else {
v0 = MessageLoader_GetNewStrbuf(param0->unk_114, 94);
}
Text_AddPrinterWithParamsAndColor(&param0->unk_04[1], FONT_SYSTEM, v0, 40, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(v0);
}
void ov84_0223F584(UnkStruct_ov84_0223B5A0 *param0, u16 param1)
{
Window *v0;
Strbuf *v1;
u16 v2;
u16 v3;
v0 = &param0->unk_04[1];
v2 = Item_MoveForTMHM(param1);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 98);
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, v1, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(v1);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 86);
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, v1, 0, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(v1);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 89);
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, v1, 96, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(v1);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 87);
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, v1, 96, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(v1);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 88);
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, v1, 96, 32, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Strbuf_Free(v1);
v3 = MoveTable_CalcMaxPP(v2, 0);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 90);
StringTemplate_SetNumber(param0->unk_118, 0, v3, 2, 1, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
Strbuf_Free(v1);
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, param0->unk_3F8, 48, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
v3 = MoveTable_LoadParam(v2, MOVEATTRIBUTE_POWER);
if (v3 <= 1) {
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 24);
} else {
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 91);
}
StringTemplate_SetNumber(param0->unk_118, 0, v3, 3, 0, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
Strbuf_Free(v1);
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, param0->unk_3F8, 96 + 64, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
v3 = MoveTable_LoadParam(v2, MOVEATTRIBUTE_ACCURACY);
if (v3 == 0) {
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 24);
} else {
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 91);
}
StringTemplate_SetNumber(param0->unk_118, 0, v3, 3, 0, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
Strbuf_Free(v1);
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, param0->unk_3F8, 96 + 64, 32, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
}
void ov84_0223F7D4(UnkStruct_ov84_0223B5A0 *param0)
{
param0->unk_3FC = MessageLoader_GetNewStrbuf(param0->unk_114, 38);
param0->unk_400 = MessageLoader_GetNewStrbuf(param0->unk_114, 37);
}
void ov84_0223F800(UnkStruct_ov84_0223B5A0 *param0)
{
Strbuf_Free(param0->unk_3FC);
Strbuf_Free(param0->unk_400);
}
void ov84_0223F81C(UnkStruct_ov84_0223B5A0 *param0, u16 param1, u16 param2, u32 param3)
{
Strbuf *v0;
u32 v1;
if (param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx].pocketType == 3) {
Text_AddPrinterWithParamsAndColor(&param0->unk_04[0], FONT_SYSTEM, param0->unk_3FC, (((17 * 8 - 2) - 6 - 1 - 6 * 3) + 6), param2, TEXT_SPEED_NO_TRANSFER, param3, NULL);
} else {
Text_AddPrinterWithParamsAndColor(&param0->unk_04[0], FONT_SYSTEM, param0->unk_3FC, ((17 * 8 - 2) - 6 - 1 - 6 * 3), param2, TEXT_SPEED_NO_TRANSFER, param3, NULL);
}
v0 = Strbuf_Init(10, HEAP_ID_6);
StringTemplate_SetNumber(param0->unk_118, 0, param1, 3, 0, 1);
StringTemplate_Format(param0->unk_118, v0, param0->unk_400);
v1 = Font_CalcStrbufWidth(FONT_SYSTEM, v0, 0);
Text_AddPrinterWithParamsAndColor(&param0->unk_04[0], FONT_SYSTEM, v0, (17 * 8 - 2) - v1, param2, TEXT_SPEED_NO_TRANSFER, param3, NULL);
Strbuf_Free(v0);
}
void ov84_0223F8D0(UnkStruct_ov84_0223B5A0 *param0, BagItem *param1, u32 param2)
{
u16 v0 = param1->item;
if (v0 < 420) {
v0 = v0 - 328 + 1;
FontSpecialChars_DrawPartyScreenText(param0->unk_110, 2, v0, 2, 2, &param0->unk_04[0], 0, param2 + 5);
ov84_0223F81C(param0, param1->quantity, param2, TEXT_COLOR(1, 2, 0));
} else {
v0 = v0 - 420 + 1;
FontSpecialChars_DrawPartyScreenHPText(param0->unk_110, v0, 2, 1, &param0->unk_04[0], 16, param2 + 5);
ov84_0223F9B0(param0, param2);
}
}
void ov84_0223F94C(UnkStruct_ov84_0223B5A0 *param0, BagItem *param1, u32 param2)
{
FontSpecialChars_DrawPartyScreenText(param0->unk_110, 2, Item_BerryNumber(param1->item) + 1, 2, 2, &param0->unk_04[0], 0, param2 + 5);
ov84_0223F81C(param0, param1->quantity, param2, TEXT_COLOR(1, 2, 0));
}
static void *ov84_0223F994(UnkStruct_ov84_0223B5A0 *param0, NNSG2dCharacterData **param1)
{
void *v0 = NARC_AllocAndReadWholeMember(param0->unk_D4, 38, 6);
NNS_G2dGetUnpackedBGCharacterData(v0, param1);
return v0;
}
static void ov84_0223F9B0(UnkStruct_ov84_0223B5A0 *param0, u32 param1)
{
NNSG2dCharacterData *v0;
void *v1;
u8 v2;
v1 = ov84_0223F994(param0, &v0);
Window_BlitBitmapRect(&param0->unk_04[0], v0->pRawData, 40, 0, 64, 16, 0, param1, 24, 16);
Heap_FreeExplicit(HEAP_ID_6, v1);
}
void ov84_0223F9F0(UnkStruct_ov84_0223B5A0 *param0, u32 param1)
{
Strbuf *v0 = MessageLoader_GetNewStrbuf(param0->unk_114, 41);
Window_FillRectWithColor(&param0->unk_04[0], 0, 0, param1, 17 * 8, 16);
Text_AddPrinterWithParamsAndColor(&param0->unk_04[0], FONT_SYSTEM, v0, 0, param1, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(1, 2, 0), NULL);
Strbuf_Free(v0);
}
void ov84_0223FA44(UnkStruct_ov84_0223B5A0 *param0, u32 param1)
{
NNSG2dCharacterData *v0;
void *v1;
u8 v2;
v1 = ov84_0223F994(param0, &v0);
Window_BlitBitmapRect(&param0->unk_04[0], v0->pRawData, 0, 0, 64, 16, 96, param1, 40, 16);
Heap_FreeExplicit(HEAP_ID_6, v1);
}
void ov84_0223FA88(UnkStruct_ov84_0223B5A0 *param0)
{
param0->unk_124[0] = MessageLoader_GetNewStrbuf(param0->unk_114, 0);
param0->unk_124[1] = MessageLoader_GetNewStrbuf(param0->unk_114, 6);
param0->unk_124[2] = MessageLoader_GetNewStrbuf(param0->unk_114, 16);
param0->unk_124[3] = MessageLoader_GetNewStrbuf(param0->unk_114, 95);
param0->unk_124[4] = MessageLoader_GetNewStrbuf(param0->unk_114, 96);
param0->unk_124[5] = MessageLoader_GetNewStrbuf(param0->unk_114, 1);
param0->unk_124[6] = MessageLoader_GetNewStrbuf(param0->unk_114, 2);
param0->unk_124[7] = MessageLoader_GetNewStrbuf(param0->unk_114, 18);
param0->unk_124[8] = MessageLoader_GetNewStrbuf(param0->unk_114, 3);
param0->unk_124[9] = MessageLoader_GetNewStrbuf(param0->unk_114, 4);
param0->unk_124[10] = MessageLoader_GetNewStrbuf(param0->unk_114, 5);
param0->unk_124[11] = MessageLoader_GetNewStrbuf(param0->unk_114, 8);
}
void ov84_0223FB50(UnkStruct_ov84_0223B5A0 *param0)
{
u16 v0;
for (v0 = 0; v0 < 12; v0++) {
Strbuf_Free(param0->unk_124[v0]);
}
}
void ov84_0223FB70(UnkStruct_ov84_0223B5A0 *param0, u8 *param1, u8 param2)
{
MenuTemplate v0;
BagInterfacePocketInfo *v1;
Strbuf *v2;
Strbuf *v3;
u16 v4;
u16 v5;
if (param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx].pocketType == 4) {
Window_Add(param0->unk_00, &param0->unk_B4[0], 0, 23, 23 - param2 * 2, 8, param2 * 2, 3, 823);
v5 = 4;
} else {
Window_Add(param0->unk_00, &param0->unk_B4[0], 0, 23 + 1, 23 - param2 * 2, 8 - 1, param2 * 2, 3, 823);
v5 = 3;
}
param0->unk_154 = StringList_New(param2, HEAP_ID_6);
for (v4 = 0; v4 < param2; v4++) {
StringList_AddFromStrbuf(param0->unk_154, param0->unk_124[param1[v4]], ov84_0223D84C(param1[v4]));
}
v0.choices = param0->unk_154;
v0.window = &param0->unk_B4[0];
v0.fontID = FONT_SYSTEM;
v0.xSize = 1;
v0.ySize = param2;
v0.lineSpacing = 0;
v0.suppressCursor = FALSE;
if (param2 >= 4) {
v0.loopAround = TRUE;
} else {
v0.loopAround = FALSE;
}
param0->unk_158 = Menu_New(&v0, 8, 0, 0, HEAP_ID_6, PAD_BUTTON_B);
if (param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx].pocketType == 3) {
Window_FillTilemap(&param0->unk_04[1], 0);
ov84_0223F584(param0, param0->unk_C4->selectedItem);
Window_ScheduleCopyToVRAM(&param0->unk_04[1]);
ov84_02240D5C(param0, param0->unk_C4->selectedItem, 1);
} else {
Window_DrawMessageBoxWithScrollCursor(&param0->unk_04[v5], 1, 1024 - 9 - (18 + 12), 12);
Window_FillTilemap(&param0->unk_04[v5], 15);
v2 = MessageLoader_GetNewStrbuf(param0->unk_114, 42);
v3 = Strbuf_Init((14 * 2 * 2), HEAP_ID_6);
v1 = &param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx];
ov84_0223F4E8(param0, v1->unk_06 + v1->unk_04 - 1, 0);
StringTemplate_Format(param0->unk_118, v3, v2);
Text_AddPrinterWithParams(&param0->unk_04[v5], FONT_MESSAGE, v3, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Strbuf_Free(v3);
Strbuf_Free(v2);
Window_ScheduleCopyToVRAM(&param0->unk_04[v5]);
}
Window_DrawStandardFrame(&param0->unk_B4[0], 1, 1024 - 9, 14);
Window_ScheduleCopyToVRAM(&param0->unk_B4[0]);
}
void ov84_0223FD84(UnkStruct_ov84_0223B5A0 *param0)
{
u32 v0;
if (param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx].pocketType == 4) {
v0 = 4;
} else {
v0 = 3;
}
if (param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx].pocketType != 3) {
Window_EraseMessageBox(&param0->unk_04[v0], 1);
Window_ClearAndScheduleCopyToVRAM(&param0->unk_04[v0]);
}
Window_EraseStandardFrame(&param0->unk_B4[0], 1);
Window_ClearAndScheduleCopyToVRAM(&param0->unk_B4[0]);
Menu_Free(param0->unk_158, NULL);
StringList_Free(param0->unk_154);
Window_Remove(&param0->unk_B4[0]);
Window_FillTilemap(&param0->unk_04[1], 0);
ov84_0223F528(param0, param0->unk_C4->selectedItem);
Window_ScheduleCopyToVRAM(&param0->unk_04[1]);
ov84_02240D5C(param0, 0, 0);
}
void ov84_0223FE18(UnkStruct_ov84_0223B5A0 *param0)
{
Strbuf *v0;
Strbuf *v1;
Window_FillTilemap(&param0->unk_04[1], 0);
v0 = MessageLoader_GetNewStrbuf(param0->unk_114, 45);
v1 = Strbuf_Init(130, HEAP_ID_6);
ov84_0223F4E8(param0, param0->unk_47B - 1, 0);
StringTemplate_Format(param0->unk_118, v1, v0);
Text_AddPrinterWithParamsAndColor(&param0->unk_04[1], FONT_SYSTEM, v1, 40, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 14, 0), NULL);
Window_ScheduleCopyToVRAM(&param0->unk_04[1]);
Strbuf_Free(v1);
Strbuf_Free(v0);
}
void ov84_0223FE94(UnkStruct_ov84_0223B5A0 *param0)
{
BagInterfacePocketInfo *v0;
Strbuf *v1;
Strbuf *v2;
u16 v3;
Window_DrawStandardFrame(&param0->unk_04[9], 1, 1024 - 9, 14);
ov84_0223FF44(param0);
Window_DrawMessageBoxWithScrollCursor(&param0->unk_04[3], 1, 1024 - 9 - (18 + 12), 12);
Window_FillTilemap(&param0->unk_04[3], 15);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 52);
v2 = Strbuf_Init(14 * 2 * 2, HEAP_ID_6);
v0 = &param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx];
ov84_0223F4E8(param0, v0->unk_06 + v0->unk_04 - 1, 0);
StringTemplate_Format(param0->unk_118, v2, v1);
Text_AddPrinterWithParams(&param0->unk_04[3], FONT_MESSAGE, v2, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(&param0->unk_04[3]);
Strbuf_Free(v2);
Strbuf_Free(v1);
}
void ov84_0223FF44(UnkStruct_ov84_0223B5A0 *param0)
{
Window *v0;
Strbuf *v1;
u32 v2;
v0 = &param0->unk_04[9];
Window_FillTilemap(v0, 15);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 84);
StringTemplate_SetNumber(param0->unk_118, 0, param0->unk_488, 3, 2, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
Text_AddPrinterWithParams(v0, FONT_SYSTEM, param0->unk_3F8, 16, 8, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(v0);
Strbuf_Free(v1);
}
void ov84_0223FFC0(UnkStruct_ov84_0223B5A0 *param0)
{
Window_EraseMessageBox(&param0->unk_04[3], 1);
Window_EraseStandardFrame(&param0->unk_04[9], 1);
Window_ClearAndScheduleCopyToVRAM(&param0->unk_04[3]);
Window_ClearAndScheduleCopyToVRAM(&param0->unk_04[9]);
Window_ScheduleCopyToVRAM(&param0->unk_04[1]);
}
void ov84_0223FFF0(UnkStruct_ov84_0223B5A0 *param0)
{
BagInterfacePocketInfo *v0;
Strbuf *v1;
u16 v2;
Window_DrawMessageBoxWithScrollCursor(&param0->unk_04[6], 1, 1024 - 9 - (18 + 12), 12);
Window_FillTilemap(&param0->unk_04[6], 15);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 54);
v0 = &param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx];
if (param0->unk_488 == 1) {
ov84_0223F4E8(param0, v0->unk_06 + v0->unk_04 - 1, 0);
} else {
ov84_0223F508(param0, v0->unk_06 + v0->unk_04 - 1, 0);
}
StringTemplate_SetNumber(param0->unk_118, 1, param0->unk_488, 3, 0, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
Strbuf_Free(v1);
param0->unk_426 = ov84_022400A0(param0);
}
u8 ov84_022400A0(UnkStruct_ov84_0223B5A0 *param0)
{
u8 v0;
RenderControlFlags_SetCanABSpeedUpPrint(1);
RenderControlFlags_SetAutoScrollFlags(0);
v0 = Text_AddPrinterWithParams(&param0->unk_04[6], FONT_MESSAGE, param0->unk_3F8, 0, 0, Options_TextFrameDelay(param0->options), ov84_022400E0);
return v0;
}
static BOOL ov84_022400E0(TextPrinterTemplate *param0, u16 param1)
{
switch (param1) {
case 1:
return Sound_IsAnyEffectPlaying();
case 2:
return Sound_IsBGMPausedByFanfare();
case 3:
Sound_PlayEffect(SEQ_SE_DP_PC_LOGIN);
break;
case 4:
return Sound_IsEffectPlaying(1549);
}
return 0;
}
void ov84_02240120(UnkStruct_ov84_0223B5A0 *param0)
{
param0->unk_158 = Menu_MakeYesNoChoice(param0->unk_00, &Unk_ov84_02241150, 1024 - 9, 14, 6);
}
void ov84_02240148(UnkStruct_ov84_0223B5A0 *param0, u8 param1)
{
Window *v0;
Strbuf *v1;
u32 v2;
v0 = &param0->unk_04[7];
if (param1 == 0) {
Window_DrawStandardFrame(v0, 1, 1024 - 9, 14);
}
Window_FillTilemap(v0, 15);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 80);
StringTemplate_SetNumber(param0->unk_118, 0, param0->unk_488, 2, 2, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
Text_AddPrinterWithParams(v0, FONT_SYSTEM, param0->unk_3F8, 0, 8, TEXT_SPEED_NO_TRANSFER, NULL);
Strbuf_Free(v1);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 81);
StringTemplate_SetNumber(param0->unk_118, 0, param0->unk_48C * param0->unk_488, 6, 1, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
v2 = Font_CalcStrbufWidth(FONT_SYSTEM, param0->unk_3F8, 0);
Text_AddPrinterWithParams(v0, FONT_SYSTEM, param0->unk_3F8, (12 * 8) - v2, 8, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(v0);
Strbuf_Free(v1);
}
void ov84_02240248(UnkStruct_ov84_0223B5A0 *param0, u8 param1)
{
Window *v0;
Strbuf *v1;
u32 v2;
v0 = &param0->unk_04[8];
if (param1 == 0) {
Window_FillTilemap(v0, 15);
Window_DrawStandardFrame(v0, 1, 1024 - 9, 14);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 78);
Text_AddPrinterWithParams(v0, FONT_SYSTEM, v1, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Strbuf_Free(v1);
} else {
Window_FillRectWithColor(v0, 15, 0, 16, (10 * 8), 16);
}
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 79);
StringTemplate_SetNumber(param0->unk_118, 0, TrainerInfo_Money(param0->unk_CC), 6, 1, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
v2 = Font_CalcStrbufWidth(FONT_SYSTEM, param0->unk_3F8, 0);
Text_AddPrinterWithParams(v0, FONT_SYSTEM, param0->unk_3F8, (10 * 8) - v2, 16, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(v0);
Strbuf_Free(v1);
}
void ov84_02240328(UnkStruct_ov84_0223B5A0 *param0)
{
Window *v0;
Strbuf *v1;
u32 v2;
v0 = &param0->unk_04[10];
Window_FillTilemap(v0, 15);
Window_DrawStandardFrame(v0, 1, 1024 - 9, 14);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 108);
Text_AddPrinterWithParams(v0, FONT_SYSTEM, v1, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Strbuf_Free(v1);
v1 = MessageLoader_GetNewStrbuf(param0->unk_114, 109);
StringTemplate_SetNumber(param0->unk_118, 0, PoffinCase_CountFilledSlots(SaveData_GetPoffinCase(param0->unk_C4->saveData)), 3, 1, 1);
StringTemplate_Format(param0->unk_118, param0->unk_3F8, v1);
Strbuf_Free(v1);
v2 = Font_CalcStrbufWidth(FONT_SYSTEM, param0->unk_3F8, 0);
Text_AddPrinterWithParams(v0, FONT_SYSTEM, param0->unk_3F8, 11 * 8 - v2, 16, TEXT_SPEED_NO_TRANSFER, NULL);
Window_ScheduleCopyToVRAM(v0);
}

View File

@ -1,470 +0,0 @@
#include "overlay084/ov84_022403F4.h"
#include <nitro.h>
#include <string.h>
#include "generated/pokemon_types.h"
#include "overlay084/struct_ov84_0223B5A0.h"
#include "bag_system.h"
#include "gx_layers.h"
#include "item.h"
#include "move_table.h"
#include "sprite.h"
#include "sprite_system.h"
#include "type_icon.h"
#include "vram_transfer.h"
static void ov84_02240424(UnkStruct_ov84_0223B5A0 *param0);
static void ov84_022404C0(UnkStruct_ov84_0223B5A0 *param0);
static void ov84_02240950(UnkStruct_ov84_0223B5A0 *param0);
static void ov84_02240C48(UnkStruct_ov84_0223B5A0 *param0);
static u8 ov84_02240C30(UnkStruct_ov84_0223B5A0 *param0, u8 param1);
static void ov84_02240B98(UnkStruct_ov84_0223B5A0 *param0);
static const SpriteTemplate Unk_ov84_022411B0[] = {
{
0x30,
0x32,
0x0,
0x0,
0x1,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC0F9, 0xC0F9, 0xC0F9, 0xC0F9, 0x0, 0x0 },
0x1,
0x0,
},
{
0xD,
0x61,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC0FA, 0xC0FA, 0xC0FA, 0xC0FA, 0x0, 0x0 },
0x0,
0x0,
},
{
0x2,
0x60,
0x0,
0x1,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC0FD, 0xC0FA, 0xC0FD, 0xC0FD, 0x0, 0x0 },
0x0,
0x0,
},
{
0x62,
0x60,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC0FD, 0xC0FA, 0xC0FD, 0xC0FD, 0x0, 0x0 },
0x0,
0x0,
},
{
0xB1,
0x18,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC0FB, 0xC0FA, 0xC0FB, 0xC0FB, 0x0, 0x0 },
0x1,
0x0,
},
{
0xB1,
0xE,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC0FC, 0xC0FA, 0xC0FC, 0xC0FC, 0x0, 0x0 },
0x1,
0x0,
},
{
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DSUB,
{ 0xC0FE, 0xC0FB, 0xC0FE, 0xC0FE, 0x0, 0x0 },
0x0,
0x0,
},
{
0x16,
0xAC,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC0FF, 0xC0FC, 0xC0FF, 0xC0FF, 0x0, 0x0 },
0x1,
0x0,
},
{
0xDC,
0x9C,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC100, 0xC0FD, 0xC100, 0xC100, 0x0, 0x0 },
0x0,
0x0,
},
{
0xDC,
0xB4,
0x0,
0x1,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC100, 0xC0FD, 0xC100, 0xC100, 0x0, 0x0 },
0x0,
0x0,
},
{
0x40,
0x98,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC101, 0xC0FE, 0xC101, 0xC101, 0x0, 0x0 },
0x0,
0x0,
},
{
0xA8,
0x98,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0xC102, 0xC0FE, 0xC101, 0xC101, 0x0, 0x0 },
0x0,
0x0,
},
};
void ov84_022403F4(UnkStruct_ov84_0223B5A0 *param0)
{
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, 1);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_OBJ, 1);
VramTransfer_New(32, HEAP_ID_6);
ov84_02240424(param0);
ov84_022404C0(param0);
ov84_02240950(param0);
}
static void ov84_02240424(UnkStruct_ov84_0223B5A0 *param0)
{
SpriteResourceCapacities v0 = { 10, 6, 9, 9, 0, 0 };
param0->unk_D8 = SpriteSystem_Alloc(6);
param0->unk_DC = SpriteManager_New(param0->unk_D8);
{
RenderOamTemplate v1 = {
0,
128,
0,
32,
0,
128,
0,
32,
};
CharTransferTemplateWithModes v2 = {
12,
1024 * 128,
1024 * 16,
GX_OBJVRAMMODE_CHAR_1D_32K,
GX_OBJVRAMMODE_CHAR_1D_32K
};
SpriteSystem_Init(param0->unk_D8, &v1, &v2, 32);
}
SpriteSystem_InitSprites(param0->unk_D8, param0->unk_DC, 12);
SpriteSystem_InitManagerWithCapacities(param0->unk_D8, param0->unk_DC, &v0);
}
static void ov84_022404C0(UnkStruct_ov84_0223B5A0 *param0)
{
u32 v0, v1;
if (param0->unk_425 == 0) {
v0 = 2;
v1 = 3;
} else {
v0 = 6;
v1 = 7;
}
SpriteSystem_LoadCharResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, v0, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49401);
SpriteSystem_LoadCharResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 25, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49402);
SpriteSystem_LoadCharResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 28, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49403);
SpriteSystem_LoadCharResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 31, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49404);
SpriteSystem_LoadCharResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 10, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49405);
SpriteSystem_LoadCharResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 36, FALSE, NNS_G2D_VRAM_TYPE_2DSUB, 49406);
SpriteSystem_LoadCharResObj(param0->unk_D8, param0->unk_DC, 62, 4, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49408);
SpriteSystem_LoadCharResObj(param0->unk_D8, param0->unk_DC, 16, Item_FileID(0, 1), FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 49407);
TypeIcon_LoadChar(param0->unk_D8, param0->unk_DC, NNS_G2D_VRAM_TYPE_2DMAIN, TYPE_NORMAL, 49409);
CategoryIcon_LoadChar(param0->unk_D8, param0->unk_DC, NNS_G2D_VRAM_TYPE_2DMAIN, 0, 49410);
SpriteSystem_LoadPlttResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, v1, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 49401);
SpriteSystem_LoadPlttResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 20, FALSE, 2, NNS_G2D_VRAM_TYPE_2DMAIN, 49402);
SpriteSystem_LoadPlttResObj(param0->unk_D8, param0->unk_DC, 16, Item_FileID(0, 2), 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 49404);
SpriteSystem_LoadPlttResObj(param0->unk_D8, param0->unk_DC, 62, 10, FALSE, 2, NNS_G2D_VRAM_TYPE_2DMAIN, 49405);
TypeIcon_LoadPlttSrc(param0->unk_D8, param0->unk_DC, NNS_G2D_VRAM_TYPE_2DMAIN, 49406);
SpriteSystem_LoadPlttResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 37, FALSE, 1, NNS_G2D_VRAM_TYPE_2DSUB, 49403);
SpriteSystem_LoadCellResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 1, FALSE, 49401);
SpriteSystem_LoadCellResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 24, FALSE, 49402);
SpriteSystem_LoadCellResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 27, FALSE, 49403);
SpriteSystem_LoadCellResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 30, FALSE, 49404);
SpriteSystem_LoadCellResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 9, FALSE, 49405);
SpriteSystem_LoadCellResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 35, FALSE, 49406);
SpriteSystem_LoadCellResObj(param0->unk_D8, param0->unk_DC, 16, Item_IconNCERFile(), FALSE, 49407);
SpriteSystem_LoadCellResObj(param0->unk_D8, param0->unk_DC, 62, 5, FALSE, 49408);
SpriteSystem_LoadAnimResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 0, FALSE, 49401);
SpriteSystem_LoadAnimResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 23, FALSE, 49402);
SpriteSystem_LoadAnimResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 26, FALSE, 49403);
SpriteSystem_LoadAnimResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 29, FALSE, 49404);
SpriteSystem_LoadAnimResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 8, FALSE, 49405);
SpriteSystem_LoadAnimResObjFromOpenNarc(param0->unk_D8, param0->unk_DC, param0->unk_D4, 34, FALSE, 49406);
SpriteSystem_LoadAnimResObj(param0->unk_D8, param0->unk_DC, 16, Item_IconNANRFile(), FALSE, 49407);
SpriteSystem_LoadAnimResObj(param0->unk_D8, param0->unk_DC, 62, 6, FALSE, 49408);
TypeIcon_LoadAnim(param0->unk_D8, param0->unk_DC, 49409, 49409);
}
static void ov84_02240950(UnkStruct_ov84_0223B5A0 *param0)
{
u32 v0;
for (v0 = 0; v0 < 12; v0++) {
param0->unk_E0[v0] = SpriteSystem_NewSprite(param0->unk_D8, param0->unk_DC, &Unk_ov84_022411B0[v0]);
}
ManagedSprite_SetDrawFlag(param0->unk_E0[5], 0);
ManagedSprite_SetDrawFlag(param0->unk_E0[6], 0);
ManagedSprite_SetDrawFlag(param0->unk_E0[10], 0);
ManagedSprite_SetDrawFlag(param0->unk_E0[11], 0);
if ((param0->unk_C4->mode == 4) || (param0->unk_C4->mode == 5)) {
ManagedSprite_SetDrawFlag(param0->unk_E0[1], 0);
}
if (param0->unk_424 == 1) {
ManagedSprite_SetDrawFlag(param0->unk_E0[2], 0);
ManagedSprite_SetDrawFlag(param0->unk_E0[3], 0);
}
ov84_02240D3C(param0, 0);
ManagedSprite_SetAnim(param0->unk_E0[0], param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx].pocketType);
ManagedSprite_SetPositionXY(param0->unk_E0[1], ov84_02240C30(param0, param0->unk_C4->currPocketIdx), 97);
ManagedSprite_SetPositionXY(param0->unk_E0[4], 177, 24 + (param0->unk_C4->accessiblePockets[param0->unk_C4->currPocketIdx].unk_04 - 1) * 16);
{
VecFx32 v1 = { FX32_ONE, FX32_ONE, FX32_ONE };
Sprite_SetAffineScaleEx(param0->unk_E0[0]->sprite, &v1, 2);
}
}
void ov84_02240A88(UnkStruct_ov84_0223B5A0 *param0)
{
u32 v0;
for (v0 = 0; v0 < 12; v0++) {
Sprite_DeleteAndFreeResources(param0->unk_E0[v0]);
}
SpriteSystem_FreeResourcesAndManager(param0->unk_D8, param0->unk_DC);
SpriteSystem_Free(param0->unk_D8);
}
void ov84_02240ABC(UnkStruct_ov84_0223B5A0 *param0)
{
u32 v0;
for (v0 = 0; v0 < 12; v0++) {
ManagedSprite_TickFrame(param0->unk_E0[v0]);
}
}
void ov84_02240AD8(UnkStruct_ov84_0223B5A0 *param0, u16 param1)
{
SpriteSystem_ReplaceCharResObj(param0->unk_D8, param0->unk_DC, 16, Item_FileID(param1, 1), 0, 49407);
SpriteSystem_ReplacePlttResObj(param0->unk_D8, param0->unk_DC, 16, Item_FileID(param1, 2), 0, 49404);
}
void ov84_02240B34(UnkStruct_ov84_0223B5A0 *param0, u8 param1)
{
ManagedSprite_SetExplicitPalette(param0->unk_E0[4], param1);
ManagedSprite_SetExplicitPalette(param0->unk_E0[1], param1);
}
u8 ov84_02240B50(UnkStruct_ov84_0223B5A0 *param0)
{
if (param0->unk_454.unk_00 == 0) {
return 1;
}
return 0;
}
void ov84_02240B68(UnkStruct_ov84_0223B5A0 *param0)
{
param0->unk_454.unk_03 = 0;
param0->unk_454.unk_00 = 1;
ov84_02240C48(param0);
}
void ov84_02240B80(UnkStruct_ov84_0223B5A0 *param0)
{
switch (param0->unk_454.unk_00) {
case 0:
break;
case 1:
ov84_02240B98(param0);
break;
}
}
static void ov84_02240B98(UnkStruct_ov84_0223B5A0 *param0)
{
VecFx32 v0;
v0 = *(Sprite_GetPosition(param0->unk_E0[1]->sprite));
if (param0->unk_454.unk_01 == 0) {
v0.x -= param0->unk_454.unk_04[param0->unk_454.unk_03];
} else {
v0.x += param0->unk_454.unk_04[param0->unk_454.unk_03];
}
Sprite_SetPosition(param0->unk_E0[1]->sprite, &v0);
param0->unk_454.unk_03++;
if (param0->unk_454.unk_03 == 8) {
v0.x = ov84_02240C30(param0, param0->unk_478) * FX32_ONE;
Sprite_SetPosition(param0->unk_E0[1]->sprite, &v0);
param0->unk_454.unk_00 = 0;
}
}
static u8 ov84_02240C30(UnkStruct_ov84_0223B5A0 *param0, u8 param1)
{
return 0 * 8 + param0->unk_427 + param0->unk_428 * param1 + 6;
}
static void ov84_02240C48(UnkStruct_ov84_0223B5A0 *param0)
{
VecFx32 v0;
fx32 v1;
v0 = *(Sprite_GetPosition(param0->unk_E0[1]->sprite));
v1 = ov84_02240C30(param0, param0->unk_478) * FX32_ONE;
if (v1 < v0.x) {
v1 = (v0.x - v1) / 100;
param0->unk_454.unk_01 = 0;
} else {
v1 = (v1 - v0.x) / 100;
param0->unk_454.unk_01 = 1;
}
param0->unk_454.unk_04[0] = 0;
param0->unk_454.unk_04[1] = v1 * 40;
param0->unk_454.unk_04[2] = v1 * 25;
param0->unk_454.unk_04[3] = v1 * 15;
param0->unk_454.unk_04[4] = v1 * 10;
param0->unk_454.unk_04[5] = v1 * 7;
param0->unk_454.unk_04[6] = v1 * 3;
param0->unk_454.unk_04[7] = 0;
}
void ov84_02240CF0(UnkStruct_ov84_0223B5A0 *param0, u8 param1)
{
if (param1 == 0) {
ManagedSprite_SetPositionXY(param0->unk_E0[8], 220, 156);
ManagedSprite_SetPositionXY(param0->unk_E0[9], 220, 180);
} else {
ManagedSprite_SetPositionXY(param0->unk_E0[8], 162, 108);
ManagedSprite_SetPositionXY(param0->unk_E0[9], 162, 132);
}
ov84_02240D3C(param0, 1);
}
void ov84_02240D3C(UnkStruct_ov84_0223B5A0 *param0, u8 param1)
{
ManagedSprite_SetDrawFlag(param0->unk_E0[8], param1);
ManagedSprite_SetDrawFlag(param0->unk_E0[9], param1);
}
void ov84_02240D5C(UnkStruct_ov84_0223B5A0 *param0, u16 param1, u8 param2)
{
u16 v0;
u16 v1;
u16 v2;
ManagedSprite_SetDrawFlag(param0->unk_E0[10], param2);
ManagedSprite_SetDrawFlag(param0->unk_E0[11], param2);
if (param2 == 0) {
return;
}
v0 = Item_MoveForTMHM(param1);
v1 = MoveTable_LoadParam(v0, MOVEATTRIBUTE_TYPE);
v2 = MoveTable_LoadParam(v0, MOVEATTRIBUTE_CLASS);
SpriteSystem_ReplaceCharResObj(param0->unk_D8, param0->unk_DC, TypeIcon_GetNARC(), TypeIcon_GetChar(v1), 1, 49409);
ManagedSprite_SetExplicitPalette(param0->unk_E0[10], TypeIcon_GetPltt(v1) + 6);
SpriteSystem_ReplaceCharResObj(param0->unk_D8, param0->unk_DC, CategoryIcon_GetNARC(), CategoryIcon_GetChar(v2), 1, 49410);
ManagedSprite_SetExplicitPalette(param0->unk_E0[11], CategoryIcon_GetPltt(v2) + 6);
}
void ov84_02240E24(UnkStruct_ov84_0223B5A0 *param0, s16 param1, s16 param2)
{
ManagedSprite_SetDrawFlag(param0->unk_E0[6], 1);
ManagedSprite_SetPositionXY(param0->unk_E0[6], param1, param2);
ManagedSprite_SetAnimationFrame(param0->unk_E0[6], 0);
ManagedSprite_SetAnim(param0->unk_E0[6], 0);
}
void ov84_02240E5C(UnkStruct_ov84_0223B5A0 *param0)
{
if (ManagedSprite_GetDrawFlag(param0->unk_E0[6]) == 1) {
ManagedSprite_TickNFrames(param0->unk_E0[6], FX32_ONE);
if (ManagedSprite_GetAnimationFrame(param0->unk_E0[6]) == 2) {
ManagedSprite_SetDrawFlag(param0->unk_E0[6], 0);
}
}
}

View File

@ -6,7 +6,7 @@
#include "overlay005/fieldmap.h"
#include "overlay007/shop_menu.h"
#include "bag_system.h"
#include "bag_context.h"
#include "field_task.h"
#include "heap.h"
@ -36,7 +36,7 @@ static u8 ShopMisc_FreeUnk04AndReinitFieldMap(FieldSystem *fieldSystem, ShopMenu
return SHOP_STATE_REINIT_FIELD_MAP;
}
shopMenu->itemSoldCount = sub_0207CBAC(shopMenu->unk_04);
shopMenu->itemSoldCount = BagContext_GetSoldAmount(shopMenu->unk_04);
Heap_Free(shopMenu->unk_04);
FieldSystem_StartFieldMap(fieldSystem);

View File

@ -28,7 +28,7 @@
#include "overlay005/save_info_window.h"
#include "bag.h"
#include "bag_system.h"
#include "bag_context.h"
#include "bg_window.h"
#include "catching_show.h"
#include "dexmode_checker.h"
@ -1128,7 +1128,7 @@ BOOL sub_0203B7C0(FieldTask *taskMan)
TrainerInfo *v12 = SaveData_GetTrainerInfo(fieldSystem->saveData);
menu->taskData = sub_0207D824(bag, Unk_020EA020, HEAP_ID_FIELD2);
BagSystem_Init(menu->taskData, fieldSystem->saveData, 1, fieldSystem->bagCursor);
BagContext_Init(menu->taskData, fieldSystem->saveData, 1, fieldSystem->bagCursor);
sub_0203D1E4(fieldSystem, menu->taskData);
sub_0203B674(menu, sub_0203BC5C);
@ -1188,9 +1188,9 @@ BOOL sub_0203B7C0(FieldTask *taskMan)
menu->taskData = sub_0203D20C(fieldSystem, &menu->unk_230);
if (partyMenu->selectedMonSlot >= 6) {
BagSystem_SetSelectedMonSlot(menu->taskData, 0);
BagContext_SetSelectedMonSlot(menu->taskData, 0);
} else {
BagSystem_SetSelectedMonSlot(menu->taskData, partyMenu->selectedMonSlot);
BagContext_SetSelectedMonSlot(menu->taskData, partyMenu->selectedMonSlot);
}
sub_0203B674(menu, sub_0203BC5C);
@ -1226,7 +1226,7 @@ static BOOL StartMenu_Bag(FieldTask *taskMan)
StartMenu *menu = FieldTask_GetEnv(taskMan);
menu->taskData = sub_0203D20C(fieldSystem, &menu->unk_230);
BagSystem_SetSelectedMonSlot(menu->taskData, 0);
BagContext_SetSelectedMonSlot(menu->taskData, 0);
menu->callback = sub_0203BC5C;
FieldSystem_SaveStateIfCommunicationOff(fieldSystem);
@ -1238,26 +1238,26 @@ static BOOL sub_0203BC5C(FieldTask *taskMan)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan);
StartMenu *menu = FieldTask_GetEnv(taskMan);
BagSystem *v2 = BagSystem_New(HEAP_ID_FIELD2);
BagContext *v2 = BagContext_New(HEAP_ID_FIELD2);
memcpy(v2, menu->taskData, BagSystem_GetSize());
memcpy(v2, menu->taskData, BagContext_GetSize());
Heap_Free(menu->taskData);
switch (BagSystem_GetExitCode(v2)) {
switch (BagContext_GetExitCode(v2)) {
case 0: {
ItemMenuUseFunc v3;
ItemMenuUseContext v4;
s32 v5;
v4.item = BagSystem_GetItem(v2);
v4.selectedMonSlot = BagSystem_GetSelectedMonSlot(v2);
v4.item = BagContext_GetItem(v2);
v4.selectedMonSlot = BagContext_GetSelectedMonSlot(v2);
v4.fieldTask = taskMan;
v5 = Item_LoadParam(v4.item, ITEM_PARAM_FIELD_USE_FUNC, HEAP_ID_FIELD2);
v3 = (ItemMenuUseFunc)GetItemUseFunction(USE_ITEM_TASK_MENU, v5);
v3(&v4, &menu->unk_230);
} break;
case 1:
sub_0203C2D8(taskMan, BagSystem_GetItem(v2));
sub_0203C2D8(taskMan, BagContext_GetItem(v2));
break;
case 2: {
PartyMenu *partyMenu = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PartyMenu));
@ -1270,7 +1270,7 @@ static BOOL sub_0203BC5C(FieldTask *taskMan)
partyMenu->fieldMoveContext = &menu->fieldMoveContext;
partyMenu->type = PARTY_MENU_TYPE_BASIC;
partyMenu->mode = PARTY_MENU_MODE_GIVE_ITEM;
partyMenu->usedItemID = BagSystem_GetItem(v2);
partyMenu->usedItemID = BagContext_GetItem(v2);
partyMenu->fieldSystem = fieldSystem;
FieldSystem_StartChildProcess(fieldSystem, &gPokemonPartyAppTemplate, partyMenu);
@ -1280,7 +1280,7 @@ static BOOL sub_0203BC5C(FieldTask *taskMan)
case 4: {
Party *party = SaveData_GetParty(fieldSystem->saveData);
u32 v9 = *(u32 *)menu->unk_260;
u16 item = BagSystem_GetItem(v2);
u16 item = BagContext_GetItem(v2);
Pokemon *v8 = Party_GetPokemonBySlotIndex(party, v9);
Heap_Free(menu->unk_260);
@ -1303,7 +1303,7 @@ static BOOL sub_0203BC5C(FieldTask *taskMan)
partyMenu->options = SaveData_GetOptions(fieldSystem->saveData);
partyMenu->fieldMoveContext = &menu->fieldMoveContext;
partyMenu->type = PARTY_MENU_TYPE_BASIC;
partyMenu->usedItemID = BagSystem_GetItem(v2);
partyMenu->usedItemID = BagContext_GetItem(v2);
partyMenu->selectedMonSlot = v9; // Maybe selected slot?
partyMenu->fieldSystem = fieldSystem;
@ -1869,7 +1869,7 @@ static void StartMenu_Evolve(FieldTask *taskMan)
{
u32 v2 = *((u32 *)menu->unk_260);
BagSystem_SetSelectedMonSlot(menu->taskData, (u8)v2);
BagContext_SetSelectedMonSlot(menu->taskData, (u8)v2);
Heap_Free(menu->unk_260);
}

View File

@ -30,6 +30,7 @@
#include "struct_defs/struct_02097728.h"
#include "struct_defs/struct_020997B8.h"
#include "applications/bag/application.h"
#include "applications/diploma.h"
#include "applications/journal_display/journal_controller.h"
#include "applications/naming_screen.h"
@ -58,8 +59,6 @@
#include "overlay064/ov64_0222DCE0.h"
#include "overlay072/ov72_0223D7A0.h"
#include "overlay080/ov80_021D0D80.h"
#include "overlay084/const_ov84_02241130.h"
#include "overlay084/ov84_0223B5A0.h"
#include "overlay085/ov85_02241440.h"
#include "overlay086/ov86_0223B140.h"
#include "overlay088/ov88_0223B140.h"
@ -79,7 +78,7 @@
#include "trainer_card_screen/trainer_card_screen.h"
#include "bag.h"
#include "bag_system.h"
#include "bag_context.h"
#include "coins.h"
#include "dexmode_checker.h"
#include "evolution.h"
@ -156,7 +155,7 @@ FS_EXTERN_OVERLAY(options_menu);
FS_EXTERN_OVERLAY(choose_starter);
FS_EXTERN_OVERLAY(overlay80);
FS_EXTERN_OVERLAY(journal_display);
FS_EXTERN_OVERLAY(overlay84);
FS_EXTERN_OVERLAY(bag);
FS_EXTERN_OVERLAY(overlay85);
FS_EXTERN_OVERLAY(overlay86);
FS_EXTERN_OVERLAY(overlay87);
@ -266,13 +265,13 @@ static const u8 Unk_020EA164[] = {
void sub_0203D1E4(FieldSystem *fieldSystem, void *param1)
{
FS_EXTERN_OVERLAY(overlay84);
FS_EXTERN_OVERLAY(bag);
const ApplicationManagerTemplate Unk_ov84_02241130 = {
ov84_0223B5A0,
ov84_0223B76C,
ov84_0223B900,
FS_OVERLAY_ID(overlay84)
BagApplication_Init,
BagApplication_Main,
BagApplication_Exit,
FS_OVERLAY_ID(bag)
};
FieldSystem_StartChildProcess(fieldSystem, &Unk_ov84_02241130, param1);
@ -283,14 +282,14 @@ void *sub_0203D20C(FieldSystem *fieldSystem, ItemUseContext *param1)
Bag *v0 = SaveData_GetBag(fieldSystem->saveData);
void *v1 = sub_0207D824(v0, Unk_020EA164, HEAP_ID_FIELD2);
BagSystem_Init(v1, fieldSystem->saveData, 0, fieldSystem->bagCursor);
BagSystem_SetMapLoadType(v1, fieldSystem->mapLoadType);
BagContext_Init(v1, fieldSystem->saveData, 0, fieldSystem->bagCursor);
BagContext_SetMapLoadType(v1, fieldSystem->mapLoadType);
if (PlayerAvatar_GetPlayerState(fieldSystem->playerAvatar) == 0x1) {
BagSystem_SetIsCycling(v1);
BagContext_SetIsCycling(v1);
}
sub_0207CB6C(v1, param1);
BagContext_SetItemUseContext(v1, param1);
sub_0203D1E4(fieldSystem, v1);
return v1;
@ -317,7 +316,7 @@ void *sub_0203D264(FieldSystem *fieldSystem, int param1)
v0 = sub_0207D824(v4, v1, HEAP_ID_FIELD3);
BagSystem_Init(v0, fieldSystem->saveData, 3, fieldSystem->bagCursor);
BagContext_Init(v0, fieldSystem->saveData, 3, fieldSystem->bagCursor);
sub_0203D1E4(fieldSystem, v0);
return v0;
@ -325,9 +324,9 @@ void *sub_0203D264(FieldSystem *fieldSystem, int param1)
u16 sub_0203D2C4(void *param0)
{
u16 v0 = BagSystem_GetItem(param0);
u16 v0 = BagContext_GetItem(param0);
if ((v0 != 0) && (BagSystem_GetExitCode(param0) == 5)) {
if ((v0 != 0) && (BagContext_GetExitCode(param0) == 5)) {
GF_ASSERT(0);
}