summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-10-08 22:03:08 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-10-08 22:03:08 -0400
commitba183710e0c15a812f35db5724319d919e6dc3d5 (patch)
tree4a11027082f1ce4df0bd6171077faf7629acea68
parent88c181a6b08d0b792e1a0c55f1ac010f80373d11 (diff)
sub_810D164
-rw-r--r--asm/vs_seeker.s61
-rw-r--r--src/vs_seeker.c30
2 files changed, 29 insertions, 62 deletions
diff --git a/asm/vs_seeker.s b/asm/vs_seeker.s
index dfc23d6a6..8fe1af153 100644
--- a/asm/vs_seeker.s
+++ b/asm/vs_seeker.s
@@ -5,67 +5,6 @@
.text
- thumb_func_start sub_810D164
-sub_810D164: @ 810D164
- push {r4-r7,lr}
- lsls r1, 16
- lsrs r1, 16
- movs r4, 0
- adds r3, r0, 0
-_0810D16E:
- ldrh r0, [r3]
- cmp r0, r1
- bne _0810D1B8
- strb r4, [r2]
- movs r5, 0x1
- ldr r7, _0810D188 @ =0x0000ffff
- adds r4, r3, 0x2
- movs r6, 0
-_0810D17E:
- ldrh r0, [r4]
- cmp r0, 0
- bne _0810D18C
- lsrs r0, r6, 24
- b _0810D1C6
- .align 2, 0
-_0810D188: .4byte 0x0000ffff
-_0810D18C:
- cmp r0, r7
- beq _0810D1A2
- ldrh r0, [r4]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- bne _0810D1A2
- lsls r0, r5, 24
- lsrs r0, 24
- b _0810D1C6
-_0810D1A2:
- adds r4, 0x2
- movs r0, 0x80
- lsls r0, 17
- adds r6, r0
- adds r5, 0x1
- cmp r5, 0x5
- ble _0810D17E
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r0, 24
- b _0810D1C6
-_0810D1B8:
- adds r3, 0x10
- adds r4, 0x1
- cmp r4, 0xDC
- bls _0810D16E
- movs r0, 0
- strb r0, [r2]
- movs r0, 0
-_0810D1C6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810D164
-
thumb_func_start sub_810D1CC
sub_810D1CC: @ 810D1CC
push {r4-r7,lr}
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index 6942ed9bd..43b0191ab 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -53,7 +53,7 @@ bool8 sub_810D0FC(struct VsSeekerSubstruct *);
u16 sub_810D074(const u8 *);
u8 sub_810D1CC(void);
void sub_810D24C(struct VsSeekerSubstruct *, const u8 *);
-bool8 sub_810D164(const void *, u16, u8 *);
+u8 sub_810D164(const struct UnkStruct_845318C *, u16, u8 *);
u8 sub_810D280(int, u16);
u8 sub_810CF90(u8);
void sub_810C640(void);
@@ -1000,3 +1000,31 @@ bool8 sub_810D0FC(struct VsSeekerSubstruct * a0)
return TRUE;
return FALSE;
}
+
+u8 sub_810D164(const struct UnkStruct_845318C * a0, u16 a1, u8 * a2)
+{
+ u32 r4;
+ int r5;
+
+ for (r4 = 0; r4 < 0xdd; r4++)
+ {
+ if (a0[r4].unk_0[0] == a1)
+ {
+ *a2 = r4;
+ for (r5 = 1; r5 < 6; r5++)
+ {
+ if (a0[r4].unk_0[r5] == 0)
+ return r5 - 1;
+ if (a0[r4].unk_0[r5] == 0xffff)
+ continue;
+ if (HasTrainerAlreadyBeenFought(a0[r4].unk_0[r5]))
+ continue;
+ return r5;
+ }
+ return r5 - 1;
+ }
+ }
+
+ *a2 = 0;
+ return 0;
+}