summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-10-08 21:29:37 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-10-08 21:29:37 -0400
commita6b91869b37c063e5cc94dedbd4a05d709393528 (patch)
tree57631a11f38043cef0d86be8b3032fe04cb5ef26
parent9e51b18b9fdc40cb12d6523a3e43058358f91cae (diff)
through sub_810CF54
-rw-r--r--asm/vs_seeker.s170
-rw-r--r--src/vs_seeker.c74
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;
+ }
+}