Merge pull request #566 from hatal175/site2

This commit is contained in:
notyourav
2022-08-23 10:15:06 -07:00
committed by GitHub
5 changed files with 91 additions and 280 deletions
-72
View File
@@ -1,72 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r4, r1, #0
adds r6, r3, #0
ldr r7, _0801E6C4 @ =gUnk_02018EE0
cmp r4, #0
bge _0801E65E
cmp r6, #0
blt _0801E6C2
_0801E65E:
cmp r4, #0x9f
ble _0801E666
cmp r6, #0x9f
bgt _0801E6C2
_0801E666:
cmp r4, r6
ble _0801E676
adds r1, r4, #0
adds r4, r6, #0
adds r6, r1, #0
adds r1, r5, #0
adds r5, r2, #0
adds r2, r1, #0
_0801E676:
cmp r4, r6
beq _0801E6C2
subs r0, r2, r5
lsls r0, r0, #0x10
subs r1, r6, r4
bl Div
adds r3, r0, #0
cmp r4, #0
bge _0801E694
rsbs r0, r4, #0
muls r0, r3, r0
asrs r0, r0, #0x10
adds r5, r5, r0
movs r4, #0
_0801E694:
cmp r6, #0x9f
ble _0801E69A
movs r6, #0x9f
_0801E69A:
lsls r2, r5, #0x10
lsls r0, r4, #1
adds r0, r0, r4
ldr r1, [sp, #0x14]
adds r0, r0, r1
lsls r0, r0, #2
adds r7, r0, r7
_0801E6A8:
cmp r5, #0
bge _0801E6AE
movs r5, #0
_0801E6AE:
cmp r5, #0xf0
ble _0801E6B4
movs r5, #0xf0
_0801E6B4:
str r5, [r7]
adds r2, r2, r3
asrs r5, r2, #0x10
adds r4, #1
adds r7, #0xc
cmp r4, r6
ble _0801E6A8
_0801E6C2:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801E6C4: .4byte gUnk_02018EE0
.syntax divided
@@ -1,204 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
ldr r2, _0807A5F8 @ =gPlayerState
ldrb r3, [r2, #2]
movs r4, #0x80
adds r0, r4, #0
ands r0, r3
cmp r0, #0
beq _0807A5D2
b _0807A736
_0807A5D2:
ldr r1, [r2, #0x30]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0807A5DE
b _0807A736
_0807A5DE:
adds r0, r2, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _0807A5EA
b _0807A736
_0807A5EA:
adds r0, r1, #0
ands r0, r4
cmp r0, #0
beq _0807A600
ldr r7, _0807A5FC @ =gUnk_0800833C
b _0807A63A
.align 2, 0
_0807A5F8: .4byte gPlayerState
_0807A5FC: .4byte gUnk_0800833C
_0807A600:
movs r0, #0x80
lsls r0, r0, #0x11
ands r1, r0
cmp r1, #0
bne _0807A60E
cmp r3, #0
beq _0807A618
_0807A60E:
ldr r7, _0807A614 @ =gUnk_0800845C
b _0807A63A
.align 2, 0
_0807A614: .4byte gUnk_0800845C
_0807A618:
ldrb r0, [r2, #5]
cmp r0, #0
bne _0807A624
ldrb r0, [r2, #0x1c]
cmp r0, #0
beq _0807A62C
_0807A624:
ldr r7, _0807A628 @ =gUnk_080084BC
b _0807A63A
.align 2, 0
_0807A628: .4byte gUnk_080084BC
_0807A62C:
adds r0, r2, #0
adds r0, #0xaa
ldrb r0, [r0]
ldr r7, _0807A740 @ =gUnk_080082DC
cmp r0, #0
beq _0807A63A
ldr r7, _0807A744 @ =gUnk_0800851C
_0807A63A:
mov r0, sb
cmp r0, #0
beq _0807A6B8
cmp r0, #0x10
beq _0807A6B8
ldr r6, _0807A748 @ =gPlayerEntity
ldr r2, [r6, #0x48]
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldrb r3, [r2, #2]
adds r0, r0, r3
movs r1, #0
ldrsb r1, [r2, r1]
adds r0, r0, r1
ldr r1, _0807A74C @ =gRoomControls
mov r8, r1
ldrh r1, [r1, #6]
subs r5, r0, r1
movs r3, #0x32
ldrsh r0, [r6, r3]
movs r1, #1
ldrsb r1, [r2, r1]
adds r0, r0, r1
mov r2, r8
ldrh r1, [r2, #8]
subs r4, r0, r1
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A688
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #1
bl sub_0807A750
_0807A688:
movs r3, #0x2e
ldrsh r1, [r6, r3]
ldr r2, [r6, #0x48]
ldrb r0, [r2, #2]
subs r1, r1, r0
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov r2, r8
ldrh r0, [r2, #6]
subs r5, r1, r0
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A6B8
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #3
bl sub_0807A750
_0807A6B8:
mov r3, sb
cmp r3, #8
beq _0807A736
cmp r3, #0x18
beq _0807A736
ldr r6, _0807A748 @ =gPlayerEntity
movs r0, #0x2e
ldrsh r1, [r6, r0]
ldr r2, [r6, #0x48]
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
ldr r3, _0807A74C @ =gRoomControls
mov r8, r3
ldrh r0, [r3, #6]
subs r5, r1, r0
movs r1, #0x32
ldrsh r0, [r6, r1]
ldrb r3, [r2, #5]
adds r0, r0, r3
movs r1, #1
ldrsb r1, [r2, r1]
adds r0, r0, r1
mov r2, r8
ldrh r1, [r2, #8]
subs r4, r0, r1
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A706
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #2
bl sub_0807A750
_0807A706:
movs r3, #0x32
ldrsh r1, [r6, r3]
ldr r2, [r6, #0x48]
ldrb r0, [r2, #5]
subs r1, r1, r0
movs r0, #1
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov r2, r8
ldrh r0, [r2, #8]
subs r4, r1, r0
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A736
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #0
bl sub_0807A750
_0807A736:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807A740: .4byte gUnk_080082DC
_0807A744: .4byte gUnk_0800851C
_0807A748: .4byte gPlayerEntity
_0807A74C: .4byte gRoomControls
.syntax divided
+1 -1
View File
@@ -30,7 +30,7 @@ extern void sub_08004596(struct Entity_*, u32);
extern u32 sub_080045B4(struct Entity_*, u32, u32);
extern u32 CalculateDirectionTo(u32, u32, u32, u32);
extern u32 sub_080045DA(s32, s32);
extern u32 sub_080086B4(u32, u32, u8*);
extern u32 sub_080086B4(u32, u32, const u8*);
extern u32 ResolveCollisionLayer(struct Entity_*);
extern void sub_0800417E(struct Entity_*, u32);
extern u32 sub_0800442E(struct Entity_*);
+37 -1
View File
@@ -701,7 +701,43 @@ ASM_FUNC("asm/non_matching/common/sub_0801E31C.inc", void sub_0801E31C(u32 a1, u
ASM_FUNC("asm/non_matching/common/sub_0801E49C.inc", void sub_0801E49C(u32 a1, u32 a2, u32 a3, u32 a4));
ASM_FUNC("asm/non_matching/common/sub_0801E64C.inc", void sub_0801E64C(u32 a1, u32 a2, u32 a3, u32 a4, u32 a5));
void sub_0801E64C(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5) {
s32 sVar1;
s32* ptr = (s32*)gUnk_02018EE0;
register s32 tmp asm("r1");
if ((0 <= param_2 || 0 <= param_4) && (param_2 < 0xa0 || (param_4 < 0xa0))) {
if (param_2 > param_4) {
SWAP(param_2, param_4, tmp);
SWAP(param_1, param_3, tmp);
}
if (param_2 != param_4) {
sVar1 = Div((param_3 - param_1) * 0x10000, param_4 - param_2);
if (param_2 < 0) {
param_1 += (sVar1 * -param_2) >> 0x10;
param_2 = 0;
}
if (0x9f < param_4) {
param_4 = 0x9f;
}
param_3 = param_1 << 0x10;
ptr += param_2 * 3 + param_5;
do {
if (param_1 < 0) {
param_1 = 0;
}
if (0xf0 < param_1) {
param_1 = 0xf0;
}
*ptr = param_1;
param_3 += sVar1;
param_1 = param_3 >> 0x10;
param_2++;
ptr += 3;
} while (param_2 <= param_4);
}
}
}
void sub_0801E6C8(u32 param_1) {
u32 tmp;
+53 -2
View File
@@ -33,6 +33,10 @@ extern u8 gMapData;
extern const u8 gUnk_020176E0[];
extern const ScreenTransitionData gUnk_0813AD88[];
extern const s8* gUnk_0811C0E8[];
extern const u8 gUnk_0800851C[];
extern const u8 gUnk_080084BC[];
extern const u8 gUnk_0800845C[];
extern const u8 gUnk_0800833C[];
bool32 IsAbleToUseItem(PlayerEntity*);
bool32 IsPreventedFromUsingItem();
@@ -50,6 +54,7 @@ u32 sub_08079FD4(Entity*, u32);
void LoadRoomGfx(void);
SurfaceType GetSurfaceCalcType(Entity*, s32, s32);
void sub_0807AAF8(Entity*, u32);
void sub_0807A750(u32, u32, const u8*, u32);
extern ItemDefinition gItemDefinitions[];
extern void (*const gUnk_0811C27C[])(Entity*);
@@ -2086,9 +2091,55 @@ u32 GetPlayerTilePos(void) {
}
}
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A5B8.inc", void sub_0807A5B8(u32 a))
void sub_0807A5B8(u32 direction) {
u32 uVar2;
u32 uVar3;
const u8* pbVar4;
void sub_0807A750(u32 param_1, u32 param_2, u8* param_3, u32 param_4) {
if ((((gPlayerState.jump_status & 0x80) == 0) && ((gPlayerState.flags & PL_HIDDEN) == 0)) &&
(gPlayerState.swim_state == 0)) {
if ((gPlayerState.flags & PL_MINISH) != 0) {
pbVar4 = gUnk_0800833C;
} else if (((gPlayerState.flags & PL_PARACHUTE) != 0) || gPlayerState.jump_status != 0) {
pbVar4 = gUnk_0800845C;
} else if (gPlayerState.heldObject != 0 || gPlayerState.field_0x1c != 0) {
pbVar4 = gUnk_080084BC;
} else if (gPlayerState.attachedBeetleCount != 0) {
pbVar4 = gUnk_0800851C;
} else {
pbVar4 = gUnk_080082DC;
}
if (direction != DirectionNorth && direction != DirectionSouth) {
uVar3 = (gPlayerEntity.x.HALF.HI + (gPlayerEntity.hitbox)->unk2[0] + (gPlayerEntity.hitbox)->offset_x) -
gRoomControls.origin_x;
uVar2 = (gPlayerEntity.y.HALF.HI + (gPlayerEntity.hitbox)->offset_y) - gRoomControls.origin_y;
if (sub_080086B4(uVar3, uVar2, pbVar4) != 0) {
sub_0807A750(uVar3, uVar2, pbVar4, 1);
}
uVar3 = ((gPlayerEntity.x.HALF.HI - (gPlayerEntity.hitbox)->unk2[0]) + (gPlayerEntity.hitbox)->offset_x) -
gRoomControls.origin_x;
if (sub_080086B4(uVar3, uVar2, pbVar4) != 0) {
sub_0807A750(uVar3, uVar2, pbVar4, 3);
}
}
if (direction != DirectionEast && direction != DirectionWest) {
uVar3 = (gPlayerEntity.x.HALF.HI + (gPlayerEntity.hitbox)->offset_x) - gRoomControls.origin_x;
uVar2 = (gPlayerEntity.y.HALF.HI + (gPlayerEntity.hitbox)->unk2[3] + (gPlayerEntity.hitbox)->offset_y) -
gRoomControls.origin_y;
if (sub_080086B4(uVar3, uVar2, pbVar4) != 0) {
sub_0807A750(uVar3, uVar2, pbVar4, 2);
}
uVar2 = ((gPlayerEntity.y.HALF.HI - (gPlayerEntity.hitbox)->unk2[3]) + (gPlayerEntity.hitbox)->offset_y) -
gRoomControls.origin_y;
if (sub_080086B4(uVar3, uVar2, pbVar4) != 0) {
sub_0807A750(uVar3, uVar2, pbVar4, 0);
}
}
}
}
void sub_0807A750(u32 param_1, u32 param_2, const u8* param_3, u32 param_4) {
u32 uVar2;
u16* ptr;
u32 uVar5;