mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-25 15:49:02 -05:00
Cleanup overlay097
General clean up of most documented files of overlay 97 following the documentation of `overlay097/main_menu_util.c`. This also adds some forgotten parentheses in macros that could result in unintended behaviour.
This commit is contained in:
parent
ccda4fcf2a
commit
18fca9048b
|
|
@ -9,10 +9,10 @@
|
|||
#define MAX_LETTER_HEIGHT 16
|
||||
#define MAX_LETTER_HEIGHT_TILES ((MAX_LETTER_HEIGHT + 7) / 8)
|
||||
|
||||
#define TEXT_LINES(n) (n * MAX_LETTER_HEIGHT)
|
||||
#define TEXT_LINES_TILES(n) (n * MAX_LETTER_HEIGHT_TILES)
|
||||
#define TEXT_LINES_WITH_SPACING(n, spacing) (n * MAX_LETTER_HEIGHT + (n - 1) * spacing)
|
||||
#define TEXT_LINES_WITH_SPACING_TILES(n, spacing) (n * MAX_LETTER_HEIGHT_TILES + (n - 1) * spacing)
|
||||
#define TEXT_LINES(n) ((n) * MAX_LETTER_HEIGHT)
|
||||
#define TEXT_LINES_TILES(n) ((n) * MAX_LETTER_HEIGHT_TILES)
|
||||
#define TEXT_LINES_WITH_SPACING(n, spacing) ((n) * MAX_LETTER_HEIGHT + ((n) - 1) * spacing)
|
||||
#define TEXT_LINES_WITH_SPACING_TILES(n, spacing) ((n) * MAX_LETTER_HEIGHT_TILES + ((n) - 1) * spacing)
|
||||
|
||||
enum Font {
|
||||
FONT_SYSTEM = 0,
|
||||
|
|
|
|||
8
include/overlay097/application_template.h
Normal file
8
include/overlay097/application_template.h
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef POKEPLATINUM_OV97_APPLICATION_TEMPLATE_H
|
||||
#define POKEPLATINUM_OV97_APPLICATION_TEMPLATE_H
|
||||
|
||||
#include "overlay_manager.h"
|
||||
|
||||
extern const ApplicationManagerTemplate gMainMenuAppTemplate;
|
||||
|
||||
#endif // POKEPLATINUM_OV97_APPLICATION_TEMPLATE_H
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef POKEPLATINUM_CONST_OV97_0223D674_H
|
||||
#define POKEPLATINUM_CONST_OV97_0223D674_H
|
||||
|
||||
#include "overlay_manager.h"
|
||||
|
||||
extern const ApplicationManagerTemplate gMainMenuAppTemplate;
|
||||
|
||||
#endif // POKEPLATINUM_CONST_OV97_0223D674_H
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef POKEPLATINUM_GBA_CONVERT_STRING_H
|
||||
#define POKEPLATINUM_GBA_CONVERT_STRING_H
|
||||
|
||||
BOOL GBAStringToDSString(const u8 *src, u16 *dst, u32 length, u32 language);
|
||||
BOOL GBA_ConvertStringToDS(const u8 *src, u16 *dst, u32 length, u32 language);
|
||||
|
||||
#endif // POKEPLATINUM_GBA_CONVERT_STRING_H
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ typedef struct MainMenuWindow {
|
|||
|
||||
void MainMenuUtil_Init(enum HeapId heapID);
|
||||
void *MainMenuUtil_InitAppAndFadeToBlack(ApplicationManager *appMan, enum HeapId heapID, int appDataSize, enum HeapSize heapSize);
|
||||
void MainMenuUtil_InitBG(BgConfig *bgConfig, enum BgLayer bgLayer, u8 screenSize, u32 screenBase, u32 charBase);
|
||||
void MainMenuUtil_InitBGLayer(BgConfig *bgConfig, enum BgLayer bgLayer, u8 screenSize, u32 screenBase, u32 charBase);
|
||||
void MainMenuUtil_SetFadeToWhite(BOOL enable);
|
||||
void MainMenuUtil_StartScreenFadeToState(enum FadeType fadeType, int destState, int *state, int waitState);
|
||||
void MainMenuUtil_CheckScreenFadeDone(int *state);
|
||||
|
|
@ -78,8 +78,8 @@ void MainMenuUtil_InitSpriteLoader(void);
|
|||
MainMenuSpriteManager *MainMenuUtil_GetSpriteManager(void);
|
||||
void MainMenuUtil_LoadSprite(enum NarcID narcID, int tilesID, int plttID, int cellID, int animID, enum DSScreen screen);
|
||||
void MainMenuUtil_SetSubScreenViewRect(fx32 x, fx32 y);
|
||||
void MainMenuUtil_UpdateSpritesSkipGift(void);
|
||||
void MainMenuUtil_UpdateSprites(int skipDrawGift);
|
||||
void MainMenuUtil_UpdateSprites(void);
|
||||
void MainMenuUtil_UpdateSpritesForAnimStatus(enum MysteryGiftAnimationStatus skipDrawGift);
|
||||
Sprite *MainMenuUtil_InitSprite(enum DSScreen screen, Sprite *sprite, int x, int y, int animationIdx);
|
||||
void MainMenuUtil_FreeSprites(void);
|
||||
u32 MainMenuUtil_CalcMysteryGiftVersionBit(enum Version version);
|
||||
|
|
|
|||
|
|
@ -91,6 +91,12 @@ enum MysteryGiftAppState {
|
|||
MG_APP_KEEP_PREVIOUS_STATE = -1,
|
||||
};
|
||||
|
||||
enum MysteryGiftAnimationStatus {
|
||||
MG_ANIMATION_STATUS_DONE = 0,
|
||||
MG_ANIMATION_STATUS_BEGIN,
|
||||
MG_ANIMATION_STATUS_PROCEED_IMPLOSION
|
||||
};
|
||||
|
||||
typedef struct MysteryGiftEventData {
|
||||
MysteryGiftEventHeader header;
|
||||
WonderCard wonderCard;
|
||||
|
|
@ -114,7 +120,7 @@ struct MysteryGiftAppData {
|
|||
int msgBoxPrinterDelay;
|
||||
int textPrinterId;
|
||||
int unused_70;
|
||||
int queuedState;
|
||||
enum MysteryGiftAppState queuedState;
|
||||
ListMenu *listMenu;
|
||||
StringList *listMenuOptions;
|
||||
int canReceiveGiftStatus;
|
||||
|
|
@ -137,7 +143,7 @@ struct MysteryGiftAppData {
|
|||
u8 wirelessDistributionBuffer[MG_APP_DISTRIBUTION_DATA_BUFFER_SIZE];
|
||||
int receptionMethod;
|
||||
enum MysteryGiftAppState *statePtr;
|
||||
int unk_1640;
|
||||
int giftSearchResultDelay;
|
||||
int nasAuthState;
|
||||
u8 *unused_1648;
|
||||
DWCInetControl unk_164C;
|
||||
|
|
@ -158,9 +164,9 @@ struct MysteryGiftAppData {
|
|||
Window wifiCommErrorWindow;
|
||||
WonderCard wonderCard;
|
||||
MysteryGiftAppMainCallbackFuncPtr mainCallback;
|
||||
int cancelSave;
|
||||
BOOL cancelSave;
|
||||
void *waitDial;
|
||||
int animationStatus;
|
||||
enum MysteryGiftAnimationStatus animationStatus;
|
||||
};
|
||||
|
||||
void MysteryGiftApp_ToggleWaitDial(MysteryGiftAppData *appData, BOOL show);
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@
|
|||
#define HI_HALF(i) (((i) >> 16) & 0xFFFF)
|
||||
#define LO_HALF(i) ((i) & 0xFFFF)
|
||||
#define HI_AND_LO(h, l) (((h) << 16) | l)
|
||||
#define max(x, y) (x > y ? x : y)
|
||||
#define min(x, y) (x < y ? x : y)
|
||||
#define max(x, y) ((x) > (y) ? (x) : (y))
|
||||
#define min(x, y) ((x) < (y) ? (x) : (y))
|
||||
|
||||
#define ALIGN_4 __attribute__((aligned(4)))
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@
|
|||
#define DIST_CTRDG_DATA_LENGTH 1192
|
||||
#define DIST_CTRDG_SIGNATURE_LENGTH 128
|
||||
|
||||
#define NINTENDO_MAKER_CODE 0x3130 // ASCII characters "01", as a little-endian 16-bit integer
|
||||
|
||||
static u32 sDistributionCartridgeGameCodes[] = {
|
||||
'B5BE',
|
||||
'B5CE',
|
||||
|
|
@ -79,7 +81,7 @@ inline u32 FlipEndianness(u32 val)
|
|||
return ((val >> 0) & 255) << 24 | ((val >> 8) & 255) << 16 | ((val >> 16) & 255) << 8 | ((val >> 24) & 255) << 0;
|
||||
}
|
||||
|
||||
static BOOL CheckDistCartridgeGameCodeAndSignature(void)
|
||||
static BOOL VerifyCartridgeAuthenticity(void)
|
||||
{
|
||||
u32 gameCode = CTRDG_GetAgbGameCode();
|
||||
|
||||
|
|
@ -114,11 +116,11 @@ static BOOL CheckGBASlotHasDistributionCartridge(void)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
if (CTRDG_GetAgbMakerCode() != 0x3130) {
|
||||
if (CTRDG_GetAgbMakerCode() != NINTENDO_MAKER_CODE) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (CheckDistCartridgeGameCodeAndSignature() == FALSE) {
|
||||
if (VerifyCartridgeAuthenticity() == FALSE) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,169 +5,173 @@
|
|||
|
||||
#include "constants/charcode.h"
|
||||
|
||||
#include "charcode.h"
|
||||
|
||||
#define GBA_EOS 0xFF
|
||||
|
||||
// Japanese, International
|
||||
static const u16 sGBACharToDSChars[][2] = {
|
||||
static const charcode_t sGBACharToDSChars[][2] = {
|
||||
{ CHAR_WIDE_SPACE, CHAR_WIDE_SPACE },
|
||||
{ 0x3, 0x3 },
|
||||
{ 0x5, 0x5 },
|
||||
{ 0x7, 0x7 },
|
||||
{ 0x9, 0x9 },
|
||||
{ 0xB, 0xB },
|
||||
{ 0xC, 0xC },
|
||||
{ 0xE, 0xE },
|
||||
{ 0x10, 0x10 },
|
||||
{ 0x12, 0x12 },
|
||||
{ 0x14, 0x14 },
|
||||
{ 0x16, 0x16 },
|
||||
{ 0x18, 0x18 },
|
||||
{ 0x1A, 0x1A },
|
||||
{ 0x1C, 0x1C },
|
||||
{ 0x1E, 0x1E },
|
||||
{ 0x20, 0x20 },
|
||||
{ 0x22, 0x22 },
|
||||
{ 0x25, 0x25 },
|
||||
{ 0x27, 0x27 },
|
||||
{ 0x29, 0x29 },
|
||||
{ 0x2B, 0x2B },
|
||||
{ 0x2C, 0x2C },
|
||||
{ 0x2D, 0x2D },
|
||||
{ 0x2E, 0x2E },
|
||||
{ 0x2f, 0x2f },
|
||||
{ 0x30, 0x30 },
|
||||
{ 0x33, 0x33 },
|
||||
{ 0x36, 0x36 },
|
||||
{ 0x39, 0x39 },
|
||||
{ 0x3C, 0x3C },
|
||||
{ 0x3f, 0x3f },
|
||||
{ 0x40, 0x40 },
|
||||
{ 0x41, 0x41 },
|
||||
{ 0x42, 0x42 },
|
||||
{ 0x43, 0x43 },
|
||||
{ 0x45, 0x45 },
|
||||
{ 0x47, 0x47 },
|
||||
{ 0x49, 0x49 },
|
||||
{ 0x4A, 0x4A },
|
||||
{ 0x4B, 0x4B },
|
||||
{ 0x4C, 0x4C },
|
||||
{ 0x4D, 0x4D },
|
||||
{ 0x4E, 0x4E },
|
||||
{ 0x4f, 0x4f },
|
||||
{ 0x50, 0x50 },
|
||||
{ 0x51, 0x51 },
|
||||
{ 0x2, 0x2 },
|
||||
{ 0x4, 0x4 },
|
||||
{ 0x6, 0x6 },
|
||||
{ 0x8, 0x8 },
|
||||
{ 0xA, 0xA },
|
||||
{ 0x44, 0x44 },
|
||||
{ 0x46, 0x46 },
|
||||
{ 0x48, 0x48 },
|
||||
{ 0xD, 0xD },
|
||||
{ 0xf, 0xf },
|
||||
{ 0x11, 0x11 },
|
||||
{ 0x13, 0x13 },
|
||||
{ 0x15, 0x15 },
|
||||
{ 0x17, 0x17 },
|
||||
{ 0x19, 0x19 },
|
||||
{ 0x1B, 0x1B },
|
||||
{ 0x1D, 0x1D },
|
||||
{ 0x1f, 0x1f },
|
||||
{ 0x21, 0x21 },
|
||||
{ 0x23, 0x23 },
|
||||
{ 0x26, 0x26 },
|
||||
{ 0x28, 0x28 },
|
||||
{ 0x2A, 0x2A },
|
||||
{ 0x31, 0x31 },
|
||||
{ 0x34, 0x34 },
|
||||
{ 0x37, 0x37 },
|
||||
{ 0x3A, 0x3A },
|
||||
{ 0x3D, 0x3D },
|
||||
{ 0x32, 0x32 },
|
||||
{ 0x35, 0x35 },
|
||||
{ 0x38, 0x38 },
|
||||
{ 0x3B, 0x3B },
|
||||
{ 0x3E, 0x3E },
|
||||
{ 0x24, 0x24 },
|
||||
{ 0x53, 0x53 },
|
||||
{ 0x55, 0x55 },
|
||||
{ 0x57, 0x57 },
|
||||
{ 0x59, 0x59 },
|
||||
{ 0x5B, 0x5B },
|
||||
{ 0x5C, 0x5C },
|
||||
{ 0x5E, 0x5E },
|
||||
{ 0x60, 0x60 },
|
||||
{ 0x62, 0x62 },
|
||||
{ 0x64, 0x64 },
|
||||
{ 0x66, 0x66 },
|
||||
{ 0x68, 0x68 },
|
||||
{ 0x6A, 0x6A },
|
||||
{ 0x6C, 0x6C },
|
||||
{ 0x6E, 0x6E },
|
||||
{ 0x70, 0x70 },
|
||||
{ 0x72, 0x72 },
|
||||
{ 0x75, 0x75 },
|
||||
{ 0x77, 0x77 },
|
||||
{ 0x79, 0x79 },
|
||||
{ 0x7B, 0x7B },
|
||||
{ 0x7C, 0x7C },
|
||||
{ 0x7D, 0x7D },
|
||||
{ 0x7E, 0x7E },
|
||||
{ 0x7f, 0x7f },
|
||||
{ 0x80, 0x80 },
|
||||
{ 0x83, 0x83 },
|
||||
{ 0x86, 0x86 },
|
||||
{ 0x89, 0x89 },
|
||||
{ 0x8C, 0x8C },
|
||||
{ 0x8f, 0x8f },
|
||||
{ 0x90, 0x90 },
|
||||
{ 0x91, 0x91 },
|
||||
{ 0x92, 0x92 },
|
||||
{ 0x93, 0x93 },
|
||||
{ 0x95, 0x95 },
|
||||
{ 0x97, 0x97 },
|
||||
{ 0x99, 0x99 },
|
||||
{ 0x9A, 0x9A },
|
||||
{ 0x9B, 0x9B },
|
||||
{ 0x9C, 0x9C },
|
||||
{ 0x9D, 0x9D },
|
||||
{ 0x9E, 0x9E },
|
||||
{ 0x9f, 0x9f },
|
||||
{ 0xA0, 0xA0 },
|
||||
{ 0xA1, 0xA1 },
|
||||
{ 0x52, 0x52 },
|
||||
{ 0x54, 0x54 },
|
||||
{ 0x56, 0x56 },
|
||||
{ 0x58, 0x58 },
|
||||
{ 0x5A, 0x5A },
|
||||
{ 0x94, 0x94 },
|
||||
{ 0x96, 0x96 },
|
||||
{ 0x98, 0x98 },
|
||||
{ 0x5D, 0x5D },
|
||||
{ 0x5f, 0x5f },
|
||||
{ 0x61, 0x61 },
|
||||
{ 0x63, 0x63 },
|
||||
{ 0x65, 0x65 },
|
||||
{ 0x67, 0x67 },
|
||||
{ 0x69, 0x69 },
|
||||
{ 0x6B, 0x6B },
|
||||
{ 0x6D, 0x6D },
|
||||
{ 0x6f, 0x6f },
|
||||
{ 0x71, 0x71 },
|
||||
{ 0x73, 0x73 },
|
||||
{ 0x76, 0x76 },
|
||||
{ 0x78, 0x78 },
|
||||
{ 0x7A, 0x7A },
|
||||
{ 0x81, 0x81 },
|
||||
{ 0x84, 0x84 },
|
||||
{ 0x87, 0x87 },
|
||||
{ 0x8A, 0x8A },
|
||||
{ 0x8D, 0x8D },
|
||||
{ 0x82, 0x82 },
|
||||
{ 0x85, 0x85 },
|
||||
{ 0x88, 0x88 },
|
||||
{ 0x8B, 0x8B },
|
||||
{ 0x8E, 0x8E },
|
||||
{ 0x74, 0x74 },
|
||||
{ CHAR_HIRAGANA_A, CHAR_HIRAGANA_A },
|
||||
{ CHAR_HIRAGANA_I, CHAR_HIRAGANA_I },
|
||||
{ CHAR_HIRAGANA_U, CHAR_HIRAGANA_U },
|
||||
{ CHAR_HIRAGANA_E, CHAR_HIRAGANA_E },
|
||||
{ CHAR_HIRAGANA_O, CHAR_HIRAGANA_O },
|
||||
{ CHAR_HIRAGANA_KA, CHAR_HIRAGANA_KA },
|
||||
{ CHAR_HIRAGANA_KI, CHAR_HIRAGANA_KI },
|
||||
{ CHAR_HIRAGANA_KU, CHAR_HIRAGANA_KU },
|
||||
{ CHAR_HIRAGANA_KE, CHAR_HIRAGANA_KE },
|
||||
{ CHAR_HIRAGANA_KO, CHAR_HIRAGANA_KO },
|
||||
{ CHAR_HIRAGANA_SA, CHAR_HIRAGANA_SA },
|
||||
{ CHAR_HIRAGANA_SHI, CHAR_HIRAGANA_SHI },
|
||||
{ CHAR_HIRAGANA_SU, CHAR_HIRAGANA_SU },
|
||||
{ CHAR_HIRAGANA_SE, CHAR_HIRAGANA_SE },
|
||||
{ CHAR_HIRAGANA_SO, CHAR_HIRAGANA_SO },
|
||||
{ CHAR_HIRAGANA_TA, CHAR_HIRAGANA_TA },
|
||||
{ CHAR_HIRAGANA_CHI, CHAR_HIRAGANA_CHI },
|
||||
{ CHAR_HIRAGANA_TSU, CHAR_HIRAGANA_TSU },
|
||||
{ CHAR_HIRAGANA_TE, CHAR_HIRAGANA_TE },
|
||||
{ CHAR_HIRAGANA_TO, CHAR_HIRAGANA_TO },
|
||||
{ CHAR_HIRAGANA_NA, CHAR_HIRAGANA_NA },
|
||||
{ CHAR_HIRAGANA_NI, CHAR_HIRAGANA_NI },
|
||||
{ CHAR_HIRAGANA_NU, CHAR_HIRAGANA_NU },
|
||||
{ CHAR_HIRAGANA_NE, CHAR_HIRAGANA_NE },
|
||||
{ CHAR_HIRAGANA_NO, CHAR_HIRAGANA_NO },
|
||||
{ CHAR_HIRAGANA_HA, CHAR_HIRAGANA_HA },
|
||||
{ CHAR_HIRAGANA_HI, CHAR_HIRAGANA_HI },
|
||||
{ CHAR_HIRAGANA_FU, CHAR_HIRAGANA_FU },
|
||||
{ CHAR_HIRAGANA_HE, CHAR_HIRAGANA_HE },
|
||||
{ CHAR_HIRAGANA_HO, CHAR_HIRAGANA_HO },
|
||||
{ CHAR_HIRAGANA_MA, CHAR_HIRAGANA_MA },
|
||||
{ CHAR_HIRAGANA_MI, CHAR_HIRAGANA_MI },
|
||||
{ CHAR_HIRAGANA_MU, CHAR_HIRAGANA_MU },
|
||||
{ CHAR_HIRAGANA_ME, CHAR_HIRAGANA_ME },
|
||||
{ CHAR_HIRAGANA_MO, CHAR_HIRAGANA_MO },
|
||||
{ CHAR_HIRAGANA_YA, CHAR_HIRAGANA_YA },
|
||||
{ CHAR_HIRAGANA_YU, CHAR_HIRAGANA_YU },
|
||||
{ CHAR_HIRAGANA_YO, CHAR_HIRAGANA_YO },
|
||||
{ CHAR_HIRAGANA_RA, CHAR_HIRAGANA_RA },
|
||||
{ CHAR_HIRAGANA_RI, CHAR_HIRAGANA_RI },
|
||||
{ CHAR_HIRAGANA_RU, CHAR_HIRAGANA_RU },
|
||||
{ CHAR_HIRAGANA_RE, CHAR_HIRAGANA_RE },
|
||||
{ CHAR_HIRAGANA_RO, CHAR_HIRAGANA_RO },
|
||||
{ CHAR_HIRAGANA_WA, CHAR_HIRAGANA_WA },
|
||||
{ CHAR_HIRAGANA_WO, CHAR_HIRAGANA_WO },
|
||||
{ CHAR_HIRAGANA_N, CHAR_HIRAGANA_N },
|
||||
{ CHAR_HIRAGANA_SMALL_A, CHAR_HIRAGANA_SMALL_A },
|
||||
{ CHAR_HIRAGANA_SMALL_I, CHAR_HIRAGANA_SMALL_I },
|
||||
{ CHAR_HIRAGANA_SMALL_U, CHAR_HIRAGANA_SMALL_U },
|
||||
{ CHAR_HIRAGANA_SMALL_E, CHAR_HIRAGANA_SMALL_E },
|
||||
{ CHAR_HIRAGANA_SMALL_O, CHAR_HIRAGANA_SMALL_O },
|
||||
{ CHAR_HIRAGANA_SMALL_YA, CHAR_HIRAGANA_SMALL_YA },
|
||||
{ CHAR_HIRAGANA_SMALL_YU, CHAR_HIRAGANA_SMALL_YU },
|
||||
{ CHAR_HIRAGANA_SMALL_YO, CHAR_HIRAGANA_SMALL_YO },
|
||||
{ CHAR_HIRAGANA_GA, CHAR_HIRAGANA_GA },
|
||||
{ CHAR_HIRAGANA_GI, CHAR_HIRAGANA_GI },
|
||||
{ CHAR_HIRAGANA_GU, CHAR_HIRAGANA_GU },
|
||||
{ CHAR_HIRAGANA_GE, CHAR_HIRAGANA_GE },
|
||||
{ CHAR_HIRAGANA_GO, CHAR_HIRAGANA_GO },
|
||||
{ CHAR_HIRAGANA_ZA, CHAR_HIRAGANA_ZA },
|
||||
{ CHAR_HIRAGANA_JI, CHAR_HIRAGANA_JI },
|
||||
{ CHAR_HIRAGANA_ZU, CHAR_HIRAGANA_ZU },
|
||||
{ CHAR_HIRAGANA_ZE, CHAR_HIRAGANA_ZE },
|
||||
{ CHAR_HIRAGANA_ZO, CHAR_HIRAGANA_ZO },
|
||||
{ CHAR_HIRAGANA_DA, CHAR_HIRAGANA_DA },
|
||||
{ CHAR_HIRAGANA_DJI, CHAR_HIRAGANA_DJI },
|
||||
{ CHAR_HIRAGANA_DZU, CHAR_HIRAGANA_DZU },
|
||||
{ CHAR_HIRAGANA_DE, CHAR_HIRAGANA_DE },
|
||||
{ CHAR_HIRAGANA_DO, CHAR_HIRAGANA_DO },
|
||||
{ CHAR_HIRAGANA_BA, CHAR_HIRAGANA_BA },
|
||||
{ CHAR_HIRAGANA_BI, CHAR_HIRAGANA_BI },
|
||||
{ CHAR_HIRAGANA_BU, CHAR_HIRAGANA_BU },
|
||||
{ CHAR_HIRAGANA_BE, CHAR_HIRAGANA_BE },
|
||||
{ CHAR_HIRAGANA_BO, CHAR_HIRAGANA_BO },
|
||||
{ CHAR_HIRAGANA_PA, CHAR_HIRAGANA_PA },
|
||||
{ CHAR_HIRAGANA_PI, CHAR_HIRAGANA_PI },
|
||||
{ CHAR_HIRAGANA_PU, CHAR_HIRAGANA_PU },
|
||||
{ CHAR_HIRAGANA_PE, CHAR_HIRAGANA_PE },
|
||||
{ CHAR_HIRAGANA_PO, CHAR_HIRAGANA_PO },
|
||||
{ CHAR_HIRAGANA_SOKUON, CHAR_HIRAGANA_SOKUON },
|
||||
{ CHAR_KATAKANA_A, CHAR_KATAKANA_A },
|
||||
{ CHAR_KATAKANA_I, CHAR_KATAKANA_I },
|
||||
{ CHAR_KATAKANA_U, CHAR_KATAKANA_U },
|
||||
{ CHAR_KATAKANA_E, CHAR_KATAKANA_E },
|
||||
{ CHAR_KATAKANA_O, CHAR_KATAKANA_O },
|
||||
{ CHAR_KATAKANA_KA, CHAR_KATAKANA_KA },
|
||||
{ CHAR_KATAKANA_KI, CHAR_KATAKANA_KI },
|
||||
{ CHAR_KATAKANA_KU, CHAR_KATAKANA_KU },
|
||||
{ CHAR_KATAKANA_KE, CHAR_KATAKANA_KE },
|
||||
{ CHAR_KATAKANA_KO, CHAR_KATAKANA_KO },
|
||||
{ CHAR_KATAKANA_SA, CHAR_KATAKANA_SA },
|
||||
{ CHAR_KATAKANA_SHI, CHAR_KATAKANA_SHI },
|
||||
{ CHAR_KATAKANA_SU, CHAR_KATAKANA_SU },
|
||||
{ CHAR_KATAKANA_SE, CHAR_KATAKANA_SE },
|
||||
{ CHAR_KATAKANA_SO, CHAR_KATAKANA_SO },
|
||||
{ CHAR_KATAKANA_TA, CHAR_KATAKANA_TA },
|
||||
{ CHAR_KATAKANA_CHI, CHAR_KATAKANA_CHI },
|
||||
{ CHAR_KATAKANA_TSU, CHAR_KATAKANA_TSU },
|
||||
{ CHAR_KATAKANA_TE, CHAR_KATAKANA_TE },
|
||||
{ CHAR_KATAKANA_TO, CHAR_KATAKANA_TO },
|
||||
{ CHAR_KATAKANA_NA, CHAR_KATAKANA_NA },
|
||||
{ CHAR_KATAKANA_NI, CHAR_KATAKANA_NI },
|
||||
{ CHAR_KATAKANA_NU, CHAR_KATAKANA_NU },
|
||||
{ CHAR_KATAKANA_NE, CHAR_KATAKANA_NE },
|
||||
{ CHAR_KATAKANA_NO, CHAR_KATAKANA_NO },
|
||||
{ CHAR_KATAKANA_HA, CHAR_KATAKANA_HA },
|
||||
{ CHAR_KATAKANA_HI, CHAR_KATAKANA_HI },
|
||||
{ CHAR_KATAKANA_FU, CHAR_KATAKANA_FU },
|
||||
{ CHAR_KATAKANA_HE, CHAR_KATAKANA_HE },
|
||||
{ CHAR_KATAKANA_HO, CHAR_KATAKANA_HO },
|
||||
{ CHAR_KATAKANA_MA, CHAR_KATAKANA_MA },
|
||||
{ CHAR_KATAKANA_MI, CHAR_KATAKANA_MI },
|
||||
{ CHAR_KATAKANA_MU, CHAR_KATAKANA_MU },
|
||||
{ CHAR_KATAKANA_ME, CHAR_KATAKANA_ME },
|
||||
{ CHAR_KATAKANA_MO, CHAR_KATAKANA_MO },
|
||||
{ CHAR_KATAKANA_YA, CHAR_KATAKANA_YA },
|
||||
{ CHAR_KATAKANA_YU, CHAR_KATAKANA_YU },
|
||||
{ CHAR_KATAKANA_YO, CHAR_KATAKANA_YO },
|
||||
{ CHAR_KATAKANA_RA, CHAR_KATAKANA_RA },
|
||||
{ CHAR_KATAKANA_RI, CHAR_KATAKANA_RI },
|
||||
{ CHAR_KATAKANA_RU, CHAR_KATAKANA_RU },
|
||||
{ CHAR_KATAKANA_RE, CHAR_KATAKANA_RE },
|
||||
{ CHAR_KATAKANA_RO, CHAR_KATAKANA_RO },
|
||||
{ CHAR_KATAKANA_WA, CHAR_KATAKANA_WA },
|
||||
{ CHAR_KATAKANA_WO, CHAR_KATAKANA_WO },
|
||||
{ CHAR_KATAKANA_N, CHAR_KATAKANA_N },
|
||||
{ CHAR_KATAKANA_SMALL_A, CHAR_KATAKANA_SMALL_A },
|
||||
{ CHAR_KATAKANA_SMALL_I, CHAR_KATAKANA_SMALL_I },
|
||||
{ CHAR_KATAKANA_SMALL_U, CHAR_KATAKANA_SMALL_U },
|
||||
{ CHAR_KATAKANA_SMALL_E, CHAR_KATAKANA_SMALL_E },
|
||||
{ CHAR_KATAKANA_SMALL_O, CHAR_KATAKANA_SMALL_O },
|
||||
{ CHAR_KATAKANA_SMALL_YA, CHAR_KATAKANA_SMALL_YA },
|
||||
{ CHAR_KATAKANA_SMALL_YU, CHAR_KATAKANA_SMALL_YU },
|
||||
{ CHAR_KATAKANA_SMALL_YO, CHAR_KATAKANA_SMALL_YO },
|
||||
{ CHAR_KATAKANA_GA, CHAR_KATAKANA_GA },
|
||||
{ CHAR_KATAKANA_GI, CHAR_KATAKANA_GI },
|
||||
{ CHAR_KATAKANA_GU, CHAR_KATAKANA_GU },
|
||||
{ CHAR_KATAKANA_GE, CHAR_KATAKANA_GE },
|
||||
{ CHAR_KATAKANA_GO, CHAR_KATAKANA_GO },
|
||||
{ CHAR_KATAKANA_ZA, CHAR_KATAKANA_ZA },
|
||||
{ CHAR_KATAKANA_JI, CHAR_KATAKANA_JI },
|
||||
{ CHAR_KATAKANA_ZU, CHAR_KATAKANA_ZU },
|
||||
{ CHAR_KATAKANA_ZE, CHAR_KATAKANA_ZE },
|
||||
{ CHAR_KATAKANA_ZO, CHAR_KATAKANA_ZO },
|
||||
{ CHAR_KATAKANA_DA, CHAR_KATAKANA_DA },
|
||||
{ CHAR_KATAKANA_DJI, CHAR_KATAKANA_DJI },
|
||||
{ CHAR_KATAKANA_DZU, CHAR_KATAKANA_DZU },
|
||||
{ CHAR_KATAKANA_DE, CHAR_KATAKANA_DE },
|
||||
{ CHAR_KATAKANA_DO, CHAR_KATAKANA_DO },
|
||||
{ CHAR_KATAKANA_BA, CHAR_KATAKANA_BA },
|
||||
{ CHAR_KATAKANA_BI, CHAR_KATAKANA_BI },
|
||||
{ CHAR_KATAKANA_BU, CHAR_KATAKANA_BU },
|
||||
{ CHAR_KATAKANA_BE, CHAR_KATAKANA_BE },
|
||||
{ CHAR_KATAKANA_BO, CHAR_KATAKANA_BO },
|
||||
{ CHAR_KATAKANA_PA, CHAR_KATAKANA_PA },
|
||||
{ CHAR_KATAKANA_PI, CHAR_KATAKANA_PI },
|
||||
{ CHAR_KATAKANA_PU, CHAR_KATAKANA_PU },
|
||||
{ CHAR_KATAKANA_PE, CHAR_KATAKANA_PE },
|
||||
{ CHAR_KATAKANA_PO, CHAR_KATAKANA_PO },
|
||||
{ CHAR_KATAKANA_SOKUON, CHAR_KATAKANA_SOKUON },
|
||||
{ CHAR_WIDE_0, CHAR_0 },
|
||||
{ CHAR_WIDE_1, CHAR_1 },
|
||||
{ CHAR_WIDE_2, CHAR_2 },
|
||||
|
|
@ -295,23 +299,21 @@ static u16 GetDoubleQuoteCloseChar(u32 language)
|
|||
}
|
||||
}
|
||||
|
||||
BOOL GBAStringToDSString(const u8 *src, u16 *dst, u32 length, u32 language)
|
||||
BOOL GBA_ConvertStringToDS(const u8 *src, charcode_t *dst, u32 length, u32 language)
|
||||
{
|
||||
u32 i, nonJap;
|
||||
|
||||
nonJap = (language != JAPANESE);
|
||||
BOOL nonJa = (language != JAPANESE);
|
||||
|
||||
u32 i;
|
||||
for (i = 0; i < (length - 1); i++) {
|
||||
if (src[i] == 0xff) {
|
||||
if (src[i] == GBA_EOS) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (src[i] >= NELEMS(sGBACharToDSChars)) {
|
||||
int j, v3;
|
||||
int invalidStrLen = min(length - 1, 10);
|
||||
|
||||
v3 = ((length - 1) < 10) ? (length - 1) : 10;
|
||||
|
||||
for (j = 0; j < v3; j++) {
|
||||
int j;
|
||||
for (j = 0; j < invalidStrLen; j++) {
|
||||
dst[j] = CHAR_QUESTION;
|
||||
}
|
||||
|
||||
|
|
@ -319,7 +321,7 @@ BOOL GBAStringToDSString(const u8 *src, u16 *dst, u32 length, u32 language)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
switch (sGBACharToDSChars[src[i]][nonJap]) {
|
||||
switch (sGBACharToDSChars[src[i]][nonJa]) {
|
||||
case CHAR_WIDE_SPACE:
|
||||
dst[i] = GetSpaceChar(language);
|
||||
break;
|
||||
|
|
@ -330,7 +332,7 @@ BOOL GBAStringToDSString(const u8 *src, u16 *dst, u32 length, u32 language)
|
|||
dst[i] = GetDoubleQuoteCloseChar(language);
|
||||
break;
|
||||
default:
|
||||
dst[i] = sGBACharToDSChars[src[i]][nonJap];
|
||||
dst[i] = sGBACharToDSChars[src[i]][nonJa];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -583,7 +583,7 @@ static void ov97_02233FA4(GBAMigrator *migrator)
|
|||
|
||||
static void ov97_022340B0(GBAMigrator *migrator)
|
||||
{
|
||||
SpriteResourcesHeader_Init(&migrator->unk_1E8, 0, 0, 0, 0, 0xffffffff, 0xffffffff, 0, 0, migrator->unk_1B8[0], migrator->unk_1B8[1], migrator->unk_1B8[2], migrator->unk_1B8[3], NULL, NULL);
|
||||
SpriteResourcesHeader_Init(&migrator->unk_1E8, 0, 0, 0, 0, -1, -1, 0, 0, migrator->unk_1B8[0], migrator->unk_1B8[1], migrator->unk_1B8[2], migrator->unk_1B8[3], NULL, NULL);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, 1);
|
||||
}
|
||||
|
||||
|
|
@ -1183,7 +1183,7 @@ static void ov97_02234A2C(GBAMigrator *migrator, int boxNum)
|
|||
v0.unk_2C = TEXT_COLOR(1, 2, 0);
|
||||
v0.unk_20 = 0xA0;
|
||||
|
||||
GBAStringToDSString(migrator->pokemonStorage->boxNames[boxNum], boxName, GBA_BOX_NAME_LEN + 1, GBACart_GetLanguage());
|
||||
GBA_ConvertStringToDS(migrator->pokemonStorage->boxNames[boxNum], boxName, GBA_BOX_NAME_LEN + 1, GBACart_GetLanguage());
|
||||
v0.unk_38 = boxName;
|
||||
ov97_02233DD0(migrator, &v0, 0x1);
|
||||
}
|
||||
|
|
@ -1255,7 +1255,7 @@ static void PrintGBABoxMonInfo(GBAMigrator *migrator, GBABoxPokemon *gbaBoxMon)
|
|||
}
|
||||
|
||||
GBABoxPokemon_GetData(gbaBoxMon, GBA_MON_DATA_NICKNAME, gbaNickname);
|
||||
GBAStringToDSString(gbaNickname, dsNickname, GBA_MON_NAME_LEN + 1, GBABoxPokemon_GetData(gbaBoxMon, GBA_MON_DATA_LANGUAGE, NULL));
|
||||
GBA_ConvertStringToDS(gbaNickname, dsNickname, GBA_MON_NAME_LEN + 1, GBABoxPokemon_GetData(gbaBoxMon, GBA_MON_DATA_LANGUAGE, NULL));
|
||||
|
||||
v4.unk_38 = dsNickname;
|
||||
v4.messageEntryID = -1;
|
||||
|
|
@ -1656,7 +1656,7 @@ static void ov97_02235344(GBAMigrator *migrator)
|
|||
Strbuf *strBuf;
|
||||
u16 playerName[GBA_PLAYER_NAME_LEN + 1];
|
||||
|
||||
GBAStringToDSString(GetGBAPlayerName(), playerName, GBA_PLAYER_NAME_LEN + 1, GBACart_GetLanguage());
|
||||
GBA_ConvertStringToDS(GetGBAPlayerName(), playerName, GBA_PLAYER_NAME_LEN + 1, GBACart_GetLanguage());
|
||||
|
||||
strTemplate = StringTemplate_Default(HEAP_ID_MIGRATE_FROM_GBA);
|
||||
strBuf = Strbuf_Init(GBA_PLAYER_NAME_LEN + 1, HEAP_ID_MIGRATE_FROM_GBA);
|
||||
|
|
|
|||
|
|
@ -1012,7 +1012,7 @@ void BoxMonGBAToBoxMon(GBABoxPokemon *gbaBoxMon, BoxPokemon *boxMon)
|
|||
}
|
||||
|
||||
GBABoxPokemon_GetData(gbaBoxMon, GBA_MON_DATA_NICKNAME, gbaNickname);
|
||||
GBAStringToDSString(gbaNickname, dsNickName, MON_NAME_LEN + 2, language);
|
||||
GBA_ConvertStringToDS(gbaNickname, dsNickName, MON_NAME_LEN + 2, language);
|
||||
BoxPokemon_SetValue(boxMon, MON_DATA_NICKNAME_AND_FLAG, dsNickName);
|
||||
|
||||
if (GBABoxPokemon_GetData(gbaBoxMon, GBA_MON_DATA_LANGUAGE, NULL) != gGameLanguage) {
|
||||
|
|
@ -1024,7 +1024,7 @@ void BoxMonGBAToBoxMon(GBABoxPokemon *gbaBoxMon, BoxPokemon *boxMon)
|
|||
BoxPokemon_SetValue(boxMon, MON_DATA_MET_GAME, &value);
|
||||
|
||||
GBABoxPokemon_GetData(gbaBoxMon, GBA_MON_DATA_OT_NAME, gbaNickname);
|
||||
GBAStringToDSString(gbaNickname, dsNickName, GBA_PLAYER_NAME_LEN + 1, language);
|
||||
GBA_ConvertStringToDS(gbaNickname, dsNickName, GBA_PLAYER_NAME_LEN + 1, language);
|
||||
BoxPokemon_SetValue(boxMon, MON_DATA_OTNAME, dsNickName);
|
||||
|
||||
value = GBABoxPokemon_GetData(gbaBoxMon, GBA_MON_DATA_MET_LOCATION, NULL);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
#include "struct_defs/struct_02099F80.h"
|
||||
|
||||
#include "game_opening/const_ov77_021D742C.h"
|
||||
#include "overlay097/const_ov97_0223D674.h"
|
||||
#include "overlay097/application_template.h"
|
||||
#include "overlay097/distribution_cartridge.h"
|
||||
#include "overlay097/main_menu_util.h"
|
||||
#include "overlay097/ov97_02235D18.h"
|
||||
|
|
@ -138,11 +138,11 @@ enum MainMenuWirelessCheckState {
|
|||
};
|
||||
|
||||
enum MainMenuAlertsState {
|
||||
MAIN_MANU_ALERTS_STATE_WAIT = 15,
|
||||
MAIN_MANU_ALERTS_STATE_LOAD_GRAPHICS,
|
||||
MAIN_MANU_ALERTS_STATE_SHOW_NEXT_ALERT,
|
||||
MAIN_MANU_ALERTS_STATE_WAIT_DISMISS,
|
||||
MAIN_MANU_ALERTS_STATE_HIDE_ALERT,
|
||||
MAIN_MENU_ALERTS_STATE_WAIT = 15,
|
||||
MAIN_MENU_ALERTS_STATE_LOAD_GRAPHICS,
|
||||
MAIN_MENU_ALERTS_STATE_SHOW_NEXT_ALERT,
|
||||
MAIN_MENU_ALERTS_STATE_WAIT_DISMISS,
|
||||
MAIN_MENU_ALERTS_STATE_HIDE_ALERT,
|
||||
};
|
||||
|
||||
enum MainMenuAlertType {
|
||||
|
|
@ -235,7 +235,7 @@ typedef struct MainMenuAppData {
|
|||
*/
|
||||
typedef BOOL (*MainMenuOptionRenderFuncPtr)(MainMenuAppData *appData, enum MainMenuOption optionIdx, MainMenuWindow *, int yPos);
|
||||
|
||||
typedef struct {
|
||||
typedef struct MainMenuOptionTemplate {
|
||||
enum MainMenuNextApp appToLoad;
|
||||
int height;
|
||||
int textEntryID;
|
||||
|
|
@ -250,14 +250,11 @@ static BOOL RenderWiiConnectionOption(MainMenuAppData *appData, enum MainMenuOpt
|
|||
static BOOL RenderWFCSettingsOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos);
|
||||
static BOOL RenderWiiMsgSettingsOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos);
|
||||
|
||||
MysteryGift *SaveData_GetMysteryGift(SaveData *saveData);
|
||||
int TrainerInfo_Size(void);
|
||||
|
||||
static WFCUserInfoErasedAlertTemplate sWFCUserInfoErasedMsgWindowTemplate[] = {
|
||||
{ .x = 5, .y = 5, .width = 22, .height = 14, TEXT_BANK_UNK_0695, pl_msg_00000695_00016, NULL }
|
||||
{ .x = 5, .y = 5, .width = 22, .height = TEXT_LINES_TILES(7), TEXT_BANK_UNK_0695, pl_msg_00000695_00016, NULL }
|
||||
};
|
||||
|
||||
MainMenuOptionTemplate sOptions[NUM_MAIN_MENU_OPTIONS] = {
|
||||
static MainMenuOptionTemplate sOptions[NUM_MAIN_MENU_OPTIONS] = {
|
||||
[MAIN_MENU_OPTION_CONTINUE] = {
|
||||
.appToLoad = NEXT_APP_LOAD_SAVE,
|
||||
.height = TEXT_LINES_TILES(5),
|
||||
|
|
@ -318,7 +315,7 @@ static u32 sContinueOptionStringsIDs[] = {
|
|||
|
||||
// clang-format off
|
||||
// Some of these have some extra seemingly random padding, might be an artifact from localization.
|
||||
MainMenuAlertTemplate sMainMenuAlerts[] = {
|
||||
static MainMenuAlertTemplate sMainMenuAlerts[] = {
|
||||
[MAIN_MENU_ALERT_MYSTERY_GIFT_OK] = { .x = 4, .y = 2, .width = 24, .height = TEXT_LINES_TILES(8) + 4, MainMenuAlerts_Text_MysteryGiftOk },
|
||||
[MAIN_MENU_ALERT_MYSTERY_GIFT_NO_DEX] = { .x = 4, .y = 4, .width = 24, .height = TEXT_LINES_TILES(8), MainMenuAlerts_Text_MysteryGiftNoDex },
|
||||
[MAIN_MENU_ALERT_RANGER_MSG_OK] = { .x = 4, .y = 1, .width = 24, .height = TEXT_LINES_TILES(9) + 4, MainMenuAlerts_Text_RangerLinkOk },
|
||||
|
|
@ -340,10 +337,10 @@ static BOOL ShowWFCUserInfoErasedMsg(MainMenuAppData *appData)
|
|||
appData->wfcUserInfoErasedMsgPending[i] = FALSE;
|
||||
WFCUserInfoErasedAlertTemplate *alertTemplate = &sWFCUserInfoErasedMsgWindowTemplate[i];
|
||||
|
||||
MainMenuWindow v2;
|
||||
MainMenuUtil_InitWindow(&v2, &appData->wfcUserInfoErasedWindow, PLTT_0, alertTemplate->bankID, 1, PLTT_2);
|
||||
MainMenuWindow_SetDimensionsAndBasetile(&v2, alertTemplate->width, alertTemplate->height, ALERT_WINDOW_CONTENT_BASE_TILE);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, &v2, alertTemplate->x, alertTemplate->y, alertTemplate->entryID);
|
||||
MainMenuWindow window;
|
||||
MainMenuUtil_InitWindow(&window, &appData->wfcUserInfoErasedWindow, PLTT_0, alertTemplate->bankID, ALERT_WINDOW_FRAME_BASE_TILE, PLTT_2);
|
||||
MainMenuWindow_SetDimensionsAndBasetile(&window, alertTemplate->width, alertTemplate->height, ALERT_WINDOW_CONTENT_BASE_TILE);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, &window, alertTemplate->x, alertTemplate->y, alertTemplate->entryID);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -420,7 +417,7 @@ static void DetectWirelessConnections(MainMenuAppData *appData)
|
|||
case MAIN_MENU_WIRELESS_CHECK_INIT_WIRELESS:
|
||||
sub_02037D48(appData->saveData);
|
||||
|
||||
appData->wirelessCheckTimeout = (2 * 60);
|
||||
appData->wirelessCheckTimeout = 120;
|
||||
appData->wirelessCheckState = MAIN_MENU_WIRELESS_CHECK_CHECK_RESULT;
|
||||
appData->pendingAlerts = 0;
|
||||
|
||||
|
|
@ -437,7 +434,7 @@ static void DetectWirelessConnections(MainMenuAppData *appData)
|
|||
int availableConnections = sub_02037DA0();
|
||||
availableConnections = ~appData->pendingAlerts & availableConnections;
|
||||
|
||||
if (availableConnections && (appData->alertsState == MAIN_MANU_ALERTS_STATE_WAIT) && (appData->alertsPending == FALSE) && (appData->pendingAlerts != availableConnections)) {
|
||||
if (availableConnections && (appData->alertsState == MAIN_MENU_ALERTS_STATE_WAIT) && (appData->alertsPending == FALSE) && (appData->pendingAlerts != availableConnections)) {
|
||||
appData->shouldUpdateOptions = TRUE;
|
||||
|
||||
if (availableConnections & MYSTERY_GIFT) {
|
||||
|
|
@ -474,25 +471,25 @@ static void DetectWirelessConnections(MainMenuAppData *appData)
|
|||
static BOOL ShowAlerts(MainMenuAppData *appData)
|
||||
{
|
||||
switch (appData->alertsState) {
|
||||
case MAIN_MANU_ALERTS_STATE_WAIT:
|
||||
case MAIN_MENU_ALERTS_STATE_WAIT:
|
||||
if (appData->alertsPending == FALSE) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (--appData->alertsPending == FALSE) {
|
||||
appData->alertsState = MAIN_MANU_ALERTS_STATE_LOAD_GRAPHICS;
|
||||
appData->alertsState = MAIN_MENU_ALERTS_STATE_LOAD_GRAPHICS;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
case MAIN_MANU_ALERTS_STATE_LOAD_GRAPHICS:
|
||||
case MAIN_MENU_ALERTS_STATE_LOAD_GRAPHICS:
|
||||
LoadStandardWindowGraphics(appData->bgConfig, BG_LAYER_MAIN_1, ALERT_WINDOW_FRAME_BASE_TILE, PLTT_2, STANDARD_WINDOW_SYSTEM, HEAP_ID_MAIN_MENU);
|
||||
Bg_ClearTilemap(appData->bgConfig, BG_LAYER_MAIN_1);
|
||||
*HW_BG_A_PLTT_COLOR(PLTT_2, 1) = UNFOCUSED_OPTION_BG_COLOR;
|
||||
appData->alertsState = MAIN_MANU_ALERTS_STATE_SHOW_NEXT_ALERT;
|
||||
appData->alertsState = MAIN_MENU_ALERTS_STATE_SHOW_NEXT_ALERT;
|
||||
break;
|
||||
case MAIN_MANU_ALERTS_STATE_SHOW_NEXT_ALERT: {
|
||||
MainMenuWindow v0;
|
||||
MainMenuUtil_InitWindow(&v0, &appData->alertWindow, PLTT_0, TEXT_BANK_MAIN_MENU_ALERTS, 1, PLTT_2);
|
||||
case MAIN_MENU_ALERTS_STATE_SHOW_NEXT_ALERT: {
|
||||
MainMenuWindow window;
|
||||
MainMenuUtil_InitWindow(&window, &appData->alertWindow, PLTT_0, TEXT_BANK_MAIN_MENU_ALERTS, ALERT_WINDOW_FRAME_BASE_TILE, PLTT_2);
|
||||
|
||||
int pendingAlerts = appData->pendingAlerts & ~appData->shownAlerts;
|
||||
|
||||
|
|
@ -516,36 +513,36 @@ static BOOL ShowAlerts(MainMenuAppData *appData)
|
|||
}
|
||||
|
||||
appData->shownAlerts |= pendingAlerts;
|
||||
MainMenuWindow_SetDimensionsAndBasetile(&v0, alertTemplate->width, alertTemplate->height, ALERT_WINDOW_CONTENT_BASE_TILE);
|
||||
MainMenuWindow_SetDimensionsAndBasetile(&window, alertTemplate->width, alertTemplate->height, ALERT_WINDOW_CONTENT_BASE_TILE);
|
||||
|
||||
v0.bgLayer = 1;
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, &v0, alertTemplate->x, alertTemplate->y, alertTemplate->textEntryID);
|
||||
window.bgLayer = BG_LAYER_MAIN_1;
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, &window, alertTemplate->x, alertTemplate->y, alertTemplate->textEntryID);
|
||||
|
||||
Bg_ChangeTilemapRectPalette(appData->bgConfig, BG_LAYER_MAIN_1, Window_GetXPos(v0.window), Window_GetYPos(v0.window), Window_GetWidth(v0.window), Window_GetHeight(v0.window), PLTT_0);
|
||||
Bg_ChangeTilemapRectPalette(appData->bgConfig, BG_LAYER_MAIN_1, Window_GetXPos(window.window), Window_GetYPos(window.window), Window_GetWidth(window.window), Window_GetHeight(window.window), PLTT_0);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, FALSE);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, FALSE);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG1, TRUE);
|
||||
|
||||
appData->alertsDelay = 30;
|
||||
appData->alertsState = MAIN_MANU_ALERTS_STATE_WAIT_DISMISS;
|
||||
appData->alertsState = MAIN_MENU_ALERTS_STATE_WAIT_DISMISS;
|
||||
} break;
|
||||
case MAIN_MANU_ALERTS_STATE_WAIT_DISMISS:
|
||||
case MAIN_MENU_ALERTS_STATE_WAIT_DISMISS:
|
||||
if (appData->alertsDelay) {
|
||||
appData->alertsDelay--;
|
||||
} else {
|
||||
if (JOY_NEW(PAD_BUTTON_A | PAD_BUTTON_B)) {
|
||||
Window_Remove(&appData->alertWindow);
|
||||
appData->alertsState = MAIN_MANU_ALERTS_STATE_HIDE_ALERT;
|
||||
appData->alertsState = MAIN_MENU_ALERTS_STATE_HIDE_ALERT;
|
||||
appData->alertDismissKeys = gSystem.pressedKeys;
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MAIN_MANU_ALERTS_STATE_HIDE_ALERT:
|
||||
case MAIN_MENU_ALERTS_STATE_HIDE_ALERT:
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, TRUE);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, TRUE);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG1, FALSE);
|
||||
appData->alertsState = MAIN_MANU_ALERTS_STATE_WAIT;
|
||||
appData->alertsState = MAIN_MENU_ALERTS_STATE_WAIT;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -603,15 +600,15 @@ static void InitMainMenuGraphics(MainMenuAppData *appData)
|
|||
GXLayers_SetBanks(&vramBanks);
|
||||
SetAllGraphicsModes(&graphicsModes);
|
||||
|
||||
MainMenuUtil_InitBG(appData->bgConfig, 0, 2, 0xF000, 0x0);
|
||||
MainMenuUtil_InitBGLayer(appData->bgConfig, BG_LAYER_MAIN_0, BG_SCREEN_SIZE_256x512, GX_BG_SCRBASE_0xf000 * 0x800, GX_BG_CHARBASE_0x00000 * 0x4000);
|
||||
G2_SetBG0Priority(2);
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_0, 32, 0, HEAP_ID_MAIN_MENU);
|
||||
|
||||
MainMenuUtil_InitBG(appData->bgConfig, 1, 1, 0xD800, 0x8000);
|
||||
MainMenuUtil_InitBGLayer(appData->bgConfig, BG_LAYER_MAIN_1, BG_SCREEN_SIZE_256x256, GX_BG_SCRBASE_0xd800 * 0x800, GX_BG_CHARBASE_0x08000 * 0x4000);
|
||||
G2_SetBG1Priority(1);
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_1, 32, 0, HEAP_ID_MAIN_MENU);
|
||||
|
||||
MainMenuUtil_InitBG(appData->bgConfig, 2, 2, 0xE000, 0x0);
|
||||
MainMenuUtil_InitBGLayer(appData->bgConfig, BG_LAYER_MAIN_2, BG_SCREEN_SIZE_256x512, GX_BG_SCRBASE_0xe000 * 0x800, GX_BG_CHARBASE_0x00000 * 0x4000);
|
||||
G2_SetBG2Priority(0);
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_2, 32, 0, HEAP_ID_MAIN_MENU);
|
||||
|
||||
|
|
@ -632,12 +629,12 @@ static void LoadScrollArrowsSprites(MainMenuAppData *appData)
|
|||
{
|
||||
MainMenuUtil_InitCharPlttTransferBuffers();
|
||||
MainMenuUtil_InitSpriteLoader();
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_GRAPHIC__MYSTERY, 43, 40, 42, 41, 0);
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_GRAPHIC__MYSTERY, 43, 40, 42, 41, DS_SCREEN_MAIN);
|
||||
|
||||
appData->scrollUpArrowSprite = MainMenuUtil_InitSprite(0, appData->scrollUpArrowSprite, HW_LCD_WIDTH / 2, SCROLL_ARROWS_OFFSET, 0);
|
||||
appData->scrollUpArrowSprite = MainMenuUtil_InitSprite(DS_SCREEN_MAIN, appData->scrollUpArrowSprite, HW_LCD_WIDTH / 2, SCROLL_ARROWS_OFFSET, 0);
|
||||
Sprite_SetDrawFlag(appData->scrollUpArrowSprite, FALSE);
|
||||
|
||||
appData->scrollDownArrowSprite = MainMenuUtil_InitSprite(0, appData->scrollDownArrowSprite, HW_LCD_WIDTH / 2, HW_LCD_HEIGHT - SCROLL_ARROWS_OFFSET, 1);
|
||||
appData->scrollDownArrowSprite = MainMenuUtil_InitSprite(DS_SCREEN_MAIN, appData->scrollDownArrowSprite, HW_LCD_WIDTH / 2, HW_LCD_HEIGHT - SCROLL_ARROWS_OFFSET, 1);
|
||||
Sprite_SetDrawFlag(appData->scrollDownArrowSprite, FALSE);
|
||||
}
|
||||
|
||||
|
|
@ -659,14 +656,14 @@ static void DrawWirelessIcon(MainMenuAppData *appData, int column, int row, int
|
|||
}
|
||||
|
||||
// Top half
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / 8) + column + 0] = tilesIDStart + 0;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / 8) + column + 1] = tilesIDStart + 1;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) + column + 0] = tilesIDStart + 0;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) + column + 1] = tilesIDStart + 1;
|
||||
|
||||
row++;
|
||||
|
||||
// Bottom half
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / 8) + column + 0] = tilesIDStart + 8;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / 8) + column + 1] = tilesIDStart + 9;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) + column + 0] = tilesIDStart + 8;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) + column + 1] = tilesIDStart + 9;
|
||||
|
||||
Bg_CopyTilemapBufferToVRAM(appData->bgConfig, BG_LAYER_MAIN_2);
|
||||
}
|
||||
|
|
@ -678,13 +675,13 @@ static void ClearWirelessIcon(MainMenuAppData *appData, int column, int row)
|
|||
// Empty tile
|
||||
int tileID = WIRELESS_ICONS_TILES_ID_START + 4;
|
||||
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / 8) + column + 0] = tileID;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / 8) + column + 1] = tileID;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) + column + 0] = tileID;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) + column + 1] = tileID;
|
||||
|
||||
row++;
|
||||
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / 8) + column + 0] = tileID;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / 8) + column + 1] = tileID;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) + column + 0] = tileID;
|
||||
tilemapBuffer[row * (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) + column + 1] = tileID;
|
||||
|
||||
Bg_CopyTilemapBufferToVRAM(appData->bgConfig, BG_LAYER_MAIN_2);
|
||||
}
|
||||
|
|
@ -693,7 +690,7 @@ static void PrintRightAlignedWithMargin(Window *window, MessageLoader *msgLoader
|
|||
{
|
||||
Strbuf *strBuf = MessageUtil_ExpandedStrbuf(strTemplate, msgLoader, entryID, HEAP_ID_MAIN_MENU);
|
||||
u32 textWidth = Font_CalcStrbufWidth(FONT_SYSTEM, strBuf, Font_GetAttribute(FONT_SYSTEM, FONTATTR_LETTER_SPACING));
|
||||
u32 xOffset = Window_GetWidth(window) * 8 - (textWidth + CONTINUE_WINDOW_MARGIN);
|
||||
u32 xOffset = Window_GetWidth(window) * TILE_WIDTH_PIXELS - (textWidth + CONTINUE_WINDOW_MARGIN);
|
||||
|
||||
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, strBuf, xOffset, yOffset, TEXT_SPEED_NO_TRANSFER, textColor, NULL);
|
||||
Strbuf_Free(strBuf);
|
||||
|
|
@ -718,7 +715,7 @@ static void SetTemplateNumberCustomFormatting(StringTemplate *strTemplate, int n
|
|||
StringTemplate_SetNumber(strTemplate, 0, number, maxDigits, paddingMode, CHARSET_MODE_EN);
|
||||
}
|
||||
|
||||
static BOOL RenderContinueOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos)
|
||||
static BOOL RenderContinueOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *window, int yPos)
|
||||
{
|
||||
StringTemplate *strTemplate; // Forward-declaration required to match.
|
||||
|
||||
|
|
@ -732,7 +729,7 @@ static BOOL RenderContinueOption(MainMenuAppData *appData, enum MainMenuOption o
|
|||
textColor = TEXT_COLOR(7, 8, 15);
|
||||
}
|
||||
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, param2, 3, yPos, sOptions[option].textEntryID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, window, 3, yPos, sOptions[option].textEntryID);
|
||||
|
||||
// Index 0 has the "Continue" string, which is printed separately
|
||||
for (int i = 1; i < NELEMS(sContinueOptionStringsIDs); i++) {
|
||||
|
|
@ -741,26 +738,26 @@ static BOOL RenderContinueOption(MainMenuAppData *appData, enum MainMenuOption o
|
|||
}
|
||||
|
||||
Strbuf *strBuf = MessageUtil_ExpandedStrbuf(strTemplate, msgLoader, sContinueOptionStringsIDs[i], HEAP_ID_MAIN_MENU);
|
||||
Text_AddPrinterWithParamsAndColor(param2->window, FONT_SYSTEM, strBuf, CONTINUE_WINDOW_MARGIN, TEXT_LINES(i), TEXT_SPEED_NO_TRANSFER, textColor, NULL);
|
||||
Text_AddPrinterWithParamsAndColor(window->window, FONT_SYSTEM, strBuf, CONTINUE_WINDOW_MARGIN, TEXT_LINES(i), TEXT_SPEED_NO_TRANSFER, textColor, NULL);
|
||||
Strbuf_Free(strBuf);
|
||||
}
|
||||
|
||||
StringTemplate_SetPlayerName(strTemplate, 0, appData->trainerInfo);
|
||||
PrintRightAlignedWithMargin(param2->window, msgLoader, strTemplate, textColor, MainMenuOptions_Text_PlayerName, TEXT_LINES(1));
|
||||
PrintRightAlignedWithMargin(window->window, msgLoader, strTemplate, textColor, MainMenuOptions_Text_PlayerName, TEXT_LINES(1));
|
||||
|
||||
SetTemplateNumberCustomFormatting(strTemplate, PlayTime_GetHours(appData->playTime));
|
||||
StringTemplate_SetNumber(strTemplate, 1, PlayTime_GetMinutes(appData->playTime), 2, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
PrintRightAlignedWithMargin(param2->window, msgLoader, strTemplate, textColor, MainMenuOptions_Text_PlayTime, TEXT_LINES(2));
|
||||
PrintRightAlignedWithMargin(window->window, msgLoader, strTemplate, textColor, MainMenuOptions_Text_PlayTime, TEXT_LINES(2));
|
||||
|
||||
StringTemplate_SetNumber(strTemplate, 0, appData->badgeCount, 1, PADDING_MODE_NONE, CHARSET_MODE_EN);
|
||||
PrintRightAlignedWithMargin(param2->window, msgLoader, strTemplate, textColor, MainMenuOptions_Text_BadgeCount, TEXT_LINES(3));
|
||||
PrintRightAlignedWithMargin(window->window, msgLoader, strTemplate, textColor, MainMenuOptions_Text_BadgeCount, TEXT_LINES(3));
|
||||
|
||||
if (appData->pokedexObtained) {
|
||||
SetTemplateNumberCustomFormatting(strTemplate, Pokedex_CountSeen(appData->pokedex));
|
||||
PrintRightAlignedWithMargin(param2->window, msgLoader, strTemplate, textColor, MainMenuOptions_Text_SeenSpeciesCount, TEXT_LINES(4));
|
||||
PrintRightAlignedWithMargin(window->window, msgLoader, strTemplate, textColor, MainMenuOptions_Text_SeenSpeciesCount, TEXT_LINES(4));
|
||||
}
|
||||
|
||||
Window_DrawStandardFrame(param2->window, FALSE, param2->frameBaseTile, param2->framePltt);
|
||||
Window_DrawStandardFrame(window->window, FALSE, window->frameBaseTile, window->framePltt);
|
||||
|
||||
appData->optionApps[option] = sOptions[option].appToLoad;
|
||||
|
||||
|
|
@ -770,7 +767,7 @@ static BOOL RenderContinueOption(MainMenuAppData *appData, enum MainMenuOption o
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL RenderGBAMigrationOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos)
|
||||
static BOOL RenderGBAMigrationOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *window, int yPos)
|
||||
{
|
||||
if (appData->agbGameType == 0) {
|
||||
return FALSE;
|
||||
|
|
@ -795,7 +792,7 @@ static BOOL RenderGBAMigrationOption(MainMenuAppData *appData, enum MainMenuOpti
|
|||
break;
|
||||
}
|
||||
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, param2, 3, yPos, optionTextID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, window, 3, yPos, optionTextID);
|
||||
ClearWirelessIcon(appData, OPTION_WINDOW_WIDTH, yPos);
|
||||
|
||||
appData->optionApps[option] = sOptions[option].appToLoad;
|
||||
|
|
@ -803,7 +800,7 @@ static BOOL RenderGBAMigrationOption(MainMenuAppData *appData, enum MainMenuOpti
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL RenderMysteryGiftOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos)
|
||||
static BOOL RenderMysteryGiftOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *window, int yPos)
|
||||
{
|
||||
if (appData->mysteryGiftUnlocked == FALSE) {
|
||||
if (MysteryGift_GetMysteryGiftUnlockedFlag(appData->mysteryGift) == TRUE) {
|
||||
|
|
@ -829,7 +826,7 @@ static BOOL RenderMysteryGiftOption(MainMenuAppData *appData, enum MainMenuOptio
|
|||
}
|
||||
|
||||
if (appData->mysteryGiftUnlocked == TRUE) {
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, param2, 3, yPos, sOptions[option].textEntryID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, window, 3, yPos, sOptions[option].textEntryID);
|
||||
ClearWirelessIcon(appData, OPTION_WINDOW_WIDTH, yPos);
|
||||
|
||||
appData->optionApps[option] = sOptions[option].appToLoad;
|
||||
|
|
@ -842,10 +839,10 @@ static BOOL RenderMysteryGiftOption(MainMenuAppData *appData, enum MainMenuOptio
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL RenderRangerLinkOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos)
|
||||
static BOOL RenderRangerLinkOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *window, int yPos)
|
||||
{
|
||||
if ((appData->rangerLinkAvailable == TRUE) && (appData->pokedexObtained == TRUE)) {
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, param2, 3, yPos, sOptions[option].textEntryID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, window, 3, yPos, sOptions[option].textEntryID);
|
||||
DrawWirelessIcon(appData, OPTION_WINDOW_WIDTH, yPos, WIRELESS_ICON_LOCAL);
|
||||
|
||||
appData->optionWirelessIconTypes[option] = WIRELESS_ICON_LOCAL;
|
||||
|
|
@ -858,10 +855,10 @@ static BOOL RenderRangerLinkOption(MainMenuAppData *appData, enum MainMenuOption
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL RenderWiiConnectionOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos)
|
||||
static BOOL RenderWiiConnectionOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *window, int yPos)
|
||||
{
|
||||
if (appData->wiiConnectionAvailable == TRUE) {
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, param2, 3, yPos, sOptions[option].textEntryID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, window, 3, yPos, sOptions[option].textEntryID);
|
||||
appData->optionWirelessIconTypes[option] = WIRELESS_ICON_LOCAL;
|
||||
|
||||
DrawWirelessIcon(appData, OPTION_WINDOW_WIDTH, yPos, WIRELESS_ICON_LOCAL);
|
||||
|
|
@ -872,9 +869,9 @@ static BOOL RenderWiiConnectionOption(MainMenuAppData *appData, enum MainMenuOpt
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL RenderWFCSettingsOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos)
|
||||
static BOOL RenderWFCSettingsOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *window, int yPos)
|
||||
{
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, param2, 3, yPos, sOptions[option].textEntryID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, window, 3, yPos, sOptions[option].textEntryID);
|
||||
appData->optionWirelessIconTypes[option] = WIRELESS_ICON_WIFI;
|
||||
|
||||
DrawWirelessIcon(appData, OPTION_WINDOW_WIDTH, yPos, WIRELESS_ICON_WIFI);
|
||||
|
|
@ -883,9 +880,9 @@ static BOOL RenderWFCSettingsOption(MainMenuAppData *appData, enum MainMenuOptio
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL RenderWiiMsgSettingsOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *param2, int yPos)
|
||||
static BOOL RenderWiiMsgSettingsOption(MainMenuAppData *appData, enum MainMenuOption option, MainMenuWindow *window, int yPos)
|
||||
{
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, param2, 3, yPos, sOptions[option].textEntryID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, window, 3, yPos, sOptions[option].textEntryID);
|
||||
appData->optionWirelessIconTypes[option] = WIRELESS_ICON_NONE;
|
||||
|
||||
ClearWirelessIcon(appData, OPTION_WINDOW_WIDTH, yPos);
|
||||
|
|
@ -906,15 +903,15 @@ static BOOL RenderOptions(MainMenuAppData *appData)
|
|||
for (i = 0; i < (sizeof(sOptions) / sizeof(MainMenuOptionTemplate)); i++) {
|
||||
MainMenuOptionTemplate *option = &sOptions[i];
|
||||
|
||||
MainMenuWindow v1;
|
||||
MainMenuUtil_InitWindow(&v1, &appData->optionWindows[i], PLTT_1, TEXT_BANK_MAIN_MENU_OPTIONS, 1, PLTT_2);
|
||||
MainMenuWindow_SetDimensionsAndBasetile(&v1, OPTION_WINDOW_WIDTH, option->height, appData->nextOptionBasetile);
|
||||
MainMenuWindow window;
|
||||
MainMenuUtil_InitWindow(&window, &appData->optionWindows[i], PLTT_1, TEXT_BANK_MAIN_MENU_OPTIONS, UNFOCUSED_OPTION_FRAME_BASE_TILE, PLTT_2);
|
||||
MainMenuWindow_SetDimensionsAndBasetile(&window, OPTION_WINDOW_WIDTH, option->height, appData->nextOptionBasetile);
|
||||
|
||||
if (option->renderFunc) {
|
||||
if (appData->optionApps[i]) {
|
||||
Window_SetXPos(v1.window, 3);
|
||||
Window_SetYPos(v1.window, nextOptionY);
|
||||
Window_DrawStandardFrame(v1.window, FALSE, v1.frameBaseTile, v1.framePltt);
|
||||
Window_SetXPos(window.window, 3);
|
||||
Window_SetYPos(window.window, nextOptionY);
|
||||
Window_DrawStandardFrame(window.window, FALSE, window.frameBaseTile, window.framePltt);
|
||||
|
||||
if (appData->optionWirelessIconTypes[i]) {
|
||||
DrawWirelessIcon(appData, OPTION_WINDOW_WIDTH, nextOptionY, appData->optionWirelessIconTypes[i]);
|
||||
|
|
@ -924,12 +921,12 @@ static BOOL RenderOptions(MainMenuAppData *appData)
|
|||
|
||||
nextOptionY += option->height + 2; // Add 2 to account for the window border
|
||||
renderedCustomRenderedOption = TRUE;
|
||||
} else if (option->renderFunc(appData, i, &v1, nextOptionY) == TRUE) {
|
||||
} else if (option->renderFunc(appData, i, &window, nextOptionY) == TRUE) {
|
||||
nextOptionY += option->height + 2; // Add 2 to account for the window border
|
||||
renderedCustomRenderedOption = TRUE;
|
||||
}
|
||||
} else {
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, &v1, 3, nextOptionY, option->textEntryID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, &window, 3, nextOptionY, option->textEntryID);
|
||||
appData->optionApps[i] = option->appToLoad;
|
||||
nextOptionY += option->height + 2; // Add 2 to account for the window border
|
||||
}
|
||||
|
|
@ -993,8 +990,8 @@ static void FocusNextOption(MainMenuAppData *appData, int direction)
|
|||
|
||||
static void TargetFocusedOptionForScroll(MainMenuAppData *appData)
|
||||
{
|
||||
int targetWindowY = (Window_GetYPos(&appData->optionWindows[appData->focusedOption]) - 1) * 8;
|
||||
int targetWindowHeight = (Window_GetHeight(&appData->optionWindows[appData->focusedOption]) + 2) * 8;
|
||||
int targetWindowY = (Window_GetYPos(&appData->optionWindows[appData->focusedOption]) - 1) * TILE_HEIGHT_PIXELS;
|
||||
int targetWindowHeight = (Window_GetHeight(&appData->optionWindows[appData->focusedOption]) + 2) * TILE_HEIGHT_PIXELS;
|
||||
int scrollTarget = appData->scrollTarget / FX32_ONE;
|
||||
|
||||
if (scrollTarget > targetWindowY) {
|
||||
|
|
@ -1018,9 +1015,9 @@ static void DrawScrollArrows(MainMenuAppData *appData)
|
|||
continue;
|
||||
}
|
||||
|
||||
// -1 and +2 to account for the window frame, times 8 to convert from tiles to pixels
|
||||
int windowPosition = (Window_GetYPos(&appData->optionWindows[i]) - 1) * 8;
|
||||
int windowHeight = (Window_GetHeight(&appData->optionWindows[i]) + 2) * 8;
|
||||
// -1 and +2 to account for the window frame
|
||||
int windowPosition = (Window_GetYPos(&appData->optionWindows[i]) - 1) * TILE_HEIGHT_PIXELS;
|
||||
int windowHeight = (Window_GetHeight(&appData->optionWindows[i]) + 2) * TILE_HEIGHT_PIXELS;
|
||||
|
||||
if (scrollTarget > windowPosition) {
|
||||
canScrollUp = TRUE;
|
||||
|
|
@ -1115,7 +1112,7 @@ static void MainMenuVBlankCallback(void *data)
|
|||
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
|
||||
}
|
||||
|
||||
static int MainMenu_Init(ApplicationManager *appMan, int *unused)
|
||||
static BOOL MainMenu_Init(ApplicationManager *appMan, int *unused)
|
||||
{
|
||||
Heap_Create(HEAP_ID_APPLICATION, HEAP_ID_MAIN_MENU, HEAP_SIZE_MAIN_MENU);
|
||||
|
||||
|
|
@ -1128,14 +1125,14 @@ static int MainMenu_Init(ApplicationManager *appMan, int *unused)
|
|||
|
||||
appData->saveData = ((ApplicationArgs *)ApplicationManager_Args(appMan))->saveData;
|
||||
appData->mysteryGift = SaveData_GetMysteryGift(appData->saveData);
|
||||
appData->scrollPos = FX32_ONE * 0;
|
||||
appData->scrollTarget = FX32_ONE * 0;
|
||||
appData->scrollPos = FX32_CONST(0);
|
||||
appData->scrollTarget = FX32_CONST(0);
|
||||
appData->trainerInfo = SaveData_GetTrainerInfo(appData->saveData);
|
||||
appData->pokedex = SaveData_GetPokedex(appData->saveData);
|
||||
appData->playTime = SaveData_GetPlayTime(appData->saveData);
|
||||
appData->pokedexObtained = Pokedex_IsObtained(appData->pokedex);
|
||||
appData->badgeCount = TrainerInfo_BadgeCount(appData->trainerInfo);
|
||||
appData->alertsState = MAIN_MANU_ALERTS_STATE_WAIT;
|
||||
appData->alertsState = MAIN_MENU_ALERTS_STATE_WAIT;
|
||||
|
||||
MainMenuUtil_Init(HEAP_ID_MAIN_MENU);
|
||||
|
||||
|
|
@ -1146,10 +1143,10 @@ static int MainMenu_Init(ApplicationManager *appMan, int *unused)
|
|||
Sound_ConfigureBGMChannelsAndReverb(SOUND_CHANNEL_CONFIG_DEFAULT);
|
||||
Sound_SetScene(SOUND_SCENE_NONE);
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int MainMenu_Main(ApplicationManager *appMan, int *state)
|
||||
static BOOL MainMenu_Main(ApplicationManager *appMan, int *state)
|
||||
{
|
||||
MainMenuAppData *appData = ApplicationManager_Data(appMan);
|
||||
|
||||
|
|
@ -1269,7 +1266,7 @@ static int MainMenu_Main(ApplicationManager *appMan, int *state)
|
|||
}
|
||||
break;
|
||||
case MAIN_MENU_STATE_CONFIRM_NEW_GAME:
|
||||
if (appData->alertsState == MAIN_MANU_ALERTS_STATE_WAIT) {
|
||||
if (appData->alertsState == MAIN_MENU_ALERTS_STATE_WAIT) {
|
||||
if (appData->alertDismissKeys & PAD_BUTTON_B) {
|
||||
*state = MAIN_MENU_STATE_SELECT_OPTION;
|
||||
} else {
|
||||
|
|
@ -1291,7 +1288,7 @@ static int MainMenu_Main(ApplicationManager *appMan, int *state)
|
|||
|
||||
DetectWirelessConnections(appData);
|
||||
DoScrollStep(appData);
|
||||
MainMenuUtil_UpdateSpritesSkipGift();
|
||||
MainMenuUtil_UpdateSprites();
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ void *MainMenuUtil_InitAppAndFadeToBlack(ApplicationManager *appMan, enum HeapId
|
|||
return newAppData;
|
||||
}
|
||||
|
||||
void MainMenuUtil_InitBG(BgConfig *bgConfig, enum BgLayer bgLayer, u8 screenSize, u32 screenBase, u32 charBase)
|
||||
void MainMenuUtil_InitBGLayer(BgConfig *bgConfig, enum BgLayer bgLayer, u8 screenSize, u32 screenBase, u32 charBase)
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0,
|
||||
|
|
@ -241,7 +241,7 @@ static int MainMenuWindow_PrintText(MainMenuWindow *window, int textEntryID)
|
|||
printerID = Text_AddPrinterWithParamsAndColor(window->window, window->font, strBuf, window->textXOffset, window->textYOffset, window->renderDelay, window->textColor, NULL);
|
||||
} else {
|
||||
int textWidth = Font_CalcStrbufWidth(window->font, strBuf, Font_GetAttribute(window->font, FONTATTR_LETTER_SPACING));
|
||||
int windowWidth = Window_GetWidth(window->window) * 8 - textWidth;
|
||||
int windowWidth = Window_GetWidth(window->window) * TILE_WIDTH_PIXELS - textWidth;
|
||||
printerID = Text_AddPrinterWithParamsAndColor(window->window, window->font, strBuf, windowWidth, window->textYOffset, window->renderDelay, window->textColor, NULL);
|
||||
|
||||
window->textRightAligned = FALSE;
|
||||
|
|
@ -257,7 +257,7 @@ static int MainMenuWindow_PrintText(MainMenuWindow *window, int textEntryID)
|
|||
}
|
||||
}
|
||||
|
||||
window->renderDelay = 0xff;
|
||||
window->renderDelay = TEXT_SPEED_NO_TRANSFER;
|
||||
return printerID;
|
||||
}
|
||||
|
||||
|
|
@ -300,10 +300,10 @@ void MainMenuUtil_InitCharPlttTransferBuffers(void)
|
|||
{
|
||||
MainMenuUtilManager *utilMan = &sMainMenuUtilManager;
|
||||
CharTransferTemplate charTransTemplte = {
|
||||
40,
|
||||
4096,
|
||||
4096,
|
||||
HEAP_ID_SYSTEM,
|
||||
.maxTasks = 40,
|
||||
.sizeMain = 4096,
|
||||
.sizeSub = 4096,
|
||||
.heapID = HEAP_ID_SYSTEM,
|
||||
};
|
||||
|
||||
charTransTemplte.heapID = utilMan->heapID;
|
||||
|
|
@ -332,7 +332,7 @@ void MainMenuUtil_InitSpriteLoader(void)
|
|||
utilMan->spriteManager.spriteList = SpriteList_InitRendering(128, &utilMan->spriteManager.renderer, utilMan->heapID);
|
||||
SetSubScreenViewRect(&utilMan->spriteManager.renderer, 0, 256 * FX32_ONE);
|
||||
|
||||
utilMan->bottomScreenTopY = 192 << FX32_SHIFT;
|
||||
utilMan->bottomScreenTopY = HW_LCD_HEIGHT << FX32_SHIFT;
|
||||
|
||||
for (int i = 0; i < SPRITE_RESOURCE_MAX; i++) {
|
||||
utilMan->spriteManager.resourceCollections[i] = SpriteResourceCollection_New(32, i, utilMan->heapID);
|
||||
|
|
@ -377,7 +377,7 @@ void MainMenuUtil_LoadSprite(enum NarcID narcID, int tilesID, int plttID, int ce
|
|||
|
||||
SpriteTransfer_RequestChar(utilMan->spriteManager.resources[screen][SPRITE_RESOURCE_CHAR]);
|
||||
SpriteTransfer_RequestPlttFreeSpace(utilMan->spriteManager.resources[screen][SPRITE_RESOURCE_PLTT]);
|
||||
SpriteResourcesHeader_Init(&utilMan->spriteManager.resourceHeaders[screen], screen, screen, screen, screen, 0xffffffff, 0xffffffff, FALSE, 0, utilMan->spriteManager.resourceCollections[SPRITE_RESOURCE_CHAR], utilMan->spriteManager.resourceCollections[SPRITE_RESOURCE_PLTT], utilMan->spriteManager.resourceCollections[SPRITE_RESOURCE_CELL], utilMan->spriteManager.resourceCollections[SPRITE_RESOURCE_ANIM], NULL, NULL);
|
||||
SpriteResourcesHeader_Init(&utilMan->spriteManager.resourceHeaders[screen], screen, screen, screen, screen, -1, -1, FALSE, 0, utilMan->spriteManager.resourceCollections[SPRITE_RESOURCE_CHAR], utilMan->spriteManager.resourceCollections[SPRITE_RESOURCE_PLTT], utilMan->spriteManager.resourceCollections[SPRITE_RESOURCE_CELL], utilMan->spriteManager.resourceCollections[SPRITE_RESOURCE_ANIM], NULL, NULL);
|
||||
|
||||
if (screen == DS_SCREEN_MAIN) {
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, TRUE);
|
||||
|
|
@ -396,12 +396,12 @@ void MainMenuUtil_SetSubScreenViewRect(fx32 x, fx32 y)
|
|||
utilMan->bottomScreenTopY = y;
|
||||
}
|
||||
|
||||
void MainMenuUtil_UpdateSpritesSkipGift(void)
|
||||
void MainMenuUtil_UpdateSprites(void)
|
||||
{
|
||||
MainMenuUtil_UpdateSprites(FALSE);
|
||||
MainMenuUtil_UpdateSpritesForAnimStatus(MG_ANIMATION_STATUS_DONE);
|
||||
}
|
||||
|
||||
void MainMenuUtil_UpdateSprites(BOOL skipDrawGift)
|
||||
void MainMenuUtil_UpdateSpritesForAnimStatus(enum MysteryGiftAnimationStatus animStatus)
|
||||
{
|
||||
MainMenuUtilManager *utilMan = &sMainMenuUtilManager;
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ void MainMenuUtil_UpdateSprites(BOOL skipDrawGift)
|
|||
VecFx32 *spritePos;
|
||||
|
||||
if (utilMan->giftSpriteDelay == 0) {
|
||||
if (Sprite_GetDrawFlag(utilMan->mysteryGiftSprite) == FALSE && skipDrawGift == FALSE) {
|
||||
if (Sprite_GetDrawFlag(utilMan->mysteryGiftSprite) == FALSE && animStatus == MG_ANIMATION_STATUS_DONE) {
|
||||
Sprite_SetDrawFlag(utilMan->mysteryGiftSprite, TRUE);
|
||||
}
|
||||
|
||||
|
|
@ -617,6 +617,9 @@ static void LoadSpriteForMonGift(MainMenuUtilManager *param0, enum MysteryGiftTy
|
|||
case MYST_GIFT_MANAPHY_EGG:
|
||||
LoadPokemonSprite(param0->mysteryGiftSprite, mon, SPECIES_EGG, EGG_FORM_MANAPHY, param0->monSpriteBuffer, ¶m0->monSpriteTemplate);
|
||||
break;
|
||||
default:
|
||||
// Should never be reached
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -640,6 +643,9 @@ static void LoadItemSprite(MainMenuUtilManager *utilMan, enum MysteryGiftType gi
|
|||
case MYST_GIFT_SECRET_KEY:
|
||||
item = ITEM_SECRET_KEY;
|
||||
break;
|
||||
default:
|
||||
// Should never be reached
|
||||
break;
|
||||
}
|
||||
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_ITEMTOOL__ITEMDATA__ITEM_ICON, Item_FileID(item, ITEM_FILE_TYPE_ICON), Item_FileID(item, ITEM_FILE_TYPE_PALETTE), Item_IconNCERFile(), Item_IconNANRFile(), DS_SCREEN_SUB);
|
||||
|
|
@ -660,17 +666,17 @@ void MainMenuUtil_LoadGiftSprite(BgConfig *bgConfig, WonderCard *wonderCard)
|
|||
enum MysteryGiftType giftType = wonderCard->pgt.type;
|
||||
int plttOffset = CalcPlttOffsetForGiftType(giftType);
|
||||
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_GRAPHIC__MYSTERY, 30, bgConfig, BG_LAYER_SUB_1, 0, 10 * 16 * 0x20, TRUE, utilMan->heapID);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_GRAPHIC__MYSTERY, 30, bgConfig, BG_LAYER_SUB_1, 0, 10 * 16 * TILE_SIZE_4BPP, TRUE, utilMan->heapID);
|
||||
|
||||
NNSG2dScreenData *screenData;
|
||||
void *nscr = LoadMemberFromNARC(NARC_INDEX_GRAPHIC__MYSTERY, 31, TRUE, utilMan->heapID, TRUE);
|
||||
|
||||
NNS_G2dGetUnpackedScreenData(nscr, &screenData);
|
||||
|
||||
Bg_LoadTilemapBuffer(bgConfig, BG_LAYER_SUB_1, screenData->rawData, 32 * 24 * 2);
|
||||
Bg_LoadTilemapBuffer(bgConfig, BG_LAYER_SUB_1, screenData->rawData, (HW_LCD_WIDTH / TILE_WIDTH_PIXELS) * (HW_LCD_HEIGHT / TILE_HEIGHT_PIXELS) * 2);
|
||||
Heap_Free(nscr);
|
||||
|
||||
Bg_ChangeTilemapRectPalette(bgConfig, BG_LAYER_SUB_1, 0, 0, 32, 24, PLTT_8 + plttOffset);
|
||||
Bg_ChangeTilemapRectPalette(bgConfig, BG_LAYER_SUB_1, 0, 0, HW_LCD_WIDTH / TILE_WIDTH_PIXELS, HW_LCD_HEIGHT / TILE_HEIGHT_PIXELS, PLTT_8 + plttOffset);
|
||||
Bg_ScheduleTilemapTransfer(bgConfig, BG_LAYER_SUB_1);
|
||||
|
||||
utilMan->onVBlank = LoadMysteryGiftPalettes;
|
||||
|
|
@ -697,6 +703,9 @@ void MainMenuUtil_LoadGiftSprite(BgConfig *bgConfig, WonderCard *wonderCard)
|
|||
case MYST_GIFT_SECRET_KEY:
|
||||
LoadItemSprite(utilMan, giftType, wonderCard);
|
||||
break;
|
||||
default:
|
||||
// Should never be reached
|
||||
break;
|
||||
}
|
||||
|
||||
Sprite_SetDrawFlag(utilMan->mysteryGiftSprite, FALSE);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include "savedata/save_table.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "brightness_controller.h"
|
||||
#include "communication_system.h"
|
||||
#include "font.h"
|
||||
#include "game_options.h"
|
||||
|
|
@ -77,9 +78,6 @@ FS_EXTERN_OVERLAY(overlay97);
|
|||
|
||||
#define HIDE_DOWNLOADING_ARROW -1
|
||||
|
||||
#define PARTICLES_MAN_BLEND_BRIGHTNESS_BLACK -16
|
||||
#define PARTICLES_MAN_BLEND_BRIGHTNESS_WHITE +16
|
||||
|
||||
#define FOUND_GIFT_CARTRIDGE 19
|
||||
#define FOUND_GIFT_WIFI 27
|
||||
|
||||
|
|
@ -106,6 +104,7 @@ FS_EXTERN_OVERLAY(overlay97);
|
|||
#define BASE_TILE_RECEPTION_METHODS_MENU (BASE_TILE_MAIN_APP_MENU + NUM_TILES_MAIN_MG_MENU)
|
||||
#define BASE_TILE_YES_NO_MENU (BASE_TILE_RECEPTION_METHODS_MENU + NUM_TILES_RECEPTION_METHODS_MENU)
|
||||
#define BASE_TILE_WONDERCARD_TITLE (BASE_TILE_YES_NO_MENU + NUM_TILES_YES_NO_MENU)
|
||||
#define BASE_TILE_WIFI_COMM_ERROR_WINDOW 100
|
||||
|
||||
enum MysteryGiftAnimBrightnessFadeDirection {
|
||||
FADE_TOWARDS_NORMAL,
|
||||
|
|
@ -125,6 +124,7 @@ enum MysteryGiftReceptionMethod {
|
|||
RECEIVE_FROM_GBA_CARTRIDGE,
|
||||
RECEIVE_FROM_LOCAL_WIRELESS,
|
||||
RECEIVE_FROM_WIFI,
|
||||
NUM_RECEPTION_METHODS = RECEIVE_FROM_WIFI,
|
||||
};
|
||||
|
||||
enum MysteryGiftCanReceiveStatus {
|
||||
|
|
@ -165,12 +165,6 @@ enum MysteryGiftAnimationStage {
|
|||
MG_ANIMATION_STAGE_DONE = 255,
|
||||
};
|
||||
|
||||
enum MysteryGiftAnimationStatus {
|
||||
MG_ANIMATION_STATUS_DONE = 0,
|
||||
MG_ANIMATION_STATUS_BEGIN,
|
||||
MG_ANIMATION_STATUS_PROCEED_IMPLOSION
|
||||
};
|
||||
|
||||
enum ParticleAnimationType {
|
||||
PARTICLE_ANIMATION_TYPE_ORBIT_0 = 0,
|
||||
PARTICLE_ANIMATION_TYPE_ORBIT_1,
|
||||
|
|
@ -185,10 +179,10 @@ enum ParticleAnimationType {
|
|||
|
||||
typedef enum MysteryGiftAppState (*StateTransitionFuncPtr)(ApplicationManager *);
|
||||
|
||||
typedef struct StateChangeMenuOptionTemplate {
|
||||
typedef struct StateTransitionMenuOptionTemplate {
|
||||
int textEntryId;
|
||||
StateTransitionFuncPtr stateTransitionFuncPtr;
|
||||
} StateChangeMenuOptionTemplate;
|
||||
} StateTransitionMenuOptionTemplate;
|
||||
|
||||
typedef struct MysteryGiftParticle {
|
||||
int unused_00;
|
||||
|
|
@ -214,14 +208,14 @@ typedef struct MysteryGiftAnimationManager {
|
|||
int animationStage;
|
||||
int unused_04;
|
||||
s8 blendBrightness;
|
||||
MainMenuSpriteManager *unk_0C;
|
||||
MainMenuSpriteManager *spriteMan;
|
||||
SpriteResourcesHeader spriteResourcesHeaders[DS_SCREEN_MAX];
|
||||
SpriteResource *spriteResources[DS_SCREEN_MAX][SPRITE_RESOURCE_MAX];
|
||||
MysteryGiftParticle topScreenSmallParticles[NUM_MYSTERY_GIFT_PARTICLES];
|
||||
MysteryGiftParticle bottomScreenSmallParticles[NUM_MYSTERY_GIFT_PARTICLES];
|
||||
MysteryGiftParticle topScreenLargeParticle;
|
||||
MysteryGiftParticle bottomScreenLargeParticle;
|
||||
int *animationStatusPtr;
|
||||
enum MysteryGiftAnimationStatus *animationStatusPtr;
|
||||
} MysteryGiftAnimationManager;
|
||||
|
||||
static enum MysteryGiftAppState ShowMysteryGiftReceptionMethodsMenu(ApplicationManager *appMan);
|
||||
|
|
@ -240,57 +234,58 @@ static enum MysteryGiftAppState StartSearchLocalWirelessDistribution(Application
|
|||
static enum MysteryGiftAppState CheckPlayerCanReceive_WirelessDistribution(ApplicationManager *appMan);
|
||||
static enum MysteryGiftAppState DisconnectLocalWireless(ApplicationManager *appMan);
|
||||
|
||||
static void MakeStateChangeListMenuFromEntryTemplates(ApplicationManager *appMan, StateChangeMenuOptionTemplate *entries, int numEntries, Window *window, u32 msgBoxEntryId);
|
||||
static void MakeStateChangeListMenuFromEntryTemplates(ApplicationManager *appMan, StateTransitionMenuOptionTemplate *entries, int numEntries, Window *window, u32 msgBoxEntryId);
|
||||
static void ShowMysteryGiftMenuOptions(ApplicationManager *appMan, int windowBaseTile, u32 textEntryId);
|
||||
static void ShowMessageBox(ApplicationManager *appMan, Window *window, u32 entryId);
|
||||
static void ov97_022302D4(void);
|
||||
static void ov97_02230224(MysteryGiftAppData *appData);
|
||||
static void UpdateLocalWirelessDistributionState(MysteryGiftAppData *appData);
|
||||
static int ShowMessageBoxIntoStateTransition(ApplicationManager *appMan, Window *window, int textEntryId, int nextState);
|
||||
static int ShowMessageBoxIntoStateTransition(ApplicationManager *appMan, Window *window, int textEntryId, enum MysteryGiftAppState nextState);
|
||||
static void RunParticleAnimationFrame(SysTask *sysTask, MysteryGiftParticle *particle);
|
||||
static void MysteryGiftApp_SetApplicationManager(ApplicationManager *appMan);
|
||||
|
||||
static ApplicationManager *sApplicationManager;
|
||||
|
||||
StateChangeMenuOptionTemplate sMysteryGiftMenuOptions[] = {
|
||||
static StateTransitionMenuOptionTemplate sMysteryGiftMenuOptions[] = {
|
||||
[MG_MENU_RECEIVE_GIFT] = { MysteryGiftMenu_Text_ReceiveGift, ShowMysteryGiftReceptionMethodsMenu },
|
||||
[MG_MENU_CHECK_CARD] = { MysteryGiftMenu_Text_CheckCard, ExitToWonderCardsApp },
|
||||
[MG_MENU_EXIT] = { MysteryGiftMenu_Text_Exit_MysteryGift, ExitToTitleScreen }
|
||||
};
|
||||
|
||||
StateChangeMenuOptionTemplate sMysteryGiftReceiveOptions[] = {
|
||||
static StateTransitionMenuOptionTemplate sMysteryGiftReceiveOptions[] = {
|
||||
{ MysteryGiftMenu_Text_GetFromFriend, AskConfirmWireless_FriendOrGBA },
|
||||
{ MysteryGiftMenu_Text_GetViaWireless, AskConfirmWireless_WirelessDistribution },
|
||||
{ MysteryGiftMenu_Text_GetViaWFC, AskConfirmConnectToWFC },
|
||||
{ MysteryGiftMenu_Text_Cancel_MysteryGift, ReturnToMysteryGiftMenu }
|
||||
};
|
||||
|
||||
StateChangeMenuOptionTemplate sStartWirelessCommsOptions_FriendOrGBA[] = {
|
||||
static StateTransitionMenuOptionTemplate sStartWirelessCommsOptions_FriendOrGBA[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_MysteryGift, SetupFriendOrGBADistribution },
|
||||
{ MysteryGiftMenu_Text_No_MysteryGift, ReturnToReceptionMethodChoiceAfterRefusingWireless }
|
||||
};
|
||||
|
||||
StateChangeMenuOptionTemplate sConfirmReceiveGiftOptions[] = {
|
||||
static StateTransitionMenuOptionTemplate sConfirmReceiveGiftOptions[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_MysteryGift, SendGiftRequestIfCanReceive },
|
||||
{ MysteryGiftMenu_Text_No_MysteryGift, ReturnToReceptionMethodChoiceAfterRefusingGift }
|
||||
};
|
||||
|
||||
StateChangeMenuOptionTemplate sConfirmConnectToWFCOptions[] = {
|
||||
static StateTransitionMenuOptionTemplate sConfirmConnectToWFCOptions[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_MysteryGift, InitWFCConnection },
|
||||
{ MysteryGiftMenu_Text_No_MysteryGift, ReturnToReceptionMethodChoiceAfterRefusingWireless }
|
||||
};
|
||||
|
||||
StateChangeMenuOptionTemplate sUnusedYesNoOptions[] = {
|
||||
// Gets optimized out if declared static.
|
||||
StateTransitionMenuOptionTemplate sUnusedYesNoOptions[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_MysteryGift, SendGiftRequestIfCanReceive },
|
||||
{ MysteryGiftMenu_Text_No_MysteryGift, NULL }
|
||||
};
|
||||
|
||||
StateChangeMenuOptionTemplate sStartWirelessCommsOption_WirelessDistribution[] = {
|
||||
static StateTransitionMenuOptionTemplate sStartWirelessCommsOption_WirelessDistribution[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_MysteryGift, StartSearchLocalWirelessDistribution },
|
||||
{ MysteryGiftMenu_Text_No_MysteryGift, ReturnToReceptionMethodChoiceAfterRefusingWireless }
|
||||
};
|
||||
|
||||
StateChangeMenuOptionTemplate sConfirmReceiveGiftOptions_WirelessDistribution[] = {
|
||||
static StateTransitionMenuOptionTemplate sConfirmReceiveGiftOptions_WirelessDistribution[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_MysteryGift, CheckPlayerCanReceive_WirelessDistribution },
|
||||
{ MysteryGiftMenu_Text_No_MysteryGift, DisconnectLocalWireless }
|
||||
};
|
||||
|
|
@ -380,13 +375,13 @@ static void LoadDownloadArrowSpriteResources(MysteryGiftAppData *appData)
|
|||
{
|
||||
MainMenuUtil_InitCharPlttTransferBuffers();
|
||||
MainMenuUtil_InitSpriteLoader();
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_GRAPHIC__MYSTERY, 10, 7, 9, 8, 0);
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_GRAPHIC__MYSTERY, 10, 7, 9, 8, DS_SCREEN_MAIN);
|
||||
}
|
||||
|
||||
static void SetDownloadArrowAnim(MysteryGiftAppData *appData, int animID)
|
||||
{
|
||||
if (animID != HIDE_DOWNLOADING_ARROW) {
|
||||
appData->dowloadArrowSprite = MainMenuUtil_InitSprite(0, appData->dowloadArrowSprite, HW_LCD_WIDTH / 2, 100, animID);
|
||||
appData->dowloadArrowSprite = MainMenuUtil_InitSprite(DS_SCREEN_MAIN, appData->dowloadArrowSprite, HW_LCD_WIDTH / 2, 100, animID);
|
||||
} else {
|
||||
Sprite_SetDrawFlag(appData->dowloadArrowSprite, FALSE);
|
||||
}
|
||||
|
|
@ -579,7 +574,7 @@ static void ShowConfirmReceiveGiftMenu(ApplicationManager *appMan, BOOL hideMsgB
|
|||
Window *window = &appData->menuWindows[2];
|
||||
|
||||
if (window->bgConfig == NULL) {
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, 4, PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
}
|
||||
|
||||
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
|
|
@ -618,7 +613,7 @@ static enum MysteryGiftAppState AskConfirmWireless_FriendOrGBA(ApplicationManage
|
|||
window = &appData->menuWindows[2];
|
||||
|
||||
if (window->bgConfig == NULL) {
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, 4, PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
}
|
||||
|
||||
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
|
|
@ -639,7 +634,7 @@ static enum MysteryGiftAppState AskConfirmConnectToWFC(ApplicationManager *appMa
|
|||
window = &appData->menuWindows[2];
|
||||
|
||||
if (window->bgConfig == NULL) {
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, 4, PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
}
|
||||
|
||||
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
|
|
@ -659,7 +654,7 @@ static enum MysteryGiftAppState AskConfirmWireless_WirelessDistribution(Applicat
|
|||
Window *window = &appData->menuWindows[2];
|
||||
|
||||
if (window->bgConfig == NULL) {
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, 4, PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
}
|
||||
|
||||
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
|
|
@ -675,7 +670,7 @@ static void ShowConfirmReceiveGiftMenu_LocalWireless(ApplicationManager *appMan)
|
|||
Window *window = &appData->menuWindows[2];
|
||||
|
||||
if (window->bgConfig == NULL) {
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, 4, PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 23, 10, 6, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_YES_NO_MENU);
|
||||
}
|
||||
|
||||
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
|
|
@ -780,7 +775,7 @@ static enum MysteryGiftAppState ShowMysteryGiftReceptionMethodsMenu(ApplicationM
|
|||
window = &appData->menuWindows[1];
|
||||
|
||||
if (window->bgConfig == NULL) {
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 15, 9, 16, 8, PLTT_0, BASE_TILE_RECEPTION_METHODS_MENU);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 15, 9, 16, TEXT_LINES_TILES(NUM_RECEPTION_METHODS), PLTT_0, BASE_TILE_RECEPTION_METHODS_MENU);
|
||||
}
|
||||
|
||||
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
|
|
@ -798,7 +793,7 @@ static enum MysteryGiftAppState ExitToWonderCardsApp(ApplicationManager *appMan)
|
|||
ov97_02230224(appData);
|
||||
}
|
||||
|
||||
MainMenuUtil_StartScreenFadeToState(0, MG_APP_STATE_EXIT_TO_WONDER_CARDS_APP, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
MainMenuUtil_StartScreenFadeToState(FADE_TYPE_BRIGHTNESS_OUT, MG_APP_STATE_EXIT_TO_WONDER_CARDS_APP, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
return MG_APP_KEEP_PREVIOUS_STATE;
|
||||
}
|
||||
|
||||
|
|
@ -810,8 +805,8 @@ static enum MysteryGiftAppState ExitToTitleScreen(ApplicationManager *appMan)
|
|||
appData->unk_630 = 1;
|
||||
}
|
||||
|
||||
MainMenuUtil_SetFadeToWhite(1);
|
||||
MainMenuUtil_StartScreenFadeToState(0, MG_APP_STATE_EXIT_TO_TITLE_SCREEN, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
MainMenuUtil_SetFadeToWhite(TRUE);
|
||||
MainMenuUtil_StartScreenFadeToState(FADE_TYPE_BRIGHTNESS_OUT, MG_APP_STATE_EXIT_TO_TITLE_SCREEN, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
|
||||
return MG_APP_KEEP_PREVIOUS_STATE;
|
||||
}
|
||||
|
|
@ -830,7 +825,7 @@ static void InitBgLayer(BgConfig *bgConfig, int bgLayer, u32 screenBase, u32 cha
|
|||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = 0
|
||||
.mosaic = FALSE
|
||||
};
|
||||
|
||||
bgTemplate.screenBase = screenBase / 0x800;
|
||||
|
|
@ -877,7 +872,7 @@ static void LoadBothScreensBg(BgConfig *bgConfig)
|
|||
LoadBottomScreenBg(bgConfig);
|
||||
}
|
||||
|
||||
static void MakeStateChangeListMenuFromEntryTemplates(ApplicationManager *appMan, StateChangeMenuOptionTemplate *entries, int numEntries, Window *window, u32 msgBoxEntryId)
|
||||
static void MakeStateChangeListMenuFromEntryTemplates(ApplicationManager *appMan, StateTransitionMenuOptionTemplate *entries, int numEntries, Window *window, u32 msgBoxEntryId)
|
||||
{
|
||||
MysteryGiftAppData *appData = ApplicationManager_Data(appMan);
|
||||
|
||||
|
|
@ -914,7 +909,7 @@ static void MakeStateChangeListMenuFromEntryTemplates(ApplicationManager *appMan
|
|||
static void ShowMysteryGiftMenuOptions(ApplicationManager *appMan, int windowBaseTile, u32 textEntryId)
|
||||
{
|
||||
MysteryGiftAppData *appData = ApplicationManager_Data(appMan);
|
||||
StateChangeMenuOptionTemplate entries[4];
|
||||
StateTransitionMenuOptionTemplate entries[4];
|
||||
int numEntries = 0;
|
||||
MysteryGift *mysteryGift = SaveData_GetMysteryGift(appData->saveData);
|
||||
|
||||
|
|
@ -928,7 +923,7 @@ static void ShowMysteryGiftMenuOptions(ApplicationManager *appMan, int windowBas
|
|||
entries[numEntries++] = sMysteryGiftMenuOptions[MG_MENU_EXIT];
|
||||
|
||||
if (window->bgConfig == NULL) {
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 8, 7, 16, numEntries * 2, PLTT_0, windowBaseTile);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_0, 8, 7, 16, TEXT_LINES_TILES(numEntries), PLTT_0, windowBaseTile);
|
||||
}
|
||||
|
||||
Window_DrawStandardFrame(window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
|
|
@ -1016,13 +1011,13 @@ static BOOL ShowAppMainMenu(ApplicationManager *appMan, MysteryGiftAppData *appD
|
|||
|
||||
int frameType = Options_Frame(appData->options);
|
||||
|
||||
LoadMessageBoxGraphics(appData->bgConfig, BG_LAYER_MAIN_0, 1, 2, frameType, HEAP_ID_MYSTERY_GIFT_APP);
|
||||
LoadStandardWindowGraphics(appData->bgConfig, BG_LAYER_MAIN_0, BASE_TILE_STANDARD_WINDOW_FRAME, 3, STANDARD_WINDOW_FIELD, HEAP_ID_MYSTERY_GIFT_APP);
|
||||
LoadMessageBoxGraphics(appData->bgConfig, BG_LAYER_MAIN_0, BASE_TILE_MESSAGE_BOX_FRAME, PLTT_2, frameType, HEAP_ID_MYSTERY_GIFT_APP);
|
||||
LoadStandardWindowGraphics(appData->bgConfig, BG_LAYER_MAIN_0, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3, STANDARD_WINDOW_FIELD, HEAP_ID_MYSTERY_GIFT_APP);
|
||||
|
||||
*(GXRgb *)HW_BG_PLTT = GX_RGB(12, 12, 31);
|
||||
*HW_BG_A_PLTT_COLOR(PLTT_0, 0) = GX_RGB(12, 12, 31);
|
||||
|
||||
if (!Window_IsInUse(&appData->messageBox)) {
|
||||
Window_Add(appData->bgConfig, &appData->messageBox, BG_LAYER_MAIN_0, 2, 19, 27, 4, PLTT_0, BASE_TILE_MAIN_APP_MENU_MSG_BOX);
|
||||
Window_Add(appData->bgConfig, &appData->messageBox, BG_LAYER_MAIN_0, 2, 19, 27, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_MAIN_APP_MENU_MSG_BOX);
|
||||
}
|
||||
|
||||
ShowMessageBox(appMan, &appData->messageBox, MysteryGiftMenu_Text_Welcome);
|
||||
|
|
@ -1044,12 +1039,12 @@ static void SearchForWiFiDistributionEvent(ApplicationManager *appMan, enum Myst
|
|||
ToggleWaitDial(appData, FALSE);
|
||||
appData->foundGiftType = FOUND_GIFT_WIFI;
|
||||
*state = MG_APP_STATE_FOUND_WIFI_OR_GBA_GIFT;
|
||||
appData->unk_1640 = 0;
|
||||
appData->giftSearchResultDelay = 0;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
ToggleWaitDial(appData, FALSE);
|
||||
appData->unk_1640 = 0;
|
||||
appData->giftSearchResultDelay = 0;
|
||||
*state = MG_APP_STATE_NO_GIFT_FOUND;
|
||||
break;
|
||||
case 4:
|
||||
|
|
@ -1075,14 +1070,14 @@ void MysteryGiftApp_ShowWiFiCommError(MysteryGiftAppData *appData)
|
|||
StringTemplate *strTemplate = StringTemplate_Default(HEAP_ID_MYSTERY_GIFT_APP);
|
||||
StringTemplate_SetNumber(strTemplate, 0, appData->wifiCommErrorCode, 5, PADDING_MODE_ZEROES, CHARSET_MODE_EN);
|
||||
|
||||
MainMenuWindow v1;
|
||||
MainMenuUtil_InitWindow(&v1, &appData->wifiCommErrorWindow, PLTT_1, TEXT_BANK_UNK_0695, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
MainMenuWindow_SetDimensionsAndBasetile(&v1, 24, 16, 100);
|
||||
MainMenuWindow_SetScrollableAndFont(&v1, FALSE, FONT_MESSAGE);
|
||||
MainMenuWindow window;
|
||||
MainMenuUtil_InitWindow(&window, &appData->wifiCommErrorWindow, PLTT_1, TEXT_BANK_UNK_0695, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_3);
|
||||
MainMenuWindow_SetDimensionsAndBasetile(&window, 24, TEXT_LINES_TILES(8), BASE_TILE_WIFI_COMM_ERROR_WINDOW);
|
||||
MainMenuWindow_SetScrollableAndFont(&window, FALSE, FONT_MESSAGE);
|
||||
|
||||
v1.strTemplate = strTemplate;
|
||||
window.strTemplate = strTemplate;
|
||||
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, &v1, 4, 4, textEntryID);
|
||||
MainMenuUtil_ShowWindowAtPos(appData->bgConfig, &window, 4, 4, textEntryID);
|
||||
StringTemplate_Free(strTemplate);
|
||||
}
|
||||
|
||||
|
|
@ -1112,7 +1107,7 @@ static inline int WaitUntilMsgBoxPrinterFinished(ApplicationManager *appMan, int
|
|||
return ShowMessageBoxIntoStateTransition(appMan, NULL, 0, nextState);
|
||||
}
|
||||
|
||||
static int ShowMessageBoxIntoStateTransition(ApplicationManager *appMan, Window *window, int textEntryId, int nextState)
|
||||
static int ShowMessageBoxIntoStateTransition(ApplicationManager *appMan, Window *window, int textEntryId, enum MysteryGiftAppState nextState)
|
||||
{
|
||||
StringTemplate *strTemplate;
|
||||
MessageLoader *msgLoader;
|
||||
|
|
@ -1212,18 +1207,18 @@ static void LoadParticleSpriteResources(MysteryGiftAnimationManager *animMan)
|
|||
vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
||||
resourceID = 20000 + vramType;
|
||||
|
||||
animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTiles(animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_CHAR], narcID, tilesID, compressed, resourceID, vramType, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_PLTT] = SpriteResourceCollection_AddPalette(animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_PLTT], narcID, paletteID, FALSE, resourceID, vramType, PLTT_1, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_CELL] = SpriteResourceCollection_Add(animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_CELL], narcID, cellsID, compressed, resourceID, SPRITE_RESOURCE_CELL, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_Add(animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_ANIM], narcID, animationID, compressed, resourceID, SPRITE_RESOURCE_ANIM, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTiles(animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_CHAR], narcID, tilesID, compressed, resourceID, vramType, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_PLTT] = SpriteResourceCollection_AddPalette(animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_PLTT], narcID, paletteID, FALSE, resourceID, vramType, PLTT_1, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_CELL] = SpriteResourceCollection_Add(animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_CELL], narcID, cellsID, compressed, resourceID, SPRITE_RESOURCE_CELL, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_Add(animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_ANIM], narcID, animationID, compressed, resourceID, SPRITE_RESOURCE_ANIM, heapID);
|
||||
|
||||
vramType = NNS_G2D_VRAM_TYPE_2DSUB;
|
||||
resourceID = 20000 + vramType;
|
||||
|
||||
animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTiles(animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_CHAR], narcID, tilesID, compressed, resourceID, vramType, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_PLTT] = SpriteResourceCollection_AddPalette(animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_PLTT], narcID, paletteID, FALSE, resourceID, vramType, PLTT_1, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_CELL] = SpriteResourceCollection_Add(animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_CELL], narcID, cellsID, compressed, resourceID, SPRITE_RESOURCE_CELL, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_Add(animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_ANIM], narcID, animationID, compressed, resourceID, SPRITE_RESOURCE_ANIM, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTiles(animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_CHAR], narcID, tilesID, compressed, resourceID, vramType, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_PLTT] = SpriteResourceCollection_AddPalette(animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_PLTT], narcID, paletteID, FALSE, resourceID, vramType, PLTT_1, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_CELL] = SpriteResourceCollection_Add(animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_CELL], narcID, cellsID, compressed, resourceID, SPRITE_RESOURCE_CELL, heapID);
|
||||
animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_Add(animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_ANIM], narcID, animationID, compressed, resourceID, SPRITE_RESOURCE_ANIM, heapID);
|
||||
|
||||
SpriteTransfer_RequestChar(animMan->spriteResources[DS_SCREEN_MAIN][SPRITE_RESOURCE_CHAR]);
|
||||
SpriteTransfer_RequestChar(animMan->spriteResources[DS_SCREEN_SUB][SPRITE_RESOURCE_CHAR]);
|
||||
|
|
@ -1234,13 +1229,13 @@ static void LoadParticleSpriteResources(MysteryGiftAnimationManager *animMan)
|
|||
vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
||||
resourceID = 20000 + vramType;
|
||||
|
||||
SpriteResourcesHeader_Init(&animMan->spriteResourcesHeaders[DS_SCREEN_MAIN], resourceID, resourceID, resourceID, resourceID, 0xffffffff, 0xffffffff, FALSE, 0, animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_CHAR], animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_PLTT], animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_CELL], animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_ANIM], NULL, NULL);
|
||||
SpriteResourcesHeader_Init(&animMan->spriteResourcesHeaders[DS_SCREEN_MAIN], resourceID, resourceID, resourceID, resourceID, -1, -1, FALSE, 0, animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_CHAR], animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_PLTT], animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_CELL], animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_ANIM], NULL, NULL);
|
||||
|
||||
vramType = NNS_G2D_VRAM_TYPE_2DSUB;
|
||||
resourceID = 20000 + vramType;
|
||||
|
||||
// Despite baseIndex always being 0, replacing `baseIndex + DS_SCREEN_SUB` with `DS_SCREEN_SUB` doesn't match here.
|
||||
SpriteResourcesHeader_Init(&animMan->spriteResourcesHeaders[baseIndex + DS_SCREEN_SUB], resourceID, resourceID, resourceID, resourceID, 0xffffffff, 0xffffffff, FALSE, 0, animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_CHAR], animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_PLTT], animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_CELL], animMan->unk_0C->resourceCollections[SPRITE_RESOURCE_ANIM], NULL, NULL);
|
||||
SpriteResourcesHeader_Init(&animMan->spriteResourcesHeaders[baseIndex + DS_SCREEN_SUB], resourceID, resourceID, resourceID, resourceID, -1, -1, FALSE, 0, animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_CHAR], animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_PLTT], animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_CELL], animMan->spriteMan->resourceCollections[SPRITE_RESOURCE_ANIM], NULL, NULL);
|
||||
}
|
||||
|
||||
static Sprite *InitParticleSprite(MysteryGiftAnimationManager *animMan, int vramType)
|
||||
|
|
@ -1253,7 +1248,7 @@ static Sprite *InitParticleSprite(MysteryGiftAnimationManager *animMan, int vram
|
|||
// 0 is the top screen, 1 is the bottom screen. Using enum variants doesn't match.
|
||||
enum DSScreen screen = (vramType == NNS_G2D_VRAM_TYPE_2DMAIN) ? 0 : 1;
|
||||
|
||||
template.list = animMan->unk_0C->spriteList;
|
||||
template.list = animMan->spriteMan->spriteList;
|
||||
template.resourceData = &animMan->spriteResourcesHeaders[screen];
|
||||
template.position.z = 0;
|
||||
template.affineScale.x = FX32_ONE;
|
||||
|
|
@ -1403,7 +1398,7 @@ static void DeleteBottomScreenSmallParticles(MysteryGiftAnimationManager *animMa
|
|||
|
||||
static void SetupTopScreenParticlesForGather(MysteryGiftAnimationManager *animMan)
|
||||
{
|
||||
for (int i = 0; i < 80; i++) {
|
||||
for (int i = 0; i < NUM_MYSTERY_GIFT_PARTICLES; i++) {
|
||||
animMan->topScreenSmallParticles[i].animationCenter.x = FX32_CONST(HW_LCD_WIDTH / 2);
|
||||
animMan->topScreenSmallParticles[i].animationCenter.y = FX32_CONST(HW_LCD_HEIGHT / 2);
|
||||
animMan->topScreenSmallParticles[i].speedToCenter = FX32_CONST(4);
|
||||
|
|
@ -1413,7 +1408,7 @@ static void SetupTopScreenParticlesForGather(MysteryGiftAnimationManager *animMa
|
|||
animMan->topScreenSmallParticles[i].timeSinceCenterReached = 0;
|
||||
|
||||
{
|
||||
animMan->topScreenSmallParticles[i].speedToCenter = FX32_CONST((i / 10) + 4);
|
||||
animMan->topScreenSmallParticles[i].speedToCenter = FX_F32_TO_FX32((i / 10) + 4);
|
||||
}
|
||||
{
|
||||
if (i > 50) {
|
||||
|
|
@ -1436,7 +1431,7 @@ static void SetupTopScreenParticlesForGather(MysteryGiftAnimationManager *animMa
|
|||
animMan->topScreenSmallParticles[i].apparitionDelay += 1;
|
||||
}
|
||||
|
||||
animMan->topScreenSmallParticles[i].speed = 5 * 3;
|
||||
animMan->topScreenSmallParticles[i].speed = 15;
|
||||
animMan->topScreenSmallParticles[i].horizontalSpeed = animMan->topScreenSmallParticles[i].speed;
|
||||
animMan->topScreenSmallParticles[i].verticalSpeed = animMan->topScreenSmallParticles[i].speed;
|
||||
|
||||
|
|
@ -1514,7 +1509,7 @@ static void SetupBottomScreenSmallParticlesForSpiralOut(MysteryGiftAnimationMana
|
|||
animMan->bottomScreenSmallParticles[i].movementAngle = 0;
|
||||
animMan->bottomScreenSmallParticles[i].timeSinceCenterReached = 0;
|
||||
animMan->bottomScreenSmallParticles[i].spiralOutAcceleration = 2 + (LCRNG_Next() % 4);
|
||||
animMan->bottomScreenSmallParticles[i].speedToCenter = FX32_CONST((i / 30) + 4);
|
||||
animMan->bottomScreenSmallParticles[i].speedToCenter = FX_F32_TO_FX32((i / 30) + 4);
|
||||
|
||||
if (i > 60) {
|
||||
animMan->bottomScreenSmallParticles[i].speed = 5;
|
||||
|
|
@ -1648,7 +1643,7 @@ static void RunParticleAnimationFrame(SysTask *sysTask, MysteryGiftParticle *par
|
|||
spritePos.x = particle->animationCenter.x + (CalcSineDegrees_Wraparound(particle->angleAroundCenter) * particle->horizontalSpeed * -1);
|
||||
spritePos.y = particle->animationCenter.y + (CalcCosineDegrees_Wraparound(particle->angleAroundCenter) * particle->verticalSpeed * -1);
|
||||
} else if (particle->animationType == PARTICLE_ANIMATION_TYPE_SPIRAL_OUT_0) {
|
||||
if (particle->speed < (64 + 32)) {
|
||||
if (particle->speed < 96) {
|
||||
particle->speed += particle->spiralOutAcceleration;
|
||||
}
|
||||
|
||||
|
|
@ -1658,7 +1653,7 @@ static void RunParticleAnimationFrame(SysTask *sysTask, MysteryGiftParticle *par
|
|||
spritePos.x = particle->animationCenter.x + (CalcSineDegrees_Wraparound(particle->angleAroundCenter) * particle->horizontalSpeed * +1);
|
||||
spritePos.y = particle->animationCenter.y + (CalcCosineDegrees_Wraparound(particle->angleAroundCenter) * particle->verticalSpeed * +1);
|
||||
} else if (particle->animationType == PARTICLE_ANIMATION_TYPE_SPIRAL_OUT_1) {
|
||||
if (particle->speed < (64 + 32)) {
|
||||
if (particle->speed < 96) {
|
||||
particle->speed += particle->spiralOutAcceleration;
|
||||
}
|
||||
|
||||
|
|
@ -1708,8 +1703,8 @@ static void SetBothScreensBlendBrightness(MysteryGiftAnimationManager *animMan)
|
|||
|
||||
static void MakeBlackTransparent(void)
|
||||
{
|
||||
Bg_MaskPalette(BG_LAYER_MAIN_1, GX_RGB(0, 0, 0));
|
||||
Bg_MaskPalette(BG_LAYER_SUB_1, GX_RGB(0, 0, 0));
|
||||
Bg_MaskPalette(BG_LAYER_MAIN_1, COLOR_BLACK);
|
||||
Bg_MaskPalette(BG_LAYER_SUB_1, COLOR_BLACK);
|
||||
}
|
||||
|
||||
static BOOL FadeBothScreensBlendBrightness(MysteryGiftAnimationManager *animMan, enum MysteryGiftAnimBrightnessFadeDirection direction, s8 speed)
|
||||
|
|
@ -1735,19 +1730,19 @@ static BOOL FadeBothScreensBlendBrightness(MysteryGiftAnimationManager *animMan,
|
|||
}
|
||||
break;
|
||||
case FADE_TOWARDS_BLACK:
|
||||
if (animMan->blendBrightness - speed > PARTICLES_MAN_BLEND_BRIGHTNESS_BLACK) {
|
||||
if (animMan->blendBrightness - speed > BRIGHTNESS_BLACK) {
|
||||
animMan->blendBrightness -= speed;
|
||||
reachedLimit = FALSE;
|
||||
} else {
|
||||
animMan->blendBrightness = PARTICLES_MAN_BLEND_BRIGHTNESS_BLACK;
|
||||
animMan->blendBrightness = BRIGHTNESS_BLACK;
|
||||
}
|
||||
break;
|
||||
case FADE_TOWARDS_WHITE:
|
||||
if (animMan->blendBrightness + speed < PARTICLES_MAN_BLEND_BRIGHTNESS_WHITE) {
|
||||
if (animMan->blendBrightness + speed < BRIGHTNESS_WHITE) {
|
||||
animMan->blendBrightness += speed;
|
||||
reachedLimit = FALSE;
|
||||
} else {
|
||||
animMan->blendBrightness = PARTICLES_MAN_BLEND_BRIGHTNESS_WHITE;
|
||||
animMan->blendBrightness = BRIGHTNESS_WHITE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -1779,19 +1774,19 @@ static BOOL FadeTopScreenBlendBrightness(MysteryGiftAnimationManager *animMan, e
|
|||
}
|
||||
break;
|
||||
case FADE_TOWARDS_BLACK:
|
||||
if (animMan->blendBrightness - speed > PARTICLES_MAN_BLEND_BRIGHTNESS_BLACK) {
|
||||
if (animMan->blendBrightness - speed > BRIGHTNESS_BLACK) {
|
||||
animMan->blendBrightness -= speed;
|
||||
reachedLimit = FALSE;
|
||||
} else {
|
||||
animMan->blendBrightness = PARTICLES_MAN_BLEND_BRIGHTNESS_BLACK;
|
||||
animMan->blendBrightness = BRIGHTNESS_BLACK;
|
||||
}
|
||||
break;
|
||||
case FADE_TOWARDS_WHITE:
|
||||
if (animMan->blendBrightness + speed < PARTICLES_MAN_BLEND_BRIGHTNESS_WHITE) {
|
||||
if (animMan->blendBrightness + speed < BRIGHTNESS_WHITE) {
|
||||
animMan->blendBrightness += speed;
|
||||
reachedLimit = FALSE;
|
||||
} else {
|
||||
animMan->blendBrightness = PARTICLES_MAN_BLEND_BRIGHTNESS_WHITE;
|
||||
animMan->blendBrightness = BRIGHTNESS_WHITE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -2009,7 +2004,7 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
case MG_APP_STATE_INIT_GRAPHICS:
|
||||
ShowAppMainMenu(appMan, appData);
|
||||
LoadDownloadArrowSpriteResources(appData);
|
||||
MainMenuUtil_StartScreenFadeToState(1, MG_APP_STATE_WAIT_MAIN_MENU_INPUT, (int *)state, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
MainMenuUtil_StartScreenFadeToState(FADE_TYPE_BRIGHTNESS_IN, MG_APP_STATE_WAIT_MAIN_MENU_INPUT, (int *)state, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
break;
|
||||
case MG_APP_STATE_WAIT_SCREEN_TRANSITION:
|
||||
MainMenuUtil_CheckScreenFadeDone((int *)state);
|
||||
|
|
@ -2040,7 +2035,7 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
*state = MG_APP_STATE_FROM_FRIEND_OR_CANT_RECEIVE;
|
||||
} else {
|
||||
if (!Window_IsInUse(&appData->wonderCardTitleWindow)) {
|
||||
Window_Add(appData->bgConfig, &appData->wonderCardTitleWindow, BG_LAYER_MAIN_0, 3, 2, 26, 4, PLTT_0, BASE_TILE_WONDERCARD_TITLE);
|
||||
Window_Add(appData->bgConfig, &appData->wonderCardTitleWindow, BG_LAYER_MAIN_0, 3, 2, 26, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_WONDERCARD_TITLE);
|
||||
}
|
||||
|
||||
ShowWonderCardTitle(appMan, &appData->wonderCardTitleWindow, ov97_02238D54());
|
||||
|
|
@ -2080,7 +2075,7 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
memset(animMan, 0, sizeof(MysteryGiftAnimationManager));
|
||||
|
||||
animMan->animationStatusPtr = &appData->animationStatus;
|
||||
animMan->unk_0C = MainMenuUtil_GetSpriteManager();
|
||||
animMan->spriteMan = MainMenuUtil_GetSpriteManager();
|
||||
|
||||
SysTask_Start((SysTaskFunc)RunMysteryGiftAnimationFrame, animMan, 5);
|
||||
}
|
||||
|
|
@ -2150,7 +2145,7 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
appData->canReceiveGiftStatus = ov97_02232148(appData->saveData, &appData->eventData);
|
||||
|
||||
if (!Window_IsInUse(&appData->wonderCardTitleWindow)) {
|
||||
Window_Add(appData->bgConfig, &appData->wonderCardTitleWindow, BG_LAYER_MAIN_0, 3, 2, 26, 4, PLTT_0, BASE_TILE_WONDERCARD_TITLE);
|
||||
Window_Add(appData->bgConfig, &appData->wonderCardTitleWindow, BG_LAYER_MAIN_0, 3, 2, 26, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_WONDERCARD_TITLE);
|
||||
}
|
||||
|
||||
ShowWonderCardTitle(appMan, &appData->wonderCardTitleWindow, appData->eventData.header.title);
|
||||
|
|
@ -2179,7 +2174,7 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
ShowMessageBox(appMan, &appData->messageBox, MysteryGiftMenu_Text_ReceivingGiftDontTurnOff);
|
||||
SetDownloadArrowAnim(appData, 1);
|
||||
ToggleWaitDial(appData, TRUE);
|
||||
appData->wirelessCommsTimeout = 60 * 10;
|
||||
appData->wirelessCommsTimeout = 600;
|
||||
*state = MG_APP_STATE_RECEIVING_FROM_FRIEND;
|
||||
}
|
||||
} else if (netID != 0 && CommSys_IsPlayerConnected(netID) == FALSE) {
|
||||
|
|
@ -2235,11 +2230,11 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
break;
|
||||
}
|
||||
|
||||
if (MainMenuUtil_GetSavingStatus() == 4) {
|
||||
if (MainMenuUtil_GetSavingStatus() == MAIN_MENU_UTIL_SAVING_IDLE) {
|
||||
CommTiming_StartSync(0x93);
|
||||
*state = MG_APP_STATE_WAIT_FRIEND_READY_TO_DISCONNECT;
|
||||
appData->delay = 120;
|
||||
} else if (MainMenuUtil_GetSavingStatus() == SAVE_RESULT_CORRUPT) {
|
||||
} else if (MainMenuUtil_GetSavingStatus() == MAIN_MENU_UTIL_SAVE_FAILURE) {
|
||||
MainMenuUtil_CancelSave();
|
||||
appData->eventData.header.hasWonderCard = FALSE;
|
||||
ToggleWaitDial(appData, FALSE);
|
||||
|
|
@ -2280,8 +2275,8 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
*state = MG_APP_STATE_RETURN_TO_MENU;
|
||||
break;
|
||||
case MG_APP_STATE_NO_GIFT_FOUND:
|
||||
if (appData->unk_1640) {
|
||||
appData->unk_1640--;
|
||||
if (appData->giftSearchResultDelay) {
|
||||
appData->giftSearchResultDelay--;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -2299,8 +2294,8 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
}
|
||||
break;
|
||||
case MG_APP_STATE_FOUND_WIFI_OR_GBA_GIFT:
|
||||
if (appData->unk_1640) {
|
||||
appData->unk_1640--;
|
||||
if (appData->giftSearchResultDelay) {
|
||||
appData->giftSearchResultDelay--;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -2315,7 +2310,7 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
*state = MG_APP_STATE_FROM_FRIEND_OR_CANT_RECEIVE;
|
||||
} else {
|
||||
if (!Window_IsInUse(&appData->wonderCardTitleWindow)) {
|
||||
Window_Add(appData->bgConfig, &appData->wonderCardTitleWindow, BG_LAYER_MAIN_0, 3, 2, 26, 4, PLTT_0, BASE_TILE_WONDERCARD_TITLE);
|
||||
Window_Add(appData->bgConfig, &appData->wonderCardTitleWindow, BG_LAYER_MAIN_0, 3, 2, 26, TEXT_LINES_TILES(2), PLTT_0, BASE_TILE_WONDERCARD_TITLE);
|
||||
}
|
||||
|
||||
ShowWonderCardTitle(appMan, &appData->wonderCardTitleWindow, appData->eventData.header.title);
|
||||
|
|
@ -2347,17 +2342,17 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
}
|
||||
break;
|
||||
case MG_APP_STATE_WAIT_MYSTERY_GIFT_SAVED:
|
||||
if (MainMenuUtil_GetSavingStatus() == 4) {
|
||||
if (MainMenuUtil_GetSavingStatus() == MAIN_MENU_UTIL_SAVING_IDLE) {
|
||||
MainMenuUtil_ContinueSaving();
|
||||
}
|
||||
|
||||
if (MainMenuUtil_GetSavingStatus() == SAVE_RESULT_OK) {
|
||||
if (MainMenuUtil_GetSavingStatus() == MAIN_MENU_UTIL_SAVE_SUCCESS) {
|
||||
appData->delay = 1;
|
||||
ToggleWaitDial(appData, FALSE);
|
||||
SetDownloadArrowAnim(appData, HIDE_DOWNLOADING_ARROW);
|
||||
Sound_PlayEffect(SEQ_SE_DP_UG_020);
|
||||
*state = ShowMessageBoxIntoStateTransition(appMan, &appData->messageBox, MysteryGiftMenu_Text_GiftReceivedPickUpInPokeMart, MG_APP_STATE_WAIT_BEFORE_EXIT_AFTER_RECEIVING_GIFT);
|
||||
} else if (MainMenuUtil_GetSavingStatus() == SAVE_RESULT_CORRUPT) {
|
||||
} else if (MainMenuUtil_GetSavingStatus() == MAIN_MENU_UTIL_SAVE_FAILURE) {
|
||||
SetDownloadArrowAnim(appData, HIDE_DOWNLOADING_ARROW);
|
||||
appData->eventData.header.hasWonderCard = FALSE;
|
||||
*state = ShowMessageBoxIntoStateTransition(appMan, &appData->messageBox, MysteryGiftMenu_Text_ProblemWithReceivingTheGift, MG_APP_STATE_EXIT_AFTER_RECEIVING_GIFT);
|
||||
|
|
@ -2365,7 +2360,7 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
break;
|
||||
case MG_APP_STATE_WAIT_BEFORE_EXIT_AFTER_RECEIVING_GIFT:
|
||||
if (--appData->delay == 0) {
|
||||
appData->delay = 256 * 256;
|
||||
appData->delay = 65536;
|
||||
*state = MG_APP_STATE_EXIT_AFTER_RECEIVING_GIFT;
|
||||
}
|
||||
break;
|
||||
|
|
@ -2406,10 +2401,10 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
|
||||
if (appData->eventData.header.hasWonderCard == TRUE) {
|
||||
MainMenuUtil_StartScreenFadeToState(0, MG_APP_STATE_SHOW_RECEIVED_WONDERCARD, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
MainMenuUtil_StartScreenFadeToState(FADE_TYPE_BRIGHTNESS_OUT, MG_APP_STATE_SHOW_RECEIVED_WONDERCARD, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
} else {
|
||||
MainMenuUtil_SetFadeToWhite(1);
|
||||
MainMenuUtil_StartScreenFadeToState(0, MG_APP_STATE_RESET_SYSTEM, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
MainMenuUtil_SetFadeToWhite(TRUE);
|
||||
MainMenuUtil_StartScreenFadeToState(FADE_TYPE_BRIGHTNESS_OUT, MG_APP_STATE_RESET_SYSTEM, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -2418,19 +2413,22 @@ static BOOL MysteryGiftApp_Main(ApplicationManager *appMan, enum MysteryGiftAppS
|
|||
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG0, FALSE);
|
||||
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG1, TRUE);
|
||||
WonderCardsApp_ShowWondercard(appData->bgConfig, &appData->eventData.wonderCard, HEAP_ID_MYSTERY_GIFT_APP);
|
||||
MainMenuUtil_StartScreenFadeToState(1, MG_APP_STATE_EXIT_AFTER_RECEIVING_GIFT, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
MainMenuUtil_StartScreenFadeToState(FADE_TYPE_BRIGHTNESS_IN, MG_APP_STATE_EXIT_AFTER_RECEIVING_GIFT, (int *)appData->statePtr, MG_APP_STATE_WAIT_SCREEN_TRANSITION);
|
||||
appData->eventData.header.hasWonderCard = FALSE; // Makes the game exit the application
|
||||
break;
|
||||
case MG_APP_STATE_RESET_SYSTEM:
|
||||
OS_ResetSystem(0);
|
||||
break;
|
||||
default:
|
||||
// Should never be reached
|
||||
break;
|
||||
}
|
||||
|
||||
if (appData->mainCallback) {
|
||||
appData->mainCallback(appData);
|
||||
}
|
||||
|
||||
MainMenuUtil_UpdateSprites(appData->animationStatus);
|
||||
MainMenuUtil_UpdateSpritesForAnimStatus(appData->animationStatus);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -2481,7 +2479,7 @@ static void ov97_02230224(MysteryGiftAppData *param0)
|
|||
break;
|
||||
case 28:
|
||||
sub_02037D48(param0->saveData);
|
||||
param0->unk_630 = (2 * 60);
|
||||
param0->unk_630 = 120;
|
||||
param0->unk_62C = 30;
|
||||
break;
|
||||
case 30:
|
||||
|
|
|
|||
|
|
@ -528,10 +528,10 @@ static void ov97_0222C254(UnkStruct_ov97_0222C388 *param0)
|
|||
GXLayers_SetBanks(&v1);
|
||||
|
||||
SetAllGraphicsModes(&v2);
|
||||
MainMenuUtil_InitBG(param0->unk_04, 0, 1, 0xF000, 0x0);
|
||||
MainMenuUtil_InitBG(param0->unk_04, 1, 1, 0xF800, 0x4000);
|
||||
MainMenuUtil_InitBG(param0->unk_04, 4, 1, 0x7800, 0x0);
|
||||
MainMenuUtil_InitBG(param0->unk_04, 5, 1, 0x7000, 0x4000);
|
||||
MainMenuUtil_InitBGLayer(param0->unk_04, 0, 1, 0xF000, 0x0);
|
||||
MainMenuUtil_InitBGLayer(param0->unk_04, 1, 1, 0xF800, 0x4000);
|
||||
MainMenuUtil_InitBGLayer(param0->unk_04, 4, 1, 0x7800, 0x0);
|
||||
MainMenuUtil_InitBGLayer(param0->unk_04, 5, 1, 0x7000, 0x4000);
|
||||
|
||||
Text_ResetAllPrinters();
|
||||
Font_LoadTextPalette(0, 0 * 32, param0->heapID);
|
||||
|
|
@ -765,7 +765,7 @@ static int ov97_0222C78C(ApplicationManager *appMan, int *param1)
|
|||
break;
|
||||
}
|
||||
|
||||
MainMenuUtil_UpdateSpritesSkipGift();
|
||||
MainMenuUtil_UpdateSprites();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ enum WonderCardAction {
|
|||
WC_ACTION_SHARE,
|
||||
WC_ACTION_TRASH,
|
||||
WC_ACTION_EXIT,
|
||||
NUM_WC_ACTIONS,
|
||||
};
|
||||
|
||||
enum WonderCardShareBtn {
|
||||
|
|
@ -210,14 +211,14 @@ typedef struct WonderCardsAppWindowTemplate {
|
|||
int topMarginSize;
|
||||
} WonderCardsAppWindowTemplate;
|
||||
|
||||
typedef struct {
|
||||
typedef struct StateTransitionMenuOptionTemplate {
|
||||
int textEntryID;
|
||||
union {
|
||||
enum WonderCardsAppState targetState; //!< Used when the state transition is handled by the main function
|
||||
StateTransitionFuncPtr transitionFunc; //!< Used when some action needs to be performed outside of the main function before changing the state, typically showing a message box and/or menu
|
||||
u32 asU32;
|
||||
} stateChange;
|
||||
} StateTransitionListMenuEntryTemplate;
|
||||
} StateTransitionMenuOptionTemplate;
|
||||
|
||||
struct WonderCardsAppData {
|
||||
int heapID;
|
||||
|
|
@ -262,8 +263,8 @@ struct WonderCardsAppData {
|
|||
int queuedState;
|
||||
SpriteList *spriteList;
|
||||
G2dRenderer g2dRenderer;
|
||||
SpriteResourceCollection *spriteResourceCollections[6];
|
||||
SpriteResource *spriteResources[6];
|
||||
SpriteResourceCollection *spriteResourceCollections[SPRITE_RESOURCE_MAX];
|
||||
SpriteResource *spriteResources[SPRITE_RESOURCE_MAX];
|
||||
SpriteResourcesHeader spriteResourceHeader;
|
||||
Sprite *shareScreenBtnSprites[2];
|
||||
Sprite *selectedWcSprites[NUM_WONDERCARD_SPRITES];
|
||||
|
|
@ -276,9 +277,9 @@ struct WonderCardsAppData {
|
|||
|
||||
static enum WonderCardsAppState AskConfirmDeleteWc(ApplicationManager *appMan);
|
||||
static enum WonderCardsAppState AskConfirmShareWc(ApplicationManager *appMan);
|
||||
static enum WonderCardsAppState GoBackToWcActionsMenu(ApplicationManager *appMan);
|
||||
static enum WonderCardsAppState ReturnToWcActionsMenu(ApplicationManager *appMan);
|
||||
static enum WonderCardsAppState DeleteWcAndOpenNextWcActionsMenu(ApplicationManager *appMan);
|
||||
static void WonderCardsApp_CloseListMenu(WonderCardsAppData *appData);
|
||||
|
||||
static BOOL DoNothing(WonderCardsAppData *appData, Window *window, TextColor color);
|
||||
static BOOL PrintWondercardTitle(WonderCardsAppData *appData, Window *window, TextColor color);
|
||||
static BOOL DetermineGiftStatus(WonderCardsAppData *appData, Window *window, TextColor color);
|
||||
|
|
@ -289,6 +290,8 @@ static BOOL InitWondercardActionsMenu(WonderCardsAppData *appData, Window *windo
|
|||
static BOOL InitConfirmWondercardDeleteMenu(WonderCardsAppData *appData, Window *window, TextColor color);
|
||||
static BOOL InitConfirmWondercardShareMenu(WonderCardsAppData *appData, Window *window, TextColor color);
|
||||
static BOOL SetupEntriesCount(WonderCardsAppData *appData, Window *window, TextColor color);
|
||||
|
||||
static void WonderCardsApp_CloseListMenu(WonderCardsAppData *appData);
|
||||
static int UpdateConnectedPlayers(WonderCardsAppData *appData, Window *window);
|
||||
static void UpdateConnectedPlayersCount(WonderCardsAppData *appData, Window *window, int count);
|
||||
static void StopWirelessCommunication(WonderCardsAppData *appData, enum WonderCardsAppState *state, enum WonderCardsAppState nextState);
|
||||
|
|
@ -301,7 +304,7 @@ static void LoadPokemonSpritesForSelectedWc(WonderCardsAppData *appData);
|
|||
static void ResetAllSprites(WonderCardsAppData *appData);
|
||||
static int CountConnectedPlayers(WonderCardsAppData *appData);
|
||||
|
||||
WonderCardsAppWindowTemplate sWonderCardsAppWindows[NUM_WC_APP_WINDOWS] = {
|
||||
static WonderCardsAppWindowTemplate sWonderCardsAppWindows[NUM_WC_APP_WINDOWS] = {
|
||||
[WC_FRONT_TEXT_WONDER_CARD] = {
|
||||
.screen = WC_SCREEN_WONDERCARD_FRONT,
|
||||
.tilemapLeft = 2,
|
||||
|
|
@ -572,26 +575,26 @@ WonderCardsAppWindowTemplate sWonderCardsAppWindows[NUM_WC_APP_WINDOWS] = {
|
|||
},
|
||||
};
|
||||
|
||||
static StateTransitionListMenuEntryTemplate sWonderCardActions[] = {
|
||||
static StateTransitionMenuOptionTemplate sWonderCardActions[] = {
|
||||
[WC_ACTION_INFO] = { MysteryGiftMenu_Text_Info, { .targetState = WC_APP_STATE_START_FLIP_WC_TO_BACK } },
|
||||
[WC_ACTION_SHARE] = { MysteryGiftMenu_Text_Share, { .transitionFunc = AskConfirmShareWc } },
|
||||
[WC_ACTION_TRASH] = { MysteryGiftMenu_Text_Trash, { .transitionFunc = AskConfirmDeleteWc } },
|
||||
[WC_ACTION_EXIT] = { MysteryGiftMenu_Text_Exit_WonderCards, { .targetState = WC_APP_STATE_CLOSE_WINDOWS } }
|
||||
};
|
||||
|
||||
static StateTransitionListMenuEntryTemplate sConfirmWondercardDeleteOptions[] = {
|
||||
static StateTransitionMenuOptionTemplate sConfirmWondercardDeleteOptions[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_WonderCards, { .transitionFunc = DeleteWcAndOpenNextWcActionsMenu } },
|
||||
{ MysteryGiftMenu_Text_No_WonderCards, { .transitionFunc = GoBackToWcActionsMenu } }
|
||||
{ MysteryGiftMenu_Text_No_WonderCards, { .transitionFunc = ReturnToWcActionsMenu } }
|
||||
};
|
||||
|
||||
static StateTransitionListMenuEntryTemplate sConfirmWondercardShareOptions[] = {
|
||||
static StateTransitionMenuOptionTemplate sConfirmWondercardShareOptions[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_WonderCards, { .targetState = WC_APP_STATE_ASK_START_WIRELESS_TO_SHARE_WC } },
|
||||
{ MysteryGiftMenu_Text_No_WonderCards, { .transitionFunc = GoBackToWcActionsMenu } }
|
||||
{ MysteryGiftMenu_Text_No_WonderCards, { .transitionFunc = ReturnToWcActionsMenu } }
|
||||
};
|
||||
|
||||
static StateTransitionListMenuEntryTemplate sConfirmStartWirelessOptions[] = {
|
||||
static StateTransitionMenuOptionTemplate sConfirmStartWirelessOptions[] = {
|
||||
{ MysteryGiftMenu_Text_Yes_WonderCards, { .targetState = WC_APP_STATE_START_TRANSITION_TO_WC_SHARE_SCREEN } },
|
||||
{ MysteryGiftMenu_Text_No_WonderCards, { .transitionFunc = GoBackToWcActionsMenu } }
|
||||
{ MysteryGiftMenu_Text_No_WonderCards, { .transitionFunc = ReturnToWcActionsMenu } }
|
||||
};
|
||||
|
||||
static ListMenuTemplate sWonderCardsAppListMenuTemplate = {
|
||||
|
|
@ -620,7 +623,7 @@ static void LoadWcShareScreenButtonsGraphics(WonderCardsAppData *appData)
|
|||
ResetAllSprites(appData);
|
||||
MainMenuUtil_InitCharPlttTransferBuffers();
|
||||
MainMenuUtil_InitSpriteLoader();
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_GRAPHIC__MYSTERY, 15, 12, 14, 13, 0);
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_GRAPHIC__MYSTERY, 15, 12, 14, 13, DS_SCREEN_MAIN);
|
||||
}
|
||||
|
||||
static void ResetAllSprites(WonderCardsAppData *appData)
|
||||
|
|
@ -653,11 +656,11 @@ static void ResetAllSprites(WonderCardsAppData *appData)
|
|||
|
||||
static void ShowWcShareButtons(WonderCardsAppData *appData)
|
||||
{
|
||||
appData->shareScreenSelectedBtn = 0;
|
||||
appData->shareScreenBtnSprites[WC_SHARE_BTN_SEND] = MainMenuUtil_InitSprite(0, appData->shareScreenBtnSprites[WC_SHARE_BTN_SEND], 72, WONDERCARD_HEIGHT, 1);
|
||||
appData->shareScreenSelectedBtn = WC_SHARE_BTN_SEND;
|
||||
appData->shareScreenBtnSprites[WC_SHARE_BTN_SEND] = MainMenuUtil_InitSprite(DS_SCREEN_MAIN, appData->shareScreenBtnSprites[WC_SHARE_BTN_SEND], 72, WONDERCARD_HEIGHT, 1);
|
||||
Sprite_SetExplicitPriority(appData->shareScreenBtnSprites[WC_SHARE_BTN_SEND], 2);
|
||||
|
||||
appData->shareScreenBtnSprites[WC_SHARE_BTN_CANCEL] = MainMenuUtil_InitSprite(0, appData->shareScreenBtnSprites[WC_SHARE_BTN_CANCEL], 184, WONDERCARD_HEIGHT, 0);
|
||||
appData->shareScreenBtnSprites[WC_SHARE_BTN_CANCEL] = MainMenuUtil_InitSprite(DS_SCREEN_MAIN, appData->shareScreenBtnSprites[WC_SHARE_BTN_CANCEL], 184, WONDERCARD_HEIGHT, 0);
|
||||
Sprite_SetExplicitPriority(appData->shareScreenBtnSprites[WC_SHARE_BTN_CANCEL], 2);
|
||||
}
|
||||
|
||||
|
|
@ -675,7 +678,7 @@ static void EraseMessageBoxIfInUse(Window *window, u8 skipTransfer)
|
|||
}
|
||||
}
|
||||
|
||||
static void MakeStateChangeListMenuFromEntryTemplates(WonderCardsAppData *appData, StateTransitionListMenuEntryTemplate *entries, int numEntries, Window *window, int startCursorPos)
|
||||
static void MakeStateChangeListMenuFromEntryTemplates(WonderCardsAppData *appData, StateTransitionMenuOptionTemplate *entries, int numEntries, Window *window, int startCursorPos)
|
||||
{
|
||||
if (appData->strList) {
|
||||
StringList_Free(appData->strList);
|
||||
|
|
@ -787,7 +790,7 @@ static enum WonderCardsAppState DeleteWcAndOpenNextWcActionsMenu(ApplicationMana
|
|||
return WC_APP_STATE_WAIT_FOR_MENU_CHOICE;
|
||||
}
|
||||
|
||||
static enum WonderCardsAppState GoBackToWcActionsMenu(ApplicationManager *appMan)
|
||||
static enum WonderCardsAppState ReturnToWcActionsMenu(ApplicationManager *appMan)
|
||||
{
|
||||
WonderCardsAppData *appData = ApplicationManager_Data(appMan);
|
||||
|
||||
|
|
@ -889,7 +892,7 @@ static BOOL SetupRemainingSharesCount(WonderCardsAppData *appData, Window *windo
|
|||
|
||||
static BOOL InitWondercardActionsMenu(WonderCardsAppData *appData, Window *window, TextColor unused)
|
||||
{
|
||||
StateTransitionListMenuEntryTemplate entries[4];
|
||||
StateTransitionMenuOptionTemplate entries[NUM_WC_ACTIONS];
|
||||
WonderCardsAppWindowTemplate *windowTemplate;
|
||||
int numOptions = 0;
|
||||
|
||||
|
|
@ -906,7 +909,7 @@ static BOOL InitWondercardActionsMenu(WonderCardsAppData *appData, Window *windo
|
|||
|
||||
Window_ClearAndCopyToVRAM(window);
|
||||
Window_Remove(window);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_2, windowTemplate->tilemapLeft, windowTemplate->tilemapTop + (4 - numOptions) * 2, windowTemplate->width, windowTemplate->height - (4 - numOptions) * 2, PLTT_15, appData->messageBoxBaseTile);
|
||||
Window_Add(appData->bgConfig, window, BG_LAYER_MAIN_2, windowTemplate->tilemapLeft, windowTemplate->tilemapTop + TEXT_LINES_TILES(NUM_WC_ACTIONS - numOptions), windowTemplate->width, windowTemplate->height - TEXT_LINES_TILES(NUM_WC_ACTIONS - numOptions), PLTT_15, appData->messageBoxBaseTile);
|
||||
MakeStateChangeListMenuFromEntryTemplates(appData, entries, numOptions, window, 0);
|
||||
|
||||
return TRUE;
|
||||
|
|
@ -938,9 +941,9 @@ static BOOL SetupEntriesCount(WonderCardsAppData *appData, Window *window, TextC
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static void DoScreenTransitionToState(WonderCardsAppData *appData, int param1, enum WonderCardsAppState nextState, enum WonderCardsAppState *state)
|
||||
static void DoScreenTransitionToState(WonderCardsAppData *appData, enum FadeType fadeType, enum WonderCardsAppState nextState, enum WonderCardsAppState *state)
|
||||
{
|
||||
StartScreenFade(FADE_BOTH_SCREENS, param1, param1, 0x0, 6, 1, HEAP_ID_WONDER_CARDS_APP);
|
||||
StartScreenFade(FADE_BOTH_SCREENS, fadeType, fadeType, COLOR_BLACK, 6, 1, HEAP_ID_WONDER_CARDS_APP);
|
||||
|
||||
if (state) {
|
||||
*state = WC_APP_STATE_WAIT_FOR_SCREEN_TRANSITION;
|
||||
|
|
@ -988,7 +991,7 @@ static void ShowWindowsForScreen(WonderCardsAppData *appData, BOOL unused, enum
|
|||
Strbuf *strBuf = MessageUtil_ExpandedStrbuf(appData->strTemplate, appData->msgLoader, windowTemplates[i].entryID, appData->heapID);
|
||||
|
||||
{
|
||||
u32 yOffset = (windowTemplates[i].leftMarginSize == CENTER_TEXT) ? Font_CalcCenterAlignment(windowTemplates[i].font, strBuf, 0, windowTemplates[i].width * 8) : windowTemplates[i].leftMarginSize;
|
||||
u32 yOffset = (windowTemplates[i].leftMarginSize == CENTER_TEXT) ? Font_CalcCenterAlignment(windowTemplates[i].font, strBuf, 0, windowTemplates[i].width * TILE_WIDTH_PIXELS) : windowTemplates[i].leftMarginSize;
|
||||
Text_AddPrinterWithParamsAndColor(&appData->windows[i], windowTemplates[i].font, strBuf, yOffset, windowTemplates[i].topMarginSize, TEXT_SPEED_NO_TRANSFER, color, NULL);
|
||||
}
|
||||
|
||||
|
|
@ -1097,6 +1100,8 @@ static void LoadWondercardGraphics(WonderCardsAppData *appData, enum WonderCards
|
|||
case WC_SCREEN_WONDERCARD_BACK:
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_GRAPHIC__MYSTERY, 5, appData->bgConfig, BG_LAYER_MAIN_1, 0, WC_BACK_TILEMAP_WIDTH * WC_BACK_TILEMAP_HEIGHT * 2, TRUE, appData->heapID);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Graphics_LoadPalette(NARC_INDEX_GRAPHIC__MYSTERY, 0, PAL_LOAD_MAIN_BG, PLTT_OFFSET(11), PALETTE_SIZE_BYTES, appData->heapID);
|
||||
|
|
@ -1160,7 +1165,7 @@ static void LoadPokemonSpritesForSelectedWc(WonderCardsAppData *appData)
|
|||
|
||||
MainMenuUtil_InitCharPlttTransferBuffers();
|
||||
MainMenuUtil_InitSpriteLoader();
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_GRAPHIC__MYSTERY, 26, 23, 25, 24, 0);
|
||||
MainMenuUtil_LoadSprite(NARC_INDEX_GRAPHIC__MYSTERY, 26, 23, 25, 24, DS_SCREEN_MAIN);
|
||||
|
||||
Graphics_LoadPalette(NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, PokeIconPalettesFileIndex(), PAL_LOAD_MAIN_OBJ, PLTT_OFFSET(3), 0, appData->heapID);
|
||||
}
|
||||
|
|
@ -1181,11 +1186,11 @@ static void LoadPokemonSpritesForSelectedWc(WonderCardsAppData *appData)
|
|||
|
||||
NNSG2dCharacterData *charData;
|
||||
|
||||
appData->selectedWcSprites[i] = MainMenuUtil_InitSprite(0, appData->selectedWcSprites[i], spriteX, 16, 10 + i);
|
||||
appData->selectedWcSprites[i] = MainMenuUtil_InitSprite(DS_SCREEN_MAIN, appData->selectedWcSprites[i], spriteX, 16, 10 + i);
|
||||
u8 *ncgrBuffer = Graphics_GetCharData(NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, PokeIconSpriteIndex(species, FALSE, HEAP_ID_SYSTEM), FALSE, &charData, appData->heapID);
|
||||
|
||||
DC_FlushRange(charData->pRawData, (4 * 4 * 0x20));
|
||||
GX_LoadOBJ(charData->pRawData, (0x64 + i * 4 * 4) * 0x20, (4 * 4 * 0x20));
|
||||
DC_FlushRange(charData->pRawData, (4 * 4 * TILE_SIZE_4BPP));
|
||||
GX_LoadOBJ(charData->pRawData, (0x64 + i * 4 * 4) * TILE_SIZE_4BPP, (4 * 4 * TILE_SIZE_4BPP));
|
||||
|
||||
Sprite_SetExplicitPalette(appData->selectedWcSprites[i], PokeIconPaletteIndex(species, 0, 0) + 3);
|
||||
Heap_Free(ncgrBuffer);
|
||||
|
|
@ -1309,7 +1314,7 @@ static BOOL RunFlipAnimFrame(WonderCardsAppData *appData)
|
|||
offsetFx32 += flipAnimMan->offsetStep;
|
||||
}
|
||||
|
||||
DC_FlushRange(buffer, SCROLL_REGISTER_SIZE * 4 * HW_LCD_HEIGHT);
|
||||
DC_FlushRange(buffer, sizeof(flipAnimMan->scrollsBuffers[0]));
|
||||
BufferManager_SwapBuffers(flipAnimMan->bufferManager);
|
||||
|
||||
return FALSE;
|
||||
|
|
@ -1317,9 +1322,9 @@ static BOOL RunFlipAnimFrame(WonderCardsAppData *appData)
|
|||
|
||||
static void WonderCardsAppCallbackSaveGame(WonderCardsAppData *appData)
|
||||
{
|
||||
int stage = MainMenuUtil_SaveState();
|
||||
int saveStatus = MainMenuUtil_SaveState();
|
||||
|
||||
if (stage == 2 || stage == 3) {
|
||||
if (saveStatus == SAVE_RESULT_OK || saveStatus == SAVE_RESULT_CORRUPT) {
|
||||
Sound_PlayEffect(SEQ_SE_DP_SAVE);
|
||||
appData->mainCallback = NULL;
|
||||
}
|
||||
|
|
@ -1425,7 +1430,7 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
LoadMessageBoxGraphics(appData->bgConfig, BG_LAYER_MAIN_0, BASE_TILE_MESSAGE_BOX_FRAME, PLTT_10, appData->msgBoxFrame, HEAP_ID_WONDER_CARDS_APP);
|
||||
|
||||
ShowWindowsForScreen(appData, 1, WC_SCREEN_WONDERCARD_FRONT);
|
||||
DoScreenTransitionToState(appData, 1, WC_APP_STATE_SELECT_WONDERCARD, state);
|
||||
DoScreenTransitionToState(appData, FADE_TYPE_BRIGHTNESS_IN, WC_APP_STATE_SELECT_WONDERCARD, state);
|
||||
break;
|
||||
case WC_APP_STATE_SELECT_WONDERCARD: {
|
||||
int selectedWcSlot = appData->selectedWondercardSlot;
|
||||
|
|
@ -1436,7 +1441,7 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
selectedWcSlot = GetNextOccupiedWcSlot(appData, appData->selectedWondercardSlot, DIRECTION_NEXT);
|
||||
} else if (JOY_NEW(PAD_BUTTON_B)) {
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
DoScreenTransitionToState(appData, 0, WC_APP_STATE_EXIT, state);
|
||||
DoScreenTransitionToState(appData, FADE_TYPE_BRIGHTNESS_OUT, WC_APP_STATE_EXIT, state);
|
||||
} else if (JOY_NEW(PAD_BUTTON_A)) {
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
*state = WC_APP_STATE_SHOW_WONDERCARD_ACTIONS;
|
||||
|
|
@ -1511,17 +1516,17 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
*state = WC_APP_STATE_SELECT_WONDERCARD;
|
||||
break;
|
||||
case WC_APP_STATE_WAIT_CONFIRM_DELETION:
|
||||
ProcessStateTransitionMenuInput(appMan, state, GoBackToWcActionsMenu);
|
||||
ProcessStateTransitionMenuInput(appMan, state, ReturnToWcActionsMenu);
|
||||
break;
|
||||
case WC_APP_STATE_WAIT_CONFIRM_START_WIRELESS:
|
||||
ProcessStateTransitionMenuInput(appMan, state, GoBackToWcActionsMenu);
|
||||
ProcessStateTransitionMenuInput(appMan, state, ReturnToWcActionsMenu);
|
||||
break;
|
||||
case WC_APP_STATE_ASK_START_WIRELESS_TO_SHARE_WC:
|
||||
AskConfirmStartWireless(appData, &appData->standardWindow, TEXT_COLOR(1, 2, 0));
|
||||
*state = WC_APP_STATE_WAIT_CONFIRM_START_WIRELESS;
|
||||
break;
|
||||
case WC_APP_STATE_START_TRANSITION_TO_WC_SHARE_SCREEN:
|
||||
DoScreenTransitionToState(appData, 0, WC_APP_STATE_SHOW_WC_SHARE_SCREEN, state);
|
||||
DoScreenTransitionToState(appData, FADE_TYPE_BRIGHTNESS_OUT, WC_APP_STATE_SHOW_WC_SHARE_SCREEN, state);
|
||||
break;
|
||||
case WC_APP_STATE_SHOW_WC_SHARE_SCREEN:
|
||||
WonderCardsApp_CloseListMenu(appData);
|
||||
|
|
@ -1537,7 +1542,7 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
case WC_APP_STATE_PREPARE_FOR_SHARING:
|
||||
PrepareSelectedWCForSharing(appData);
|
||||
sub_02039734();
|
||||
DoScreenTransitionToState(appData, 1, WC_APP_STATE_WAIT_FOR_PLAYERS, state);
|
||||
DoScreenTransitionToState(appData, FADE_TYPE_BRIGHTNESS_IN, WC_APP_STATE_WAIT_FOR_PLAYERS, state);
|
||||
break;
|
||||
case WC_APP_STATE_WAIT_FOR_PLAYERS: {
|
||||
int connectedPlayersCount = 0;
|
||||
|
|
@ -1561,7 +1566,7 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
break;
|
||||
}
|
||||
case WC_APP_STATE_RETURN_AFTER_COMM_MAN_EXIT:
|
||||
DoScreenTransitionToState(appData, 0, WC_APP_STATE_RETURN_TO_WC_ACTIONS, state);
|
||||
DoScreenTransitionToState(appData, FADE_TYPE_BRIGHTNESS_OUT, WC_APP_STATE_RETURN_TO_WC_ACTIONS, state);
|
||||
break;
|
||||
case WC_APP_STATE_RETURN_TO_WC_ACTIONS:
|
||||
ResetAllSprites(appData);
|
||||
|
|
@ -1569,7 +1574,7 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
EraseStandardWindowIfInUse(&appData->standardWindow, FALSE);
|
||||
ShowWindowsForScreen(appData, 1, WC_SCREEN_WONDERCARD_FRONT);
|
||||
Font_LoadTextPalette(PAL_LOAD_MAIN_BG, PLTT_OFFSET(15), HEAP_ID_WONDER_CARDS_APP);
|
||||
DoScreenTransitionToState(appData, 1, WC_APP_STATE_SHOW_WONDERCARD_ACTIONS, state);
|
||||
DoScreenTransitionToState(appData, FADE_TYPE_BRIGHTNESS_IN, WC_APP_STATE_SHOW_WONDERCARD_ACTIONS, state);
|
||||
break;
|
||||
case WC_APP_STATE_WAIT_FOR_COMM_MAN_EXIT:
|
||||
if (CommMan_IsInitialized() == FALSE) {
|
||||
|
|
@ -1585,7 +1590,7 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
}
|
||||
break;
|
||||
case WC_APP_STATE_START_COMM_SYNC:
|
||||
if (MainMenuUtil_GetSavingStatus() == 4) {
|
||||
if (MainMenuUtil_GetSavingStatus() == MAIN_MENU_UTIL_SAVING_IDLE) {
|
||||
CommTiming_StartSync(0x93);
|
||||
*state = WC_APP_STATE_WAIT_FOR_COMM_SYNC;
|
||||
}
|
||||
|
|
@ -1604,7 +1609,7 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
}
|
||||
break;
|
||||
case WC_APP_STATE_NO_MORE_WONDERCARDS:
|
||||
DoScreenTransitionToState(appData, 0, WC_APP_STATE_EXIT, state);
|
||||
DoScreenTransitionToState(appData, FADE_TYPE_BRIGHTNESS_OUT, WC_APP_STATE_EXIT, state);
|
||||
break;
|
||||
case WC_APP_STATE_WAIT_FOR_SCREEN_TRANSITION:
|
||||
if (IsScreenFadeDone()) {
|
||||
|
|
@ -1618,13 +1623,16 @@ static int WonderCardsApp_Main(ApplicationManager *appMan, enum WonderCardsAppSt
|
|||
break;
|
||||
case WC_APP_STATE_UNUSED:
|
||||
break;
|
||||
default:
|
||||
// Should never be reached
|
||||
break;
|
||||
}
|
||||
|
||||
if (appData->spriteList != NULL) {
|
||||
SpriteList_Update(appData->spriteList);
|
||||
}
|
||||
|
||||
MainMenuUtil_UpdateSpritesSkipGift();
|
||||
MainMenuUtil_UpdateSprites();
|
||||
|
||||
if (appData->mainCallback) {
|
||||
appData->mainCallback(appData);
|
||||
|
|
@ -1755,7 +1763,7 @@ static int UpdateConnectedPlayers(WonderCardsAppData *appData, Window *window)
|
|||
Text_AddPrinterWithParamsAndColor(window, FONT_SYSTEM, strBuf, 80, trainerInfoYOffset, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(14, 15, 0), NULL);
|
||||
Strbuf_Free(strBuf);
|
||||
|
||||
trainerInfoYOffset += 24;
|
||||
trainerInfoYOffset += TEXT_LINES(1) + 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user