summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/vs_seeker.s135
-rw-r--r--src/vs_seeker.c70
2 files changed, 68 insertions, 137 deletions
diff --git a/asm/vs_seeker.s b/asm/vs_seeker.s
index b1fd5a5d7..a842311bb 100644
--- a/asm/vs_seeker.s
+++ b/asm/vs_seeker.s
@@ -5,141 +5,6 @@
.text
- thumb_func_start sub_810CF90
-sub_810CF90: @ 810CF90
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x11
- cmp r0, 0x2D
- bhi _0810D06C
- lsls r0, 2
- ldr r1, _0810CFA8 @ =_0810CFAC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810CFA8: .4byte _0810CFAC
- .align 2, 0
-_0810CFAC:
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D06C
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D06C
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D068
- .4byte _0810D064
- .4byte _0810D06C
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D068
- .4byte _0810D068
- .4byte _0810D064
- .4byte _0810D064
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D064
- .4byte _0810D06C
- .4byte _0810D064
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D06C
- .4byte _0810D064
-_0810D064:
- movs r0, 0x4E
- b _0810D06E
-_0810D068:
- movs r0, 0x4F
- b _0810D06E
-_0810D06C:
- movs r0, 0x4D
-_0810D06E:
- pop {r1}
- bx r1
- thumb_func_end sub_810CF90
-
- thumb_func_start sub_810D074
-sub_810D074: @ 810D074
- adds r0, 0x2
- ldrb r1, [r0]
- ldrb r0, [r0, 0x1]
- lsls r0, 8
- orrs r1, r0
- adds r0, r1, 0
- bx lr
- thumb_func_end sub_810D074
-
- thumb_func_start sub_810D084
-sub_810D084: @ 810D084
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- movs r3, 0
- adds r2, r0, 0
-_0810D08E:
- ldrh r0, [r2]
- cmp r0, r1
- bne _0810D098
- adds r0, r3, 0
- b _0810D0A4
-_0810D098:
- adds r2, 0x10
- adds r3, 0x1
- cmp r3, 0xDC
- bls _0810D08E
- movs r0, 0x1
- negs r0, r0
-_0810D0A4:
- pop {r1}
- bx r1
- thumb_func_end sub_810D084
-
- thumb_func_start sub_810D0A8
-sub_810D0A8: @ 810D0A8
- push {lr}
- ldr r1, _0810D0C0 @ =gSaveBlock1Ptr
- ldr r1, [r1]
- ldr r2, _0810D0C4 @ =0x0000063a
- adds r1, r2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0810D0C8
- movs r0, 0x1
- b _0810D0CA
- .align 2, 0
-_0810D0C0: .4byte gSaveBlock1Ptr
-_0810D0C4: .4byte 0x0000063a
-_0810D0C8:
- movs r0, 0
-_0810D0CA:
- pop {r1}
- bx r1
- thumb_func_end sub_810D0A8
-
thumb_func_start sub_810D0D0
sub_810D0D0: @ 810D0D0
push {r4,lr}
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index bc23098a9..df5ea3eec 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -44,7 +44,7 @@ u8 sub_810CD80(const struct UnkStruct_845318C *, 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);
+bool32 sub_810D0A8(u32);
int sub_810D084(const struct UnkStruct_845318C *, u16);
void sub_810D304(void);
void sub_810C604(void);
@@ -883,7 +883,7 @@ bool8 sub_810CED0(const struct UnkStruct_845318C * a0, u16 a1)
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;
@@ -907,3 +907,69 @@ u8 sub_810CF54(struct MapObjectTemplate * unused)
return 8;
}
}
+
+u8 sub_810CF90(u8 a0)
+{
+ switch (a0)
+ {
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1a:
+ case 0x1c:
+ case 0x1d:
+ case 0x1e:
+ case 0x25:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2a:
+ case 0x2d:
+ case 0x2e:
+ case 0x36:
+ case 0x38:
+ case 0x3e:
+ return 0x4e;
+ case 0x24:
+ case 0x2b:
+ case 0x2c:
+ return 0x4f;
+ default:
+ return 0x4d;
+ }
+}
+
+u16 sub_810D074(const u8 *a0)
+{
+ u16 retval;
+
+ a0 += 2;
+ retval = a0[0];
+ retval |= a0[1] << 8;
+ return retval;
+}
+
+int sub_810D084(const struct UnkStruct_845318C * a0, u16 a1)
+{
+ u32 r3;
+
+ for (r3 = 0; r3 < 0xdd; r3++)
+ {
+ if (a0[r3].unk_0[0] == a1)
+ return r3;
+ }
+
+ return -1;
+}
+
+bool32 sub_810D0A8(u32 a0)
+{
+ if (!gSaveBlock1Ptr->trainerRematches[a0])
+ return FALSE;
+ return TRUE;
+}