summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex_screen.s279
-rw-r--r--src/pokedex_screen.c76
2 files changed, 73 insertions, 282 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 535caaddd..353314a39 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -5,285 +5,6 @@
.text
- thumb_func_start sub_81047B0
-sub_81047B0: @ 81047B0
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _081047C2
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_081047C2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81047B0
-
- thumb_func_start sub_81047C8
-sub_81047C8: @ 81047C8
- push {r4-r7,lr}
- sub sp, 0x18
- mov r12, r2
- ldr r2, [sp, 0x2C]
- ldr r4, [sp, 0x30]
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r3, 24
- lsrs r6, r3, 24
- lsls r2, 24
- lsrs r3, r2, 24
- lsls r4, 24
- lsrs r0, r4, 24
- cmp r0, 0x4
- bhi _08104852
- lsls r0, 2
- ldr r1, _081047F4 @ =_081047F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081047F4: .4byte _081047F8
- .align 2, 0
-_081047F8:
- .4byte _0810480C
- .4byte _0810481A
- .4byte _08104828
- .4byte _08104836
- .4byte _08104844
-_0810480C:
- add r1, sp, 0x14
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x3
- b _08104850
-_0810481A:
- add r1, sp, 0x14
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- movs r0, 0x1
- b _08104850
-_08104828:
- add r1, sp, 0x14
- movs r0, 0
- strb r0, [r1]
- movs r0, 0xF
- strb r0, [r1, 0x1]
- movs r0, 0xE
- b _08104850
-_08104836:
- add r1, sp, 0x14
- movs r0, 0
- strb r0, [r1]
- movs r0, 0xB
- strb r0, [r1, 0x1]
- movs r0, 0x1
- b _08104850
-_08104844:
- add r1, sp, 0x14
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x2
-_08104850:
- strb r0, [r1, 0x2]
-_08104852:
- negs r0, r5
- orrs r0, r5
- lsrs r0, 31
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- add r0, sp, 0x14
- str r0, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0xC]
- mov r0, r12
- str r0, [sp, 0x10]
- adds r0, r7, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl AddTextPrinterParameterized4
- add sp, 0x18
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81047C8
-
- thumb_func_start sub_8104880
-sub_8104880: @ 8104880
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r9, r0
- mov r10, r1
- adds r4, r2, 0
- ldr r6, [sp, 0x2C]
- ldr r0, [sp, 0x30]
- mov r8, r0
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r4, 16
- lsrs r4, 16
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- add r5, sp, 0x8
- adds r0, r4, 0
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5]
- add r5, sp, 0x8
- adds r0, r4, 0
- movs r1, 0x64
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5, 0x1]
- add r5, sp, 0x8
- adds r0, r4, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x2]
- add r1, sp, 0x8
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- str r6, [sp]
- mov r0, r8
- str r0, [sp, 0x4]
- mov r0, r9
- mov r1, r10
- add r2, sp, 0x8
- adds r3, r7, 0
- bl sub_81047C8
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8104880
-
- thumb_func_start sub_810491C
-sub_810491C: @ 810491C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- adds r5, r2, 0
- ldr r2, [sp, 0x30]
- ldr r4, [sp, 0x34]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r5, 16
- lsrs r5, 16
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r4, 24
- lsrs r7, r4, 24
- add r4, sp, 0x8
- adds r0, r5, 0
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4]
- add r6, sp, 0x8
- adds r0, r5, 0
- movs r1, 0x64
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r6, 0x1]
- add r5, sp, 0x8
- adds r0, r4, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x2]
- add r1, sp, 0x8
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- adds r0, r1, 0
- ldrb r0, [r0]
- cmp r0, 0xA1
- bne _081049A8
- movs r3, 0
- mov r2, sp
- adds r2, 0xA
-_0810499A:
- strb r3, [r1]
- adds r1, 0x1
- cmp r1, r2
- bgt _081049A8
- ldrb r0, [r1]
- cmp r0, 0xA1
- beq _0810499A
-_081049A8:
- mov r0, r8
- str r0, [sp]
- str r7, [sp, 0x4]
- ldr r0, [sp, 0xC]
- mov r1, r10
- add r2, sp, 0x8
- mov r3, r9
- bl sub_81047C8
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810491C
-
thumb_func_start sub_81049CC
sub_81049CC: @ 81049CC
push {lr}
diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c
index 52b38d0e2..f78701b9e 100644
--- a/src/pokedex_screen.c
+++ b/src/pokedex_screen.c
@@ -96,9 +96,9 @@ u8 sub_8104234(void);
int sub_8104284(void);
void sub_81042EC(u8 taskId);
bool32 sub_8104664(u8 a0);
-void sub_81047B0(u8 *a0);
-void sub_81047C8(u8 a0, u8 a1, const u8 *a2, u8 a3, u8 a4, u8 a5);
-void sub_810491C(u8 a0, u8 a1, u16 a2, u8 a3, u8 a4, u8 a5);
+void sub_81047B0(u8 *windowId_p);
+void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
+void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx);
void sub_8104A34(u8 windowId, u8 a1, u16 species, u8 a3, u8 y);
u16 sub_8104BBC(u8 a0, u8 a1);
void sub_8104C2C(const u8 *a0);
@@ -1594,3 +1594,73 @@ bool32 sub_8104664(u8 a0)
"\tbx r1");
}
#endif //NONMATCHING
+
+void sub_81047B0(u8 *windowId_p)
+{
+ if (*windowId_p != 0xFF)
+ {
+ RemoveWindow(*windowId_p);
+ *windowId_p = 0xFF;
+ }
+}
+
+void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx)
+{
+ u8 textColor[3];
+ switch (colorIdx)
+ {
+ case 0:
+ textColor[0] = 0;
+ textColor[1] = 1;
+ textColor[2] = 3;
+ break;
+ case 1:
+ textColor[0] = 0;
+ textColor[1] = 5;
+ textColor[2] = 1;
+ break;
+ case 2:
+ textColor[0] = 0;
+ textColor[1] = 15;
+ textColor[2] = 14;
+ break;
+ case 3:
+ textColor[0] = 0;
+ textColor[1] = 11;
+ textColor[2] = 1;
+ break;
+ case 4:
+ textColor[0] = 0;
+ textColor[1] = 1;
+ textColor[2] = 2;
+ break;
+ }
+ AddTextPrinterParameterized4(windowId, fontId, x, y, fontId == 0 ? 0 : 1, 0, textColor, -1, str);
+}
+
+void sub_8104880(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx)
+{
+ u8 buff[4];
+ buff[0] = (num / 100) + CHAR_0;
+ buff[1] = ((num %= 100) / 10) + CHAR_0;
+ buff[2] = (num % 10) + CHAR_0;
+ buff[3] = EOS;
+ sub_81047C8(windowId, fontId, buff, x, y, colorIdx);
+}
+
+void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx)
+{
+ u8 buff[4];
+ int i;
+ buff[0] = (num / 100) + CHAR_0;
+ buff[1] = ((num %= 100) / 10) + CHAR_0;
+ buff[2] = (num % 10) + CHAR_0;
+ buff[3] = EOS;
+ for (i = 0; i < 3; i++)
+ {
+ if (buff[i] != CHAR_0)
+ break;
+ buff[i] = CHAR_SPACE;
+ }
+ sub_81047C8(windowId, fontId, buff, x, y, colorIdx);
+}