diff --git a/asm/src/code_08001A7C.s b/asm/src/code_08001A7C.s index dfaa3ad47..4568bf6cc 100644 --- a/asm/src/code_08001A7C.s +++ b/asm/src/code_08001A7C.s @@ -931,8 +931,8 @@ _0800271A: bne _0800270A pop {r4, r5, r6, pc} - thumb_func_start sub_08002724 -sub_08002724: @ 0x08002724 + thumb_func_start UnpackTextNibbles +UnpackTextNibbles: @ 0x08002724 push {r4, r5, lr} movs r2, #0x10 movs r3, #0xf @@ -1019,24 +1019,25 @@ _080027E6: movs r0, #4 bx lr + // almost identical to LinearMoveDirection // r0 = Entity* // r1 = speed // r2 = direction - non_word_aligned_thumb_func_start sub_080027EA -sub_080027EA: @ 0x080027EA + non_word_aligned_thumb_func_start LinearMoveDirectionOLD +LinearMoveDirectionOLD: @ 0x080027EA push {r4, r5, r6, r7, lr} movs r3, #0x80 tst r2, r3 bne _08002860 movs r4, #0x2a - ldrh r3, [r0, r4] + ldrh r3, [r0, r4] // collisions movs r4, #7 tst r2, r4 bne _08002812 push {r0, r1, r2, r3} adds r0, r2, #0 adds r1, r3, #0 - bl sub_08002864 + bl CalcCollisionDirectionOLD adds r4, r0, #0 pop {r0, r1, r2, r3} cmp r2, r4 @@ -1063,7 +1064,7 @@ _08002812: _08002834: adds r4, r0, #0 pop {r0, r1, r2, r3} - ldr r5, [r0, #0x2c] + ldr r5, [r0, #0x2c] // x adds r5, r5, r4 str r5, [r0, #0x2c] _0800283E: @@ -1081,15 +1082,16 @@ _0800283E: _08002856: adds r4, r0, #0 pop {r0, r1, r2, r3} - ldr r5, [r0, #0x30] + ldr r5, [r0, #0x30] // y subs r5, r5, r4 str r5, [r0, #0x30] _08002860: adds r1, r6, #0 pop {r4, r5, r6, r7, pc} - thumb_func_start sub_08002864 -sub_08002864: @ 0x08002864 + // collision related, probably leftover from FS + thumb_func_start CalcCollisionDirectionOLD +CalcCollisionDirectionOLD: @ 0x08002864 adds r2, r0, #0 lsrs r2, r2, #3 cmp r2, #0 diff --git a/asm/src/code_08003FC4.s b/asm/src/code_08003FC4.s index 362f7d8d3..ff872eb43 100644 --- a/asm/src/code_08003FC4.s +++ b/asm/src/code_08003FC4.s @@ -621,26 +621,26 @@ _0800439C: .4byte gSpritePtrs _080043A0: .4byte gSpritePtrs _080043A4: .4byte gGFXSlots+4 - thumb_func_start sub_080043A8 -sub_080043A8: @ 0x080043A8 - movs r1, #0xb - b _080043B6 - - thumb_func_start CreateChestSpawner -CreateChestSpawner: @ 0x080043AC - movs r1, #0xc - b _080043B6 - - thumb_func_start sub_080043B0 -sub_080043B0: @ 0x080043AC - movs r1, #0x52 - b _080043B6 - - thumb_func_start CreateItemOnGround -CreateItemOnGround: @ 0x080043B4 - movs r1, #0 - -_080043B6: + thumb_func_start CreateDrownFX +CreateDrownFX: @ 0x080043A8 + movs r1, #0xb // FX_WATER_SPLASH + b create_fx + + thumb_func_start CreateLavaDrownFX +CreateLavaDrownFX: @ 0x080043AC + movs r1, #0xc // FX_LAVA_SPLASH + b create_fx + + thumb_func_start CreateSwampDrownFX +CreateSwampDrownFX: @ 0x080043AC + movs r1, #0x52 // FX_GREEN_SPLASH + b create_fx + + thumb_func_start CreatePitFallFX +CreatePitFallFX: @ 0x080043B4 + movs r1, #0 // FX_FALL_DOWN + +create_fx: push {r4, lr} adds r4, r0, #0 movs r0, #0xf @@ -648,10 +648,10 @@ _080043B6: bl CreateObject cmp r0, #0 - beq _080043E0 @ Branch if entity could not be created + beq _080043E0 movs r1, #0x48 - ldr r1, [r4, r1] @ Unused? + ldr r1, [r4, r1] // load hitbox (unused) ldrh r3, [r4, #0x2e] strh r3, [r0, #0x2e] @@ -664,11 +664,11 @@ _080043B6: ldrb r3, [r4, #8] - cmp r3, #3 @ Is the spawner an enemy? + cmp r3, #3 // is parent entity an enemy? bne _080043E0 movs r1, #1 - strb r1, [r0, #0xb] @ Set base parameter + strb r1, [r0, #0xb] // copy entity.type2 _080043E0: adds r0, r4, #0 diff --git a/asm/src/code_080043E8.s b/asm/src/code_080043E8.s index 98048228a..3d723136d 100644 --- a/asm/src/code_080043E8.s +++ b/asm/src/code_080043E8.s @@ -5,57 +5,67 @@ .text - thumb_func_start sub_080043E8 -sub_080043E8: @ 0x080043E8 + .macro hazard_tile tile:req, hazard_type:req + .short \tile + .short \hazard_type + .endm + + thumb_func_start GetTileHazardType +GetTileHazardType: @ 0x080043E8 push {r4, lr} ldrb r1, [r0, #0xc] cmp r1, #0 - beq _08004414 + beq no_hazard // action == 0 adds r4, r0, #0 - bl sub_08016AD2 + bl UpdateCollisionLayer movs r3, #0x36 ldrsh r2, [r4, r3] cmp r2, #0 - bmi _08004414 - cmp r0, #0 - beq _08004414 - add r3, pc, #0x10 -_08004404: + bmi no_hazard // collisionLayer is negative + cmp r0, #0 // are we on a tile? + beq no_hazard + adr r3, hazard_list-4 +loop: adds r3, #4 ldrh r1, [r3] cmp r1, #0 - beq _08004414 + beq no_hazard cmp r0, r1 - bne _08004404 + bne loop ldrh r0, [r3, #2] pop {r4, pc} -_08004414: +no_hazard: movs r0, #0 pop {r4, pc} -_08004418: - .byte 0x0D, 0x00, 0x01, 0x00, 0x10, 0x00, 0x02, 0x00 - .byte 0x11, 0x00, 0x02, 0x00, 0x5A, 0x00, 0x03, 0x00, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00 + +hazard_list: + hazard_tile 0xD, 0x1 + hazard_tile 0x10, 0x2 + hazard_tile 0x11, 0x2 + hazard_tile 0x5A, 0x3 + hazard_tile 0x13, 0x4 + .short 0x0000 non_word_aligned_thumb_func_start sub_0800442E sub_0800442E: @ 0x0800442E push {r0, lr} - bl sub_080043E8 + bl GetTileHazardType cmp r0, #0 - beq _08004448 - lsls r0, r0, #2 - add r1, pc, #0xC + beq not_hazard + lsls r0, #2 + adr r1, _0800444C - 4 ldr r1, [r1, r0] pop {r0} bl _call_via_r1 movs r0, #1 pop {pc} -_08004448: +not_hazard: movs r0, #0 pop {r1, pc} -_0800444C: .4byte CreateItemOnGround -_08004450: .4byte sub_080043A8 -_08004454: .4byte CreateChestSpawner -_08004458: .4byte sub_080043B0 +_0800444C: .4byte CreatePitFallFX +_08004450: .4byte CreateDrownFX +_08004454: .4byte CreateLavaDrownFX +_08004458: .4byte CreateSwampDrownFX thumb_func_start sub_0800445C sub_0800445C: @ 0x0800445C @@ -171,6 +181,7 @@ _08004516: adds r0, r2, #0 bx lr + // r0 = Entity* thumb_func_start sub_0800451C sub_0800451C: @ 0x0800451C push {r0, lr} @@ -196,17 +207,17 @@ sub_0800451C: @ 0x0800451C sub_08004542: @ 0x08004542 movs r1, #0x38 movs r2, #2 - strb r2, [r0, r1] + strb r2, [r0, r1] // entity->collisionLayer = 2 movs r2, #0xc0 ldrb r1, [r0, #0x1b] bics r1, r2 adds r1, #0x40 - strb r1, [r0, #0x1b] + strb r1, [r0, #0x1b] // update spriteOrientation movs r2, #0xc0 ldrb r1, [r0, #0x19] bics r1, r2 adds r1, #0x40 - strb r1, [r0, #0x19] + strb r1, [r0, #0x19] // update spriteRendering bx lr non_word_aligned_thumb_func_start ResetCollisionLayer diff --git a/asm/src/code_08007CAC.s b/asm/src/code_08007CAC.s index c457c0a22..146e4ac77 100644 --- a/asm/src/code_08007CAC.s +++ b/asm/src/code_08007CAC.s @@ -29,22 +29,22 @@ gUnk_08007CAC:: @ 08007CAC .endif .endif - non_word_aligned_thumb_func_start sub_08007DD6 -sub_08007DD6: @ 0x08007DD6 + non_word_aligned_thumb_func_start ActTileToTile +ActTileToTile: @ 0x08007DD6 push {lr} - bl sub_08007DE0 + bl ActTileConv adds r0, r3, #0 pop {pc} - thumb_func_start sub_08007DE0 -sub_08007DE0: @ 0x08007DE0 + thumb_func_start ActTileConv +ActTileConv: @ 0x08007DE0 subs r1, #4 _08007DE2: adds r1, #4 ldrh r3, [r1] - cmp r3, #0 + cmp r3, #0 // reached end beq _08007DF2 - cmp r0, r3 + cmp r0, r3 // equal bne _08007DE2 ldrh r3, [r1, #2] movs r2, #1 diff --git a/asm/src/enemy.s b/asm/src/enemy.s index 52aacf915..d2dcd5ffd 100644 --- a/asm/src/enemy.s +++ b/asm/src/enemy.s @@ -71,7 +71,7 @@ _08001230: ldr r3, _0800135C @ =UpdateAnimationVariableFrames bx r3 _0800123E: - ldr r3, _08001360 @ =CreateItemOnGround + ldr r3, _08001360 @ =CreatePitFallFX bx r3 non_word_aligned_thumb_func_start GenericConfused @@ -155,19 +155,19 @@ _080012BA: gUnk_080012C8:: .4byte 0x00000000 _080012CC: .4byte sub_08001214 -_080012D0: .4byte sub_080043A8 -_080012D4: .4byte CreateChestSpawner -_080012D8: .4byte sub_080043B0 +_080012D0: .4byte CreateDrownFX +_080012D4: .4byte CreateLavaDrownFX +_080012D8: .4byte CreateSwampDrownFX thumb_func_start sub_080012DC sub_080012DC: @ 0x080012DC push {r4, r5, lr} adds r4, r0, #0 movs r5, #0x3a - ldrb r1, [r4, r5] + ldrb r1, [r4, r5] // gust jar state lsrs r1, r1, #3 bhs _08001302 - bl sub_080043E8 + bl GetTileHazardType cmp r0, #4 beq _08001302 cmp r0, #0 @@ -241,7 +241,7 @@ _08001352: .align 2, 0 _08001358: .4byte gEnemyFunctions _0800135C: .4byte UpdateAnimationVariableFrames -_08001360: .4byte CreateItemOnGround +_08001360: .4byte CreatePitFallFX _08001364: .4byte 0x00001800 _08001368: .4byte gUnk_080012C8 _0800136C: .4byte gUnk_080012C8 diff --git a/asm/src/intr.s b/asm/src/intr.s index 4f65fa09b..c2dab21db 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_GetRelativeCollisionTile -arm_GetRelativeCollisionTile: @ 0x080B1A8C + arm_func_start arm_GetActTileRelative +arm_GetActTileRelative: @ 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 05f6ed35f..fefcf6958 100644 --- a/asm/src/player.s +++ b/asm/src/player.s @@ -26,7 +26,7 @@ sub_0800857C: @ 0x0800857C _0800859C: ldrh r1, [r0, #0x24] ldrb r2, [r0, #0x15] - bl sub_080027EA + bl LinearMoveDirectionOLD pop {r4 - r7} mov r8, r4 @@ -57,11 +57,11 @@ sub_080085CC: @ 0x080085CC ldr r2, _0800888C @ =gPlayerState ldr r1, _08008890 @ =gUnk_080083FC movs r3, #0x26 - ldrb r3, [r2, r3] + ldrb r3, [r2, r3] // swim_state orrs r3, r3 beq _080085E6 ldr r2, [r2, #0x30] - movs r3, #0x80 + movs r3, #0x80 // flags & PL_MINISH ands r2, r3 beq _0800861A ldr r1, _08008894 @ =gUnk_0800839C @@ -70,12 +70,12 @@ _080085E6: ldr r1, _08008898 @ =gUnk_0800845C ldrb r3, [r2, #2] orrs r3, r3 - bne _0800861A - ldr r2, [r2, #0x30] + bne _0800861A // jump_status != 0 + ldr r2, [r2, #0x30] // flags & PL_PARACHUTE ldr r3, _0800889C @ =0x01000000 tst r2, r3 bne _0800861A - movs r3, #0x80 + movs r3, #0x80 // // flags & PL_MINISH ldr r1, _080088A0 @ =gUnk_0800833C ands r2, r3 bne _0800861A @@ -83,15 +83,15 @@ _080085E6: ldr r3, _080088A8 @ =gPlayerState ldrb r2, [r3, #0x1c] orrs r2, r2 - bne _0800861A + bne _0800861A // field_0x1c != 0 ldrb r2, [r3, #5] orrs r2, r2 - bne _0800861A + bne _0800861A // heldObject != 0 ldr r1, _080088AC @ =gUnk_0800851C movs r2, #0xaa ldrb r2, [r3, r2] orrs r2, r2 - bne _0800861A + bne _0800861A // attachedBeetleCount != 0 ldr r1, _080088B0 @ =gUnk_080082DC _0800861A: mov r11, r1 @@ -169,7 +169,7 @@ _08008684: _080086AC: mov r0, r8 movs r2, #0x2a - strh r7, [r0, r2] + strh r7, [r0, r2] // collisions pop {pc} thumb_func_start sub_080086B4 @@ -265,17 +265,17 @@ _08008754: ands r2, r3 pop {pc} - non_word_aligned_thumb_func_start sub_0800875A -sub_0800875A: @ 0x0800875A + non_word_aligned_thumb_func_start DoItemTileInteraction +DoItemTileInteraction: @ 0x0800875A push {r2, r4, lr} - ldrb r3, [r0, #0x14] + ldrb r3, [r0, #0x14] // item.animationState movs r2, #6 ands r3, r2 ldr r4, _080088D0 @ =gUnk_08007DF4 ldrsb r2, [r4, r3] adds r3, #1 ldrsb r3, [r4, r3] - bl sub_08008782 + bl DoTileInteractionOffset pop {r2, r4} cmp r0, #0 beq _08008780 @@ -288,21 +288,21 @@ sub_0800875A: @ 0x0800875A _08008780: pop {pc} - non_word_aligned_thumb_func_start sub_08008782 -sub_08008782: @ 0x08008782 + non_word_aligned_thumb_func_start DoTileInteractionOffset +DoTileInteractionOffset: @ 0x08008782 push {r4} ldrh r4, [r0, #0x2e] adds r2, r2, r4 ldrh r4, [r0, #0x32] adds r3, r3, r4 pop {r4} - b sub_08008796 + b DoTileInteraction - thumb_func_start sub_08008790 -sub_08008790: @ 0x08008790 + thumb_func_start DoTileInteractionHere +DoTileInteractionHere: @ 0x08008790 ldrh r2, [r0, #0x2e] ldrh r3, [r0, #0x32] - b sub_08008796 + b DoTileInteraction // r0: Entity* // r1: tile filter? @@ -310,8 +310,8 @@ sub_08008790: @ 0x08008790 // r3: y // Somehow involved in trampling tiles, digging with claws, picking up tiles.. - non_word_aligned_thumb_func_start sub_08008796 -sub_08008796: @ 0x08008796 + non_word_aligned_thumb_func_start DoTileInteraction +DoTileInteraction: @ 0x08008796 push {r4, r5, r6, r7, lr} push {r2, r3} ldr r2, _080088D4 @ =gRoomControls @@ -319,17 +319,17 @@ sub_08008796: @ 0x08008796 movs r2, #1 cmp r2, r3 pop {r2, r3} - beq _080087CE + beq _080087CE_return0 push {r0, r1, r2, r3} pop {r4, r5, r6, r7} adds r0, r6, #0 adds r1, r7, #0 movs r2, #0x38 - ldrb r2, [r4, r2] + ldrb r2, [r4, r2] // collision layer bl GetTileTypeByPos ldr r1, _080088D8 @ =gUnk_080046A4 - bl sub_08007DE0 - beq _080087CE + bl ActTileConv + beq _080087CE_return0 lsls r1, r3, #3 adds r3, r5, #0 ldr r0, _080088DC @ =gUnk_080047F6 @@ -338,51 +338,51 @@ sub_08008796: @ 0x08008796 lsrs r0, r3 lsrs r0, r0, #1 bhs _080087D2 -_080087CE: +_080087CE_return0: movs r0, #0 pop {r4, r5, r6, r7, pc} _080087D2: - ldrb r0, [r5, #2] - ldrb r1, [r5, #3] + ldrb r0, [r5, #2] // object id + ldrb r1, [r5, #3] // object type cmp r0, #0xff - beq _0800883A + beq after_create_obj cmp r3, #6 - beq _0800883A + beq after_create_obj cmp r3, #0xe - beq _0800883A + beq after_create_obj cmp r3, #0xa - beq _0800883A + beq after_create_obj cmp r3, #0xb - beq _0800883A + beq after_create_obj cmp r3, #0xd bne _080087F6 - cmp r0, #0xf - bne _0800883A - cmp r1, #0x17 - bne _0800883A + cmp r0, #0xf // SPECIAL_FX + bne after_create_obj + cmp r1, #0x17 // FX_GRASS_CUT + bne after_create_obj _080087F6: movs r2, #0 - cmp r0, #0xf + cmp r0, #0xf // SPECIAL_FX bne _080087FE movs r2, #0x80 _080087FE: - bl CreateObject + bl CreateObject // r0 = id, r1 = type, r2 = type2 cmp r0, #0 - beq _0800883A - ldrb r1, [r5, #2] + beq after_create_obj + ldrb r1, [r5, #2] // object id cmp r1, #0 - beq _08008820 + beq no_offset movs r2, #0xf adds r1, r6, #0 bics r1, r2 adds r1, #8 - strh r1, [r0, #0x2e] + strh r1, [r0, #0x2e] // x adds r1, r7, #0 bics r1, r2 adds r1, #8 - strh r1, [r0, #0x32] + strh r1, [r0, #0x32] // y b _0800882C -_08008820: +no_offset: ldrh r1, [r4, #0x2e] strh r1, [r0, #0x2e] ldrh r1, [r4, #0x32] @@ -391,12 +391,12 @@ _08008820: strh r1, [r1, #0x36] _0800882C: movs r3, #0x50 - str r4, [r1, r3] + str r4, [r1, r3] // set parent to r4 movs r3, #0x38 - ldrb r1, [r4, r3] + ldrb r1, [r4, r3] // copy collision layer from parent strb r1, [r0, r3] bl UpdateSpriteForCollisionLayer -_0800883A: +after_create_obj: ldr r1, _080088E0 @ =gRoomControls ldrh r0, [r1, #6] subs r2, r6, r0 @@ -417,7 +417,7 @@ _0800883A: beq _08008876 push {r0, r1} adds r0, r2, #0 - bl GetLayerByIndex + bl GetTileBuffer adds r3, r0, #4 pop {r0, r1} lsls r1, r1, #1 @@ -461,22 +461,22 @@ _080088DC: .4byte gUnk_080047F6 _080088E0: .4byte gRoomControls _080088E4: .4byte 0x00004000 _080088E8: .4byte 0x0000FFFF -_080088EC: +velocities1: .byte 0, -3, 3, -3 .byte 3, 0, 3, 3 .byte 0, 3, -3, 3 .byte -3, 0, -3, -3 -_080088FC: +ice_velocities: .byte 0, -10, 10, -10 .byte 10, 0, 10, 10 .byte 0, 10, -10, 10 .byte -10, 0, -10, -10 -_0800890C: +velocities3: .byte 0, 6, -6, 0 .byte 0, -6, 6, 0 .byte 19, 18, 18, 16 .byte 16, 17, 17, 19 -_0800891C: +reset_vel: push {r0} bl ResetPlayerVelocity pop {r0} @@ -497,7 +497,7 @@ UpdateIcePlayerVelocity: @ 0x0800892E _UpdateIcePlayerVelocity: push {lr} - ldrb r2, [r0, #0x14] + ldrb r2, [r0, #0x14] // animationState lsrs r2, r2, #1 lsls r2, r2, #3 ldr r1, _08008A68 @ =gPlayerState @@ -522,20 +522,20 @@ _08008956: movs r3, #0x80 tst r2, r3 bne _080089C0 -_08008960: - ldrb r3, [r1, #5] +_08008960: // r1 = gPlayerState + ldrb r3, [r1, #5] // heldObject cmp r3, #2 - beq _0800891C + beq reset_vel cmp r3, #1 - beq _0800891C - ldr r4, _08008A74 @ =_080088FC + beq reset_vel + ldr r4, _08008A74 @ =ice_velocities ldrb r3, [r1, #2] adds r1, r2, #0 - orrs r3, r3 + orrs r3, r3 // jump_status != 0 beq _08008992 push {r2} movs r3, #0x14 - ldrb r1, [r0, r3] + ldrb r1, [r0, r3] // field_0x14 lsrs r1, r1, #1 lsls r1, r1, #1 lsrs r2, r2, #2 @@ -544,7 +544,7 @@ _08008960: adds r2, #2 movs r4, #7 ands r2, r4 - ldr r4, _08008A78 @ =_080088EC + ldr r4, _08008A78 @ =velocities1 cmp r2, #4 beq _08008992 bhs _080089A8 @@ -557,25 +557,25 @@ _08008992: ldrsb r2, [r4, r3] adds r3, #1 ldrsb r3, [r4, r3] - bl sub_08008A46 + bl AddPlayerVelocity b _080089C0 _080089A8: movs r3, #0x14 ldrb r3, [r0, r3] lsrs r3, r3, #1 lsls r3, r3, #1 - ldr r4, _08008A7C @ =_0800890C + ldr r4, _08008A7C @ =velocities3 adds r4, r4, r3 movs r3, #0 ldrsb r2, [r4, r3] adds r3, #1 ldrsb r3, [r4, r3] - bl sub_08008A46 + bl AddPlayerVelocity _080089C0: ldr r1, _08008A80 @ =gPlayerState movs r4, #0x8c movs r2, #8 - ldrsh r3, [r1, r4] + ldrsh r3, [r1, r4] // vel_x orrs r3, r3 beq _080089E4 bpl _080089D2 @@ -585,7 +585,7 @@ _080089D2: push {r0, r1} adds r1, r3, #0 push {r2} - bl sub_080027EA + bl LinearMoveDirectionOLD pop {r0} bl sub_0807A5B8 pop {r0, r1} @@ -602,7 +602,7 @@ _080089F4: push {r0, r1} adds r1, r3, #0 push {r2} - bl sub_080027EA + bl LinearMoveDirectionOLD pop {r0} bl sub_0807A5B8 pop {r0, r1} @@ -646,18 +646,18 @@ _08008A3E: beq _08008A3A b _08008A38 - non_word_aligned_thumb_func_start sub_08008A46 -sub_08008A46: @ 0x08008A46 + non_word_aligned_thumb_func_start AddPlayerVelocity +AddPlayerVelocity: @ 0x08008A46 push {lr} ldr r1, _08008A84 @ =gPlayerState movs r4, #0x8c - ldrsh r5, [r1, r4] + ldrsh r5, [r1, r4] // vel_x adds r5, r5, r2 - bl sub_08008A88 - movs r4, #0x8e + bl ClampPlayerVelocity + movs r4, #0x8e // vel_y ldrsh r5, [r1, r4] adds r5, r5, r3 - bl sub_08008A88 + bl ClampPlayerVelocity pop {pc} _08008A60: eors r3, r3 @@ -667,14 +667,14 @@ _08008A60: _08008A68: .4byte gPlayerState _08008A6C: .4byte gPlayerState _08008A70: .4byte gPlayerState -_08008A74: .4byte _080088FC -_08008A78: .4byte _080088EC -_08008A7C: .4byte _0800890C +_08008A74: .4byte ice_velocities +_08008A78: .4byte velocities1 +_08008A7C: .4byte velocities3 _08008A80: .4byte gPlayerState _08008A84: .4byte gPlayerState - thumb_func_start sub_08008A88 -sub_08008A88: @ 0x08008A88 + thumb_func_start ClampPlayerVelocity +ClampPlayerVelocity: @ 0x08008A88 orrs r5, r5 bmi _08008A94 ldr r6, _08008B38 @ =0x00000180 @@ -758,13 +758,13 @@ CheckNEastTile: @ 0x08008B02 push {r0, r1, lr} movs r1, #0 movs r2, #0 - bl GetRelativeCollisionTile + bl GetActTileRelative // check if north east collision? ldr r1, =0x4000 tst r0, r1 bne _08008B1E ldr r1, =gUnk_08007CAC - bl sub_08007DE0 + bl ActTileConv movs r2, #1 cmp r3, #1 beq _08008B20 diff --git a/asm/src/script.s b/asm/src/script.s index f1fc3cfde..fd37d8f8c 100644 --- a/asm/src/script.s +++ b/asm/src/script.s @@ -4,32 +4,33 @@ .syntax unified .text + .thumb + + .macro transition_tile tile:req, src_layer:req dest_layer:req + .short \tile + .byte \src_layer, \dest_layer + .endm + gUnk_08016984:: @ 08016984 .incbin "code_08016984/gUnk_08016984.bin" - .text - - non_word_aligned_thumb_func_start GetNextScriptCommandHalfword -GetNextScriptCommandHalfword: @ 0x08016986 +GetNextScriptCommandHalfword:: ldrh r0, [r0] bx lr - non_word_aligned_thumb_func_start GetNextScriptCommandHalfwordAfterCommandMetadata -GetNextScriptCommandHalfwordAfterCommandMetadata: @ 0x0801698A +GetNextScriptCommandHalfwordAfterCommandMetadata:: ldrh r0, [r0, #2] bx lr - non_word_aligned_thumb_func_start GetNextScriptCommandWord -GetNextScriptCommandWord: @ 0x0801698E +GetNextScriptCommandWord:: ldrh r1, [r0] ldrh r0, [r0, #2] lsls r0, r0, #0x10 orrs r0, r1 bx lr - thumb_func_start GetNextScriptCommandWordAfterCommandMetadata -GetNextScriptCommandWordAfterCommandMetadata: @ 0x08016998 +GetNextScriptCommandWordAfterCommandMetadata:: ldrh r1, [r0, #2] ldrh r0, [r0, #4] lsls r0, r0, #0x10 @@ -37,17 +38,15 @@ GetNextScriptCommandWordAfterCommandMetadata: @ 0x08016998 bx lr .align 2, 0 -gUnk_080169A4:: - .byte 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x01, 0x00 - .byte 0xFF, 0x01, 0x00, 0x00, 0x02, 0xFF, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x02 - .byte 0x00, 0x00, 0x01, 0x01, 0x02, 0xFF, 0x02, 0xFE, 0xFE, 0x02, 0xFF, 0x03, 0xFD, 0xFF, 0xFE, 0x01 - .byte 0x01, 0xFD, 0xFF, 0xFF, 0x03, 0xFE, 0x02, 0x00, 0x00, 0xFF, 0xFE, 0x03, 0xFD, 0x02, 0xFF, 0x00 - .byte 0x00, 0xFD, 0x02, 0x00, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02 - .byte 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0x00, 0x00, 0x01, 0x00 - - thumb_func_start UpdateSpriteForCollisionLayer -UpdateSpriteForCollisionLayer: @ 0x08016A04 +gShakeOffsets:: + .byte 1, -1, 0, 1, 1, 0, 0, 1, -1, -1, 1, 0, -1, 1, 0, 0 + .byte 2, -1, 1, -2, 0, -1, -1, 0, -1, 1, -1, 2, 0, 0, 1, 1 + .byte 2, -1, 2, -2, -2, 2, -1, 3, -3, -1, -2, 1, 1, -3, -1, -1 + .byte 3, -2, 2, 0, 0, -1, -2, 3, -3, 2, -1, 0, 0, -3, 2, 0 + .byte 0, -1, 0, -2, 0, -1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1 + .byte 2, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 1, 0 + +UpdateSpriteForCollisionLayer:: movs r1, #0x38 ldrb r1, [r0, r1] lsls r1, r1, #1 @@ -69,8 +68,7 @@ UpdateSpriteForCollisionLayer: @ 0x08016A04 _08016A28: .byte 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40 - thumb_func_start ResolveCollisionLayer -ResolveCollisionLayer: @ 0x08016A30 +ResolveCollisionLayer:: push {r4, r5, lr} adds r4, r0, #0 movs r5, #0x38 @@ -102,41 +100,51 @@ _08016A64: bl UpdateSpriteForCollisionLayer pop {r4, r5, pc} - thumb_func_start sub_08016A6C -sub_08016A6C: @ 0x08016A6C +CheckOnLayerTransition:: push {r4, r5, lr} adds r4, r0, #0 - bl GetActTile - add r1, pc, #0x38 -_08016A76: - adds r1, #4 - ldrh r2, [r1] + bl GetActTile // tile under me + adr r1, gTransitionTiles-4 +loop: + adds r1, #4 // p += 4 + ldrh r2, [r1] // *(u16*)(p) cmp r2, #0 - beq _08016A90 + beq not_found cmp r2, r0 - bne _08016A76 + bne loop // found the tile under me? movs r2, #0x38 - ldrb r3, [r4, r2] - ldrb r5, [r1, #2] - cmp r3, r5 - beq _08016A90 - ldrb r5, [r1, #3] - strb r5, [r4, r2] -_08016A90: + ldrb r3, [r4, r2] // collision layer + ldrb r5, [r1, #2] // *(u8*)(p + 2) + cmp r3, r5 // am i on the right later? + beq not_found + ldrb r5, [r1, #3] // *(u8*)(p + 3) + strb r5, [r4, r2] // move to a new layer +not_found: pop {r4, r5, pc} .align 2, 0 -_08016A94: - .byte 0x2A, 0x00, 0x03, 0x03, 0x2D, 0x00, 0x03, 0x03, 0x2B, 0x00, 0x03, 0x03 - .byte 0x2C, 0x00, 0x03, 0x03, 0x4C, 0x00, 0x03, 0x03, 0x4E, 0x00, 0x03, 0x03, 0x4D, 0x00, 0x03, 0x03 - .byte 0x4F, 0x00, 0x03, 0x03, 0x0A, 0x00, 0x02, 0x01, 0x09, 0x00, 0x02, 0x01, 0x0C, 0x00, 0x01, 0x02 - .byte 0x0B, 0x00, 0x01, 0x02, 0x52, 0x00, 0x03, 0x03, 0x27, 0x00, 0x03, 0x03, 0x26, 0x00, 0x03, 0x03 - .byte 0x00, 0x00 - - non_word_aligned_thumb_func_start sub_08016AD2 -sub_08016AD2: @ 0x08016AD2 + + transition_tile 0x2A, 3, 3 + transition_tile 0x2D, 3, 3 + transition_tile 0x2B, 3, 3 + transition_tile 0x2C, 3, 3 + transition_tile 0x4C, 3, 3 + transition_tile 0x4E, 3, 3 + transition_tile 0x4D, 3, 3 + transition_tile 0x4F, 3, 3 +gTransitionTiles: + transition_tile 0x0A, 2, 1 + transition_tile 0x09, 2, 1 + transition_tile 0x0C, 1, 2 + transition_tile 0x0B, 1, 2 + transition_tile 0x52, 3, 3 + transition_tile 0x27, 3, 3 + transition_tile 0x26, 3, 3 + .short 0x0000 + +UpdateCollisionLayer:: push {r4, lr} adds r4, r0, #0 - bl sub_08016A6C + bl CheckOnLayerTransition push {r0} adds r0, r4, #0 bl UpdateSpriteForCollisionLayer diff --git a/asm/src/veneer.s b/asm/src/veneer.s index 2d4846274..45ffb90a8 100644 --- a/asm/src/veneer.s +++ b/asm/src/veneer.s @@ -54,8 +54,8 @@ CloneTile: @ 0x08000152 ldrh r0, [r3, r0] lsrs r2, r2, #2 - non_word_aligned_thumb_func_start SetTile -SetTile: @ r0 = tile type, r1, = tile position, r2 = layer + non_word_aligned_thumb_func_start SetBottomTile +SetBottomTile: @ r0 = tile type, r1, = tile position, r2 = layer push {r4-r7, lr} lsls r3, r2, #3 ldr r4, _08000208 @ =gUnk_08000228 @@ -65,7 +65,7 @@ SetTile: @ r0 = tile type, r1, = tile position, r2 = layer strh r0, [r5, r6] ldr r6, _0800020C @ =0x00004000 cmp r0, r6 - blo _0800019A + blo tile_wrong_type push {r1, r2} subs r4, r0, r6 ldr r3, _08000210 @ =gUnk_080B7910 @@ -77,12 +77,12 @@ SetTile: @ r0 = tile type, r1, = tile position, r2 = layer bl sub_08000148 pop {r0, r1} @ tilepos, layer push {r0, r1} - bl DeleteLoadedTileEntity + bl UnregisterInteractTile adds r0, r7, #0 pop {r1, r2} - bl sub_0801AF48 + bl RegisterInteractTile pop {r4, r5, r6, r7, pc} -_0800019A: +tile_wrong_type: adds r3, #4 ldr r4, [r4, r3] lsls r0, r0, #1 @@ -96,7 +96,7 @@ _0800019A: lsrs r2, r2, #2 bl sub_08000148 pop {r0, r1} - bl DeleteLoadedTileEntity + bl UnregisterInteractTile pop {r4, r5, r6, r7, pc} .align 2, 0 _080001C0: .4byte gMapBottom+0x6004 @@ -265,9 +265,9 @@ GetTileType: @ 0x080002B0 @ r0: Entity* @ r1: u32 @ r2: u32 - thumb_func_start GetRelativeCollisionTile -GetRelativeCollisionTile: @ 0x080002B4 - ldr r3, _08000320 @ =ram_GetRelativeCollisionTile + thumb_func_start GetActTileRelative +GetActTileRelative: @ 0x080002B4 + ldr r3, _08000320 @ =ram_GetActTileRelative bx r3 @ call 0x080B1AA8 @@ -410,7 +410,7 @@ _08000310: .4byte ram_GetTileTypeByPos _08000314: .4byte ram_sub_080B1A48 _08000318: .4byte ram_sub_080B1A58 _0800031C: .4byte ram_GetTileType -_08000320: .4byte ram_GetRelativeCollisionTile +_08000320: .4byte ram_GetActTileRelative _08000324: .4byte ram_GetActTile _08000328: .4byte ram_sub_080B1AB4 _0800032C: .4byte ram_sub_080B1AC8 diff --git a/include/asm.h b/include/asm.h index bb768be3e..a6c7db621 100644 --- a/include/asm.h +++ b/include/asm.h @@ -9,7 +9,7 @@ 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); -extern void SetTile(u32 index, u32 position, u32 layer); +extern void SetBottomTile(u32 index, u32 position, u32 layer); extern void UpdateScrollVram(void); extern u32 sub_080B1B0C(struct Entity_*); extern u32 sub_080B1BA4(u32, u32, u32); @@ -29,7 +29,7 @@ u32 BounceUpdate(struct Entity_*, u32 acceleration); extern u32 CheckOnScreen(struct Entity_*); extern bool32 EntityInRectRadius(struct Entity_*, struct Entity_*, u32, u32); extern void UpdateAnimationVariableFrames(struct Entity_*, u32); -extern u32 sub_080043E8(struct Entity_*); +extern u32 GetTileHazardType(struct Entity_*); /** * Basic collision, only used between player and dazed enemies. * (Probablity leftover from Four Swords) @@ -44,7 +44,7 @@ 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_*); -extern u32 sub_08007DD6(u32, const u16*); +extern u32 ActTileToTile(u32, const u16*); extern void SoundReqClipped(struct Entity_*, u32); extern u32 sub_0800132C(struct Entity_*, struct Entity_*); extern u32 sub_080B1B44(u32, u32); @@ -54,7 +54,7 @@ extern u32 sub_080B1AE0(u16, u8); extern u32 GetActTile(struct Entity_*); extern u32 sub_0800445C(struct Entity_*); extern u32 sub_080B1AF0(struct Entity_*, s32, s32); -extern u32 GetRelativeCollisionTile(struct Entity_*, u32, u32); +extern u32 GetActTileRelative(struct Entity_*, u32, u32); extern bool32 sub_080B1B54(u32); extern u32 CheckRectOnScreen(s32, s32, u32, u32); diff --git a/include/collision.h b/include/collision.h index af8ba9847..465d3e9fe 100644 --- a/include/collision.h +++ b/include/collision.h @@ -6,6 +6,16 @@ /** Collisions. */ +enum { + COL_LANTERN = 0x7, + COL_SMALL_GUST = 0x13, + COL_BOOMERANG = 0x14, + COL_ARROW = 0x15, + COL_BIG_GUST = 0x1b, + COL_PACCI = 0x1d, + COL_SWORD_BEAM = 0x21, +}; + typedef enum { COL_NONE = 0x0, COL_NORTH_WEST = 0x2, diff --git a/include/enemy.h b/include/enemy.h index 28a236abc..c799f0589 100644 --- a/include/enemy.h +++ b/include/enemy.h @@ -62,7 +62,6 @@ void EnemySetFXOffset(Entity*, s32, s32, s32); Entity* EnemyCreateProjectile(Entity*, u32, u32); void GenericDeath(Entity*); -void sub_08002724(void*, u8*); void sub_080026C4(u8*, u8*, u8*, u32); void sub_080026F2(u8*, void*, u8*, u32); bool32 sub_08049FA0(Entity*); diff --git a/include/entity.h b/include/entity.h index 315e94db8..8a66283c7 100644 --- a/include/entity.h +++ b/include/entity.h @@ -79,6 +79,8 @@ typedef enum { DirectionNorthWest = 0x1c, /**< North West. */ } Direction; +#define CONTACT_TAKE_DAMAGE 0x80 + typedef struct { void* entity1; void* entity2; diff --git a/include/functions.h b/include/functions.h index 2d8439675..5d4b01fe3 100644 --- a/include/functions.h +++ b/include/functions.h @@ -14,10 +14,10 @@ // Identified - to be sorted into header files extern u32 CheckRegionOnScreen(u32, u32, u32, u32); extern void CopyOAM(void); -extern void CreateChestSpawner(Entity*); +extern void CreateLavaDrownFX(Entity*); extern Entity* CreateGroundItem(Entity*, u32, u32); extern Entity* CreateGroundItemWithFlags(Entity*, u32, u32, u32); -extern void CreateItemOnGround(Entity*); +extern void CreatePitFallFX(Entity*); extern void CreateMagicSparkles(u32, u32, u32); extern void CreateMinishEntrance(u32 tile); extern u32 CreateRandomItemDrop(Entity*, u32); @@ -25,7 +25,7 @@ extern void DrawDirect(u32 spriteIndex, u32 frameIndex); extern void DrawEntities(void); extern bool32 EntityWithinDistance(Entity*, s32, s32, s32); extern void FlushSprites(void); -extern LayerStruct* GetLayerByIndex(u32); +extern LayerStruct* GetTileBuffer(u32); extern u32 GetTileIndex(u32 tilePos, u32 layer); extern u32 GiveItem(u32, u32); extern bool32 LoadFixedGFX(Entity*, u32); @@ -57,7 +57,7 @@ extern u32 sub_080B1B18(s32, s32, u32); extern u32 sub_080B1B44(u32, u32); extern s32 sub_080012DC(Entity*); extern void sub_08001318(Entity*); -extern void sub_080027EA(Entity*, u32, u32); +extern void LinearMoveDirectionOLD(Entity*, u32, u32); extern void sub_080028E0(Entity*); extern u32 sub_080040A2(Entity*); extern u32 sub_080040D8(Entity*, u8*, s32, s32); @@ -66,15 +66,15 @@ extern u32 sub_0800419C(Entity*, Entity*, u32, u32); extern u32 sub_080041DC(Entity*, u32, u32); extern void sub_080042BA(Entity*, u32); extern void sub_080042D0(Entity*, u32, u16); -extern void sub_080043A8(Entity*); +extern void CreateDrownFX(Entity*); extern u32 sub_0800445C(Entity*); extern void sub_080044AE(Entity*, u32, u32); extern u32 BounceUpdate(Entity*, u32); extern void sub_0800451C(Entity*); extern void sub_08004542(Entity*); extern void sub_080085B0(Entity*); -extern u16* sub_08008796(Entity*, u32, u32, u32); -extern void sub_08016AD2(Entity*); +extern u16* DoTileInteraction(Entity*, u32, u32, u32); +extern void UpdateCollisionLayer(Entity*); extern u32 sub_0801766C(Entity*); extern void sub_0801AFE4(void); extern void UpdateUIElements(void); diff --git a/include/map.h b/include/map.h index b943ca2e6..9859fa397 100644 --- a/include/map.h +++ b/include/map.h @@ -6,18 +6,18 @@ typedef struct { /*0x0000*/ BgSettings* bgSettings; - /*0x0004*/ u16 mapData[0x1000]; // tilemap data? <-- gMapDataTop / gMapDataBottom - /*0x2004*/ u8 collisionData[0x1000]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4 - /*0x3004*/ u16 mapDataClone[0x1000]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4 - /*0x5004*/ u16 metatileTypes[0x800]; // gMetatileTypesTop, gMetatileTypesBottom - /*0x6004*/ u16 unkData2[0x800]; // gUnk_02011654,gUnk_0202BEB4 - /*0x7004*/ u16 metatiles[0x2000]; // gMetatilesTop, gMetatilesBottom - /*0xb004*/ u8 unkData3[0x1000]; // gUnk_02016654, gUnk_02030EB4 + /*0x0004*/ u16 mapData[0x1000]; // tilemap data? <-- gMapDataTop / gMapDataBottom + /*0x2004*/ u8 collisionData[0x1000]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4 + /*0x3004*/ u16 mapDataOriginal[0x1000]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4 + /*0x5004*/ u16 metatileTypes[0x800]; // gMetatileTypesTop, gMetatileTypesBottom + /*0x6004*/ u16 unkData2[0x800]; // gUnk_02011654,gUnk_0202BEB4 + /*0x7004*/ u16 metatiles[0x2000]; // gMetatilesTop, gMetatilesBottom + /*0xb004*/ u8 unkData3[0x1000]; // gUnk_02016654, gUnk_02030EB4 } LayerStruct; extern LayerStruct gMapTop; extern LayerStruct gMapBottom; -LayerStruct* GetLayerByIndex(u32); +LayerStruct* GetTileBuffer(u32); #endif // MAP_H diff --git a/include/player.h b/include/player.h index d22b89688..0f0aa0275 100644 --- a/include/player.h +++ b/include/player.h @@ -762,7 +762,7 @@ void PlayerShrinkByRay(void); // player.s extern u32 PlayerCheckNEastTile(); -extern u32* sub_08008790(Entity*, u32); +extern u32* DoTileInteractionHere(Entity*, u32); extern void UpdateIcePlayerVelocity(Entity*); extern void sub_08008AC6(Entity*); extern void sub_08008926(Entity*); diff --git a/include/tiles.h b/include/tiles.h index 1d3cac901..2dd6783a4 100644 --- a/include/tiles.h +++ b/include/tiles.h @@ -1,6 +1,23 @@ #ifndef TILES_H #define TILES_H +typedef enum { + TILE_ACT_CUT = 0x0, + TILE_ACT_ROCKBREAKER = 0x1, + TILE_ACT_BOOMERANG = 0x2, + TILE_ACT_BOMB = 0x3, + TILE_ACT_ARROW = 0x4, + TILE_ACT_GUST = 0x5, + TILE_ACT_LIFT = 0x6, + TILE_ACT_FIRE = 0x7, + TILE_ACT_PLAYER_WALK = 0x8, + TILE_ACT_ENEMY_WALK = 0x9, + TILE_ACT_PACCI = 0xA, + TILE_ACT_SWORDBEAM = 0xC, + TILE_ACT_DIG = 0xD, + TILE_ACT_MINIGUST = 0xE, +} TileInteraction; + typedef enum { CUT_BUSH = 0x1C, CUT_GRASS = 0x1D, diff --git a/linker.ld b/linker.ld index 7099a9abb..eb2a4578f 100644 --- a/linker.ld +++ b/linker.ld @@ -169,7 +169,7 @@ SECTIONS { . = 0x000057BC; ram_sub_080B1A48 = .; . = 0x000057CC; ram_sub_080B1A58 = .; . = 0x000057D4; ram_GetTileType = .; - . = 0x00005800; ram_GetRelativeCollisionTile = .; + . = 0x00005800; ram_GetActTileRelative = .; . = 0x0000581C; ram_GetActTile = .; . = 0x00005828; ram_sub_080B1AB4 = .; . = 0x0000583C; ram_sub_080B1AC8 = .; diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index 3b26138ad..beacfffcb 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -217,7 +217,7 @@ u32 UpdatePlayerCollision(void) { } } } - layer = GetLayerByIndex(gPlayerEntity.base.collisionLayer); + layer = GetTileBuffer(gPlayerEntity.base.collisionLayer); ptr1 = &gUnk_080B4468[gPlayerEntity.base.animationState & 6]; position = COORD_TO_TILE_OFFSET(&gPlayerEntity.base, -ptr1[0], -ptr1[1]); tileType = GetTileType(position, gPlayerEntity.base.collisionLayer); @@ -509,13 +509,13 @@ u32 UpdatePlayerCollision(void) { if (gPlayerState.field_0x35 != 0) { return 0; } - SetTile(0x4054, position, gPlayerEntity.base.collisionLayer); + SetBottomTile(0x4054, position, gPlayerEntity.base.collisionLayer); return 4; case 0x4053: if (gPlayerState.field_0x35 != 6) { return 0; } - SetTile(0x4054, position, gPlayerEntity.base.collisionLayer); + SetBottomTile(0x4054, position, gPlayerEntity.base.collisionLayer); return 4; case 0x4055: position--; @@ -529,7 +529,7 @@ u32 UpdatePlayerCollision(void) { } for (index = 0; index < 3; index++) { if (sub_0801A8D0(gPlayerClones[index], 0) == position) { - SetTile(0x4059, position, gPlayerEntity.base.collisionLayer); + SetBottomTile(0x4059, position, gPlayerEntity.base.collisionLayer); return 4; } } @@ -546,7 +546,7 @@ u32 UpdatePlayerCollision(void) { } for (index = 0; index < 3; index++) { if (sub_0801A8D0(gPlayerClones[index], 6) == position) { - SetTile(0x4059, position, gPlayerEntity.base.collisionLayer); + SetBottomTile(0x4059, position, gPlayerEntity.base.collisionLayer); return 4; } } @@ -563,7 +563,7 @@ u32 UpdatePlayerCollision(void) { if ((gPlayerEntity.base.frame & 1) == 0) { return 0; } - SetTile(0x4074, position, gPlayerEntity.base.collisionLayer); + SetBottomTile(0x4074, position, gPlayerEntity.base.collisionLayer); gPlayerState.pushedObject = 0xa0; gPlayerState.queued_action = PLAYER_PUSH; gPlayerState.flags |= PL_BUSY; @@ -582,7 +582,7 @@ u32 UpdatePlayerCollision(void) { if ((gPlayerEntity.base.frame & 1) == 0) { return 0; } - SetTile(0x4074, position, gPlayerEntity.base.collisionLayer); + SetBottomTile(0x4074, position, gPlayerEntity.base.collisionLayer); sub_080001D0(0xd, position, gPlayerEntity.base.collisionLayer); return 1; default: @@ -638,7 +638,7 @@ bool32 sub_0801A370(LayerStruct* layer, u32 position) { if (!sub_0801A4F8()) { return FALSE; } - topLayer = GetLayerByIndex(2); + topLayer = GetTileBuffer(2); offset = gUnk_080B4488[gPlayerEntity.base.animationState >> 1]; pos = position + offset; tileType = GetTileType(pos, gPlayerEntity.base.collisionLayer); @@ -748,7 +748,7 @@ u32 sub_0801A570(Entity* this, u32 param_2) { if (this == NULL) { return 0xffff; } - layer = GetLayerByIndex(this->collisionLayer); + layer = GetTileBuffer(this->collisionLayer); metatileTypes = layer->metatileTypes; index1 = 4; index2 = 2; @@ -904,7 +904,7 @@ u32 sub_0801A8D0(Entity* this, u32 param_2) { if (this == NULL) return 0xffff; - mapData = GetLayerByIndex(this->collisionLayer)->mapData; + mapData = GetTileBuffer(this->collisionLayer)->mapData; if (param_2 == 0) { position = COORD_TO_TILE_OFFSET(this, 0, 8); tile = mapData[position]; @@ -930,7 +930,7 @@ u32 sub_0801A8D0(Entity* this, u32 param_2) { bool32 sub_0801A980(void) { u16 tileType; const s16* ptr; - GetLayerByIndex(gPlayerEntity.base.collisionLayer); + GetTileBuffer(gPlayerEntity.base.collisionLayer); ptr = &gUnk_080B44A8[gPlayerEntity.base.animationState & 6]; tileType = GetTileType(COORD_TO_TILE_OFFSET(&gPlayerEntity.base, -ptr[0], -ptr[1]), gPlayerEntity.base.collisionLayer); @@ -982,7 +982,7 @@ bool32 sub_0801AA58(Entity* this, u32 param_2, u32 param_3) { Entity* object; u32 temp; - layer = GetLayerByIndex(this->collisionLayer); + layer = GetTileBuffer(this->collisionLayer); if (((layer->collisionData[param_2 + gUnk_080B4488[param_3 >> 3]] == 0) || ((u8)(layer->collisionData[param_2 + gUnk_080B4488[param_3 >> 3]] - 0x20) < 0x20))) { @@ -1007,7 +1007,7 @@ bool32 sub_0801AA58(Entity* this, u32 param_2, u32 param_3) { void sub_0801AB08(u16* specialData, LayerStruct* layer) { u16* metatiles; u16* mapData; - u16* mapDataClone; + u16* mapDataOriginal; u16 index; u16 innerIndex; u32 tmp2; @@ -1020,7 +1020,7 @@ void sub_0801AB08(u16* specialData, LayerStruct* layer) { tmp3 = 2; } tmp2 = tmp3 << 0xc; - mapDataClone = layer->mapDataClone; + mapDataOriginal = layer->mapDataOriginal; mapData = layer->mapData; for (index = 0; index < 0x40; index++) { @@ -1028,7 +1028,7 @@ void sub_0801AB08(u16* specialData, LayerStruct* layer) { if (mapData[0] < 0x4000) { tmp1 = mapData[0] << 2; } else { - tmp1 = sub_0801AC68(tmp2, mapDataClone[0]); + tmp1 = sub_0801AC68(tmp2, mapDataOriginal[0]); } metatiles = layer->metatiles + tmp1; specialData[0] = metatiles[0]; @@ -1039,7 +1039,7 @@ void sub_0801AB08(u16* specialData, LayerStruct* layer) { if (mapData[1] < 0x4000) { tmp1 = mapData[1] << 2; } else { - tmp1 = sub_0801AC68(tmp2 + 1, mapDataClone[1]); + tmp1 = sub_0801AC68(tmp2 + 1, mapDataOriginal[1]); } metatiles = layer->metatiles + tmp1; specialData[0] = metatiles[0]; @@ -1050,7 +1050,7 @@ void sub_0801AB08(u16* specialData, LayerStruct* layer) { if (mapData[2] < 0x4000) { tmp1 = mapData[2] << 2; } else { - tmp1 = sub_0801AC68(tmp2 + 2, mapDataClone[2]); + tmp1 = sub_0801AC68(tmp2 + 2, mapDataOriginal[2]); } metatiles = layer->metatiles + tmp1; specialData[0] = metatiles[0]; @@ -1061,7 +1061,7 @@ void sub_0801AB08(u16* specialData, LayerStruct* layer) { if (mapData[3] < 0x4000) { tmp1 = mapData[3] << 2; } else { - tmp1 = sub_0801AC68(tmp2 + 3, mapDataClone[3]); + tmp1 = sub_0801AC68(tmp2 + 3, mapDataOriginal[3]); } metatiles = layer->metatiles + tmp1; specialData[0] = metatiles[0]; @@ -1071,7 +1071,7 @@ void sub_0801AB08(u16* specialData, LayerStruct* layer) { specialData += 2; mapData += 4; - mapDataClone += 4; + mapDataOriginal += 4; tmp2 = (u16)(tmp2 + 4); } specialData = specialData + 0x80; @@ -1215,13 +1215,13 @@ void sub_0801AE44(bool32 loadGfx) { void SetMultipleTiles(const TileData* tileData, u32 basePosition, u32 layer) { while (tileData->tile != -1) { - SetTile((u16)tileData->tile, basePosition + tileData->position, layer); + SetBottomTile((u16)tileData->tile, basePosition + tileData->position, layer); tileData++; } } // Add a new entry at the end of gUnk_0200B240 -void sub_0801AF48(u32 data, u32 position, u32 layer) { +void RegisterInteractTile(u32 data, u32 position, u32 layer) { u32 index; if ((data < 0x4000) && (gRoomTransition.field30 == 0)) { index = gRoomVars.tileEntityCount; @@ -1233,7 +1233,7 @@ void sub_0801AF48(u32 data, u32 position, u32 layer) { } } -void DeleteLoadedTileEntity(u32 position, s32 layer) { +void UnregisterInteractTile(u32 position, s32 layer) { u32 count; struct_0200B240* ptr; u32 positionLayer; @@ -1289,7 +1289,7 @@ void sub_0801AFE4(void) { for (x = 0; x < width; x++) { for (ptr = gUnk_080B44D0; ptr->collision != 0; ptr++) { if (ptr->collision == *collisionData) { - SetTile(ptr->tileIndex, y * 0x40 + x, 1); + SetBottomTile(ptr->tileIndex, y * 0x40 + x, 1); break; } } diff --git a/src/code_08049DF4.c b/src/code_08049DF4.c index ebfd458ce..89cf62167 100644 --- a/src/code_08049DF4.c +++ b/src/code_08049DF4.c @@ -167,7 +167,7 @@ u32 sub_0804A044(Entity* entA, Entity* entB, u32 arg2) { //! @bug flags & 5 can never equal 0xA if (flags && ((flags & 5) != 0xA)) { - layer = GetLayerByIndex(entA->collisionLayer); + layer = GetTileBuffer(entA->collisionLayer); if (xDiff < 0) { xDiff = -xDiff; } diff --git a/src/collision.c b/src/collision.c index d1408375f..6dda05c31 100644 --- a/src/collision.c +++ b/src/collision.c @@ -371,7 +371,7 @@ CollisionResult CollisionNoOp(Entity* org, Entity* tgt, u32 direction, ColSettin // target: item CollisionResult CollisionGroundItem(Entity* org, Entity* tgt, u32 direction, ColSettings* settings) { COLLISION_OFF(tgt); - tgt->contactFlags = org->hurtType | 0x80; + tgt->contactFlags = org->hurtType | CONTACT_TAKE_DAMAGE; if ((tgt->type == 0x5F || tgt->type == 0x60) && sub_08081420(tgt)) tgt->health = 0; return RESULT_COLLISION_WITHOUT_SET; @@ -503,7 +503,7 @@ CollisionResult sub_08017DD4(Entity* org, Entity* tgt, u32 direction, ColSetting sub_08079D84(); org->iframes = 90; } else { - gPlayerEntity.base.contactFlags = tgt->hurtType | 0x80; + gPlayerEntity.base.contactFlags = tgt->hurtType | CONTACT_TAKE_DAMAGE; gPlayerEntity.base.iframes = 12; gPlayerEntity.base.knockbackDuration = 16; gPlayerEntity.base.knockbackDirection = DirectionTurnAround(direction); diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index ac12c3133..73911ecfd 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -96,7 +96,7 @@ void AcroBandit_OnTick(AcroBanditEntity* this) { void AcroBandit_OnCollision(AcroBanditEntity* this) { Entity* brother; - if (super->contactFlags != 0x80 && super->contactFlags != 0x81) { + if (super->contactFlags != CONTACT_TAKE_DAMAGE && super->contactFlags != (CONTACT_TAKE_DAMAGE | 0x1)) { if (super->type == 1) { if (super->action < 7 && super->knockbackDuration != 0) { brother = super->child; diff --git a/src/enemy/armos.c b/src/enemy/armos.c index 2824b950e..db597408f 100644 --- a/src/enemy/armos.c +++ b/src/enemy/armos.c @@ -337,7 +337,7 @@ bool32 sub_080305BC(ArmosEntity* this) { bool32 sub_08030650(ArmosEntity* this) { if (super->type == 0) { - if (super->contactFlags == 0x80) { + if (super->contactFlags == CONTACT_TAKE_DAMAGE) { return 1; } } else if (this->unk_80 != 2) { @@ -403,11 +403,11 @@ void sub_080307D4(ArmosEntity* this) { void sub_080307EC(ArmosEntity* this) { u32 position = COORD_TO_TILE(super); this->unk_78 = GetTileIndex(position, super->collisionLayer); - SetTile(0x4022, position, (u32)super->collisionLayer); + SetBottomTile(0x4022, position, (u32)super->collisionLayer); } void sub_08030834(ArmosEntity* this) { - SetTile(this->unk_78, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(this->unk_78, COORD_TO_TILE(super), super->collisionLayer); } bool32 sub_0803086C(ArmosEntity* this) { @@ -435,11 +435,11 @@ bool32 sub_0803086C(ArmosEntity* this) { return TRUE; } } else { - SetTile(0x4022, pos, super->collisionLayer); + SetBottomTile(0x4022, pos, super->collisionLayer); } } else { if (CheckPlayerInRegion(centerX, centerY + 6, 2, 5) != 0) { - SetTile(0x4049, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4049, COORD_TO_TILE(super), super->collisionLayer); } } } diff --git a/src/enemy/beetle.c b/src/enemy/beetle.c index 10263a309..75924746d 100644 --- a/src/enemy/beetle.c +++ b/src/enemy/beetle.c @@ -35,7 +35,7 @@ void Beetle_OnTick(BeetleEntity* this) { void Beetle_OnCollision(BeetleEntity* this) { switch (super->contactFlags) { - case 0x80: + case CONTACT_TAKE_DAMAGE: if (gPlayerState.framestate == PL_STATE_CLIMB) { Beetle_OnTick(this); } else { @@ -50,7 +50,7 @@ void Beetle_OnCollision(BeetleEntity* this) { InitializeAnimation(super, 6); } break; - case 0x93: + case CONTACT_TAKE_DAMAGE | 0x13: Beetle_OnTick(this); break; } diff --git a/src/enemy/bobomb.c b/src/enemy/bobomb.c index f007f779e..7dfae72ec 100644 --- a/src/enemy/bobomb.c +++ b/src/enemy/bobomb.c @@ -38,7 +38,7 @@ void Bobomb_OnTick(BobombEntity* this) { } void Bobomb_OnCollision(BobombEntity* this) { - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { switch (super->contactFlags & 0x7f) { case 0: case 1: diff --git a/src/enemy/bowMoblin.c b/src/enemy/bowMoblin.c index 3a86b0166..6a1176ee8 100644 --- a/src/enemy/bowMoblin.c +++ b/src/enemy/bowMoblin.c @@ -56,7 +56,7 @@ void BowMoblin_OnCollision(BowMoblinEntity* this) { EnemyCreateFX(super, FX_STARS); } EnemyFunctionHandlerAfterCollision(super, (EntityActionArray)BowMoblin_Functions); - if ((super->contactFlags & 0x80) != 0) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { sub_0803C5F0(this); pEVar1 = super->child; if (pEVar1 != NULL) { diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index a770f1d9f..5a2f0d9b6 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -442,7 +442,7 @@ void sub_08028FFC(BusinessScrubEntity* this) { super->x.HALF.HI = this->unk_78; super->y.HALF.HI = this->unk_7a; InitializeAnimation(super, 0); - SetTile(0x4022, this->unk_76, super->collisionLayer); + SetBottomTile(0x4022, this->unk_76, super->collisionLayer); } void sub_08029078(BusinessScrubEntity* this) { @@ -456,7 +456,7 @@ void sub_08029078(BusinessScrubEntity* this) { super->spriteIndex = 0xd0; sub_08028FDC(this); sub_080290E0(this, 1); - SetTile(this->unk_74, this->unk_76, super->collisionLayer); + SetBottomTile(this->unk_74, this->unk_76, super->collisionLayer); } } diff --git a/src/enemy/chaser.c b/src/enemy/chaser.c index 9255b1f15..3c374cd44 100644 --- a/src/enemy/chaser.c +++ b/src/enemy/chaser.c @@ -43,7 +43,7 @@ void sub_0802B540(Entity* this) { void sub_0802B56C(Entity* this) { GetNextFrame(this); - if (this->contactFlags & 0x80) { + if (this->contactFlags & CONTACT_TAKE_DAMAGE) { this->speed = 0x40; } diff --git a/src/enemy/chuchu.c b/src/enemy/chuchu.c index 41ac71c4f..95a08744f 100644 --- a/src/enemy/chuchu.c +++ b/src/enemy/chuchu.c @@ -34,7 +34,7 @@ void sub_0801FAF8(ChuchuEntity* this); void sub_0801FB14(ChuchuEntity* this); void sub_0801FB34(ChuchuEntity* this); void sub_0801FB68(ChuchuEntity* this); -u32 sub_0801FBD0(ChuchuEntity* this); +u32 CheckWaterTile(ChuchuEntity* this); void Chuchu_JumpAtPlayer(ChuchuEntity* this); extern void (*const Chuchu_Functions[])(ChuchuEntity*); @@ -72,7 +72,7 @@ void Chuchu(ChuchuEntity* this) { /* ... */ break; case 2: - sub_080043A8(super); + CreateDrownFX(super); return; } } @@ -196,7 +196,7 @@ void sub_0801F0C8(ChuchuEntity* this) { } void sub_0801F12C(ChuchuEntity* this) { - if (sub_0801FBD0(this)) { + if (CheckWaterTile(this)) { sub_0801F328(this); } else { if ((super->subtimer++ & 7) == 0) { @@ -232,7 +232,7 @@ void sub_0801F1B0(ChuchuEntity* this) { } if (super->frame & ANIM_DONE) { - if (sub_0801FBD0(this)) { + if (CheckWaterTile(this)) { sub_0801F328(this); } else { sub_0801F340(this); @@ -261,7 +261,7 @@ void sub_0801F270(ChuchuEntity* this) { ProcessMovement5(super); GetNextFrame(super); - if (sub_0801FBD0(this)) + if (CheckWaterTile(this)) return; if (--super->timer != 0) @@ -390,7 +390,7 @@ void sub_0801F4EC(ChuchuEntity* this) { } void sub_0801F508(ChuchuEntity* this) { - if (sub_0801FBD0(this)) { + if (CheckWaterTile(this)) { this->unk_83 = 0; sub_0801F730(this); } else { @@ -429,7 +429,7 @@ void sub_0801F584(ChuchuEntity* this) { } if (super->frame & ANIM_DONE) { - if (sub_0801FBD0(this)) { + if (CheckWaterTile(this)) { this->unk_83 = 0; sub_0801F730(this); } else { @@ -464,7 +464,7 @@ void sub_0801F688(ChuchuEntity* this) { if (this->unk_83) this->unk_83--; - if (sub_0801FBD0(this) || this->unk_83) { + if (CheckWaterTile(this) || this->unk_83) { super->direction = sub_08049F84(super, 1); ProcessMovement5(super); GetNextFrame(super); @@ -572,7 +572,7 @@ void sub_0801F884(ChuchuEntity* this) { } void sub_0801F8C0(ChuchuEntity* this) { - if (sub_0801FBD0(this)) { + if (CheckWaterTile(this)) { sub_0801FAE0(this); } else if (sub_08049FDC(super, 1) == 0) { sub_0801F730(this); @@ -605,7 +605,7 @@ void sub_0801F940(ChuchuEntity* this) { } if (super->frame & ANIM_DONE) { - if (sub_0801FBD0(this)) { + if (CheckWaterTile(this)) { sub_0801FAE0(this); } else { super->action = 6; @@ -635,7 +635,7 @@ void sub_0801F9E0(ChuchuEntity* this) { } void sub_0801FA30(ChuchuEntity* this) { - if (sub_0801FBD0(this)) { + if (CheckWaterTile(this)) { super->direction = sub_08049F84(super, 1); ProcessMovement5(super); GetNextFrame(super); @@ -714,7 +714,7 @@ void sub_0801FB68(ChuchuEntity* this) { super->zVelocity = 0; } -u32 sub_0801FBD0(ChuchuEntity* this) { +u32 CheckWaterTile(ChuchuEntity* this) { if (GetActTile(super) == 0x10) { return 1; } else { diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c index ca4900037..c9ee902c7 100644 --- a/src/enemy/chuchuBoss.c +++ b/src/enemy/chuchuBoss.c @@ -561,7 +561,7 @@ void sub_080262A8(ChuchuBossEntity* this) { gPlayerEntity.base.animationState = 0; gRoomControls.camera_target = super; gRoomControls.scrollSpeed = 1; - SetTile(0x4022, 0x2c8, 1); + SetBottomTile(0x4022, 0x2c8, 1); } } @@ -1346,7 +1346,7 @@ void sub_080272D4(ChuchuBossEntity* this) { super->hitbox->height = (u32)((0x10000 / this->unk_74.HALF_U.HI) * 5) >> 6; if (*(char*)&this->unk_84 == 0) break; - if ((super->contactFlags & 0x80) != 0) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { if (super->iframes != 0) { ((ChuchuBossEntity*)super->child)->unk_68->base.iframes = super->iframes; super->child->parent->iframes = super->iframes; @@ -1697,7 +1697,7 @@ bool32 sub_08027AA4(ChuchuBossEntity* this) { s32 iVar4; Helper* pHelper; - if ((super->contactFlags & 0x80) == 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) == 0) { return FALSE; } switch (super->contactFlags & 0x7f) { diff --git a/src/enemy/cloudPiranha.c b/src/enemy/cloudPiranha.c index 14296cd6e..64bf98cc6 100644 --- a/src/enemy/cloudPiranha.c +++ b/src/enemy/cloudPiranha.c @@ -58,7 +58,7 @@ void CloudPiranha_OnCollision(CloudPiranhaEntity* this) { EnemyCreateFX(super, FX_STARS); } EnemyFunctionHandlerAfterCollision(super, gUnk_080CF4F0); - if ((super->contactFlags & 0x80) != 0) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { if (super->hitType == 0x5a) { switch (super->contactFlags & 0x3f) { case 0x14: diff --git a/src/enemy/crow.c b/src/enemy/crow.c index 4f0c587bb..c540e4ae5 100644 --- a/src/enemy/crow.c +++ b/src/enemy/crow.c @@ -44,7 +44,7 @@ void Crow_OnTick(CrowEntity* this) { } void Crow_OnCollision(CrowEntity* this) { - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { if ((super->contactFlags & 0x3f) == 0) { COLLISION_OFF(super); super->subtimer = 16; diff --git a/src/enemy/darkNut.c b/src/enemy/darkNut.c index f5d0919e9..39820a644 100644 --- a/src/enemy/darkNut.c +++ b/src/enemy/darkNut.c @@ -335,7 +335,8 @@ void sub_080210E4(DarkNutEntity* this) { } sub_08021644(this); - if ((super->frame & 0x10) && (!ProcessMovement0(super) || (super->child && (super->child->contactFlags & 0x80)))) { + if ((super->frame & 0x10) && + (!ProcessMovement0(super) || (super->child && (super->child->contactFlags & CONTACT_TAKE_DAMAGE)))) { sub_080213D0(this, 0); } else { if (--this->unk_76 == 0) diff --git a/src/enemy/doorMimic.c b/src/enemy/doorMimic.c index 344e284bc..b7c570371 100644 --- a/src/enemy/doorMimic.c +++ b/src/enemy/doorMimic.c @@ -48,7 +48,7 @@ void DoorMimic_OnCollision(DoorMimicEntity* this) { } void DoorMimic_OnDeath(DoorMimicEntity* this) { - SetTile(this->unk_7c, this->unk_7e, super->collisionLayer); + SetBottomTile(this->unk_7c, this->unk_7e, super->collisionLayer); CreateFx(super, FX_POT_SHATTER, 0); EnemyDisableRespawn(super); DeleteThisEntity(); @@ -125,7 +125,7 @@ void sub_080221C0(DoorMimicEntity* this) { u32 tile = COORD_TO_TILE(super) + gUnk_080B4488[super->type2]; this->unk_7e = tile; this->unk_7c = GetTileIndex(tile, super->collisionLayer); - SetTile(gUnk_080CB79C[super->type2], tile, super->collisionLayer); + SetBottomTile(gUnk_080CB79C[super->type2], tile, super->collisionLayer); } // clang-format off diff --git a/src/enemy/enemy50.c b/src/enemy/enemy50.c index 3839aabf7..9987ee888 100644 --- a/src/enemy/enemy50.c +++ b/src/enemy/enemy50.c @@ -79,15 +79,15 @@ void Enemy50_OnCollision(Enemy50Entity* this) { sub_08041134(this); sub_0803F6EC(this); } - if (super->hitType == 0x25 && super->contactFlags == 0x80) { + if (super->hitType == 0x25 && super->contactFlags == CONTACT_TAKE_DAMAGE) { super->action = 8; InitializeAnimation(super, 3); } else { - if (super->contactFlags == 0x80) { + if (super->contactFlags == CONTACT_TAKE_DAMAGE) { this->unk_7c = 0x78; sub_08041128(this); } - if (super->contactFlags == 0x9d) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) { super->zVelocity = Q_16_16(1.5); } if (super->confusedTime != 0) { @@ -422,7 +422,7 @@ void sub_0804122C(Enemy50Entity* this) { #ifndef EU bool32 sub_08041300(Enemy50Entity* this) { - if ((super->hitType == 0x25) && (super->contactFlags == 0x80)) { + if ((super->hitType == 0x25) && (super->contactFlags == CONTACT_TAKE_DAMAGE)) { return TRUE; } else { return super->action == 8 || super->action == 9; diff --git a/src/enemy/enemy64.c b/src/enemy/enemy64.c index 62bd707b3..be47abc96 100644 --- a/src/enemy/enemy64.c +++ b/src/enemy/enemy64.c @@ -85,10 +85,10 @@ void Enemy64_Init(Enemy64Entity* this) { Entity* tail; if (CheckFlags(0x7c)) { - SetTile(0x4081, 10, 2); - SetTile(0x4081, 0x4a, 2); - SetTile(0x4081, 0x8a, 2); - SetTile(0x4081, 0xca, 2); + SetBottomTile(0x4081, 10, 2); + SetBottomTile(0x4081, 0x4a, 2); + SetBottomTile(0x4081, 0x8a, 2); + SetBottomTile(0x4081, 0xca, 2); DeleteThisEntity(); } else { sub_0807B7D8(0x323, 10, 1); @@ -440,19 +440,19 @@ void Enemy64_Action4_SubAction7(Enemy64Entity* this) { DeleteThisEntity(); } else if (super->timer == 16) { sub_0807B7D8(0x36, 0xca, 1); - SetTile(0x4081, 0xca, 2); + SetBottomTile(0x4081, 0xca, 2); SoundReq(SFX_HEART_GET); } else if (super->timer == 24) { sub_0807B7D8(0x36, 0x8a, 1); - SetTile(0x4081, 0x8a, 2); + SetBottomTile(0x4081, 0x8a, 2); SoundReq(SFX_HEART_GET); } else if (super->timer == 32) { sub_0807B7D8(0x36, 0x4a, 1); - SetTile(0x4081, 0x4a, 2); + SetBottomTile(0x4081, 0x4a, 2); SoundReq(SFX_HEART_GET); } else if (super->timer == 40) { sub_0807B7D8(0x36, 10, 1); - SetTile(0x4081, 10, 2); + SetBottomTile(0x4081, 10, 2); SoundReq(SFX_HEART_GET); } } diff --git a/src/enemy/eyegore.c b/src/enemy/eyegore.c index 9c8eb9e1a..3b4ee58c7 100644 --- a/src/enemy/eyegore.c +++ b/src/enemy/eyegore.c @@ -82,14 +82,14 @@ void Eyegore_OnTick(EyegoreEntity* this) { void Eyegore_OnCollision(EyegoreEntity* this) { u32 tmp; - if ((super->contactFlags == 0x95) || (super->contactFlags == 0x8e)) { + if ((super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x15)) || (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0xe))) { Entity* entity = super->contactedEntity; tmp = (((entity->direction + 4) & 0x18) ^ 0x10) >> 3; if (tmp == super->animationState) { if ((tmp & 1) != 0) { if (0x10 < ((entity->y.HALF.HI + entity->z.HALF.HI) - (super->y.HALF.HI + super->z.HALF.HI)) + 0x14U) { } else { - if (super->contactFlags == 0x8e) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0xe)) { super->health = 0; } else { super->health--; @@ -105,7 +105,7 @@ void Eyegore_OnCollision(EyegoreEntity* this) { EnqueueSFX(SFX_BUTTON_PRESS); sub_08031344(this); } else { - if (super->contactFlags == 0x8e) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0xe)) { super->health = 0; } else { super->health--; @@ -335,18 +335,18 @@ void sub_08030F00(EyegoreEntity* this) { this->unk_84 = tileIndex; tileIndex = GetTileIndex(position + 0x41, super->collisionLayer); this->unk_86 = tileIndex; - SetTile(0x4022, position, super->collisionLayer); - SetTile(0x4022, position + 1, super->collisionLayer); - SetTile(0x4022, position + 0x40, super->collisionLayer); - SetTile(0x4022, position + 0x41, super->collisionLayer); + SetBottomTile(0x4022, position, super->collisionLayer); + SetBottomTile(0x4022, position + 1, super->collisionLayer); + SetBottomTile(0x4022, position + 0x40, super->collisionLayer); + SetBottomTile(0x4022, position + 0x41, super->collisionLayer); } void sub_08030FB4(EyegoreEntity* this) { u32 position = COORD_TO_TILE_OFFSET(super, 8, 0x14); - SetTile(this->unk_80, position, super->collisionLayer); - SetTile(this->unk_82, position + 1, super->collisionLayer); - SetTile(this->unk_84, position + 0x40, super->collisionLayer); - SetTile(this->unk_86, position + 0x41, super->collisionLayer); + SetBottomTile(this->unk_80, position, super->collisionLayer); + SetBottomTile(this->unk_82, position + 1, super->collisionLayer); + SetBottomTile(this->unk_84, position + 0x40, super->collisionLayer); + SetBottomTile(this->unk_86, position + 0x41, super->collisionLayer); } void sub_08031024(EyegoreEntity* this) { @@ -439,8 +439,8 @@ void sub_08031024(EyegoreEntity* this) { void sub_08031250(EyegoreEntity* this) { u32 tmp2; u32 tmp = (u32)super->animationState * 4; - sub_08008796(super, 9, super->x.HALF.HI + gUnk_080CE2C0[tmp], super->y.HALF.HI + gUnk_080CE2C0[tmp + 1]); - sub_08008796(super, 9, super->x.HALF.HI + gUnk_080CE2C0[tmp + 2], super->y.HALF.HI + gUnk_080CE2C0[tmp + 3]); + DoTileInteraction(super, 9, super->x.HALF.HI + gUnk_080CE2C0[tmp], super->y.HALF.HI + gUnk_080CE2C0[tmp + 1]); + DoTileInteraction(super, 9, super->x.HALF.HI + gUnk_080CE2C0[tmp + 2], super->y.HALF.HI + gUnk_080CE2C0[tmp + 3]); if (this->unk_79 != 0) { tmp2 = 0; if ((super->x.HALF.HI - (u32)this->unk_74) + 2 < 5) { diff --git a/src/enemy/flyingPot.c b/src/enemy/flyingPot.c index 8c4159d4b..cc868bc0e 100644 --- a/src/enemy/flyingPot.c +++ b/src/enemy/flyingPot.c @@ -93,13 +93,13 @@ void FlyingPot_OnTick(FlyingPotEntity* this) { void FlyingPot_OnCollision(FlyingPotEntity* this) { sub_08037418(this); - if (super->contactFlags == 0x9D) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) { super->action = FLYING_POT_ACTION_6; COLLISION_OFF(super); super->zVelocity = Q_16_16(2.625); super->spritePriority.b1 = 1; - SetTile(this->tileIndex, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); + SetBottomTile(this->tileIndex, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); } else if (super->z.HALF.HI != 0) { sub_08037408(this); } @@ -145,7 +145,7 @@ void FlyingPot_SubAction2(FlyingPotEntity* this) { COLLISION_OFF(super); super->spriteOffsetX = 0; - SetTile(this->tileIndex, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); + SetBottomTile(this->tileIndex, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); } if (sub_0806F520(super)) { @@ -177,7 +177,7 @@ void FlyingPot_Init(FlyingPotEntity* this) { tile = TILE(super->x.HALF.HI, super->y.HALF.HI); this->tileIndex = GetTileIndex(tile, super->collisionLayer); - SetTile(0x4000, tile, super->collisionLayer); + SetBottomTile(0x4000, tile, super->collisionLayer); InitializeAnimation(super, 5); } @@ -185,7 +185,7 @@ void FlyingPot_Action1(FlyingPotEntity* this) { sub_08037418(this); if (GetTileTypeByEntity(super) != 0x4000) { - SetTile(this->tileIndex, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); + SetBottomTile(this->tileIndex, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); sub_08037408(this); } @@ -210,7 +210,7 @@ void FlyingPot_Action2(FlyingPotEntity* this) { super->flags2 = 0xF; super->hitbox = &gUnk_080FD34C; - SetTile(this->tileIndex, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); + SetBottomTile(this->tileIndex, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); } } @@ -257,7 +257,7 @@ void sub_08037418(FlyingPotEntity* this) { u32 tile = COORD_TO_TILE(super); if (GetTileIndex(tile, super->collisionLayer) == 0x4067) { - SetTile(this->tileIndex, tile, super->collisionLayer); + SetBottomTile(this->tileIndex, tile, super->collisionLayer); DeleteThisEntity(); } } diff --git a/src/enemy/flyingSkull.c b/src/enemy/flyingSkull.c index 17c46040f..23ba5c877 100644 --- a/src/enemy/flyingSkull.c +++ b/src/enemy/flyingSkull.c @@ -45,12 +45,12 @@ void FlyingSkull_OnTick(FlyingSkullEntity* this) { void FlyingSkull_OnCollision(FlyingSkullEntity* this) { sub_0803A100(this); - if (super->contactFlags == 0x9d) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) { super->action = 7; COLLISION_OFF(super); super->zVelocity = Q_16_16(2.625); super->spritePriority.b1 = 1; - SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); } else if (super->z.HALF.HI) { sub_0803A0E0(this); } @@ -89,7 +89,7 @@ void sub_08039CE0(FlyingSkullEntity* this) { super->timer = 1; super->z.HALF.HI = -1; super->spriteOffsetX = 0; - SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); } if (sub_0806F520(super)) { @@ -121,7 +121,7 @@ void sub_08039D74(FlyingSkullEntity* this) { tmp = COORD_TO_TILE(super); this->unk_0x74 = GetTileIndex(tmp, super->collisionLayer); - SetTile(0x4060, tmp, super->collisionLayer); + SetBottomTile(0x4060, tmp, super->collisionLayer); InitializeAnimation(super, 0); } @@ -130,7 +130,7 @@ void sub_08039DD8(FlyingSkullEntity* this) { if (super->type == 0) { if (GetTileTypeByEntity(super) == 0x4073) { - SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); sub_0803A0E0(this); } @@ -147,7 +147,7 @@ void sub_08039DD8(FlyingSkullEntity* this) { if (player != NULL) { player->type2 = 1; CopyPosition(super, player); - SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); DeleteEntity(super); } } @@ -167,7 +167,7 @@ void sub_08039EE4(FlyingSkullEntity* this) { super->hitbox = (Hitbox*)&gUnk_080FD340; gPlayerEntity.base.animationState; this->unk_0x76 = gPlayerEntity.base.animationState; - SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); } void sub_08039F4C(FlyingSkullEntity* this) { @@ -200,7 +200,7 @@ void sub_08039FAC(FlyingSkullEntity* this) { super->hitType = 0xa0; super->flags2 = 0xf; super->hitbox = (Hitbox*)&gUnk_080FD34C; - SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer); } } @@ -249,7 +249,7 @@ void sub_0803A0E0(FlyingSkullEntity* this) { void sub_0803A100(FlyingSkullEntity* this) { u32 tile = COORD_TO_TILE(super); if (GetTileIndex(tile, super->collisionLayer) == 0x4067) { - SetTile(this->unk_0x74, tile, super->collisionLayer); + SetBottomTile(this->unk_0x74, tile, super->collisionLayer); DeleteThisEntity(); } } diff --git a/src/enemy/ghini.c b/src/enemy/ghini.c index e49b8293d..87a9c402d 100644 --- a/src/enemy/ghini.c +++ b/src/enemy/ghini.c @@ -59,11 +59,11 @@ void Ghini_OnCollision(GhiniEntity* this) { sub_0803F630(this); sub_0803F6EC(this); } - if ((super->hitType == 0x25) && (super->contactFlags == 0x80)) { + if ((super->hitType == 0x25) && (super->contactFlags == CONTACT_TAKE_DAMAGE)) { super->action = 8; InitializeAnimation(super, 3); } else { - if (super->contactFlags == 0x9d) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) { super->zVelocity = 0x18000; } if (super->confusedTime != 0) { diff --git a/src/enemy/gibdo.c b/src/enemy/gibdo.c index 5da67ddf0..0f521e14a 100644 --- a/src/enemy/gibdo.c +++ b/src/enemy/gibdo.c @@ -52,7 +52,7 @@ void Gibdo_OnTick(GibdoEntity* this) { } void Gibdo_OnCollision(GibdoEntity* this) { - if (super->contactFlags == 0x87) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x7)) { if (super->action == 0x6) { sub_08037ACC(this); } @@ -62,7 +62,7 @@ void Gibdo_OnCollision(GibdoEntity* this) { Gibdo_CreateObjects(this); } else { if (super->action != 0x6) { - if (super->hitType == 0x27 && super->contactFlags == 0x80) { + if (super->hitType == 0x27 && super->contactFlags == CONTACT_TAKE_DAMAGE) { sub_08037A14(this); } else { if ((u8)(super->action - 1) < 2) { diff --git a/src/enemy/gleerok.c b/src/enemy/gleerok.c index dfbbd62c2..9eb430b91 100644 --- a/src/enemy/gleerok.c +++ b/src/enemy/gleerok.c @@ -659,7 +659,7 @@ void sub_0802D86C(GleerokEntity* this) { } } - if ((super->contactFlags & 0x80) && this->unk_74 == 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) && this->unk_74 == 0) { if ((super->contactFlags & 0x7f) == 0x1d) { super->zVelocity = Q_16_16(3.0); super->parent->subAction = 4; @@ -1039,7 +1039,7 @@ void sub_0802E0B8(GleerokEntity* this) { super->type2 = 4; InitializeAnimation(super, 0x4e); } else { - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { if (super->iframes > 0) { SoundReq(SFX_BOSS_HIT); } diff --git a/src/enemy/gyorgFemale.c b/src/enemy/gyorgFemale.c index fbc0a2222..baa1105b7 100644 --- a/src/enemy/gyorgFemale.c +++ b/src/enemy/gyorgFemale.c @@ -250,7 +250,7 @@ void sub_080464C0(GyorgFemaleEntity* this) { void sub_08046518(void) { u16* ptr = gMapTop.metatileTypes; u16* sl = &gMapTop.mapData[sub_08046518_offset]; - u16* stack1 = &gMapTop.mapDataClone[sub_08046518_offset]; + u16* stack1 = &gMapTop.mapDataOriginal[sub_08046518_offset]; u8* stack2 = &gMapTop.unkData3[sub_08046518_offset]; u8* r6 = &gMapTop.collisionData[sub_08046518_offset]; u32 i; diff --git a/src/enemy/hangingSeed.c b/src/enemy/hangingSeed.c index 1a383efb4..dfdcae96a 100644 --- a/src/enemy/hangingSeed.c +++ b/src/enemy/hangingSeed.c @@ -20,7 +20,7 @@ void HangingSeed_OnTick(Entity* this) { } void HangingSeed_OnCollision(Entity* this) { - if (this->contactFlags & 0x80) { + if (this->contactFlags & CONTACT_TAKE_DAMAGE) { CreateFx(this, FX_BUSH, 0x80); DeleteThisEntity(); } diff --git a/src/enemy/helmasaur.c b/src/enemy/helmasaur.c index 4a43753ea..ab1437ccd 100644 --- a/src/enemy/helmasaur.c +++ b/src/enemy/helmasaur.c @@ -373,8 +373,8 @@ void sub_0802C1C0(HelmasaurEntity* this) { void sub_0802C1CC(HelmasaurEntity* this) { const s8* ptr = &gUnk_080CD464[super->animationState << 2]; - sub_08008796(super, 9, super->x.HALF.HI + ptr[0], super->y.HALF.HI + ptr[1]); - sub_08008796(super, 9, super->x.HALF.HI + ptr[2], super->y.HALF.HI + ptr[3]); + DoTileInteraction(super, 9, super->x.HALF.HI + ptr[0], super->y.HALF.HI + ptr[1]); + DoTileInteraction(super, 9, super->x.HALF.HI + ptr[2], super->y.HALF.HI + ptr[3]); } void sub_0802C218(HelmasaurEntity* this) { diff --git a/src/enemy/keaton.c b/src/enemy/keaton.c index d499adad9..348d7e25e 100644 --- a/src/enemy/keaton.c +++ b/src/enemy/keaton.c @@ -143,7 +143,7 @@ void Keaton_Action3(KeatonEntity* this) { } void Keaton_Action4(KeatonEntity* this) { - if (super->child && (super->child->contactFlags & 0x80)) { + if (super->child && (super->child->contactFlags & CONTACT_TAKE_DAMAGE)) { sub_0803275C(this); return; } diff --git a/src/enemy/leever.c b/src/enemy/leever.c index 3f8937b3e..4bdc4253f 100644 --- a/src/enemy/leever.c +++ b/src/enemy/leever.c @@ -47,7 +47,7 @@ void Leever_OnTick(LeeverEntity* this) { } void Leever_OnCollision(LeeverEntity* this) { - if (super->contactFlags == 0x80) { + if (super->contactFlags == CONTACT_TAKE_DAMAGE) { if (super->action == 3) { this->unk_74 = 1; } diff --git a/src/enemy/likeLike.c b/src/enemy/likeLike.c index 859192207..373953f62 100644 --- a/src/enemy/likeLike.c +++ b/src/enemy/likeLike.c @@ -46,8 +46,8 @@ void LikeLike_OnCollision(LikeLikeEntity* this) { } else { if (super->action == 7) { LikeLike_ReleasePlayer(this); - } else if (super->contactFlags & 0x80) { - u8 tmp = super->contactFlags & ~0x80; + } else if (super->contactFlags & CONTACT_TAKE_DAMAGE) { + u8 tmp = super->contactFlags & ~CONTACT_TAKE_DAMAGE; if (tmp == 0) { super->action = 7; super->timer = 95; diff --git a/src/enemy/madderpillar.c b/src/enemy/madderpillar.c index 4dda2643d..39d929c96 100644 --- a/src/enemy/madderpillar.c +++ b/src/enemy/madderpillar.c @@ -518,7 +518,7 @@ void sub_0802A098(MadderpillarEntity* this) { void sub_0802A0F8(MadderpillarEntity* this) { if (super->health != 0) { - if ((super->contactFlags & 0x80) && super->iframes != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) && super->iframes != 0) { Entity* entity = super; u32 i; for (i = 0; i < 6; i++) { @@ -549,7 +549,7 @@ void sub_0802A16C(MadderpillarEntity* this) { } void sub_0802A18C(MadderpillarEntity* this) { - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { switch (super->contactFlags & 0x7f) { case 0: case 1: diff --git a/src/enemy/mazaalBracelet.c b/src/enemy/mazaalBracelet.c index c2afcae98..15e848469 100644 --- a/src/enemy/mazaalBracelet.c +++ b/src/enemy/mazaalBracelet.c @@ -167,7 +167,8 @@ void MazaalBracelet_OnCollision(MazaalBraceletEntity* this) { if (super->type < 2) { if (super->action != 0x2b) { - if ((0 < super->iframes) && ((super->contactFlags == 0x95 || (super->contactFlags == 0x8e)))) { + if ((0 < super->iframes) && ((super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x15) || + (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0xe))))) { super->action = 0x28; COLLISION_OFF(super); entity = (MazaalBraceletEntity*)super->parent; @@ -1299,7 +1300,7 @@ u32 sub_0803B870(MazaalBraceletEntity* this) { Entity* entity; entity = super->child; - if ((entity->contactFlags & 0x80) != 0 && (gPlayerState.flags & PL_CAPTURED)) { + if ((entity->contactFlags & CONTACT_TAKE_DAMAGE) != 0 && (gPlayerState.flags & PL_CAPTURED)) { super->action = 0x18; super->timer = 68; super->spriteSettings.draw = 0; diff --git a/src/enemy/mazaalMacro.c b/src/enemy/mazaalMacro.c index a404cbdca..ef4174210 100644 --- a/src/enemy/mazaalMacro.c +++ b/src/enemy/mazaalMacro.c @@ -96,7 +96,7 @@ void sub_08034CC4(MazaalMacroEntity* this) { this->unk_78 = 0x4b0; sub_08034F70(this); InitializeAnimation(super, super->type); - SetTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); entity = CreateEnemy(MAZAAL_MACRO, 2); if (entity != NULL) { super->child = entity; diff --git a/src/enemy/moldworm.c b/src/enemy/moldworm.c index acb85509b..ef1650f76 100644 --- a/src/enemy/moldworm.c +++ b/src/enemy/moldworm.c @@ -101,7 +101,7 @@ void Moldworm_OnCollision(MoldwormEntity* this) { super->iframes = -8; this->unk_7f = 0; this->unk_7b = 0; - if (super->contactFlags == 0x80 || super->contactFlags == 0x9e) { + if (super->contactFlags == CONTACT_TAKE_DAMAGE || super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1e)) { super->type2 = 0; this->unk_80 = 0x14; } else { @@ -441,7 +441,7 @@ void sub_08023894(MoldwormEntity* this) { } void sub_0802390C(MoldwormEntity* this) { - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { Entity* ent = super->child; do { ent->iframes = super->iframes; @@ -449,7 +449,7 @@ void sub_0802390C(MoldwormEntity* this) { } else { Entity* ent = super->child; do { - if (ent->contactFlags & 0x80) { + if (ent->contactFlags & CONTACT_TAKE_DAMAGE) { u8 bVar2 = 0xff - ent->health; if (bVar2 != 0) { u32 tmp; diff --git a/src/enemy/mulldozer.c b/src/enemy/mulldozer.c index b9911272f..8af9198af 100644 --- a/src/enemy/mulldozer.c +++ b/src/enemy/mulldozer.c @@ -55,7 +55,7 @@ void Mulldozer_OnCollision(MulldozerEntity* this) { EnemyCreateFX(super, 0x1c); } EnemyFunctionHandlerAfterCollision(super, Mulldozer_Functions); - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { switch (super->contactFlags & 0x3f) { case 2: case 3: diff --git a/src/enemy/octorokGolden.c b/src/enemy/octorokGolden.c index 82bb3c8f6..0d6e6ddfe 100644 --- a/src/enemy/octorokGolden.c +++ b/src/enemy/octorokGolden.c @@ -117,7 +117,7 @@ void sub_08037E14(Entity* this) { s32 x, y; this->timer = 8; dir = (GetFacingDirection(this, &gPlayerEntity.base) + 4) & 0x18; - layer = (u8*)GetLayerByIndex(this->collisionLayer)->collisionData; + layer = (u8*)GetTileBuffer(this->collisionLayer)->collisionData; ptr = gUnk_080CF498 + (dir >> 2); x = this->x.HALF.HI + *ptr; y = this->y.HALF.HI + *(ptr + 1); diff --git a/src/enemy/peahat.c b/src/enemy/peahat.c index d4c0e3d8b..c3250c605 100644 --- a/src/enemy/peahat.c +++ b/src/enemy/peahat.c @@ -61,7 +61,7 @@ void Peahat_OnTick(PeahatEntity* this) { void Peahat_OnCollision(PeahatEntity* this) { if (this->unk_82) { - if (super->contactFlags == 0x94) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x14)) { Entity* entity = CreateEnemy(PEAHAT, PeahatForm_Propeller); if (entity != NULL) { CopyPosition(super, entity); @@ -74,14 +74,14 @@ void Peahat_OnCollision(PeahatEntity* this) { super->iframes = -30; this->unk_81 = 0; InitializeAnimation(super, super->animationState); - } else if (super->contactFlags == 0x9b) { + } else if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1b)) { super->animationState = PeahatAnimation_BrokenPropeller; super->action = 5; super->speed = 0x80; super->iframes = -30; this->unk_81 = 0; InitializeAnimation(super, super->animationState); - } else if (super->contactFlags == 0x80) { + } else if (super->contactFlags == CONTACT_TAKE_DAMAGE) { if (super->animationState == PeahatAnimation_Flying) { super->action = 1; super->timer = 30; diff --git a/src/enemy/pesto.c b/src/enemy/pesto.c index b3f6cfdc7..e386d4b67 100644 --- a/src/enemy/pesto.c +++ b/src/enemy/pesto.c @@ -65,7 +65,7 @@ void Pesto_OnTick(PestoEntity* this) { void Pesto_OnCollision(PestoEntity* this) { if (super->hitType != 0x6e) { - if (super->contactFlags == 0x80) { + if (super->contactFlags == CONTACT_TAKE_DAMAGE) { this->unk_86 = 0x30; if ((this->unk_83 & 0xf) == 3 && super->action == 6) { @@ -446,7 +446,8 @@ void sub_080244E8(PestoEntity* this) { super->timer = 12; this->unk_83 &= ~0x80; entity = super->child; - SetTile(((PestoEntity*)entity)->unk_70, COORD_TO_TILE(entity), entity->collisionLayer); + SetBottomTile(((PestoEntity*)entity)->unk_70, COORD_TO_TILE(entity), + entity->collisionLayer); DeleteEntity(entity); super->z.HALF.HI -= 0xe; this->unk_78 -= 0xe; diff --git a/src/enemy/rockChuchu.c b/src/enemy/rockChuchu.c index f6eba66da..4b760d663 100644 --- a/src/enemy/rockChuchu.c +++ b/src/enemy/rockChuchu.c @@ -100,7 +100,7 @@ void sub_080223E4(Entity* this) { entity = this->child; if (entity != NULL) { - entity->contactFlags = 0x94; + entity->contactFlags = (CONTACT_TAKE_DAMAGE | 0x14); entity->iframes = 0x10; #ifndef EU entity->knockbackDuration = 0xc; diff --git a/src/enemy/rollobite.c b/src/enemy/rollobite.c index 7d297f8dc..db6233e18 100644 --- a/src/enemy/rollobite.c +++ b/src/enemy/rollobite.c @@ -51,7 +51,7 @@ void Rollobite_OnCollision(RollobiteEntity* this) { InitializeAnimation(super, super->animationState + 8); } - if (super->contactFlags != 0x80) { + if (super->contactFlags != CONTACT_TAKE_DAMAGE) { if (super->action == 4 || super->action == 5) { super->action = 4; super->timer = 180; @@ -60,7 +60,7 @@ void Rollobite_OnCollision(RollobiteEntity* this) { } } - if (super->contactFlags == 0x93) + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x13)) Rollobite_OnTick(this); } @@ -276,7 +276,7 @@ bool32 Rollobite_TryToHoleUp(RollobiteEntity* this) { super->y.HALF.HI += 13; super->zVelocity = Q_16_16(2.0); InitializeAnimation(super, super->animationState + 0x14); - SetTile(0x4034, tile, super->collisionLayer); + SetBottomTile(0x4034, tile, super->collisionLayer); return TRUE; } } diff --git a/src/enemy/rupeeLike.c b/src/enemy/rupeeLike.c index 4831bf3b4..7ebff811d 100644 --- a/src/enemy/rupeeLike.c +++ b/src/enemy/rupeeLike.c @@ -40,7 +40,7 @@ void RupeeLike(RupeeLikeEntity* this) { u32 uVar1; if (super->type2 == 0) { - uVar1 = (u8)sub_080043E8(super); + uVar1 = (u8)GetTileHazardType(super); if (uVar1 != 0) { if (super->action == 4) { sub_080296D8(this); diff --git a/src/enemy/scissorsBeetle.c b/src/enemy/scissorsBeetle.c index 34aca2b2b..bbd7f2231 100644 --- a/src/enemy/scissorsBeetle.c +++ b/src/enemy/scissorsBeetle.c @@ -44,7 +44,7 @@ void ScissorsBeetle_OnCollision(ScissorsBeetleEntity* this) { } EnemyFunctionHandlerAfterCollision(super, ScissorsBeetle_Functions); - if ((super->contactFlags & 0x80) && super->action != 4) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) && super->action != 4) { u32 knockbackDir; child = super->child; child->iframes = super->iframes; diff --git a/src/enemy/spark.c b/src/enemy/spark.c index e135424bd..7006c8b90 100644 --- a/src/enemy/spark.c +++ b/src/enemy/spark.c @@ -22,7 +22,7 @@ void Spark_OnTick(Entity* this) { void Spark_OnCollision(Entity* this) { Entity* entity; - if (this->contactFlags & 0x80) { + if (this->contactFlags & CONTACT_TAKE_DAMAGE) { if ((this->contactFlags & 0x7f) == 0x14) { COLLISION_OFF(this); this->iframes = 0; diff --git a/src/enemy/spearMoblin.c b/src/enemy/spearMoblin.c index ac61f57eb..97d5850bb 100644 --- a/src/enemy/spearMoblin.c +++ b/src/enemy/spearMoblin.c @@ -57,7 +57,7 @@ void SpearMoblin_OnCollision(SpearMoblinEntity* this) { EnemyCreateFX(super, FX_STARS); EnemyFunctionHandlerAfterCollision(super, SpearMoblin_Functions); - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { if (super->action != 4) { sub_08028754(this); } else { @@ -398,7 +398,7 @@ bool32 sub_080288A4(SpearMoblinEntity* this) { void sub_080288C0(SpearMoblinEntity* this) { Entity* entity = super->child; - if ((entity != NULL) && (entity->contactFlags & 0x80)) { + if ((entity != NULL) && (entity->contactFlags & CONTACT_TAKE_DAMAGE)) { super->knockbackDirection = entity->knockbackDirection; super->iframes = -entity->iframes; super->knockbackSpeed = entity->knockbackSpeed; diff --git a/src/enemy/spinyBeetle.c b/src/enemy/spinyBeetle.c index ebaa63229..297b3b510 100644 --- a/src/enemy/spinyBeetle.c +++ b/src/enemy/spinyBeetle.c @@ -49,7 +49,7 @@ void SpinyBeetle_OnCollision(SpinyBeetleEntity* this) { } EnemyFunctionHandlerAfterCollision(super, SpinyBeetle_Functions); - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { if (super->iframes > 0 && super->child) { sub_08033E1C(this); } @@ -94,7 +94,7 @@ void SpinyBeetle_Init(SpinyBeetleEntity* this) { this->unk_7b = 0; this->tile = COORD_TO_TILE(super); this->tileIndex = GetTileIndex(this->tile, super->collisionLayer); - SetTile(0x4022, this->tile, super->collisionLayer); + SetBottomTile(0x4022, this->tile, super->collisionLayer); obj = CreateObject(OBJECT_ON_BEETLE, super->type, 0); if (obj == NULL) { @@ -259,7 +259,7 @@ void sub_08033B44(SpinyBeetleEntity* this) { } } - SetTile(0x4022, this->tile, super->collisionLayer); + SetBottomTile(0x4022, this->tile, super->collisionLayer); InitializeAnimation(super, 0); } diff --git a/src/enemy/spinyChuchu.c b/src/enemy/spinyChuchu.c index 0028054f9..d736b8e09 100644 --- a/src/enemy/spinyChuchu.c +++ b/src/enemy/spinyChuchu.c @@ -60,7 +60,7 @@ void SpinyChuchu_OnCollision(SpinyChuchuEntity* this) { super->hitType = 0x5c; InitializeAnimation(super, 1); } - } else if (super->contactFlags == 0x94) { + } else if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x14)) { EnemyCreateFX(super, FX_STARS); super->action = 5; InitializeAnimation(super, 1); diff --git a/src/enemy/stalfos.c b/src/enemy/stalfos.c index 6c86aa182..b4a26dfb3 100644 --- a/src/enemy/stalfos.c +++ b/src/enemy/stalfos.c @@ -437,7 +437,7 @@ void sub_08039AD4(StalfosEntity* this) { super->action = 0xb; super->child = projectile; InitAnimationForceUpdate(super, super->animationState + 0x18); - SetTile(0x4067, position, super->collisionLayer); + SetBottomTile(0x4067, position, super->collisionLayer); return; } } diff --git a/src/enemy/takkuri.c b/src/enemy/takkuri.c index 20dd168aa..38aa602f7 100644 --- a/src/enemy/takkuri.c +++ b/src/enemy/takkuri.c @@ -46,7 +46,7 @@ void Takkuri_OnTick(TakkuriEntity* this) { } void Takkuri_OnCollision(TakkuriEntity* this) { - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { if ((super->contactFlags & 0x7f) == 0) { u32 direction; sub_0803C0AC(super); diff --git a/src/enemy/tektite.c b/src/enemy/tektite.c index 803ebd47c..0cc625b32 100644 --- a/src/enemy/tektite.c +++ b/src/enemy/tektite.c @@ -63,7 +63,7 @@ void Tektite_OnCollision(TektiteEntity* this) { EnemyCreateFX(super, FX_STARS); } EnemyFunctionHandlerAfterCollision(super, Tektite_Functions); - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { switch (super->contactFlags & 0x3f) { case 0x14: super->action = 1; diff --git a/src/enemy/tektiteGolden.c b/src/enemy/tektiteGolden.c index 22184e0d0..c6af233a8 100644 --- a/src/enemy/tektiteGolden.c +++ b/src/enemy/tektiteGolden.c @@ -51,7 +51,7 @@ void TektiteGolden_OnCollision(TektiteGoldenEntity* this) { EnemyCreateFX(super, FX_STARS); } EnemyFunctionHandlerAfterCollision(super, TektiteGolden_Functions); - if (super->contactFlags == 0x94) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x14)) { super->action = 1; super->subAction = 0; super->timer = 20; diff --git a/src/enemy/vaatiArm.c b/src/enemy/vaatiArm.c index 65ace01e0..b94db4e55 100644 --- a/src/enemy/vaatiArm.c +++ b/src/enemy/vaatiArm.c @@ -1401,7 +1401,7 @@ static void sub_08043C40(VaatiArmEntity* this, VaatiArm_HeapStruct1* heapStruct) static bool32 sub_08043C98(VaatiArmEntity* this) { #if defined EU || defined JP Entity* e1 = &((VaatiArm_HeapStruct*)super->myHeap)->entities[3]->base; - if ((e1->contactFlags == 0x9d)) { + if ((e1->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d))) { sub_08043D08(this); return TRUE; } else { @@ -1410,7 +1410,7 @@ static bool32 sub_08043C98(VaatiArmEntity* this) { #else Entity* e1 = &((VaatiArm_HeapStruct*)super->myHeap)->entities[2]->base; Entity* e2 = &((VaatiArm_HeapStruct*)super->myHeap)->entities[3]->base; - if ((e1->contactFlags == 0x9d) || (e2->contactFlags == 0x9d)) { + if ((e1->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) || (e2->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d))) { sub_08043D08(this); gRoomTransition.field_0x38 |= 2; return TRUE; @@ -1423,7 +1423,7 @@ static bool32 sub_08043C98(VaatiArmEntity* this) { static void sub_08043CD4(VaatiArmEntity* this) { u32 i; for (i = 0; i < 5; i++) { - if (((VaatiArm_HeapStruct*)super->myHeap)->entities[i]->base.contactFlags == 0x9d) { + if (((VaatiArm_HeapStruct*)super->myHeap)->entities[i]->base.contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) { this->unk_7c = 0x78; this->unk_7d = i; return; diff --git a/src/enemy/vaatiBall.c b/src/enemy/vaatiBall.c index 485749b56..a32eb6248 100644 --- a/src/enemy/vaatiBall.c +++ b/src/enemy/vaatiBall.c @@ -58,7 +58,7 @@ void VaatiBall(VaatiBallEntity* this) { super->health = -1; } - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { if ((super->contactFlags & 0x3f) == 0 && super->action == 6) { ModHealth(-2); } diff --git a/src/enemy/vaatiProjectile.c b/src/enemy/vaatiProjectile.c index a202f9a3d..3df5abe68 100644 --- a/src/enemy/vaatiProjectile.c +++ b/src/enemy/vaatiProjectile.c @@ -66,7 +66,7 @@ void VaatiProjectile_OnTick(VaatiProjectileEntity* this) { void VaatiProjectile_OnCollision(VaatiProjectileEntity* this) { Entity* entity; - if (super->contactFlags == 0x80) { + if (super->contactFlags == CONTACT_TAKE_DAMAGE) { #ifndef EU if (super->health != 0) { #endif @@ -285,6 +285,6 @@ void sub_0803E4D8(VaatiProjectileEntity* this) { tile = TILE(super->x.HALF.HI, super->y.HALF.HI + 8); if (sub_080B1B44(tile, gPlayerEntity.base.collisionLayer) != 0xff) { - SetTile(0x4074, tile, gPlayerEntity.base.collisionLayer); + SetBottomTile(0x4074, tile, gPlayerEntity.base.collisionLayer); } } diff --git a/src/enemy/vaatiRebornEnemy.c b/src/enemy/vaatiRebornEnemy.c index 83fcbc657..285865493 100644 --- a/src/enemy/vaatiRebornEnemy.c +++ b/src/enemy/vaatiRebornEnemy.c @@ -539,7 +539,7 @@ void VaatiRebornEnemyType1Action1(VaatiRebornEnemyEntity* this) { super->hitType = 0x2f; InitAnimationForceUpdate(super, this->unk_74); } else { - if (((super->contactFlags & 0x80) != 0) && (0 < super->iframes)) { + if (((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) && (0 < super->iframes)) { parent->iframes = super->iframes; parent->contactFlags = super->contactFlags; } @@ -665,7 +665,7 @@ void VaatiRebornEnemyType1PreAction(VaatiRebornEnemyEntity* this) { } parent = super->parent; this->unk_77 = 0; - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { if (gUnk_080D04D0[((VaatiRebornEnemyEntity*)parent)->unk_86] > super->health) { if (2 < ++((VaatiRebornEnemyEntity*)parent)->unk_86) { COLLISION_OFF(super); diff --git a/src/enemy/vaatiTransfigured.c b/src/enemy/vaatiTransfigured.c index e04bd5473..9d8f71588 100644 --- a/src/enemy/vaatiTransfigured.c +++ b/src/enemy/vaatiTransfigured.c @@ -1097,11 +1097,11 @@ void sub_080409B0(VaatiTransfiguredEntity* this) { Knockback1(super); } } else { - if (((super->contactFlags & 0x80) != 0) && (0 < super->iframes)) { + if (((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) && (0 < super->iframes)) { InitScreenShake(12, 1); SoundReq(SFX_BOSS_HIT); } - if ((super->contactFlags == 0x8a) && (gPlayerState.chargeState.action == 5)) { + if ((super->contactFlags == (CONTACT_TAKE_DAMAGE | 0xa)) && (gPlayerState.chargeState.action == 5)) { super->health = 0xc0; } } diff --git a/src/enemy/vaatiTransfiguredEye.c b/src/enemy/vaatiTransfiguredEye.c index e417c2fd0..74e0a5221 100644 --- a/src/enemy/vaatiTransfiguredEye.c +++ b/src/enemy/vaatiTransfiguredEye.c @@ -72,7 +72,7 @@ void VaatiTransfiguredEye_OnCollision(VaatiTransfiguredEyeEntity* this) { if (super->type != 0) { pEVar4 = super->parent->parent; - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { bVar1 = super->contactFlags & 0x3f; if ((bVar1 == 0xe) || (bVar1 == 0x15)) { diff --git a/src/enemy/vaatiWrath.c b/src/enemy/vaatiWrath.c index b8bd9b201..cac6435ce 100644 --- a/src/enemy/vaatiWrath.c +++ b/src/enemy/vaatiWrath.c @@ -101,7 +101,7 @@ const s8 gUnk_080D0EB0[] = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x0 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd }; void VaatiWrath(VaatiWrathEntity* this) { - if (((super->type == 0) && ((super->contactFlags & 0x80) != 0)) && (super->health == 0)) { + if (((super->type == 0) && ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0)) && (super->health == 0)) { COLLISION_ON(super); super->health = 0xff; if (--this->unk_84 == 0) { diff --git a/src/enemy/wisp.c b/src/enemy/wisp.c index 1ed368b6d..88125bcfb 100644 --- a/src/enemy/wisp.c +++ b/src/enemy/wisp.c @@ -57,7 +57,7 @@ void Wisp_OnCollision(WispEntity* this) { Entity* entity; bits = super->contactFlags; - if ((bits & 0x80) == 0) { + if ((bits & CONTACT_TAKE_DAMAGE) == 0) { return; } diff --git a/src/enemy/wizzrobeFire.c b/src/enemy/wizzrobeFire.c index 0253a142e..b4c6656c3 100644 --- a/src/enemy/wizzrobeFire.c +++ b/src/enemy/wizzrobeFire.c @@ -26,7 +26,7 @@ void WizzrobeFire_OnCollision(WizzrobeEntity* this) { } EnemyFunctionHandlerAfterCollision(super, WizzrobeFire_Functions); if (super->health == 0) { - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); } } @@ -111,7 +111,7 @@ void WizzrobeFire_Action2(WizzrobeEntity* this) { super->timer = 40; super->subtimer = 0; super->flags &= ~0x80; - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); EnqueueSFX(SFX_156); InitializeAnimation(super, super->direction >> 3); } diff --git a/src/enemy/wizzrobeIce.c b/src/enemy/wizzrobeIce.c index 84fe790e0..ae2dbcfe5 100644 --- a/src/enemy/wizzrobeIce.c +++ b/src/enemy/wizzrobeIce.c @@ -26,7 +26,7 @@ void WizzrobeIce_OnCollision(WizzrobeEntity* this) { EnemyCreateFX(super, FX_STARS); } EnemyFunctionHandlerAfterCollision(super, WizzrobeIce_Functions); - if (super->contactFlags == 0x87) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x7)) { Entity* obj = CreateObject(FLAME, 3, 0); if (obj != NULL) { obj->spritePriority.b0 = 3; @@ -35,7 +35,7 @@ void WizzrobeIce_OnCollision(WizzrobeEntity* this) { } } if (super->health == 0) { - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); } } @@ -118,7 +118,7 @@ void WizzrobeIce_Action2(WizzrobeEntity* this) { super->timer = 40; super->subtimer = 0; super->flags &= ~0x80; - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); EnqueueSFX(SFX_156); InitializeAnimation(super, super->direction >> 3); } diff --git a/src/enemy/wizzrobeWind.c b/src/enemy/wizzrobeWind.c index 8f23e3da7..18ee71162 100644 --- a/src/enemy/wizzrobeWind.c +++ b/src/enemy/wizzrobeWind.c @@ -33,7 +33,7 @@ void WizzrobeWind_OnCollision(WizzrobeEntity* this) { EnemyCreateFX(super, FX_STARS); } EnemyFunctionHandlerAfterCollision(super, WizzrobeWind_Functions); - if (super->contactFlags == 0x87) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x7)) { Entity* obj = CreateObject(FLAME, 3, 0); if (obj != NULL) { obj->spritePriority.b0 = 3; @@ -42,7 +42,7 @@ void WizzrobeWind_OnCollision(WizzrobeEntity* this) { } } if (super->health == 0) { - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); } } @@ -135,7 +135,7 @@ void WizzrobeWind_Action2(WizzrobeEntity* this) { super->subtimer = 0; super->flags &= ~0x80; EnqueueSFX(SFX_156); - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); InitializeAnimation(super, super->direction >> 3); } break; @@ -208,7 +208,7 @@ void sub_0802F888(WizzrobeEntity* this) { super->direction = (sub_08049F84(super, 3) + 4) & 0x18; this->tilePosition = COORD_TO_TILE(super); this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer); - SetTile(0x4071, this->tilePosition, super->collisionLayer); + SetBottomTile(0x4071, this->tilePosition, super->collisionLayer); } void sub_0802F8E4(WizzrobeEntity* this) { diff --git a/src/enemyUtils.c b/src/enemyUtils.c index 04281240b..ed13377fd 100644 --- a/src/enemyUtils.c +++ b/src/enemyUtils.c @@ -314,9 +314,9 @@ void EnemyDetachFX(Entity* entity) { /** Unsets bitfield 0x80 before calling GetNextFunction, so that the enemyFunction 1 is not called. */ void EnemyFunctionHandlerAfterCollision(Entity* entity, void (*const fntable[])()) { u32 idx; - entity->contactFlags &= ~0x80; + entity->contactFlags &= ~CONTACT_TAKE_DAMAGE; idx = GetNextFunction(entity); - entity->contactFlags |= 0x80; + entity->contactFlags |= CONTACT_TAKE_DAMAGE; fntable[idx](entity); } diff --git a/src/interrupts.c b/src/interrupts.c index b27a43a78..f52a8da3e 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -219,8 +219,8 @@ void PlayerUpdate(PlayerEntity* this) { } HandlePlayerLife(super); DoPlayerAction(this); - if ((super->z.WORD == 0) && (super->action == 1 || super->action == 9)) - sub_08008790(super, 8); + if ((super->z.WORD == 0) && (super->action == PLAYER_NORMAL || super->action == PLAYER_MINISH)) + DoTileInteractionHere(super, 8); sub_080171F0(); } sub_08078FB0(super); @@ -236,7 +236,7 @@ static void HandlePlayerLife(Entity* this) { gUnk_0200AF00.rActionInteractTile = R_ACTION_NONE; gUnk_0200AF00.rActionGrabbing = R_ACTION_NONE; - if ((gPlayerEntity.base.contactFlags & 0x80) && (gPlayerEntity.base.iframes > 0)) + if ((gPlayerEntity.base.contactFlags & CONTACT_TAKE_DAMAGE) && (gPlayerEntity.base.iframes > 0)) SoundReq(SFX_86); gPlayerState.flags &= ~(PL_FALLING | PL_CONVEYOR_PUSHED); @@ -323,7 +323,7 @@ static void sub_080171F0(void) { if (gPlayerEntity.unk_7a != 0) gPlayerEntity.unk_7a--; - gPlayerEntity.base.contactFlags &= ~0x80; + gPlayerEntity.base.contactFlags &= ~CONTACT_TAKE_DAMAGE; if (gPlayerEntity.base.action != PLAYER_DROWN) COPY_FLAG_FROM_TO(gPlayerState.flags, 0x2, 0x10000); diff --git a/src/item/itemMoleMitts.c b/src/item/itemMoleMitts.c index 7dfc8d273..6940a95ba 100644 --- a/src/item/itemMoleMitts.c +++ b/src/item/itemMoleMitts.c @@ -6,7 +6,7 @@ #include "object.h" s32 sub_080774A0(void); -extern s32 sub_0800875A(Entity*, u32, ItemBehavior*); +extern s32 DoItemTileInteraction(Entity*, u32, ItemBehavior*); extern void UpdatePlayerMovement(void); extern bool32 sub_0807B5B0(Entity*); void sub_08077130(ItemBehavior*, u32); @@ -70,7 +70,7 @@ void sub_080771C8(ItemBehavior* this, u32 index) { CreateObjectWithParent(&gPlayerEntity.base, MOLE_MITTS_PARTICLE, this->playerFrame, 1); } if ((this->playerFrame & 0x10) != 0) { - if (sub_0800875A(&gPlayerEntity.base, 0xd, this) == 0) { + if (DoItemTileInteraction(&gPlayerEntity.base, 0xd, this) == 0) { SetItemAnim(this, ANIM_MOLEMITTS_MISS); this->stateID = 3; SoundReq(SFX_ITEM_GLOVES_AIR); diff --git a/src/item/itemTryPickupObject.c b/src/item/itemTryPickupObject.c index e721bb516..c908f04f4 100644 --- a/src/item/itemTryPickupObject.c +++ b/src/item/itemTryPickupObject.c @@ -14,7 +14,7 @@ void sub_08076518(ItemBehavior*, u32); void sub_080765E0(ItemBehavior*, u32); void sub_0807660C(ItemBehavior*, u32); -extern s32 sub_0800875A(Entity*, u32, ItemBehavior*); +extern s32 DoItemTileInteraction(Entity*, u32, ItemBehavior*); extern const u16 gUnk_0811BE38[]; extern const u16 gUnk_0811BE40[]; @@ -168,7 +168,7 @@ void sub_080762D8(ItemBehavior* this, u32 index) { if (!gPlayerState.jump_status) { - if (gPlayerState.heldObject == 1 && sub_0800875A(&gPlayerEntity.base, 6, this) != 0) { + if (gPlayerState.heldObject == 1 && DoItemTileInteraction(&gPlayerEntity.base, 6, this) != 0) { sub_08076088(this, NULL, index); return; } else if (gUnk_0811BE38[gPlayerEntity.base.animationState >> 1] & gPlayerState.playerInput.heldInput) { diff --git a/src/manager/diggingCaveEntranceManager.c b/src/manager/diggingCaveEntranceManager.c index 7491eea46..8698db9ea 100644 --- a/src/manager/diggingCaveEntranceManager.c +++ b/src/manager/diggingCaveEntranceManager.c @@ -53,9 +53,9 @@ void DiggingCaveEntranceManager_Init(DiggingCaveEntranceManager* this) { tile = 0x81 << 7; // 0x4080 for (entrance = GetDiggingCaveEntranceForRoom(entrance, room); entrance != 0; entrance = GetDiggingCaveEntranceForRoom(entrance, room)) { - SetTile(tile, entrance->sourceTilePosition + TILE_POS(-1, 1), 1); - SetTile(tile, entrance->sourceTilePosition + TILE_POS(0, 1), 1); - SetTile(tile, entrance->sourceTilePosition + TILE_POS(1, 1), 1); + SetBottomTile(tile, entrance->sourceTilePosition + TILE_POS(-1, 1), 1); + SetBottomTile(tile, entrance->sourceTilePosition + TILE_POS(0, 1), 1); + SetBottomTile(tile, entrance->sourceTilePosition + TILE_POS(1, 1), 1); entrance++; } } diff --git a/src/manager/flameManager.c b/src/manager/flameManager.c index 880324fd7..46d2ad32b 100644 --- a/src/manager/flameManager.c +++ b/src/manager/flameManager.c @@ -16,7 +16,7 @@ void FlameManager_Main(FlameManager* this) { this->field_0x38 = TILE(this->field_0x38, this->field_0x3a); if (GetTileType(this->field_0x38, 2) == 0x75) { super->action = 1; - SetTile(0x406a, this->field_0x38, 1); + SetBottomTile(0x406a, this->field_0x38, 1); } else { DeleteThisEntity(); } @@ -26,7 +26,7 @@ void FlameManager_Main(FlameManager* this) { DeleteThisEntity(); } if (GetTileType(this->field_0x38, 2) == 0x76) { - SetTile(0x406b, this->field_0x38, 1); + SetBottomTile(0x406b, this->field_0x38, 1); DeleteThisEntity(); } } diff --git a/src/manager/manager29.c b/src/manager/manager29.c index 02ed52baa..55a5548f4 100644 --- a/src/manager/manager29.c +++ b/src/manager/manager29.c @@ -33,7 +33,7 @@ void sub_0805CBD0(Manager29* this) { this->unk_38 = (this->unk_38 >> 4 & 0x3fU) | (((this->unk_3a << 0x10) >> 0x14 & 0x3fU) << 6); this->unk_3a = (this->unk_3c >> 4 & 0x3f) | (((this->unk_36 + this->unk_37 * 0x100) >> 4 & 0x3fU) << 6); this->unk_3c = GetTileType(this->unk_38, this->unk_34); - layer = GetLayerByIndex(this->unk_34); + layer = GetTileBuffer(this->unk_34); this->unk_28 = (u16*)layer->metatileTypes; this->unk_2c = &layer->mapData[(s16)this->unk_3a]; } diff --git a/src/manager/tileChangeObserveManager.c b/src/manager/tileChangeObserveManager.c index f2ada610b..77c246774 100644 --- a/src/manager/tileChangeObserveManager.c +++ b/src/manager/tileChangeObserveManager.c @@ -31,7 +31,7 @@ void TileChangeObserveManager_Init(TileChangeObserveManager* this) { DeleteThisEntity(); } else { super->action = 1; - tile = &GetLayerByIndex(this->field_0x3a)->mapData[this->tilePosition]; + tile = &GetTileBuffer(this->field_0x3a)->mapData[this->tilePosition]; this->observedTile = tile; this->initialTile = tile[0]; } diff --git a/src/manager/waterfallBottomManager.c b/src/manager/waterfallBottomManager.c index a8e3f4c4c..11b93c99e 100644 --- a/src/manager/waterfallBottomManager.c +++ b/src/manager/waterfallBottomManager.c @@ -10,7 +10,7 @@ #include "functions.h" void WaterfallBottomManager_Main(WaterfallBottomManager* this) { - SetTile(0x4014, 0x5c3, 1); + SetBottomTile(0x4014, 0x5c3, 1); if ((gRoomControls.origin_y + 200 < gPlayerEntity.base.y.HALF.HI) && ((u32)(gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x) - 0x30 < 0x11)) { gPlayerEntity.base.collisionLayer = 3; diff --git a/src/movement.c b/src/movement.c index 51e95932e..f166c5b03 100644 --- a/src/movement.c +++ b/src/movement.c @@ -1612,7 +1612,7 @@ void CalculateEntityTileCollisions(Entity* this, u32 direction, u32 collisionTyp u32 hitboxUnkX; u32 hitboxUnkY; - layer = GetLayerByIndex(this->collisionLayer)->collisionData; + layer = GetTileBuffer(this->collisionLayer)->collisionData; hb = this->hitbox; xMin = this->x.HALF.HI + hb->offset_x; yMin = this->y.HALF.HI + hb->offset_y; diff --git a/src/npc/castorWildsStatue.c b/src/npc/castorWildsStatue.c index 86365860b..1d0c6b078 100644 --- a/src/npc/castorWildsStatue.c +++ b/src/npc/castorWildsStatue.c @@ -78,20 +78,20 @@ void sub_08067418(CastorWildsStatueEntity* this) { this->tilePos = COORD_TO_TILE(super); if (super->type == 0) { super->hitbox = (Hitbox*)&gUnk_08110E94; - SetTile(0x4022, this->tilePos - 1, super->collisionLayer); - SetTile(0x4022, this->tilePos, super->collisionLayer); - SetTile(0x4022, this->tilePos + 0x3f, super->collisionLayer); - SetTile(0x4022, this->tilePos + 0x40, super->collisionLayer); + SetBottomTile(0x4022, this->tilePos - 1, super->collisionLayer); + SetBottomTile(0x4022, this->tilePos, super->collisionLayer); + SetBottomTile(0x4022, this->tilePos + 0x3f, super->collisionLayer); + SetBottomTile(0x4022, this->tilePos + 0x40, super->collisionLayer); } else { super->collisionLayer = 3; super->spriteOrientation.flipY = 1; super->spriteRendering.b3 = 1; super->spritePriority.b0 = 2; if (CheckLocalFlag(HIKYOU_00_SEKIZOU) == 0) { - SetTile(0x4022, 0xe81, 1); - SetTile(0x4022, 0xe82, 1); - SetTile(0x4022, 0xe83, 1); - SetTile(0x4022, 0xec3, 1); + SetBottomTile(0x4022, 0xe81, 1); + SetBottomTile(0x4022, 0xe82, 1); + SetBottomTile(0x4022, 0xe83, 1); + SetBottomTile(0x4022, 0xec3, 1); } } InitScriptForNPC(super); diff --git a/src/npc/clothesRack.c b/src/npc/clothesRack.c index 28de3bed7..aa6ae5339 100644 --- a/src/npc/clothesRack.c +++ b/src/npc/clothesRack.c @@ -36,12 +36,12 @@ void sub_0806DD90(Entity* this) { InitializeAnimation(this, animIndex); x = this->x.HALF.HI; y = this->y.HALF.HI; - SetTile(0x4072, TILE(x - 0x18, y - 0x10), this->collisionLayer); - SetTile(0x4072, TILE(x - 0x18, y), this->collisionLayer); - SetTile(0x4072, TILE(x - 0x18, y + 0x10), this->collisionLayer); - SetTile(0x4072, TILE(x + 0x18, y - 0x10), this->collisionLayer); - SetTile(0x4072, TILE(x + 0x18, y), this->collisionLayer); - SetTile(0x4072, TILE(x + 0x18, y + 0x10), this->collisionLayer); + SetBottomTile(0x4072, TILE(x - 0x18, y - 0x10), this->collisionLayer); + SetBottomTile(0x4072, TILE(x - 0x18, y), this->collisionLayer); + SetBottomTile(0x4072, TILE(x - 0x18, y + 0x10), this->collisionLayer); + SetBottomTile(0x4072, TILE(x + 0x18, y - 0x10), this->collisionLayer); + SetBottomTile(0x4072, TILE(x + 0x18, y), this->collisionLayer); + SetBottomTile(0x4072, TILE(x + 0x18, y + 0x10), this->collisionLayer); } void sub_0806DEC8(Entity* this) { diff --git a/src/npc/dog.c b/src/npc/dog.c index 3ca53e971..a6c7c0fec 100644 --- a/src/npc/dog.c +++ b/src/npc/dog.c @@ -235,7 +235,7 @@ void sub_08069B44(DogEntity* this) { super->action = 4; } if ((super->type == 2) && (CheckLocalFlag(MACHI_02_DOG) == 0)) { - SetTile(0x4072, TILE(super->x.HALF.HI, super->y.HALF.HI - 8), super->collisionLayer); + SetBottomTile(0x4072, TILE(super->x.HALF.HI, super->y.HALF.HI - 8), super->collisionLayer); } } } diff --git a/src/npc/kid.c b/src/npc/kid.c index 9f65aad8e..0faaac1b9 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -539,12 +539,12 @@ void sub_080626E0(Entity* this, ScriptExecutionContext* context) { } void sub_08062788(Entity* this, ScriptExecutionContext* context) { - SetTile(0x4072, 0x60b, 1); - SetTile(0x4072, 0x60c, 1); - SetTile(0x4072, 0x60d, 1); - SetTile(0x4072, 0x64b, 1); - SetTile(0x4072, 0x64c, 1); - SetTile(0x4072, 0x64d, 1); + SetBottomTile(0x4072, 0x60b, 1); + SetBottomTile(0x4072, 0x60c, 1); + SetBottomTile(0x4072, 0x60d, 1); + SetBottomTile(0x4072, 0x64b, 1); + SetBottomTile(0x4072, 0x64c, 1); + SetBottomTile(0x4072, 0x64d, 1); } void sub_080627E8(Entity* this, ScriptExecutionContext* context) { diff --git a/src/npc/npc5.c b/src/npc/npc5.c index d4a78753c..1b60767d7 100644 --- a/src/npc/npc5.c +++ b/src/npc/npc5.c @@ -68,7 +68,7 @@ u32 PointInsideRadius(s32, s32, s32); u32 sub_080611D4(Entity*); extern u32 sub_08079FD4(Entity*, u32); -extern void sub_08016AD2(Entity*); +extern void UpdateCollisionLayer(Entity*); bool32 sub_08061630(NPC5Entity*, s32, s32, s32); bool32 sub_08061720(NPC5Entity*, s32, s32, s32); @@ -471,7 +471,7 @@ bool32 sub_08061170(NPC5Entity* this) { } return FALSE; } else { - sub_08016AD2(super); + UpdateCollisionLayer(super); return TRUE; } } @@ -501,7 +501,7 @@ u32 sub_080611D4(Entity* this) { ptr = (s8*)gUnk_0810AC4C; a = ptr[x]; b = ptr[x + 1]; - uVar2 = GetRelativeCollisionTile(this, a, b); + uVar2 = GetActTileRelative(this, a, b); ptr2 = gUnk_0810AC54; do { @@ -525,7 +525,7 @@ u32 sub_080611D4(Entity* this) { u32 sub_08061230(NPC5Entity* this) { if ((((UnkHeap*)super->myHeap)->unk_0 & 1) == 0) { - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { switch (super->contactFlags & 0x7f) { case 0: case 1: diff --git a/src/object.c b/src/object.c index 8f23887e7..31bbdd639 100644 --- a/src/object.c +++ b/src/object.c @@ -207,7 +207,7 @@ void ObjectUpdate(Entity* this) { this->iframes++; if (!EntityDisabled(this)) { gObjectFunctions[this->id](this); - this->contactFlags &= ~0x80; + this->contactFlags &= ~CONTACT_TAKE_DAMAGE; } DrawEntity(this); } diff --git a/src/object/angryStatue.c b/src/object/angryStatue.c index 0204c90e8..687d32d90 100644 --- a/src/object/angryStatue.c +++ b/src/object/angryStatue.c @@ -29,7 +29,7 @@ void AngryStatue(Entity* this) { void AngryStatue_Init(Entity* this) { this->action = 1; this->hitbox = (Hitbox*)&gUnk_080FD178; - SetTile(0x4022, COORD_TO_TILE(this), this->collisionLayer); + SetBottomTile(0x4022, COORD_TO_TILE(this), this->collisionLayer); InitializeAnimation(this, this->type); } diff --git a/src/object/bakerOven.c b/src/object/bakerOven.c index 22b5fbbb1..9a593e326 100644 --- a/src/object/bakerOven.c +++ b/src/object/bakerOven.c @@ -107,12 +107,12 @@ void sub_0809CDF0(BakerOvenEntity* this) { (((super->y.HALF.HI - gRoomControls.origin_y) >> 4 & 0x3f) << 6); y = this->unk_80; - SetTile(0x402e, y - 0x01, super->collisionLayer); - SetTile(0x4022, y - 0x00, super->collisionLayer); - SetTile(0x4022, y + 0x01, super->collisionLayer); - SetTile(0x4026, y - 0x41, super->collisionLayer); - SetTile(0x4026, y - 0x40, super->collisionLayer); - SetTile(0x4024, y - 0x3f, super->collisionLayer); - SetTile(0x4026, y - 0x81, super->collisionLayer); - SetTile(0x4026, y - 0x80, super->collisionLayer); + SetBottomTile(0x402e, y - 0x01, super->collisionLayer); + SetBottomTile(0x4022, y - 0x00, super->collisionLayer); + SetBottomTile(0x4022, y + 0x01, super->collisionLayer); + SetBottomTile(0x4026, y - 0x41, super->collisionLayer); + SetBottomTile(0x4026, y - 0x40, super->collisionLayer); + SetBottomTile(0x4024, y - 0x3f, super->collisionLayer); + SetBottomTile(0x4026, y - 0x81, super->collisionLayer); + SetBottomTile(0x4026, y - 0x80, super->collisionLayer); } diff --git a/src/object/barrelSpiderweb.c b/src/object/barrelSpiderweb.c index 386f2c747..d4d821ddc 100644 --- a/src/object/barrelSpiderweb.c +++ b/src/object/barrelSpiderweb.c @@ -64,7 +64,7 @@ void sub_0808BBE0(Entity* this) { ptr = &gUnk_0812144C[diff * 2]; SetAffineInfo(this, ptr[0], ptr[1], 0); } else { - this->contactFlags &= ~0x80; + this->contactFlags &= ~CONTACT_TAKE_DAMAGE; } } @@ -74,7 +74,7 @@ void BarrelSpiderweb_Action1(Entity* this) { tmp = -0x170; this->y.HALF.HI = gRoomControls.origin_y - ((this->parent)->zVelocity + tmp); sub_0808BBE0(this); - if (this->contactFlags == 0x93) { + if (this->contactFlags == (CONTACT_TAKE_DAMAGE | 0x13)) { this->timer--; this->spriteSettings.draw = 1; if (this->timer == 0) { @@ -114,7 +114,7 @@ void BarrelSpiderweb_Action2(Entity* this) { this->subtimer -= 8; SetAffineInfo(this, 0x200 - this->subtimer, 0x200 - this->subtimer, 0); } - if (this->contactFlags == 0x93) { + if (this->contactFlags == (CONTACT_TAKE_DAMAGE | 0x13)) { this->direction = GetFacingDirection(this, &gPlayerEntity.base); LinearMoveUpdate(this); if (EntityWithinDistance(this, gPlayerEntity.base.x.HALF.HI, gPlayerEntity.base.y.HALF.HI - 6, 0x1c)) { diff --git a/src/object/beanstalk.c b/src/object/beanstalk.c index fb6abf4ea..db00d5d0d 100644 --- a/src/object/beanstalk.c +++ b/src/object/beanstalk.c @@ -257,8 +257,8 @@ void Beanstalk_Action1Type7(BeanstalkEntity* this) { this->unk_70 = TILE(super->x.HALF.HI, this->unk_6c); while (TRUE) { this->unk_70 = TILE(super->x.HALF.HI, this->unk_6c); - SetTile(0x4017, this->unk_70, 2); - SetTile(0x4017, this->unk_70, 1); + SetBottomTile(0x4017, this->unk_70, 2); + SetBottomTile(0x4017, this->unk_70, 1); this->unk_6c += 0x10; if (this->unk_6c >= gRoomControls.origin_y + gRoomControls.height) break; @@ -307,7 +307,7 @@ void Beanstalk_Action1Type8SubAction0(BeanstalkEntity* this) { super->spriteOrientation.flipY = 2; this->unk_70 = COORD_TO_TILE(super); - SetTile(0x4017, this->unk_70, 1); + SetBottomTile(0x4017, this->unk_70, 1); super->subAction = 1; obj = CreateObjectWithParent(super, CHUCHU_BOSS_PARTICLE, 0, 0); if (obj != NULL) { @@ -339,12 +339,12 @@ void Beanstalk_Action1Type9(BeanstalkEntity* this) { if (gPlayerState.floor_type == SURFACE_LADDER) { super->spritePriority.b0 = 0; if (sub_080B1A0C(super, 0, -0x18) != 0x4014) { - SetTile(0x4014, COORD_TO_TILE_OFFSET(super, 0, 0x18), 1); + SetBottomTile(0x4014, COORD_TO_TILE_OFFSET(super, 0, 0x18), 1); } } else { super->spritePriority.b0 = 5; if (this->unk_72 != sub_080B1A0C(super, 0, -0x18)) { - SetTile(this->unk_72, COORD_TO_TILE_OFFSET(super, 0, 0x18), 1); + SetBottomTile(this->unk_72, COORD_TO_TILE_OFFSET(super, 0, 0x18), 1); } } } diff --git a/src/object/bigIceBlock.c b/src/object/bigIceBlock.c index e52d43233..126b06005 100644 --- a/src/object/bigIceBlock.c +++ b/src/object/bigIceBlock.c @@ -137,10 +137,10 @@ void sub_08099910(BigIceBlockEntity* this) { switch (uVar2) { default: - SetTile(0x4022, position - 0x41, super->collisionLayer); - SetTile(0x4022, position - 0x40, super->collisionLayer); - SetTile(0x4022, position - 1, super->collisionLayer); - SetTile(0x4022, position, super->collisionLayer); + SetBottomTile(0x4022, position - 0x41, super->collisionLayer); + SetBottomTile(0x4022, position - 0x40, super->collisionLayer); + SetBottomTile(0x4022, position - 1, super->collisionLayer); + SetBottomTile(0x4022, position, super->collisionLayer); break; case 1: iVar1 = sub_080B1AE0(position - 0x41, super->collisionLayer); @@ -148,27 +148,27 @@ void sub_08099910(BigIceBlockEntity* this) { if (iVar1 == 0x12) { uVar3 = 0x4079; } - SetTile(uVar3, position - 0x41, super->collisionLayer); - SetTile(0x4022, position - 0x40, super->collisionLayer); + SetBottomTile(uVar3, position - 0x41, super->collisionLayer); + SetBottomTile(0x4022, position - 0x40, super->collisionLayer); iVar1 = sub_080B1AE0(position - 0x3f, super->collisionLayer); uVar3 = 0x4025; if (iVar1 == 0x12) { uVar3 = 0x407b; } - SetTile(uVar3, position - 0x3f, super->collisionLayer); + SetBottomTile(uVar3, position - 0x3f, super->collisionLayer); iVar1 = sub_080B1AE0(position - 1, super->collisionLayer); uVar3 = 0x4024; if (iVar1 == 0x12) { uVar3 = 0x4079; } - SetTile(uVar3, position - 1, super->collisionLayer); - SetTile(0x4022, position, super->collisionLayer); + SetBottomTile(uVar3, position - 1, super->collisionLayer); + SetBottomTile(0x4022, position, super->collisionLayer); iVar1 = sub_080B1AE0(position + 1, super->collisionLayer); uVar3 = 0x4025; if (iVar1 == 0x12) { uVar3 = 0x407b; } - SetTile(uVar3, position + 1, super->collisionLayer); + SetBottomTile(uVar3, position + 1, super->collisionLayer); return; break; case 2: @@ -177,27 +177,27 @@ void sub_08099910(BigIceBlockEntity* this) { if (iVar1 == 0x12) { uVar3 = 0x4077; } - SetTile(uVar3, position - 0x41, super->collisionLayer); + SetBottomTile(uVar3, position - 0x41, super->collisionLayer); iVar1 = sub_080B1AE0(position - 0x40, super->collisionLayer); uVar3 = 0x4023; if (iVar1 == 0x12) { uVar3 = 0x4077; } - SetTile(uVar3, position - 0x40, super->collisionLayer); - SetTile(0x4022, position - 1, super->collisionLayer); - SetTile(0x4022, position, super->collisionLayer); + SetBottomTile(uVar3, position - 0x40, super->collisionLayer); + SetBottomTile(0x4022, position - 1, super->collisionLayer); + SetBottomTile(0x4022, position, super->collisionLayer); iVar1 = sub_080B1AE0(position + 0x3f, super->collisionLayer); uVar3 = 0x4026; if (iVar1 == 0x12) { uVar3 = 0x407c; } - SetTile(uVar3, position + 0x3f, super->collisionLayer); + SetBottomTile(uVar3, position + 0x3f, super->collisionLayer); iVar1 = sub_080B1AE0(position + 0x40, super->collisionLayer); uVar3 = 0x4026; if (iVar1 == 0x12) { uVar3 = 0x407c; } - SetTile(uVar3, position + 0x40, super->collisionLayer); + SetBottomTile(uVar3, position + 0x40, super->collisionLayer); break; case 3: iVar1 = sub_080B1AE0(position - 0x41, super->collisionLayer); @@ -205,50 +205,50 @@ void sub_08099910(BigIceBlockEntity* this) { if (iVar1 == 0x12) { uVar3 = 0x4075; } - SetTile(uVar3, position - 0x41, super->collisionLayer); + SetBottomTile(uVar3, position - 0x41, super->collisionLayer); iVar1 = sub_080B1AE0(position - 0x40, super->collisionLayer); uVar3 = 0x4023; if (iVar1 == 0x12) { uVar3 = 0x4077; } - SetTile(uVar3, position - 0x40, super->collisionLayer); + SetBottomTile(uVar3, position - 0x40, super->collisionLayer); iVar1 = sub_080B1AE0(position - 0x3f, super->collisionLayer); uVar3 = 0x4028; if (iVar1 == 0x12) { uVar3 = 0x4076; } - SetTile(uVar3, position - 0x3f, super->collisionLayer); + SetBottomTile(uVar3, position - 0x3f, super->collisionLayer); iVar1 = sub_080B1AE0(position - 1, super->collisionLayer); uVar3 = 0x4024; if (iVar1 == 0x12) { uVar3 = 0x4079; } - SetTile(uVar3, position - 1, super->collisionLayer); - SetTile(0x4022, position, super->collisionLayer); + SetBottomTile(uVar3, position - 1, super->collisionLayer); + SetBottomTile(0x4022, position, super->collisionLayer); iVar1 = sub_080B1AE0(position + 1, super->collisionLayer); uVar3 = 0x4025; if (iVar1 == 0x12) { uVar3 = 0x407b; } - SetTile(uVar3, position + 1, super->collisionLayer); + SetBottomTile(uVar3, position + 1, super->collisionLayer); iVar1 = sub_080B1AE0(position + 0x3f, super->collisionLayer); uVar3 = 0x4029; if (iVar1 == 0x12) { uVar3 = 0x4078; } - SetTile(uVar3, position + 0x3f, super->collisionLayer); + SetBottomTile(uVar3, position + 0x3f, super->collisionLayer); iVar1 = sub_080B1AE0(position + 0x40, super->collisionLayer); uVar3 = 0x4026; if (iVar1 == 0x12) { uVar3 = 0x407c; } - SetTile(uVar3, position + 0x40, super->collisionLayer); + SetBottomTile(uVar3, position + 0x40, super->collisionLayer); iVar1 = sub_080B1AE0(position + 0x41, super->collisionLayer); uVar3 = 0x402a; if (iVar1 == 0x12) { uVar3 = 0x407a; } - SetTile(uVar3, position + 0x41, super->collisionLayer); + SetBottomTile(uVar3, position + 0x41, super->collisionLayer); break; } } diff --git a/src/object/bigPushableLever.c b/src/object/bigPushableLever.c index e41107034..10dc93678 100644 --- a/src/object/bigPushableLever.c +++ b/src/object/bigPushableLever.c @@ -50,8 +50,8 @@ void BigPushableLever_Init(BigPushableLeverEntity* this) { void BigPushableLever_Idle(BigPushableLeverEntity* this) { if (BigPushableLever_ShouldStartPushing(this)) { super->action = PUSHING; - SetTile(this->tileIndexUpper, this->tilePositionUpper, super->collisionLayer); - SetTile(this->tileIndexLower, this->tilePositionLower, super->collisionLayer); + SetBottomTile(this->tileIndexUpper, this->tilePositionUpper, super->collisionLayer); + SetBottomTile(this->tileIndexLower, this->tilePositionLower, super->collisionLayer); EnqueueSFX(SFX_132); RequestPriorityDuration(super, 30); if (PlayerCanBeMoved()) { @@ -90,8 +90,8 @@ void BigPushableLever_SetTiles(BigPushableLeverEntity* this) { this->tilePositionLower = this->tilePositionUpper - 0x40; this->tileIndexUpper = GetTileIndex(this->tilePositionUpper, super->collisionLayer); this->tileIndexLower = GetTileIndex(this->tilePositionLower, super->collisionLayer); - SetTile(0x4057, this->tilePositionUpper, super->collisionLayer); - SetTile(0x4058, this->tilePositionLower, super->collisionLayer); + SetBottomTile(0x4057, this->tilePositionUpper, super->collisionLayer); + SetBottomTile(0x4058, this->tilePositionLower, super->collisionLayer); InitializeAnimation(super, 1); } else { super->type2 = 1; @@ -99,8 +99,8 @@ void BigPushableLever_SetTiles(BigPushableLeverEntity* this) { this->tilePositionLower = this->tilePositionUpper - 1; this->tileIndexUpper = GetTileIndex(this->tilePositionUpper, super->collisionLayer); this->tileIndexLower = GetTileIndex(this->tilePositionLower, super->collisionLayer); - SetTile(0x4055, this->tilePositionUpper, super->collisionLayer); - SetTile(0x4056, this->tilePositionLower, super->collisionLayer); + SetBottomTile(0x4055, this->tilePositionUpper, super->collisionLayer); + SetBottomTile(0x4056, this->tilePositionLower, super->collisionLayer); InitializeAnimation(super, 0); } } @@ -111,7 +111,7 @@ bool32 BigPushableLever_ShouldStartPushing(BigPushableLeverEntity* this) { return TRUE; } BigPushableLever_CalculateSpriteOffsets(this); - SetTile(gUnk_081236E8[super->type2], this->tilePositionLower, super->collisionLayer); + SetBottomTile(gUnk_081236E8[super->type2], this->tilePositionLower, super->collisionLayer); } else { this->timer = 60; super->spriteOffsetX = 0; diff --git a/src/object/board.c b/src/object/board.c index dbdcabea7..be77640ab 100644 --- a/src/object/board.c +++ b/src/object/board.c @@ -53,7 +53,7 @@ void Board_Init(BoardEntity* this) { UpdateSpriteForCollisionLayer(super); super->spritePriority.b0 = 6; if (super->type == 0) { - SetTile(0x4074, this->tile - 0x40, super->collisionLayer); + SetBottomTile(0x4074, this->tile - 0x40, super->collisionLayer); } sub_08098BE8(this); } diff --git a/src/object/bollard.c b/src/object/bollard.c index 6a5d45ccf..b21636c5c 100644 --- a/src/object/bollard.c +++ b/src/object/bollard.c @@ -58,7 +58,7 @@ void Bollard_Action1(BollardEntity* this) { } super->action = 2; InitializeAnimation(super, 3); - SetTile(this->tileIndex, this->tile, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tile, super->collisionLayer); EnqueueSFX(SFX_1A5); } @@ -95,7 +95,7 @@ void sub_0808B3AC(BollardEntity* this) { this->tile = COORD_TO_TILE(super); this->tileIndex = GetTileIndex(this->tile, super->collisionLayer); this->unk74 = sub_080B1B44(this->tile, super->collisionLayer); - SetTile(0x400b, this->tile, super->collisionLayer); + SetBottomTile(0x400b, this->tile, super->collisionLayer); } void sub_0808B41C(BollardEntity* this) { diff --git a/src/object/bossDoor.c b/src/object/bossDoor.c index 8502dd145..0a408f4e8 100644 --- a/src/object/bossDoor.c +++ b/src/object/bossDoor.c @@ -177,28 +177,28 @@ void sub_0808C500(BossDoorEntity* this) { this->unk_78 = GetTileIndex(this->unk_74 - 1, super->collisionLayer); this->unk_7a = GetTileIndex(this->unk_74, super->collisionLayer); this->unk_7c = GetTileIndex(this->unk_74 + 1, super->collisionLayer); - SetTile(0x4022, this->unk_74 - 1, super->collisionLayer); - SetTile(0x4022, this->unk_74, super->collisionLayer); - SetTile(0x4022, this->unk_74 + 1, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74 - 1, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74 + 1, super->collisionLayer); } else { this->unk_78 = GetTileIndex(this->unk_74 - 0x40, super->collisionLayer); this->unk_7a = GetTileIndex(this->unk_74, super->collisionLayer); this->unk_7c = GetTileIndex(this->unk_74 + 0x40, super->collisionLayer); - SetTile(0x4022, this->unk_74 - 0x40, super->collisionLayer); - SetTile(0x4022, this->unk_74, super->collisionLayer); - SetTile(0x4022, this->unk_74 + 0x40, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74 - 0x40, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74 + 0x40, super->collisionLayer); } } void sub_0808C5D0(BossDoorEntity* this) { if ((this->unk_76 == 0) || (this->unk_76 == 2)) { - SetTile(this->unk_78, this->unk_74 - 1, super->collisionLayer); - SetTile(this->unk_7a, this->unk_74, super->collisionLayer); - SetTile(this->unk_7c, this->unk_74 + 1, super->collisionLayer); + SetBottomTile(this->unk_78, this->unk_74 - 1, super->collisionLayer); + SetBottomTile(this->unk_7a, this->unk_74, super->collisionLayer); + SetBottomTile(this->unk_7c, this->unk_74 + 1, super->collisionLayer); } else { - SetTile(this->unk_78, this->unk_74 - 0x40, super->collisionLayer); - SetTile(this->unk_7a, this->unk_74, super->collisionLayer); - SetTile(this->unk_7c, this->unk_74 + 0x40, super->collisionLayer); + SetBottomTile(this->unk_78, this->unk_74 - 0x40, super->collisionLayer); + SetBottomTile(this->unk_7a, this->unk_74, super->collisionLayer); + SetBottomTile(this->unk_7c, this->unk_74 + 0x40, super->collisionLayer); } } diff --git a/src/object/bush.c b/src/object/bush.c index 38371e1ec..4e0863471 100644 --- a/src/object/bush.c +++ b/src/object/bush.c @@ -68,7 +68,7 @@ void Bush_Init(BushEntity* this) { super->hitbox = (Hitbox*)&gUnk_081205B4; this->unk_72 = 0; this->unk_70 = GetTileIndex(COORD_TO_TILE(super), super->collisionLayer); - SetTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); InitializeAnimation(super, gUnk_08120588[super->type].unk_0); } diff --git a/src/object/button.c b/src/object/button.c index ad621bc70..f0192ac7c 100644 --- a/src/object/button.c +++ b/src/object/button.c @@ -105,7 +105,7 @@ void Button_Action4(ButtonEntity* this) { super->timer--; if (super->subtimer != 0) { super->subtimer = 0; - SetTile(0x4035, this->unk_74, super->collisionLayer); + SetBottomTile(0x4035, this->unk_74, super->collisionLayer); } if (sub_08081CB0(this)) { super->action = 3; @@ -230,7 +230,7 @@ void sub_08081E6C(ButtonEntity* this) { if (tile < 0x4000) return; - r1 = GetLayerByIndex(r5); + r1 = GetTileBuffer(r5); r4 = (super->type == 0 ? 0x7a : 0x78); tmp = r1->metatiles; tmp = tmp + (r1->unkData2[r4] << 2); @@ -239,7 +239,7 @@ void sub_08081E6C(ButtonEntity* this) { if (sub_08081F00((u32*)tmp2, (u32*)tmp)) return; SetTileType(r4, r6, r5); - SetTile(tile, r6, r5); + SetBottomTile(tile, r6, r5); } u32 sub_08081F00(u32* unk1, u32* unk2) { @@ -279,7 +279,7 @@ bool32 sub_08081F7C(ButtonEntity* this, u32 r7) { sub_08081F24(super); SoundReq(SFX_BUTTON_PRESS); if (this->unk_70 != 0xFFFF) - SetTile(this->unk_70, this->unk_74, super->collisionLayer); + SetBottomTile(this->unk_70, this->unk_74, super->collisionLayer); return FALSE; } } diff --git a/src/object/cabinFurniture.c b/src/object/cabinFurniture.c index e23df88c3..2a9979ab0 100644 --- a/src/object/cabinFurniture.c +++ b/src/object/cabinFurniture.c @@ -43,38 +43,38 @@ void CabinFurniture_Init(CabinFurnitureEntity* this) { super->spritePriority.b0 = 6; uVar7 = this->tile; uVar6 = uVar7 - 1; - SetTile(0x4022, uVar6, uVar1); - SetTile(0x4022, uVar7, uVar1); - SetTile(0x4022, uVar7 + 1, uVar1); - SetTile(0x4022, uVar7 + 0x3f, uVar1); - SetTile(0x4022, uVar7 + 0x40, uVar1); - SetTile(0x4022, uVar7 + 0x41, uVar1); - SetTile(0x403d, uVar7 - 0x41, uVar1); - SetTile(0x403d, uVar7 - 0x40, uVar1); - SetTile(0x4026, uVar7 - 0x3f, uVar1); - SetTile(0x4026, uVar7 - 0x81, uVar1); - SetTile(0x4026, uVar7 - 0x80, uVar1); + SetBottomTile(0x4022, uVar6, uVar1); + SetBottomTile(0x4022, uVar7, uVar1); + SetBottomTile(0x4022, uVar7 + 1, uVar1); + SetBottomTile(0x4022, uVar7 + 0x3f, uVar1); + SetBottomTile(0x4022, uVar7 + 0x40, uVar1); + SetBottomTile(0x4022, uVar7 + 0x41, uVar1); + SetBottomTile(0x403d, uVar7 - 0x41, uVar1); + SetBottomTile(0x403d, uVar7 - 0x40, uVar1); + SetBottomTile(0x4026, uVar7 - 0x3f, uVar1); + SetBottomTile(0x4026, uVar7 - 0x81, uVar1); + SetBottomTile(0x4026, uVar7 - 0x80, uVar1); break; case 1: super->action = 1; uVar6 = this->tile; - SetTile(0x4022, uVar6, uVar1); - SetTile(0x4022, uVar6 + 0x40, uVar1); - SetTile(0x4025, uVar6 + 0x41, uVar1); + SetBottomTile(0x4022, uVar6, uVar1); + SetBottomTile(0x4022, uVar6 + 0x40, uVar1); + SetBottomTile(0x4025, uVar6 + 0x41, uVar1); if (CheckLocalFlag(0x4f) == 0) { - SetTile(0x402f, uVar6 + 1, uVar1); + SetBottomTile(0x402f, uVar6 + 1, uVar1); } else { - SetTile(0x402d, uVar6 + 1, uVar1); + SetBottomTile(0x402d, uVar6 + 1, uVar1); } break; case 2: super->action = 1; uVar7 = this->tile; uVar6 = uVar7 - 0x41; - SetTile(0x4022, uVar6, uVar1); - SetTile(0x4022, uVar7 - 0x40, uVar1); - SetTile(0x4022, uVar7 - 1, uVar1); - SetTile(0x4022, uVar7, uVar1); + SetBottomTile(0x4022, uVar6, uVar1); + SetBottomTile(0x4022, uVar7 - 0x40, uVar1); + SetBottomTile(0x4022, uVar7 - 1, uVar1); + SetBottomTile(0x4022, uVar7, uVar1); break; } } diff --git a/src/object/carlovObject.c b/src/object/carlovObject.c index 2a0934915..ea7d30a6a 100644 --- a/src/object/carlovObject.c +++ b/src/object/carlovObject.c @@ -97,7 +97,7 @@ void CarlovObject_Type1Init(CarlovObjectEntity* this) { if (super->timer == 0) { super->action = 1; super->subtimer = 120; - SetTile(0x4022, this->unk_76, super->collisionLayer); + SetBottomTile(0x4022, this->unk_76, super->collisionLayer); } else { super->action = 3; super->spriteSettings.draw = 0; @@ -111,7 +111,7 @@ void CarlovObject_Type1Action1(CarlovObjectEntity* this) { super->action = 2; super->timer = 7; super->direction = 0; - SetTile(this->unk_74, this->unk_76, super->collisionLayer); + SetBottomTile(this->unk_74, this->unk_76, super->collisionLayer); EnqueueSFX(SFX_10B); } } @@ -140,7 +140,7 @@ void CarlovObject_Type1Action4(CarlovObjectEntity* this) { super->action = 5; sub_08083814(super, 2); EnqueueSFX(SFX_10B); - SetTile(0x4022, this->unk_76, super->collisionLayer); + SetBottomTile(0x4022, this->unk_76, super->collisionLayer); } } diff --git a/src/object/crenelBeanSprout.c b/src/object/crenelBeanSprout.c index cdadc5839..b6512f063 100644 --- a/src/object/crenelBeanSprout.c +++ b/src/object/crenelBeanSprout.c @@ -54,13 +54,13 @@ void CrenelBeanSprout_Init(CrenelBeanSproutEntity* this) { if (CheckGlobalFlag(WATERBEAN_OUT)) { if (CheckGlobalFlag(WATERBEAN_PUT) == 0) { PositionRelative(&gPlayerEntity.base, super, 0, 0x10000); - SetTile(0x4022, 0xdc, super->collisionLayer); + SetBottomTile(0x4022, 0xdc, super->collisionLayer); } else { if (CheckLocalFlag(super->type2) == 0) { InitializeAnimation(super, 10); super->y.HALF.HI += 4; super->action = 4; - SetTile(0x403b, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x403b, COORD_TO_TILE(super), super->collisionLayer); return; } super->type2 = 0; @@ -107,7 +107,7 @@ void CrenelBeanSprout_Init(CrenelBeanSproutEntity* this) { InitializeAnimation(super, 0xb); super->y.HALF.HI += 4; super->action = 4; - SetTile(0x4032, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4032, COORD_TO_TILE(super), super->collisionLayer); return; } else { super->type2 = 0; @@ -329,5 +329,5 @@ void sub_08096A78(CrenelBeanSproutEntity* this) { SnapToTile(super); super->y.HALF.HI += 4; super->action = 3; - SetTile(0x403b, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x403b, COORD_TO_TILE(super), super->collisionLayer); } diff --git a/src/object/dirtParticle.c b/src/object/dirtParticle.c index 827456c29..ac7e848e1 100644 --- a/src/object/dirtParticle.c +++ b/src/object/dirtParticle.c @@ -101,7 +101,7 @@ void DirtParticle_Init(DirtParticleEntity* this) { void DirtParticle_Action1(DirtParticleEntity* this) { DirtParticleEntity* entity; - if ((super->contactFlags & 0x80) == 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) == 0) { return; } switch (super->contactFlags & 0x7f) { @@ -128,7 +128,7 @@ void DirtParticle_Action3(DirtParticleEntity* this) { sub_08087B9C, sub_08087B9C, }; - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { gUnk_08120A80[super->subAction](this); } else { super->action = 1; diff --git a/src/object/doubleBookshelf.c b/src/object/doubleBookshelf.c index cbc27c938..d1b0c1fe6 100644 --- a/src/object/doubleBookshelf.c +++ b/src/object/doubleBookshelf.c @@ -98,39 +98,39 @@ void sub_0809B0B0(DoubleBookshelfEntity* this) { case 0: this->unk_84 = 0; this->unk_82 = position + 2; - SetTile(0x4082, position - 1, layer); - SetTile(0x4022, position, layer); - SetTile(0x4022, position + 1, layer); - SetTile(0x4022, position + 2, layer); + SetBottomTile(0x4082, position - 1, layer); + SetBottomTile(0x4022, position, layer); + SetBottomTile(0x4022, position + 1, layer); + SetBottomTile(0x4022, position + 2, layer); break; case 1: this->unk_84 = 1; this->unk_82 = position; - SetTile(0x405f, position, layer); - SetTile(0x4022, position + 1, layer); - SetTile(0x4022, position + 2, layer); - SetTile(0x4082, position + 3, layer); + SetBottomTile(0x405f, position, layer); + SetBottomTile(0x4022, position + 1, layer); + SetBottomTile(0x4022, position + 2, layer); + SetBottomTile(0x4082, position + 3, layer); break; case 2: this->unk_84 = 1; this->unk_82 = position; - SetTile(0x4082, position + 3, layer); - SetTile(0x4022, position + 2, layer); - SetTile(0x405f, position, layer); + SetBottomTile(0x4082, position + 3, layer); + SetBottomTile(0x4022, position + 2, layer); + SetBottomTile(0x405f, position, layer); SetFlag(((DoubleBookshelfEntity*)super->parent)->unk_86); break; case 3: this->unk_84 = 0; this->unk_82 = position + 2; - SetTile(0x4082, position - 1, layer); - SetTile(0x4022, position, layer); - SetTile(0x405f, position + 2, layer); + SetBottomTile(0x4082, position - 1, layer); + SetBottomTile(0x4022, position, layer); + SetBottomTile(0x405f, position + 2, layer); ClearFlag(((DoubleBookshelfEntity*)super->parent)->unk_86); break; case 4: - SetTile(0x4022, position, layer); - SetTile(0x4022, position + 1, layer); - SetTile(0x4022, position + 2, layer); + SetBottomTile(0x4022, position, layer); + SetBottomTile(0x4022, position + 1, layer); + SetBottomTile(0x4022, position + 2, layer); break; } } @@ -157,7 +157,7 @@ void sub_0809B274(DoubleBookshelfEntity* this) { case 1: if (player->x.HALF.HI + 0x1c > super->x.HALF.HI) { this->unk_84 = 2; - SetTile(0x4022, this->unk_80 + 2, 1); + SetBottomTile(0x4022, this->unk_80 + 2, 1); sub_0809B358((DoubleBookshelfEntity*)super->child); return; } @@ -182,7 +182,7 @@ void sub_0809B334(DoubleBookshelfEntity* this) { s32 index; u32 position = this->unk_80 - 0x81; for (index = 2; index >= 0; index--, position++) { - SetTile(0x4026, position, 1); + SetBottomTile(0x4026, position, 1); } } @@ -194,7 +194,7 @@ void sub_0809B358(DoubleBookshelfEntity* this) { const u16* array = &gUnk_08123D68[this->unk_84]; u32 position = this->unk_80 - 0x82; for (index = 4; index >= 0;) { - SetTile(*array, position, 1); + SetBottomTile(*array, position, 1); index--; position++; array += 2; diff --git a/src/object/eyeSwitch.c b/src/object/eyeSwitch.c index 152d511a0..60310e5c0 100644 --- a/src/object/eyeSwitch.c +++ b/src/object/eyeSwitch.c @@ -50,7 +50,7 @@ void EyeSwitch_Init(EyeSwitchEntity* this) { } void EyeSwitch_Action1(EyeSwitchEntity* this) { - if ((super->contactFlags == 0x95 || super->contactFlags == 0x8e) && + if ((super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x15) || super->contactFlags == (CONTACT_TAKE_DAMAGE | 0xe)) && (DirectionRoundUp(super->contactedEntity->direction) >> 3 == (super->animationState & 3))) { super->action = 2; COLLISION_OFF(super); diff --git a/src/object/fairy.c b/src/object/fairy.c index 871da3dd3..380269060 100644 --- a/src/object/fairy.c +++ b/src/object/fairy.c @@ -40,7 +40,7 @@ void Fairy(FairyEntity* this) { Fairy_Init, Fairy_Action1, Fairy_Action2, Fairy_Action3, Fairy_Action4, }; - if (((super->contactFlags & 0x80) != 0)) { + if (((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0)) { switch (super->contactFlags & 0x7f) { case 0x14: super->action = 3; diff --git a/src/object/figurineDevice.c b/src/object/figurineDevice.c index d975556ad..d21c51cd4 100644 --- a/src/object/figurineDevice.c +++ b/src/object/figurineDevice.c @@ -305,9 +305,9 @@ void sub_08087F58(FigurineDeviceEntity* this) { switch (super->type) { case 0: case 1: - SetTile(0x4022, this->unk_78 - 1, 1); - SetTile(0x4022, this->unk_78, 1); - SetTile(0x4022, this->unk_78 + 1, 1); + SetBottomTile(0x4022, this->unk_78 - 1, 1); + SetBottomTile(0x4022, this->unk_78, 1); + SetBottomTile(0x4022, this->unk_78 + 1, 1); break; } } diff --git a/src/object/fireplace.c b/src/object/fireplace.c index 98cfa2a63..4e463979f 100644 --- a/src/object/fireplace.c +++ b/src/object/fireplace.c @@ -35,7 +35,7 @@ void Fireplace_Init(FireplaceEntity* this) { DeleteThisEntity(); } else { sub_0807B7D8(0x30b, TILE(super->x.HALF.HI, super->y.HALF.HI), 2); - SetTile(0x4061, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); + SetBottomTile(0x4061, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); } Fireplace_Action1(this); } @@ -57,6 +57,6 @@ void sub_0809B7C0(FireplaceEntity* this) { void sub_0809B7DC(FireplaceEntity* this) { sub_0807B7D8(0xc3 << 2, TILE(super->x.HALF.HI, super->y.HALF.HI), 2); - SetTile(0x4062, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); + SetBottomTile(0x4062, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); super->timer = 1; } diff --git a/src/object/frozenWaterElement.c b/src/object/frozenWaterElement.c index dd40d3ab3..e9588e4e8 100644 --- a/src/object/frozenWaterElement.c +++ b/src/object/frozenWaterElement.c @@ -113,33 +113,33 @@ void FrozenWaterElement_Action2(FrozenWaterElementEntity* this) { void sub_0809C0A8(FrozenWaterElementEntity* this) { u32 position = COORD_TO_TILE(super); - SetTile(0x4022, position - 0x41, super->collisionLayer); - SetTile(0x4022, position - 0x40, super->collisionLayer); - SetTile(0x4022, position - 0x3f, super->collisionLayer); - SetTile(0x4022, position - 2, super->collisionLayer); - SetTile(0x4022, position - 1, super->collisionLayer); - SetTile(0x4022, position, super->collisionLayer); - SetTile(0x4022, position + 1, super->collisionLayer); - SetTile(0x4022, position + 2, super->collisionLayer); - SetTile(0x4022, position + 0x3e, super->collisionLayer); - SetTile(0x4022, position + 0x3f, super->collisionLayer); - SetTile(0x4022, position + 0x40, super->collisionLayer); - SetTile(0x4022, position + 0x41, super->collisionLayer); - SetTile(0x4022, position + 0x42, super->collisionLayer); - SetTile(0x4022, position + 0x7f, super->collisionLayer); - SetTile(0x4022, position + 0x80, super->collisionLayer); - SetTile(0x4022, position + 0x81, super->collisionLayer); - SetTile(0x4022, position + 0x13f, super->collisionLayer); - SetTile(0x4022, position + 0x140, super->collisionLayer); - SetTile(0x4022, position + 0x141, super->collisionLayer); - SetTile(0x4022, position + 0x17f, super->collisionLayer); - SetTile(0x4022, position + 0x181, super->collisionLayer); - SetTile(0x4022, position + 0x1bd, super->collisionLayer); - SetTile(0x4022, position + 0x1be, super->collisionLayer); - SetTile(0x4022, position + 0x1bf, super->collisionLayer); - SetTile(0x4022, position + 0x1c1, super->collisionLayer); - SetTile(0x4022, position + 0x1c2, super->collisionLayer); - SetTile(0x4022, position + 0x1c3, super->collisionLayer); + SetBottomTile(0x4022, position - 0x41, super->collisionLayer); + SetBottomTile(0x4022, position - 0x40, super->collisionLayer); + SetBottomTile(0x4022, position - 0x3f, super->collisionLayer); + SetBottomTile(0x4022, position - 2, super->collisionLayer); + SetBottomTile(0x4022, position - 1, super->collisionLayer); + SetBottomTile(0x4022, position, super->collisionLayer); + SetBottomTile(0x4022, position + 1, super->collisionLayer); + SetBottomTile(0x4022, position + 2, super->collisionLayer); + SetBottomTile(0x4022, position + 0x3e, super->collisionLayer); + SetBottomTile(0x4022, position + 0x3f, super->collisionLayer); + SetBottomTile(0x4022, position + 0x40, super->collisionLayer); + SetBottomTile(0x4022, position + 0x41, super->collisionLayer); + SetBottomTile(0x4022, position + 0x42, super->collisionLayer); + SetBottomTile(0x4022, position + 0x7f, super->collisionLayer); + SetBottomTile(0x4022, position + 0x80, super->collisionLayer); + SetBottomTile(0x4022, position + 0x81, super->collisionLayer); + SetBottomTile(0x4022, position + 0x13f, super->collisionLayer); + SetBottomTile(0x4022, position + 0x140, super->collisionLayer); + SetBottomTile(0x4022, position + 0x141, super->collisionLayer); + SetBottomTile(0x4022, position + 0x17f, super->collisionLayer); + SetBottomTile(0x4022, position + 0x181, super->collisionLayer); + SetBottomTile(0x4022, position + 0x1bd, super->collisionLayer); + SetBottomTile(0x4022, position + 0x1be, super->collisionLayer); + SetBottomTile(0x4022, position + 0x1bf, super->collisionLayer); + SetBottomTile(0x4022, position + 0x1c1, super->collisionLayer); + SetBottomTile(0x4022, position + 0x1c2, super->collisionLayer); + SetBottomTile(0x4022, position + 0x1c3, super->collisionLayer); } void sub_0809C23C(FrozenWaterElementEntity* this) { diff --git a/src/object/furniture.c b/src/object/furniture.c index 31d06f14c..7a1852878 100644 --- a/src/object/furniture.c +++ b/src/object/furniture.c @@ -217,14 +217,14 @@ static void FurnitureInit(FurnitureEntity* this) { break; case 0x40: super->y.HALF.HI = (super->y.HALF.HI & ~0xF) | 4; - SetTile(0x4017, this->tile - 128, 1); - SetTile(0x4017, this->tile - 64, 1); + SetBottomTile(0x4017, this->tile - 128, 1); + SetBottomTile(0x4017, this->tile - 64, 1); break; case 0x80: super->frameIndex = 0; super->y.HALF.HI = (super->y.HALF.HI & ~0xF) | 6; this->tile = COORD_TO_TILE(super); - SetTile(0x4026, this->tile, super->collisionLayer); + SetBottomTile(0x4026, this->tile, super->collisionLayer); break; case 0x200: break; @@ -260,8 +260,8 @@ static void FurnitureInit(FurnitureEntity* this) { tile = this->tile - 129; cnt = super->type != 26 ? 3 : 2; for (i = 0; i < cnt; ++i, ++tile) { - SetTile(0x4026, tile, 2); - SetTile(0x4026, tile, 1); + SetBottomTile(0x4026, tile, 2); + SetBottomTile(0x4026, tile, 1); sub_080001D0(0, tile + 64, 1); } break; @@ -287,22 +287,22 @@ static void FurnitureInit(FurnitureEntity* this) { case STAIRCASE: super->collisionLayer = 1; super->spriteOrientation.flipY = 2; - SetTile(0x4074, this->tile - 64, super->collisionLayer); + SetBottomTile(0x4074, this->tile - 64, super->collisionLayer); sub_080001D0(63, this->tile - 64, super->collisionLayer); - SetTile(0x4017, this->tile, super->collisionLayer); - SetTile(0x4017, this->tile + 64, super->collisionLayer); + SetBottomTile(0x4017, this->tile, super->collisionLayer); + SetBottomTile(0x4017, this->tile + 64, super->collisionLayer); break; case MINISH_CHEESE: if (super->type2 != 0) super->spriteOffsetX = -4; break; case WOODEN_TABLE: - SetTile(0x4023, this->tile - 65, super->collisionLayer); - SetTile(0x4023, this->tile - 64, super->collisionLayer); - SetTile(0x4023, this->tile - 63, super->collisionLayer); + SetBottomTile(0x4023, this->tile - 65, super->collisionLayer); + SetBottomTile(0x4023, this->tile - 64, super->collisionLayer); + SetBottomTile(0x4023, this->tile - 63, super->collisionLayer); break; case LOW_BOOKSHELF: - SetTile(0x4022, this->tile + 65, super->collisionLayer); + SetBottomTile(0x4022, this->tile + 65, super->collisionLayer); } } @@ -340,9 +340,9 @@ static void FurnitureUpdate(FurnitureEntity* this) { case 0x80: if (gPlayerEntity.base.y.HALF.HI < super->y.HALF.HI + 8) { if (gPlayerState.floor_type != SURFACE_LADDER && GetTileTypeByEntity(super) == 0x4017) { - SetTile(0x4026, this->tile, super->collisionLayer); - SetTile(0x403D, this->tile - 64, super->collisionLayer); - SetTile(0x403D, this->tile - 128, super->collisionLayer); + SetBottomTile(0x4026, this->tile, super->collisionLayer); + SetBottomTile(0x403D, this->tile - 64, super->collisionLayer); + SetBottomTile(0x403D, this->tile - 128, super->collisionLayer); } } else { if (gPlayerEntity.base.collisionLayer & 2) { @@ -350,9 +350,9 @@ static void FurnitureUpdate(FurnitureEntity* this) { UpdateSpriteForCollisionLayer(&gPlayerEntity.base); } if (GetTileTypeByEntity(super) != 0x4017) { - SetTile(0x4017, this->tile, super->collisionLayer); - SetTile(0x4017, this->tile - 64, super->collisionLayer); - SetTile(0x4014, this->tile - 128, super->collisionLayer); + SetBottomTile(0x4017, this->tile, super->collisionLayer); + SetBottomTile(0x4017, this->tile - 64, super->collisionLayer); + SetBottomTile(0x4014, this->tile - 128, super->collisionLayer); } } break; @@ -377,28 +377,28 @@ static void sub_08090B6C(FurnitureEntity* this) { num = 2; } for (i = -num; i <= num; ++i) { - SetTile(0x4022, tile + i, cl); + SetBottomTile(0x4022, tile + i, cl); } if (px & 8) { sub_08090CDC(0x4024, tile - i, cl); sub_08090CDC(0x4025, tile + i, cl); } else { - SetTile(0x4022, tile - i, cl); + SetBottomTile(0x4022, tile - i, cl); } break; case 1: num = w2 / 8; for (i = -num; i <= num; i++) { - SetTile(0x4022, tile + i, cl); + SetBottomTile(0x4022, tile + i, cl); } if (px & 8) { sub_08090CDC(0x4024, tile - i, cl); if (i != 0) { - SetTile(0x4022, tile + i, cl); + SetBottomTile(0x4022, tile + i, cl); } } else { if (i != 0) { - SetTile(0x4022, tile - i, cl); + SetBottomTile(0x4022, tile - i, cl); } sub_08090CDC(0x4025, tile + i, cl); } @@ -406,10 +406,10 @@ static void sub_08090B6C(FurnitureEntity* this) { case 2: num = w2 / 4; for (i = -num; i < num; ++i) { - SetTile(0x4022, tile + i, cl); + SetBottomTile(0x4022, tile + i, cl); } if (px & 8) { - SetTile(0x4022, tile + i, cl); + SetBottomTile(0x4022, tile + i, cl); } else { sub_08090CDC(0x4024, tile - i - 1, cl); sub_08090CDC(0x4025, tile + i, cl); @@ -418,7 +418,7 @@ static void sub_08090B6C(FurnitureEntity* this) { case 3: num = w2 / 4; for (i = -num; i <= num; ++i) { - SetTile(0x4022, tile + i, cl); + SetBottomTile(0x4022, tile + i, cl); } if (px & 8) { sub_08090CDC(0x4025, tile + i, cl); @@ -436,7 +436,7 @@ static void sub_08090CDC(u32 id, u32 pos, u32 layer) { u32 id2; if ((cur & 0x4000) == 0) { - SetTile(id, pos, layer); + SetBottomTile(id, pos, layer); } else { switch (cur) { case 0x4025: @@ -474,7 +474,7 @@ static void sub_08090CDC(u32 id, u32 pos, u32 layer) { default: return; } - SetTile(next, pos, layer); + SetBottomTile(next, pos, layer); } } diff --git a/src/object/gentariCurtain.c b/src/object/gentariCurtain.c index d980d4004..a4c5e2a6d 100644 --- a/src/object/gentariCurtain.c +++ b/src/object/gentariCurtain.c @@ -59,8 +59,8 @@ void GentariCurtain_Init(GentariCurtainEntity* this) { this->tile2 = COORD_TO_TILE_OFFSET(super, 0, -8); this->tileIndex = GetTileIndex(this->tile, 1); this->tileIndex2 = GetTileIndex(this->tile2, 1); - SetTile(0x4022, this->tile, 1); - SetTile(0x4022, this->tile2, 1); + SetBottomTile(0x4022, this->tile, 1); + SetBottomTile(0x4022, this->tile2, 1); InitAnimationForceUpdate(super, 0); } else { super->action = 1; @@ -80,8 +80,8 @@ void GentariCurtain_Action2(GentariCurtainEntity* this) { UpdateAnimationSingleFrame(super); if ((super->frame & ANIM_DONE) != 0) { super->action = 3; - SetTile(this->tileIndex, this->tile, 1); - SetTile(this->tileIndex2, this->tile2, 1); + SetBottomTile(this->tileIndex, this->tile, 1); + SetBottomTile(this->tileIndex2, this->tile2, 1); sub_08092214(this); sub_0809223C(this); InitAnimationForceUpdate(super, 1); diff --git a/src/object/giantBookLadder.c b/src/object/giantBookLadder.c index 1553723bb..fb808a1b2 100644 --- a/src/object/giantBookLadder.c +++ b/src/object/giantBookLadder.c @@ -50,33 +50,33 @@ void sub_0808E55C(GiantBookLadderEntity* this) { case 2: position = this->unk74; unaff_r9 = position - 0x101; - SetTile(0x408f, unaff_r9, super->collisionLayer); - SetTile(0x408f, position - 0x100, super->collisionLayer); - SetTile(0x406c, position - 0x102, super->collisionLayer); - SetTile(0x406d, position - 0xff, super->collisionLayer); + SetBottomTile(0x408f, unaff_r9, super->collisionLayer); + SetBottomTile(0x408f, position - 0x100, super->collisionLayer); + SetBottomTile(0x406c, position - 0x102, super->collisionLayer); + SetBottomTile(0x406d, position - 0xff, super->collisionLayer); type = super->type; uVar5 = 6; if (type != 0) { uVar5 = 4; - SetTile(0x4072, position + 0x3f, super->collisionLayer); - SetTile(0x4072, position + 0x40, super->collisionLayer); - SetTile(0x4072, position + 0x7f, super->collisionLayer); - SetTile(0x4072, position + 0x80, super->collisionLayer); + SetBottomTile(0x4072, position + 0x3f, super->collisionLayer); + SetBottomTile(0x4072, position + 0x40, super->collisionLayer); + SetBottomTile(0x4072, position + 0x7f, super->collisionLayer); + SetBottomTile(0x4072, position + 0x80, super->collisionLayer); } break; case 1: position = this->unk74; unaff_r9 = position - 1; - SetTile(0x408e, unaff_r9, super->collisionLayer); - SetTile(0x408e, position, super->collisionLayer); + SetBottomTile(0x408e, unaff_r9, super->collisionLayer); + SetBottomTile(0x408e, position, super->collisionLayer); uVar5 = 2; break; } for (uVar4 = 0; uVar4 < uVar5; uVar4++) { unaff_r9 += 0x40; - SetTile(0x408e, unaff_r9, super->collisionLayer); - SetTile(0x408e, unaff_r9 + 1, super->collisionLayer); + SetBottomTile(0x408e, unaff_r9, super->collisionLayer); + SetBottomTile(0x408e, unaff_r9 + 1, super->collisionLayer); } } diff --git a/src/object/giantLeaf.c b/src/object/giantLeaf.c index 5c6b1d3c7..3ef82f757 100644 --- a/src/object/giantLeaf.c +++ b/src/object/giantLeaf.c @@ -35,6 +35,6 @@ void sub_0808D618(Entity* this) { ((((this->y.HALF.HI - gRoomControls.origin_y) >> 4) & 0x3F) * 64); for (i = 0; i < 13; i++) { - SetTile(16500, tilePos + arr[i], 1); + SetBottomTile(16500, tilePos + arr[i], 1); } } diff --git a/src/object/giantRock2.c b/src/object/giantRock2.c index 2f5765daf..4370663bf 100644 --- a/src/object/giantRock2.c +++ b/src/object/giantRock2.c @@ -38,10 +38,10 @@ void GiantRock2_Init(GiantRock2Entity* this) { position = (this->tile - 0x80); tileIndex = 0x4022; for (index = 4; index > -1; index--) { - SetTile(tileIndex, position - 2, collisionLayer); - SetTile(tileIndex, position - 1, collisionLayer); - SetTile(tileIndex, position, collisionLayer); - SetTile(tileIndex, position + 1, collisionLayer); + SetBottomTile(tileIndex, position - 2, collisionLayer); + SetBottomTile(tileIndex, position - 1, collisionLayer); + SetBottomTile(tileIndex, position, collisionLayer); + SetBottomTile(tileIndex, position + 1, collisionLayer); position += 0x40; } } diff --git a/src/object/giantTwig.c b/src/object/giantTwig.c index 62deab7ac..a308adf0d 100644 --- a/src/object/giantTwig.c +++ b/src/object/giantTwig.c @@ -155,7 +155,7 @@ void sub_08093984(GiantTwigEntity* this) { } for (index = 0; index < 0x13; index++) { - SetTile(0x4074, array[index] + this->tilePosition, 1); + SetBottomTile(0x4074, array[index] + this->tilePosition, 1); } } @@ -174,47 +174,47 @@ void GiantTwig_Type3Idle(GiantTwigEntity* this) { void sub_08093A1C(GiantTwigEntity* this) { switch (super->type) { case 0: - SetTile(0x4024, this->tilePosition + 0x3c, super->collisionLayer); - SetTile(0x4022, this->tilePosition + 0x3d, super->collisionLayer); - SetTile(0x4022, this->tilePosition + 0x3e, super->collisionLayer); - SetTile(0x4029, this->tilePosition + 0x7c, super->collisionLayer); - SetTile(0x4026, this->tilePosition + 0x7d, super->collisionLayer); - SetTile(0x4026, this->tilePosition + 0x7e, super->collisionLayer); - SetTile(0x403d, this->tilePosition + 0x40, super->collisionLayer); - SetTile(0x403d, this->tilePosition + 0x80, super->collisionLayer); - SetTile(0x4027, this->tilePosition + 0x41, super->collisionLayer); - SetTile(0x4023, this->tilePosition + 0x42, super->collisionLayer); - SetTile(0x406d, this->tilePosition + 0x43, super->collisionLayer); - SetTile(0x4029, this->tilePosition + 0x81, super->collisionLayer); - SetTile(0x4026, this->tilePosition + 0x82, super->collisionLayer); - SetTile(0x4026, this->tilePosition + 0x83, super->collisionLayer); + SetBottomTile(0x4024, this->tilePosition + 0x3c, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition + 0x3d, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition + 0x3e, super->collisionLayer); + SetBottomTile(0x4029, this->tilePosition + 0x7c, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition + 0x7d, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition + 0x7e, super->collisionLayer); + SetBottomTile(0x403d, this->tilePosition + 0x40, super->collisionLayer); + SetBottomTile(0x403d, this->tilePosition + 0x80, super->collisionLayer); + SetBottomTile(0x4027, this->tilePosition + 0x41, super->collisionLayer); + SetBottomTile(0x4023, this->tilePosition + 0x42, super->collisionLayer); + SetBottomTile(0x406d, this->tilePosition + 0x43, super->collisionLayer); + SetBottomTile(0x4029, this->tilePosition + 0x81, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition + 0x82, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition + 0x83, super->collisionLayer); break; case 1: if ((super->type2 & 1) != 0) { - SetTile(0x406d, this->tilePosition - 0x81, super->collisionLayer); - SetTile(0x4022, this->tilePosition - 0x41, super->collisionLayer); - SetTile(0x4029, this->tilePosition - 2, super->collisionLayer); - SetTile(0x4026, this->tilePosition - 1, super->collisionLayer); - SetTile(0x4022, this->tilePosition, super->collisionLayer); - SetTile(0x406d, this->tilePosition + 1, super->collisionLayer); - SetTile(0x406e, this->tilePosition + 0x40, super->collisionLayer); - SetTile(0x4022, this->tilePosition + 0x41, super->collisionLayer); - SetTile(0x406d, this->tilePosition + 0x42, super->collisionLayer); + SetBottomTile(0x406d, this->tilePosition - 0x81, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition - 0x41, super->collisionLayer); + SetBottomTile(0x4029, this->tilePosition - 2, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition - 1, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition, super->collisionLayer); + SetBottomTile(0x406d, this->tilePosition + 1, super->collisionLayer); + SetBottomTile(0x406e, this->tilePosition + 0x40, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition + 0x41, super->collisionLayer); + SetBottomTile(0x406d, this->tilePosition + 0x42, super->collisionLayer); } else { - SetTile(0x406c, this->tilePosition - 0x7f, super->collisionLayer); - SetTile(0x4022, this->tilePosition - 0x3f, super->collisionLayer); - SetTile(0x406c, this->tilePosition - 1, super->collisionLayer); - SetTile(0x4022, this->tilePosition, super->collisionLayer); - SetTile(0x4026, this->tilePosition + 1, super->collisionLayer); - SetTile(0x402a, this->tilePosition + 2, super->collisionLayer); - SetTile(0x406c, this->tilePosition + 0x3e, super->collisionLayer); - SetTile(0x4022, this->tilePosition + 0x3f, super->collisionLayer); - SetTile(0x406f, this->tilePosition + 0x40, super->collisionLayer); + SetBottomTile(0x406c, this->tilePosition - 0x7f, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition - 0x3f, super->collisionLayer); + SetBottomTile(0x406c, this->tilePosition - 1, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition + 1, super->collisionLayer); + SetBottomTile(0x402a, this->tilePosition + 2, super->collisionLayer); + SetBottomTile(0x406c, this->tilePosition + 0x3e, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition + 0x3f, super->collisionLayer); + SetBottomTile(0x406f, this->tilePosition + 0x40, super->collisionLayer); return; } break; case 3: - SetTile(0x4022, this->tilePosition, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition, super->collisionLayer); break; } } @@ -223,12 +223,12 @@ void sub_08093C70(GiantTwigEntity* this) { if (this->unk_78 != 0) { if (gPlayerState.heldObject != 0) { this->unk_78 = 0; - SetTile(0x4022, this->tilePosition + 0x3f, super->collisionLayer); - SetTile(0x4022, this->tilePosition + 0x40, super->collisionLayer); - SetTile(0x4022, this->tilePosition + 0x41, super->collisionLayer); - SetTile(0x4026, this->tilePosition + 0x7f, super->collisionLayer); - SetTile(0x4026, this->tilePosition + 0x80, super->collisionLayer); - SetTile(0x4026, this->tilePosition + 0x81, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition + 0x3f, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition + 0x40, super->collisionLayer); + SetBottomTile(0x4022, this->tilePosition + 0x41, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition + 0x7f, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition + 0x80, super->collisionLayer); + SetBottomTile(0x4026, this->tilePosition + 0x81, super->collisionLayer); } } else { @@ -236,12 +236,12 @@ void sub_08093C70(GiantTwigEntity* this) { if (--this->unk_7a == 0) { this->unk_78++; this->unk_7a = 0x3c; - SetTile(0x403d, this->tilePosition + 0x3f, super->collisionLayer); - SetTile(0x403d, this->tilePosition + 0x40, super->collisionLayer); - SetTile(0x4027, this->tilePosition + 0x41, super->collisionLayer); - SetTile(0x403d, this->tilePosition + 0x7f, super->collisionLayer); - SetTile(0x403d, this->tilePosition + 0x80, super->collisionLayer); - SetTile(0x4029, this->tilePosition + 0x81, super->collisionLayer); + SetBottomTile(0x403d, this->tilePosition + 0x3f, super->collisionLayer); + SetBottomTile(0x403d, this->tilePosition + 0x40, super->collisionLayer); + SetBottomTile(0x4027, this->tilePosition + 0x41, super->collisionLayer); + SetBottomTile(0x403d, this->tilePosition + 0x7f, super->collisionLayer); + SetBottomTile(0x403d, this->tilePosition + 0x80, super->collisionLayer); + SetBottomTile(0x4029, this->tilePosition + 0x81, super->collisionLayer); } } } diff --git a/src/object/hittableLever.c b/src/object/hittableLever.c index 8e6b63bec..0bf530acc 100644 --- a/src/object/hittableLever.c +++ b/src/object/hittableLever.c @@ -47,7 +47,7 @@ void HittableLever_Init(HittableLeverEntity* this) { } void HittableLever_Idle(HittableLeverEntity* this) { - if (((super->contactFlags & 0x80) != 0) && (this->wasHit == 0)) { + if (((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) && (this->wasHit == 0)) { this->wasHit = 1; super->type ^= 1; super->iframes = -0x18; diff --git a/src/object/itemOnGround.c b/src/object/itemOnGround.c index dc9d09750..b3f6f0453 100644 --- a/src/object/itemOnGround.c +++ b/src/object/itemOnGround.c @@ -63,7 +63,7 @@ void ItemOnGround(ItemOnGroundEntity* this) { static void (*const ItemOnGround_Actions[])(ItemOnGroundEntity*) = { ItemOnGround_Init, ItemOnGround_Action1, ItemOnGround_Action2, ItemOnGround_Action3, ItemOnGround_Action4, }; - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { switch (super->contactFlags & 0x7F) { case 20: super->action = 3; diff --git a/src/object/jarPortal.c b/src/object/jarPortal.c index aa94b26ff..cd77b9568 100644 --- a/src/object/jarPortal.c +++ b/src/object/jarPortal.c @@ -170,7 +170,7 @@ void JarPortal_Action4(JarPortalEntity* this) { } u32 sub_0808C128(JarPortalEntity* this) { - return super->contactFlags == 157; + return super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d); } void sub_0808C13C(JarPortalEntity* this) { @@ -183,10 +183,10 @@ void sub_0808C148(JarPortalEntity* this, u32 a2) { pos = COORD_TO_TILE(super); if (!a2) { - SetTile(16530, pos - 1, super->collisionLayer); - SetTile(16531, pos, super->collisionLayer); - SetTile(16532, pos + 63, super->collisionLayer); - SetTile(16533, pos + 64, super->collisionLayer); + SetBottomTile(16530, pos - 1, super->collisionLayer); + SetBottomTile(16531, pos, super->collisionLayer); + SetBottomTile(16532, pos + 63, super->collisionLayer); + SetBottomTile(16533, pos + 64, super->collisionLayer); } else { RestorePrevTileEntity(pos - 1, super->collisionLayer); RestorePrevTileEntity(pos, super->collisionLayer); diff --git a/src/object/ladderUp.c b/src/object/ladderUp.c index cfdadfb92..7bd668245 100644 --- a/src/object/ladderUp.c +++ b/src/object/ladderUp.c @@ -37,7 +37,7 @@ void LadderUp(Entity* this) { return; } this->y.HALF.HI = (this->y.HALF.HI & 0xfff0) + 0xc; - SetTile(0x4023, COORD_TO_TILE(this), this->collisionLayer); + SetBottomTile(0x4023, COORD_TO_TILE(this), this->collisionLayer); break; case 1: if (GravityUpdate(this, Q_8_8(16.0)) == 0) { @@ -66,16 +66,16 @@ void LadderUp(Entity* this) { if (this->type2 == 0) { if (gPlayerEntity.base.y.HALF.HI < this->y.HALF.HI) { if (gPlayerState.floor_type != SURFACE_LADDER && (GetTileTypeByEntity(this) == 0x4017)) { - SetTile(0x4023, COORD_TO_TILE(this), this->collisionLayer); + SetBottomTile(0x4023, COORD_TO_TILE(this), this->collisionLayer); RestorePrevTileEntity(COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer); } } else { if (GetTileTypeByEntity(this) != 0x4017) { - SetTile(0x4017, COORD_TO_TILE(this), this->collisionLayer); + SetBottomTile(0x4017, COORD_TO_TILE(this), this->collisionLayer); if (this->type == 0) { - SetTile(0x4017, COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer); + SetBottomTile(0x4017, COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer); } else { - SetTile(0x4014, COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer); + SetBottomTile(0x4014, COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer); } } } diff --git a/src/object/lavaPlatform.c b/src/object/lavaPlatform.c index 5db1f0b9d..619bc6850 100644 --- a/src/object/lavaPlatform.c +++ b/src/object/lavaPlatform.c @@ -131,7 +131,7 @@ void LavaPlatform_Type1Action1(LavaPlatformEntity* this) { } void LavaPlatform_Type1Action2(LavaPlatformEntity* this) { - if (super->contactFlags == 0x9d) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) { sub_08092620(this); } else { if (LavaPlatform_IsPlayerOnPlatform(this)) { @@ -223,7 +223,7 @@ void LavaPlatform_Type1Action6(LavaPlatformEntity* this) { } void LavaPlatform_Type1Action7(LavaPlatformEntity* this) { - if (super->contactFlags == 0x9d) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) { sub_08092620(this); } } diff --git a/src/object/lightDoor.c b/src/object/lightDoor.c index e128c65c5..5062c26fb 100644 --- a/src/object/lightDoor.c +++ b/src/object/lightDoor.c @@ -87,13 +87,13 @@ void LightDoor_Action4(LightDoorEntity* this) { void sub_080850FC(LightDoorEntity* this) { u32 position = COORD_TO_TILE(super); u32 layer = super->collisionLayer; - SetTile(0x403d, position - 0x41, layer); - SetTile(0x403d, position - 0x40, layer); - SetTile(0x403d, position - 0x3f, layer); - SetTile(0x403d, position - 1, layer); - SetTile(0x403d, position, layer); - SetTile(0x403d, position + 1, layer); - SetTile(0x403d, position + 0x3f, layer); - SetTile(0x403d, position + 0x40, layer); - SetTile(0x403d, position + 0x41, layer); + SetBottomTile(0x403d, position - 0x41, layer); + SetBottomTile(0x403d, position - 0x40, layer); + SetBottomTile(0x403d, position - 0x3f, layer); + SetBottomTile(0x403d, position - 1, layer); + SetBottomTile(0x403d, position, layer); + SetBottomTile(0x403d, position + 1, layer); + SetBottomTile(0x403d, position + 0x3f, layer); + SetBottomTile(0x403d, position + 0x40, layer); + SetBottomTile(0x403d, position + 0x41, layer); } diff --git a/src/object/lightableSwitch.c b/src/object/lightableSwitch.c index 927a4c9df..06bb32448 100644 --- a/src/object/lightableSwitch.c +++ b/src/object/lightableSwitch.c @@ -67,7 +67,7 @@ void LightableSwitch_Type0_Init(LightableSwitchEntity* this) { void LightableSwitch_Type0_Action1(LightableSwitchEntity* this) { - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { if (CheckFlags(this->unk_86) != 0) { ClearFlag(this->unk_86); } else { @@ -99,7 +99,7 @@ static void sub_0809EAD8(LightableSwitchEntity* this) { UpdateRailMovement(super, (u16**)&super->child, &this->unk_74); } else { - SetTile(0x4050, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4050, COORD_TO_TILE(super), super->collisionLayer); } } @@ -147,7 +147,7 @@ void LightableSwitch_Type1_Init(LightableSwitchEntity* this) { } void LightableSwitch_Type1_Action1(LightableSwitchEntity* this) { - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { super->action = 2; super->timer = 16; super->frameIndex = 2; diff --git a/src/object/lilypadLarge.c b/src/object/lilypadLarge.c index 9bc153991..b4bd9c604 100644 --- a/src/object/lilypadLarge.c +++ b/src/object/lilypadLarge.c @@ -329,10 +329,10 @@ void LilypadLarge_Action2(LilypadLargeEntity* this) { void sub_08085A44(LilypadLargeEntity* this) { super->speed = 0x200; - if (GetRelativeCollisionTile(super, 0x10, 0x18) != 0x11) { + if (GetActTileRelative(super, 0x10, 0x18) != 0x11) { super->direction = 0x18; } else { - if (GetRelativeCollisionTile(super, -0x10, 0x18) != 0x11) { + if (GetActTileRelative(super, -0x10, 0x18) != 0x11) { super->direction = 8; } else { super->direction = 0x10; @@ -353,7 +353,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 (GetRelativeCollisionTile(super, 0, 0x18) != 0x11) { + if (GetActTileRelative(super, 0, 0x18) != 0x11) { super->subAction = 2; if (gArea.locationIndex == 0x1b) { super->y.HALF.HI += 0xd0; @@ -456,7 +456,7 @@ void LilypadLarge_Action5(LilypadLargeEntity* this) { void sub_08085D28(LilypadLargeEntity* this) { if (((gPlayerState.framestate != PL_STATE_TALKEZLO) && ((gPlayerState.flags & PL_FLAGS2) != 0)) && - (GetRelativeCollisionTile(super, 0, 0x18) == 0x11)) { + (GetActTileRelative(super, 0, 0x18) == 0x11)) { super->action = 2; super->subAction = 0; PausePlayer(); diff --git a/src/object/linkEmptyingBottle.c b/src/object/linkEmptyingBottle.c index e3b77637c..0c47f3a82 100644 --- a/src/object/linkEmptyingBottle.c +++ b/src/object/linkEmptyingBottle.c @@ -118,8 +118,8 @@ void sub_08094980(LinkEmptyingBottleEntity* this, u32 searchTileIndex, u32 repla xOffset = gUnk_08122A28[index]; yOffset = gUnk_08122A28[index + 1]; if (searchTileIndex == sub_080B1A0C(super, xOffset, yOffset)) { - SetTile(replaceTileIndex, TILE(super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset), - super->collisionLayer); + SetBottomTile(replaceTileIndex, TILE(super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset), + super->collisionLayer); } index += 2; } diff --git a/src/object/lockedDoor.c b/src/object/lockedDoor.c index d7f089a2b..8f4bcbc31 100644 --- a/src/object/lockedDoor.c +++ b/src/object/lockedDoor.c @@ -162,7 +162,7 @@ void LockedDoor_Action1(LockedDoorEntity* this) { if (--super->timer == 0) { super->action = 2; super->timer = 7; - SetTile(this->unk_74, this->unk_76, super->collisionLayer); + SetBottomTile(this->unk_74, this->unk_76, super->collisionLayer); EnqueueSFX(SFX_10B); } } @@ -262,12 +262,12 @@ void sub_080836A0(LockedDoorEntity* this) { super->spriteSettings.draw = 1; super->x.HALF.HI = this->unk_70; super->y.HALF.HI = this->unk_72; - SetTile(0x4022, this->unk_76, super->collisionLayer); + SetBottomTile(0x4022, this->unk_76, super->collisionLayer); } void sub_080836DC(Entity* this, u32 unk_0, u32 unk_1) { const struct_0811F680* tmp; - SetTile(0x4022, unk_1, this->collisionLayer); + SetBottomTile(0x4022, unk_1, this->collisionLayer); this->timer = 7; this->spriteSettings.draw = 1; this->direction = (unk_0 << 3) ^ DirectionSouth; diff --git a/src/object/macroAcorn.c b/src/object/macroAcorn.c index a7f328712..4997cb1f9 100644 --- a/src/object/macroAcorn.c +++ b/src/object/macroAcorn.c @@ -74,38 +74,38 @@ void sub_0809E5F0(MacroAcornEntity* this) { this->unk_80 = position; switch (super->type) { case 2: - SetTile(0x4022, position - 0x3d, 1); - SetTile(0x406d, position - 0x3c, 1); + SetBottomTile(0x4022, position - 0x3d, 1); + SetBottomTile(0x406d, position - 0x3c, 1); case 0: - SetTile(0x406c, position - 0x42, 1); - SetTile(0x4022, position - 0x41, 1); - SetTile(0x4022, position - 0x40, 1); - SetTile(0x4022, position - 0x3f, 1); - SetTile(0x4022, position - 2, 1); - SetTile(0x4022, position - 1, 1); - SetTile(0x4022, position, 1); - SetTile(0x4022, position + 1, 1); - SetTile(0x406e, position + 0x3e, 1); - SetTile(0x4022, position + 0x3f, 1); - SetTile(0x4022, position + 0x40, 1); - SetTile(0x406f, position + 0x41, 1); + SetBottomTile(0x406c, position - 0x42, 1); + SetBottomTile(0x4022, position - 0x41, 1); + SetBottomTile(0x4022, position - 0x40, 1); + SetBottomTile(0x4022, position - 0x3f, 1); + SetBottomTile(0x4022, position - 2, 1); + SetBottomTile(0x4022, position - 1, 1); + SetBottomTile(0x4022, position, 1); + SetBottomTile(0x4022, position + 1, 1); + SetBottomTile(0x406e, position + 0x3e, 1); + SetBottomTile(0x4022, position + 0x3f, 1); + SetBottomTile(0x4022, position + 0x40, 1); + SetBottomTile(0x406f, position + 0x41, 1); break; case 3: - SetTile(0x4022, position - 0x44, 1); - SetTile(0x406c, position - 0x45, 1); + SetBottomTile(0x4022, position - 0x44, 1); + SetBottomTile(0x406c, position - 0x45, 1); case 1: - SetTile(0x4022, position - 0x42, 1); - SetTile(0x4022, position - 0x41, 1); - SetTile(0x4022, position - 0x40, 1); - SetTile(0x406d, position - 0x3f, 1); - SetTile(0x4022, position - 2, 1); - SetTile(0x4022, position - 1, 1); - SetTile(0x4022, position, 1); - SetTile(0x4022, position + 1, 1); - SetTile(0x406e, position + 0x3e, 1); - SetTile(0x4022, position + 0x3f, 1); - SetTile(0x4022, position + 0x40, 1); - SetTile(0x406f, position + 0x41, 1); + SetBottomTile(0x4022, position - 0x42, 1); + SetBottomTile(0x4022, position - 0x41, 1); + SetBottomTile(0x4022, position - 0x40, 1); + SetBottomTile(0x406d, position - 0x3f, 1); + SetBottomTile(0x4022, position - 2, 1); + SetBottomTile(0x4022, position - 1, 1); + SetBottomTile(0x4022, position, 1); + SetBottomTile(0x4022, position + 1, 1); + SetBottomTile(0x406e, position + 0x3e, 1); + SetBottomTile(0x4022, position + 0x3f, 1); + SetBottomTile(0x4022, position + 0x40, 1); + SetBottomTile(0x406f, position + 0x41, 1); break; } } diff --git a/src/object/macroBook.c b/src/object/macroBook.c index c0cb253e6..0fe65615b 100644 --- a/src/object/macroBook.c +++ b/src/object/macroBook.c @@ -150,7 +150,7 @@ void sub_0809A958(MacroBookEntity* this) { for (index = 0; index < 5; index++, tilePos += 0x40) { for (index2 = 0; index2 < 4; index2++, tileIndexPtr++) { if ((*tileIndexPtr & 0x4000) != 0) { - SetTile(*tileIndexPtr, tilePos + index2, 1); + SetBottomTile(*tileIndexPtr, tilePos + index2, 1); } } } diff --git a/src/object/macroDecorations.c b/src/object/macroDecorations.c index 4e886ae05..c6142185a 100644 --- a/src/object/macroDecorations.c +++ b/src/object/macroDecorations.c @@ -87,7 +87,7 @@ void sub_08097EB8(MacroDecorationEntity* this) { const s16* tilePosPtr; u16 tile = COORD_TO_TILE(super); for (tilePosPtr = tilePosArray; *tilePosPtr != 0x7fff; tilePosPtr += 2) { - SetTile((u16)tilePosPtr[1], tile + tilePosPtr[0], 1); + SetBottomTile((u16)tilePosPtr[1], tile + tilePosPtr[0], 1); } } diff --git a/src/object/macroShoe.c b/src/object/macroShoe.c index 2d4b5ac2b..574fcf201 100644 --- a/src/object/macroShoe.c +++ b/src/object/macroShoe.c @@ -39,9 +39,9 @@ void MacroShoe_Init(Entity* this) { this->action = 1; this->hitbox = (Hitbox*)MacroShoe_TypeHitboxes[this->type]; if (this->type2 == 1) { - SetTile(0x4024, 0x410, 1); - SetTile(0x4026, 0x411, 1); - SetTile(0x4025, 0x412, 1); + SetBottomTile(0x4024, 0x410, 1); + SetBottomTile(0x4026, 0x411, 1); + SetBottomTile(0x4025, 0x412, 1); } } diff --git a/src/object/mask.c b/src/object/mask.c index 46cfdb9e1..e517a8bbb 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -74,7 +74,7 @@ void Mask_Init(MaskEntity* this) { this->unk_7a = sub_080B1B44(this->unk_7e, 1); - SetTile(0x4022, this->unk_7e, 1); + SetBottomTile(0x4022, this->unk_7e, 1); } // Probably related to knocking it down @@ -99,7 +99,7 @@ void Mask_Action1(MaskEntity* this) { } // Presumably, make the mask fall - SetTile(this->unk_7c, this->unk_7e, 1); + SetBottomTile(this->unk_7c, this->unk_7e, 1); sub_08000148(this->unk_7a, this->unk_7e, 1); diff --git a/src/object/metalDoor.c b/src/object/metalDoor.c index 0c7fbfd0f..c0bbc874e 100644 --- a/src/object/metalDoor.c +++ b/src/object/metalDoor.c @@ -118,13 +118,13 @@ void sub_080A080C(MetalDoorEntity* this) { this->unk_76 = GetTileIndex(this->unk_74 - 1, super->collisionLayer); this->unk_78 = GetTileIndex(this->unk_74, super->collisionLayer); this->unk_7a = GetTileIndex(this->unk_74 + 1, super->collisionLayer); - SetTile(0x4022, this->unk_74 - 1, super->collisionLayer); - SetTile(0x4022, this->unk_74, super->collisionLayer); - SetTile(0x4022, this->unk_74 + 1, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74 - 1, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74, super->collisionLayer); + SetBottomTile(0x4022, this->unk_74 + 1, super->collisionLayer); } void sub_080A0870(MetalDoorEntity* this) { - SetTile(this->unk_76, this->unk_74 - 1, super->collisionLayer); - SetTile(this->unk_78, this->unk_74, super->collisionLayer); - SetTile(this->unk_7a, this->unk_74 + 1, super->collisionLayer); + SetBottomTile(this->unk_76, this->unk_74 - 1, super->collisionLayer); + SetBottomTile(this->unk_78, this->unk_74, super->collisionLayer); + SetBottomTile(this->unk_7a, this->unk_74 + 1, super->collisionLayer); } diff --git a/src/object/minecart.c b/src/object/minecart.c index 64fb239d1..b13f2c7e7 100644 --- a/src/object/minecart.c +++ b/src/object/minecart.c @@ -59,7 +59,7 @@ void Minecart_Init(MinecartEntity* this) { super->speed = 0x700; super->spritePriority.b1 = 3; InitAnimationForceUpdate(super, super->type2 + 4 + super->animationState); - SetTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); } void Minecart_Action1(MinecartEntity* this) { @@ -163,9 +163,9 @@ void Minecart_Action3(MinecartEntity* this) { super->subtimer = 60; } - uVar3 = GetRelativeCollisionTile(super, gUnk_081223C8[super->animationState * 2], - gUnk_081223C8[super->animationState * 2 + 1]); - iVar2 = sub_08007DD6(uVar3, gUnk_081223D8[super->animationState]); + uVar3 = GetActTileRelative(super, gUnk_081223C8[super->animationState * 2], + gUnk_081223C8[super->animationState * 2 + 1]); + iVar2 = ActTileToTile(uVar3, gUnk_081223D8[super->animationState]); if (iVar2 == 0) { super->direction = DirectionTurnAround(super->direction); super->animationState = AnimationStateFlip90(super->animationState); @@ -290,7 +290,7 @@ void Minecart_Action6(MinecartEntity* this) { minecartData->room = gRoomControls.room; minecartData->animationState = super->animationState; InitAnimationForceUpdate(super, super->animationState + 0x10); - SetTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); } else { UpdateAnimationSingleFrame(super); gPlayerEntity.base.spritePriority.b0 = super->spritePriority.b0 - 1; diff --git a/src/object/minecartDoor.c b/src/object/minecartDoor.c index 6c70abd82..c74e1109e 100644 --- a/src/object/minecartDoor.c +++ b/src/object/minecartDoor.c @@ -63,7 +63,7 @@ void MinecartDoor_Init(MinecartDoorEntity* this) { } else { super->action = 1; super->spriteSettings.draw = 1; - SetTile(0x4022, this->unk_76, super->collisionLayer); + SetBottomTile(0x4022, this->unk_76, super->collisionLayer); } } } @@ -73,7 +73,7 @@ void MinecartDoor_Action1(MinecartDoorEntity* this) { super->action = 2; super->timer = 7; super->direction = super->type << 3; - SetTile(this->unk_74, this->unk_76, super->collisionLayer); + SetBottomTile(this->unk_74, this->unk_76, super->collisionLayer); EnqueueSFX(SFX_10B); } } diff --git a/src/object/minishVillageObject.c b/src/object/minishVillageObject.c index ef5c97809..a4a3e48c8 100644 --- a/src/object/minishVillageObject.c +++ b/src/object/minishVillageObject.c @@ -83,7 +83,7 @@ void MinishVillageObject_Type1(Entity* this) { this->subtimer = 0; this->frameIndex = 0; this->spritePriority.b0 = 7; - SetTile(0x4069, COORD_TO_TILE(this) - 0x40, 1); + SetBottomTile(0x4069, COORD_TO_TILE(this) - 0x40, 1); break; case 2: if ((gRoomTransition.frameCount & 3U) == 0) { @@ -217,7 +217,7 @@ void MinishVillageObject_Type8_Init(Entity* this) { if (this->type2 != 0) { tilePosition -= 0x40; } - SetTile(0x4069, tilePosition, this->collisionLayer); + SetBottomTile(0x4069, tilePosition, this->collisionLayer); } } @@ -230,7 +230,7 @@ void MinishVillageObject_Type8_Action1(Entity* this) { this->timer = 8; this->spriteRendering.alphaBlend = 0; gScreen.controls.layerFXControl = 0; - SetTile(0x4069, COORD_TO_TILE(this), this->collisionLayer); + SetBottomTile(0x4069, COORD_TO_TILE(this), this->collisionLayer); } } } diff --git a/src/object/object30.c b/src/object/object30.c index 61b3448fc..7d2acb49b 100644 --- a/src/object/object30.c +++ b/src/object/object30.c @@ -40,7 +40,7 @@ void Object30_Init(Object30Entity* this) { const u16* ptr; switch (super->type) { case 0: - data = GetLayerByIndex(super->collisionLayer); + data = GetTileBuffer(super->collisionLayer); ptr = &data->mapData[sub_0806F798(super)]; this->unk_6c = (u16*)ptr; this->unk_68 = ptr[0]; diff --git a/src/object/object37.c b/src/object/object37.c index 35f32e933..e0b08edc4 100644 --- a/src/object/object37.c +++ b/src/object/object37.c @@ -34,7 +34,7 @@ void Object37(Entity* this) { void Object37_Init(Object37Entity* this) { u16* puVar1; - puVar1 = GetLayerByIndex(super->collisionLayer)->mapData + sub_0806F798(super); + puVar1 = GetTileBuffer(super->collisionLayer)->mapData + sub_0806F798(super); this->unk78 = puVar1; this->unk70 = *puVar1; super->action = 1; diff --git a/src/object/objectA8.c b/src/object/objectA8.c index 4de9ccae3..6f47de252 100644 --- a/src/object/objectA8.c +++ b/src/object/objectA8.c @@ -39,7 +39,7 @@ void ObjectA8(ObjectA8Entity* this) { ObjectA8_Init, ObjectA8_Action1, ObjectA8_Action2, ObjectA8_Action3, ObjectA8_Action4, ObjectA8_Action5, ObjectA8_Action6, }; - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { switch (super->contactFlags & 0x7f) { case 0: case 1: diff --git a/src/object/objectBlockingStairs.c b/src/object/objectBlockingStairs.c index b35f67773..83c6e9767 100644 --- a/src/object/objectBlockingStairs.c +++ b/src/object/objectBlockingStairs.c @@ -133,23 +133,23 @@ void ObjectBlockingStairs_Action1(ObjectBlockingStairsEntity* this) { if (this->unk7b & 0x80) { this->unk7b &= ~0x80; if ((this->unk7b & 0x40) != 0) { - SetTile(0x402c, this->tilePos - 1, super->collisionLayer); - SetTile(0x403d, this->tilePos + 1, super->collisionLayer); + SetBottomTile(0x402c, this->tilePos - 1, super->collisionLayer); + SetBottomTile(0x403d, this->tilePos + 1, super->collisionLayer); } else { - SetTile(0x403d, this->tilePos - 1, super->collisionLayer); - SetTile(0x402d, this->tilePos + 1, super->collisionLayer); + SetBottomTile(0x403d, this->tilePos - 1, super->collisionLayer); + SetBottomTile(0x402d, this->tilePos + 1, super->collisionLayer); } } else if (this->unk7b & 0x40) { if (xDist >= 5) { this->unk7b &= ~(0x40 | 0x80); - SetTile(0x403d, this->tilePos - 1, super->collisionLayer); - SetTile(0x402d, this->tilePos + 1, super->collisionLayer); + SetBottomTile(0x403d, this->tilePos - 1, super->collisionLayer); + SetBottomTile(0x402d, this->tilePos + 1, super->collisionLayer); } } else { if (-xDist > 4) { this->unk7b |= 0x40; - SetTile(0x402c, this->tilePos - 1, super->collisionLayer); - SetTile(0x403d, this->tilePos + 1, super->collisionLayer); + SetBottomTile(0x402c, this->tilePos - 1, super->collisionLayer); + SetBottomTile(0x403d, this->tilePos + 1, super->collisionLayer); } } } @@ -223,7 +223,7 @@ void sub_080931A4(ObjectBlockingStairsEntity* this, u32 param_2) { for (index = 0, iVar5 = 0; index < 9; index++) { u32 pos = tilePos + iVar5 + index - 1; - SetTile(pTileTypes[index], pos, collisionLayer); + SetBottomTile(pTileTypes[index], pos, collisionLayer); switch (index) { case 2: iVar5 = 0x3d; diff --git a/src/object/objectOnPillar.c b/src/object/objectOnPillar.c index 98501c8e9..f0525f1df 100644 --- a/src/object/objectOnPillar.c +++ b/src/object/objectOnPillar.c @@ -192,7 +192,7 @@ void sub_08097098(ObjectOnPillarEntity* this) { u16 tileType; this->unk_76 = 0x20; EnqueueSFX(SFX_10F); - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); tileType = GetTileType(gUnk_080B4488[super->direction >> 3] + this->tilePosition, super->collisionLayer); if ((tileType == 0x79) || tileType == 0x77) { super->spriteOffsetY = 2; @@ -202,7 +202,7 @@ void sub_08097098(ObjectOnPillarEntity* this) { void sub_080970F4(ObjectOnPillarEntity* this) { this->tilePosition = COORD_TO_TILE(super); this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer); - SetTile(0x4036, this->tilePosition, super->collisionLayer); + SetBottomTile(0x4036, this->tilePosition, super->collisionLayer); } bool32 sub_08097144(ObjectOnPillarEntity* this) { @@ -255,7 +255,7 @@ void sub_080971E0(ObjectOnPillarEntity* this) { super->action = 4; super->frameIndex = 1; super->spritePriority.b0 = 7; - SetTile(0, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0, COORD_TO_TILE(super), super->collisionLayer); DeleteThisEntity(); break; case 1: diff --git a/src/object/objectOnSpinyBeetle.c b/src/object/objectOnSpinyBeetle.c index 17597f8f8..aafecc5b3 100644 --- a/src/object/objectOnSpinyBeetle.c +++ b/src/object/objectOnSpinyBeetle.c @@ -72,7 +72,7 @@ void ObjectOnSpinyBeetle_Action1(ObjectOnSpinyBeetleEntity* this) { sub_080989C0(this); return; } - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { switch (super->contactFlags & 0x3f) { case 0x13: super->action = 3; @@ -152,7 +152,7 @@ void ObjectOnSpinyBeetle_Action2Subaction2(ObjectOnSpinyBeetleEntity* this) { } void ObjectOnSpinyBeetle_Action2Subaction3(ObjectOnSpinyBeetleEntity* this) { - switch (sub_080043E8(super)) { + switch (GetTileHazardType(super)) { case 2: CreateFx(super, FX_WATER_SPLASH, 0); break; diff --git a/src/object/palaceArchway.c b/src/object/palaceArchway.c index 4f545bef0..77ca2a74d 100644 --- a/src/object/palaceArchway.c +++ b/src/object/palaceArchway.c @@ -22,7 +22,7 @@ void PalaceArchway_Init(Entity* this) { this->frameIndex = this->type2; this->spriteRendering.b3 = 3; this->spritePriority.b0 = 7; - SetTile(0x4069, COORD_TO_TILE(this), this->collisionLayer); + SetBottomTile(0x4069, COORD_TO_TILE(this), this->collisionLayer); } void PalaceArchway_Action1(Entity* this) { diff --git a/src/object/paper.c b/src/object/paper.c index 62e49ff7e..541d86a58 100644 --- a/src/object/paper.c +++ b/src/object/paper.c @@ -40,7 +40,7 @@ void Paper_Type0(Entity* this) { } this->spriteSettings.draw = 0; } - SetTile(0x4051, COORD_TO_TILE(this), 1); + SetBottomTile(0x4051, COORD_TO_TILE(this), 1); } void Paper_Type1(Entity* this) { @@ -60,8 +60,8 @@ void Paper_Type2(Entity* this) { this->action = 1; this->y.HALF.HI++; this->spriteOffsetY = -1; - SetTile(0x4051, COORD_TO_TILE(this) - 1, 1); - SetTile(0x4051, COORD_TO_TILE(this), 1); + SetBottomTile(0x4051, COORD_TO_TILE(this) - 1, 1); + SetBottomTile(0x4051, COORD_TO_TILE(this), 1); } void Paper_Action1(Entity* this) { diff --git a/src/object/playerClone.c b/src/object/playerClone.c index a5e8bed4d..c6e65188d 100644 --- a/src/object/playerClone.c +++ b/src/object/playerClone.c @@ -51,7 +51,7 @@ void PlayerClone_Init(PlayerCloneEntity* this) { super->y.HALF.HI = (super->y.HALF.HI & 0xfff0) | 8; this->tilePos = COORD_TO_TILE(super); InitializeAnimation(super, 8); - SetTile(0x4016, this->tilePos, super->collisionLayer); + SetBottomTile(0x4016, this->tilePos, super->collisionLayer); SoundReq(SFX_112); } @@ -109,7 +109,7 @@ void PlayerClone_Action2(PlayerCloneEntity* this) { if (gPlayerEntity.base.iframes >= 1) { gPlayerState.chargeState.action = 1; } else { - GetActTile(super); + GetActTile(super); // leftover from debugging? sub_08084B1C(this); super->x.HALF.HI = gPlayerEntity.base.x.HALF.HI + this->unk78; super->y.HALF.HI = gPlayerEntity.base.y.HALF.HI + this->unk7a; diff --git a/src/object/pot.c b/src/object/pot.c index 0575dc87b..3901820e3 100644 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -48,7 +48,7 @@ void sub_0808270C(PotEntity* this); void sub_080826FC(PotEntity* this); extern void RegisterCarryEntity(Entity*); -extern void sub_08016A6C(Entity*); +extern void CheckOnLayerTransition(Entity*); void Pot(PotEntity* this) { static void (*const Pot_Actions[])(PotEntity*) = { @@ -83,7 +83,7 @@ void Pot_Init(PotEntity* this) { DeleteThisEntity(); } - SetTile(0x4000, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4000, COORD_TO_TILE(super), super->collisionLayer); InitializeAnimation(super, 5); } @@ -96,7 +96,7 @@ void Pot_Action1(PotEntity* this) { super->subAction = 0; break; case 0x1D: - SetTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); super->action = 5; super->zVelocity = Q_16_16(2.625); super->spriteOffsetY = 0; @@ -120,11 +120,11 @@ void Pot_Action1(PotEntity* this) { super->speed >>= 1; super->timer = 64; } - SetTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); EnqueueSFX(SFX_10F); break; case 0x4067: - SetTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); DeleteThisEntity(); break; default: @@ -132,7 +132,7 @@ void Pot_Action1(PotEntity* this) { CreateFx(super, FX_FALL_DOWN, 0); } else if (tileType == 0x4005) { gPlayerState.lastSwordMove = SWORD_MOVE_BREAK_POT; - SetTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); } BreakPot(this, NULL); break; @@ -158,7 +158,7 @@ void sub_08082510(PotEntity* this) { super->hitType = 1; super->flags2 = gPlayerEntity.base.flags2; super->spriteOffsetY = 0; - SetTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); super->subAction++; } @@ -170,7 +170,7 @@ void sub_08082588(PotEntity* this) { } void sub_0808259C(PotEntity* this) { - switch (sub_080043E8(super)) { + switch (GetTileHazardType(super)) { case 2: CreateFx(super, FX_WATER_SPLASH, 0); break; @@ -209,7 +209,7 @@ void Pot_Action4(PotEntity* this) { sub_0800445C(super); if (super->timer-- != 0) { LinearMoveUpdate(super); - sub_08016A6C(super); + CheckOnLayerTransition(super); return; } @@ -230,7 +230,7 @@ void Pot_Action4(PotEntity* this) { BreakPot(this, NULL); break; default: - SetTile(0x4000, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4000, COORD_TO_TILE(super), super->collisionLayer); RegisterCarryEntity(super); break; } @@ -253,7 +253,7 @@ void sub_0808270C(PotEntity* this) { if ((gPlayerState.field_0x1c & 0xF) != 0x1 || (super->contactFlags & 0x7F) != 0x13) { super->spriteOffsetX = 0; super->action = 1; - SetTile(0x4000, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4000, COORD_TO_TILE(super), super->collisionLayer); } else { sub_0806F4E8(super); } @@ -264,7 +264,7 @@ void sub_08082778(PotEntity* this) { super->timer = 1; super->spriteOffsetX = 0; super->spriteOffsetY = -2; - SetTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile((u16)this->unk_70, COORD_TO_TILE(super), super->collisionLayer); } if ((gPlayerState.field_0x1c & 0xF) != 0x1 || (super->contactFlags & 0x7F) != 0x13) { diff --git a/src/object/pullableMushroom.c b/src/object/pullableMushroom.c index 63fcdfbba..b8f6eabce 100644 --- a/src/object/pullableMushroom.c +++ b/src/object/pullableMushroom.c @@ -59,7 +59,7 @@ void PullableMushroom_Init(PullableMushroomEntity* this) { super->spritePriority.b0 = 4; super->hitbox = (Hitbox*)&gUnk_080FD224; super->carryFlags = 1; - SetTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); super->health = 1; super->collisionFlags = 7; super->hitType = 0x6e; diff --git a/src/object/pushableFurniture.c b/src/object/pushableFurniture.c index 327dfbe62..ec391f0c5 100644 --- a/src/object/pushableFurniture.c +++ b/src/object/pushableFurniture.c @@ -295,12 +295,12 @@ void sub_0808FDE8(PushableFurnitureEntity* this) { iVar2 = GetTileIndex(uVar3, 1); if (iVar2 == 0x402e) { if ((((uVar1 & 0xf0) != 0) && ((uVar1 & 0xf0) != 0x50)) || ((uVar1 & 5) == 0)) { - SetTile(0x402c, uVar3, 1); + SetBottomTile(0x402c, uVar3, 1); } } else { iVar2 = sub_080B1B44(uVar3, 1); if ((iVar2 == 5) && ((((uVar1 & 0xf0) == 0 || ((uVar1 & 0xf0) == 0x50)) && ((uVar1 & 5) != 0)))) { - SetTile(0x402e, uVar3, 1); + SetBottomTile(0x402e, uVar3, 1); } } uVar3 = (u32)this->unk_72; @@ -308,12 +308,12 @@ void sub_0808FDE8(PushableFurnitureEntity* this) { iVar2 = GetTileIndex(uVar3, 1); if (iVar2 == 0x402f) { if ((((uVar1 & 0xf0) != 0) && ((uVar1 & 0xf0) != 0x50)) || ((uVar1 & 10) == 0)) { - SetTile(0x402d, uVar3, 1); + SetBottomTile(0x402d, uVar3, 1); } } else { iVar2 = sub_080B1B44(uVar3, 1); if (((iVar2 == 10) && (((uVar1 & 0xf0) == 0 || ((uVar1 & 0xf0) == 0x50)))) && ((uVar1 & 10) != 0)) { - SetTile(0x402f, uVar3, 1); + SetBottomTile(0x402f, uVar3, 1); } } } @@ -361,13 +361,13 @@ void sub_0808FF50(PushableFurnitureEntity* this) { case 0: this->unk_70 = tmp; this->unk_74 = GetTileIndex(this->unk_70, 1); - SetTile(0x404a, tmp, 1); + SetBottomTile(0x404a, tmp, 1); break; case 1: if ((tmp2 & 8) != 0) { this->unk_70 = this->unk_7c; this->unk_74 = GetTileIndex(this->unk_70, 1); - SetTile(gUnk_08121EE4[this->unk_81], position, 1); + SetBottomTile(gUnk_08121EE4[this->unk_81], position, 1); this->unk_72 = tmp + 1; this->unk_76 = GetTileIndex(this->unk_72, 1); sub_08090094(this, gUnk_08121EE4[this->unk_81 + 4], this->unk_72); @@ -375,7 +375,7 @@ void sub_0808FF50(PushableFurnitureEntity* this) { } else { this->unk_72 = this->unk_7c; this->unk_76 = GetTileIndex(this->unk_72, 1); - SetTile(gUnk_08121EE4[this->unk_81], position, 1); + SetBottomTile(gUnk_08121EE4[this->unk_81], position, 1); this->unk_70 = tmp - 1; this->unk_74 = GetTileIndex(this->unk_70, 1); sub_08090094(this, gUnk_08121EE4[this->unk_81 + 2], this->unk_70); @@ -400,14 +400,14 @@ void sub_08090094(PushableFurnitureEntity* this, u32 param_2, u32 tilePos) { if (tmp1 == 5) { index = 0x4022; } - SetTile(index, tilePos, 1); + SetBottomTile(index, tilePos, 1); return; case 0x402d: case 0x402f: if (tmp1 == 5) { index = 0x4022; } - SetTile(index, tilePos, 1); + SetBottomTile(index, tilePos, 1); return; case 0x4024: case 0x402c: @@ -415,10 +415,10 @@ void sub_08090094(PushableFurnitureEntity* this, u32 param_2, u32 tilePos) { if (tmp1 == 10) { index = 0x4022; } - SetTile(index, tilePos, 1); + SetBottomTile(index, tilePos, 1); return; default: - SetTile(index, tilePos, 1); + SetBottomTile(index, tilePos, 1); return; } } @@ -470,7 +470,7 @@ void sub_08090094(PushableFurnitureEntity* this, u32 param_2, u32 tilePos) { break; } - SetTile(index, tilePos, 1); + SetBottomTile(index, tilePos, 1); } void sub_08090254(PushableFurnitureEntity* this) { @@ -572,7 +572,7 @@ void sub_0809028C(PushableFurnitureEntity* this, u32 param_2) { } void sub_08090480(u32 param_1, u32 param_2) { - SetTile(gUnk_08121EF0[param_1], param_2, 1); + SetBottomTile(gUnk_08121EF0[param_1], param_2, 1); } void sub_08090498(PushableFurnitureEntity* this) { diff --git a/src/object/pushableGrave.c b/src/object/pushableGrave.c index eb343f09d..75fe94637 100644 --- a/src/object/pushableGrave.c +++ b/src/object/pushableGrave.c @@ -68,12 +68,12 @@ void PushableGrave_Init(PushableGraveEntity* this) { tileIndex = PushableGrave_Tiles[super->type2]; if (super->type == 0) { super->hitbox = (Hitbox*)&gUnk_080FD578; - SetTile(tileIndex, tilePosition - 1, super->collisionLayer); - SetTile(tileIndex, tilePosition, super->collisionLayer); + SetBottomTile(tileIndex, tilePosition - 1, super->collisionLayer); + SetBottomTile(tileIndex, tilePosition, super->collisionLayer); super->y.HALF.HI += 2; } else { super->hitbox = (Hitbox*)&gUnk_080FD570; - SetTile(tileIndex, tilePosition, super->collisionLayer); + SetBottomTile(tileIndex, tilePosition, super->collisionLayer); if (super->type2 == 2) { SetMultipleTiles((TileData*)gUnk_081232C0, tilePosition, super->collisionLayer); } @@ -133,9 +133,9 @@ void sub_080977F4(PushableGraveEntity* this) { super->action = 4; super->spriteOffsetY = 0; tilePosition = COORD_TO_TILE(super); - SetTile(0x4022, tilePosition, super->collisionLayer); + SetBottomTile(0x4022, tilePosition, super->collisionLayer); if (super->type == 0) { - SetTile(0x4022, tilePosition - 1, super->collisionLayer); + SetBottomTile(0x4022, tilePosition - 1, super->collisionLayer); } if (this->pushedFlag != 0) { SetFlag(this->pushedFlag); diff --git a/src/object/pushableLever.c b/src/object/pushableLever.c index bfdc1a460..f7633eaeb 100644 --- a/src/object/pushableLever.c +++ b/src/object/pushableLever.c @@ -50,7 +50,7 @@ void PushableLever_Idle(PushableLeverEntity* this) { super->action = PUSHING; super->spriteOffsetX = 0; super->spriteOffsetY = 0; - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); EnqueueSFX(SFX_16A); RequestPriorityDuration(super, 30); if (PlayerCanBeMoved()) { @@ -87,13 +87,13 @@ void PushableLever_SetTiles(PushableLeverEntity* this) { super->type2 = 0; this->tilePosition = COORD_TO_TILE_OFFSET(super, 0, 0x10); this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer); - SetTile(TILE_INITIAL, this->tilePosition, super->collisionLayer); + SetBottomTile(TILE_INITIAL, this->tilePosition, super->collisionLayer); InitializeAnimation(super, 1); } else { super->type2 = 1; this->tilePosition = COORD_TO_TILE_OFFSET(super, 0x10, 0); this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer); - SetTile(TILE_PUSHED, this->tilePosition, super->collisionLayer); + SetBottomTile(TILE_PUSHED, this->tilePosition, super->collisionLayer); InitializeAnimation(super, 0); } } @@ -104,7 +104,7 @@ bool32 PushableLever_ShouldStartPushing(PushableLeverEntity* this) { return TRUE; } PushableLever_CalculateSpriteOffsets(this); - SetTile(PushableLever_Tiles[super->type2], this->tilePosition, super->collisionLayer); + SetBottomTile(PushableLever_Tiles[super->type2], this->tilePosition, super->collisionLayer); } else { this->timer = 60; super->spriteOffsetX = 0; diff --git a/src/object/pushableRock.c b/src/object/pushableRock.c index 00d8739aa..f008712b1 100644 --- a/src/object/pushableRock.c +++ b/src/object/pushableRock.c @@ -54,7 +54,7 @@ void PushableRock_Action1(PushableRockEntity* this) { } else { super->spriteSettings.flipX = 0; } - SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + SetBottomTile(this->tileIndex, this->tilePosition, super->collisionLayer); super->action = 2; InitializeAnimation(super, (super->animationState >> 1) + 1); EnqueueSFX(SFX_10F); @@ -92,7 +92,7 @@ void sub_0808A644(PushableRockEntity* this) { this->unk_72 = sub_080B1B44(this->tilePosition, super->collisionLayer); tmp = sub_080B1AE0(this->tilePosition, super->collisionLayer); if ((tmp == 0x19) || (tmp == 0xf0)) { - SetTile(0x4015, this->tilePosition, super->collisionLayer); + SetBottomTile(0x4015, this->tilePosition, super->collisionLayer); super->action = 3; if (!CheckFlags(this->pushedFlag)) { SetFlag(this->pushedFlag); @@ -102,7 +102,7 @@ void sub_0808A644(PushableRockEntity* this) { InitializeAnimation(super, 6); } } else { - SetTile(0x401b, this->tilePosition, super->collisionLayer); + SetBottomTile(0x401b, this->tilePosition, super->collisionLayer); } } diff --git a/src/object/pushableStatue.c b/src/object/pushableStatue.c index 1755dc5bb..5da8d0e8b 100644 --- a/src/object/pushableStatue.c +++ b/src/object/pushableStatue.c @@ -155,7 +155,7 @@ void PushableStatue_Action4(PushableStatueEntity* this) { } else { super->spriteSettings.draw = 1; super->action = 1; - SetTile(0x400b, this->unk_84, super->collisionLayer); + SetBottomTile(0x400b, this->unk_84, super->collisionLayer); sub_080894C8(this); } } @@ -163,9 +163,9 @@ void PushableStatue_Action4(PushableStatueEntity* this) { void sub_08089454(PushableStatueEntity* this) { this->unk_84 = COORD_TO_TILE(super); this->unk_80 = GetTileIndex(this->unk_84, super->collisionLayer); - SetTile(0x400b, this->unk_84, super->collisionLayer); + SetBottomTile(0x400b, this->unk_84, super->collisionLayer); if (super->collisionLayer == 2 && GetTileType(this->unk_84, 1) == 0x310) { - SetTile(0x400b, this->unk_84, 1); + SetBottomTile(0x400b, this->unk_84, 1); } } @@ -194,7 +194,7 @@ void sub_08089538(PushableStatueEntity* this) { u16 tileType; this->unk_86 = 0x20; EnqueueSFX(SFX_10F); - SetTile(this->unk_80, this->unk_84, super->collisionLayer); + SetBottomTile(this->unk_80, this->unk_84, super->collisionLayer); if ((super->collisionLayer == 2) && (GetTileType(this->unk_84, 1) == 0x400b)) { CloneTile(0x310, this->unk_84, 1); } @@ -264,7 +264,7 @@ bool32 sub_080896B0(void) { uVar4 = COORD_TO_TILE_OFFSET(&gPlayerEntity.base, -ptr[0], -ptr[1]) - uVar1; val = sub_080B1AE0(uVar4, gPlayerEntity.base.collisionLayer); if ((val - 0x26 > 1) && (val != 0x29)) { - layer = GetLayerByIndex(gPlayerEntity.base.collisionLayer); + layer = GetTileBuffer(gPlayerEntity.base.collisionLayer); iVar2 = (uVar4 * 0x10000) >> 0x10; tmp1 = layer->collisionData[iVar2]; tmp2 = layer->collisionData[(iVar2 - uVar1)]; diff --git a/src/object/railtrack.c b/src/object/railtrack.c index 5582202fb..63172e5a2 100644 --- a/src/object/railtrack.c +++ b/src/object/railtrack.c @@ -65,7 +65,7 @@ void Railtrack_Init(RailtrackEntity* this) { } } InitializeAnimation(super, super->animationState); - this->unk_70 = &GetLayerByIndex(super->collisionLayer)->mapData[COORD_TO_TILE(super)]; + this->unk_70 = &GetTileBuffer(super->collisionLayer)->mapData[COORD_TO_TILE(super)]; sub_08085394(this); } @@ -140,13 +140,13 @@ void sub_08085394(RailtrackEntity* this) { tile = COORD_TO_TILE(super); this->unk_74 = *(layerData - offset); - SetTile(uVar1, tile - offset, super->collisionLayer); + SetBottomTile(uVar1, tile - offset, super->collisionLayer); this->unk_76 = layerData[0x0]; - SetTile(uVar1, tile - 0x0, super->collisionLayer); + SetBottomTile(uVar1, tile - 0x0, super->collisionLayer); this->unk_78 = layerData[offset]; - SetTile(uVar1, tile + offset, super->collisionLayer); + SetBottomTile(uVar1, tile + offset, super->collisionLayer); } void sub_0808543C(RailtrackEntity* this) { @@ -156,9 +156,9 @@ void sub_0808543C(RailtrackEntity* this) { temp = gUnk_080B4488[super->animationState / 2][0]; uVar2 = COORD_TO_TILE(super); - SetTile(this->unk_74, uVar2 - temp, super->collisionLayer); - SetTile(this->unk_76, uVar2, super->collisionLayer); - SetTile(this->unk_78, uVar2 + temp, super->collisionLayer); + SetBottomTile(this->unk_74, uVar2 - temp, super->collisionLayer); + SetBottomTile(this->unk_76, uVar2, super->collisionLayer); + SetBottomTile(this->unk_78, uVar2 + temp, super->collisionLayer); } u32 sub_080854A8(RailtrackEntity* this) { diff --git a/src/object/sanctuaryStoneTablet.c b/src/object/sanctuaryStoneTablet.c index 31201381d..b612f4871 100644 --- a/src/object/sanctuaryStoneTablet.c +++ b/src/object/sanctuaryStoneTablet.c @@ -44,7 +44,7 @@ void SanctuaryStoneTablet_Init(SanctuaryStoneTabletEntity* this) { void SanctuaryStoneTablet_Action1(SanctuaryStoneTabletEntity* this) { Entity* fxEnt; - if (super->contactFlags == 0xa1) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x21)) { fxEnt = CreateFx(super, FX_MAGIC_STORM, 0); if (fxEnt != NULL) { fxEnt->spritePriority.b0 = 3; diff --git a/src/object/smallIceBlock.c b/src/object/smallIceBlock.c index e5a6c3f11..e79311908 100644 --- a/src/object/smallIceBlock.c +++ b/src/object/smallIceBlock.c @@ -99,7 +99,7 @@ void SmallIceBlock_Action1(SmallIceBlockEntity* this) { if (obj != NULL) { CopyPosition(super, obj); } - SetTile(this->unk_6c, this->unk_70, super->collisionLayer); + SetBottomTile(this->unk_6c, this->unk_70, super->collisionLayer); DeleteEntity(super); break; @@ -158,7 +158,7 @@ void SmallIceBlock_Action4(SmallIceBlockEntity* this) { DeleteThisEntity(); } else { if (super->timer == 0x30) { - SetTile(this->unk_6c, this->unk_70, super->collisionLayer); + SetBottomTile(this->unk_6c, this->unk_70, super->collisionLayer); } SetAffineInfo(super, 0x100, (0x3c - super->timer) * 0x20 + 0x100, 0); if ((super->timer & 1) != 0) { @@ -177,14 +177,14 @@ void SmallIceBlock_Action4(SmallIceBlockEntity* this) { void sub_08099468(SmallIceBlockEntity* this) { this->unk_70 = COORD_TO_TILE(super); this->unk_6c = GetTileIndex(this->unk_70, super->collisionLayer); - SetTile(0x405a, this->unk_70, super->collisionLayer); + SetBottomTile(0x405a, this->unk_70, super->collisionLayer); } void sub_080994B8(SmallIceBlockEntity* this) { u16 tileType; EnqueueSFX(SFX_ICE_BLOCK_SLIDE); - SetTile(this->unk_6c, this->unk_70, super->collisionLayer); + SetBottomTile(this->unk_6c, this->unk_70, super->collisionLayer); if ((super->collisionLayer == 2) && (GetTileType(this->unk_70, 1) == 0x405a)) { CloneTile(0x310, this->unk_70, 1); } @@ -281,7 +281,7 @@ bool32 sub_0809963C(SmallIceBlockEntity* this) { } } } - if (super->contactFlags == 0x87) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x7)) { return TRUE; } return FALSE; diff --git a/src/object/smokeParticle.c b/src/object/smokeParticle.c index ab50e2b86..4c24717ac 100644 --- a/src/object/smokeParticle.c +++ b/src/object/smokeParticle.c @@ -74,14 +74,14 @@ void sub_080878CC(Entity* this) { switch (GetTileType(pos, layer)) { case 0x368: case 0x367: - sub_08008796(this, 3, x + itX, y + itY); + DoTileInteraction(this, 3, x + itX, y + itY); break; default: - SetTile(0x4022, pos, layer); + SetBottomTile(0x4022, pos, layer); break; } } else { - sub_08008796(this, 3, x + itX, y + itY); + DoTileInteraction(this, 3, x + itX, y + itY); } } } diff --git a/src/object/treeThorns.c b/src/object/treeThorns.c index a51bf700c..66f26cc6b 100644 --- a/src/object/treeThorns.c +++ b/src/object/treeThorns.c @@ -29,8 +29,8 @@ void TreeThorns(Entity* this) { this->flags2 = 1; this->hitbox = (Hitbox*)&gHitbox_1; tilePos = COORD_TO_TILE(this); - SetTile(0x4066, tilePos - 1, *layer); - SetTile(0x4065, tilePos, *layer); + SetBottomTile(0x4066, tilePos - 1, *layer); + SetBottomTile(0x4065, tilePos, *layer); UpdateSpriteForCollisionLayer(this); ent = CreateObject(TREE_THORNS, 1, 0); if (ent != NULL) { diff --git a/src/object/unusedSkull.c b/src/object/unusedSkull.c index 204fc9b6e..d594d5c1e 100644 --- a/src/object/unusedSkull.c +++ b/src/object/unusedSkull.c @@ -38,7 +38,7 @@ void UnusedSkull_Init(UnusedSkullEntity* this) { super->hurtType = 0x47; super->flags2 = 2; super->hitbox = (Hitbox*)&gHitbox_4; - SetTile(0x4050, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4050, COORD_TO_TILE(super), super->collisionLayer); if (super->type == 1 || CheckFlags(this->unk_86)) { super->action = 3; SetFlag(this->unk_86); @@ -49,7 +49,7 @@ void UnusedSkull_Init(UnusedSkullEntity* this) { } void UnusedSkull_Action1(UnusedSkullEntity* this) { - if (super->contactFlags == 0x9c) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1c)) { super->action = 2; super->flags &= ~0x80; CreateFx(super, FX_ICE, 0); diff --git a/src/object/well.c b/src/object/well.c index c48948b11..fbf85d134 100644 --- a/src/object/well.c +++ b/src/object/well.c @@ -33,7 +33,7 @@ void Well_Init(WellEntity* this) { super->action = 1; tilePos = COORD_TO_TILE(super); this->unk_80 = tilePos; - SetTile(16509, this->unk_80, 1); + SetBottomTile(16509, this->unk_80, 1); } void Well_Action1(WellEntity* this) { diff --git a/src/physics.c b/src/physics.c index 206b33c3e..04eae6c1c 100644 --- a/src/physics.c +++ b/src/physics.c @@ -45,7 +45,7 @@ u32 sub_0806F39C(Entity* ent) { } if (dist > 64) { - sub_080027EA(&gPlayerEntity.base, ent->speed, ent->direction); + LinearMoveDirectionOLD(&gPlayerEntity.base, ent->speed, ent->direction); return 1; } return 0; @@ -114,7 +114,7 @@ void sub_0806F4E8(Entity* ent) { } bool32 sub_0806F520(Entity* ent) { - if (ent->contactFlags == 0x93) + if (ent->contactFlags == (CONTACT_TAKE_DAMAGE | 0x13)) return 1; ent->gustJarState &= ~4; ent->spriteOffsetY = 0; @@ -402,7 +402,7 @@ bool32 CheckPlayerProximity(u32 x, u32 y, u32 distX, u32 DistY) { } bool32 sub_0806FC24(u32 param_1, u32 param_2) { - u32 val = sub_08007DD6(param_1, gUnk_080046A4); + u32 val = ActTileToTile(param_1, gUnk_080046A4); if (!val) return 0; @@ -411,7 +411,7 @@ bool32 sub_0806FC24(u32 param_1, u32 param_2) { const u16* sub_0806FC50(u32 param_1, u32 param_2) { const u16* rv; - u32 val = sub_08007DD6(param_1, gUnk_080046A4); + u32 val = ActTileToTile(param_1, gUnk_080046A4); if (!val || ((gUnk_080047F6[val << 2] >> param_2) & 0x1) == 0) { rv = 0; } else { diff --git a/src/player.c b/src/player.c index a67e1022b..064b47ec1 100644 --- a/src/player.c +++ b/src/player.c @@ -894,7 +894,7 @@ static void sub_08071130(PlayerEntity* this) { if (this->unk_74 != NULL) ResetCollisionLayer(this->unk_74); - sub_08008790(super, 7); + DoTileInteractionHere(super, 7); if (gPlayerState.field_0x14) return; @@ -2067,7 +2067,8 @@ static void PlayerRollInit(PlayerEntity* this) { static void PlayerRollUpdate(PlayerEntity* this) { if (((gPlayerState.flags & (PL_ROLLING | PL_MOLDWORM_CAPTURED)) != PL_ROLLING) || - (!(gPlayerState.flags & PL_MOLDWORM_RELEASED) && (super->iframes != 0) && (super->contactFlags & 0x80))) { + (!(gPlayerState.flags & PL_MOLDWORM_RELEASED) && (super->iframes != 0) && + (super->contactFlags & CONTACT_TAKE_DAMAGE))) { gPlayerState.flags &= ~PL_ROLLING; if (CheckQueuedAction()) return; @@ -2194,7 +2195,7 @@ static void PlayerInHoleInit(PlayerEntity* this) { super->timer = 1; } } - SetTile(0x4070, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4070, COORD_TO_TILE(super), super->collisionLayer); ResetActiveItems(); PlayerInHoleUpdate(this); SoundReq(SFX_81); @@ -2251,7 +2252,7 @@ static void sub_08072B5C(PlayerEntity* this) { return; } - SetTile(0x4021, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4021, COORD_TO_TILE(super), super->collisionLayer); super->direction = Direction8FromAnimationState(super->animationState); temp = sub_0807A2F8(1); if (!temp) { @@ -2287,7 +2288,7 @@ static void sub_08072C48(PlayerEntity* this) { if (GravityUpdate(super, GRAVITY_RATE)) return; - sub_08008790(super, 7); + DoTileInteractionHere(super, 7); if (gPlayerState.field_0x14) { if (PlayerCheckNEastTile()) { gPlayerState.surfacePositionSameTimer = 7; @@ -2363,13 +2364,13 @@ static void sub_08072D54(PlayerEntity* this) { uVar2 = GetTileType(sub_0806F730(super), super->collisionLayer); switch (super->subtimer) { case 0: - if (sub_08007DD6(uVar2, sTileTable[gPlayerEntity.base.animationState >> 1])) { + if (ActTileToTile(uVar2, sTileTable[gPlayerEntity.base.animationState >> 1])) { super->timer = 1; super->subtimer = 1; } break; case 1: - if (sub_08007DD6(uVar2, sTileTable[gPlayerEntity.base.animationState >> 1])) { + if (ActTileToTile(uVar2, sTileTable[gPlayerEntity.base.animationState >> 1])) { super->timer = 1; } else { super->subtimer = 2; @@ -2377,7 +2378,7 @@ static void sub_08072D54(PlayerEntity* this) { break; case 2: super->animationState ^= 4; - if (sub_08007DD6(uVar2, sTileTable[gPlayerEntity.base.animationState >> 1]) != 0) { + if (ActTileToTile(uVar2, sTileTable[gPlayerEntity.base.animationState >> 1]) != 0) { super->timer = 1; super->subtimer = 3; } @@ -2385,7 +2386,7 @@ static void sub_08072D54(PlayerEntity* this) { break; case 3: super->animationState ^= 4; - if (sub_08007DD6(uVar2, sTileTable[gPlayerEntity.base.animationState >> 1])) { + if (ActTileToTile(uVar2, sTileTable[gPlayerEntity.base.animationState >> 1])) { super->timer = 1; } else { super->subtimer = 4; @@ -2409,7 +2410,7 @@ static void sub_08072D54(PlayerEntity* this) { } else { sub_08004542(super); } - sub_08008790(super, 7); + DoTileInteractionHere(super, 7); if (gPlayerState.field_0x14 != 0) { if (PlayerCheckNEastTile()) { gPlayerState.surfacePositionSameTimer = 7; @@ -3503,7 +3504,7 @@ void SurfaceAction_16(PlayerEntity* this) { (super->x.HALF.HI & 0xFFF0) | 8, (super->y.HALF.HI & 0xFFF0) | 8, super->x.HALF.HI, super->y.HALF.HI); } if ((gPlayerState.flags & PL_MINISH) == 0) - sub_08008790(super, 7); + DoTileInteractionHere(super, 7); } } diff --git a/src/playerItem.c b/src/playerItem.c index dcf2532b2..46fbd0237 100644 --- a/src/playerItem.c +++ b/src/playerItem.c @@ -74,7 +74,7 @@ void ItemUpdate(Entity* this) { if (!EntityDisabled(this)) { gPlayerItemFunctions[this->id](this); - this->contactFlags &= ~0x80; + this->contactFlags &= ~CONTACT_TAKE_DAMAGE; if (this->iframes != 0) { if (this->iframes > 0) this->iframes--; diff --git a/src/playerItem/playerItemBomb.c b/src/playerItem/playerItemBomb.c index 5535277f0..0a08c55d6 100644 --- a/src/playerItem/playerItemBomb.c +++ b/src/playerItem/playerItemBomb.c @@ -195,7 +195,7 @@ void sub_0801B418(Entity* this) { x = 0x10; iVar3 = y - 0x10; while (x >= -0x10) { - sub_08008796(this, 3, this->x.HALF.HI + x, this->y.HALF.HI + y); + DoTileInteraction(this, 3, this->x.HALF.HI + x, this->y.HALF.HI + y); x -= 0x10; } y = iVar3; diff --git a/src/playerItem/playerItemBoomerang.c b/src/playerItem/playerItemBoomerang.c index 0f7a8662d..46bc2ca44 100644 --- a/src/playerItem/playerItemBoomerang.c +++ b/src/playerItem/playerItemBoomerang.c @@ -28,7 +28,7 @@ void PlayerItemBoomerang_Init(PlayerItemBoomerangEntity* this); void PlayerItemBoomerang_Action2(PlayerItemBoomerangEntity* this); void PlayerItemBoomerang_Action3(PlayerItemBoomerangEntity* this); -extern Entity* sub_08008782(Entity*, u32, s32, s32); +extern Entity* DoTileInteractionOffset(Entity*, u32, s32, s32); extern bool32 sub_080040E2(Entity*, u8*); extern Hitbox gUnk_081271CC; extern u8 gUnk_08003E44; @@ -184,7 +184,7 @@ void PlayerItemBoomerang_Action2(PlayerItemBoomerangEntity* this) { if (super->timer == 0) { uVar6 = TRUE; } - if (super->contactFlags & 0x80) { + if (super->contactFlags & CONTACT_TAKE_DAMAGE) { uVar6 = TRUE; } if (!uVar6) { @@ -257,5 +257,5 @@ Entity* sub_0801B864(Entity* this) { sub_0800451C(this); } iVar1 = (this->direction >> 2) * 2; - return sub_08008782(this, 2, gUnk_080B782E[iVar1], gUnk_080B782E[iVar1 + 1]); + return DoTileInteractionOffset(this, 2, gUnk_080B782E[iVar1], gUnk_080B782E[iVar1 + 1]); } diff --git a/src/playerItem/playerItemBottle.c b/src/playerItem/playerItemBottle.c index 8196ba8be..962f8d7ad 100644 --- a/src/playerItem/playerItemBottle.c +++ b/src/playerItem/playerItemBottle.c @@ -279,7 +279,7 @@ void PlayerItemBottle_UseEmptyBottle(Entity* this) { if (this->spriteSettings.flipX != 0) { iVar2 = -iVar2; } - if (GetRelativeCollisionTile(this, iVar2, (s8)ptr2[1]) == 0x10) { + if (GetActTileRelative(this, iVar2, (s8)ptr2[1]) == 0x10) { this->type2 = ITEM_BOTTLE_WATER; } } diff --git a/src/playerItem/playerItemBow.c b/src/playerItem/playerItemBow.c index ecedd8737..4495475b4 100644 --- a/src/playerItem/playerItemBow.c +++ b/src/playerItem/playerItemBow.c @@ -37,7 +37,7 @@ typedef struct { extern u8 gUnk_08003E44; -extern Entity* sub_08008782(Entity*, u32, s32, s32); +extern Entity* DoTileInteractionOffset(Entity*, u32, s32, s32); extern void sub_08017744(Entity*); extern void ModArrows(s32); @@ -146,7 +146,7 @@ void PlayerItemBow_Action1(PlayerItemBowEntity* this) { super->spriteSettings.draw ^= 1; } LinearMoveUpdate(super); - if (sub_08008782(super, (super->hurtType == 0x0e) ? 1 : 4, this->unk_6c, this->unk_70) != NULL) { + if (DoTileInteractionOffset(super, (super->hurtType == 0x0e) ? 1 : 4, this->unk_6c, this->unk_70) != NULL) { if (super->hurtType != 0x0e) { DeleteThisEntity(); } diff --git a/src/playerItem/playerItemDashSword.c b/src/playerItem/playerItemDashSword.c index ef1275355..126d17bba 100644 --- a/src/playerItem/playerItemDashSword.c +++ b/src/playerItem/playerItemDashSword.c @@ -8,7 +8,7 @@ #include "functions.h" #include "player.h" -extern Entity* sub_08008782(Entity*, u32, s32, s32); +extern Entity* DoTileInteractionOffset(Entity*, u32, s32, s32); void PlayerItemDashSword_Action1(Entity* this); void PlayerItemDashSword_Init(Entity* this); @@ -81,7 +81,7 @@ void sub_0801B938(Entity* this) { this->hitbox = (Hitbox*)&gUnk_080B7850[this->animationState >> 1]; ptr = &gUnk_080B7848[(this->animationState >> 1) * 2]; - sub_08008782(this, -(gPlayerState.skills & SKILL_ROCK_BREAKER) != 0, ptr[0], ptr[1]); + DoTileInteractionOffset(this, -(gPlayerState.skills & SKILL_ROCK_BREAKER) != 0, ptr[0], ptr[1]); sub_08078E84(this, &gPlayerEntity.base); } diff --git a/src/playerItem/playerItemFireRodProjectile.c b/src/playerItem/playerItemFireRodProjectile.c index eb5c40058..c80c7894f 100644 --- a/src/playerItem/playerItemFireRodProjectile.c +++ b/src/playerItem/playerItemFireRodProjectile.c @@ -79,7 +79,7 @@ void PlayerItemFireRodProjectile_Action1(PlayerItemFireRodProjectileEntity* this CreateFx(super, FX_SWORD_MAGIC, 0); DeleteThisEntity(); } - if (sub_08008790(super, 0xc)) { + if (DoTileInteractionHere(super, 0xc)) { DeleteThisEntity(); } super->child = CreatePlayerItem(PLAYER_ITEM_FIRE_ROD_PROJECTILE, 1, 0, this->unk_68); diff --git a/src/playerItem/playerItemGust.c b/src/playerItem/playerItemGust.c index 40e2a1be3..d77d17479 100644 --- a/src/playerItem/playerItemGust.c +++ b/src/playerItem/playerItemGust.c @@ -42,7 +42,7 @@ typedef struct { u16 tileID; } Obj11; -Obj11* sub_08008782(Entity*, u32, u32, u32); +Obj11* DoTileInteractionOffset(Entity*, u32, u32, u32); extern const s8* const sOffsets[]; extern const s8 gUnk_0812AABC[]; @@ -101,7 +101,7 @@ static void sub_080ACC78(PlayerItemGustEntity* this) { if (child_offsets[this->offset_iter] == 0) { this->offset_iter = 0; } - o = sub_08008782(super, 0xe, child_offsets[this->offset_iter], child_offsets[this->offset_iter + 1]); + o = DoTileInteractionOffset(super, 0xe, child_offsets[this->offset_iter], child_offsets[this->offset_iter + 1]); if (o != NULL) { child = CreateObject(BUSH, o->type, o->type2); if (child != NULL) { diff --git a/src/playerItem/playerItemGustBig.c b/src/playerItem/playerItemGustBig.c index 15e95c2d1..a2e18c99c 100644 --- a/src/playerItem/playerItemGustBig.c +++ b/src/playerItem/playerItemGustBig.c @@ -25,7 +25,7 @@ extern void PlayerItemGustBig_Action1(PlayerItemGustBigEntity* this); extern void PlayerItemGustBig_Action2(PlayerItemGustBigEntity* this); extern void PlayerItemGustBig_Action3(PlayerItemGustBigEntity* this); -extern u32 sub_08007DD6(u32, const u16*); +extern u32 ActTileToTile(u32, const u16*); extern const u8 gUnk_08003E44[]; @@ -136,12 +136,12 @@ void PlayerItemGustBig_Action2(PlayerItemGustBigEntity* this) { s32 x; if (super->child == NULL) { GetNextFrame(super); - sub_08008790(super, 5); + DoTileInteractionHere(super, 5); } else { if ((super->child->gustJarState & 4) == 0) { DeleteThisEntity(); } - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { PlayerItemGustBig_Action3(this); return; } @@ -174,10 +174,10 @@ void PlayerItemGustBig_Action2(PlayerItemGustBigEntity* this) { if (super->type2 == 0) { sub_0800451C(super); } - if (sub_08007DD6(sub_080B1A0C(super, x, y), gUnk_080B3DF4) != 0) { + if (ActTileToTile(sub_080B1A0C(super, x, y), gUnk_080B3DF4) != 0) { return; } - if (GetRelativeCollisionTile(super, x, y) == 0x74) { + if (GetActTileRelative(super, x, y) == 0x74) { return; } if (sub_080040D8(super, (u8*)gUnk_08003E44, super->x.HALF.HI + x, super->y.HALF.HI + y) == 0) { diff --git a/src/playerItem/playerItemHeldObject.c b/src/playerItem/playerItemHeldObject.c index 7d1eebd67..669c77ca5 100644 --- a/src/playerItem/playerItemHeldObject.c +++ b/src/playerItem/playerItemHeldObject.c @@ -112,7 +112,7 @@ void PlayerItemHeldObject_SubAction2(PlayerItemHeldObjectEntity* this) { if ((child->base).action != 2) { DeleteThisEntity(); } - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { super->z.WORD = 0; } if (super->speed != 0) { @@ -121,8 +121,8 @@ void PlayerItemHeldObject_SubAction2(PlayerItemHeldObjectEntity* this) { super->direction = super->knockbackDirection; super->knockbackDuration = 0; } - if (GetRelativeCollisionTile(super, gUnk_081320C4[super->direction >> 2], - gUnk_081320C4[(super->direction >> 2) + 1]) == 0x74) { + if (GetActTileRelative(super, gUnk_081320C4[super->direction >> 2], + gUnk_081320C4[(super->direction >> 2) + 1]) == 0x74) { LinearMoveUpdate(super); } else { tile = sub_080B1B0C(super); diff --git a/src/playerItem/playerItemPacciCaneProjectile.c b/src/playerItem/playerItemPacciCaneProjectile.c index a5725d179..4c4bc0056 100644 --- a/src/playerItem/playerItemPacciCaneProjectile.c +++ b/src/playerItem/playerItemPacciCaneProjectile.c @@ -30,7 +30,7 @@ void PlayerItemPacciCaneProjectile_Action4(PlayerItemPacciCaneProjectileEntity* void sub_08070458(PlayerItemPacciCaneProjectileEntity* this); extern void sub_08017744(Entity*); -extern u8* sub_08008782(Entity*, u32, u32, u32); +extern u8* DoTileInteractionOffset(Entity*, u32, u32, u32); void PlayerItemPacciCaneProjectile(PlayerItemPacciCaneProjectileEntity* this) { static void (*const PlayerItemPacciCaneProjectile_Actions[])(PlayerItemPacciCaneProjectileEntity*) = { @@ -104,7 +104,7 @@ void PlayerItemPacciCaneProjectile_Action1(PlayerItemPacciCaneProjectileEntity* cVar1 = gUnk_0811B9C8[super->animationState]; cVar2 = gUnk_0811B9C8[super->animationState + 1]; - iVar3 = sub_08008782(super, 10, cVar1, cVar2); + iVar3 = DoTileInteractionOffset(super, 10, cVar1, cVar2); if (iVar3) { pEVar4 = CreateObject(OBJECT_53, iVar3[5], iVar3[2]); if (pEVar4) { @@ -135,7 +135,7 @@ void PlayerItemPacciCaneProjectile_Action1(PlayerItemPacciCaneProjectileEntity* super->spritePriority.b0 = 7; this->unk_7c = GetTileIndex(COORD_TO_TILE(super), super->collisionLayer); InitializeAnimation(super, 0x14); - SetTile(0x4020, COORD_TO_TILE(super), super->collisionLayer); + SetBottomTile(0x4020, COORD_TO_TILE(super), super->collisionLayer); return; } } else { @@ -197,7 +197,7 @@ void sub_08070458(PlayerItemPacciCaneProjectileEntity* this) { COLLISION_OFF(super); super->speed = 0; if (this->unk_7c != 0) { - SetTile(this->unk_7c, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); + SetBottomTile(this->unk_7c, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); } InitializeAnimation(super, 0x13); sub_08017744(super); diff --git a/src/playerItem/playerItemShield.c b/src/playerItem/playerItemShield.c index bb592f74d..35bd85864 100644 --- a/src/playerItem/playerItemShield.c +++ b/src/playerItem/playerItemShield.c @@ -102,7 +102,7 @@ void PlayerItemShield_Action1(PlayerItemShieldEntity* this) { gPlayerState.shield_status &= ~0x80; sub_080176E4(super); } else { - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { if ((((super->contactFlags & 0x7f) == 0x42) && this->unk_68 == 0xe) && ((gPlayerState.shield_status & 0x40) == 0)) { playerItem = CreatePlayerItem(PLAYER_ITEM_FIRE_ROD_PROJECTILE, 0, 0, this->unk_68); diff --git a/src/playerItem/playerItemSword.c b/src/playerItem/playerItemSword.c index 6df617094..bed81f9fc 100644 --- a/src/playerItem/playerItemSword.c +++ b/src/playerItem/playerItemSword.c @@ -285,7 +285,7 @@ void sub_080A78B8(PlayerItemSwordEntity* this, Entity* param_2) { } super->spriteSettings.flipX = flipX; } - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { if ((param_2->iframes == 0) || ((u8)param_2->iframes == 0x81)) { param_2->iframes = super->iframes; param_2->knockbackDirection = super->knockbackDirection; @@ -361,7 +361,7 @@ void sub_080A7A84(PlayerItemSwordEntity* this) { uVar3 = -uVar3; } if (super->type != 0) { - sub_08008796(super, 0, super->x.HALF.HI + uVar3, super->y.HALF.HI + r5); + DoTileInteraction(super, 0, super->x.HALF.HI + uVar3, super->y.HALF.HI + r5); } else if (super->z.WORD == 0) { if (gPlayerState.skills & SKILL_ROCK_BREAKER) { tmp2 = 1; @@ -369,11 +369,11 @@ void sub_080A7A84(PlayerItemSwordEntity* this) { tmp2 = 0; } new_var = uVar3; - if (((sub_08008796(super, tmp2, super->x.HALF.HI + new_var, super->y.HALF.HI + r5) == NULL) && + if (((DoTileInteraction(super, tmp2, super->x.HALF.HI + new_var, super->y.HALF.HI + r5) == NULL) && (gPlayerState.sword_state != 0)) && ((gPlayerState.sword_state & 0xc0) == 0)) { new_var2 = super; - if (GetRelativeCollisionTile(new_var2, new_var, r5) == 0x2e) { + if (GetActTileRelative(new_var2, new_var, r5) == 0x2e) { SoundReqClipped(&gPlayerEntity.base, SFX_ITEM_GLOVES_KNOCKBACK); } else { SoundReqClipped(&gPlayerEntity.base, SFX_METAL_CLINK); @@ -406,7 +406,7 @@ void sub_080A7B98(PlayerItemSwordEntity* this) { for (i = 0; i < 3; i++) { xOffset = -0x10; for (j = 0; j < 3; j++) { - sub_08008796(super, uVar2, super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset); + DoTileInteraction(super, uVar2, super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset); xOffset += 0x10; } yOffset += 0x10; diff --git a/src/playerItem/playerItemSwordBeam.c b/src/playerItem/playerItemSwordBeam.c index 0d572c099..4b110c434 100644 --- a/src/playerItem/playerItemSwordBeam.c +++ b/src/playerItem/playerItemSwordBeam.c @@ -97,7 +97,7 @@ void PlayerItemSwordBeam_Action1(PlayerItemSwordBeamEntity* this) { CreateFx(super, FX_SWORD_MAGIC, 0); DeleteThisEntity(); } - if (sub_08008790(super, 0xc) != NULL) { + if (DoTileInteractionHere(super, 0xc) != NULL) { DeleteThisEntity(); } } else { diff --git a/src/playerUtils.c b/src/playerUtils.c index 7820a1e53..8ff5a7f97 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -59,7 +59,7 @@ extern ItemDefinition gItemDefinitions[]; extern ItemBehavior* (*const gCreateItemsFuncs[])(Item); -extern void DeleteLoadedTileEntity(u32, u32); +extern void UnregisterInteractTile(u32, u32); extern const u8 gUnk_080B3E80[]; // collisionData for tileType? @@ -1910,7 +1910,7 @@ void sub_080792D8(void) { gPlayerState.animation = ANIM_BOUNCE_NOCAP; } } - sub_080027EA(playerEntity, 0x280, playerEntity->knockbackDirection); + LinearMoveDirectionOLD(playerEntity, 0x280, playerEntity->knockbackDirection); sub_0807A5B8(playerEntity->knockbackDirection); } } @@ -2003,10 +2003,10 @@ bool32 sub_08079550(void) { } uVar3 = sub_080B1AE0(tilePos1, gPlayerEntity.base.collisionLayer); - uVar3 = sub_08007DD6(uVar3, gUnk_0811C1E8[gPlayerEntity.base.animationState >> 1]); + uVar3 = ActTileToTile(uVar3, gUnk_0811C1E8[gPlayerEntity.base.animationState >> 1]); if (uVar3 != 0) { uVar3 = sub_080B1AE0(tilePos2, gPlayerEntity.base.collisionLayer); - uVar3 = sub_08007DD6(uVar3, gUnk_0811C1E8[gPlayerEntity.base.animationState >> 1]); + uVar3 = ActTileToTile(uVar3, gUnk_0811C1E8[gPlayerEntity.base.animationState >> 1]); if (uVar3 != 0) { gPlayerState.pushedObject |= 0x80; if (gPlayerState.dash_state == 0 && (++gPlayerEntity.base.subtimer <= 5)) { @@ -2332,13 +2332,13 @@ bool32 sub_08079C30(Entity* param_1) { return TRUE; } - if (gPlayerState.floor_type != sub_08007DD6(GetRelativeCollisionTile(param_1, 0, -1), (u16*)gUnk_08007CAC)) + if (gPlayerState.floor_type != ActTileToTile(GetActTileRelative(param_1, 0, -1), (u16*)gUnk_08007CAC)) return FALSE; - if (gPlayerState.floor_type != sub_08007DD6(GetRelativeCollisionTile(param_1, 2, 0), (u16*)gUnk_08007CAC)) + if (gPlayerState.floor_type != ActTileToTile(GetActTileRelative(param_1, 2, 0), (u16*)gUnk_08007CAC)) return FALSE; - if (gPlayerState.floor_type == sub_08007DD6(GetRelativeCollisionTile(param_1, -2, 0), (u16*)gUnk_08007CAC)) { + if (gPlayerState.floor_type == ActTileToTile(GetActTileRelative(param_1, -2, 0), (u16*)gUnk_08007CAC)) { return TRUE; } } @@ -2350,7 +2350,7 @@ bool32 sub_08079D48(void) { return TRUE; } else { if (!PlayerCheckNEastTile()) { - if (!sub_08007DD6((u16)GetActTile(&gPlayerEntity.base), gUnk_0811C268)) { + if (!ActTileToTile((u16)GetActTile(&gPlayerEntity.base), gUnk_0811C268)) { return TRUE; } } @@ -2397,7 +2397,7 @@ void sub_08079E58(s32 speed, u32 direction) { sub_08079E90(direction); } sub_080085B0(&gPlayerEntity.base); - sub_080027EA(&gPlayerEntity.base, (s16)speed, (u8)direction); + LinearMoveDirectionOLD(&gPlayerEntity.base, (s16)speed, (u8)direction); sub_0807A5B8(direction); } @@ -2588,8 +2588,8 @@ SurfaceType GetSurfaceCalcType(Entity* param_1, s32 x, s32 y) { gPlayerState.surfaceTimer++; } gPlayerState.floor_type_last = gPlayerState.floor_type; - tileType = GetRelativeCollisionTile(param_1, x, y); - return sub_08007DD6(tileType, (u16*)gUnk_08007CAC); + tileType = GetActTileRelative(param_1, x, y); + return ActTileToTile(tileType, (u16*)gUnk_08007CAC); } void EnablePlayerDraw(Entity* this) { @@ -2633,8 +2633,8 @@ u32 sub_0807A2F8(u32 param_1) { iVar4 = 0; uVar2 = sub_08004202(&gPlayerEntity.base, auStack36, uVar2); if (sub_080B1B44(uVar2 >> 1, 1)) { - if (!sub_08007DD6((u16)sub_080B1AE0((u16)(uVar2 >> 1), gPlayerEntity.base.collisionLayer), - gUnk_0811C1D8[gPlayerEntity.base.animationState >> 1])) { + if (!ActTileToTile((u16)sub_080B1AE0((u16)(uVar2 >> 1), gPlayerEntity.base.collisionLayer), + gUnk_0811C1D8[gPlayerEntity.base.animationState >> 1])) { break; } } else { @@ -2643,8 +2643,8 @@ u32 sub_0807A2F8(u32 param_1) { uVar1 = sub_08004202(&gPlayerEntity.base, auStack36, uVar1); if (sub_080B1B44(uVar1 >> 1, 1)) { - if (!sub_08007DD6((u16)sub_080B1AE0((uVar1 >> 1), gPlayerEntity.base.collisionLayer), - gUnk_0811C1D8[gPlayerEntity.base.animationState >> 1])) { + if (!ActTileToTile((u16)sub_080B1AE0((uVar1 >> 1), gPlayerEntity.base.collisionLayer), + gUnk_0811C1D8[gPlayerEntity.base.animationState >> 1])) { break; } } else { @@ -2857,7 +2857,7 @@ u32 GetCollisionTileInFront(Entity* this) { x = 0; break; } - return GetRelativeCollisionTile(this, x, y); + return GetActTileRelative(this, x, y); } void nullsub_505(void) { @@ -2941,7 +2941,7 @@ void sub_0807AB44(Entity* this, s32 xOffset, s32 yOffset) { if (object != NULL) { PositionRelative(this, object, xOffset << 0x10, yOffset << 0x10); object->child = (Entity*)ptr; - SetTile(0x404f, COORD_TO_TILE(object), object->collisionLayer); + SetBottomTile(0x404f, COORD_TO_TILE(object), object->collisionLayer); } } } @@ -3263,8 +3263,8 @@ void SetTileType(u32 tileType, u32 position, u32 layer) { u16* dest; if (tileType < 0x800) { - DeleteLoadedTileEntity(position, layer); - data = GetLayerByIndex(layer); + UnregisterInteractTile(position, layer); + data = GetTileBuffer(layer); metatile = data->unkData2[tileType]; data->mapData[position] = metatile; collisionData = gUnk_080B3E80[tileType]; @@ -3290,7 +3290,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); + SetBottomTile(tileType, position, layer); } else { RestorePrevTileEntity(position, layer); } @@ -3426,16 +3426,16 @@ void sub_0807B778(u32 position, u32 layer) { } } -void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) { - if (param_1 == 53) { - 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); - sub_0807B778(param_2 + 64, param_3); - sub_0807B778(param_2 - 64, param_3); +void sub_0807B7D8(u32 type, u32 pos, u32 layer) { + if (type == 53) { + CloneTile(53, pos, layer); + sub_0807B778(pos, layer); + sub_0807B778(pos + 1, layer); + sub_0807B778(pos - 1, layer); + sub_0807B778(pos + 64, layer); + sub_0807B778(pos - 64, layer); } else { - SetTileType(param_1, param_2, param_3); + SetTileType(type, pos, layer); } } @@ -3481,8 +3481,8 @@ void sub_0807B9B8(u32 tileIndex, u32 position, u32 layer) { u16* dest; u16 tileType; - DeleteLoadedTileEntity(position, layer); - data = GetLayerByIndex(layer); + UnregisterInteractTile(position, layer); + data = GetTileBuffer(layer); data->mapData[position] = tileIndex; tileType = data->metatileTypes[tileIndex]; data->collisionData[position] = gUnk_080B3E80[tileType]; @@ -3512,9 +3512,9 @@ void RestorePrevTileEntity(u32 position, u32 layer) { u16* dest; u16* src; - DeleteLoadedTileEntity(position, layer); - data = GetLayerByIndex(layer); - data->mapData[position] = tileIndex = data->mapDataClone[position]; + UnregisterInteractTile(position, layer); + data = GetTileBuffer(layer); + data->mapData[position] = tileIndex = data->mapDataOriginal[position]; tileType = data->metatileTypes[tileIndex]; data->collisionData[position] = gUnk_080B3E80[tileType]; data->unkData3[position] = gUnk_080B37A0[tileType]; @@ -3548,7 +3548,7 @@ void sub_0807BB98(s32 basePosition, u32 layer, u32 width, u32 height) { u32 x; for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { - SetTile(0x4072, basePosition + x, layer); + SetBottomTile(0x4072, basePosition + x, layer); } basePosition += 0x40; } @@ -3853,21 +3853,21 @@ void LoadRoomGfx(void) { tmp = TRUE; } if (gRoomTransition.field2d == 0) { - MemCopy(gMapBottom.mapData, gMapBottom.mapDataClone, sizeof(gMapBottom.mapData)); - MemCopy(gMapTop.mapData, gMapTop.mapDataClone, sizeof(gMapBottom.mapData)); + MemCopy(gMapBottom.mapData, gMapBottom.mapDataOriginal, sizeof(gMapBottom.mapData)); + MemCopy(gMapTop.mapData, gMapTop.mapDataOriginal, sizeof(gMapBottom.mapData)); } else if (gRoomTransition.field2d == 2) { MemCopy(gMapBottom.mapData, gMapBottom.unkData3, 0x1000); - MemCopy(gMapBottom.mapDataClone, gMapBottom.mapData, 0x1000); - MemCopy(gMapBottom.unkData3, gMapBottom.mapDataClone, 0x1000); + MemCopy(gMapBottom.mapDataOriginal, gMapBottom.mapData, 0x1000); + MemCopy(gMapBottom.unkData3, gMapBottom.mapDataOriginal, 0x1000); MemCopy(gMapBottom.mapData + 0x800, gMapBottom.unkData3, 0x1000); - MemCopy(gMapBottom.mapDataClone + 0x800, gMapBottom.mapData + 0x800, 0x1000); - MemCopy(gMapBottom.unkData3, gMapBottom.mapDataClone + 0x800, 0x1000); + MemCopy(gMapBottom.mapDataOriginal + 0x800, gMapBottom.mapData + 0x800, 0x1000); + MemCopy(gMapBottom.unkData3, gMapBottom.mapDataOriginal + 0x800, 0x1000); MemCopy(gMapTop.mapData, gMapTop.unkData3, 0x1000); - MemCopy(gMapTop.mapDataClone, gMapTop.mapData, 0x1000); - MemCopy(gMapTop.unkData3, gMapTop.mapDataClone, 0x1000); + MemCopy(gMapTop.mapDataOriginal, gMapTop.mapData, 0x1000); + MemCopy(gMapTop.unkData3, gMapTop.mapDataOriginal, 0x1000); MemCopy(gMapTop.mapData + 0x800, gMapTop.unkData3, 0x1000); - MemCopy(gMapTop.mapDataClone + 0x800, gMapTop.mapData + 0x800, 0x1000); - MemCopy(gMapTop.unkData3, gMapTop.mapDataClone + 0x800, 0x1000); + MemCopy(gMapTop.mapDataOriginal + 0x800, gMapTop.mapData + 0x800, 0x1000); + MemCopy(gMapTop.unkData3, gMapTop.mapDataOriginal + 0x800, 0x1000); } if (!tmp) { sub_0807BBE4(); @@ -3946,10 +3946,10 @@ void sub_0807C460(void) { for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { if (*mapBottom > 0x3fff) { - SetTile(*mapBottom, position, 1); + SetBottomTile(*mapBottom, position, 1); } if (*mapTop > 0x3fff) { - SetTile(*mapTop, position, 2); + SetBottomTile(*mapTop, position, 2); } mapBottom++; mapTop++; @@ -4188,8 +4188,8 @@ void sub_0807C810(void) { */ void CloneMapData(void) { gRoomTransition.field2d = 1; - MemCopy(&gMapBottom.mapData, &gMapBottom.mapDataClone, 0x2000); - MemCopy(&gMapTop.mapData, &gMapTop.mapDataClone, 0x2000); + MemCopy(&gMapBottom.mapData, &gMapBottom.mapDataOriginal, 0x2000); + MemCopy(&gMapTop.mapData, &gMapTop.mapDataOriginal, 0x2000); } void sub_0807C898(void) { diff --git a/src/projectile/arrowProjectile.c b/src/projectile/arrowProjectile.c index 0eda80ebf..7acc80031 100644 --- a/src/projectile/arrowProjectile.c +++ b/src/projectile/arrowProjectile.c @@ -34,7 +34,7 @@ void ArrowProjectile_OnTick(Entity* this) { } void ArrowProjectile_OnCollision(Entity* this) { - if ((this->contactFlags & 0x80) != 0) { + if ((this->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { if ((this->contactFlags & 0x3f) != 0) { ModHealth(-2); sub_080A9488(this); diff --git a/src/projectile/boneProjectile.c b/src/projectile/boneProjectile.c index 164ec13bf..d1052df8f 100644 --- a/src/projectile/boneProjectile.c +++ b/src/projectile/boneProjectile.c @@ -23,7 +23,7 @@ void BoneProjectile_OnTick(Entity* this) { } void BoneProjectile_OnCollision(Entity* this) { - if (this->contactFlags == 0x80) { + if (this->contactFlags == CONTACT_TAKE_DAMAGE) { DeleteEntity(this); } else { sub_080A82D8(this); @@ -44,7 +44,7 @@ void BoneProjectile_Action1(Entity* this) { if (IsProjectileOffScreen(this)) { DeleteEntity(this); } else { - sub_08016AD2(this); + UpdateCollisionLayer(this); if (--this->timer == 0) { this->action = 2; this->speed = 0x120; diff --git a/src/projectile/cannonballProjectile.c b/src/projectile/cannonballProjectile.c index 5f2e7e045..c5b4244f8 100644 --- a/src/projectile/cannonballProjectile.c +++ b/src/projectile/cannonballProjectile.c @@ -63,15 +63,15 @@ void CannonballProjectile_Action2(Entity* this) { } bool32 sub_080AB5F4(Entity* this) { - switch (sub_080043E8(this)) { + switch (GetTileHazardType(this)) { case 1: - CreateItemOnGround(this); + CreatePitFallFX(this); return TRUE; case 2: - sub_080043A8(this); + CreateDrownFX(this); return TRUE; case 3: - CreateChestSpawner(this); + CreateLavaDrownFX(this); return TRUE; } return FALSE; diff --git a/src/projectile/darkNutSwordSlash.c b/src/projectile/darkNutSwordSlash.c index e95ab908e..838435e58 100644 --- a/src/projectile/darkNutSwordSlash.c +++ b/src/projectile/darkNutSwordSlash.c @@ -30,7 +30,7 @@ void DarkNutSwordSlash(Entity* this) { if ((this->parent == NULL) || (this->parent->health == 0)) { DeleteThisEntity(); } - if (((this->contactFlags & 0x80) != 0) && (this->contactedEntity == &gPlayerEntity.base)) { + if (((this->contactFlags & CONTACT_TAKE_DAMAGE) != 0) && (this->contactedEntity == &gPlayerEntity.base)) { this->iframes = -0x2d; } this->contactFlags = 0; diff --git a/src/projectile/dekuSeedProjectile.c b/src/projectile/dekuSeedProjectile.c index 132bf708d..c086f2513 100644 --- a/src/projectile/dekuSeedProjectile.c +++ b/src/projectile/dekuSeedProjectile.c @@ -24,7 +24,7 @@ void DekuSeedProjectile_OnTick(Entity* this) { } void DekuSeedProjectile_OnCollision(Entity* this) { - if (this->contactFlags == 0x80) { + if (this->contactFlags == CONTACT_TAKE_DAMAGE) { if (this->hitType == 0x68) { EnqueueSFX(SFX_86); } @@ -60,13 +60,13 @@ void DekuSeedProjectile_Action1(Entity* this) { if (IsProjectileOffScreen(this)) { DeleteThisEntity(); } - sub_08016AD2(this); + UpdateCollisionLayer(this); if (--this->timer == 0) { this->action = 4; } } else { sub_0800417E(this, this->collisions); - sub_08016AD2(this); + UpdateCollisionLayer(this); InitializeAnimation(this, 0x19); sub_080A86A0(this); } @@ -75,7 +75,7 @@ void DekuSeedProjectile_Action1(Entity* this) { if ((parent->next != NULL) && (IsColliding(this, parent) != 0)) { this->iframes = 0x10; this->knockbackDirection = -this->direction; - this->contactFlags = 0x80; + this->contactFlags = CONTACT_TAKE_DAMAGE; this->knockbackDuration = 0xc; this->knockbackSpeed = 0; parent->iframes = 0x10; @@ -99,7 +99,7 @@ void DekuSeedProjectile_Action2(Entity* this) { } } else { sub_0800417E(this, this->collisions); - sub_08016AD2(this); + UpdateCollisionLayer(this); InitializeAnimation(this, 0x19); sub_080A86A0(this); } diff --git a/src/projectile/dirtBallProjectile.c b/src/projectile/dirtBallProjectile.c index 12f9beaee..2ef3867ea 100644 --- a/src/projectile/dirtBallProjectile.c +++ b/src/projectile/dirtBallProjectile.c @@ -41,7 +41,7 @@ void DirtBallProjectile_OnCollision(Entity* this) { this->knockbackSpeed = 0; if (this->type == 0) { this->parent->child = NULL; - if (this->contactFlags == 0x80) { + if (this->contactFlags == CONTACT_TAKE_DAMAGE) { gPlayerState.hurtBlinkSpeed = 0xf0; ModHealth(-2); } @@ -136,7 +136,7 @@ void DirtBallProjectile_Action2(Entity* this) { return; } - tmp = sub_080043E8(this); + tmp = GetTileHazardType(this); if (tmp != 0) { switch (tmp) { case 2: diff --git a/src/projectile/fireProjectile.c b/src/projectile/fireProjectile.c index fa5e2d5c9..cd81f3d3e 100644 --- a/src/projectile/fireProjectile.c +++ b/src/projectile/fireProjectile.c @@ -57,7 +57,7 @@ void FireProjectile_Action2(Entity* this) { if (IsProjectileOffScreen(this)) { DeleteEntity(this); } else { - sub_08016AD2(this); + UpdateCollisionLayer(this); } } else { this->action = 3; diff --git a/src/projectile/gleerokProjectile.c b/src/projectile/gleerokProjectile.c index 2b4af4f24..d40d2a926 100644 --- a/src/projectile/gleerokProjectile.c +++ b/src/projectile/gleerokProjectile.c @@ -28,7 +28,8 @@ void GleerokProjectile(GleerokProjectileEntity* this) { } void GleerokProjectile_OnTick(GleerokProjectileEntity* this) { - if (((super->type != 3) && ((super->contactFlags & 0x80) != 0)) && ((super->contactFlags & 0x7f) != 0x1e)) { + if (((super->type != 3) && ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0)) && + ((super->contactFlags & 0x7f) != 0x1e)) { super->action = 3; COLLISION_OFF(super); InitializeAnimation(super, 0x53); @@ -95,7 +96,7 @@ void GleerokProjectile_Init(GleerokProjectileEntity* this) { void GleerokProjectile_Action1(GleerokProjectileEntity* this) { if (super->type == 3) { if (GravityUpdate(super, Q_8_8(24.0)) == 0) { - sub_08008790(super, 7); + DoTileInteractionHere(super, 7); CreateFx(super, FX_ROCK, 0); DeleteThisEntity(); } diff --git a/src/projectile/guardLineOfSight.c b/src/projectile/guardLineOfSight.c index f76f43606..dfb592373 100644 --- a/src/projectile/guardLineOfSight.c +++ b/src/projectile/guardLineOfSight.c @@ -26,7 +26,7 @@ void GuardLineOfSight(Entity* this) { this->timer = Random(); this->spriteSettings.draw = 0; } - if (this->contactFlags == 0x80) { + if (this->contactFlags == CONTACT_TAKE_DAMAGE) { if (this->parent != NULL) { this->parent->type = 0xff; } @@ -58,7 +58,7 @@ void GuardLineOfSight(Entity* this) { this->hitbox = (Hitbox*)&gUnk_080FD1E4; InitializeAnimation(this, 0); } - if (this->contactFlags == 0x80) { + if (this->contactFlags == CONTACT_TAKE_DAMAGE) { if (this->parent != NULL) { this->parent->type = 0xff; } diff --git a/src/projectile/iceProjectile.c b/src/projectile/iceProjectile.c index 1fa2ea7a7..7a430b38b 100644 --- a/src/projectile/iceProjectile.c +++ b/src/projectile/iceProjectile.c @@ -59,7 +59,7 @@ void IceProjectile_Action2(Entity* this) { if (IsProjectileOffScreen(this)) { DeleteEntity(this); } else { - sub_08016AD2(this); + UpdateCollisionLayer(this); } } else { this->action = 3; diff --git a/src/projectile/keatonDagger.c b/src/projectile/keatonDagger.c index 4f5b95afa..6a4b66c39 100644 --- a/src/projectile/keatonDagger.c +++ b/src/projectile/keatonDagger.c @@ -20,7 +20,7 @@ void KeatonDagger(Entity* this) { } parent = this->parent; if (((parent == NULL) || (parent->health == 0)) || (parent->next == NULL)) { - if (((this->contactFlags & 0x80) != 0) && (this->contactedEntity == &gPlayerEntity.base)) { + if (((this->contactFlags & CONTACT_TAKE_DAMAGE) != 0) && (this->contactedEntity == &gPlayerEntity.base)) { sub_0803C0AC(this); } DeleteEntity(this); diff --git a/src/projectile/lakituLightning.c b/src/projectile/lakituLightning.c index 866c5b20c..47d300a73 100644 --- a/src/projectile/lakituLightning.c +++ b/src/projectile/lakituLightning.c @@ -23,7 +23,7 @@ void LakituLightning_OnTick(Entity* this) { } void LakituLightning_OnCollision(Entity* this) { - if ((this->health == 0) || (this->contactFlags == 0x80)) { + if ((this->health == 0) || (this->contactFlags == CONTACT_TAKE_DAMAGE)) { DeleteThisEntity(); } LakituLightning_OnTick(this); diff --git a/src/projectile/mandiblesProjectile.c b/src/projectile/mandiblesProjectile.c index 6e7971401..64142a9c9 100644 --- a/src/projectile/mandiblesProjectile.c +++ b/src/projectile/mandiblesProjectile.c @@ -55,7 +55,7 @@ void MandiblesProjectile_OnTick(MandiblesProjectileEntity* this) { void MandiblesProjectile_OnCollision(MandiblesProjectileEntity* this) { Entity* parent; - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { switch (super->action) { case 4: super->subtimer = 0; @@ -118,7 +118,7 @@ void MandiblesProjectile_Action2(MandiblesProjectileEntity* this) { } this->unk_78 = TILE(super->x.HALF.HI, super->y.HALF.HI); if (GetTileType(this->unk_78, super->collisionLayer) == 0x4000) { - SetTile(0x4005, this->unk_78, super->collisionLayer); + SetBottomTile(0x4005, this->unk_78, super->collisionLayer); } } diff --git a/src/projectile/moblinSpear.c b/src/projectile/moblinSpear.c index ea1ac3748..076477b03 100644 --- a/src/projectile/moblinSpear.c +++ b/src/projectile/moblinSpear.c @@ -38,7 +38,7 @@ void MoblinSpear_OnTick(Entity* this) { void MoblinSpear_OnCollision(Entity* this) { u8 tmp; - if (this->contactFlags == 0x80) { + if (this->contactFlags == CONTACT_TAKE_DAMAGE) { this->iframes = 0x10; this->knockbackDuration = 0xc; this->knockbackSpeed = 0x180; diff --git a/src/projectile/octorokBossProjectile.c b/src/projectile/octorokBossProjectile.c index 789e3a417..43982f37d 100644 --- a/src/projectile/octorokBossProjectile.c +++ b/src/projectile/octorokBossProjectile.c @@ -99,7 +99,7 @@ void OctorokBossProjectile_Action1(OctorokBossProjectileEntity* this) { if (super->parent->action == 2) { DeleteThisEntity(); } - if ((super->type2 == 0) && ((super->contactFlags & 0x80) != 0)) { + if ((super->type2 == 0) && ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0)) { if ((super->contactFlags & 0x7f) == 0) { OctorokBossProjectile_Action2(this); } @@ -182,7 +182,7 @@ void OctorokBossProjectile_Action1(OctorokBossProjectileEntity* this) { if (--*(u32*)&this->unk_78 == -1) { OctorokBossProjectile_Action2(this); } - if ((super->contactFlags & 0x80) == 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) == 0) { return; } OctorokBossProjectile_Action2(this); diff --git a/src/projectile/projectile5.c b/src/projectile/projectile5.c index 31471e100..379dd97d1 100644 --- a/src/projectile/projectile5.c +++ b/src/projectile/projectile5.c @@ -41,7 +41,7 @@ void Projectile5_OnCollision(Entity* this) { if ((((Projectile5Entity*)this->parent)->unk_83 & 0x3f) == 3) { if (gPlayerState.hurtBlinkSpeed != 0) { if (sub_080B1B44(TILE(this->x.HALF.HI, this->y.HALF.HI), gPlayerEntity.base.collisionLayer) == 0) { - if (this->contactFlags == 0x80) { + if (this->contactFlags == CONTACT_TAKE_DAMAGE) { *pbVar2 = *pbVar2 & 0x7f; DeleteThisEntity(); } diff --git a/src/projectile/removableDust.c b/src/projectile/removableDust.c index c3138d167..e89cd3b47 100644 --- a/src/projectile/removableDust.c +++ b/src/projectile/removableDust.c @@ -51,7 +51,7 @@ void RemovableDust_OnTick(RemovableDustEntity* this) { } void RemovableDust_OnCollision(RemovableDustEntity* this) { - if (super->contactFlags == 0x96) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x16)) { RemovableDust_OnGrabbed(this); } } @@ -91,7 +91,7 @@ void sub_080AA494(RemovableDustEntity* this) { } super->type2 = index; super->spritePriority.b0 = 7; - SetTile(0x4068, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); + SetBottomTile(0x4068, TILE(super->x.HALF.HI, super->y.HALF.HI), super->collisionLayer); } void sub_080AA534(Entity* this) { diff --git a/src/projectile/rockProjectile.c b/src/projectile/rockProjectile.c index 70957e97f..7dc35d0c6 100644 --- a/src/projectile/rockProjectile.c +++ b/src/projectile/rockProjectile.c @@ -22,7 +22,7 @@ void RockProjectile_OnTick(Entity* this) { } void RockProjectile_OnCollision(Entity* this) { - if (this->contactFlags == 0x80) { + if (this->contactFlags == CONTACT_TAKE_DAMAGE) { DeleteEntity(this); } else { this->direction = this->knockbackDirection; @@ -43,7 +43,7 @@ void RockProjectile_Action1(Entity* this) { if (IsProjectileOffScreen(this)) { DeleteEntity(this); } else { - sub_08016AD2(this); + UpdateCollisionLayer(this); if (--this->timer == 0) { this->action = 3; } @@ -51,7 +51,7 @@ void RockProjectile_Action1(Entity* this) { } else { sub_0800417E(this, this->collisions); sub_080A8178(this); - sub_08016AD2(this); + UpdateCollisionLayer(this); } } diff --git a/src/projectile/spiderWeb.c b/src/projectile/spiderWeb.c index dca0bc9a9..c1cb7adc0 100644 --- a/src/projectile/spiderWeb.c +++ b/src/projectile/spiderWeb.c @@ -64,7 +64,7 @@ void SpiderWeb_OnCollision(SpiderWebEntity* this) { }; Entity* object; - if (super->contactFlags == 0x87) { + if (super->contactFlags == (CONTACT_TAKE_DAMAGE | 0x7)) { super->action = 3; super->timer = 90; COLLISION_OFF(super); @@ -246,7 +246,7 @@ void sub_080AA9E0(Entity* this) { void sub_080AAA68(Entity* this) { static const u16 typeTiles[] = { 16419, 16421, 16422, 16420 }; - SetTile(typeTiles[this->type], TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); + SetBottomTile(typeTiles[this->type], TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); } void sub_080AAAA8(SpiderWebEntity* this) { diff --git a/src/projectile/stalfosProjectile.c b/src/projectile/stalfosProjectile.c index ff776f2e2..660b8f5ca 100644 --- a/src/projectile/stalfosProjectile.c +++ b/src/projectile/stalfosProjectile.c @@ -35,7 +35,7 @@ void StalfosProjectile_OnTick(Entity* this) { } void StalfosProjectile_OnCollision(Entity* this) { - if (this->contactFlags == 0x9d) { + if (this->contactFlags == (CONTACT_TAKE_DAMAGE | 0x1d)) { this->action = 3; COLLISION_OFF(this); this->zVelocity = Q_16_16(2.625); diff --git a/src/projectile/v1DarkMagicProjectile.c b/src/projectile/v1DarkMagicProjectile.c index 248612e46..eb5f73ccd 100644 --- a/src/projectile/v1DarkMagicProjectile.c +++ b/src/projectile/v1DarkMagicProjectile.c @@ -43,7 +43,7 @@ void V1DarkMagicProjectile_OnTick(V1DarkMagicProjectileEntity* this) { } void V1DarkMagicProjectile_OnCollision(V1DarkMagicProjectileEntity* this) { - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { if (super->type2 == 0) { if ((super->contactFlags & 0x3f) == 0) { super->action = 2; diff --git a/src/projectile/v1FireProjectile.c b/src/projectile/v1FireProjectile.c index a0f89b5b9..661547ba0 100644 --- a/src/projectile/v1FireProjectile.c +++ b/src/projectile/v1FireProjectile.c @@ -31,7 +31,7 @@ void V1FireProjectile_OnTick(V1FireProjectileEntity* this) { } void V1FireProjectile_OnCollision(V1FireProjectileEntity* this) { - if ((super->contactFlags & 0x80) != 0) { + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) != 0) { super->action = 3; COLLISION_OFF(super); InitializeAnimation(super, 0x53); diff --git a/src/projectile/v2Projectile.c b/src/projectile/v2Projectile.c index e602c6f4e..8f7531c43 100644 --- a/src/projectile/v2Projectile.c +++ b/src/projectile/v2Projectile.c @@ -43,7 +43,7 @@ void V2Projectile_OnTick(V2ProjectileEntity* this) { } void V2Projectile_OnCollision(V2ProjectileEntity* this) { - if ((super->contactFlags & 0x80) == 0) + if ((super->contactFlags & CONTACT_TAKE_DAMAGE) == 0) return; switch (super->type) { diff --git a/src/projectile/windProjectile.c b/src/projectile/windProjectile.c index 499409f2f..2682b104f 100644 --- a/src/projectile/windProjectile.c +++ b/src/projectile/windProjectile.c @@ -64,7 +64,7 @@ void WindProjectile_Action2(Entity* this) { if (IsProjectileOffScreen(this)) { DeleteEntity(this); } else { - sub_08016AD2(this); + UpdateCollisionLayer(this); } } else { this->action = 3; diff --git a/src/projectile/winder.c b/src/projectile/winder.c index 5cbea5696..b8caaefb0 100644 --- a/src/projectile/winder.c +++ b/src/projectile/winder.c @@ -119,7 +119,7 @@ void Winder_SetPositions(WinderEntity* this) { bool32 Winder_CheckForRailings(WinderEntity* this, u32 dir) { u32 tile; u32 val; - LayerStruct* layer = GetLayerByIndex(super->collisionLayer); + LayerStruct* layer = GetTileBuffer(super->collisionLayer); u32 collisionData; tile = TILE(super->x.HALF.HI, super->y.HALF.HI); diff --git a/src/roomInit.c b/src/roomInit.c index 2f832223a..8c1b68993 100644 --- a/src/roomInit.c +++ b/src/roomInit.c @@ -807,10 +807,10 @@ extern EntityData gUnk_080D7D34; void sub_StateChange_GreatFairies_Exit(void) { if (GetInventoryValue(ITEM_FOURSWORD)) { - SetTile(0x4072, 0x14d, 1); - SetTile(0x4072, 0x10c, 1); - SetTile(0x4090, 0x14c, 1); - SetTile(0x4090, 0x18c, 1); + SetBottomTile(0x4072, 0x14d, 1); + SetBottomTile(0x4072, 0x10c, 1); + SetBottomTile(0x4090, 0x14c, 1); + SetBottomTile(0x4090, 0x18c, 1); LoadRoomEntityList(&gUnk_080D7D34); } } @@ -1051,8 +1051,8 @@ void sub_StateChange_RoyalValley_Main(void) { EnableRandomDrops(); sub_08059278(); - SetTile(0x4072, 0xa47, 1); - SetTile(0x4072, 0xc47, 1); + SetBottomTile(0x4072, 0xa47, 1); + SetBottomTile(0x4072, 0xc47, 1); if (CheckGlobalFlag(MAZE_CLEAR)) if (gRoomTransition.player_status.start_pos_x == 0x78 && gRoomTransition.player_status.start_pos_y == 0x278) @@ -4446,7 +4446,7 @@ void sub_0804E150(void) { uVar3 = 1 << gSave.global_progress; for (; pTileData[1] != 0; pTileData += 3) { if ((pTileData[0] & uVar3) != 0) { - SetTile(pTileData[2], pTileData[1], 1); + SetBottomTile(pTileData[2], pTileData[1], 1); } } if (CheckLocalFlag(SHOP05_OPEN) == 0) { @@ -4454,7 +4454,7 @@ void sub_0804E150(void) { uVar3 = 1 << gSave.global_progress; for (; pTileData[0] != 0; pTileData += 3) { if ((pTileData[0] & uVar3) != 0) { - SetTile(pTileData[2], pTileData[1], 1); + SetBottomTile(pTileData[2], pTileData[1], 1); } } } @@ -4463,7 +4463,7 @@ void sub_0804E150(void) { uVar3 = 1 << gSave.global_progress; for (; pTileData[0] != 0; pTileData += 3) { if ((pTileData[0] & uVar3) != 0) { - SetTile(pTileData[2], pTileData[1], 1); + SetBottomTile(pTileData[2], pTileData[1], 1); } } } @@ -5043,22 +5043,22 @@ void sub_StateChange_LakeHylia_Main(void) { if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { LoadRoomEntityList(&gUnk_080F3C44); } - SetTile(0x4091, 0x590, 1); - SetTile(0x4091, 0x591, 1); - SetTile(0x4091, 0x592, 1); - SetTile(0x4091, 0x593, 1); - SetTile(0x4091, 0x594, 1); - SetTile(0x4091, 0x5d0, 1); - SetTile(0x4091, 0x610, 1); - SetTile(0x4091, 0x650, 1); - SetTile(0x4091, 0x5d4, 1); - SetTile(0x4091, 0x614, 1); - SetTile(0x4091, 0x654, 1); - SetTile(0x4091, 0x690, 1); - SetTile(0x4091, 0x691, 1); - SetTile(0x4091, 0x692, 1); - SetTile(0x4091, 0x693, 1); - SetTile(0x4091, 0x694, 1); + SetBottomTile(0x4091, 0x590, 1); + SetBottomTile(0x4091, 0x591, 1); + SetBottomTile(0x4091, 0x592, 1); + SetBottomTile(0x4091, 0x593, 1); + SetBottomTile(0x4091, 0x594, 1); + SetBottomTile(0x4091, 0x5d0, 1); + SetBottomTile(0x4091, 0x610, 1); + SetBottomTile(0x4091, 0x650, 1); + SetBottomTile(0x4091, 0x5d4, 1); + SetBottomTile(0x4091, 0x614, 1); + SetBottomTile(0x4091, 0x654, 1); + SetBottomTile(0x4091, 0x690, 1); + SetBottomTile(0x4091, 0x691, 1); + SetBottomTile(0x4091, 0x692, 1); + SetBottomTile(0x4091, 0x693, 1); + SetBottomTile(0x4091, 0x694, 1); } u32 sub_unk3_LakeHylia_Beanstalk(void) { @@ -5733,8 +5733,8 @@ void sub_StateChange_HyruleField_LonLonRanch(void) { } if (!CheckKinstoneFused(KINSTONE_29)) { LoadRoomEntityList(&gUnk_080F7860); - SetTile(0x4072, 0xd88, 1); - SetTile(0x4096, 0xdc8, 1); + SetBottomTile(0x4072, 0xd88, 1); + SetBottomTile(0x4096, 0xdc8, 1); } if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { LoadRoomEntityList(&gUnk_080F78A0); diff --git a/src/scroll.c b/src/scroll.c index 7c30e7016..3baf20fb4 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -64,7 +64,7 @@ void sub_08080910(s32); extern u8 gMapDataTopSpecial[]; -extern const s8 gUnk_080169A4[]; +extern const s8 gShakeOffsets[]; void UpdateScroll(void) { static void (*const gUnk_0811E768[])(RoomControls*) = { @@ -350,8 +350,8 @@ void sub_08080040(RoomControls* controls) { void sub_08080108(RoomControls* controls) { controls->scrollSubAction = 4; - MemCopy(gMapBottom.mapData, gMapBottom.mapDataClone, sizeof(gMapBottom.mapData)); - MemCopy(gMapTop.mapData, gMapTop.mapDataClone, sizeof(gMapTop.mapData)); + MemCopy(gMapBottom.mapData, gMapBottom.mapDataOriginal, sizeof(gMapBottom.mapData)); + MemCopy(gMapTop.mapData, gMapTop.mapDataOriginal, sizeof(gMapTop.mapData)); sub_08080368(); gUnk_02034480.unk_00 = gUnk_0200B640; MemCopy(gUnk_02022830, gUnk_020246B0, 0x1800); @@ -422,8 +422,8 @@ u32 sub_08080278(void) { u16* ptr1 = (u16*)gUnk_02022830; u16* mapBottomData = gMapBottom.mapData; u16* mapTopData = gMapTop.mapData; - u16* mapBottomDataClone = gMapBottom.mapDataClone; - u16* mapTopDataClone = gMapTop.mapDataClone; + u16* mapBottomDataClone = gMapBottom.mapDataOriginal; + u16* mapTopDataClone = gMapTop.mapDataOriginal; u32 width = gRoomControls.width >> 4; u32 height = (gRoomControls.height >> 4) << 6; @@ -761,7 +761,7 @@ void sub_08080930(u32 unused) { SetInitializationPriority(); } -LayerStruct* GetLayerByIndex(u32 param_1) { +LayerStruct* GetTileBuffer(u32 param_1) { if (param_1 == 2) { return &gMapTop; } else { @@ -904,7 +904,7 @@ void sub_08080BC4(void) { tmpY = ((gRoomControls.scroll_y - gRoomControls.origin_y) & 0xf) + 8; if (gRoomControls.shake_duration != 0) { gRoomControls.shake_duration--; - ptr = &gUnk_080169A4[gRoomControls.shake_magnitude * 0x10 + (gRoomControls.shake_duration & 0xe)]; + ptr = &gShakeOffsets[gRoomControls.shake_magnitude * 0x10 + (gRoomControls.shake_duration & 0xe)]; if (gMapBottom.bgSettings != NULL) { gMapBottom.bgSettings->xOffset = ptr[0] + tmpX; gMapBottom.bgSettings->yOffset = ptr[1] + tmpY; diff --git a/src/text.c b/src/text.c index 6cadf99ca..b8ee31693 100644 --- a/src/text.c +++ b/src/text.c @@ -7,6 +7,8 @@ #include "message.h" #include "fileselect.h" +extern void UnpackTextNibbles(void*, u8*); + extern u8 gUnk_02036AD8; extern u8 gUnk_02036A58; @@ -609,19 +611,19 @@ u32 sub_0805F76C(u32 textIdOrPtr, WStruct* param_2) { } static u32 sub_0805F7A0(u32 param_1) { - u32 uVar1; - u32 uVar2; - u32 uVar3; + u32 mask; + u32 i; + u32 j; - uVar1 = 0xf; - for (uVar2 = 0; uVar2 < 8; uVar2++) { - if (uVar1 != (param_1 & uVar1)) + mask = 0xf; + for (i = 0; i < 8; i++) { + if (mask != (param_1 & mask)) break; - uVar1 <<= 4; + mask <<= 4; } - for (uVar3 = uVar2; (uVar2 < 8 && (uVar1 != (param_1 & uVar1))); uVar1 <<= 4, uVar2++) {} - uVar2 -= uVar3; - return (uVar2 << 8) | uVar3; + for (j = i; (i < 8 && (mask != (param_1 & mask))); mask <<= 4, i++) {} + i -= j; + return (i << 8) | j; } u32 sub_0805F7DC(u32 r0, WStruct* r1) { @@ -656,12 +658,12 @@ void sub_0805F820(WStruct* r0, u32* r1) { u32 uVar7; u8* puVar8; u8* temp; - void* temp2; + void* buffer_loc; VStruct* temp3; u32 temp4; if (r0->unk4 - r0->unk6 > 0) { - sub_08002724(r1, &gUnk_02036A58); + UnpackTextNibbles(r1, &gUnk_02036A58); if (r0->unk1 == 0) { u32 tmp = sub_0805F7A0(*r1); uVar6 = tmp & 0xf; @@ -680,7 +682,7 @@ void sub_0805F820(WStruct* r0, u32* r1) { } puVar8 = &gUnk_02036A58 + uVar6; - temp2 = r0->unk8; + buffer_loc = r0->unk8; temp = gUnk_0810942E[r0->bgColor].filler0[r0->charColor * 2]; uVar7 = r0->unk6; r0->unk6 += uVar3; @@ -688,13 +690,13 @@ void sub_0805F820(WStruct* r0, u32* r1) { temp4 = r0->unk04; if (temp4 != 1) { while (uVar3-- > 0) { - sub_080026C4(puVar8, temp2, temp, uVar7); + sub_080026C4(puVar8, buffer_loc, temp, uVar7); puVar8++; uVar7++; } } else { while (uVar3-- > 0) { - sub_080026F2(puVar8, temp2, temp, uVar7); + sub_080026F2(puVar8, buffer_loc, temp, uVar7); puVar8++; uVar7++; } @@ -730,7 +732,7 @@ void sub_0805F918(u32 idx, u32 idx2, void* dest) { idx3 = 0; for (i = 0; i < 3; i++) { puVar2 = &gUnk_02036A58; - sub_08002724(puVar1, &gUnk_02036A58); + UnpackTextNibbles(puVar1, &gUnk_02036A58); puVar1 += 0x40; for (j = 0; j < 8; j++) { diff --git a/src/worldEvent/worldEvent17.c b/src/worldEvent/worldEvent17.c index 9b96ecb4d..3541626d5 100644 --- a/src/worldEvent/worldEvent17.c +++ b/src/worldEvent/worldEvent17.c @@ -34,7 +34,7 @@ void sub_08054EB8(Entity* this, ScriptExecutionContext* context) { void sub_08054EFC(Entity* this, ScriptExecutionContext* context) { Entity* effect; u32 tmp = COORD_TO_TILE(this) - 0x40; - SetTile(0x4074, tmp, 1); + SetBottomTile(0x4074, tmp, 1); this->collisionLayer = 2; UpdateSpriteForCollisionLayer(this); effect = CreateFx(this, FX_BIG_EXPLOSION, 0);