diff options
-rw-r--r-- | asm/vs_seeker.s | 61 | ||||
-rw-r--r-- | src/vs_seeker.c | 30 |
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; +} |