mirror of
https://github.com/zeldaret/tmc
synced 2026-08-08 18:43:52 -04:00
Merge pull request #525 from hatal175/various9
This commit is contained in:
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user