diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-10-08 21:29:37 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-10-08 21:29:37 -0400 |
commit | a6b91869b37c063e5cc94dedbd4a05d709393528 (patch) | |
tree | 57631a11f38043cef0d86be8b3032fe04cb5ef26 | |
parent | 9e51b18b9fdc40cb12d6523a3e43058358f91cae (diff) |
through sub_810CF54
-rw-r--r-- | asm/vs_seeker.s | 170 | ||||
-rw-r--r-- | src/vs_seeker.c | 74 |
2 files changed, 66 insertions, 178 deletions
diff --git a/asm/vs_seeker.s b/asm/vs_seeker.s index 08b48e36e..b1fd5a5d7 100644 --- a/asm/vs_seeker.s +++ b/asm/vs_seeker.s @@ -5,176 +5,6 @@ .text - thumb_func_start sub_810CE64 -sub_810CE64: @ 810CE64 - push {r4,r5,lr} - sub sp, 0x4 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r5, _0810CEA4 @ =gUnknown_845318C - adds r0, r5, 0 - mov r2, sp - bl sub_810D164 - mov r4, sp - adds r4, 0x1 - strb r0, [r4] - ldrb r0, [r4] - cmp r0, 0 - beq _0810CEA8 - mov r0, sp - ldrb r0, [r0] - lsls r0, 4 - adds r0, r5 - adds r1, r4, 0 - bl sub_810CCA0 - ldrb r1, [r4] - lsls r1, 1 - mov r0, sp - ldrb r0, [r0] - lsls r0, 4 - adds r1, r0 - adds r1, r5 - ldrh r0, [r1] - b _0810CEAA - .align 2, 0 -_0810CEA4: .4byte gUnknown_845318C -_0810CEA8: - movs r0, 0 -_0810CEAA: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_810CE64 - - thumb_func_start sub_810CEB4 -sub_810CEB4: @ 810CEB4 - push {lr} - ldr r0, _0810CEC8 @ =gUnknown_845318C - ldr r1, _0810CECC @ =gTrainerBattleOpponent_A - ldrh r1, [r1] - bl sub_810CED0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0810CEC8: .4byte gUnknown_845318C -_0810CECC: .4byte gTrainerBattleOpponent_A - thumb_func_end sub_810CEB4 - - thumb_func_start sub_810CED0 -sub_810CED0: @ 810CED0 - push {lr} - lsls r1, 16 - lsrs r1, 16 - bl sub_810CE10 - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0810CEFC - cmp r1, 0xDC - bhi _0810CEFC - ldr r0, _0810CEF8 @ =gUnknown_20370D2 - ldrh r0, [r0] - bl sub_810D0A8 - cmp r0, 0 - beq _0810CEFC - movs r0, 0x1 - b _0810CEFE - .align 2, 0 -_0810CEF8: .4byte gUnknown_20370D2 -_0810CEFC: - movs r0, 0 -_0810CEFE: - pop {r1} - bx r1 - thumb_func_end sub_810CED0 - - thumb_func_start sub_810CF04 -sub_810CF04: @ 810CF04 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 3 - adds r0, r3 - lsls r0, 2 - ldr r1, _0810CF40 @ =gUnknown_2036E38 - adds r1, r0, r1 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _0810CF4C - ldr r0, _0810CF44 @ =gMapHeader - ldr r0, [r0, 0x4] - ldrb r0, [r0] - ldrb r2, [r1, 0x8] - cmp r0, r2 - bcc _0810CF4C - ldr r2, _0810CF48 @ =gSprites - ldrb r1, [r1, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2E - ldrsh r0, [r0, r1] - cmp r0, r3 - bne _0810CF4C - movs r0, 0x1 - b _0810CF4E - .align 2, 0 -_0810CF40: .4byte gUnknown_2036E38 -_0810CF44: .4byte gMapHeader -_0810CF48: .4byte gSprites -_0810CF4C: - movs r0, 0 -_0810CF4E: - pop {r1} - bx r1 - thumb_func_end sub_810CF04 - - thumb_func_start sub_810CF54 -sub_810CF54: @ 810CF54 - push {lr} - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 16 - adds r0, r1, 0 - cmp r1, 0x1 - beq _0810CF8A - cmp r1, 0x1 - bgt _0810CF74 - cmp r1, 0 - beq _0810CF7E - b _0810CF8A -_0810CF74: - cmp r0, 0x2 - beq _0810CF82 - cmp r0, 0x3 - beq _0810CF86 - b _0810CF8A -_0810CF7E: - movs r0, 0x7 - b _0810CF8C -_0810CF82: - movs r0, 0x9 - b _0810CF8C -_0810CF86: - movs r0, 0xA - b _0810CF8C -_0810CF8A: - movs r0, 0x8 -_0810CF8C: - pop {r1} - bx r1 - thumb_func_end sub_810CF54 - thumb_func_start sub_810CF90 sub_810CF90: @ 810CF90 push {lr} diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 92798684d..bc23098a9 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -41,8 +41,10 @@ bool8 sub_810C96C(void); u8 sub_810C9A8(const struct UnkStruct_845318C *); u8 sub_810CD14(const u16 *, u8); u8 sub_810CD80(const struct UnkStruct_845318C *, u16); -bool32 sub_810D0A8(u16); u8 sub_810CDB4(const struct UnkStruct_845318C *, u16); +int sub_810CE10(const struct UnkStruct_845318C * a0, u16 a1); +bool8 sub_810CED0(const struct UnkStruct_845318C *, u16); +bool32 sub_810D0A8(u16); int sub_810D084(const struct UnkStruct_845318C *, u16); void sub_810D304(void); void sub_810C604(void); @@ -50,12 +52,11 @@ bool8 sub_810D0FC(struct VsSeekerSubstruct *); u16 sub_810D074(const u8 *); u8 sub_810D1CC(void); void sub_810D24C(struct VsSeekerSubstruct *, const u8 *); -int sub_810CE10(const struct UnkStruct_845318C *, u16); bool8 sub_810D164(const void *, u16, u8 *); u8 sub_810D280(int, u16); u8 sub_810CF90(u8); void sub_810C640(void); -void sub_810CF54(struct MapObjectTemplate *); +u8 sub_810CF54(struct MapObjectTemplate *); void sub_805FE7C(struct MapObject *, u8); // rodata @@ -754,23 +755,23 @@ void sub_810CCA0(const u16 * a0, u8 * a1) case 0: break; case 1: - if (!FlagGet(0x292)) + if (!FlagGet(FLAG_0x292)) *a1 = sub_810CD14(a0, *a1); break; case 2: - if (!FlagGet(0x896)) + if (!FlagGet(FLAG_SYS_NATIONAL_DEX)) *a1 = sub_810CD14(a0, *a1); break; case 3: - if (!FlagGet(0x897)) + if (!FlagGet(FLAG_SYS_CAVE_SHIP)) *a1 = sub_810CD14(a0, *a1); break; case 4: - if (!FlagGet(0x82c)) + if (!FlagGet(FLAG_TRAINER_FLAG_START + 0x32c)) *a1 = sub_810CD14(a0, *a1); break; case 5: - if (!FlagGet(0x844)) + if (!FlagGet(FLAG_TRAINER_FLAG_START + 0x344)) *a1 = sub_810CD14(a0, *a1); break; } @@ -849,3 +850,60 @@ int sub_810CE10(const struct UnkStruct_845318C * a0, u16 a1) return -1; } + +int sub_810CE64(u16 a0) +{ + u8 sp0; + u8 sp1; + sp1 = sub_810D164(gUnknown_845318C, a0, &sp0); + if (!sp1) + return 0; + sub_810CCA0(gUnknown_845318C[sp0].unk_0, &sp1); + return gUnknown_845318C[sp0].unk_0[sp1]; +} + +u8 sub_810CEB4(void) +{ + return sub_810CED0(gUnknown_845318C, gTrainerBattleOpponent_A); +} + +bool8 sub_810CED0(const struct UnkStruct_845318C * a0, u16 a1) +{ + int r1 = sub_810CE10(a0, a1); + + if (r1 == -1) + return FALSE; + if ((u32)r1 >= 0xdd) + return FALSE; + if (!sub_810D0A8(gUnknown_20370D2)) + return FALSE; + return TRUE; +} + +bool8 sub_810CF04(u8 a0) +{ + struct MapObject *r1 = &gUnknown_2036E38[a0]; + + if (r1->active && gMapHeader.events->mapObjectCount >= r1->localId && gSprites[r1->spriteId].data[0] == a0) + return TRUE; + return FALSE; +} + +u8 sub_810CF54(struct MapObjectTemplate * unused) +{ + u16 r1 = Random() % 4; + + switch (r1) + { + case 0: + return 7; + case 1: + return 8; + case 2: + return 9; + case 3: + return 10; + default: + return 8; + } +} |