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