diff --git a/asm/non_matching/playerItem11/sub_08018E68.inc b/asm/non_matching/playerItem11/sub_08018E68.inc index 6fdc554a..2eff7284 100644 --- a/asm/non_matching/playerItem11/sub_08018E68.inc +++ b/asm/non_matching/playerItem11/sub_08018E68.inc @@ -97,7 +97,7 @@ _08018F0C: adds r0, r4, #0 adds r1, r6, #0 adds r2, r5, #0 - bl sub_080B1A8C + bl GetRelativeCollisionTile cmp r0, #0x74 beq _08018F62 ldr r1, _08018F68 @ =gUnk_08003E44 diff --git a/asm/non_matching/playerItem13/sub_080AD040.inc b/asm/non_matching/playerItem13/sub_080AD040.inc index 9f1785e5..2d6f510c 100644 --- a/asm/non_matching/playerItem13/sub_080AD040.inc +++ b/asm/non_matching/playerItem13/sub_080AD040.inc @@ -50,7 +50,7 @@ _080AD088: movs r2, #0 ldrsb r2, [r0, r2] adds r0, r4, #0 - bl sub_080B1A8C + bl GetRelativeCollisionTile cmp r0, #0x74 bne _080AD0B4 adds r0, r4, #0 diff --git a/asm/non_matching/playerItemSword/sub_080A7A84.inc b/asm/non_matching/playerItemSword/sub_080A7A84.inc index 16a50cf5..64719d16 100644 --- a/asm/non_matching/playerItemSword/sub_080A7A84.inc +++ b/asm/non_matching/playerItemSword/sub_080A7A84.inc @@ -83,7 +83,7 @@ _080A7AEC: adds r0, r4, #0 adds r1, r6, #0 adds r2, r5, #0 - bl sub_080B1A8C + bl GetRelativeCollisionTile cmp r0, #0x2e bne _080A7B4C ldr r0, _080A7B44 @ =gPlayerEntity diff --git a/asm/non_matching/playerUtils/GetSurfaceCalcType.inc b/asm/non_matching/playerUtils/GetSurfaceCalcType.inc index f88f0dfb..417c1312 100644 --- a/asm/non_matching/playerUtils/GetSurfaceCalcType.inc +++ b/asm/non_matching/playerUtils/GetSurfaceCalcType.inc @@ -73,7 +73,7 @@ _0807A26A: adds r0, r5, #0 adds r1, r6, #0 mov r2, r8 - bl sub_080B1A8C + bl GetRelativeCollisionTile adds r2, r0, #0 ldr r1, _0807A294 @ =gUnk_08007CAC bl sub_08007DD6 diff --git a/asm/non_matching/playerUtils/sub_08079C30.inc b/asm/non_matching/playerUtils/sub_08079C30.inc index 23df00bd..e1d80820 100644 --- a/asm/non_matching/playerUtils/sub_08079C30.inc +++ b/asm/non_matching/playerUtils/sub_08079C30.inc @@ -70,7 +70,7 @@ _08079CE8: rsbs r2, r2, #0 adds r0, r6, #0 movs r1, #0 - bl sub_080B1A8C + bl GetRelativeCollisionTile ldr r5, _08079D3C @ =gUnk_08007CAC adds r1, r5, #0 bl sub_08007DD6 @@ -81,7 +81,7 @@ _08079CE8: adds r0, r6, #0 movs r1, #2 movs r2, #0 - bl sub_080B1A8C + bl GetRelativeCollisionTile adds r1, r5, #0 bl sub_08007DD6 cmp r4, r0 @@ -91,7 +91,7 @@ _08079CE8: rsbs r1, r1, #0 adds r0, r6, #0 movs r2, #0 - bl sub_080B1A8C + bl GetRelativeCollisionTile adds r1, r5, #0 bl sub_08007DD6 cmp r4, r0 diff --git a/asm/non_matching/playerUtils/sub_0807A894.inc b/asm/non_matching/playerUtils/sub_0807A894.inc index ea44227c..936c7fc8 100644 --- a/asm/non_matching/playerUtils/sub_0807A894.inc +++ b/asm/non_matching/playerUtils/sub_0807A894.inc @@ -35,7 +35,7 @@ _0807A8C8: _0807A8CA: movs r1, #0 _0807A8CC: - bl sub_080B1A8C + bl GetRelativeCollisionTile pop {pc} .align 2, 0 .syntax divided diff --git a/asm/object/objectB9.s b/asm/object/objectB9.s index 4741530f..828ba2dc 100644 --- a/asm/object/objectB9.s +++ b/asm/object/objectB9.s @@ -616,19 +616,19 @@ sub_080A169C: @ 0x080A169C push {lr} ldr r0, _080A16C8 @ =0x00000D36 movs r1, #1 - bl sub_0807BA8C + bl RestorePrevTileEntity ldr r0, _080A16CC @ =0x00000D37 movs r1, #1 - bl sub_0807BA8C + bl RestorePrevTileEntity ldr r0, _080A16D0 @ =0x00000D38 movs r1, #1 - bl sub_0807BA8C + bl RestorePrevTileEntity ldr r0, _080A16D4 @ =0x00000D75 movs r1, #1 - bl sub_0807BA8C + bl RestorePrevTileEntity ldr r0, _080A16D8 @ =0x00000E75 movs r1, #1 - bl sub_0807BA8C + bl RestorePrevTileEntity pop {pc} .align 2, 0 _080A16C8: .4byte 0x00000D36 diff --git a/asm/object/objectBlockingStairs.s b/asm/object/objectBlockingStairs.s index bfe2cb30..65b55911 100644 --- a/asm/object/objectBlockingStairs.s +++ b/asm/object/objectBlockingStairs.s @@ -478,7 +478,7 @@ _0809325C: adds r0, r0, r4 subs r0, #1 adds r1, r6, #0 - bl sub_0807BA8C + bl RestorePrevTileEntity cmp r4, #2 beq _08093272 cmp r4, #5 diff --git a/asm/src/intr.s b/asm/src/intr.s index 93b68c22..04681cd1 100644 --- a/asm/src/intr.s +++ b/asm/src/intr.s @@ -120,8 +120,8 @@ _080B1A64: ldrh r0, [r1, r0] bx lr - arm_func_start arm_sub_080B1A8C -arm_sub_080B1A8C: @ 0x080B1A8C + arm_func_start arm_GetRelativeCollisionTile +arm_GetRelativeCollisionTile: @ 0x080B1A8C ldrh r3, [r0, #0x2e] add r3, r3, r1 ldrh r1, [r0, #0x32] diff --git a/asm/src/player.s b/asm/src/player.s index 3bc4edf3..7b91e704 100644 --- a/asm/src/player.s +++ b/asm/src/player.s @@ -302,6 +302,10 @@ sub_08008790: @ 0x08008790 ldrh r3, [r0, #0x32] b sub_08008796 +// r0: Entity* +// r1: Entity* +// r2: x +// r3: y non_word_aligned_thumb_func_start sub_08008796 sub_08008796: @ 0x08008796 push {r4, r5, r6, r7, lr} @@ -421,7 +425,7 @@ _08008870: _08008876: adds r0, r1, #0 adds r1, r2, #0 - bl sub_0807BA8C + bl RestorePrevTileEntity _0800887E: ldrb r1, [r5, #2] ldrb r2, [r5, #3] @@ -454,14 +458,20 @@ _080088E0: .4byte gRoomControls _080088E4: .4byte 0x00004000 _080088E8: .4byte 0x0000FFFF _080088EC: - .byte 0x00, 0xFD, 0x03, 0xFD - .byte 0x03, 0x00, 0x03, 0x03, 0x00, 0x03, 0xFD, 0x03, 0xFD, 0x00, 0xFD, 0xFD + .byte 0, -3, 3, -3 + .byte 3, 0, 3, 3 + .byte 0, 3, -3, 3 + .byte -3, 0, -3, -3 _080088FC: - .byte 0x00, 0xF6, 0x0A, 0xF6 - .byte 0x0A, 0x00, 0x0A, 0x0A, 0x00, 0x0A, 0xF6, 0x0A, 0xF6, 0x00, 0xF6, 0xF6 + .byte 0, -10, 10, -10 + .byte 10, 0, 10, 10 + .byte 0, 10, -10, 10 + .byte -10, 0, -10, -10 _0800890C: - .byte 0x00, 0x06, 0xFA, 0x00 - .byte 0x00, 0xFA, 0x06, 0x00, 0x13, 0x12, 0x12, 0x10, 0x10, 0x11, 0x11, 0x13 + .byte 0, 6, -6, 0 + .byte 0, -6, 6, 0 + .byte 19, 18, 18, 16 + .byte 16, 17, 17, 19 _0800891C: push {r0} bl ResetPlayerVelocity @@ -714,7 +724,7 @@ sub_08008AC6: @ 0x08008AC6 ldr r3, _08008B4C @ =gUnk_02000020 ands r2, r3 bne _08008AEC - bl sub_08008AEE + bl GetNonCollidedSide beq _08008AEC movs r3, #0xe2 movs r2, #0x3d @@ -723,8 +733,10 @@ sub_08008AC6: @ 0x08008AC6 _08008AEC: pop {r0, pc} - non_word_aligned_thumb_func_start sub_08008AEE -sub_08008AEE: @ 0x08008AEE +// Args: r0 = Entity* +// Gets first side that has no collisions (N, then S, W, E) + non_word_aligned_thumb_func_start GetNonCollidedSide +GetNonCollidedSide: @ 0x08008AEE ldrh r2, [r0, #0x2a] movs r3, #0xe movs r1, #4 @@ -738,12 +750,13 @@ _08008AF4: _08008B00: bx lr - non_word_aligned_thumb_func_start sub_08008B02 -sub_08008B02: @ 0x08008B02 + non_word_aligned_thumb_func_start CheckNEastTile +CheckNEastTile: @ 0x08008B02 push {r0, r1, lr} movs r1, #0 movs r2, #0 - bl sub_080B1A8C + bl GetRelativeCollisionTile + // check if north east collision? ldr r1, _08008B50 @ =0x00004000 tst r0, r1 bne _08008B1E @@ -757,16 +770,17 @@ _08008B1E: _08008B20: pop {r0, r1, pc} - non_word_aligned_thumb_func_start sub_08008B22 -sub_08008B22: @ 0x08008B22 +// this is used somehow for player jumps + non_word_aligned_thumb_func_start PlayerCheckNEastTile +PlayerCheckNEastTile: @ 0x08008B22 push {lr} ldr r0, _08008B58 @ =gPlayerEntity - bl sub_08008B02 + bl CheckNEastTile adds r0, r2, #0 pop {pc} - non_word_aligned_thumb_func_start sub_08008B2E -sub_08008B2E: @ 0x08008B2E +// this is unused +_play_snd: push {r0, lr} adds r0, r2, #0 bl EnqueueSFX diff --git a/asm/src/veneer.s b/asm/src/veneer.s index a160d6cd..b7497472 100644 --- a/asm/src/veneer.s +++ b/asm/src/veneer.s @@ -45,8 +45,8 @@ sub_08000148: @ 0x08000148 strb r0, [r2, r1] bx lr - non_word_aligned_thumb_func_start sub_08000152 -sub_08000152: @ 0x08000152 + non_word_aligned_thumb_func_start CloneTile +CloneTile: @ 0x08000152 lsls r2, r2, #2 add r3, pc, #0x68 ldr r3, [r3, r2] @@ -265,9 +265,9 @@ GetTileType: @ 0x080002B0 @ r0: Entity* @ r1: u32 @ r2: u32 - thumb_func_start sub_080B1A8C -sub_080B1A8C: @ 0x080002B4 - ldr r3, _08000320 @ =ram_sub_080B1A8C + thumb_func_start GetRelativeCollisionTile +GetRelativeCollisionTile: @ 0x080002B4 + ldr r3, _08000320 @ =ram_GetRelativeCollisionTile bx r3 @ call 0x080B1AA8 @@ -412,7 +412,7 @@ _08000310: .4byte ram_GetTileTypeByPos _08000314: .4byte ram_sub_080B1A48 _08000318: .4byte ram_sub_080B1A58 _0800031C: .4byte ram_GetTileType -_08000320: .4byte ram_sub_080B1A8C +_08000320: .4byte ram_GetRelativeCollisionTile _08000324: .4byte ram_GetTileUnderEntity _08000328: .4byte ram_sub_080B1AB4 _0800032C: .4byte ram_sub_080B1AC8 diff --git a/include/asm.h b/include/asm.h index dda4b380..a2c28581 100644 --- a/include/asm.h +++ b/include/asm.h @@ -4,7 +4,7 @@ #include "global.h" extern u32 Random(void); -extern void sub_08000152(u32, u32, u32); +extern void CloneTile(u32, u32, u32); extern u32 GetTileTypeByEntity(struct Entity_*); extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer); extern u32 GetTileType(u32 position, u32 layer); diff --git a/include/functions.h b/include/functions.h index daa1e0f7..75ffb477 100644 --- a/include/functions.h +++ b/include/functions.h @@ -84,7 +84,7 @@ extern void UpdatePlayerMovement(void); extern void sub_08000148(u32, u32, u32); extern u32 sub_080B1A0C(Entity*, s32, s32); extern u32 sub_080B1A48(u32, u32, u32); -extern u32 sub_080B1A8C(Entity*, u32, u32); +extern u32 GetRelativeCollisionTile(Entity*, u32, u32); extern u32 GetTileUnderEntity(Entity*); extern u32 sub_080B1AE0(u16, u8); extern u32 sub_080B1AF0(Entity*, s32, s32); @@ -227,7 +227,7 @@ extern u32 sub_0807B014(); extern void sub_0807B0C8(void); extern void sub_0807B7D8(u32, u32, u32); extern void sub_0807B9B8(u32, u32, u32); -extern void sub_0807BA8C(u32, u32); +extern void RestorePrevTileEntity(u32, u32); extern void sub_0807BB68(s16*, u32, u32); extern bool32 sub_0807BD14(Entity*, u32); extern bool32 sub_080806BC(u32, u32, u32, u32); diff --git a/include/player.h b/include/player.h index 0776c0a5..1ec25ed8 100644 --- a/include/player.h +++ b/include/player.h @@ -341,7 +341,7 @@ void DeleteClones(void); void sub_08077728(); extern void sub_08077B20(); -extern u32 sub_08008B22(); +extern u32 PlayerCheckNEastTile(); extern u32* sub_08008790(Entity*, u32); extern void sub_08079E58(s32 speed, u32 direction); diff --git a/linker.ld b/linker.ld index 3dabfcb2..3d1852ad 100644 --- a/linker.ld +++ b/linker.ld @@ -212,7 +212,7 @@ SECTIONS { . = 0x000057BC; ram_sub_080B1A48 = .; . = 0x000057CC; ram_sub_080B1A58 = .; . = 0x000057D4; ram_GetTileType = .; - . = 0x00005800; ram_sub_080B1A8C = .; + . = 0x00005800; ram_GetRelativeCollisionTile = .; . = 0x0000581C; ram_GetTileUnderEntity = .; . = 0x00005828; ram_sub_080B1AB4 = .; . = 0x0000583C; ram_sub_080B1AC8 = .; diff --git a/src/enemy/businessScrubPrologue.c b/src/enemy/businessScrubPrologue.c index f87040f3..b4dd50e1 100644 --- a/src/enemy/businessScrubPrologue.c +++ b/src/enemy/businessScrubPrologue.c @@ -308,11 +308,11 @@ void sub_08046078(BusinessScrubPrologueEntity* this) { } EnqueueSFX(SFX_16E); - sub_0807BA8C(0x7a2, 1); - sub_0807BA8C(0x7a3, 1); - sub_0807BA8C(0x7a5, 1); - sub_0807BA8C(0x7a6, 1); - sub_0807BA8C(0x7a7, 1); + RestorePrevTileEntity(0x7a2, 1); + RestorePrevTileEntity(0x7a3, 1); + RestorePrevTileEntity(0x7a5, 1); + RestorePrevTileEntity(0x7a6, 1); + RestorePrevTileEntity(0x7a7, 1); ent = CreateFx(super, FX_BIG_EXPLOSION2, 0x40); if (ent) { diff --git a/src/enemy/gleerok.c b/src/enemy/gleerok.c index 50ae9126..0577eec7 100644 --- a/src/enemy/gleerok.c +++ b/src/enemy/gleerok.c @@ -141,7 +141,7 @@ void sub_0802D170(GleerokEntity* this) { gPlayerEntity.x.HALF.HI = gRoomControls.origin_x + 0x98; gPlayerEntity.y.HALF.HI = gRoomControls.origin_y + 0xd8; gPlayerEntity.animationState = 0; - sub_0807BA8C(COORD_TO_TILE(&gPlayerEntity), 2); + RestorePrevTileEntity(COORD_TO_TILE(&gPlayerEntity), 2); gRoomControls.camera_target = super; SetFade(6, 8); } diff --git a/src/enemy/mazaalMacro.c b/src/enemy/mazaalMacro.c index 31de7ed6..6140e2e5 100644 --- a/src/enemy/mazaalMacro.c +++ b/src/enemy/mazaalMacro.c @@ -117,7 +117,7 @@ void sub_08034D4C(Entity* this) { void sub_08034DC8(Entity* this) { if (gRoomTransition.field_0x39 == 0) { CreateFx(this, FX_GIANT_EXPLOSION4, 0); - sub_0807BA8C(COORD_TO_TILE(this), this->collisionLayer); + RestorePrevTileEntity(COORD_TO_TILE(this), this->collisionLayer); DeleteThisEntity(); } } @@ -221,7 +221,7 @@ void sub_08034FA0(Entity* this) { break; default: if (this->health == 0) { - sub_0807BA8C(COORD_TO_TILE(this), this->collisionLayer); + RestorePrevTileEntity(COORD_TO_TILE(this), this->collisionLayer); } break; } diff --git a/src/manager/manager23.c b/src/manager/manager23.c index c38f0e8e..f831f008 100644 --- a/src/manager/manager23.c +++ b/src/manager/manager23.c @@ -117,7 +117,7 @@ void sub_0805BDB4(Manager23* this) { if (--this->field_0x22 == 0) { CreateDustAt(*(s16*)&this->field_0x38, *(s16*)&this->field_0x3a, this->manager.unk_0b); ClearFlag(this->field_0x3e); - sub_0807BA8C(this->field_0x20, this->manager.unk_0b); + RestorePrevTileEntity(this->field_0x20, this->manager.unk_0b); ChangeLightLevel(-this->manager.unk_0e); this->manager.action = 1; } else { diff --git a/src/manager/manager2B.c b/src/manager/manager2B.c index c1739b88..b83236e4 100644 --- a/src/manager/manager2B.c +++ b/src/manager/manager2B.c @@ -86,7 +86,7 @@ void sub_0805D11C(Manager2B* this) { entity_iterator = &this->field_0x20[counter]; entity = *entity_iterator; *entity_iterator = NULL; - sub_0807BA8C(COORD_TO_TILE(entity), entity->collisionLayer); + RestorePrevTileEntity(COORD_TO_TILE(entity), entity->collisionLayer); DeleteEntity(entity); } } diff --git a/src/manager/manager30.c b/src/manager/manager30.c index ec5f9a52..6e551b8d 100644 --- a/src/manager/manager30.c +++ b/src/manager/manager30.c @@ -76,7 +76,7 @@ void Manager30_Main(Manager30* this) { for (i = 0; i < this->height; i++) { tmp = this->own_tile + (i << 6); for (j = 0; j < this->width; j++) { - sub_0807BA8C(tmp + j, this->manager.unk_0b); + RestorePrevTileEntity(tmp + j, this->manager.unk_0b); } } break; diff --git a/src/manager/manager5.c b/src/manager/manager5.c index 59473ab7..8c4e4466 100644 --- a/src/manager/manager5.c +++ b/src/manager/manager5.c @@ -74,7 +74,7 @@ void sub_08057BA4(Manager5* this) { } else { if (!this->manager.unk_0f) return; - sub_0807BA8C(this->unk_38 | (this->unk_3a << 6), this->unk_3c); + RestorePrevTileEntity(this->unk_38 | (this->unk_3a << 6), this->unk_3c); sub_08057CA4(this, this->unk_2c, this->unk_2e); this->manager.unk_0f--; SoundReq(SFX_HEART_GET); diff --git a/src/manager/managerF.c b/src/manager/managerF.c index d9fe80e4..751510d7 100644 --- a/src/manager/managerF.c +++ b/src/manager/managerF.c @@ -226,7 +226,7 @@ void sub_08059124(ManagerF* this) { default: if (!--this->manager.unk_0e) { CreateDustAt(this->unk_38, this->unk_3a, this->manager.unk_0b); - sub_0807BA8C(((this->unk_38 >> 4) & 0x3f) | ((this->unk_3a >> 4) & 0x3f) << 6, this->manager.unk_0b); + RestorePrevTileEntity(((this->unk_38 >> 4) & 0x3f) | ((this->unk_3a >> 4) & 0x3f) << 6, this->manager.unk_0b); SoundReq(SFX_TASK_COMPLETE); DeleteThisEntity(); } diff --git a/src/npc/castorWildsStatue.c b/src/npc/castorWildsStatue.c index 9d5e8567..d12e9b28 100644 --- a/src/npc/castorWildsStatue.c +++ b/src/npc/castorWildsStatue.c @@ -110,10 +110,10 @@ void sub_08067534(Entity* this) { void sub_0806757C(Entity* this) { if (this->subAction != 0) { if (this->subAction >= 3) { - sub_0807BA8C(0xe81, 1); - sub_0807BA8C(0xe82, 1); - sub_0807BA8C(0xe83, 1); - sub_0807BA8C(0xec3, 1); + RestorePrevTileEntity(0xe81, 1); + RestorePrevTileEntity(0xe82, 1); + RestorePrevTileEntity(0xe83, 1); + RestorePrevTileEntity(0xec3, 1); } else { LoadFixedGFX(this, gUnk_08110E68[this->subAction]); } diff --git a/src/npc/dog.c b/src/npc/dog.c index e54e6477..0f9f3f12 100644 --- a/src/npc/dog.c +++ b/src/npc/dog.c @@ -323,7 +323,7 @@ void sub_0806A0A4(Entity* this) { if (CheckLocalFlag(MACHI_02_DOG) == 0) { dialog = 3; SetLocalFlag(MACHI_02_DOG); - sub_0807BA8C(TILE(this->x.HALF.HI, this->y.HALF.HI - 8), (u32)this->collisionLayer); + RestorePrevTileEntity(TILE(this->x.HALF.HI, this->y.HALF.HI - 8), (u32)this->collisionLayer); } } else { dialog = 2; diff --git a/src/npc/kid.c b/src/npc/kid.c index 0375b162..911dc22c 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -262,12 +262,12 @@ void sub_08062788(Entity* this, ScriptExecutionContext* context) { } void sub_080627E8(Entity* this, ScriptExecutionContext* context) { - sub_0807BA8C(0x60b, 1); - sub_0807BA8C(0x60c, 1); - sub_0807BA8C(0x60d, 1); - sub_0807BA8C(0x64b, 1); - sub_0807BA8C(0x64c, 1); - sub_0807BA8C(0x64d, 1); + RestorePrevTileEntity(0x60b, 1); + RestorePrevTileEntity(0x60c, 1); + RestorePrevTileEntity(0x60d, 1); + RestorePrevTileEntity(0x64b, 1); + RestorePrevTileEntity(0x64c, 1); + RestorePrevTileEntity(0x64d, 1); } NONMATCH("asm/non_matching/kid/Kid_Head.inc", void Kid_Head(Entity* this)) { diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index a2505d27..6e2701d3 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -198,7 +198,7 @@ void sub_0806DCA0(void) { while (*tiles != 0) { u32 tile = *tiles; tiles = tiles + 1; - sub_0807BA8C(tile, 1); + RestorePrevTileEntity(tile, 1); } } diff --git a/src/npc/npc5.c b/src/npc/npc5.c index 574527d4..1560980d 100644 --- a/src/npc/npc5.c +++ b/src/npc/npc5.c @@ -484,7 +484,7 @@ u32 sub_080611D4(Entity* this) { ptr = (s8*)gUnk_0810AC4C; a = ptr[x]; b = ptr[x + 1]; - uVar2 = sub_080B1A8C(this, a, b); + uVar2 = GetRelativeCollisionTile(this, a, b); ptr2 = gUnk_0810AC54; do { diff --git a/src/npc/sittingPerson.c b/src/npc/sittingPerson.c index de3a129f..87db1f2f 100644 --- a/src/npc/sittingPerson.c +++ b/src/npc/sittingPerson.c @@ -109,8 +109,8 @@ void sub_0806387C(Entity* this) { if (r5 > 0x81) { r4 = 2; SetLocalFlag(SUB_0806387C_FLAG2); - sub_0807BA8C(0xa17, 1); - sub_0807BA8C(0xa57, 1); + RestorePrevTileEntity(0xa17, 1); + RestorePrevTileEntity(0xa57, 1); } } } diff --git a/src/npc/zelda.c b/src/npc/zelda.c index 0b67a4a8..60eb6ee3 100644 --- a/src/npc/zelda.c +++ b/src/npc/zelda.c @@ -181,6 +181,6 @@ void sub_08066FB8(void) { while (*puVar2 != 0) { uVar1 = *puVar2; puVar2++; - sub_0807BA8C(uVar1, 1); + RestorePrevTileEntity(uVar1, 1); } } diff --git a/src/object/bigIceBlock.c b/src/object/bigIceBlock.c index 79df9f91..f86ac054 100644 --- a/src/object/bigIceBlock.c +++ b/src/object/bigIceBlock.c @@ -260,37 +260,37 @@ void sub_08099C18(BigIceBlockEntity* this) { u32 tmp = this->unk_6e; switch (this->unk_6c) { default: - sub_0807BA8C(tmp - 0x41, super->collisionLayer); - sub_0807BA8C(tmp - 0x40, super->collisionLayer); - sub_0807BA8C(tmp - 1, super->collisionLayer); - sub_0807BA8C(tmp, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x41, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x40, super->collisionLayer); + RestorePrevTileEntity(tmp - 1, super->collisionLayer); + RestorePrevTileEntity(tmp, super->collisionLayer); break; case 1: - sub_0807BA8C(tmp - 0x41, super->collisionLayer); - sub_0807BA8C(tmp - 0x40, super->collisionLayer); - sub_0807BA8C(tmp - 0x3f, super->collisionLayer); - sub_0807BA8C(tmp - 1, super->collisionLayer); - sub_0807BA8C(tmp, super->collisionLayer); - sub_0807BA8C(tmp + 1, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x41, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x40, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x3f, super->collisionLayer); + RestorePrevTileEntity(tmp - 1, super->collisionLayer); + RestorePrevTileEntity(tmp, super->collisionLayer); + RestorePrevTileEntity(tmp + 1, super->collisionLayer); break; case 2: - sub_0807BA8C(tmp - 0x41, super->collisionLayer); - sub_0807BA8C(tmp - 0x40, super->collisionLayer); - sub_0807BA8C(tmp - 1, super->collisionLayer); - sub_0807BA8C(tmp, super->collisionLayer); - sub_0807BA8C(tmp + 0x3f, super->collisionLayer); - sub_0807BA8C(tmp + 0x40, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x41, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x40, super->collisionLayer); + RestorePrevTileEntity(tmp - 1, super->collisionLayer); + RestorePrevTileEntity(tmp, super->collisionLayer); + RestorePrevTileEntity(tmp + 0x3f, super->collisionLayer); + RestorePrevTileEntity(tmp + 0x40, super->collisionLayer); break; case 3: - sub_0807BA8C(tmp - 0x41, super->collisionLayer); - sub_0807BA8C(tmp - 0x40, super->collisionLayer); - sub_0807BA8C(tmp - 0x3f, super->collisionLayer); - sub_0807BA8C(tmp - 1, super->collisionLayer); - sub_0807BA8C(tmp, super->collisionLayer); - sub_0807BA8C(tmp + 1, super->collisionLayer); - sub_0807BA8C(tmp + 0x3f, super->collisionLayer); - sub_0807BA8C(tmp + 0x40, super->collisionLayer); - sub_0807BA8C(tmp + 0x41, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x41, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x40, super->collisionLayer); + RestorePrevTileEntity(tmp - 0x3f, super->collisionLayer); + RestorePrevTileEntity(tmp - 1, super->collisionLayer); + RestorePrevTileEntity(tmp, super->collisionLayer); + RestorePrevTileEntity(tmp + 1, super->collisionLayer); + RestorePrevTileEntity(tmp + 0x3f, super->collisionLayer); + RestorePrevTileEntity(tmp + 0x40, super->collisionLayer); + RestorePrevTileEntity(tmp + 0x41, super->collisionLayer); break; } } diff --git a/src/object/chestSpawner.c b/src/object/chestSpawner.c index a7072aa7..2e567789 100644 --- a/src/object/chestSpawner.c +++ b/src/object/chestSpawner.c @@ -279,7 +279,7 @@ void ChestSpawner_Type0Action3(ChestSpawnerEntity* this) { this->unk_72--; } else { super->action = 1; - sub_0807BA8C(this->tilePosition, super->collisionLayer); + RestorePrevTileEntity(this->tilePosition, super->collisionLayer); CreateDust(super); } } diff --git a/src/object/crenelBeanSprout.c b/src/object/crenelBeanSprout.c index 52fe70db..ec5400b3 100644 --- a/src/object/crenelBeanSprout.c +++ b/src/object/crenelBeanSprout.c @@ -178,7 +178,7 @@ void CrenelBeanSprout_Action1(CrenelBeanSproutEntity* this) { } PositionRelative(&gPlayerEntity, super, 0, 0x10000); if (GetTileUnderEntity(super) == 0x19) { - sub_0807BA8C(0xdc, super->collisionLayer); + RestorePrevTileEntity(0xdc, super->collisionLayer); sub_08096A78(this); } if ((gPlayerState.field_0x92 & 0xc0) == 0) { @@ -193,7 +193,7 @@ void CrenelBeanSprout_Action1(CrenelBeanSproutEntity* this) { super->zVelocity = 0x20000; super->spritePriority.b1 = 1; super->spriteSettings.shadow = 1; - sub_0807BA8C(0xdc, super->collisionLayer); + RestorePrevTileEntity(0xdc, super->collisionLayer); SoundReq(SFX_PLY_VO5); } } diff --git a/src/object/doubleBookshelf.c b/src/object/doubleBookshelf.c index f7093e7e..b1fd39fe 100644 --- a/src/object/doubleBookshelf.c +++ b/src/object/doubleBookshelf.c @@ -175,7 +175,7 @@ void sub_0809B274(DoubleBookshelfEntity* this) { return; } this->unk_84 = 1; - sub_0807BA8C(this->unk_80 + 2, 1); + RestorePrevTileEntity(this->unk_80 + 2, 1); sub_0809B38C((DoubleBookshelfEntity*)super->child); return; } @@ -208,7 +208,7 @@ void sub_0809B38C(DoubleBookshelfEntity* this) { s32 index; u32 uVar1 = this->unk_80 - 0x82; for (index = 4; index >= 0;) { - sub_0807BA8C(uVar1, 1); + RestorePrevTileEntity(uVar1, 1); index--; uVar1++; } diff --git a/src/object/frozenWaterElement.c b/src/object/frozenWaterElement.c index 7d3bd4c7..953480c4 100644 --- a/src/object/frozenWaterElement.c +++ b/src/object/frozenWaterElement.c @@ -147,31 +147,31 @@ void sub_0809C0A8(FrozenWaterElementEntity* this) { void sub_0809C23C(FrozenWaterElementEntity* this) { u32 position = COORD_TO_TILE(super); - sub_0807BA8C(position - 0x41, super->collisionLayer); - sub_0807BA8C(position - 0x40, super->collisionLayer); - sub_0807BA8C(position - 0x3f, super->collisionLayer); - sub_0807BA8C(position - 2, super->collisionLayer); - sub_0807BA8C(position - 1, super->collisionLayer); - sub_0807BA8C(position, super->collisionLayer); - sub_0807BA8C(position + 1, super->collisionLayer); - sub_0807BA8C(position + 2, super->collisionLayer); - sub_0807BA8C(position + 0x3e, super->collisionLayer); - sub_0807BA8C(position + 0x3f, super->collisionLayer); - sub_0807BA8C(position + 0x40, super->collisionLayer); - sub_0807BA8C(position + 0x41, super->collisionLayer); - sub_0807BA8C(position + 0x42, super->collisionLayer); - sub_0807BA8C(position + 0x7f, super->collisionLayer); - sub_0807BA8C(position + 0x80, super->collisionLayer); - sub_0807BA8C(position + 0x81, super->collisionLayer); - sub_0807BA8C(position + 0x13f, super->collisionLayer); - sub_0807BA8C(position + 0x140, super->collisionLayer); - sub_0807BA8C(position + 0x141, super->collisionLayer); - sub_0807BA8C(position + 0x17f, super->collisionLayer); - sub_0807BA8C(position + 0x181, super->collisionLayer); - sub_0807BA8C(position + 0x1bd, super->collisionLayer); - sub_0807BA8C(position + 0x1be, super->collisionLayer); - sub_0807BA8C(position + 0x1bf, super->collisionLayer); - sub_0807BA8C(position + 0x1c1, super->collisionLayer); - sub_0807BA8C(position + 0x1c2, super->collisionLayer); - sub_0807BA8C(position + 0x1c3, super->collisionLayer); + RestorePrevTileEntity(position - 0x41, super->collisionLayer); + RestorePrevTileEntity(position - 0x40, super->collisionLayer); + RestorePrevTileEntity(position - 0x3f, super->collisionLayer); + RestorePrevTileEntity(position - 2, super->collisionLayer); + RestorePrevTileEntity(position - 1, super->collisionLayer); + RestorePrevTileEntity(position, super->collisionLayer); + RestorePrevTileEntity(position + 1, super->collisionLayer); + RestorePrevTileEntity(position + 2, super->collisionLayer); + RestorePrevTileEntity(position + 0x3e, super->collisionLayer); + RestorePrevTileEntity(position + 0x3f, super->collisionLayer); + RestorePrevTileEntity(position + 0x40, super->collisionLayer); + RestorePrevTileEntity(position + 0x41, super->collisionLayer); + RestorePrevTileEntity(position + 0x42, super->collisionLayer); + RestorePrevTileEntity(position + 0x7f, super->collisionLayer); + RestorePrevTileEntity(position + 0x80, super->collisionLayer); + RestorePrevTileEntity(position + 0x81, super->collisionLayer); + RestorePrevTileEntity(position + 0x13f, super->collisionLayer); + RestorePrevTileEntity(position + 0x140, super->collisionLayer); + RestorePrevTileEntity(position + 0x141, super->collisionLayer); + RestorePrevTileEntity(position + 0x17f, super->collisionLayer); + RestorePrevTileEntity(position + 0x181, super->collisionLayer); + RestorePrevTileEntity(position + 0x1bd, super->collisionLayer); + RestorePrevTileEntity(position + 0x1be, super->collisionLayer); + RestorePrevTileEntity(position + 0x1bf, super->collisionLayer); + RestorePrevTileEntity(position + 0x1c1, super->collisionLayer); + RestorePrevTileEntity(position + 0x1c2, super->collisionLayer); + RestorePrevTileEntity(position + 0x1c3, super->collisionLayer); } diff --git a/src/object/jarPortal.c b/src/object/jarPortal.c index 6be250de..63681ad0 100644 --- a/src/object/jarPortal.c +++ b/src/object/jarPortal.c @@ -169,9 +169,9 @@ void sub_0808C148(Entity* this, u32 a2) { SetTile(16532, pos + 63, this->collisionLayer); SetTile(16533, pos + 64, this->collisionLayer); } else { - sub_0807BA8C(pos - 1, this->collisionLayer); - sub_0807BA8C(pos, this->collisionLayer); - sub_0807BA8C(pos + 63, this->collisionLayer); - sub_0807BA8C(pos + 64, this->collisionLayer); + RestorePrevTileEntity(pos - 1, this->collisionLayer); + RestorePrevTileEntity(pos, this->collisionLayer); + RestorePrevTileEntity(pos + 63, this->collisionLayer); + RestorePrevTileEntity(pos + 64, this->collisionLayer); } } diff --git a/src/object/ladderUp.c b/src/object/ladderUp.c index 7cdd361b..d45dd1f9 100644 --- a/src/object/ladderUp.c +++ b/src/object/ladderUp.c @@ -61,7 +61,7 @@ void LadderUp(Entity* this) { if (gPlayerEntity.y.HALF.HI < this->y.HALF.HI) { if (gPlayerState.floor_type != 0x1e && (GetTileTypeByEntity(this) == 0x4017)) { SetTile(0x4023, COORD_TO_TILE(this), this->collisionLayer); - sub_0807BA8C(COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer); + RestorePrevTileEntity(COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer); } } else { if (GetTileTypeByEntity(this) != 0x4017) { diff --git a/src/object/lilypadLarge.c b/src/object/lilypadLarge.c index a7fd4209..0ef2bcbc 100644 --- a/src/object/lilypadLarge.c +++ b/src/object/lilypadLarge.c @@ -102,10 +102,10 @@ void sub_08085A1C(LilypadLargeEntity* this) { void sub_08085A44(LilypadLargeEntity* this) { super->speed = 0x200; - if (sub_080B1A8C(super, 0x10, 0x18) != 0x11) { + if (GetRelativeCollisionTile(super, 0x10, 0x18) != 0x11) { super->direction = 0x18; } else { - if (sub_080B1A8C(super, 0xfffffff0, 0x18) != 0x11) { + if (GetRelativeCollisionTile(super, 0xfffffff0, 0x18) != 0x11) { super->direction = 8; } else { super->direction = 0x10; @@ -126,7 +126,7 @@ void sub_08085A98(LilypadLargeEntity* this) { this->unk_78.WORD -= 0x20000; SetAffineInfo(super, this->unk_78.HALF_U.HI, this->unk_78.HALF_U.HI, this->unk_7c.HALF_U.HI); } - if (sub_080B1A8C(super, 0, 0x18) != 0x11) { + if (GetRelativeCollisionTile(super, 0, 0x18) != 0x11) { super->subAction = 2; if (gArea.locationIndex == 0x1b) { super->y.HALF.HI += 0xd0; @@ -229,7 +229,7 @@ void sub_08085D10(LilypadLargeEntity* this) { void sub_08085D28(LilypadLargeEntity* this) { if (((gPlayerState.framestate != PL_STATE_TALKEZLO) && ((gPlayerState.flags & PL_FLAGS2) != 0)) && - (sub_080B1A8C(super, 0, 0x18) == 0x11)) { + (GetRelativeCollisionTile(super, 0, 0x18) == 0x11)) { super->action = 2; super->subAction = 0; sub_08078B48(); diff --git a/src/object/macroBook.c b/src/object/macroBook.c index b63bfc37..a69daa92 100644 --- a/src/object/macroBook.c +++ b/src/object/macroBook.c @@ -159,7 +159,7 @@ void sub_0809A9D4(MacroBookEntity* this) { tilePos = this->tilePos - 0x82; for (index = 0; index < 5; index++, tilePos += 0x40) { for (index2 = 0; index2 < 4; index2++) { - sub_0807BA8C(tilePos + index2, 1); + RestorePrevTileEntity(tilePos + index2, 1); } } } diff --git a/src/object/minecart.c b/src/object/minecart.c index 7370c28b..ddd5d8f1 100644 --- a/src/object/minecart.c +++ b/src/object/minecart.c @@ -96,7 +96,7 @@ void sub_080918A4(Entity* this) { this->hurtType = 0x18; this->damage = 8; sub_0801766C(this); - sub_0807BA8C(COORD_TO_TILE(this), this->collisionLayer); + RestorePrevTileEntity(COORD_TO_TILE(this), this->collisionLayer); SoundReq(SFX_137); } } else { @@ -141,7 +141,7 @@ void sub_080919AC(Entity* this) { this->field_0xf = 0x3c; } - uVar3 = sub_080B1A8C(this, gUnk_081223C8[this->animationState * 2], + uVar3 = GetRelativeCollisionTile(this, gUnk_081223C8[this->animationState * 2], gUnk_081223C8[this->animationState * 2 + 1]); iVar2 = sub_08007DD6(uVar3, gUnk_081223D8[this->animationState]); if (iVar2 == 0) { diff --git a/src/object/object11.c b/src/object/object11.c index ed7de0ed..884491df 100644 --- a/src/object/object11.c +++ b/src/object/object11.c @@ -77,7 +77,7 @@ void Object11_Init(Object11Entity* this) { void Object11_Action1(Object11Entity* this) { if (((gPlayerState.field_0x1c & 0xf) != 1) || ((super->bitfield & 0x7f) != 0x13)) { - sub_0807BA8C(COORD_TO_TILE(super), super->collisionLayer); + RestorePrevTileEntity(COORD_TO_TILE(super), super->collisionLayer); DeleteThisEntity(); } } diff --git a/src/object/object67.c b/src/object/object67.c index f36636f8..4f794dd6 100644 --- a/src/object/object67.c +++ b/src/object/object67.c @@ -329,7 +329,7 @@ void sub_08094708(Object67Entity* this, u32 param_2, u32 param_3) { int index; for (index = this->unk74 * 2 + 8; index != 0; index--) { - sub_0807BA8C(TILE(param_2, param_3), 2); + RestorePrevTileEntity(TILE(param_2, param_3), 2); param_2 = param_2 + this->unk78; param_3 = param_3 + this->unk7c; } diff --git a/src/object/octorokBossObject.c b/src/object/octorokBossObject.c index f1fbb022..b7316b8c 100644 --- a/src/object/octorokBossObject.c +++ b/src/object/octorokBossObject.c @@ -336,7 +336,7 @@ bool32 sub_0809A6F8(u32 param_1, u32 param_2, u32 param_3, u32 param_4) { if ((param_4 & 1) != 0) { sub_0807B9B8(gUnk_081238A0[param_3], (param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, 1); } else { - sub_0807BA8C((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, 1); + RestorePrevTileEntity((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, 1); } } return TRUE; diff --git a/src/object/playerClone.c b/src/object/playerClone.c index b8a94abc..4de97df9 100644 --- a/src/object/playerClone.c +++ b/src/object/playerClone.c @@ -66,7 +66,7 @@ void PlayerClone_Action1(PlayerCloneEntity* this) { if ((this->unk78 != 0) && (this->unk7a != 0)) { ((PlayerCloneEntity*)gPlayerClones[super->type])->unk70 = 1; } - sub_08000152(0x315, this->tilePos, super->collisionLayer); + CloneTile(0x315, this->tilePos, super->collisionLayer); super->child = sub_08077CF8(1, super->type + 1, 0, ((GenericEntity*)gPlayerState.item)->field_0x68.HALF.LO); if (super->child != NULL) { super->child->parent = super; @@ -75,7 +75,7 @@ void PlayerClone_Action1(PlayerCloneEntity* this) { sub_0806FDA0(super); PlayerClone_Action2(this); } else if (gPlayerState.chargeState.action != 4) { - sub_08000152(0x315, this->tilePos, super->collisionLayer); + CloneTile(0x315, this->tilePos, super->collisionLayer); gPlayerClones[super->type] = NULL; DeleteThisEntity(); } else { diff --git a/src/object/pushableFurniture.c b/src/object/pushableFurniture.c index b4cc4a13..70213732 100644 --- a/src/object/pushableFurniture.c +++ b/src/object/pushableFurniture.c @@ -353,12 +353,12 @@ void sub_08090480(u32 param_1, u32 param_2) { void sub_08090498(PushableFurnitureEntity* this) { u32 tmp = this->unk_70 - 0x80; - sub_0807BA8C(tmp, 1); + RestorePrevTileEntity(tmp, 1); if (((this->unk_83 & 1) != 0) && (GetTileType(tmp, 2) == 0x306)) { sub_08000148(0x62, tmp, 1); } tmp = this->unk_72 - 0x80; - sub_0807BA8C(tmp, 1); + RestorePrevTileEntity(tmp, 1); if (((this->unk_83 & 2) != 0) && (GetTileType(tmp, 2) == 0x308)) { sub_08000148(99, tmp, 1); } diff --git a/src/object/pushableGrave.c b/src/object/pushableGrave.c index a3421aa2..5e882fd7 100644 --- a/src/object/pushableGrave.c +++ b/src/object/pushableGrave.c @@ -181,8 +181,8 @@ bool32 sub_0809785C(PushableGraveEntity* this) { super->field_0xf = 0x3c; super->direction = 0; super->speed = 0x40; - sub_0807BA8C(this->unk_68, super->collisionLayer); - sub_0807BA8C(this->unk_68 - 1, super->collisionLayer); + RestorePrevTileEntity(this->unk_68, super->collisionLayer); + RestorePrevTileEntity(this->unk_68 - 1, super->collisionLayer); return TRUE; } } diff --git a/src/object/pushableStatue.c b/src/object/pushableStatue.c index fd8de005..3074fcff 100644 --- a/src/object/pushableStatue.c +++ b/src/object/pushableStatue.c @@ -199,7 +199,7 @@ void sub_08089538(PushableStatueEntity* this) { EnqueueSFX(SFX_10F); SetTile(this->unk_80, this->unk_84, super->collisionLayer); if ((super->collisionLayer == 2) && (GetTileType(this->unk_84, 1) == 0x400b)) { - sub_08000152(0x310, this->unk_84, 1); + CloneTile(0x310, this->unk_84, 1); } tileType = GetTileType(this->unk_84 + gUnk_080B4488[super->direction >> 3], super->collisionLayer); if ((tileType == 0x79) || (tileType == 0x77)) { diff --git a/src/object/smallIceBlock.c b/src/object/smallIceBlock.c index 11994ed5..1b821625 100644 --- a/src/object/smallIceBlock.c +++ b/src/object/smallIceBlock.c @@ -188,7 +188,7 @@ void sub_080994B8(SmallIceBlockEntity* this) { EnqueueSFX(SFX_ICE_BLOCK_SLIDE); SetTile(this->unk_6c, this->unk_70, super->collisionLayer); if ((super->collisionLayer == 2) && (GetTileType(this->unk_70, 1) == 0x405a)) { - sub_08000152(0x310, this->unk_70, 1); + CloneTile(0x310, this->unk_70, 1); } tileType = GetTileType(this->unk_70 + gUnk_080B4488[super->direction >> 3], super->collisionLayer); if (tileType == 0x79 || tileType == 0x77) { diff --git a/src/player.c b/src/player.c index 60257988..d39d30ba 100644 --- a/src/player.c +++ b/src/player.c @@ -729,7 +729,7 @@ static void PlayerBounceUpdate(Entity* this) { COLLISION_ON(this); - if ((gPlayerState.field_0x14 == 0) && sub_08008B22()) { + if ((gPlayerState.field_0x14 == 0) && PlayerCheckNEastTile()) { gPlayerState.field_0x11 = 7; ResolvePlayerAnimation(); SetPlayerActionNormal(); @@ -2267,7 +2267,7 @@ static void sub_08072ACC(Entity* this) { this->spritePriority.b1 = 1; gPlayerState.jump_status = 0x41; sub_0807921C(); - sub_0807BA8C(COORD_TO_TILE(this), this->collisionLayer); + RestorePrevTileEntity(COORD_TO_TILE(this), this->collisionLayer); } else { this->animationState = Direction8ToAnimationState(gPlayerState.field_0xd); this->field_0xf++; @@ -2320,7 +2320,7 @@ static void sub_08072C48(Entity* this) { sub_08008790(this, 7); if (gPlayerState.field_0x14) { - if (sub_08008B22()) { + if (PlayerCheckNEastTile()) { gPlayerState.field_0x11 = 7; if (!(gPlayerState.flags & PL_MINISH)) { SetPlayerActionNormal(); @@ -2442,7 +2442,7 @@ void sub_08072D54(Entity* this) { } sub_08008790(this, 7); if (gPlayerState.field_0x14 != 0) { - if (sub_08008B22()) { + if (PlayerCheckNEastTile()) { gPlayerState.field_0x11 = 7; if (!(gPlayerState.flags & PL_MINISH)) { SetPlayerActionNormal(); @@ -3738,7 +3738,7 @@ void SurfaceAction_20(Entity* this) { if (e != NULL) { e->actionDelay = 1; UpdateSpriteForCollisionLayer(e); - sub_08000152(57, gPlayerState.field_0x22[0], this->collisionLayer); + CloneTile(57, gPlayerState.field_0x22[0], this->collisionLayer); } } SurfaceAction_Water(this); diff --git a/src/playerItem/playerItemBottle.c b/src/playerItem/playerItemBottle.c index 015b6119..c3617b25 100644 --- a/src/playerItem/playerItemBottle.c +++ b/src/playerItem/playerItemBottle.c @@ -272,7 +272,7 @@ void PlayerItemBottle_UseEmptyBottle(Entity* this) { if (this->spriteSettings.flipX != 0) { iVar2 = -iVar2; } - if (sub_080B1A8C(this, iVar2, (s8)ptr2[1]) == 0x10) { + if (GetRelativeCollisionTile(this, iVar2, (s8)ptr2[1]) == 0x10) { this->type2 = ITEM_BOTTLE_WATER; } } diff --git a/src/playerUtils.c b/src/playerUtils.c index 3d2cb0e8..d006bfd6 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1191,7 +1191,7 @@ bool32 sub_08079D48(void) { if (!sub_08079C30(&gPlayerEntity)) { return TRUE; } else { - if (!sub_08008B22()) { + if (!PlayerCheckNEastTile()) { if (!sub_08007DD6((u16)GetTileUnderEntity(&gPlayerEntity), gUnk_0811C268)) { return TRUE; } @@ -1329,7 +1329,7 @@ void EnablePlayerDraw(Entity* this) { } bool32 sub_0807A2B8(void) { - if (sub_08008B22()) { + if (PlayerCheckNEastTile()) { return TRUE; } else { if (((gPlayerState.jump_status & 200) == 0) && (gPlayerEntity.collisionLayer != 1)) { @@ -1640,7 +1640,7 @@ void SetTileType(u32 tileType, u32 position, u32 layer) { } else if (tileType >= 0x4000) { // The tile type actually directly is a tileIndex SetTile(tileType, position, layer); } else { - sub_0807BA8C(position, layer); + RestorePrevTileEntity(position, layer); } } @@ -1670,7 +1670,7 @@ ASM_FUNC("asm/non_matching/playerUtils/sub_0807B778.inc", void sub_0807B778(u32 void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) { if (param_1 == 53) { - sub_08000152(53, param_2, param_3); + CloneTile(53, param_2, param_3); sub_0807B778(param_2, param_3); sub_0807B778(param_2 + 1, param_3); sub_0807B778(param_2 - 1, param_3); @@ -1747,7 +1747,7 @@ void sub_0807B9B8(u32 tileIndex, u32 position, u32 layer) { } } -void sub_0807BA8C(u32 position, u32 layer) { +void RestorePrevTileEntity(u32 position, u32 layer) { u32 tileIndex; u32 tileType; LayerStruct* data; @@ -2012,6 +2012,9 @@ void sub_0807C810(void) { gUpdateVisibleTiles = 0; } +/** + * This function is used to create a copy of the map data for temporary cutscene changes. + */ void CloneMapData(void) { gRoomTransition.field_0x2c[0] = 1; MemCopy(&gMapBottom.mapData, &gMapBottom.mapDataClone, 0x2000); diff --git a/src/projectile/removableDust.c b/src/projectile/removableDust.c index d8437976..0822b00e 100644 --- a/src/projectile/removableDust.c +++ b/src/projectile/removableDust.c @@ -122,7 +122,7 @@ void sub_080AA544(Entity* this) { sub_0807B7D8(gUnk_08129FE4[this->type2], param - tmp[this->type2], this->collisionLayer); } } else { - sub_0807BA8C(TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); + RestorePrevTileEntity(TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); SetFlag((u16)this->speed); } } diff --git a/src/projectile/spiderWeb.c b/src/projectile/spiderWeb.c index 93951fad..acfaeac7 100644 --- a/src/projectile/spiderWeb.c +++ b/src/projectile/spiderWeb.c @@ -205,7 +205,7 @@ void sub_080AAA68(Entity* this) { void sub_080AAAA8(Entity* this) { SetFlag(this->field_0x86.HWORD); - sub_0807BA8C(TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); + RestorePrevTileEntity(TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); DeleteThisEntity(); } diff --git a/src/roomInit.c b/src/roomInit.c index 714ffc3b..d0136ac0 100644 --- a/src/roomInit.c +++ b/src/roomInit.c @@ -3692,7 +3692,7 @@ void sub_0804D810(void) { while (*puVar2 != 0) { uVar1 = *puVar2; puVar2++; - sub_0807BA8C(uVar1, 1); + RestorePrevTileEntity(uVar1, 1); } } @@ -6000,34 +6000,34 @@ void sub_0804F8E0(void) { } void sub_0804F928(void) { - sub_0807BA8C(0x41d, 1); - sub_0807BA8C(0x621, 1); + RestorePrevTileEntity(0x41d, 1); + RestorePrevTileEntity(0x621, 1); } void sub_0804F944(void) { - sub_0807BA8C(0x41e, 1); - sub_0807BA8C(0x620, 1); + RestorePrevTileEntity(0x41e, 1); + RestorePrevTileEntity(0x620, 1); } void sub_0804F960(void) { - sub_0807BA8C(0x41f, 1); - sub_0807BA8C(0x4e5, 1); - sub_0807BA8C(0x61f, 1); - sub_0807BA8C(0x559, 1); + RestorePrevTileEntity(0x41f, 1); + RestorePrevTileEntity(0x4e5, 1); + RestorePrevTileEntity(0x61f, 1); + RestorePrevTileEntity(0x559, 1); } void sub_0804F994(void) { - sub_0807BA8C(0x420, 1); - sub_0807BA8C(0x525, 1); - sub_0807BA8C(0x61e, 1); - sub_0807BA8C(0x519, 1); + RestorePrevTileEntity(0x420, 1); + RestorePrevTileEntity(0x525, 1); + RestorePrevTileEntity(0x61e, 1); + RestorePrevTileEntity(0x519, 1); } void sub_0804F9C8(void) { - sub_0807BA8C(0x421, 1); - sub_0807BA8C(0x565, 1); - sub_0807BA8C(0x61d, 1); - sub_0807BA8C(0x4d9, 1); + RestorePrevTileEntity(0x421, 1); + RestorePrevTileEntity(0x565, 1); + RestorePrevTileEntity(0x61d, 1); + RestorePrevTileEntity(0x4d9, 1); } u32 sub_unk3_HyruleField_OutsideCastleWest(void) {