Merge pull request #525 from hatal175/various9

This commit is contained in:
notyourav
2022-07-05 19:25:10 -07:00
committed by GitHub
6 changed files with 105 additions and 308 deletions
@@ -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
@@ -1,150 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080ACDE8
ldr r2, _080ACDE0 @ =gPlayerEntity
ldr r1, _080ACDE4 @ =gUnk_08126EE4
ldrb r0, [r4, #0x14]
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r3, [r2, #0x2e]
adds r0, r0, r3
strh r0, [r4, #0x2e]
ldrb r0, [r4, #0x14]
adds r0, #1
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r2, [r2, #0x32]
adds r0, r0, r2
b _080ACEB4
.align 2, 0
_080ACDE0: .4byte gPlayerEntity
_080ACDE4: .4byte gUnk_08126EE4
_080ACDE8:
ldrb r2, [r4, #0x14]
movs r0, #2
ands r0, r2
cmp r0, #0
beq _080ACE48
ldr r0, [r4, #0x50]
ldrh r1, [r0, #0x32]
subs r1, #3
strh r1, [r4, #0x32]
movs r1, #4
ands r1, r2
adds r3, r0, #0
cmp r1, #0
beq _080ACE20
movs r0, #0x2e
ldrsh r7, [r3, r0]
movs r0, #0x2e
ldrsh r6, [r4, r0]
ldr r1, _080ACE1C @ =gUnk_0812AAE8
ldrb r2, [r4, #0xa]
adds r0, r2, r1
ldrb r0, [r0]
rsbs r5, r0, #0
adds r0, r1, #0
b _080ACE30
.align 2, 0
_080ACE1C: .4byte gUnk_0812AAE8
_080ACE20:
movs r0, #0x2e
ldrsh r6, [r3, r0]
movs r0, #0x2e
ldrsh r7, [r4, r0]
ldr r0, _080ACE44 @ =gUnk_0812AAE8
ldrb r2, [r4, #0xa]
adds r1, r2, r0
ldrb r5, [r1]
_080ACE30:
subs r1, r7, r6
str r1, [r4, #0x78]
adds r0, r2, r0
ldrb r0, [r0]
cmp r0, r1
bhi _080ACE90
ldrh r0, [r3, #0x2e]
adds r0, r0, r5
strh r0, [r4, #0x2e]
b _080ACEB6
.align 2, 0
_080ACE44: .4byte gUnk_0812AAE8
_080ACE48:
ldr r1, [r4, #0x50]
ldrh r0, [r1, #0x2e]
strh r0, [r4, #0x2e]
movs r0, #4
ands r0, r2
adds r3, r1, #0
cmp r0, #0
beq _080ACE70
movs r0, #0x32
ldrsh r6, [r3, r0]
movs r0, #0x32
ldrsh r7, [r4, r0]
ldr r0, _080ACE6C @ =gUnk_0812AAE8
ldrb r2, [r4, #0xa]
adds r1, r2, r0
ldrb r5, [r1]
b _080ACE84
.align 2, 0
_080ACE6C: .4byte gUnk_0812AAE8
_080ACE70:
movs r0, #0x32
ldrsh r7, [r3, r0]
movs r0, #0x32
ldrsh r6, [r4, r0]
ldr r1, _080ACEAC @ =gUnk_0812AAE8
ldrb r2, [r4, #0xa]
adds r0, r2, r1
ldrb r0, [r0]
rsbs r5, r0, #0
adds r0, r1, #0
_080ACE84:
subs r1, r7, r6
str r1, [r4, #0x78]
adds r0, r2, r0
ldrb r0, [r0]
cmp r0, r1
bls _080ACEB0
_080ACE90:
subs r0, r0, r1
lsls r1, r0, #8
strh r1, [r4, #0x24]
lsls r0, r0, #0x18
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #2
cmp r0, r1
ble _080ACEA4
strh r1, [r4, #0x24]
_080ACEA4:
adds r0, r4, #0
bl ProcessMovement1
b _080ACEB6
.align 2, 0
_080ACEAC: .4byte gUnk_0812AAE8
_080ACEB0:
ldrh r0, [r3, #0x32]
adds r0, r0, r5
_080ACEB4:
strh r0, [r4, #0x32]
_080ACEB6:
ldr r0, _080ACEC8 @ =gPlayerEntity
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
movs r0, #0
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080ACEC8: .4byte gPlayerEntity
.syntax divided
@@ -1,103 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r6, _0807A518 @ =gPlayerEntity
ldrb r0, [r6, #0x14]
lsrs r0, r0, #1
cmp r0, #1
beq _0807A574
cmp r0, #1
bgt _0807A51C
cmp r0, #0
beq _0807A526
b _0807A5B4
.align 2, 0
_0807A518: .4byte gPlayerEntity
_0807A51C:
cmp r0, #2
beq _0807A554
cmp r0, #3
beq _0807A580
b _0807A5B4
_0807A526:
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldr r5, _0807A550 @ =gRoomControls
ldrh r1, [r5, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r4, #0x3f
ands r0, r4
movs r2, #0x32
ldrsh r1, [r6, r2]
ldr r3, [r6, #0x48]
ldrb r2, [r3, #5]
subs r1, r1, r2
movs r2, #1
ldrsb r2, [r3, r2]
adds r1, r1, r2
ldrh r2, [r5, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r4
b _0807A5AA
.align 2, 0
_0807A550: .4byte gRoomControls
_0807A554:
movs r5, #0x2e
ldrsh r0, [r6, r5]
ldr r4, _0807A570 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
ldr r2, [r6, #0x48]
movs r5, #0x32
ldrsh r1, [r6, r5]
ldrb r5, [r2, #5]
adds r1, r1, r5
b _0807A59A
.align 2, 0
_0807A570: .4byte gRoomControls
_0807A574:
ldr r2, [r6, #0x48]
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldrb r5, [r2, #2]
adds r0, r0, r5
b _0807A58A
_0807A580:
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldr r2, [r6, #0x48]
ldrb r1, [r2, #2]
subs r0, r0, r1
_0807A58A:
ldr r4, _0807A5B0 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r6, r5]
_0807A59A:
ldrb r2, [r2, #1]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
adds r1, r1, r2
ldrh r2, [r4, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
_0807A5AA:
lsls r1, r1, #6
orrs r0, r1
b _0807A5B6
.align 2, 0
_0807A5B0: .4byte gRoomControls
_0807A5B4:
movs r0, #0
_0807A5B6:
pop {r4, r5, r6, pc}
.syntax divided
+22 -1
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) {
+66 -1
View File
@@ -41,6 +41,7 @@ extern const s8* const sOffsets[];
extern const s8 gUnk_0812AABC[];
extern const Hitbox* const sHitboxes[];
extern const u8 gUnk_0812AAE8[];
extern const s8 gUnk_08126EE4[];
// specifically, the little gusts that come out while the item is active
// type 0: stays close to jar?
@@ -149,7 +150,71 @@ static void sub_080ACC78(GustEntity* this) {
}
}
/*static*/ ASM_FUNC("asm/non_matching/playerItem10/sub_080ACDB0.inc", bool32 sub_080ACDB0(GustEntity* this))
bool32 sub_080ACDB0(GustEntity* this) {
s32 sVar2;
s32 sVar3;
Entity* pEVar4;
u32 uVar6;
u32 uVar7;
u32 tmp;
if (super->type == 0) {
super->x.HALF.HI = gPlayerEntity.x.HALF.HI + gUnk_08126EE4[super->animationState];
super->y.HALF.HI = gPlayerEntity.y.HALF.HI + gUnk_08126EE4[super->animationState + 1];
} else {
if ((super->animationState & 2) != 0) {
super->y.HALF.HI = super->parent->y.HALF.HI - 3;
tmp = super->animationState & 4;
pEVar4 = super->parent;
if ((tmp) != 0) {
sVar3 = pEVar4->x.HALF.HI;
sVar2 = super->x.HALF.HI;
uVar7 = -(u16)gUnk_0812AAE8[super->type];
} else {
sVar2 = pEVar4->x.HALF.HI;
sVar3 = super->x.HALF.HI;
uVar7 = (u16)gUnk_0812AAE8[super->type];
}
this->unk78 = (s32)sVar3 - (s32)sVar2;
uVar6 = gUnk_0812AAE8[super->type];
if (uVar6 <= this->unk78) {
super->x.HALF.HI = pEVar4->x.HALF.HI + uVar7;
} else {
super->speed = (uVar6 - this->unk78) * 0x100;
if (0x200 < (s32)((uVar6 - this->unk78) * 0x1000000) >> 0x10) {
super->speed = 0x200;
}
ProcessMovement1(super);
}
} else {
super->x.HALF.HI = super->parent->x.HALF.HI;
tmp = super->animationState & 4;
pEVar4 = super->parent;
if ((super->animationState & 4) != 0) {
sVar2 = pEVar4->y.HALF.HI;
sVar3 = super->y.HALF.HI;
uVar7 = gUnk_0812AAE8[super->type];
} else {
sVar3 = pEVar4->y.HALF.HI;
sVar2 = super->y.HALF.HI;
uVar7 = -gUnk_0812AAE8[super->type];
}
this->unk78 = sVar3 - sVar2;
uVar6 = gUnk_0812AAE8[super->type];
if (uVar6 > this->unk78) {
super->speed = (uVar6 - this->unk78) * 0x100;
if (0x200 < (s32)((uVar6 - this->unk78) * 0x1000000) >> 0x10) {
super->speed = 0x200;
}
ProcessMovement1(super);
} else {
super->y.HALF.HI = pEVar4->y.HALF.HI + uVar7;
}
}
}
super->collisionLayer = gPlayerEntity.collisionLayer;
return 0;
}
static void sub_080ACECC(GustEntity* this) {
Entity* entity;
+17 -1
View File
@@ -1830,7 +1830,23 @@ bool32 sub_0807A2B8(void) {
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A2F8.inc", u32 sub_0807A2F8(u32 a1))
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A500.inc", u32 sub_0807A500())
u32 sub_0807A500(void) {
switch (gPlayerEntity.animationState >> 1) {
case 0:
return TILE(gPlayerEntity.x.HALF.HI,
gPlayerEntity.y.HALF.HI - gPlayerEntity.hitbox->unk2[3] + gPlayerEntity.hitbox->offset_y);
case 2:
return TILE(gPlayerEntity.x.HALF.HI,
gPlayerEntity.y.HALF.HI + gPlayerEntity.hitbox->unk2[3] + gPlayerEntity.hitbox->offset_y);
case 1:
return COORD_TO_TILE_OFFSET(&gPlayerEntity, -gPlayerEntity.hitbox->unk2[0],
-gPlayerEntity.hitbox->offset_y);
case 3:
return COORD_TO_TILE_OFFSET(&gPlayerEntity, gPlayerEntity.hitbox->unk2[0], -gPlayerEntity.hitbox->offset_y);
default:
return 0;
}
}
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A5B8.inc", void sub_0807A5B8(u32 a))