Match sub_0806D164

This commit is contained in:
Tal Hayon 2022-07-04 18:15:58 +03:00
parent 51723cd2b6
commit 9d01adaa61
2 changed files with 22 additions and 53 deletions

View File

@ -1,52 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
ldr r5, _0806D1B8 @ =gRoomControls
movs r1, #0xa
ldrsh r2, [r5, r1]
movs r3, #0x2e
ldrsh r1, [r0, r3]
subs r2, r2, r1
adds r2, #0xa0
ldr r4, _0806D1BC @ =gScreen
movs r3, #0xf
adds r1, r2, #0
ands r1, r3
strh r1, [r4, #0x16]
ldrh r1, [r5, #0xc]
ldrh r0, [r0, #0x32]
subs r1, r1, r0
adds r1, #0xb0
strh r1, [r4, #0x18]
ldr r3, _0806D1C0 @ =gUnk_02006F00
ldr r0, _0806D1C4 @ =0xFFFFC000
adds r6, r3, r0
movs r5, #0x20
lsrs r2, r2, #4
lsls r2, r2, #2
adds r3, r2, r3
adds r7, r4, #0
ldr r1, _0806D1C8 @ =0x040000D4
ldr r4, _0806D1CC @ =0x80000020
movs r2, #0x80
lsls r2, r2, #1
_0806D1A0:
str r3, [r1]
str r6, [r1, #4]
str r4, [r1, #8]
ldr r0, [r1, #8]
adds r3, r3, r2
adds r6, #0x40
subs r5, #1
cmp r5, #0
bne _0806D1A0
movs r0, #1
strh r0, [r7, #0x1a]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0806D1B8: .4byte gRoomControls
_0806D1BC: .4byte gScreen
_0806D1C0: .4byte gUnk_02006F00
_0806D1C4: .4byte 0xFFFFC000
_0806D1C8: .4byte 0x040000D4
_0806D1CC: .4byte 0x80000020
.syntax divided

View File

@ -12,6 +12,7 @@ static const u16 goronSounds[] = {
};
extern u8 gMapDataTopSpecial[];
extern u8 gUnk_02006F00[];
void sub_0806D520(Entity*, u32);
void sub_0806D41C(Entity*);
@ -169,7 +170,27 @@ void sub_0806D138(unk_0806D138param_1* param_1, unk_0806D138param_2* param_2) {
}
}
ASM_FUNC("asm/non_matching/bigGoron/sub_0806D164.inc", void sub_0806D164(Entity* this))
void sub_0806D164(Entity* this) {
u8* puVar1;
u8* puVar2;
u8* ptr;
u32 xOffset;
s32 index;
xOffset = ((s32)gRoomControls.scroll_x - this->x.HALF.HI) + 0xa0;
gScreen.bg1.xOffset = (u16)xOffset & 0xf;
gScreen.bg1.yOffset = (gRoomControls.scroll_y - this->y.HALF.HI) + 0xb0;
ptr = gUnk_02006F00;
puVar1 = &ptr[0];
puVar2 = &ptr[-0x4000];
for (index = 0x20, ptr = &puVar1[(xOffset >> 4) * 4]; index != 0; index--) {
DmaSet(3, ptr, puVar2, 0x80000020);
ptr += 0x100;
puVar2 += 0x40;
}
gScreen.bg1.updated = 1;
}
void sub_0806D1D0(Entity* this) {
if (this->action == 0) {