mirror of https://github.com/zeldaret/tmc.git
Merge pull request #558 from hatal175/letMeOn
This commit is contained in:
commit
031d37c712
|
|
@ -1,46 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
lsls r1, r1, #0xc
|
|
||||||
orrs r4, r1
|
|
||||||
ldr r2, _0801AFB8 @ =gUnk_0200B240
|
|
||||||
ldr r0, _0801AFBC @ =gRoomVars
|
|
||||||
ldrh r1, [r0, #0xe]
|
|
||||||
movs r3, #0
|
|
||||||
adds r5, r2, #0
|
|
||||||
cmp r3, r1
|
|
||||||
bhs _0801AFE0
|
|
||||||
ldrh r6, [r2]
|
|
||||||
cmp r4, r6
|
|
||||||
bne _0801AFC0
|
|
||||||
subs r1, #1
|
|
||||||
strh r1, [r0, #0xe]
|
|
||||||
lsls r0, r1, #2
|
|
||||||
adds r0, r0, r2
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r2]
|
|
||||||
b _0801AFE0
|
|
||||||
.align 2, 0
|
|
||||||
_0801AFB8: .4byte gUnk_0200B240
|
|
||||||
_0801AFBC: .4byte gRoomVars
|
|
||||||
_0801AFC0:
|
|
||||||
adds r2, #4
|
|
||||||
adds r3, #1
|
|
||||||
cmp r3, r1
|
|
||||||
bhs _0801AFE0
|
|
||||||
ldrh r6, [r2]
|
|
||||||
cmp r4, r6
|
|
||||||
bne _0801AFC0
|
|
||||||
subs r1, #1
|
|
||||||
strh r1, [r0, #0xe]
|
|
||||||
adds r2, r5, #0
|
|
||||||
lsls r0, r3, #2
|
|
||||||
adds r0, r0, r2
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
str r1, [r0]
|
|
||||||
_0801AFE0:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
.syntax divided
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r5, r0, #0
|
|
||||||
adds r4, r1, #0
|
|
||||||
adds r6, r2, #0
|
|
||||||
ldr r1, _0801A31C @ =gUnk_080B4488
|
|
||||||
ldr r2, _0801A320 @ =gPlayerEntity
|
|
||||||
ldrb r0, [r2, #0x14]
|
|
||||||
lsrs r0, r0, #1
|
|
||||||
lsls r0, r0, #1
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldrh r3, [r0]
|
|
||||||
ldr r1, _0801A324 @ =gPlayerState
|
|
||||||
adds r0, r1, #0
|
|
||||||
adds r0, #0x35
|
|
||||||
ldrb r0, [r0]
|
|
||||||
ldrb r1, [r1, #0xd]
|
|
||||||
orrs r0, r1
|
|
||||||
movs r1, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0801A36C
|
|
||||||
adds r0, r2, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0801A36C
|
|
||||||
adds r0, r4, r3
|
|
||||||
lsls r0, r0, #0x10
|
|
||||||
lsrs r4, r0, #0x10
|
|
||||||
adds r0, r2, #0
|
|
||||||
adds r0, #0x38
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl GetTileType
|
|
||||||
bl sub_080B1B54
|
|
||||||
lsls r0, r0, #0x10
|
|
||||||
lsrs r0, r0, #0x10
|
|
||||||
adds r1, r0, #0
|
|
||||||
cmp r0, #0x52
|
|
||||||
beq _0801A36C
|
|
||||||
cmp r0, #0x52
|
|
||||||
bgt _0801A328
|
|
||||||
cmp r0, #0x26
|
|
||||||
blt _0801A32C
|
|
||||||
cmp r0, #0x27
|
|
||||||
ble _0801A36C
|
|
||||||
cmp r0, #0x29
|
|
||||||
beq _0801A36C
|
|
||||||
b _0801A32C
|
|
||||||
.align 2, 0
|
|
||||||
_0801A31C: .4byte gUnk_080B4488
|
|
||||||
_0801A320: .4byte gPlayerEntity
|
|
||||||
_0801A324: .4byte gPlayerState
|
|
||||||
_0801A328:
|
|
||||||
cmp r1, #0x74
|
|
||||||
beq _0801A36C
|
|
||||||
_0801A32C:
|
|
||||||
ldr r0, _0801A364 @ =0x00002004
|
|
||||||
adds r3, r5, r0
|
|
||||||
adds r0, r3, r4
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, #0x28
|
|
||||||
beq _0801A36C
|
|
||||||
movs r1, #0x3f
|
|
||||||
ands r1, r4
|
|
||||||
ldr r0, _0801A368 @ =gRoomControls
|
|
||||||
lsls r1, r1, #4
|
|
||||||
ldrh r2, [r0, #6]
|
|
||||||
adds r1, r1, r2
|
|
||||||
lsrs r2, r4, #6
|
|
||||||
lsls r2, r2, #4
|
|
||||||
ldrh r0, [r0, #8]
|
|
||||||
adds r2, r2, r0
|
|
||||||
lsls r1, r1, #0x10
|
|
||||||
asrs r1, r1, #0x10
|
|
||||||
lsls r2, r2, #0x10
|
|
||||||
asrs r2, r2, #0x10
|
|
||||||
adds r0, r3, #0
|
|
||||||
adds r3, r6, #0
|
|
||||||
bl IsTileCollision
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0801A36C
|
|
||||||
movs r0, #1
|
|
||||||
b _0801A36E
|
|
||||||
.align 2, 0
|
|
||||||
_0801A364: .4byte 0x00002004
|
|
||||||
_0801A368: .4byte gRoomControls
|
|
||||||
_0801A36C:
|
|
||||||
movs r0, #0
|
|
||||||
_0801A36E:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.syntax divided
|
|
||||||
|
|
@ -142,21 +142,15 @@ void sub_080197D4(u32* param_1) {
|
||||||
// Has ifdefs for other variants
|
// Has ifdefs for other variants
|
||||||
ASM_FUNC("asm/non_matching/beanstalkSubtask/UpdatePlayerCollision.inc", void UpdatePlayerCollision())
|
ASM_FUNC("asm/non_matching/beanstalkSubtask/UpdatePlayerCollision.inc", void UpdatePlayerCollision())
|
||||||
|
|
||||||
NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A2B0.inc",
|
bool32 sub_0801A2B0(LayerStruct* layer, u32 position, u32 collisionType) {
|
||||||
bool32 sub_0801A2B0(LayerStruct* layer, u32 position, u32 collisionType)) {
|
|
||||||
u16 uVar1;
|
u16 uVar1;
|
||||||
u32 uVar2;
|
s16 x;
|
||||||
bool32 bVar3;
|
s16 y;
|
||||||
u32 pos;
|
|
||||||
s16 temp;
|
|
||||||
s16 temp2;
|
|
||||||
u16 temp3;
|
|
||||||
u16 temp4;
|
u16 temp4;
|
||||||
u32 temp5;
|
|
||||||
|
|
||||||
uVar1 = gUnk_080B4488[gPlayerEntity.animationState >> 1];
|
uVar1 = gUnk_080B4488[gPlayerEntity.animationState >> 1];
|
||||||
if ((((gPlayerState.field_0x35 | gPlayerState.direction) & 0x80) == 0) && ((gPlayerEntity.frame & 1) != 0)) {
|
if ((((gPlayerState.field_0x35 | gPlayerState.direction) & 0x80) == 0) && ((gPlayerEntity.frame & 1) != 0)) {
|
||||||
position = (u16)(position + uVar1);
|
position = (u16)(position - (-uVar1)); // necessary for match
|
||||||
temp4 = sub_080B1B54(GetTileType(position, gPlayerEntity.collisionLayer));
|
temp4 = sub_080B1B54(GetTileType(position, gPlayerEntity.collisionLayer));
|
||||||
switch (temp4) {
|
switch (temp4) {
|
||||||
case 0x52:
|
case 0x52:
|
||||||
|
|
@ -170,9 +164,9 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A2B0.inc",
|
||||||
return FALSE;
|
return FALSE;
|
||||||
default:
|
default:
|
||||||
if ((layer->collisionData[(position)] != 0x28)) {
|
if ((layer->collisionData[(position)] != 0x28)) {
|
||||||
temp = (((position & 0x3f) * 0x10 + (u32)gRoomControls.origin_x));
|
x = (((position & 0x3f) * 0x10 + (u32)gRoomControls.origin_x));
|
||||||
temp2 = (((position >> 6) * 0x10 + (u32)gRoomControls.origin_y));
|
y = (((position >> 6) * 0x10 + (u32)gRoomControls.origin_y));
|
||||||
if ((!IsTileCollision(layer->collisionData, temp, temp2, collisionType))) {
|
if ((!IsTileCollision(layer->collisionData, x, y, collisionType))) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -181,7 +175,6 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A2B0.inc",
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
END_NONMATCH
|
|
||||||
|
|
||||||
bool32 sub_0801A370(LayerStruct* layer, u32 position) {
|
bool32 sub_0801A370(LayerStruct* layer, u32 position) {
|
||||||
LayerStruct* topLayer;
|
LayerStruct* topLayer;
|
||||||
|
|
@ -566,8 +559,40 @@ void sub_0801AF48(u32 data, u32 position, u32 layer) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/beanstalkSubtask/DeleteLoadedTileEntity.inc",
|
void DeleteLoadedTileEntity(u32 position, s32 layer) {
|
||||||
void DeleteLoadedTileEntity(u32 position, u32 layer))
|
u32 count;
|
||||||
|
struct_0200B240* ptr;
|
||||||
|
u32 positionLayer;
|
||||||
|
u32 t;
|
||||||
|
|
||||||
|
layer = layer << 12;
|
||||||
|
positionLayer = position | layer;
|
||||||
|
ptr = gUnk_0200B240;
|
||||||
|
count = gRoomVars.unk_0e;
|
||||||
|
t = 0;
|
||||||
|
|
||||||
|
if (t >= count) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (positionLayer == ptr->position) {
|
||||||
|
count--;
|
||||||
|
gRoomVars.unk_0e = count;
|
||||||
|
ptr[0] = ptr[count];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (positionLayer != ptr->position) {
|
||||||
|
ptr++;
|
||||||
|
t++;
|
||||||
|
if (t >= count) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count--;
|
||||||
|
gRoomVars.unk_0e = count;
|
||||||
|
ptr = gUnk_0200B240;
|
||||||
|
ptr[t] = ptr[count];
|
||||||
|
}
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/beanstalkSubtask/sub_0801AFE4.inc", void sub_0801AFE4(void))
|
ASM_FUNC("asm/non_matching/beanstalkSubtask/sub_0801AFE4.inc", void sub_0801AFE4(void))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue