From fa3339a8c2dc8a840d1427abf202c59b4a03d70d Mon Sep 17 00:00:00 2001 From: Henny022p Date: Mon, 15 Feb 2021 10:09:46 +0100 Subject: [PATCH] matched sub_0807DEDC --- asm/code_0807CC3C.s | 40 ---------------------------------------- src/code_0807CC3C.c | 22 +++++++++++++++++++++- src/npc/postman.c | 6 +++--- 3 files changed, 24 insertions(+), 44 deletions(-) diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s index d1d2a2af..bd7e1630 100644 --- a/asm/code_0807CC3C.s +++ b/asm/code_0807CC3C.s @@ -2135,43 +2135,3 @@ _0807DED4: adds r0, r4, #0 bl sub_080042BA pop {r4, pc} - - thumb_func_start sub_0807DEDC -sub_0807DEDC: @ 0x0807DEDC - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r6, #0 - movs r0, #8 - strb r0, [r1, #0x19] - ldr r0, [r1, #8] - movs r4, #2 - orrs r0, r4 - str r0, [r1, #8] - str r6, [r1, #0x14] - strh r2, [r1, #0x1e] - strh r3, [r1, #0x22] - movs r2, #0x1e - ldrsh r0, [r1, r2] - movs r3, #0x2e - ldrsh r2, [r5, r3] - subs r0, r0, r2 - movs r2, #0x22 - ldrsh r1, [r1, r2] - movs r3, #0x32 - ldrsh r2, [r5, r3] - subs r1, r1, r2 - bl sub_080045DA - strb r0, [r5, #0x15] - ldrb r2, [r5, #0x14] - movs r1, #0x80 - ands r1, r2 - ldr r2, _0807DF24 @ =gUnk_0811E514 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1c - adds r0, r0, r2 - ldrb r0, [r0] - orrs r1, r0 - strb r1, [r5, #0x14] - pop {r4, r5, r6, pc} - .align 2, 0 -_0807DF24: .4byte gUnk_0811E514 diff --git a/src/code_0807CC3C.c b/src/code_0807CC3C.c index 254b13f1..8d3c5892 100644 --- a/src/code_0807CC3C.c +++ b/src/code_0807CC3C.c @@ -1,9 +1,29 @@ #include "global.h" #include "structures.h" #include "functions.h" +#include "script.h" + +extern u8 gUnk_0811E514[]; void sub_0807DF38(void); -extern void sub_0801C4A0(int arg0); +extern void sub_0801C4A0(u32); + +void sub_0807DEDC(Entity* entity, ScriptExecutionContext* context, u32 arg2, u32 arg3) +{ + int temp; + s32 t0, t1; + + context->unk_19 = 8; + context->unk_08 |= 2; + context->unk_14 = 0; + context->unk_1C.HALF.HI = arg2; + context->unk_20.HALF.HI = arg3; + t0 = context->unk_1C.HALF.HI - entity->x.HALF.HI; + t1 = context->unk_20.HALF.HI - entity->y.HALF.HI; + temp = sub_080045DA(t0, t1); + entity->direction = temp; + entity->animationState = (entity->animationState & 0x80) | gUnk_0811E514[(u32)(temp <<0x18)>>0x1c]; +} void sub_0807DF28(void) { sub_0807DF38(); diff --git a/src/npc/postman.c b/src/npc/postman.c index 836bb5d5..8f387f04 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -7,6 +7,7 @@ #include "room.h" #include "structures.h" #include "save.h" +#include "script.h" extern void sub_08060528(Entity*); extern void* GetCurrentRoomProperty(u32); @@ -27,7 +28,6 @@ extern void EnqueueSFX(u32); extern void sub_080606C0(Entity*); extern void sub_0800451C(Entity*); extern void sub_08078784(Entity*, u32); -extern void sub_0807DEDC(Entity*, u32, u32, u32); typedef struct { s16 x; @@ -202,12 +202,12 @@ void sub_080606D8(Entity* this) { ShowNPCDialogue(this, &gUnk_0810AA30[index]); } -void sub_08060700(Entity* entity, u32 arg1) { +void sub_08060700(Entity* entity, ScriptExecutionContext* context) { s8* var0 = gUnk_0810A918[(s8)entity->field_0x68.HALF.LO]; Coords16* coords = &gUnk_0810A66C[var0[(s8)entity->field_0x68.HALF.HI]]; u32 x = coords->x + gRoomControls.roomOriginX; u32 y = coords->y + gRoomControls.roomOriginY; - sub_0807DEDC(entity, arg1, x, y); + sub_0807DEDC(entity, context, x, y); gUnk_02033280.unk_07 |= 1; }