diff --git a/asm/non_matching/bigGoron/sub_0806D164.inc b/asm/non_matching/bigGoron/sub_0806D164.inc deleted file mode 100644 index 118f34fe..00000000 --- a/asm/non_matching/bigGoron/sub_0806D164.inc +++ /dev/null @@ -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 diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index cd3e1cae..fde93fb5 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -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) {