diff --git a/asm/non_matching/beanstalkSubtask/sub_0801A8D0.inc b/asm/non_matching/beanstalkSubtask/sub_0801A8D0.inc deleted file mode 100644 index 2798f507..00000000 --- a/asm/non_matching/beanstalkSubtask/sub_0801A8D0.inc +++ /dev/null @@ -1,92 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r1, #0 - cmp r5, #0 - beq _0801A978 - adds r0, r5, #0 - adds r0, #0x38 - ldrb r0, [r0] - bl GetLayerByIndex - adds r6, r0, #4 - cmp r4, #0 - bne _0801A92C - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r2, _0801A91C @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r4, r0, #4 - movs r3, #0x3f - ands r4, r3 - movs r1, #0x32 - ldrsh r0, [r5, r1] - ldrh r1, [r2, #8] - adds r1, #8 - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r4, r0 - lsls r0, r4, #1 - adds r0, r0, r6 - ldrh r1, [r0] - ldr r0, _0801A920 @ =0x00004055 - cmp r1, r0 - bne _0801A924 - subs r0, r4, #1 - b _0801A97A - .align 2, 0 -_0801A91C: .4byte gRoomControls -_0801A920: .4byte 0x00004055 -_0801A924: - ldr r0, _0801A928 @ =0x00004056 - b _0801A96A - .align 2, 0 -_0801A928: .4byte 0x00004056 -_0801A92C: - movs r0, #0x2e - ldrsh r1, [r5, r0] - ldr r3, _0801A960 @ =gRoomControls - ldrh r0, [r3, #6] - adds r0, #8 - subs r1, r1, r0 - asrs r4, r1, #4 - movs r2, #0x3f - ands r4, r2 - movs r1, #0x32 - ldrsh r0, [r5, r1] - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r4, r0 - lsls r0, r4, #1 - adds r0, r0, r6 - ldrh r1, [r0] - ldr r0, _0801A964 @ =0x00004057 - cmp r1, r0 - bne _0801A968 - adds r0, r4, #0 - subs r0, #0x40 - b _0801A97A - .align 2, 0 -_0801A960: .4byte gRoomControls -_0801A964: .4byte 0x00004057 -_0801A968: - ldr r0, _0801A974 @ =0x00004058 -_0801A96A: - cmp r1, r0 - bne _0801A978 - adds r0, r4, #0 - b _0801A97A - .align 2, 0 -_0801A974: .4byte 0x00004058 -_0801A978: - ldr r0, _0801A97C @ =0x0000FFFF -_0801A97A: - pop {r4, r5, r6, pc} - .align 2, 0 -_0801A97C: .4byte 0x0000FFFF - .syntax divided diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index 334a4811..dba0ca54 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -280,36 +280,36 @@ bool32 sub_0801A4F8(void) { ASM_FUNC("asm/non_matching/beanstalkSubtask/sub_0801A570.inc", void sub_0801A570()) -NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A8D0.inc", u32 sub_0801A8D0(Entity* this, u32 param_2)) { +u32 sub_0801A8D0(Entity* this, u32 param_2) { u16* mapData; u32 tile; u32 position; - if (this != NULL) { - mapData = GetLayerByIndex(this->collisionLayer)->mapData; - if (param_2 == 0) { - position = COORD_TO_TILE_OFFSET(this, 0, 8); - tile = mapData[position]; - if (tile == 0x4055) { - return position - 1; - } - if (tile == 0x4056) { - return position; - } - } else { - position = COORD_TO_TILE_OFFSET(this, 8, 0); - tile = mapData[position]; - if (tile == 0x4057) { - return position - 0x40; - } - if (tile == 0x4058) { - return position; - } + if (this == NULL) + return 0xffff; + + mapData = GetLayerByIndex(this->collisionLayer)->mapData; + if (param_2 == 0) { + position = COORD_TO_TILE_OFFSET(this, 0, 8); + tile = mapData[position]; + if (tile == 0x4055) { + return position - 1; + } + if (tile == 0x4056) { + return position; + } + } else { + position = COORD_TO_TILE_OFFSET(this, 8, 0); + tile = mapData[position]; + if (tile == 0x4057) { + return position - 0x40; + } + if (tile == 0x4058) { + return position; } } return 0xffff; } -END_NONMATCH bool32 sub_0801A980(void) { u16 tileType;