From e8bf4aa16506bdd83f3e0bb60f7efa71378b6c2b Mon Sep 17 00:00:00 2001 From: theo3 Date: Mon, 31 Aug 2020 15:31:58 -0700 Subject: [PATCH] hiddenLadderDown.c --- asm/hiddenLadderDown.s | 158 ---------------------------------- linker.ld | 2 +- src/object/hiddenLadderDown.c | 44 ++++++++++ 3 files changed, 45 insertions(+), 159 deletions(-) create mode 100644 src/object/hiddenLadderDown.c diff --git a/asm/hiddenLadderDown.s b/asm/hiddenLadderDown.s index 5770ce93..9851257c 100644 --- a/asm/hiddenLadderDown.s +++ b/asm/hiddenLadderDown.s @@ -5,161 +5,3 @@ .syntax unified .text - - - thumb_func_start HiddenLadderDown -HiddenLadderDown: @ 0x08091EF4 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #1 - bhi _08091F0E - ldr r0, _08091F10 @ =gUnk_08122604 - ldrb r1, [r2, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 -_08091F0E: - pop {pc} - .align 2, 0 -_08091F10: .4byte gUnk_08122604 - - thumb_func_start sub_08091F14 -sub_08091F14: @ 0x08091F14 - push {r4, r5, lr} - adds r4, r0, #0 - movs r2, #0 - movs r0, #1 - strb r0, [r4, #0xc] - adds r3, r4, #0 - adds r3, #0x29 - ldrb r0, [r3] - movs r1, #7 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, #0 - adds r0, #0x58 - strb r2, [r0] - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _08091FEC @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r5, r4, #0 - adds r5, #0x70 - strh r1, [r5] - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _08091FEA - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #6 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - movs r0, #0xd1 - lsls r0, r0, #1 - ldrh r1, [r5] - subs r1, #0x41 - adds r4, #0x38 - ldrb r2, [r4] - bl SetTileType - ldr r0, _08091FF0 @ =0x000001A3 - ldrh r1, [r5] - subs r1, #0x40 - ldrb r2, [r4] - bl SetTileType - movs r0, #0xd2 - lsls r0, r0, #1 - ldrh r1, [r5] - subs r1, #0x3f - ldrb r2, [r4] - bl SetTileType - ldr r0, _08091FF4 @ =0x000001A5 - ldrh r1, [r5] - subs r1, #1 - ldrb r2, [r4] - bl SetTileType - movs r0, #0xd3 - lsls r0, r0, #1 - ldrh r1, [r5] - ldrb r2, [r4] - bl SetTileType - ldr r0, _08091FF8 @ =0x000001A7 - ldrh r1, [r5] - adds r1, #1 - ldrb r2, [r4] - bl SetTileType - movs r0, #0xd4 - lsls r0, r0, #1 - ldrh r1, [r5] - adds r1, #0x3f - ldrb r2, [r4] - bl SetTileType - ldr r0, _08091FFC @ =0x000001A9 - ldrh r1, [r5] - adds r1, #0x40 - ldrb r2, [r4] - bl SetTileType - movs r0, #0xd5 - lsls r0, r0, #1 - ldrh r1, [r5] - adds r1, #0x41 - ldrb r2, [r4] - bl SetTileType -_08091FEA: - pop {r4, r5, pc} - .align 2, 0 -_08091FEC: .4byte gRoomControls -_08091FF0: .4byte 0x000001A3 -_08091FF4: .4byte 0x000001A5 -_08091FF8: .4byte 0x000001A7 -_08091FFC: .4byte 0x000001A9 - - thumb_func_start sub_08092000 -sub_08092000: @ 0x08092000 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x70 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - movs r1, #0xd3 - lsls r1, r1, #1 - cmp r0, r1 - bne _08092034 - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #6 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl SetFlag -_08092034: - pop {r4, pc} - .align 2, 0 diff --git a/linker.ld b/linker.ld index a0d37ce8..4025a042 100644 --- a/linker.ld +++ b/linker.ld @@ -764,7 +764,7 @@ SECTIONS { src/object/minecart.o(.text); asm/minecart.o(.text); src/object/thoughtBubble.o(.text); - asm/hiddenLadderDown.o(.text); + src/object/hiddenLadderDown.o(.text); asm/gentariCurtains.o(.text); asm/lavaPlatform.o(.text); asm/object5A.o(.text); diff --git a/src/object/hiddenLadderDown.c b/src/object/hiddenLadderDown.c new file mode 100644 index 00000000..f878f055 --- /dev/null +++ b/src/object/hiddenLadderDown.c @@ -0,0 +1,44 @@ +#include "global.h" +#include "entity.h" +#include "functions.h" +#include "room.h" +#include "flags.h" + +extern void (*const gUnk_08122604[])(Entity*); + +void HiddenLadderDown(Entity* this) { + if (this->action < 2) { + gUnk_08122604[this->action](this); + } +} + +void sub_08091F14(Entity* this) { + u16* puVar3; + + this->action = 1; + this->spritePriority.b0 = 7; + this->animIndex = 0; + this->field_0x70.HALF.LO = COORD_TO_TILE(this); + puVar3 = &this->field_0x70.HALF.LO; + if (CheckFlags(this->field_0x86) != 0) { + this->action = 2; + this->spriteSettings.b.draw = TRUE; + SetTileType(0x1a2, *puVar3 - 0x41, this->collisionLayer); + SetTileType(0x1a3, *puVar3 - 0x40, this->collisionLayer); + SetTileType(0x1a4, *puVar3 - 0x3f, this->collisionLayer); + SetTileType(0x1a5, *puVar3 - 1, this->collisionLayer); + SetTileType(0x1a6, *puVar3, this->collisionLayer); + SetTileType(0x1a7, *puVar3 + 1, this->collisionLayer); + SetTileType(0x1a8, *puVar3 + 0x3f, this->collisionLayer); + SetTileType(0x1a9, *puVar3 + 0x40, this->collisionLayer); + SetTileType(0x1aa, *puVar3 + 0x41, this->collisionLayer); + } +} + +void sub_08092000(Entity* this) { + if (GetTileType(*(u16*)&this->field_0x70.HALF.LO, this->collisionLayer) == 0x1a6) { + this->action = 2; + this->spriteSettings.b.draw = TRUE; + SetFlag(this->field_0x86); + } +} \ No newline at end of file