summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKaz <kazbloxmc@gmail.com>2020-06-03 04:52:49 -0400
committerKaz <kazbloxmc@gmail.com>2020-06-03 04:52:49 -0400
commit7e6d3999cfa59b404de1acc01c4db27c8cc8c569 (patch)
tree10c681d53d276c70233b18119496445c99093e6a /src
parent82c18130485426e46df051ea0d7aef2f83b12b97 (diff)
sub_809E8F0 get.
Diffstat (limited to 'src')
-rw-r--r--src/debug/nakamura_debug_menu.c1
-rw-r--r--src/debug/taya_debug_window.c41
-rw-r--r--src/pokemon_summary_screen.c232
3 files changed, 75 insertions, 199 deletions
diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c
index 32ac57dc2..a56fab2b7 100644
--- a/src/debug/nakamura_debug_menu.c
+++ b/src/debug/nakamura_debug_menu.c
@@ -1266,6 +1266,7 @@ static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock)
}
}
if (pkblk[firstNonzeroFlavor] >= pkblk[lastNonzeroFlavor])
+ // Suspiciously looks like a temp could've been here.
lastNonzeroFlavor = firstNonzeroFlavor;
if (lastNonzeroFlavor == 0)
diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c
index aa3c1d993..bbb944f43 100644
--- a/src/debug/taya_debug_window.c
+++ b/src/debug/taya_debug_window.c
@@ -440,36 +440,38 @@ void debug_sub_8090C44(void)
}
#ifdef NONMATCHING
-// mayday mayday
+// haven't tested but should work
bool8 debug_sub_8090C88(void)
{
bool8 r8 = TRUE;
- if (gMain.newKeys & DPAD_LEFT && eTayaLuckyNumber.digit != 0)
- {
- eTayaLuckyNumber.digit--;
- }
- else if (gMain.newKeys & DPAD_RIGHT && eTayaLuckyNumber.digit < 4)
- {
- eTayaLuckyNumber.digit++;
- }
- else
+ do
{
+ if (gMain.newKeys & DPAD_LEFT && eTayaLuckyNumber.digit != 0)
+ {
+ eTayaLuckyNumber.digit--;
+ break;
+ }
+ if (gMain.newKeys & DPAD_RIGHT && eTayaLuckyNumber.digit < 4)
+ {
+ eTayaLuckyNumber.digit++;
+ break;
+ }
if (gMain.newAndRepeatedKeys & DPAD_UP)
{
u8 r4;
eTayaLuckyNumber.tempLuckyId = eTayaLuckyNumber.curLuckyId;
- eTayaLuckyNumber.charbuf0 = 10000;
+ eTayaLuckyNumber.digitDeltaMagnitude = 10000;
for (r4 = 0; r4 < eTayaLuckyNumber.digit; r4++)
- eTayaLuckyNumber.charbuf0 /= 10;
- eTayaLuckyNumber.tempLuckyId += eTayaLuckyNumber.charbuf0;
+ eTayaLuckyNumber.digitDeltaMagnitude /= 10;
+ eTayaLuckyNumber.tempLuckyId += eTayaLuckyNumber.digitDeltaMagnitude;
if (eTayaLuckyNumber.tempLuckyId > 0xFFFF)
eTayaLuckyNumber.tempLuckyId = 0xFFFF;
if (eTayaLuckyNumber.curLuckyId != eTayaLuckyNumber.tempLuckyId)
{
eTayaLuckyNumber.curLuckyId = eTayaLuckyNumber.tempLuckyId;
- goto check;
+ break;
}
}
if (gMain.newAndRepeatedKeys & DPAD_DOWN)
@@ -477,16 +479,16 @@ bool8 debug_sub_8090C88(void)
u8 r4;
eTayaLuckyNumber.tempLuckyId = eTayaLuckyNumber.curLuckyId;
- eTayaLuckyNumber.charbuf0 = 10000;
+ eTayaLuckyNumber.digitDeltaMagnitude = 10000;
for (r4 = 0; r4 < eTayaLuckyNumber.digit; r4++)
- eTayaLuckyNumber.charbuf0 /= 10;
- eTayaLuckyNumber.tempLuckyId -= eTayaLuckyNumber.charbuf0;
+ eTayaLuckyNumber.digitDeltaMagnitude /= 10;
+ eTayaLuckyNumber.tempLuckyId -= eTayaLuckyNumber.digitDeltaMagnitude;
if (eTayaLuckyNumber.tempLuckyId < 0)
eTayaLuckyNumber.tempLuckyId = 0;
if (eTayaLuckyNumber.curLuckyId != eTayaLuckyNumber.tempLuckyId)
{
eTayaLuckyNumber.curLuckyId = eTayaLuckyNumber.tempLuckyId;
- goto check;
+ break;
}
}
if (gMain.newKeys & B_BUTTON)
@@ -501,9 +503,8 @@ bool8 debug_sub_8090C88(void)
return TRUE;
}
r8 = FALSE;
- }
+ } while (0);
-check:
if (r8)
debug_sub_8090C44();
return FALSE;
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index ef8360681..27c3cb165 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -97,12 +97,13 @@ static void DrawPokerusSurvivorDot(struct Pokemon *);
static void sub_80A12D0(s8);
static void sub_809FAC8(struct Pokemon *);
static void SummaryScreenHandleLeftRightInput(u8, s8);
-static void sub_809E8F0();
+static void sub_809E8F0(u8 taskId, s8 direction, u8 *moveIndexPtr);
static void sub_80A1654(s8, u8);
static void sub_80A1488(s8, u8);
static void SummaryScreen_PrintPokemonInfo(struct Pokemon *);
static void SummaryScreen_PrintPokemonSkills(struct Pokemon *);
static void sub_80A1918(u8, u8);
+static void sub_80A1C30(u8 a);
static void SummaryScreen_DrawTypeIcon(u8, u8, u8, u8);
static u16 GetMonMove(struct Pokemon *, u8);
static void sub_80A04CC(u16);
@@ -1208,184 +1209,57 @@ static void sub_809E83C(u8 taskId, s8 b)
sub_80A2078(taskId);
}
-NAKED
-static void sub_809E8F0(/*u8 taskId, s8 direction, u8 *c*/)
+static void sub_809E8F0(u8 taskId, s8 direction, u8 *moveIndexPtr)
{
- asm(".syntax 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, 0x8\n\
- adds r4, r1, 0\n\
- mov r9, r2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- mov r1, r9\n\
- ldrb r6, [r1]\n\
- ldr r1, _0809E944 @ =gTasks\n\
- mov r2, r8\n\
- lsls r0, r2, 2\n\
- add r0, r8\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x8]\n\
- movs r2, 0\n\
- lsls r4, 24\n\
- asrs r4, 24\n\
- mov r10, r4\n\
- lsls r7, r0, 24\n\
-_0809E930:\n\
- lsls r0, r6, 24\n\
- asrs r0, 24\n\
- add r0, r10\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- asrs r1, r0, 24\n\
- cmp r0, r7\n\
- ble _0809E948\n\
- movs r6, 0\n\
- b _0809E94E\n\
- .align 2, 0\n\
-_0809E944: .4byte gTasks\n\
-_0809E948:\n\
- cmp r1, 0\n\
- bge _0809E94E\n\
- lsrs r6, r7, 24\n\
-_0809E94E:\n\
- lsls r4, r6, 24\n\
- lsrs r1, r4, 24\n\
- ldr r0, _0809EA10 @ =gSharedMem + 0x18010\n\
- str r2, [sp, 0x4]\n\
- bl GetMonMove\n\
- lsls r0, 16\n\
- adds r5, r4, 0\n\
- ldr r2, [sp, 0x4]\n\
- cmp r0, 0\n\
- bne _0809E97A\n\
- asrs r0, r5, 24\n\
- cmp r0, 0x4\n\
- beq _0809E97A\n\
- lsls r0, r2, 24\n\
- movs r3, 0x80\n\
- lsls r3, 17\n\
- adds r0, r3\n\
- lsrs r2, r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0x3\n\
- ble _0809E930\n\
-_0809E97A:\n\
- mov r1, r9\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x4\n\
- bne _0809E996\n\
- asrs r0, r5, 24\n\
- cmp r0, 0x4\n\
- beq _0809E996\n\
- ldr r0, _0809EA14 @ =gSharedMem + 0x18000\n\
- adds r0, 0x7C\n\
- ldrh r0, [r0]\n\
- mov r2, r8\n\
- lsls r7, r2, 2\n\
- cmp r0, 0\n\
- beq _0809E9AC\n\
-_0809E996:\n\
- ldr r2, _0809EA18 @ =gTasks\n\
- mov r3, r8\n\
- lsls r1, r3, 2\n\
- adds r0, r1, r3\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- movs r2, 0x22\n\
- ldrsh r0, [r0, r2]\n\
- adds r7, r1, 0\n\
- cmp r0, 0x1\n\
- bne _0809E9D0\n\
-_0809E9AC:\n\
- lsrs r4, r5, 24\n\
- movs r0, 0x2\n\
- adds r1, r4, 0\n\
- bl sub_80A1488\n\
- movs r0, 0x2\n\
- adds r1, r4, 0\n\
- bl sub_80A1654\n\
- ldr r1, _0809EA18 @ =gTasks\n\
- mov r3, r8\n\
- adds r0, r7, r3\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- movs r1, 0\n\
- strh r1, [r0, 0x22]\n\
- movs r0, 0\n\
- str r0, [sp]\n\
-_0809E9D0:\n\
- mov r1, r9\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x4\n\
- beq _0809E9FE\n\
- asrs r0, r5, 24\n\
- cmp r0, 0x4\n\
- bne _0809E9FE\n\
- ldr r0, _0809EA14 @ =gSharedMem + 0x18000\n\
- adds r0, 0x7C\n\
- ldrh r0, [r0]\n\
- cmp r0, 0\n\
- bne _0809E9FE\n\
- movs r4, 0x2\n\
- negs r4, r4\n\
- lsrs r5, 24\n\
- adds r0, r4, 0\n\
- adds r1, r5, 0\n\
- bl sub_80A1488\n\
- adds r0, r4, 0\n\
- adds r1, r5, 0\n\
- bl sub_80A1654\n\
-_0809E9FE:\n\
- mov r2, r9\n\
- strb r6, [r2]\n\
- ldr r0, _0809EA1C @ =gSharedMem + 0x18079\n\
- cmp r9, r0\n\
- bne _0809EA20\n\
- movs r0, 0\n\
- bl sub_80A1C30\n\
- b _0809EA26\n\
- .align 2, 0\n\
-_0809EA10: .4byte gSharedMem + 0x18010\n\
-_0809EA14: .4byte gSharedMem + 0x18000\n\
-_0809EA18: .4byte gTasks\n\
-_0809EA1C: .4byte gSharedMem + 0x18079\n\
-_0809EA20:\n\
- movs r0, 0x1\n\
- bl sub_80A1C30\n\
-_0809EA26:\n\
- ldr r3, [sp]\n\
- cmp r3, 0\n\
- beq _0809EA34\n\
- ldr r0, _0809EA4C @ =gSharedMem + 0x18010\n\
- mov r1, r9\n\
- bl sub_80A0428\n\
-_0809EA34:\n\
- mov r0, r8\n\
- bl sub_80A2078\n\
- add sp, 0x8\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\n\
- .align 2, 0\n\
-_0809EA4C: .4byte gSharedMem + 0x18010\n\
- .syntax divided\n");
+ s8 i;
+ s8 newMoveIndex;
+ s8 var;
+ bool8 bln;
+
+ bln = TRUE;
+ PlaySE(SE_SELECT);
+ newMoveIndex = *moveIndexPtr;
+ var = (s8)gTasks[taskId].data[0];
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ newMoveIndex += direction;
+ if (newMoveIndex > var)
+ newMoveIndex = 0;
+ else if (newMoveIndex < 0)
+ newMoveIndex = var;
+
+ if (GetMonMove(&pssData.loadedMon, newMoveIndex) != 0 || newMoveIndex == MAX_MON_MOVES)
+ break;
+ }
+
+ if ((*moveIndexPtr == MAX_MON_MOVES
+ && newMoveIndex != MAX_MON_MOVES
+ && pssData.moveToLearn == 0)
+ || gTasks[taskId].data[13] == 1)
+ {
+ sub_80A1488(2, newMoveIndex);
+ sub_80A1654(2, newMoveIndex);
+ gTasks[taskId].data[13] = 0;
+ bln = FALSE;
+ }
+ if (*moveIndexPtr != MAX_MON_MOVES
+ && newMoveIndex == MAX_MON_MOVES
+ && pssData.moveToLearn == 0)
+ {
+ sub_80A1488(-2, newMoveIndex);
+ sub_80A1654(-2, newMoveIndex);
+ }
+
+ *moveIndexPtr = newMoveIndex;
+ // Get rid of the 'flicker' effect(while idle) when scrolling.
+ if (moveIndexPtr == &pssData.selectedMoveIndex)
+ sub_80A1C30(0);
+ else
+ sub_80A1C30(1);
+
+ if (bln)
+ sub_80A0428(&pssData.loadedMon, moveIndexPtr);
+ sub_80A2078(taskId);
}
static void SummaryScreenHandleAButton(u8 taskId)
@@ -4758,7 +4632,7 @@ static void sub_80A1BC0(struct Sprite *sprite)
#define shared1A009 ((u8 *)(gSharedMem + 0x1A009))
-void sub_80A1C30(u8 a)
+static void sub_80A1C30(u8 a)
{
u8 r3;