diff --git a/asm/non_matching/postman/sub_08060700.inc b/asm/non_matching/postman/sub_08060700.inc deleted file mode 100644 index 326e221b..00000000 --- a/asm/non_matching/postman/sub_08060700.inc +++ /dev/null @@ -1,51 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - push {r4, r5, lr} - ldr r3, _0806074C @ =gUnk_0810A918 - adds r2, r0, #0 - adds r2, #0x68 - ldrb r2, [r2] - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - lsls r2, r2, #2 - adds r2, r2, r3 - ldr r2, [r2] - adds r3, r0, #0 - adds r3, #0x69 - ldrb r3, [r3] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - adds r2, r2, r3 - movs r3, #0 - ldrsb r3, [r2, r3] - lsls r3, r3, #2 - ldr r2, _08060750 @ =gUnk_0810A66C - adds r3, r3, r2 - ldr r4, _08060754 @ =gRoomControls - movs r5, #0 - ldrsh r2, [r3, r5] - ldrh r5, [r4, #6] - adds r2, r2, r5 - movs r5, #2 - ldrsh r3, [r3, r5] - ldrh r4, [r4, #8] - adds r3, r3, r4 - bl sub_0807DEDC - ldr r2, _08060758 @ =gUnk_02033280 - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] - pop {r4, r5, pc} - .align 2, 0 -_0806074C: .4byte gUnk_0810A918 -_08060750: .4byte gUnk_0810A66C -_08060754: .4byte gRoomControls -_08060758: .4byte gUnk_02033280 - .syntax divided \ No newline at end of file diff --git a/src/npc/postman.c b/src/npc/postman.c index d920cba8..c26dc457 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -4,6 +4,7 @@ #include "npc.h" #include "textbox.h" #include "link.h" +#include "room.h" #include "structures.h" typedef struct { @@ -34,10 +35,16 @@ extern void sub_0800451C(Entity*); extern void sub_08078784(Entity*, u32); extern void sub_0807DEDC(Entity*, u32, u32, u32); +typedef struct { + s16 x; + s16 y; +} Coords16; + +extern Coords16 gUnk_0810A66C[]; +extern s8* gUnk_0810A918[]; + extern void (*const gUnk_0810AA24[])(Entity*); extern u32 gUnk_0810AA30[]; -extern u32** gUnk_0810A66C; -extern u32 gUnk_0810A918[]; extern struct_02033280 gUnk_02033280; void Postman(Entity* this) { @@ -208,21 +215,18 @@ void sub_080606D8(Entity* this) ShowNPCDialogue(this, &gUnk_0810AA30[iVar1 * 2]); } -#if 0 -void sub_08060700(Entity *arg0, u32 arg1) +void sub_08060700(Entity *entity, u32 arg1) { - sub_0807DEDC(arg0,arg1, - gUnk_0810A918[gUnk_0810A66C[arg0->field_0x68.HALF.HI][arg0->field_0x68.HALF.LO] * 4 + gRoomControls.roomOriginX], - gUnk_0810A918[gUnk_0810A66C[arg0->field_0x68.HALF.HI][arg0->field_0x68.HALF.LO] * 4 + gRoomControls.roomOriginY + 2]); - gUnk_02033280.unk |= 1; -} -#endif -NAKED void sub_08060700(Entity *arg0, u32 arg1) { - asm(".include \"asm/non_matching/postman/sub_08060700.inc\""); + 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); + gUnk_02033280.unk |= 1; } void sub_0806075C(Entity *this) { - this->field_0x68.HALF.LO = 0xb; - this->field_0x68.HALF.HI = 0xff; -} \ No newline at end of file + this->field_0x68.HALF.LO = 0xb; + this->field_0x68.HALF.HI = 0xff; +}