mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-06 07:27:47 +01:00
Merge branch 'master' into doc-blender
This commit is contained in:
commit
e9b734c1ef
@ -230,6 +230,7 @@
|
|||||||
#define STATUS_PRIMARY_POKERUS 6
|
#define STATUS_PRIMARY_POKERUS 6
|
||||||
#define STATUS_PRIMARY_FAINTED 7
|
#define STATUS_PRIMARY_FAINTED 7
|
||||||
|
|
||||||
|
#define MAX_PER_STAT_EVS 255
|
||||||
#define MAX_TOTAL_EVS 510
|
#define MAX_TOTAL_EVS 510
|
||||||
#define EV_ITEM_RAISE_LIMIT 100
|
#define EV_ITEM_RAISE_LIMIT 100
|
||||||
|
|
||||||
|
@ -8,6 +8,12 @@
|
|||||||
#define MENU_NOTHING_CHOSEN -2
|
#define MENU_NOTHING_CHOSEN -2
|
||||||
#define MENU_B_PRESSED -1
|
#define MENU_B_PRESSED -1
|
||||||
|
|
||||||
|
#define MENU_CURSOR_DELTA_NONE 0
|
||||||
|
#define MENU_CURSOR_DELTA_UP -1
|
||||||
|
#define MENU_CURSOR_DELTA_DOWN 1
|
||||||
|
#define MENU_CURSOR_DELTA_LEFT -1
|
||||||
|
#define MENU_CURSOR_DELTA_RIGHT 1
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
SAVE_MENU_NAME,
|
SAVE_MENU_NAME,
|
||||||
@ -77,7 +83,7 @@ void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
|
|||||||
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
|
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
|
||||||
void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8);
|
void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8);
|
||||||
u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos);
|
u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos);
|
||||||
u8 sub_8199134(s8, s8);
|
u8 ChangeListMenuCursorPosition(s8 deltaX, s8 deltaY);
|
||||||
u8 GetStartMenuWindowId(void);
|
u8 GetStartMenuWindowId(void);
|
||||||
void ListMenuLoadStdPalAt(u8, u8);
|
void ListMenuLoadStdPalAt(u8, u8);
|
||||||
u8 Menu_MoveCursor(s8 cursorDelta);
|
u8 Menu_MoveCursor(s8 cursorDelta);
|
||||||
|
@ -1014,9 +1014,7 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
|
|||||||
palOffset = (battlerId * 16) + 0x100;
|
palOffset = (battlerId * 16) + 0x100;
|
||||||
LoadCompressedPalette(gSubstituteDollPal, palOffset, 32);
|
LoadCompressedPalette(gSubstituteDollPal, palOffset, 32);
|
||||||
}
|
}
|
||||||
else
|
else if (!IsContest())
|
||||||
{
|
|
||||||
if (!IsContest())
|
|
||||||
{
|
{
|
||||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||||
@ -1024,7 +1022,6 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
|
|||||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId)
|
void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId)
|
||||||
{
|
{
|
||||||
|
@ -4851,8 +4851,6 @@ static void SetActionsAndBattlersTurnOrder(void)
|
|||||||
gBattleStruct->focusPunchBattlerId = 0;
|
gBattleStruct->focusPunchBattlerId = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
|
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
|
||||||
{
|
{
|
||||||
if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH)
|
if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH)
|
||||||
@ -4877,6 +4875,7 @@ static void SetActionsAndBattlersTurnOrder(void)
|
|||||||
{
|
{
|
||||||
u8 battler1 = gBattlerByTurnOrder[i];
|
u8 battler1 = gBattlerByTurnOrder[i];
|
||||||
u8 battler2 = gBattlerByTurnOrder[j];
|
u8 battler2 = gBattlerByTurnOrder[j];
|
||||||
|
|
||||||
if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM
|
if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM
|
||||||
&& gActionsByTurnOrder[j] != B_ACTION_USE_ITEM
|
&& gActionsByTurnOrder[j] != B_ACTION_USE_ITEM
|
||||||
&& gActionsByTurnOrder[i] != B_ACTION_SWITCH
|
&& gActionsByTurnOrder[i] != B_ACTION_SWITCH
|
||||||
@ -4888,7 +4887,6 @@ static void SetActionsAndBattlersTurnOrder(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
|
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
|
||||||
gBattleStruct->focusPunchBattlerId = 0;
|
gBattleStruct->focusPunchBattlerId = 0;
|
||||||
}
|
}
|
||||||
@ -4962,12 +4960,8 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TryClearRageStatuses();
|
TryClearRageStatuses();
|
||||||
gCurrentTurnActionNumber = 0;
|
gCurrentTurnActionNumber = 0; //See comment underneath
|
||||||
{
|
gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; //Should be gActionsByTurnOrder[(gCurrentTurnActionNumber = 0)], but that doesn't match
|
||||||
// something stupid needed to match
|
|
||||||
u8 zero;
|
|
||||||
gCurrentActionFuncId = gActionsByTurnOrder[(zero = 0)];
|
|
||||||
}
|
|
||||||
gDynamicBasePower = 0;
|
gDynamicBasePower = 0;
|
||||||
gBattleStruct->dynamicMoveType = 0;
|
gBattleStruct->dynamicMoveType = 0;
|
||||||
gBattleMainFunc = RunTurnActionsFunctions;
|
gBattleMainFunc = RunTurnActionsFunctions;
|
||||||
@ -4990,15 +4984,12 @@ static void RunTurnActionsFunctions(void)
|
|||||||
gHitMarker &= ~(HITMARKER_x100000);
|
gHitMarker &= ~(HITMARKER_x100000);
|
||||||
gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F];
|
gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F];
|
||||||
}
|
}
|
||||||
else
|
else if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId
|
||||||
{
|
|
||||||
if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId
|
|
||||||
{
|
{
|
||||||
gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
|
gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
|
||||||
gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
|
gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void HandleEndTurn_BattleWon(void)
|
static void HandleEndTurn_BattleWon(void)
|
||||||
{
|
{
|
||||||
|
@ -970,7 +970,7 @@ static void HandleMenuActionInput(u8 taskId)
|
|||||||
if (id > 0 && IsValidMenuAction(id - 2))
|
if (id > 0 && IsValidMenuAction(id - 2))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(0, -1);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_DOWN)
|
else if (gMain.newKeys & DPAD_DOWN)
|
||||||
@ -978,7 +978,7 @@ static void HandleMenuActionInput(u8 taskId)
|
|||||||
if (id < gPyramidBagResources->menuActionsCount - 2 && IsValidMenuAction(id + 2))
|
if (id < gPyramidBagResources->menuActionsCount - 2 && IsValidMenuAction(id + 2))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(0, 1);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
|
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
|
||||||
@ -986,7 +986,7 @@ static void HandleMenuActionInput(u8 taskId)
|
|||||||
if (id & 1 && IsValidMenuAction(id - 1))
|
if (id & 1 && IsValidMenuAction(id - 1))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(-1, 0);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
|
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
|
||||||
@ -994,7 +994,7 @@ static void HandleMenuActionInput(u8 taskId)
|
|||||||
if (!(id & 1) && IsValidMenuAction(id + 1))
|
if (!(id & 1) && IsValidMenuAction(id + 1))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(1, 0);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & A_BUTTON)
|
else if (gMain.newKeys & A_BUTTON)
|
||||||
|
@ -999,8 +999,6 @@ void ResetLinkContestBoolean(void)
|
|||||||
|
|
||||||
static void SetupContestGpuRegs(void)
|
static void SetupContestGpuRegs(void)
|
||||||
{
|
{
|
||||||
u16 savedIme;
|
|
||||||
|
|
||||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP);
|
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP);
|
||||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||||
@ -3410,8 +3408,7 @@ static void GetAllChosenMoves(void)
|
|||||||
|
|
||||||
static void RankContestants(void)
|
static void RankContestants(void)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i, j;
|
||||||
s32 j;
|
|
||||||
s16 arr[CONTESTANT_COUNT];
|
s16 arr[CONTESTANT_COUNT];
|
||||||
|
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
@ -3486,7 +3483,6 @@ static bool8 ContestantCanUseTurn(u8 contestant)
|
|||||||
{
|
{
|
||||||
if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns)
|
if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3541,7 +3537,6 @@ bool8 Contest_IsMonsTurnDisabled(u8 contestant)
|
|||||||
{
|
{
|
||||||
if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns)
|
if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4485,9 +4480,7 @@ static void CalculateAppealMoveImpact(u8 contestant)
|
|||||||
eContestantStatus[contestant].comboAppealBonus = eContestantStatus[contestant].baseAppeal * eContestantStatus[contestant].completedCombo;
|
eContestantStatus[contestant].comboAppealBonus = eContestantStatus[contestant].baseAppeal * eContestantStatus[contestant].completedCombo;
|
||||||
eContestantStatus[contestant].completedComboFlag = TRUE; // Redundant with completedCombo, used by AI
|
eContestantStatus[contestant].completedComboFlag = TRUE; // Redundant with completedCombo, used by AI
|
||||||
}
|
}
|
||||||
else
|
else if (gContestMoves[eContestantStatus[contestant].currMove].comboStarterId != 0)
|
||||||
{
|
|
||||||
if (gContestMoves[eContestantStatus[contestant].currMove].comboStarterId != 0)
|
|
||||||
{
|
{
|
||||||
eContestantStatus[contestant].hasJudgesAttention = TRUE;
|
eContestantStatus[contestant].hasJudgesAttention = TRUE;
|
||||||
eContestantStatus[contestant].usedComboMove = TRUE;
|
eContestantStatus[contestant].usedComboMove = TRUE;
|
||||||
@ -4497,7 +4490,6 @@ static void CalculateAppealMoveImpact(u8 contestant)
|
|||||||
eContestantStatus[contestant].hasJudgesAttention = FALSE;
|
eContestantStatus[contestant].hasJudgesAttention = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (eContestantStatus[contestant].repeatedMove)
|
if (eContestantStatus[contestant].repeatedMove)
|
||||||
eContestantStatus[contestant].repeatJam = (eContestantStatus[contestant].moveRepeatCount + 1) * 10;
|
eContestantStatus[contestant].repeatJam = (eContestantStatus[contestant].moveRepeatCount + 1) * 10;
|
||||||
|
|
||||||
|
@ -384,8 +384,6 @@ static void InitContestMonPixels(u16 species, u8 whichSprite)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
// functionally equivalent.
|
|
||||||
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64])
|
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64])
|
||||||
{
|
{
|
||||||
u16 tileY, tileX, pixelY, pixelX;
|
u16 tileY, tileX, pixelY, pixelX;
|
||||||
@ -399,125 +397,21 @@ static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)
|
|||||||
{
|
{
|
||||||
for (pixelX = 0; pixelX < 8; pixelX++)
|
for (pixelX = 0; pixelX < 8; pixelX++)
|
||||||
{
|
{
|
||||||
int offset = 32 * (8 * tileY + tileX) + (pixelY * 4 + pixelX / 2);
|
colorIndex = spriteGfx[((tileY * 8) + tileX) * 32 + (pixelY << 2) + (pixelX >> 1)];
|
||||||
colorIndex = spriteGfx[offset];
|
|
||||||
if (pixelX & 1)
|
if (pixelX & 1)
|
||||||
colorIndex >>= 4;
|
colorIndex >>= 4;
|
||||||
else
|
else
|
||||||
colorIndex &= 0xF;
|
colorIndex &= 0xF; // %=16 works here too. Both match
|
||||||
|
|
||||||
if (colorIndex == 0) // transparent pixel
|
if (colorIndex == 0) // transparent pixel
|
||||||
(*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = 0x8000;
|
(*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = 0x8000;
|
||||||
else
|
else
|
||||||
(*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
|
(*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
NAKED
|
|
||||||
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64])
|
|
||||||
{
|
|
||||||
asm_unified("\n\
|
|
||||||
push {r4-r7,lr}\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
mov r6, r9\n\
|
|
||||||
mov r5, r8\n\
|
|
||||||
push {r5-r7}\n\
|
|
||||||
sub sp, 0xC\n\
|
|
||||||
mov r10, r0\n\
|
|
||||||
mov r9, r1\n\
|
|
||||||
str r2, [sp]\n\
|
|
||||||
movs r0, 0\n\
|
|
||||||
_08130394:\n\
|
|
||||||
movs r3, 0\n\
|
|
||||||
adds r1, r0, 0x1\n\
|
|
||||||
str r1, [sp, 0x4]\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
str r0, [sp, 0x8]\n\
|
|
||||||
_0813039E:\n\
|
|
||||||
movs r1, 0\n\
|
|
||||||
adds r2, r3, 0x1\n\
|
|
||||||
mov r8, r2\n\
|
|
||||||
ldr r7, [sp, 0x8]\n\
|
|
||||||
adds r0, r7, r3\n\
|
|
||||||
lsls r0, 5\n\
|
|
||||||
mov r12, r0\n\
|
|
||||||
lsls r4, r3, 3\n\
|
|
||||||
_081303AE:\n\
|
|
||||||
movs r3, 0\n\
|
|
||||||
lsls r0, r1, 2\n\
|
|
||||||
adds r6, r1, 0x1\n\
|
|
||||||
mov r2, r12\n\
|
|
||||||
adds r5, r2, r0\n\
|
|
||||||
ldr r7, [sp, 0x8]\n\
|
|
||||||
adds r0, r7, r1\n\
|
|
||||||
lsls r0, 7\n\
|
|
||||||
ldr r1, [sp]\n\
|
|
||||||
adds r2, r0, r1\n\
|
|
||||||
_081303C2:\n\
|
|
||||||
lsrs r0, r3, 1\n\
|
|
||||||
adds r0, r5, r0\n\
|
|
||||||
add r0, r10\n\
|
|
||||||
ldrb r1, [r0]\n\
|
|
||||||
movs r0, 0x1\n\
|
|
||||||
ands r0, r3\n\
|
|
||||||
cmp r0, 0\n\
|
|
||||||
beq _081303D6\n\
|
|
||||||
lsrs r1, 4\n\
|
|
||||||
b _081303DA\n\
|
|
||||||
_081303D6:\n\
|
|
||||||
movs r0, 0xF\n\
|
|
||||||
ands r1, r0\n\
|
|
||||||
_081303DA:\n\
|
|
||||||
cmp r1, 0\n\
|
|
||||||
bne _081303EC\n\
|
|
||||||
adds r0, r4, r3\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
adds r0, r2\n\
|
|
||||||
movs r7, 0x80\n\
|
|
||||||
lsls r7, 8\n\
|
|
||||||
adds r1, r7, 0\n\
|
|
||||||
b _081303F8\n\
|
|
||||||
_081303EC:\n\
|
|
||||||
adds r0, r4, r3\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
adds r0, r2\n\
|
|
||||||
lsls r1, 1\n\
|
|
||||||
add r1, r9\n\
|
|
||||||
ldrh r1, [r1]\n\
|
|
||||||
_081303F8:\n\
|
|
||||||
strh r1, [r0]\n\
|
|
||||||
adds r0, r3, 0x1\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r3, r0, 16\n\
|
|
||||||
cmp r3, 0x7\n\
|
|
||||||
bls _081303C2\n\
|
|
||||||
lsls r0, r6, 16\n\
|
|
||||||
lsrs r1, r0, 16\n\
|
|
||||||
cmp r1, 0x7\n\
|
|
||||||
bls _081303AE\n\
|
|
||||||
mov r1, r8\n\
|
|
||||||
lsls r0, r1, 16\n\
|
|
||||||
lsrs r3, r0, 16\n\
|
|
||||||
cmp r3, 0x7\n\
|
|
||||||
bls _0813039E\n\
|
|
||||||
ldr r2, [sp, 0x4]\n\
|
|
||||||
lsls r0, r2, 16\n\
|
|
||||||
lsrs r0, 16\n\
|
|
||||||
cmp r0, 0x7\n\
|
|
||||||
bls _08130394\n\
|
|
||||||
add sp, 0xC\n\
|
|
||||||
pop {r3-r5}\n\
|
|
||||||
mov r8, r3\n\
|
|
||||||
mov r9, r4\n\
|
|
||||||
mov r10, r5\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r0}\n\
|
|
||||||
bx r0");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
|
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
|
||||||
|
|
||||||
|
@ -8216,8 +8216,7 @@ bool8 FreezeObjectEvent(struct ObjectEvent *objectEvent)
|
|||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
objectEvent->frozen = 1;
|
objectEvent->frozen = 1;
|
||||||
objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
|
objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
|
||||||
objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
|
objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
|
||||||
@ -8225,7 +8224,6 @@ bool8 FreezeObjectEvent(struct ObjectEvent *objectEvent)
|
|||||||
gSprites[objectEvent->spriteId].affineAnimPaused = 1;
|
gSprites[objectEvent->spriteId].affineAnimPaused = 1;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void FreezeObjectEvents(void)
|
void FreezeObjectEvents(void)
|
||||||
{
|
{
|
||||||
@ -8397,7 +8395,7 @@ bool8 sub_80976EC(struct Sprite *sprite)
|
|||||||
|
|
||||||
if (sprite->data[5] > 15)
|
if (sprite->data[5] > 15)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8478,15 +8476,15 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
|
|||||||
return finished;
|
return finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const s8 gUnknown_0850E802[] = {
|
static const s8 gUnknown_0850E802[16] = {
|
||||||
-4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
|
-4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const s8 gUnknown_0850E812[] = {
|
static const s8 gUnknown_0850E812[16] = {
|
||||||
0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
|
0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const s8 gUnknown_0850E822[] = {
|
static const s8 gUnknown_0850E822[16] = {
|
||||||
-2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
|
-2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -8509,23 +8507,11 @@ void sub_809783C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
|
|||||||
sprite->data[6] = 0;
|
sprite->data[6] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const s16 gUnknown_0850E840[] = {
|
|
||||||
16, 16, 32,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const u8 gUnknown_0850E846[] = {
|
|
||||||
0, 0, 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
u8 sub_809785C(struct Sprite *sprite)
|
u8 sub_809785C(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
s16 v5[3];
|
s16 v5[] = {16, 16, 32};
|
||||||
u8 v6[3];
|
u8 v6[] = {0, 0, 1};
|
||||||
u8 v2;
|
u8 v2 = 0;
|
||||||
|
|
||||||
memcpy(v5, gUnknown_0850E840, 6); // TODO: get rid of memcpy
|
|
||||||
memcpy(v6, gUnknown_0850E846, 3);
|
|
||||||
v2 = 0;
|
|
||||||
|
|
||||||
if (sprite->data[4])
|
if (sprite->data[4])
|
||||||
Step1(sprite, sprite->data[3]);
|
Step1(sprite, sprite->data[3]);
|
||||||
@ -8546,23 +8532,11 @@ u8 sub_809785C(struct Sprite *sprite)
|
|||||||
return v2;
|
return v2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const s16 gUnknown_0850E84A[] = {
|
|
||||||
32, 32, 64,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const u8 gUnknown_0850E850[] = {
|
|
||||||
1, 1, 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
u8 sub_80978E4(struct Sprite *sprite)
|
u8 sub_80978E4(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
s16 v5[3];
|
s16 v5[] = {32, 32, 64};
|
||||||
u8 v6[3];
|
u8 v6[] = {1, 1, 2};
|
||||||
u8 v2;
|
u8 v2 = 0;
|
||||||
|
|
||||||
memcpy(v5, gUnknown_0850E84A, 6);
|
|
||||||
memcpy(v6, gUnknown_0850E850, 3);
|
|
||||||
v2 = 0;
|
|
||||||
|
|
||||||
if (sprite->data[4] && !(sprite->data[6] & 1))
|
if (sprite->data[4] && !(sprite->data[6] & 1))
|
||||||
Step1(sprite, sprite->data[3]);
|
Step1(sprite, sprite->data[3]);
|
||||||
@ -8590,11 +8564,8 @@ static void SetMovementDelay(struct Sprite *sprite, s16 timer)
|
|||||||
|
|
||||||
static bool8 WaitForMovementDelay(struct Sprite *sprite)
|
static bool8 WaitForMovementDelay(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->data[3]--;
|
if (--sprite->data[3] == 0)
|
||||||
|
|
||||||
if (sprite->data[3] == 0)
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8609,7 +8580,6 @@ bool8 SpriteAnimEnded(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
if (sprite->animEnded)
|
if (sprite->animEnded)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8789,14 +8759,14 @@ static void UpdateObjectEventSpritePosition(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
switch(sprite->tAnimNum)
|
switch(sprite->tAnimNum)
|
||||||
{
|
{
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
case UNION_ROOM_SPAWN_IN:
|
case UNION_ROOM_SPAWN_IN:
|
||||||
MoveUnionRoomObjectDown(sprite);
|
MoveUnionRoomObjectDown(sprite);
|
||||||
break;
|
break;
|
||||||
case UNION_ROOM_SPAWN_OUT:
|
case UNION_ROOM_SPAWN_OUT:
|
||||||
MoveUnionRoomObjectUp(sprite);
|
MoveUnionRoomObjectUp(sprite);
|
||||||
break;
|
break;
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
sprite->tAnimNum = 0;
|
sprite->tAnimNum = 0;
|
||||||
break;
|
break;
|
||||||
@ -8877,8 +8847,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i, firstFreeSlot;
|
||||||
u8 firstFreeSlot;
|
|
||||||
bool32 found;
|
bool32 found;
|
||||||
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
|
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
|
@ -227,9 +227,7 @@ bool8 SetUpFieldMove_Cut(void)
|
|||||||
y = gPlayerFacingPosition.y + sHyperCutStruct[i].y;
|
y = gPlayerFacingPosition.y + sHyperCutStruct[i].y;
|
||||||
tileCuttable = TRUE;
|
tileCuttable = TRUE;
|
||||||
|
|
||||||
j = 0;
|
for (j = 0; j < 2; ++j) {
|
||||||
do
|
|
||||||
{
|
|
||||||
if (sHyperCutStruct[i].unk2[j] == 0)
|
if (sHyperCutStruct[i].unk2[j] == 0)
|
||||||
break;
|
break;
|
||||||
if (cutTiles[(u8)(sHyperCutStruct[i].unk2[j] - 1)] == FALSE)
|
if (cutTiles[(u8)(sHyperCutStruct[i].unk2[j] - 1)] == FALSE)
|
||||||
@ -237,7 +235,7 @@ bool8 SetUpFieldMove_Cut(void)
|
|||||||
tileCuttable = FALSE;
|
tileCuttable = FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while (++j <= 1);
|
}
|
||||||
|
|
||||||
if (tileCuttable == TRUE)
|
if (tileCuttable == TRUE)
|
||||||
{
|
{
|
||||||
@ -253,14 +251,11 @@ bool8 SetUpFieldMove_Cut(void)
|
|||||||
sHyperCutTiles[tileArrayId] = TRUE;
|
sHyperCutTiles[tileArrayId] = TRUE;
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
|
||||||
{
|
|
||||||
if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
|
|
||||||
sHyperCutTiles[tileArrayId] = TRUE;
|
sHyperCutTiles[tileArrayId] = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (ret == TRUE)
|
if (ret == TRUE)
|
||||||
{
|
{
|
||||||
|
156
src/item_menu.c
156
src/item_menu.c
@ -52,6 +52,13 @@
|
|||||||
#include "battle_pike.h"
|
#include "battle_pike.h"
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SWITCH_POCKET_NONE,
|
||||||
|
SWITCH_POCKET_LEFT,
|
||||||
|
SWITCH_POCKET_RIGHT
|
||||||
|
};
|
||||||
|
|
||||||
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void (*postExitMenuMainCallback2)());
|
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void (*postExitMenuMainCallback2)());
|
||||||
void CB2_Bag(void);
|
void CB2_Bag(void);
|
||||||
bool8 SetupBagMenu(void);
|
bool8 SetupBagMenu(void);
|
||||||
@ -62,7 +69,7 @@ void AllocateBagItemListBuffers(void);
|
|||||||
void LoadBagItemListBuffers(u8);
|
void LoadBagItemListBuffers(u8);
|
||||||
void BagMenu_PrintPocketNames(const u8*, const u8*);
|
void BagMenu_PrintPocketNames(const u8*, const u8*);
|
||||||
void BagMenu_CopyPocketNameToWindow(u32);
|
void BagMenu_CopyPocketNameToWindow(u32);
|
||||||
void BagMenu_DrawPocketIndicatorSquare(u8, u8);
|
static void DrawPocketIndicatorSquare(u8 x, bool8 isCurrentPocket);
|
||||||
void CreatePocketScrollArrowPair(void);
|
void CreatePocketScrollArrowPair(void);
|
||||||
void CreatePocketSwitchArrowPair(void);
|
void CreatePocketSwitchArrowPair(void);
|
||||||
void BagMenu_PrepareTMHMMoveWindow(void);
|
void BagMenu_PrepareTMHMMoveWindow(void);
|
||||||
@ -80,16 +87,16 @@ u16 BagGetQuantityByPocketPosition(u8, u16);
|
|||||||
void BagDestroyPocketSwitchArrowPair(void);
|
void BagDestroyPocketSwitchArrowPair(void);
|
||||||
void TaskCloseBagMenu_2(u8);
|
void TaskCloseBagMenu_2(u8);
|
||||||
u8 AddItemMessageWindow(u8);
|
u8 AddItemMessageWindow(u8);
|
||||||
void bag_menu_RemoveBagItem_message_window(u8);
|
void BagMenu_RemoveBagItemMessageindow(u8);
|
||||||
void set_callback3_to_bag(u8);
|
void set_callback3_to_bag(u8);
|
||||||
void PrintItemDepositAmount(u8, s16);
|
void PrintItemDepositAmount(u8, s16);
|
||||||
u8 BagMenu_AddWindow(u8);
|
static u8 BagMenu_AddWindow(u8);
|
||||||
u8 GetSwitchBagPocketDirection(void);
|
static u8 GetSwitchBagPocketDirection(void);
|
||||||
void SwitchBagPocket(u8, s16, u16);
|
static void SwitchBagPocket(u8, s16, u16);
|
||||||
bool8 sub_81AC2C0(void);
|
static bool8 CanSwapItems(void);
|
||||||
void BagMenu_SwapItems(u8);
|
static void BagMenu_SwapItems(u8 taskId);
|
||||||
void sub_81AC10C(u8);
|
static void sub_81AC10C(u8);
|
||||||
void sub_81AC3C0(u8);
|
static void Task_HandleSwappingItemsInput(u8);
|
||||||
void sub_81AC498(u8);
|
void sub_81AC498(u8);
|
||||||
void sub_81AC590(u8);
|
void sub_81AC590(u8);
|
||||||
void PrintTMHMMoveData(u16);
|
void PrintTMHMMoveData(u16);
|
||||||
@ -106,19 +113,18 @@ void BagMenu_YesNo(u8, u8, const struct YesNoFuncTable*);
|
|||||||
void Task_ActuallyToss(u8);
|
void Task_ActuallyToss(u8);
|
||||||
void ItemMenu_Cancel(u8);
|
void ItemMenu_Cancel(u8);
|
||||||
void sub_81AD350(u8);
|
void sub_81AD350(u8);
|
||||||
void BagMenu_PrintItemCantBeHeld(u8);
|
static void BagMenu_PrintItemCantBeHeld(u8);
|
||||||
void DisplayCurrentMoneyWindow(void);
|
static void DisplayCurrentMoneyWindow(void);
|
||||||
void DisplaySellItemPriceAndConfirm(u8);
|
static void DisplaySellItemPriceAndConfirm(u8);
|
||||||
void sub_81AD730(u8);
|
void sub_81AD730(u8);
|
||||||
void sub_81AD6E4(u8);
|
void sub_81AD6E4(u8);
|
||||||
void bag_menu_remove_money_window(void);
|
static void RemoveMoneyWindow(void);
|
||||||
void bag_menu_RemoveBagItem_message_window(u8);
|
static void Task_SellHowManyDialogueHandleInput(u8);
|
||||||
void Task_BuyHowManyDialogueHandleInput(u8);
|
static void BagMenu_Sell_UpdateItemListAndMoney(u8);
|
||||||
void sub_81AD8C8(u8);
|
static void BagMenu_Sell_WaitForABPress(u8);
|
||||||
void sub_81AD9C0(u8);
|
static void BagMenu_TryDepositItem(u8);
|
||||||
void sub_81ADB14(u8);
|
static void Task_ChooseHowManyToDeposit(u8 taskId);
|
||||||
void sub_81ADA7C(u8);
|
static void BagMenu_Deposit_WaitForABPress(u8);
|
||||||
void sub_81ADC0C(u8);
|
|
||||||
void CB2_ApprenticeExitBagMenu(void);
|
void CB2_ApprenticeExitBagMenu(void);
|
||||||
void CB2_FavorLadyExitBagMenu(void);
|
void CB2_FavorLadyExitBagMenu(void);
|
||||||
void CB2_QuizLadyExitBagMenu(void);
|
void CB2_QuizLadyExitBagMenu(void);
|
||||||
@ -688,7 +694,7 @@ bool8 SetupBagMenu(void)
|
|||||||
case 13:
|
case 13:
|
||||||
BagMenu_PrintPocketNames(gPocketNamesStringsTable[gBagPositionStruct.pocket], 0);
|
BagMenu_PrintPocketNames(gPocketNamesStringsTable[gBagPositionStruct.pocket], 0);
|
||||||
BagMenu_CopyPocketNameToWindow(0);
|
BagMenu_CopyPocketNameToWindow(0);
|
||||||
BagMenu_DrawPocketIndicatorSquare(gBagPositionStruct.pocket, 1);
|
DrawPocketIndicatorSquare(gBagPositionStruct.pocket, TRUE);
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 14:
|
||||||
@ -1111,7 +1117,7 @@ void BagMenu_InitListsMenu(u8 taskId)
|
|||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
|
u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
|
||||||
u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
|
u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
|
||||||
bag_menu_RemoveBagItem_message_window(4);
|
BagMenu_RemoveBagItemMessageindow(4);
|
||||||
DestroyListMenuTask(data[0], scrollPos, cursorPos);
|
DestroyListMenuTask(data[0], scrollPos, cursorPos);
|
||||||
UpdatePocketItemList(gBagPositionStruct.pocket);
|
UpdatePocketItemList(gBagPositionStruct.pocket);
|
||||||
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
|
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
|
||||||
@ -1154,16 +1160,16 @@ void Task_BagMenu_HandleInput(u8 taskId)
|
|||||||
{
|
{
|
||||||
switch (GetSwitchBagPocketDirection())
|
switch (GetSwitchBagPocketDirection())
|
||||||
{
|
{
|
||||||
case 1:
|
case SWITCH_POCKET_LEFT:
|
||||||
SwitchBagPocket(taskId, -1, 0);
|
SwitchBagPocket(taskId, MENU_CURSOR_DELTA_LEFT, 0);
|
||||||
return;
|
return;
|
||||||
case 2:
|
case SWITCH_POCKET_RIGHT:
|
||||||
SwitchBagPocket(taskId, 1, 0);
|
SwitchBagPocket(taskId, MENU_CURSOR_DELTA_RIGHT, 0);
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
if (gMain.newKeys & SELECT_BUTTON)
|
if (gMain.newKeys & SELECT_BUTTON)
|
||||||
{
|
{
|
||||||
if (sub_81AC2C0() == 1)
|
if (CanSwapItems() == TRUE)
|
||||||
{
|
{
|
||||||
ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
|
ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
|
||||||
if ((*scrollPos + *cursorPos) != gBagMenu->numItemStacks[gBagPositionStruct.pocket] - 1)
|
if ((*scrollPos + *cursorPos) != gBagMenu->numItemStacks[gBagPositionStruct.pocket] - 1)
|
||||||
@ -1217,26 +1223,26 @@ void set_callback3_to_bag(u8 taskId)
|
|||||||
gTasks[taskId].func = Task_BagMenu_HandleInput;
|
gTasks[taskId].func = Task_BagMenu_HandleInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 GetSwitchBagPocketDirection(void)
|
static u8 GetSwitchBagPocketDirection(void)
|
||||||
{
|
{
|
||||||
u8 LRKeys;
|
u8 LRKeys;
|
||||||
if (gBagMenu->pocketSwitchDisabled)
|
if (gBagMenu->pocketSwitchDisabled)
|
||||||
return 0;
|
return SWITCH_POCKET_NONE;
|
||||||
LRKeys = GetLRKeysPressed();
|
LRKeys = GetLRKeysPressed();
|
||||||
if ((gMain.newKeys & DPAD_LEFT) || LRKeys == MENU_L_PRESSED)
|
if ((gMain.newKeys & DPAD_LEFT) || LRKeys == MENU_L_PRESSED)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return 1;
|
return SWITCH_POCKET_LEFT;
|
||||||
}
|
}
|
||||||
if ((gMain.newKeys & DPAD_RIGHT) || LRKeys == MENU_R_PRESSED)
|
if ((gMain.newKeys & DPAD_RIGHT) || LRKeys == MENU_R_PRESSED)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return 2;
|
return SWITCH_POCKET_RIGHT;
|
||||||
}
|
}
|
||||||
return 0;
|
return SWITCH_POCKET_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId)
|
static void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId)
|
||||||
{
|
{
|
||||||
if (deltaBagPocketId == 1 && *bagPocketId == POCKETS_COUNT - 1)
|
if (deltaBagPocketId == 1 && *bagPocketId == POCKETS_COUNT - 1)
|
||||||
*bagPocketId = 0;
|
*bagPocketId = 0;
|
||||||
@ -1246,7 +1252,7 @@ void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId)
|
|||||||
*bagPocketId += deltaBagPocketId;
|
*bagPocketId += deltaBagPocketId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
|
static void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
|
||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
u8 pocketId;
|
u8 pocketId;
|
||||||
@ -1265,7 +1271,7 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
|
|||||||
}
|
}
|
||||||
pocketId = gBagPositionStruct.pocket;
|
pocketId = gBagPositionStruct.pocket;
|
||||||
ChangeBagPocketId(&pocketId, deltaBagPocketId);
|
ChangeBagPocketId(&pocketId, deltaBagPocketId);
|
||||||
if (deltaBagPocketId == 1)
|
if (deltaBagPocketId == MENU_CURSOR_DELTA_RIGHT)
|
||||||
{
|
{
|
||||||
BagMenu_PrintPocketNames(gPocketNamesStringsTable[gBagPositionStruct.pocket], gPocketNamesStringsTable[pocketId]);
|
BagMenu_PrintPocketNames(gPocketNamesStringsTable[gBagPositionStruct.pocket], gPocketNamesStringsTable[pocketId]);
|
||||||
BagMenu_CopyPocketNameToWindow(0);
|
BagMenu_CopyPocketNameToWindow(0);
|
||||||
@ -1275,8 +1281,8 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
|
|||||||
BagMenu_PrintPocketNames(gPocketNamesStringsTable[pocketId], gPocketNamesStringsTable[gBagPositionStruct.pocket]);
|
BagMenu_PrintPocketNames(gPocketNamesStringsTable[pocketId], gPocketNamesStringsTable[gBagPositionStruct.pocket]);
|
||||||
BagMenu_CopyPocketNameToWindow(8);
|
BagMenu_CopyPocketNameToWindow(8);
|
||||||
}
|
}
|
||||||
BagMenu_DrawPocketIndicatorSquare(gBagPositionStruct.pocket, 0);
|
DrawPocketIndicatorSquare(gBagPositionStruct.pocket, FALSE);
|
||||||
BagMenu_DrawPocketIndicatorSquare(pocketId, 1);
|
DrawPocketIndicatorSquare(pocketId, TRUE);
|
||||||
FillBgTilemapBufferRect_Palette0(2, 11, 14, 2, 15, 16);
|
FillBgTilemapBufferRect_Palette0(2, 11, 14, 2, 15, 16);
|
||||||
ScheduleBgCopyTilemapToVram(2);
|
ScheduleBgCopyTilemapToVram(2);
|
||||||
SetBagVisualPocketId(pocketId, 1);
|
SetBagVisualPocketId(pocketId, 1);
|
||||||
@ -1293,15 +1299,15 @@ void sub_81AC10C(u8 taskId)
|
|||||||
{
|
{
|
||||||
switch (GetSwitchBagPocketDirection())
|
switch (GetSwitchBagPocketDirection())
|
||||||
{
|
{
|
||||||
case 1:
|
case SWITCH_POCKET_LEFT:
|
||||||
ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]);
|
ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]);
|
||||||
SwitchTaskToFollowupFunc(taskId);
|
SwitchTaskToFollowupFunc(taskId);
|
||||||
SwitchBagPocket(taskId, -1, 1);
|
SwitchBagPocket(taskId, MENU_CURSOR_DELTA_LEFT, 1);
|
||||||
return;
|
return;
|
||||||
case 2:
|
case SWITCH_POCKET_RIGHT:
|
||||||
ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]);
|
ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]);
|
||||||
SwitchTaskToFollowupFunc(taskId);
|
SwitchTaskToFollowupFunc(taskId);
|
||||||
SwitchBagPocket(taskId, 1, 1);
|
SwitchBagPocket(taskId, MENU_CURSOR_DELTA_RIGHT, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1338,16 +1344,16 @@ void sub_81AC23C(u8 a)
|
|||||||
ScheduleBgCopyTilemapToVram(2);
|
ScheduleBgCopyTilemapToVram(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BagMenu_DrawPocketIndicatorSquare(u8 x, u8 is_current_bag)
|
static void DrawPocketIndicatorSquare(u8 x, bool8 isCurrentPocket)
|
||||||
{
|
{
|
||||||
if (is_current_bag == 0)
|
if (!isCurrentPocket)
|
||||||
FillBgTilemapBufferRect_Palette0(2, 0x1017, x + 5, 3, 1, 1);
|
FillBgTilemapBufferRect_Palette0(2, 0x1017, x + 5, 3, 1, 1);
|
||||||
else
|
else
|
||||||
FillBgTilemapBufferRect_Palette0(2, 0x102B, x + 5, 3, 1, 1);
|
FillBgTilemapBufferRect_Palette0(2, 0x102B, x + 5, 3, 1, 1);
|
||||||
ScheduleBgCopyTilemapToVram(2);
|
ScheduleBgCopyTilemapToVram(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_81AC2C0(void)
|
static bool8 CanSwapItems(void)
|
||||||
{
|
{
|
||||||
if (gBagPositionStruct.location <= ITEMMENULOCATION_BATTLE)
|
if (gBagPositionStruct.location <= ITEMMENULOCATION_BATTLE)
|
||||||
{
|
{
|
||||||
@ -1372,10 +1378,10 @@ void BagMenu_SwapItems(u8 taskId)
|
|||||||
sub_80D4FEC(data[1]);
|
sub_80D4FEC(data[1]);
|
||||||
BagDestroyPocketSwitchArrowPair();
|
BagDestroyPocketSwitchArrowPair();
|
||||||
BagMenu_PrintCursor_(data[0], 2);
|
BagMenu_PrintCursor_(data[0], 2);
|
||||||
gTasks[taskId].func = sub_81AC3C0;
|
gTasks[taskId].func = Task_HandleSwappingItemsInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81AC3C0(u8 taskId)
|
static void Task_HandleSwappingItemsInput(u8 taskId)
|
||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
int input;
|
int input;
|
||||||
@ -1644,7 +1650,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
|
|||||||
if (cursorPos > 0 && sub_81ACDFC(cursorPos - 2))
|
if (cursorPos > 0 && sub_81ACDFC(cursorPos - 2))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(0, -1);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_DOWN)
|
else if (gMain.newKeys & DPAD_DOWN)
|
||||||
@ -1652,7 +1658,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
|
|||||||
if (cursorPos < (gBagMenu->contextMenuNumItems - 2) && sub_81ACDFC(cursorPos + 2))
|
if (cursorPos < (gBagMenu->contextMenuNumItems - 2) && sub_81ACDFC(cursorPos + 2))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(0, 1);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
|
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
|
||||||
@ -1660,7 +1666,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
|
|||||||
if ((cursorPos & 1) && sub_81ACDFC(cursorPos - 1))
|
if ((cursorPos & 1) && sub_81ACDFC(cursorPos - 1))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(-1, 0);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
|
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
|
||||||
@ -1668,7 +1674,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
|
|||||||
if (!(cursorPos & 1) && sub_81ACDFC(cursorPos + 1))
|
if (!(cursorPos & 1) && sub_81ACDFC(cursorPos + 1))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(1, 0);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & A_BUTTON)
|
else if (gMain.newKeys & A_BUTTON)
|
||||||
@ -1871,7 +1877,7 @@ void BagMenu_PrintThereIsNoPokemon(u8 taskId)
|
|||||||
DisplayItemMessage(taskId, 1, gText_NoPokemon, sub_81AD350);
|
DisplayItemMessage(taskId, 1, gText_NoPokemon, sub_81AD350);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BagMenu_PrintItemCantBeHeld(u8 taskId)
|
static void BagMenu_PrintItemCantBeHeld(u8 taskId)
|
||||||
{
|
{
|
||||||
CopyItemName(gSpecialVar_ItemId, gStringVar1);
|
CopyItemName(gSpecialVar_ItemId, gStringVar1);
|
||||||
StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeld);
|
StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeld);
|
||||||
@ -2012,7 +2018,7 @@ void Task_ItemContext_Sell(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplaySellItemPriceAndConfirm(u8 taskId)
|
static void DisplaySellItemPriceAndConfirm(u8 taskId)
|
||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
|
|
||||||
@ -2030,8 +2036,8 @@ void BagMenu_CancelSell(u8 taskId)
|
|||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
|
|
||||||
bag_menu_remove_money_window();
|
RemoveMoneyWindow();
|
||||||
bag_menu_RemoveBagItem_message_window(4);
|
BagMenu_RemoveBagItemMessageindow(4);
|
||||||
BagMenu_PrintCursor_(data[0], 0);
|
BagMenu_PrintCursor_(data[0], 0);
|
||||||
set_callback3_to_bag(taskId);
|
set_callback3_to_bag(taskId);
|
||||||
}
|
}
|
||||||
@ -2043,10 +2049,10 @@ void sub_81AD730(u8 taskId)
|
|||||||
|
|
||||||
PrintItemSoldAmount(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount);
|
PrintItemSoldAmount(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount);
|
||||||
DisplayCurrentMoneyWindow();
|
DisplayCurrentMoneyWindow();
|
||||||
gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput;
|
gTasks[taskId].func = Task_SellHowManyDialogueHandleInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Task_BuyHowManyDialogueHandleInput(u8 taskId)
|
static void Task_SellHowManyDialogueHandleInput(u8 taskId)
|
||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
|
|
||||||
@ -2064,9 +2070,9 @@ void Task_BuyHowManyDialogueHandleInput(u8 taskId)
|
|||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
BagMenu_PrintCursor_(data[0], 0);
|
BagMenu_PrintCursor_(data[0], 0);
|
||||||
bag_menu_remove_money_window();
|
RemoveMoneyWindow();
|
||||||
BagMenu_RemoveWindow(8);
|
BagMenu_RemoveWindow(8);
|
||||||
bag_menu_RemoveBagItem_message_window(4);
|
BagMenu_RemoveBagItemMessageindow(4);
|
||||||
set_callback3_to_bag(taskId);
|
set_callback3_to_bag(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2078,10 +2084,10 @@ void BagMenu_ConfirmSell(u8 taskId)
|
|||||||
CopyItemName(gSpecialVar_ItemId, gStringVar2);
|
CopyItemName(gSpecialVar_ItemId, gStringVar2);
|
||||||
ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6);
|
ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||||
StringExpandPlaceholders(gStringVar4, gText_TurnedOverVar1ForVar2);
|
StringExpandPlaceholders(gStringVar4, gText_TurnedOverVar1ForVar2);
|
||||||
DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD8C8);
|
DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_Sell_UpdateItemListAndMoney);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81AD8C8(u8 taskId)
|
static void BagMenu_Sell_UpdateItemListAndMoney(u8 taskId)
|
||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
|
u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
|
||||||
@ -2097,15 +2103,15 @@ void sub_81AD8C8(u8 taskId)
|
|||||||
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
|
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
|
||||||
BagMenu_PrintCursor_(data[0], 2);
|
BagMenu_PrintCursor_(data[0], 2);
|
||||||
PrintMoneyAmountInMoneyBox(gBagMenu->windowPointers[9], GetMoney(&gSaveBlock1Ptr->money), 0);
|
PrintMoneyAmountInMoneyBox(gBagMenu->windowPointers[9], GetMoney(&gSaveBlock1Ptr->money), 0);
|
||||||
gTasks[taskId].func = sub_81AD9C0;
|
gTasks[taskId].func = BagMenu_Sell_WaitForABPress;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81AD9C0(u8 taskId)
|
static void BagMenu_Sell_WaitForABPress(u8 taskId)
|
||||||
{
|
{
|
||||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
bag_menu_remove_money_window();
|
RemoveMoneyWindow();
|
||||||
BagMenu_InitListsMenu(taskId);
|
BagMenu_InitListsMenu(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2117,7 +2123,7 @@ void Task_ItemContext_Deposit(u8 taskId)
|
|||||||
tItemCount = 1;
|
tItemCount = 1;
|
||||||
if (data[2] == 1)
|
if (data[2] == 1)
|
||||||
{
|
{
|
||||||
sub_81ADB14(taskId);
|
BagMenu_TryDepositItem(taskId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2126,11 +2132,11 @@ void Task_ItemContext_Deposit(u8 taskId)
|
|||||||
FillWindowPixelBuffer(1, PIXEL_FILL(0));
|
FillWindowPixelBuffer(1, PIXEL_FILL(0));
|
||||||
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
|
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
|
||||||
sub_81ABC3C(7);
|
sub_81ABC3C(7);
|
||||||
gTasks[taskId].func = sub_81ADA7C;
|
gTasks[taskId].func = Task_ChooseHowManyToDeposit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81ADA7C(u8 taskId)
|
static void Task_ChooseHowManyToDeposit(u8 taskId)
|
||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
|
|
||||||
@ -2142,7 +2148,7 @@ void sub_81ADA7C(u8 taskId)
|
|||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
BagMenu_RemoveWindow(7);
|
BagMenu_RemoveWindow(7);
|
||||||
sub_81ADB14(taskId);
|
BagMenu_TryDepositItem(taskId);
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & B_BUTTON)
|
else if (gMain.newKeys & B_BUTTON)
|
||||||
{
|
{
|
||||||
@ -2154,7 +2160,7 @@ void sub_81ADA7C(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81ADB14(u8 taskId)
|
static void BagMenu_TryDepositItem(u8 taskId)
|
||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
|
|
||||||
@ -2162,7 +2168,7 @@ void sub_81ADB14(u8 taskId)
|
|||||||
if (ItemId_GetImportance(gSpecialVar_ItemId))
|
if (ItemId_GetImportance(gSpecialVar_ItemId))
|
||||||
{
|
{
|
||||||
BagMenu_Print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0);
|
BagMenu_Print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0);
|
||||||
gTasks[taskId].func = sub_81ADC0C;
|
gTasks[taskId].func = BagMenu_Deposit_WaitForABPress;
|
||||||
}
|
}
|
||||||
else if (AddPCItem(gSpecialVar_ItemId, tItemCount) == TRUE)
|
else if (AddPCItem(gSpecialVar_ItemId, tItemCount) == TRUE)
|
||||||
{
|
{
|
||||||
@ -2175,11 +2181,11 @@ void sub_81ADB14(u8 taskId)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
BagMenu_Print(1, 1, gText_NoRoomForItems, 3, 1, 0, 0, 0, 0);
|
BagMenu_Print(1, 1, gText_NoRoomForItems, 3, 1, 0, 0, 0, 0);
|
||||||
gTasks[taskId].func = sub_81ADC0C;
|
gTasks[taskId].func = BagMenu_Deposit_WaitForABPress;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81ADC0C(u8 taskId)
|
static void BagMenu_Deposit_WaitForABPress(u8 taskId)
|
||||||
{
|
{
|
||||||
s16* data = gTasks[taskId].data;
|
s16* data = gTasks[taskId].data;
|
||||||
|
|
||||||
@ -2250,7 +2256,7 @@ void Task_WallyTutorialBagMenu(u8 taskId)
|
|||||||
{
|
{
|
||||||
case 0x66:
|
case 0x66:
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
SwitchBagPocket(taskId, 1, 0);
|
SwitchBagPocket(taskId, MENU_CURSOR_DELTA_RIGHT, 0);
|
||||||
data[8]++;
|
data[8]++;
|
||||||
break;
|
break;
|
||||||
case 0xCC:
|
case 0xCC:
|
||||||
@ -2416,7 +2422,7 @@ u8 AddItemMessageWindow(u8 which)
|
|||||||
return *ptr;
|
return *ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void bag_menu_RemoveBagItem_message_window(u8 which)
|
void BagMenu_RemoveBagItemMessageindow(u8 which)
|
||||||
{
|
{
|
||||||
u8 *ptr = &gBagMenu->windowPointers[which];
|
u8 *ptr = &gBagMenu->windowPointers[which];
|
||||||
if (*ptr != 0xFF)
|
if (*ptr != 0xFF)
|
||||||
@ -2435,14 +2441,14 @@ void BagMenu_YesNo(u8 a, u8 b, const struct YesNoFuncTable *funcTable)
|
|||||||
CreateYesNoMenuWithCallbacks(a, &sContextMenuWindowTemplates[b], 1, 0, 2, 1, 14, funcTable);
|
CreateYesNoMenuWithCallbacks(a, &sContextMenuWindowTemplates[b], 1, 0, 2, 1, 14, funcTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayCurrentMoneyWindow(void)
|
static void DisplayCurrentMoneyWindow(void)
|
||||||
{
|
{
|
||||||
u8 windowId = BagMenu_AddWindow(9);
|
u8 windowId = BagMenu_AddWindow(9);
|
||||||
PrintMoneyAmountInMoneyBoxWithBorder(windowId, 1, 14, GetMoney(&gSaveBlock1Ptr->money));
|
PrintMoneyAmountInMoneyBoxWithBorder(windowId, 1, 14, GetMoney(&gSaveBlock1Ptr->money));
|
||||||
AddMoneyLabelObject(19, 11);
|
AddMoneyLabelObject(19, 11);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bag_menu_remove_money_window(void)
|
static void RemoveMoneyWindow(void)
|
||||||
{
|
{
|
||||||
BagMenu_RemoveWindow(9);
|
BagMenu_RemoveWindow(9);
|
||||||
RemoveMoneyLabelObject();
|
RemoveMoneyLabelObject();
|
||||||
|
@ -876,8 +876,7 @@ static void sub_800F498(u16 *a0, u8 *a1)
|
|||||||
|
|
||||||
static bool32 RfuProcessEnqueuedRecvBlock(void)
|
static bool32 RfuProcessEnqueuedRecvBlock(void)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i, j;
|
||||||
u8 j;
|
|
||||||
u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))];
|
u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))];
|
||||||
u8 sp48[2 * (CMD_LENGTH - 1)];
|
u8 sp48[2 * (CMD_LENGTH - 1)];
|
||||||
u8 status;
|
u8 status;
|
||||||
@ -923,7 +922,7 @@ static bool32 RfuProcessEnqueuedRecvBlock(void)
|
|||||||
|
|
||||||
static void HandleSendFailure(u8 unused, u32 flags)
|
static void HandleSendFailure(u8 unused, u32 flags)
|
||||||
{
|
{
|
||||||
s32 i, j;
|
s32 i, j, temp;
|
||||||
|
|
||||||
const u8 *r10 = Rfu.sendBlock.payload;
|
const u8 *r10 = Rfu.sendBlock.payload;
|
||||||
for (i = 0; i < Rfu.sendBlock.count; i++)
|
for (i = 0; i < Rfu.sendBlock.count; i++)
|
||||||
@ -933,14 +932,15 @@ static void HandleSendFailure(u8 unused, u32 flags)
|
|||||||
sResendBlock16[0] = RFUCMD_0x8900 | i;
|
sResendBlock16[0] = RFUCMD_0x8900 | i;
|
||||||
for (j = 0; j < 7; j++)
|
for (j = 0; j < 7; j++)
|
||||||
{
|
{
|
||||||
sResendBlock16[j + 1] = (r10[12 * i + (j << 1) + 1] << 8) | r10[12 * i + (j << 1) + 0];
|
temp = j << 1;
|
||||||
|
sResendBlock16[j + 1] = (r10[i * 12 + temp + 1] << 8) | r10[i * 12 + temp];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < 7; j++)
|
for (j = 0; j < 7; j++)
|
||||||
{
|
{
|
||||||
sResendBlock8[2 * j + 1] = sResendBlock16[j] >> 8;
|
temp = j << 1;
|
||||||
sResendBlock8[2 * j + 0] = sResendBlock16[j];
|
sResendBlock8[temp + 1] = sResendBlock16[j] >> 8;
|
||||||
|
sResendBlock8[temp + 0] = sResendBlock16[j] & 0xff;
|
||||||
j++;j--; // Needed to match;
|
|
||||||
}
|
}
|
||||||
RfuSendQueue_Enqueue(&Rfu.sendQueue, sResendBlock8);
|
RfuSendQueue_Enqueue(&Rfu.sendQueue, sResendBlock8);
|
||||||
Rfu.sendBlock.failedFlags |= (1 << i);
|
Rfu.sendBlock.failedFlags |= (1 << i);
|
||||||
@ -1024,8 +1024,7 @@ void Rfu_SetBerryBlenderLinkCallback(void)
|
|||||||
|
|
||||||
static void RfuHandleReceiveCommand(u8 unused)
|
static void RfuHandleReceiveCommand(u8 unused)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i, j;
|
||||||
u16 j;
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
||||||
{
|
{
|
||||||
@ -1039,7 +1038,7 @@ static void RfuHandleReceiveCommand(u8 unused)
|
|||||||
if (gRfuLinkStatus->parentChild == MODE_CHILD)
|
if (gRfuLinkStatus->parentChild == MODE_CHILD)
|
||||||
{
|
{
|
||||||
Rfu.playerCount = gRecvCmds[i][1];
|
Rfu.playerCount = gRecvCmds[i][1];
|
||||||
Rfu.multiplayerId = sub_800F74C((u8 *)(gRecvCmds[i] + 2));
|
Rfu.multiplayerId = sub_800F74C((u8 *)(&gRecvCmds[i][2]));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RFUCMD_0x8800:
|
case RFUCMD_0x8800:
|
||||||
@ -1238,10 +1237,9 @@ void Rfu_SendPacket(void *data)
|
|||||||
bool32 Rfu_InitBlockSend(const u8 *src, size_t size)
|
bool32 Rfu_InitBlockSend(const u8 *src, size_t size)
|
||||||
{
|
{
|
||||||
bool8 r4;
|
bool8 r4;
|
||||||
if (Rfu.callback != NULL)
|
if (Rfu.callback != NULL || gSendCmd[0] != 0)
|
||||||
return FALSE;
|
|
||||||
if (gSendCmd[0] != 0)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (Rfu.sendBlock.sending)
|
if (Rfu.sendBlock.sending)
|
||||||
{
|
{
|
||||||
sRfuDebug.unk_83++;
|
sRfuDebug.unk_83++;
|
||||||
@ -1419,17 +1417,13 @@ void Rfu_SetCloseLinkCallback(void)
|
|||||||
|
|
||||||
static void SendReadyExitStandbyUntilAllReady(void)
|
static void SendReadyExitStandbyUntilAllReady(void)
|
||||||
{
|
{
|
||||||
u8 playerCount;
|
u8 i, playerCount;
|
||||||
u8 i;
|
|
||||||
|
|
||||||
if (GetMultiplayerId() != 0)
|
if (GetMultiplayerId() != 0 && Rfu.recvQueue.count == 0 && Rfu.resendExitStandbyTimer > 60)
|
||||||
{
|
|
||||||
if (Rfu.recvQueue.count == 0 && Rfu.resendExitStandbyTimer > 60)
|
|
||||||
{
|
{
|
||||||
RfuPrepareSendBuffer(RFUCMD_READY_EXIT_STANDBY);
|
RfuPrepareSendBuffer(RFUCMD_READY_EXIT_STANDBY);
|
||||||
Rfu.resendExitStandbyTimer = 0;
|
Rfu.resendExitStandbyTimer = 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
playerCount = GetLinkPlayerCount();
|
playerCount = GetLinkPlayerCount();
|
||||||
for (i = 0; i < playerCount; i++)
|
for (i = 0; i < playerCount; i++)
|
||||||
{
|
{
|
||||||
@ -1458,8 +1452,7 @@ static void LinkLeaderReadyToExitStandby(void)
|
|||||||
// RFU equivalent of LinkCB_Standby and LinkCB_StandbyForAll
|
// RFU equivalent of LinkCB_Standby and LinkCB_StandbyForAll
|
||||||
static void Rfu_LinkStandby(void)
|
static void Rfu_LinkStandby(void)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i, playerCount;
|
||||||
u8 playerCount;
|
|
||||||
|
|
||||||
if (GetMultiplayerId() != 0)
|
if (GetMultiplayerId() != 0)
|
||||||
{
|
{
|
||||||
@ -1555,9 +1548,12 @@ static bool8 CheckForLeavingGroupMembers(void)
|
|||||||
bool8 memberLeft = FALSE;
|
bool8 memberLeft = FALSE;
|
||||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||||
{
|
{
|
||||||
if (Rfu.partnerSendStatuses[i] < RFU_STATUS_JOIN_GROUP_OK
|
if (Rfu.partnerSendStatuses[i] == RFU_STATUS_JOIN_GROUP_OK
|
||||||
|| Rfu.partnerSendStatuses[i] > RFU_STATUS_JOIN_GROUP_NO)
|
|| Rfu.partnerSendStatuses[i] == RFU_STATUS_JOIN_GROUP_NO)
|
||||||
{
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS
|
if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS
|
||||||
|| gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
|
|| gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
|
||||||
{
|
{
|
||||||
@ -1569,13 +1565,10 @@ static bool8 CheckForLeavingGroupMembers(void)
|
|||||||
rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1);
|
rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1);
|
||||||
memberLeft = TRUE;
|
memberLeft = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
|
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
|
||||||
rfu_clearSlot(TYPE_NI_RECV, i);
|
|
||||||
{
|
{
|
||||||
|
rfu_clearSlot(TYPE_NI_RECV, i);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return memberLeft;
|
return memberLeft;
|
||||||
@ -2097,8 +2090,7 @@ static void sub_80111FC(void)
|
|||||||
|
|
||||||
static void sub_801120C(u8 msg, u8 paramCount)
|
static void sub_801120C(u8 msg, u8 paramCount)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i, disconnectFlag = 0;
|
||||||
u8 disconnectFlag = 0;
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
case LMAN_MSG_INITIALIZE_COMPLETED:
|
case LMAN_MSG_INITIALIZE_COMPLETED:
|
||||||
|
@ -1282,7 +1282,7 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st
|
|||||||
{
|
{
|
||||||
subsprites[id] = sSubsprite_RedOutline3;
|
subsprites[id] = sSubsprite_RedOutline3;
|
||||||
subsprites[id].x = i - 120;
|
subsprites[id].x = i - 120;
|
||||||
subsprites[id].y = 136;
|
subsprites[id].y = -120;
|
||||||
id++;
|
id++;
|
||||||
|
|
||||||
subsprites[id] = sSubsprite_RedOutline6;
|
subsprites[id] = sSubsprite_RedOutline6;
|
||||||
|
56
src/menu.c
56
src/menu.c
@ -1299,10 +1299,12 @@ u8 sub_8198F58(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 cursorHeight,
|
|||||||
else
|
else
|
||||||
sMenu.cursorPos = pos;
|
sMenu.cursorPos = pos;
|
||||||
|
|
||||||
sub_8199134(0, 0);
|
// Why call this when it's not gonna move?
|
||||||
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_NONE);
|
||||||
return sMenu.cursorPos;
|
return sMenu.cursorPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unused
|
||||||
u8 sub_8198FD4(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 a5, u8 a6, u8 a7)
|
u8 sub_8198FD4(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 a5, u8 a6, u8 a7)
|
||||||
{
|
{
|
||||||
u8 cursorHeight = GetMenuCursorDimensionByFont(fontId, 1);
|
u8 cursorHeight = GetMenuCursorDimensionByFont(fontId, 1);
|
||||||
@ -1333,41 +1335,29 @@ void sub_8199060(u8 oldCursorPos, u8 newCursorPos)
|
|||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 sub_8199134(s8 deltaX, s8 deltaY)
|
u8 ChangeListMenuCursorPosition(s8 deltaX, s8 deltaY)
|
||||||
{
|
{
|
||||||
u8 oldPos = sMenu.cursorPos;
|
u8 oldPos = sMenu.cursorPos;
|
||||||
|
|
||||||
if (deltaX != 0)
|
if (deltaX != 0)
|
||||||
{
|
{
|
||||||
if ((sMenu.cursorPos % sMenu.columns) + deltaX < 0)
|
if ((sMenu.cursorPos % sMenu.columns) + deltaX < 0)
|
||||||
{
|
|
||||||
sMenu.cursorPos += sMenu.columns - 1;
|
sMenu.cursorPos += sMenu.columns - 1;
|
||||||
}
|
|
||||||
else if ((sMenu.cursorPos % sMenu.columns) + deltaX >= sMenu.columns)
|
else if ((sMenu.cursorPos % sMenu.columns) + deltaX >= sMenu.columns)
|
||||||
{
|
|
||||||
sMenu.cursorPos = (sMenu.cursorPos / sMenu.columns) * sMenu.columns;
|
sMenu.cursorPos = (sMenu.cursorPos / sMenu.columns) * sMenu.columns;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
sMenu.cursorPos += deltaX;
|
sMenu.cursorPos += deltaX;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (deltaY != 0)
|
if (deltaY != 0)
|
||||||
{
|
{
|
||||||
if ((sMenu.cursorPos / sMenu.columns) + deltaY < 0)
|
if ((sMenu.cursorPos / sMenu.columns) + deltaY < 0)
|
||||||
{
|
|
||||||
sMenu.cursorPos += sMenu.columns * (sMenu.rows - 1);
|
sMenu.cursorPos += sMenu.columns * (sMenu.rows - 1);
|
||||||
}
|
|
||||||
else if ((sMenu.cursorPos / sMenu.columns) + deltaY >= sMenu.rows)
|
else if ((sMenu.cursorPos / sMenu.columns) + deltaY >= sMenu.rows)
|
||||||
{
|
|
||||||
sMenu.cursorPos -= sMenu.columns * (sMenu.rows - 1);
|
sMenu.cursorPos -= sMenu.columns * (sMenu.rows - 1);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
sMenu.cursorPos += (sMenu.columns * deltaY);
|
sMenu.cursorPos += (sMenu.columns * deltaY);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (sMenu.cursorPos > sMenu.maxCursorPos)
|
if (sMenu.cursorPos > sMenu.maxCursorPos)
|
||||||
{
|
{
|
||||||
@ -1381,7 +1371,7 @@ u8 sub_8199134(s8 deltaX, s8 deltaY)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 sub_81991F8(s8 deltaX, s8 deltaY)
|
u8 ChangeGridMenuCursorPosition(s8 deltaX, s8 deltaY)
|
||||||
{
|
{
|
||||||
u8 oldPos = sMenu.cursorPos;
|
u8 oldPos = sMenu.cursorPos;
|
||||||
|
|
||||||
@ -1429,25 +1419,25 @@ s8 sub_8199284(void)
|
|||||||
else if (gMain.newKeys & DPAD_UP)
|
else if (gMain.newKeys & DPAD_UP)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(0, -1);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_DOWN)
|
else if (gMain.newKeys & DPAD_DOWN)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(0, 1);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
|
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(-1, 0);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
|
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(1, 0);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1469,25 +1459,25 @@ s8 Menu_ProcessInputGridLayout(void)
|
|||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_UP)
|
else if (gMain.newKeys & DPAD_UP)
|
||||||
{
|
{
|
||||||
if (oldPos != sub_81991F8(0, -1))
|
if (oldPos != ChangeGridMenuCursorPosition(0, -1))
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_DOWN)
|
else if (gMain.newKeys & DPAD_DOWN)
|
||||||
{
|
{
|
||||||
if (oldPos != sub_81991F8(0, 1))
|
if (oldPos != ChangeGridMenuCursorPosition(0, 1))
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
|
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
|
||||||
{
|
{
|
||||||
if (oldPos != sub_81991F8(-1, 0))
|
if (oldPos != ChangeGridMenuCursorPosition(-1, 0))
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
|
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
|
||||||
{
|
{
|
||||||
if (oldPos != sub_81991F8(1, 0))
|
if (oldPos != ChangeGridMenuCursorPosition(1, 0))
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
@ -1509,31 +1499,32 @@ s8 sub_81993D8(void)
|
|||||||
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
|
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(0, -1);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
|
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(0, 1);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
|
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(-1, 0);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
|
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8199134(1, 0);
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Unused
|
||||||
s8 sub_8199484(void)
|
s8 sub_8199484(void)
|
||||||
{
|
{
|
||||||
u8 oldPos = sMenu.cursorPos;
|
u8 oldPos = sMenu.cursorPos;
|
||||||
@ -1549,25 +1540,25 @@ s8 sub_8199484(void)
|
|||||||
}
|
}
|
||||||
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
|
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
|
||||||
{
|
{
|
||||||
if (oldPos != sub_81991F8(0, -1))
|
if (oldPos != ChangeGridMenuCursorPosition(0, -1))
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
|
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
|
||||||
{
|
{
|
||||||
if (oldPos != sub_81991F8(0, 1))
|
if (oldPos != ChangeGridMenuCursorPosition(0, 1))
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
|
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
|
||||||
{
|
{
|
||||||
if (oldPos != sub_81991F8(-1, 0))
|
if (oldPos != ChangeGridMenuCursorPosition(-1, 0))
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
|
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
|
||||||
{
|
{
|
||||||
if (oldPos != sub_81991F8(1, 0))
|
if (oldPos != ChangeGridMenuCursorPosition(1, 0))
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return MENU_NOTHING_CHOSEN;
|
return MENU_NOTHING_CHOSEN;
|
||||||
}
|
}
|
||||||
@ -1732,7 +1723,8 @@ u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCurso
|
|||||||
else
|
else
|
||||||
sMenu.cursorPos = pos;
|
sMenu.cursorPos = pos;
|
||||||
|
|
||||||
sub_8199134(0, 0);
|
// Why call this when it's not gonna move?
|
||||||
|
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_NONE);
|
||||||
return sMenu.cursorPos;
|
return sMenu.cursorPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -894,8 +894,6 @@ static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId)
|
|||||||
{
|
{
|
||||||
return StringCopyPadded(dst, gText_EggNickname, 0, 12);
|
return StringCopyPadded(dst, gText_EggNickname, 0, 12);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst);
|
GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst);
|
||||||
StringGetEnd10(dst);
|
StringGetEnd10(dst);
|
||||||
species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
|
species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
|
||||||
@ -907,8 +905,8 @@ static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Needed to match, feel free to remove.
|
// Needed to match, feel free to remove.
|
||||||
boxId++;boxId--;
|
boxId++, boxId--;
|
||||||
monId++;monId--;
|
monId++, monId--;
|
||||||
|
|
||||||
boxMon = GetBoxedMonPtr(boxId, monId);
|
boxMon = GetBoxedMonPtr(boxId, monId);
|
||||||
gender = GetBoxMonGender(boxMon);
|
gender = GetBoxMonGender(boxMon);
|
||||||
@ -964,7 +962,6 @@ static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId)
|
|||||||
|
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Buffers the string in src to dest up to n chars. If src is less than n chars, fill with spaces
|
// Buffers the string in src to dest up to n chars. If src is less than n chars, fill with spaces
|
||||||
static u8 *BufferConditionMenuSpacedStringN(u8 *dst, const u8 *src, s16 n)
|
static u8 *BufferConditionMenuSpacedStringN(u8 *dst, const u8 *src, s16 n)
|
||||||
|
@ -5895,9 +5895,9 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
|||||||
if (totalEVs + (s16)evIncrease > MAX_TOTAL_EVS)
|
if (totalEVs + (s16)evIncrease > MAX_TOTAL_EVS)
|
||||||
evIncrease = ((s16)evIncrease + MAX_TOTAL_EVS) - (totalEVs + evIncrease);
|
evIncrease = ((s16)evIncrease + MAX_TOTAL_EVS) - (totalEVs + evIncrease);
|
||||||
|
|
||||||
if (evs[i] + (s16)evIncrease > 255)
|
if (evs[i] + (s16)evIncrease > MAX_PER_STAT_EVS)
|
||||||
{
|
{
|
||||||
int val1 = (s16)evIncrease + 255;
|
int val1 = (s16)evIncrease + MAX_PER_STAT_EVS;
|
||||||
int val2 = evs[i] + evIncrease;
|
int val2 = evs[i] + evIncrease;
|
||||||
evIncrease = val1 - val2;
|
evIncrease = val1 - val2;
|
||||||
}
|
}
|
||||||
|
@ -26,9 +26,9 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable
|
|||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
ctx->mode = 0;
|
ctx->mode = 0;
|
||||||
ctx->scriptPtr = 0;
|
ctx->scriptPtr = NULL;
|
||||||
ctx->stackDepth = 0;
|
ctx->stackDepth = 0;
|
||||||
ctx->nativePtr = 0;
|
ctx->nativePtr = NULL;
|
||||||
ctx->cmdTable = cmdTable;
|
ctx->cmdTable = cmdTable;
|
||||||
ctx->cmdTableEnd = cmdTableEnd;
|
ctx->cmdTableEnd = cmdTableEnd;
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void))
|
|||||||
void StopScript(struct ScriptContext *ctx)
|
void StopScript(struct ScriptContext *ctx)
|
||||||
{
|
{
|
||||||
ctx->mode = 0;
|
ctx->mode = 0;
|
||||||
ctx->scriptPtr = 0;
|
ctx->scriptPtr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 RunScriptCommand(struct ScriptContext *ctx)
|
bool8 RunScriptCommand(struct ScriptContext *ctx)
|
||||||
|
@ -356,7 +356,7 @@ static void SetUpDataStruct(void)
|
|||||||
{
|
{
|
||||||
if (sHillData == NULL)
|
if (sHillData == NULL)
|
||||||
{
|
{
|
||||||
sHillData = AllocZeroed(sizeof(*sHillData));
|
sHillData = AllocZeroed(sizeof(struct TrHillStruct2));
|
||||||
sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
|
sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
|
||||||
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor));
|
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor));
|
||||||
nullsub_2();
|
nullsub_2();
|
||||||
@ -672,70 +672,23 @@ bool32 LoadTrainerHillFloorObjectEventScripts(void)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Functionally equivalent.
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
|
static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
|
||||||
{
|
{
|
||||||
u32 var0, var1, var2, var3;
|
u16 var0, var1;
|
||||||
|
#ifndef NONMATCHING
|
||||||
var0 = (sHillData->floors[floorId].display.unk3A0[arg2] >> (15 - bit)) & 1;
|
register u16 var2 asm("r3"); //compiler keeps wanting to "mov r3, 0x80" instead of "mov r2 0x80" and then later "add r3, r2, 0"
|
||||||
var1 = sHillData->floors[floorId].display.data[arg2 * arg3 + bit];
|
|
||||||
var3 = 0x200;
|
|
||||||
var2 = 0x3000;
|
|
||||||
|
|
||||||
return ((var0 << 10) | var2) | (var1 | var3);
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
NAKED
|
u16 var2;
|
||||||
static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
|
#endif
|
||||||
{
|
u16 var3;
|
||||||
asm_unified("\n\
|
|
||||||
push {r4,r5,lr}\n\
|
var0 = (sHillData->floors[floorId].display.unk3A0[arg2] >> (15 - bit) & 1);
|
||||||
lsls r0, 24\n\
|
var1 = sHillData->floors[floorId].display.data[arg3 * arg2 + bit];
|
||||||
lsrs r0, 24\n\
|
var2 = 0x200;
|
||||||
ldr r4, =sHillData\n\
|
var3 = 0x3000;
|
||||||
ldr r4, [r4]\n\
|
|
||||||
mov r12, r4\n\
|
return ((var0 << 10) | var3) | (var1 | var2);
|
||||||
lsls r4, r2, 1\n\
|
|
||||||
lsls r5, r0, 4\n\
|
|
||||||
subs r5, r0\n\
|
|
||||||
lsls r5, 3\n\
|
|
||||||
subs r5, r0\n\
|
|
||||||
lsls r5, 3\n\
|
|
||||||
adds r4, r5\n\
|
|
||||||
movs r0, 0xE8\n\
|
|
||||||
lsls r0, 2\n\
|
|
||||||
add r0, r12\n\
|
|
||||||
adds r0, r4\n\
|
|
||||||
ldrh r0, [r0]\n\
|
|
||||||
movs r4, 0xF\n\
|
|
||||||
subs r4, r1\n\
|
|
||||||
asrs r0, r4\n\
|
|
||||||
movs r4, 0x1\n\
|
|
||||||
ands r0, r4\n\
|
|
||||||
muls r2, r3\n\
|
|
||||||
adds r2, r1\n\
|
|
||||||
adds r2, r5\n\
|
|
||||||
movs r1, 0xA8\n\
|
|
||||||
lsls r1, 2\n\
|
|
||||||
add r1, r12\n\
|
|
||||||
adds r1, r2\n\
|
|
||||||
ldrb r1, [r1]\n\
|
|
||||||
movs r2, 0x80\n\
|
|
||||||
lsls r2, 2\n\
|
|
||||||
adds r3, r2, 0\n\
|
|
||||||
movs r2, 0xC0\n\
|
|
||||||
lsls r2, 6\n\
|
|
||||||
lsls r0, 10\n\
|
|
||||||
orrs r0, r2\n\
|
|
||||||
orrs r1, r3\n\
|
|
||||||
orrs r0, r1\n\
|
|
||||||
pop {r4,r5}\n\
|
|
||||||
pop {r1}\n\
|
|
||||||
bx r1\n\
|
|
||||||
.pool");
|
|
||||||
}
|
}
|
||||||
#endif // NONMATCHING
|
|
||||||
|
|
||||||
void GenerateTrainerHillFloorLayout(u16 *mapArg)
|
void GenerateTrainerHillFloorLayout(u16 *mapArg)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user