diff --git a/asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc b/asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc deleted file mode 100644 index 04b7188c..00000000 --- a/asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc +++ /dev/null @@ -1,63 +0,0 @@ - .syntax unified - push {r4, r5, lr} - ldr r4, _0801A538 @ =gPlayerState - ldr r0, [r4, #0x30] - movs r5, #0x80 - ands r0, r5 - cmp r0, #0 - beq _0801A544 - movs r0, #0x45 - bl GetInventoryValue - cmp r0, #1 - bne _0801A564 - ldrb r1, [r4, #0xd] - adds r0, r5, #0 - ands r0, r1 - cmp r0, #0 - bne _0801A564 - ldr r2, _0801A53C @ =gPlayerEntity - ldrb r0, [r2, #0x15] - cmp r1, r0 - bne _0801A564 - ldrb r0, [r2, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - ldr r1, _0801A540 @ =gUnk_080B44A0 - lsrs r0, r0, #2 - adds r0, r0, r1 - ldrh r1, [r0] - ldrh r0, [r2, #0x2a] - b _0801A55E - .align 2, 0 -_0801A538: .4byte gPlayerState -_0801A53C: .4byte gPlayerEntity -_0801A540: .4byte gUnk_080B44A0 -_0801A544: - adds r0, r4, #0 - adds r0, #0x35 - ldrb r0, [r0] - ldrb r1, [r4, #0xd] - orrs r0, r1 - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0801A564 - ldr r0, _0801A568 @ =gPlayerEntity - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 -_0801A55E: - ands r0, r1 - cmp r0, #0 - bne _0801A56C -_0801A564: - movs r0, #0 - b _0801A56E - .align 2, 0 -_0801A568: .4byte gPlayerEntity -_0801A56C: - movs r0, #1 -_0801A56E: - pop {r4, r5, pc} - .syntax divided diff --git a/asm/non_matching/common/sub_0801DF28.inc b/asm/non_matching/common/sub_0801DF28.inc deleted file mode 100644 index 4d22a8f0..00000000 --- a/asm/non_matching/common/sub_0801DF28.inc +++ /dev/null @@ -1,28 +0,0 @@ - .syntax unified - push {r4, lr} - lsrs r4, r1, #3 - lsls r4, r4, #4 - lsrs r3, r0, #3 - adds r4, r4, r3 - lsls r4, r4, #5 - ldr r3, _0801DF58 @ =gUnk_0201AEE0 - adds r4, r4, r3 - movs r3, #7 - ands r1, r3 - lsls r1, r1, #2 - adds r4, r4, r1 - ands r0, r3 - lsls r0, r0, #2 - lsls r2, r0 - ldr r1, _0801DF5C @ =gUnk_080C9460 - adds r0, r0, r1 - ldr r1, [r4] - ldr r0, [r0] - ands r1, r0 - orrs r1, r2 - str r1, [r4] - pop {r4, pc} - .align 2, 0 -_0801DF58: .4byte gUnk_0201AEE0 -_0801DF5C: .4byte gUnk_080C9460 - .syntax divided diff --git a/asm/non_matching/common/sub_0801E738.inc b/asm/non_matching/common/sub_0801E738.inc deleted file mode 100644 index a6a3df28..00000000 --- a/asm/non_matching/common/sub_0801E738.inc +++ /dev/null @@ -1,51 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - bl sub_0801E82C - adds r0, r4, #0 - subs r0, #0x65 - cmp r0, #0x10 - bhi _0801E790 - adds r0, r4, #0 - bl sub_0801E8B0 - adds r1, r0, #0 - cmp r1, #0 - bge _0801E76E - movs r1, #0 - ldr r0, _0801E794 @ =gSave - movs r3, #0x8c - lsls r3, r3, #1 - adds r2, r0, r3 - ldrb r0, [r2] - cmp r0, #0 - beq _0801E76E -_0801E764: - adds r1, #1 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, #0 - bne _0801E764 -_0801E76E: - cmp r1, #0x11 - bhi _0801E790 - ldr r2, _0801E794 @ =gSave - movs r3, #0x8c - lsls r3, r3, #1 - adds r0, r2, r3 - adds r0, r1, r0 - strb r4, [r0] - adds r3, #0x13 - adds r0, r2, r3 - adds r1, r1, r0 - ldrb r0, [r1] - adds r0, #1 - cmp r0, #0x63 - ble _0801E78E - movs r0, #0x63 -_0801E78E: - strb r0, [r1] -_0801E790: - pop {r4, pc} - .align 2, 0 -_0801E794: .4byte gSave - .syntax divided diff --git a/asm/non_matching/game/sub_08053894.inc b/asm/non_matching/game/sub_08053894.inc deleted file mode 100644 index bff018b4..00000000 --- a/asm/non_matching/game/sub_08053894.inc +++ /dev/null @@ -1,57 +0,0 @@ - .syntax unified - push {r4, lr} - ldr r0, _080538B4 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080538F8 - ldr r1, _080538B8 @ =gMenu - ldrh r0, [r1, #8] - subs r0, #1 - strh r0, [r1, #8] - ldrh r0, [r1, #0xa] - adds r4, r1, #0 - cmp r0, #0 - beq _080538BC - subs r0, #1 - strh r0, [r4, #0xa] - b _080538E4 - .align 2, 0 -_080538B4: .4byte gFadeControl -_080538B8: .4byte gMenu -_080538BC: - ldr r0, _080538FC @ =gRoomTransition - ldr r0, [r0] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - bne _080538E4 - ldrb r1, [r4, #7] - cmp r1, #0xf - bhi _080538E4 - adds r1, #1 - strb r1, [r4, #7] - lsls r1, r1, #0x18 - ldr r3, _08053900 @ =gScreen - lsrs r2, r1, #0x10 - lsrs r1, r1, #0x19 - movs r0, #0x10 - subs r0, r0, r1 - orrs r2, r0 - adds r3, #0x68 - strh r2, [r3] -_080538E4: - ldrh r0, [r4, #8] - cmp r0, #0 - bne _080538F8 - ldrb r0, [r4, #6] - adds r0, #1 - strb r0, [r4, #6] - movs r0, #5 - movs r1, #8 - bl SetFade -_080538F8: - pop {r4, pc} - .align 2, 0 -_080538FC: .4byte gRoomTransition -_08053900: .4byte gScreen - .syntax divided diff --git a/asm/non_matching/game/sub_08053904.inc b/asm/non_matching/game/sub_08053904.inc deleted file mode 100644 index 7d29702e..00000000 --- a/asm/non_matching/game/sub_08053904.inc +++ /dev/null @@ -1,57 +0,0 @@ - .syntax unified - push {r4, lr} - ldr r0, _08053924 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _08053968 - ldr r1, _08053928 @ =gMenu - ldrh r0, [r1, #8] - subs r0, #1 - strh r0, [r1, #8] - ldrh r0, [r1, #0xa] - adds r4, r1, #0 - cmp r0, #0 - beq _0805392C - subs r0, #1 - strh r0, [r4, #0xa] - b _08053954 - .align 2, 0 -_08053924: .4byte gFadeControl -_08053928: .4byte gMenu -_0805392C: - ldr r0, _0805396C @ =gRoomTransition - ldr r0, [r0] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - bne _08053954 - ldrb r1, [r4, #7] - cmp r1, #0xf - bhi _08053954 - adds r1, #1 - strb r1, [r4, #7] - lsls r1, r1, #0x18 - ldr r3, _08053970 @ =gScreen - lsrs r2, r1, #0x10 - lsrs r1, r1, #0x19 - movs r0, #0x10 - subs r0, r0, r1 - orrs r2, r0 - adds r3, #0x68 - strh r2, [r3] -_08053954: - ldrh r0, [r4, #8] - cmp r0, #0 - bne _08053968 - ldrb r0, [r4, #6] - adds r0, #1 - strb r0, [r4, #6] - movs r0, #5 - movs r1, #1 - bl SetFade -_08053968: - pop {r4, pc} - .align 2, 0 -_0805396C: .4byte gRoomTransition -_08053970: .4byte gScreen - .syntax divided diff --git a/asm/non_matching/game/sub_08053CC8.inc b/asm/non_matching/game/sub_08053CC8.inc deleted file mode 100644 index 3967ecf0..00000000 --- a/asm/non_matching/game/sub_08053CC8.inc +++ /dev/null @@ -1,47 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - ldr r6, _08053D20 @ =gMenu - ldrb r4, [r6, #3] - lsls r4, r4, #4 - ldr r0, _08053D24 @ =gUnk_080FCF04 - adds r4, r4, r0 - adds r0, r4, #0 - adds r0, #8 - str r0, [r6, #0xc] - ldr r0, [r4] - bl LoadRoomEntityList - ldrb r0, [r4, #4] - ldrb r1, [r4, #5] - movs r2, #1 - bl GetRoomProperty - bl LoadRoomEntityList - ldrb r0, [r4, #4] - ldrb r1, [r4, #5] - movs r2, #2 - bl GetRoomProperty - bl LoadRoomEntityList - movs r5, #1 - strb r5, [r6, #6] - ldr r2, _08053D28 @ =gScreen - ldrh r1, [r2] - ldr r0, _08053D2C @ =0x0000FEFF - ands r0, r1 - strh r0, [r2] - ldr r0, _08053D30 @ =gUpdateVisibleTiles - strb r5, [r0] - movs r0, #4 - movs r1, #0x10 - bl SetFade - ldrb r0, [r4, #5] - cmp r0, #0x1d - bne _08053D1E - strh r5, [r6, #0xa] -_08053D1E: - pop {r4, r5, r6, pc} - .align 2, 0 -_08053D20: .4byte gMenu -_08053D24: .4byte gUnk_080FCF04 -_08053D28: .4byte gScreen -_08053D2C: .4byte 0x0000FEFF -_08053D30: .4byte gUpdateVisibleTiles - .syntax divided diff --git a/asm/non_matching/game/sub_0805488C.inc b/asm/non_matching/game/sub_0805488C.inc deleted file mode 100644 index 408fe38a..00000000 --- a/asm/non_matching/game/sub_0805488C.inc +++ /dev/null @@ -1,40 +0,0 @@ - .syntax unified - push {r4, lr} - ldr r4, _080548DC @ =gUI - ldrb r1, [r4, #3] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, _080548E0 @ =gUnk_080FE320 - adds r0, r0, r1 - ldr r2, _080548E4 @ =gMenu - ldrb r1, [r0] - movs r3, #0 - strb r1, [r2] - ldrb r1, [r0, #1] - strb r1, [r2, #3] - ldrb r1, [r4, #3] - strb r1, [r2, #4] - str r0, [r2, #0xc] - ldrb r0, [r2, #5] - adds r0, #1 - strb r0, [r2, #5] - strb r3, [r2, #6] - movs r0, #0x96 - lsls r0, r0, #1 - strh r0, [r2, #8] - movs r0, #0 - bl DispReset - ldrb r0, [r4, #3] - movs r1, #1 - bl sub_08054974 - bl sub_0806F364 - movs r0, #0xff - bl ClearRoomFlag - bl sub_080548E8 - pop {r4, pc} - .align 2, 0 -_080548DC: .4byte gUI -_080548E0: .4byte gUnk_080FE320 -_080548E4: .4byte gMenu - .syntax divided diff --git a/asm/non_matching/game/sub_08054920.inc b/asm/non_matching/game/sub_08054920.inc deleted file mode 100644 index a7962390..00000000 --- a/asm/non_matching/game/sub_08054920.inc +++ /dev/null @@ -1,33 +0,0 @@ - .syntax unified - push {lr} - bl MessageInitialize - bl sub_0806F38C - ldr r1, _08054948 @ =gUnk_080C9CBC - ldr r0, _0805494C @ =gFuseInfo - ldrb r0, [r0, #3] - lsls r0, r0, #3 - adds r0, r0, r1 - ldrb r0, [r0, #7] - cmp r0, #0 - beq _08054954 - ldr r0, _08054950 @ =gUI - ldrb r1, [r0, #3] - movs r0, #0xa - bl MenuFadeIn - b _08054962 - .align 2, 0 -_08054948: .4byte gUnk_080C9CBC -_0805494C: .4byte gFuseInfo -_08054950: .4byte gUI -_08054954: - ldr r1, _08054964 @ =gUI - movs r0, #3 - strb r0, [r1] - movs r0, #7 - movs r1, #0x10 - bl SetFade -_08054962: - pop {pc} - .align 2, 0 -_08054964: .4byte gUI - .syntax divided diff --git a/asm/non_matching/game/sub_08054974.inc b/asm/non_matching/game/sub_08054974.inc deleted file mode 100644 index 4e8e998a..00000000 --- a/asm/non_matching/game/sub_08054974.inc +++ /dev/null @@ -1,70 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r5, r1, #0 - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _080549B0 @ =gUnk_080FE320 - adds r6, r1, r0 - ldrb r0, [r6, #2] - ldrb r1, [r6, #3] - bl SetCurrentRoomPropertyList - ldr r4, _080549B4 @ =gRoomControls - ldrb r0, [r6, #2] - strb r0, [r4, #4] - ldrb r0, [r6, #3] - strb r0, [r4, #5] - bl LoadGfxGroups - ldrb r0, [r4, #4] - bl GetFlagBankOffset - ldr r1, _080549B8 @ =gArea - strh r0, [r1, #4] - cmp r5, #0 - beq _080549BC - ldrb r0, [r6, #2] - ldrb r1, [r6, #3] - bl LoadAuxiliaryRoom - b _080549CE - .align 2, 0 -_080549B0: .4byte gUnk_080FE320 -_080549B4: .4byte gRoomControls -_080549B8: .4byte gArea -_080549BC: - ldrb r0, [r6, #2] - ldrb r1, [r6, #3] - bl sub_08052FF4 - bl InitializeCamera - ldr r1, _08054A00 @ =gUpdateVisibleTiles - movs r0, #1 - strb r0, [r1] -_080549CE: - ldr r2, _08054A04 @ =gScreen - ldrh r1, [r2] - ldr r0, _08054A08 @ =0x00001FFF - ands r0, r1 - strh r0, [r2] - ldr r1, _08054A0C @ =gRoomControls - ldrh r0, [r6, #4] - ldrh r2, [r1, #6] - adds r0, r0, r2 - strh r0, [r1, #0xa] - ldrh r0, [r6, #6] - ldrh r2, [r1, #8] - adds r0, r0, r2 - strh r0, [r1, #0xc] - ldrb r0, [r6, #2] - cmp r0, #2 - bne _080549F4 - bl TryLoadPrologueHyruleTown -_080549F4: - ldr r0, _08054A10 @ =gUI - ldrb r0, [r0, #3] - bl sub_08018710 - pop {r4, r5, r6, pc} - .align 2, 0 -_08054A00: .4byte gUpdateVisibleTiles -_08054A04: .4byte gScreen -_08054A08: .4byte 0x00001FFF -_08054A0C: .4byte gRoomControls -_08054A10: .4byte gUI - .syntax divided diff --git a/asm/non_matching/game/sub_08054A14.inc b/asm/non_matching/game/sub_08054A14.inc deleted file mode 100644 index 85c471aa..00000000 --- a/asm/non_matching/game/sub_08054A14.inc +++ /dev/null @@ -1,22 +0,0 @@ - .syntax unified - push {lr} - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _08054A38 @ =gUnk_080FE320 - adds r2, r1, r0 - ldrb r0, [r2, #0x11] - cmp r0, #0xd - bhi _08054A34 - ldr r1, _08054A3C @ =gLocalFlagBanks - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - ldrh r1, [r2, #0x12] - bl SetLocalFlagByBank -_08054A34: - pop {pc} - .align 2, 0 -_08054A38: .4byte gUnk_080FE320 -_08054A3C: .4byte gLocalFlagBanks - .syntax divided diff --git a/asm/non_matching/gorman/sub_0806991C.inc b/asm/non_matching/gorman/sub_0806991C.inc deleted file mode 100644 index d4115e2b..00000000 --- a/asm/non_matching/gorman/sub_0806991C.inc +++ /dev/null @@ -1,69 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r1, #0 - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x3c - adds r1, r5, #0 - adds r1, #0x68 - movs r3, #0 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x69 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r1, r1, #2 - ldr r0, _0806999C @ =gUnk_08111C5C - adds r1, r1, r0 - ldr r2, _080699A0 @ =gRoomControls - ldrh r0, [r1] - ldrh r6, [r2, #6] - adds r0, r0, r6 - strh r0, [r4, #0x1e] - ldrh r0, [r1, #2] - ldrh r2, [r2, #8] - adds r0, r0, r2 - strh r0, [r4, #0x22] - movs r0, #8 - strb r0, [r4, #0x19] - ldr r0, [r4, #8] - movs r1, #2 - orrs r0, r1 - str r0, [r4, #8] - str r3, [r4, #0x14] - movs r1, #0x1e - ldrsh r0, [r4, r1] - movs r2, #0x2e - ldrsh r1, [r5, r2] - subs r0, r0, r1 - movs r3, #0x22 - ldrsh r1, [r4, r3] - movs r6, #0x32 - ldrsh r2, [r5, r6] - subs r1, r1, r2 - bl sub_080045DA - strb r0, [r5, #0x15] - ldrb r2, [r5, #0x14] - movs r1, #0x80 - ands r1, r2 - ldr r2, _080699A4 @ =gUnk_08111C74 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1c - adds r0, r0, r2 - ldrb r0, [r0] - orrs r1, r0 - strb r1, [r5, #0x14] - ldr r2, _080699A8 @ =gActiveScriptInfo - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] - pop {r4, r5, r6, pc} - .align 2, 0 -_0806999C: .4byte gUnk_08111C5C -_080699A0: .4byte gRoomControls -_080699A4: .4byte gUnk_08111C74 -_080699A8: .4byte gActiveScriptInfo - .syntax divided diff --git a/asm/non_matching/gorman/sub_080699AC.inc b/asm/non_matching/gorman/sub_080699AC.inc deleted file mode 100644 index db5408e0..00000000 --- a/asm/non_matching/gorman/sub_080699AC.inc +++ /dev/null @@ -1,69 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r1, #0 - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x3c - adds r1, r5, #0 - adds r1, #0x68 - movs r3, #0 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x69 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r1, r1, #2 - ldr r0, _08069A2C @ =gUnk_08111C84 - adds r1, r1, r0 - ldr r2, _08069A30 @ =gRoomControls - ldrh r0, [r1] - ldrh r6, [r2, #6] - adds r0, r0, r6 - strh r0, [r4, #0x1e] - ldrh r0, [r1, #2] - ldrh r2, [r2, #8] - adds r0, r0, r2 - strh r0, [r4, #0x22] - movs r0, #8 - strb r0, [r4, #0x19] - ldr r0, [r4, #8] - movs r1, #2 - orrs r0, r1 - str r0, [r4, #8] - str r3, [r4, #0x14] - movs r1, #0x1e - ldrsh r0, [r4, r1] - movs r2, #0x2e - ldrsh r1, [r5, r2] - subs r0, r0, r1 - movs r3, #0x22 - ldrsh r1, [r4, r3] - movs r6, #0x32 - ldrsh r2, [r5, r6] - subs r1, r1, r2 - bl sub_080045DA - strb r0, [r5, #0x15] - ldrb r2, [r5, #0x14] - movs r1, #0x80 - ands r1, r2 - ldr r2, _08069A34 @ =gUnk_08111C8C - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1c - adds r0, r0, r2 - ldrb r0, [r0] - orrs r1, r0 - strb r1, [r5, #0x14] - ldr r2, _08069A38 @ =gActiveScriptInfo - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] - pop {r4, r5, r6, pc} - .align 2, 0 -_08069A2C: .4byte gUnk_08111C84 -_08069A30: .4byte gRoomControls -_08069A34: .4byte gUnk_08111C8C -_08069A38: .4byte gActiveScriptInfo - .syntax divided diff --git a/asm/non_matching/gyorgTail/sub_080AC760.inc b/asm/non_matching/gyorgTail/sub_080AC760.inc deleted file mode 100644 index 36c76ada..00000000 --- a/asm/non_matching/gyorgTail/sub_080AC760.inc +++ /dev/null @@ -1,59 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r6, r0, #0 - ldr r4, [r6, #0x54] - ldrb r0, [r4, #0x15] - ldrb r3, [r6, #0x15] - subs r2, r0, r3 - movs r1, #0xff - ands r2, r1 - adds r0, r2, #0 - adds r0, #8 - ands r0, r1 - cmp r0, #0x10 - ble _080AC78A - cmp r2, #0x80 - ble _080AC784 - adds r0, r3, #0 - subs r0, #8 - b _080AC788 -_080AC784: - adds r0, r3, #0 - adds r0, #8 -_080AC788: - strb r0, [r4, #0x15] -_080AC78A: - ldr r5, [r4, #0x54] - ldr r0, [r5, #0x54] - cmp r0, #0 - bne _080AC79C - ldr r0, [r6, #0x50] - ldrb r0, [r0, #0x14] - movs r1, #0x80 - eors r0, r1 - b _080AC7BE -_080AC79C: - ldrb r0, [r5, #0x15] - ldrb r3, [r4, #0x15] - subs r2, r0, r3 - movs r1, #0xff - ands r2, r1 - adds r0, r2, #0 - adds r0, #8 - ands r0, r1 - cmp r0, #0x10 - ble _080AC7C0 - cmp r2, #0x80 - ble _080AC7BA - adds r0, r3, #0 - subs r0, #8 - b _080AC7BE -_080AC7BA: - adds r0, r3, #0 - adds r0, #8 -_080AC7BE: - strb r0, [r5, #0x15] -_080AC7C0: - pop {r4, r5, r6, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/itemTryPickupObject/sub_08076518.inc b/asm/non_matching/itemTryPickupObject/sub_08076518.inc deleted file mode 100644 index d05babbf..00000000 --- a/asm/non_matching/itemTryPickupObject/sub_08076518.inc +++ /dev/null @@ -1,98 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r4, r0, #0 - mov r8, r1 - bl PlayerTryDropObject - cmp r0, #0 - beq _080765D4 - ldr r5, _0807655C @ =gPlayerState - adds r1, r5, #0 - adds r1, #0xa8 - movs r0, #4 - strb r0, [r1] - ldrb r1, [r5, #2] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080765D4 - ldrb r0, [r5, #0x1f] - cmp r0, #0 - bne _080765D4 - ldr r6, _08076560 @ =gPlayerEntity - adds r0, r6, #0 - adds r0, #0x42 - ldrb r7, [r0] - cmp r7, #0 - beq _08076564 - adds r0, r4, #0 - mov r1, r8 - bl PlayerCancelHoldItem - b _080765D4 - .align 2, 0 -_0807655C: .4byte gPlayerState -_08076560: .4byte gPlayerEntity -_08076564: - adds r0, r5, #0 - adds r0, #0x92 - ldrh r1, [r0] - ldr r0, _080765B0 @ =0x00008018 - ands r0, r1 - cmp r0, #0 - beq _080765D4 - adds r0, r6, #0 - bl sub_0806F948 - movs r0, #5 - strb r0, [r5, #5] - ldr r1, [r4, #0x18] - movs r0, #2 - strb r0, [r1, #0xd] - ldr r2, [r4, #0x18] - ldrb r1, [r6, #0x14] - movs r0, #0xe - ands r0, r1 - lsls r0, r0, #2 - strb r0, [r2, #0x15] - str r7, [r4, #0x18] - ldrb r0, [r4, #4] - adds r0, #1 - strb r0, [r4, #4] - movs r0, #0xf - strb r0, [r4, #0xf] - ldr r0, [r5, #0x30] - movs r1, #8 - ands r0, r1 - cmp r0, #0 - beq _080765B4 - movs r1, #0x93 - lsls r1, r1, #4 - adds r0, r4, #0 - bl sub_08077DF4 - b _080765BE - .align 2, 0 -_080765B0: .4byte 0x00008018 -_080765B4: - movs r1, #0xd1 - lsls r1, r1, #2 - adds r0, r4, #0 - bl sub_08077DF4 -_080765BE: - ldr r2, _080765DC @ =gPlayerState - movs r1, #8 - mov r0, r8 - asrs r1, r0 - ldrb r3, [r2, #0xa] - adds r0, r1, #0 - orrs r0, r3 - strb r0, [r2, #0xa] - ldrb r0, [r2, #0xb] - orrs r1, r0 - strb r1, [r2, #0xb] -_080765D4: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080765DC: .4byte gPlayerState - .syntax divided diff --git a/asm/non_matching/menu/kinstone_menu/sub_080A3B48.inc b/asm/non_matching/menu/kinstone_menu/sub_080A3B48.inc deleted file mode 100644 index aabfe091..00000000 --- a/asm/non_matching/menu/kinstone_menu/sub_080A3B48.inc +++ /dev/null @@ -1,24 +0,0 @@ - .syntax unified - push {lr} - movs r1, #0 - ldr r0, _080A3B6C @ =gSave - ldr r3, _080A3B70 @ =0x0000012B - adds r2, r0, r3 - ldrb r0, [r2] - cmp r0, #0 - beq _080A3B66 -_080A3B58: - adds r1, #1 - cmp r1, #0x12 - bhi _080A3B66 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, #0 - bne _080A3B58 -_080A3B66: - adds r0, r1, #0 - pop {pc} - .align 2, 0 -_080A3B6C: .4byte gSave -_080A3B70: .4byte 0x0000012B - .syntax divided diff --git a/asm/non_matching/minishEzlo/MinishEzlo_Head.inc b/asm/non_matching/minishEzlo/MinishEzlo_Head.inc deleted file mode 100644 index f0742d98..00000000 --- a/asm/non_matching/minishEzlo/MinishEzlo_Head.inc +++ /dev/null @@ -1,54 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _08063006 - movs r6, #1 - movs r5, #0 - b _0806300A -_08063006: - movs r6, #0 - movs r5, #1 -_0806300A: - adds r0, r4, #0 - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #8 - ands r0, r1 - movs r7, #0x8e - lsls r7, r7, #1 - cmp r0, #0 - beq _0806301E - movs r7, #0x16 -_0806301E: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r2, [r0] - movs r0, #0x81 - rsbs r0, r0, #0 - ands r2, r0 - subs r2, #1 - adds r0, r4, #0 - adds r1, r6, #0 - bl SetExtraSpriteFrame - ldrb r2, [r4, #0x1e] - adds r0, r4, #0 - adds r1, r5, #0 - bl SetExtraSpriteFrame - adds r0, r4, #0 - adds r1, r5, #0 - adds r2, r7, #0 - bl sub_0806FF10 - adds r0, r4, #0 - adds r1, r5, #0 - adds r2, r6, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/GetSurfaceCalcType.inc b/asm/non_matching/playerUtils/GetSurfaceCalcType.inc deleted file mode 100644 index 417c1312..00000000 --- a/asm/non_matching/playerUtils/GetSurfaceCalcType.inc +++ /dev/null @@ -1,88 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - adds r6, r1, #0 - mov r8, r2 - movs r1, #0x2e - ldrsh r0, [r5, r1] - adds r0, r0, r6 - ldr r2, _0807A288 @ =gRoomControls - ldrh r1, [r2, #6] - subs r1, r0, r1 - lsrs r4, r1, #4 - movs r3, #0x3f - ands r4, r3 - movs r7, #0x32 - ldrsh r1, [r5, r7] - add r1, r8 - ldrh r2, [r2, #8] - subs r2, r1, r2 - asrs r2, r2, #4 - ands r2, r3 - lsls r2, r2, #6 - orrs r4, r2 - ldr r2, _0807A28C @ =gPlayerEntity - adds r2, #0x38 - ldrb r2, [r2] - bl GetTileTypeByPos - adds r2, r0, #0 - ldr r1, _0807A290 @ =gPlayerState - ldrh r0, [r1, #0x24] - cmp r2, r0 - beq _0807A23A - adds r3, r1, #0 - adds r3, #0x37 - movs r0, #0 - strb r0, [r3] - ldrh r7, [r1, #0x24] - cmp r2, r7 - bne _0807A242 -_0807A23A: - adds r3, r1, #0 - ldrh r0, [r3, #0x22] - cmp r4, r0 - beq _0807A24E -_0807A242: - ldr r0, _0807A290 @ =gPlayerState - movs r1, #0 - strh r4, [r0, #0x22] - strh r2, [r0, #0x24] - strb r1, [r0, #0x11] - adds r3, r0, #0 -_0807A24E: - adds r2, r3, #0 - ldrb r1, [r2, #0x11] - adds r0, r1, #0 - cmp r0, #0xff - beq _0807A25C - adds r0, r1, #1 - strb r0, [r2, #0x11] -_0807A25C: - adds r2, #0x37 - ldrb r1, [r2] - adds r0, r1, #0 - cmp r0, #0xff - beq _0807A26A - adds r0, r1, #1 - strb r0, [r2] -_0807A26A: - ldrb r0, [r3, #0x12] - strb r0, [r3, #0x13] - adds r0, r5, #0 - adds r1, r6, #0 - mov r2, r8 - bl GetRelativeCollisionTile - adds r2, r0, #0 - ldr r1, _0807A294 @ =gUnk_08007CAC - bl sub_08007DD6 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0807A288: .4byte gRoomControls -_0807A28C: .4byte gPlayerEntity -_0807A290: .4byte gPlayerState -_0807A294: .4byte gUnk_08007CAC - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_080782C0.inc b/asm/non_matching/playerUtils/sub_080782C0.inc deleted file mode 100644 index bc836d54..00000000 --- a/asm/non_matching/playerUtils/sub_080782C0.inc +++ /dev/null @@ -1,238 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - ldr r1, _080782D8 @ =gPlayerState - adds r2, r1, #0 - adds r2, #0xa8 - ldrb r0, [r2] - adds r4, r1, #0 - cmp r0, #0 - bne _080782DC - adds r0, r4, #0 - adds r0, #0xa9 - ldrb r0, [r0] - b _080782DE - .align 2, 0 -_080782D8: .4byte gPlayerState -_080782DC: - ldrb r0, [r2] -_080782DE: - subs r0, #2 - cmp r0, #0x14 - bhi _08078348 - lsls r0, r0, #2 - ldr r1, _080782F0 @ =_080782F4 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080782F0: .4byte _080782F4 -_080782F4: @ jump table - .4byte _080784AC @ case 0 - .4byte _080784AC @ case 1 - .4byte _08078348 @ case 2 - .4byte _08078348 @ case 3 - .4byte _08078348 @ case 4 - .4byte _08078348 @ case 5 - .4byte _08078348 @ case 6 - .4byte _08078348 @ case 7 - .4byte _08078348 @ case 8 - .4byte _08078348 @ case 9 - .4byte _080784AC @ case 10 - .4byte _08078348 @ case 11 - .4byte _08078348 @ case 12 - .4byte _08078348 @ case 13 - .4byte _08078348 @ case 14 - .4byte _08078348 @ case 15 - .4byte _080784AC @ case 16 - .4byte _08078348 @ case 17 - .4byte _08078348 @ case 18 - .4byte _080784AC @ case 19 - .4byte _080784AC @ case 20 -_08078348: - adds r0, r4, #0 - adds r0, #0x27 - adds r2, r4, #0 - adds r2, #0x26 - ldrb r1, [r0] - ldrb r0, [r2] - orrs r0, r1 - cmp r0, #0 - beq _0807835C - b _080784AC -_0807835C: - ldrb r0, [r4, #0x12] - cmp r0, #1 - bne _08078376 - ldrb r0, [r4, #0x14] - cmp r0, #0 - bne _0807836A - b _080784AC -_0807836A: - bl CanDispEzloMessage - cmp r0, #0 - beq _08078374 - b _080784C4 -_08078374: - b _080784AC -_08078376: - ldr r0, [r4, #0x30] - movs r1, #0x80 - lsls r1, r1, #7 - ands r0, r1 - cmp r0, #0 - beq _08078384 - b _080784AC -_08078384: - bl CanDispEzloMessage - cmp r0, #0 - beq _0807838E - b _080784C4 -_0807838E: - bl sub_080784E4 - ldr r6, [r0, #8] - cmp r6, #0 - bne _0807839A - b _080784AC -_0807839A: - ldrb r0, [r4, #5] - cmp r0, #0 - beq _080783B6 - cmp r0, #4 - beq _080783A6 - b _080784AC -_080783A6: - ldr r0, _08078400 @ =gPlayerEntity - ldr r0, [r0, #0x74] - ldr r0, [r0, #0x54] - ldrh r1, [r0, #8] - ldr r0, _08078404 @ =0x00000206 - cmp r1, r0 - beq _080783B6 - b _080784AC -_080783B6: - ldr r2, _08078408 @ =gPlayerState - adds r0, r2, #0 - adds r0, #0x92 - ldrh r1, [r0] - movs r0, #0x80 - lsls r0, r0, #5 - ands r0, r1 - adds r4, r2, #0 - cmp r0, #0 - beq _0807842C - ldr r5, _0807840C @ =gUnk_03003DF0 - ldr r0, [r5, #4] - ldrb r0, [r0, #3] - subs r0, #1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x63 - bhi _0807842C - movs r0, #0 - bl sub_0801E738 - ldr r0, _08078410 @ =gSave - ldr r1, _08078414 @ =0x0000012B - adds r0, r0, r1 - ldrb r0, [r0] - cmp r0, #0 - beq _08078418 - ldr r1, [r5, #4] - ldrb r0, [r1, #3] - strb r0, [r5, #2] - ldr r0, [r1, #8] - adds r0, #0x39 - movs r1, #2 - strb r1, [r0] - movs r0, #7 - strb r0, [r4, #0xc] - b _08078420 - .align 2, 0 -_08078400: .4byte gPlayerEntity -_08078404: .4byte 0x00000206 -_08078408: .4byte gPlayerState -_0807840C: .4byte gUnk_03003DF0 -_08078410: .4byte gSave -_08078414: .4byte 0x0000012B -_08078418: - ldr r0, _08078428 @ =0x00000B65 - movs r1, #0 - bl CreateEzloHint -_08078420: - movs r0, #0x13 - bl ForceSetPlayerState - b _080784C4 - .align 2, 0 -_08078428: .4byte 0x00000B65 -_0807842C: - adds r0, r4, #0 - adds r0, #0x92 - ldrh r1, [r0] - movs r0, #0x88 - ands r0, r1 - cmp r0, #0 - beq _080784AC - ldr r0, _08078450 @ =gUnk_03003DF0 - ldr r0, [r0, #4] - ldrb r0, [r0, #1] - cmp r0, #0xa - bhi _080784C4 - lsls r0, r0, #2 - ldr r1, _08078454 @ =_08078458 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08078450: .4byte gUnk_03003DF0 -_08078454: .4byte _08078458 -_08078458: @ jump table - .4byte _080784C4 @ case 0 - .4byte _08078484 @ case 1 - .4byte _080784C4 @ case 2 - .4byte _0807848E @ case 3 - .4byte _080784C4 @ case 4 - .4byte _0807848E @ case 5 - .4byte _08078484 @ case 6 - .4byte _0807848E @ case 7 - .4byte _080784A4 @ case 8 - .4byte _08078484 @ case 9 - .4byte _08078484 @ case 10 -_08078484: - movs r0, #7 - strb r0, [r4, #0xc] - movs r0, #0x13 - bl ForceSetPlayerState -_0807848E: - adds r1, r6, #0 - adds r1, #0x39 - movs r2, #0 - movs r0, #1 - strb r0, [r1] - ldr r0, _080784A0 @ =gUnk_03003DF0 - strb r2, [r0, #2] - b _080784C4 - .align 2, 0 -_080784A0: .4byte gUnk_03003DF0 -_080784A4: - ldr r2, _080784B0 @ =gRoomVars - ldrb r0, [r2, #6] - cmp r0, #0 - beq _080784B4 -_080784AC: - movs r0, #0 - b _080784C6 - .align 2, 0 -_080784B0: .4byte gRoomVars -_080784B4: - adds r1, r6, #0 - adds r1, #0x39 - movs r0, #1 - strb r0, [r1] - ldrb r0, [r6, #0xa] - strb r0, [r2, #6] - ldrb r0, [r6, #0xb] - strb r0, [r2, #7] -_080784C4: - movs r0, #1 -_080784C6: - pop {r4, r5, r6, pc} - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_080793E4.inc b/asm/non_matching/playerUtils/sub_080793E4.inc deleted file mode 100644 index fcbb28e5..00000000 --- a/asm/non_matching/playerUtils/sub_080793E4.inc +++ /dev/null @@ -1,57 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, _080793FC @ =gPlayerState - adds r0, #0x26 - ldrb r0, [r0] - cmp r0, #0 - bne _08079408 - ldr r1, _08079400 @ =gUnk_0811C0F8 - ldr r0, _08079404 @ =gPlayerEntity - ldrb r0, [r0, #0x14] - lsrs r0, r0, #1 - b _08079410 - .align 2, 0 -_080793FC: .4byte gPlayerState -_08079400: .4byte gUnk_0811C0F8 -_08079404: .4byte gPlayerEntity -_08079408: - ldr r1, _08079448 @ =gUnk_0811C0F8 - ldr r0, _0807944C @ =gPlayerEntity - ldrb r0, [r0, #0x15] - lsrs r0, r0, #2 -_08079410: - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r4, [r0] - bl sub_08079778 - cmp r0, #0 - beq _08079454 - ldr r0, _08079450 @ =gPlayerState - adds r0, #0x90 - ldrh r0, [r0] - ands r0, r4 - cmp r0, #0 - beq _08079454 - cmp r5, #0 - beq _08079442 - bl sub_0807A500 - ldr r1, _0807944C @ =gPlayerEntity - adds r1, #0x38 - ldrb r1, [r1] - adds r2, r5, #0 - bl sub_080B1BA4 - cmp r0, #0 - beq _08079454 -_08079442: - movs r0, #1 - b _08079456 - .align 2, 0 -_08079448: .4byte gUnk_0811C0F8 -_0807944C: .4byte gPlayerEntity -_08079450: .4byte gPlayerState -_08079454: - movs r0, #0 -_08079456: - pop {r4, r5, pc} - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_08079778.inc b/asm/non_matching/playerUtils/sub_08079778.inc deleted file mode 100644 index 825cfb5c..00000000 --- a/asm/non_matching/playerUtils/sub_08079778.inc +++ /dev/null @@ -1,38 +0,0 @@ - .syntax unified - push {lr} - ldr r0, _08079790 @ =gPlayerState - adds r0, #0x26 - ldrb r0, [r0] - cmp r0, #0 - bne _0807979C - ldr r2, _08079794 @ =gUnk_0811C108 - ldr r1, _08079798 @ =gPlayerEntity - ldrb r0, [r1, #0x14] - lsrs r0, r0, #1 - b _080797A4 - .align 2, 0 -_08079790: .4byte gPlayerState -_08079794: .4byte gUnk_0811C108 -_08079798: .4byte gPlayerEntity -_0807979C: - ldr r2, _080797BC @ =gUnk_0811C108 - ldr r1, _080797C0 @ =gPlayerEntity - ldrb r0, [r1, #0x15] - lsrs r0, r0, #2 -_080797A4: - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r2, [r0] - movs r3, #0 - ldrh r0, [r1, #0x2a] - ands r0, r2 - cmp r2, r0 - bne _080797B6 - movs r3, #1 -_080797B6: - adds r0, r3, #0 - pop {pc} - .align 2, 0 -_080797BC: .4byte gUnk_0811C108 -_080797C0: .4byte gPlayerEntity - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_080797C4.inc b/asm/non_matching/playerUtils/sub_080797C4.inc deleted file mode 100644 index 5d1afc60..00000000 --- a/asm/non_matching/playerUtils/sub_080797C4.inc +++ /dev/null @@ -1,22 +0,0 @@ - .syntax unified - push {lr} - ldr r1, _080797E4 @ =gUnk_0811C110 - ldr r2, _080797E8 @ =gPlayerEntity - ldrb r0, [r2, #0x15] - lsrs r0, r0, #3 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] - movs r3, #0 - ldrh r0, [r2, #0x2a] - ands r0, r1 - cmp r1, r0 - bne _080797E0 - movs r3, #1 -_080797E0: - adds r0, r3, #0 - pop {pc} - .align 2, 0 -_080797E4: .4byte gUnk_0811C110 -_080797E8: .4byte gPlayerEntity - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_08079B24.inc b/asm/non_matching/playerUtils/sub_08079B24.inc deleted file mode 100644 index be804555..00000000 --- a/asm/non_matching/playerUtils/sub_08079B24.inc +++ /dev/null @@ -1,92 +0,0 @@ - .syntax unified - push {r4, r5, lr} - ldr r2, _08079B60 @ =gPlayerEntity - ldrb r0, [r2, #0xc] - cmp r0, #0xa - beq _08079BD4 - adds r0, r2, #0 - adds r0, #0x45 - ldrb r3, [r0] - cmp r3, #0 - bne _08079BD4 - ldr r4, _08079B64 @ =gPlayerState - ldr r1, [r4, #0x30] - ldr r0, _08079B68 @ =0xFEFFFFFF - ands r1, r0 - str r1, [r4, #0x30] - adds r0, r2, #0 - adds r0, #0x42 - strb r3, [r0] - ldrb r0, [r4, #7] - cmp r0, #0 - bne _08079BD4 - adds r0, r4, #0 - adds r0, #0x26 - ldrb r0, [r0] - cmp r0, #0 - beq _08079B6C - bl RespawnPlayer - b _08079BC0 - .align 2, 0 -_08079B60: .4byte gPlayerEntity -_08079B64: .4byte gPlayerState -_08079B68: .4byte 0xFEFFFFFF -_08079B6C: - ldrb r0, [r4, #0x14] - cmp r0, #0 - bne _08079BC0 - movs r3, #0x80 - lsls r3, r3, #5 - ands r3, r1 - cmp r3, #0 - bne _08079BC0 - movs r5, #0x36 - ldrsh r0, [r2, r5] - cmp r0, #0 - bge _08079BA6 - ldr r0, [r2, #0x20] - cmp r0, #0 - ble _08079B8C - str r3, [r2, #0x20] -_08079B8C: - ldrb r1, [r4, #2] - movs r3, #0x41 - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - bne _08079BD4 - strb r3, [r4, #2] - movs r0, #0xff - strb r0, [r2, #0x15] - movs r0, #1 - rsbs r0, r0, #0 - strb r0, [r4, #0xd] - b _08079BD4 -_08079BA6: - movs r0, #2 - ands r1, r0 - cmp r1, #0 - bne _08079BC0 - bl sub_08079D48 - cmp r0, #0 - bne _08079BC0 - ldrb r0, [r4, #0xa] - movs r1, #0x10 - orrs r0, r1 - strb r0, [r4, #0xa] - b _08079BD4 -_08079BC0: - ldr r2, _08079BD0 @ =gPlayerEntity - ldrb r1, [r2, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r2, #0x10] - movs r0, #0 - b _08079BD6 - .align 2, 0 -_08079BD0: .4byte gPlayerEntity -_08079BD4: - movs r0, #1 -_08079BD6: - pop {r4, r5, pc} - .syntax divided diff --git a/asm/non_matching/scroll/DoExitTransition.inc b/asm/non_matching/scroll/DoExitTransition.inc deleted file mode 100644 index 34c648cf..00000000 --- a/asm/non_matching/scroll/DoExitTransition.inc +++ /dev/null @@ -1,73 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - ldr r0, _0808085C @ =gRoomTransition - movs r1, #1 - strb r1, [r0, #8] - adds r2, r0, #0 - adds r2, #0xc - ldrh r1, [r4, #6] - ldr r0, _08080860 @ =0x000003FF - cmp r1, r0 - bhi _08080864 - strh r1, [r2, #4] - b _08080872 - .align 2, 0 -_0808085C: .4byte gRoomTransition -_08080860: .4byte 0x000003FF -_08080864: - ldr r0, _08080880 @ =gRoomControls - ldr r0, [r0, #0x30] - ldrh r1, [r0, #0x2e] - ldr r3, _08080884 @ =0xFFFF8000 - adds r0, r3, #0 - orrs r0, r1 - strh r0, [r2, #4] -_08080872: - ldrh r1, [r4, #8] - ldr r0, _08080888 @ =0x000003FF - cmp r1, r0 - bhi _0808088C - strh r1, [r2, #6] - b _0808089A - .align 2, 0 -_08080880: .4byte gRoomControls -_08080884: .4byte 0xFFFF8000 -_08080888: .4byte 0x000003FF -_0808088C: - ldr r0, _080808CC @ =gRoomControls - ldr r0, [r0, #0x30] - ldrh r1, [r0, #0x32] - ldr r3, _080808D0 @ =0xFFFF8000 - adds r0, r3, #0 - orrs r0, r1 - strh r0, [r2, #6] -_0808089A: - ldrb r0, [r4, #0xb] - strb r0, [r2] - ldrb r0, [r4, #0xc] - strb r0, [r2, #1] - ldrb r0, [r4, #0xd] - strb r0, [r2, #8] - ldrb r0, [r4, #0xe] - strb r0, [r2, #3] - ldrb r0, [r4, #0xf] - strb r0, [r2, #2] - ldrh r0, [r4, #0x10] - cmp r0, #0 - beq _080808B8 - bl SoundReq -_080808B8: - ldr r0, _080808D4 @ =gUnk_0811E7C4 - ldrh r1, [r4] - lsls r1, r1, #2 - adds r1, r1, r0 - ldrb r0, [r4, #0xa] - ldr r1, [r1] - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080808CC: .4byte gRoomControls -_080808D0: .4byte 0xFFFF8000 -_080808D4: .4byte gUnk_0811E7C4 - .syntax divided diff --git a/include/common.h b/include/common.h index 4a899e72..57d98ede 100644 --- a/include/common.h +++ b/include/common.h @@ -20,7 +20,10 @@ extern Input gInput; /**< Input instance. */ typedef struct { u8 evt_type; u8 entity_idx; - u8 _2[6]; + u8 _2; + u8 _3; + u16 _4; + u16 _6; u16 x; u16 y; u16 _c; diff --git a/include/player.h b/include/player.h index 0f5bc077..da70d4d1 100644 --- a/include/player.h +++ b/include/player.h @@ -376,7 +376,7 @@ void sub_08077728(u32); void PutAwayItems(void); void sub_08079E58(s32 speed, u32 direction); void RespawnPlayer(void); -u32 GetSurfaceCalcType(Entity*, u32, u32); +u32 GetSurfaceCalcType(Entity*, s32, s32); void UpdatePlayerMovement(void); void EnablePlayerDraw(Entity*); void sub_080797EC(void); diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index 2f1f1044..6ed3af67 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -255,10 +255,8 @@ bool32 sub_0801A458(LayerStruct* layer, u32 position, u32 collisionType) { return FALSE; } -NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc", bool32 sub_0801A4F8(void)) { - u32 uVar1; - u32 uVar3; - +bool32 sub_0801A4F8(void) { + u32 tmp; if ((gPlayerState.flags & PL_MINISH) != 0) { if (GetInventoryValue(ITEM_POWER_BRACELETS) != 1) { return FALSE; @@ -269,7 +267,8 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc", bool32 sub_0801A4 if (gPlayerState.field_0xd != gPlayerEntity.direction) { return FALSE; } - if ((gPlayerEntity.collisions & gUnk_080B44A0[(((gPlayerEntity.direction + 4) & 0x18) >> 2)]) == 0) { + tmp = (((gPlayerEntity.direction + 4) & 0x18) >> 3); + if ((gUnk_080B44A0[tmp] & gPlayerEntity.collisions) == 0) { return FALSE; } } else { @@ -282,7 +281,6 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc", bool32 sub_0801A4 } return TRUE; } -END_NONMATCH ASM_FUNC("asm/non_matching/beanstalkSubtask/sub_0801A570.inc", void sub_0801A570()) @@ -387,7 +385,7 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AA58.inc", object->collisionLayer = this->collisionLayer; gPlayerState.pushedObject = 0xa0; gPlayerState.queued_action = 5; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; this->x.HALF.LO = 0; this->y.HALF.LO = 0; this->direction = param_3; diff --git a/src/code_08049DF4.c b/src/code_08049DF4.c index 91029146..01063df0 100644 --- a/src/code_08049DF4.c +++ b/src/code_08049DF4.c @@ -21,7 +21,10 @@ Entity* sub_08049DF4(u32 arg0) { } Entity* sub_08049E18(void) { - if ((gPlayerState.field_0x3c[0] == 0) && !(gPlayerState.flags & 0x22189b75)) { + if ((gPlayerState.field_0x3c[0] == 0) && + !(gPlayerState.flags & + (PL_BUSY | PL_DROWNING | PL_CAPTURED | PL_USE_PORTAL | PL_HIDDEN | PL_DISABLE_ITEMS | PL_FALLING | PL_FROZEN | + PL_IN_MINECART | PL_PIT_IS_EXIT | PL_MOLDWORM_CAPTURED | PL_IN_HOLE | PL_FLAGS2000000 | PL_CLIMBING))) { gUnk_020000B0 = &gPlayerEntity; return &gPlayerEntity; } @@ -29,7 +32,10 @@ Entity* sub_08049E18(void) { } Entity* sub_08049E4C(void) { - if ((gPlayerState.field_0x3c[0] == 0) && !(gPlayerState.flags & 0x22189bf5)) { + if ((gPlayerState.field_0x3c[0] == 0) && + !(gPlayerState.flags & (PL_BUSY | PL_DROWNING | PL_CAPTURED | PL_USE_PORTAL | PL_HIDDEN | PL_MINISH | + PL_DISABLE_ITEMS | PL_FALLING | PL_FROZEN | PL_IN_MINECART | PL_PIT_IS_EXIT | + PL_MOLDWORM_CAPTURED | PL_IN_HOLE | PL_FLAGS2000000 | PL_CLIMBING))) { gUnk_020000B0 = &gPlayerEntity; return &gPlayerEntity; } diff --git a/src/common.c b/src/common.c index 71f9eb8b..3e9cc7c4 100644 --- a/src/common.c +++ b/src/common.c @@ -22,7 +22,7 @@ typedef struct { extern u8 gUnk_03003DE0; extern u8 gzHeap[0x1000]; -extern u8 gUnk_0201AEE0[0x2000]; +extern u32 gUnk_0201AEE0[0x800]; extern u8 gUnk_080CA11C[]; extern void (*gUnk_080C9CAC[])(void); @@ -67,6 +67,10 @@ extern u32 gUsedPalettes; extern u16 gPaletteBuffer[]; extern const GfxItem* gGfxGroups[]; +extern const u32 gUnk_080C9460[]; + +void sub_0801E82C(void); + u32 DecToHex(u32 value) { u32 result; register u32 r1 asm("r1"); @@ -382,8 +386,14 @@ u32 sub_0801DF10(DungeonLayout* lyt) { return offset; } -ASM_FUNC("asm/non_matching/common/sub_0801DF28.inc", void sub_0801DF28(u32 a1, u32 a2, u32 a3)); - +void sub_0801DF28(u32 x, u32 y, s32 color) { + u32* ptr; + u32 tmp; + ptr = &gUnk_0201AEE0[(((y >> 3) * 0x10 + (x >> 3)) * 8)]; + ptr = &ptr[(y & 7)]; + tmp = (color << ((x & 7) * 4)); + ptr[0] = (ptr[0] & gUnk_080C9460[x & 7]) | tmp; +} u32 sub_0801DF60(u32 a1, u8* p) { return (p[a1 >> 2] >> (2 * (~a1 & 3))) & 3; } @@ -531,7 +541,29 @@ ASM_FUNC("asm/non_matching/common/sub_0801E64C.inc", void sub_0801E64C(u32 a1, u ASM_FUNC("asm/non_matching/common/sub_0801E6C8.inc", void sub_0801E6C8(u32 a1)); -ASM_FUNC("asm/non_matching/common/sub_0801E738.inc", void sub_0801E738(u32 a1)); +void sub_0801E738(u32 param_1) { + s32 index; + s32 tmp; + + sub_0801E82C(); + if (param_1 - 0x65 < 0x11) { + index = sub_0801E8B0(param_1); + if (index < 0) { + index = 0; + while (gSave.unk118[index] != 0) { + index++; + } + } + if ((u32)index < 0x12) { + gSave.unk118[index] = param_1; + tmp = gSave.unk12B[index] + 1; + if (tmp > 99) { + tmp = 99; + } + gSave.unk12B[index] = tmp; + } + } +} void sub_0801E798(u32 a1) { s32 idx = sub_0801E8B0(a1); diff --git a/src/enemy/enemy64.c b/src/enemy/enemy64.c index 5017f1b4..bbcecf30 100644 --- a/src/enemy/enemy64.c +++ b/src/enemy/enemy64.c @@ -423,7 +423,7 @@ void sub_08049944(Enemy64Entity* this) { if (EntityWithinDistance(super, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x20)) { gPlayerState.field_0x14 = 1; if (gPlayerEntity.z.HALF.HI == 0) { - gPlayerState.flags |= 2; + gPlayerState.flags |= PL_FLAGS2; this->unk_7c |= 1; } } diff --git a/src/enemy/ghini.c b/src/enemy/ghini.c index 1fb426b7..80d63819 100644 --- a/src/enemy/ghini.c +++ b/src/enemy/ghini.c @@ -386,7 +386,7 @@ void sub_0803F6EC(GhiniEntity* this) { gPlayerEntity.iframes = -0x3c; gPlayerState.jump_status = 0x41; } - gPlayerState.flags &= 0xffffffef; + gPlayerState.flags &= ~PL_CAPTURED; } void sub_0803F738(GhiniEntity* this) { diff --git a/src/game.c b/src/game.c index 325b71c9..f594f02f 100644 --- a/src/game.c +++ b/src/game.c @@ -33,6 +33,7 @@ #include "transitions.h" #include "roomid.h" #include "ui.h" +#include "kinstone.h" // Game task @@ -234,9 +235,17 @@ extern const EntityData* gUnk_080FCFB8[]; extern void (*const gUnk_080FD138[])(void); extern const u16 gUnk_080FD964[]; +extern const u8 gUnk_080FCF04[]; extern void ClearBgAnimations(void); +void sub_08054974(s32, s32); +void sub_080548E8(void); + +extern void sub_0806F38C(void); + +extern void sub_08018710(u32); + void GameTask(void) { static GameState* const sStates[] = { GameTask_Transition, @@ -1277,8 +1286,8 @@ bool32 CanDispEzloMessage(void) { gPauseMenuOptions.disabled || gUnk_0200AF00.unk_1) return 0; - if ((gPlayerState.flags & (PL_NO_CAP | 0x110)) || (gPlayerState.framestate_last > tmp) || gPlayerState.item || - gPlayerEntity.field_0x7a.HWORD) + if ((gPlayerState.flags & (PL_NO_CAP | PL_CAPTURED | PL_DISABLE_ITEMS)) || (gPlayerState.framestate_last > tmp) || + gPlayerState.item || gPlayerEntity.field_0x7a.HWORD) return 0; if ((gPlayerEntity.z.HALF.HI & 0x8000) && !gPlayerState.field_0xa) @@ -1885,9 +1894,43 @@ void sub_08053758(void) { ASM_FUNC("asm/non_matching/game/sub_08053800.inc", void sub_08053800()) -ASM_FUNC("asm/non_matching/game/sub_08053894.inc", void sub_08053894()) +void sub_08053894(void) { + u32 tmp; + if (gFadeControl.active == 0) { + gMenu.transitionTimer--; + if (gMenu.field_0xa != 0) { + gMenu.field_0xa--; + } else { + if (((gRoomTransition.frameCount & 1) == 0) && (gMenu.storyPanelIndex < 0x10)) { + tmp = ++gMenu.storyPanelIndex << 0x18; + gScreen.controls.alphaBlend = (tmp >> 0x10) | (0x10 - ((tmp) >> 0x19)); + } + } + if (gMenu.transitionTimer == 0) { + gMenu.overlayType++; + SetFade(FADE_IN_OUT | FADE_INSTANT, 8); + } + } +} -ASM_FUNC("asm/non_matching/game/sub_08053904.inc", void sub_08053904()) +void sub_08053904(void) { + u32 tmp; + if (gFadeControl.active == 0) { + gMenu.transitionTimer--; + if (gMenu.field_0xa != 0) { + gMenu.field_0xa--; + } else { + if (((gRoomTransition.frameCount & 1) == 0) && (gMenu.storyPanelIndex < 0x10)) { + tmp = ++gMenu.storyPanelIndex << 0x18; + gScreen.controls.alphaBlend = (tmp >> 0x10) | (0x10 - (tmp >> 0x19)); + } + } + if (gMenu.transitionTimer == 0) { + gMenu.overlayType++; + SetFade(FADE_IN_OUT | FADE_INSTANT, 1); + } + } +} void sub_08053974(void) { if (gFadeControl.active == 0) { @@ -2043,7 +2086,21 @@ void sub_08053CAC(void) { gUnk_080FCFA4[gMenu.overlayType](); } -ASM_FUNC("asm/non_matching/game/sub_08053CC8.inc", void sub_08053CC8()) +void sub_08053CC8(void) { + const u8* ptr; + ptr = gUnk_080FCF04 + gMenu.field_0x3 * 0x10; + gMenu.field_0xc = (void*)&ptr[8]; + LoadRoomEntityList(*(EntityData**)(&ptr[0])); + LoadRoomEntityList(GetRoomProperty(ptr[4], ptr[5], 1)); + LoadRoomEntityList(GetRoomProperty(ptr[4], ptr[5], 2)); + gMenu.overlayType = 1; + gScreen.lcd.displayControl &= 0xfeff; + gUpdateVisibleTiles = 1; + SetFade(FADE_INSTANT, 0x10); + if (ptr[5] == 0x1d) { + gMenu.field_0xa = 1; + } +} void sub_08053D34(void) { if (gMenu.field_0xa != 0) { @@ -2581,7 +2638,21 @@ void Subtask_WorldEvent(void) { #endif } -ASM_FUNC("asm/non_matching/game/sub_0805488C.inc", void sub_0805488C()) +void sub_0805488C(void) { + const struct_080FE320* ptr = &gUnk_080FE320[gUI.field_0x3]; + gMenu.field_0x0 = ptr->evt_type; + gMenu.field_0x3 = ptr->entity_idx; + gMenu.field_0x4 = gUI.field_0x3; + gMenu.field_0xc = (u8*)ptr; + gMenu.menuType++; + gMenu.overlayType = 0; + gMenu.transitionTimer = 300; + DispReset(0); + sub_08054974(gUI.field_0x3, 1); + sub_0806F364(); + ClearRoomFlag(0xff); + sub_080548E8(); +} void sub_080548E8(void) { gUnk_080FE2AC[gMenu.field_0x0](); @@ -2594,12 +2665,47 @@ void sub_080548E8(void) { UpdateScrollVram(); } -ASM_FUNC("asm/non_matching/game/sub_08054920.inc", void sub_08054920()) +void sub_08054920(void) { + MessageInitialize(); + sub_0806F38C(); + if (gUnk_080C9CBC[gFuseInfo._3]._5[1] != 0) { + MenuFadeIn(10, gUI.field_0x3); + } else { + gUI.nextToLoad = 3; + SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 0x10); + } +} void sub_08054968(void) { gMenu.menuType = 2; } -ASM_FUNC("asm/non_matching/game/sub_08054974.inc", void sub_08054974()) +void sub_08054974(s32 param_1, s32 param_2) { + struct_080FE320* ptr = &gUnk_080FE320[param_1]; + SetCurrentRoomPropertyList(ptr->_2, ptr->_3); + gRoomControls.area = ptr->_2; + gRoomControls.room = ptr->_3; + LoadGfxGroups(); + gArea.localFlagOffset = GetFlagBankOffset(gRoomControls.area); + if (param_2 != 0) { + LoadAuxiliaryRoom(ptr->_2, ptr->_3); + } else { + sub_08052FF4(ptr->_2, ptr->_3); + InitializeCamera(); + gUpdateVisibleTiles = 1; + } + gScreen.lcd.displayControl &= 0x1fff; + gRoomControls.scroll_x = gRoomControls.origin_x + ptr->_4; + gRoomControls.scroll_y = gRoomControls.origin_y + ptr->_6; + if (ptr->_2 == 2) { + TryLoadPrologueHyruleTown(); + } + sub_08018710(gUI.field_0x3); +} -ASM_FUNC("asm/non_matching/game/sub_08054A14.inc", void sub_08054A14()) +void sub_08054A14(s32 param_1) { + struct_080FE320* ptr = &gUnk_080FE320[param_1]; + if (ptr->_11 < 0xe) { + SetLocalFlagByBank(gLocalFlagBanks[ptr->_11], ptr->flag); + } +} diff --git a/src/interrupts.c b/src/interrupts.c index e9d6e7e9..760ec0df 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -236,7 +236,7 @@ static void HandlePlayerLife(Entity* this) { if ((gPlayerEntity.contactFlags & 0x80) && (gPlayerEntity.iframes > 0)) SoundReq(SFX_86); - gPlayerState.flags &= ~(0x2000000 | PL_FALLING); + gPlayerState.flags &= ~(PL_FALLING | PL_FLAGS2000000); if (gPlayerState.flags & PL_BURNING) ResetPlayerItem(); if ((gPlayerState.flags & PL_CLONING) && gPlayerState.chargeState.action == 0) diff --git a/src/item/itemTryPickupObject.c b/src/item/itemTryPickupObject.c index 4f5f7228..440f8075 100644 --- a/src/item/itemTryPickupObject.c +++ b/src/item/itemTryPickupObject.c @@ -95,7 +95,33 @@ void sub_08076488(ItemBehavior* this, u32 idx) { gPlayerState.framestate = PL_STATE_HOLD; } -ASM_FUNC("asm/non_matching/itemTryPickupObject/sub_08076518.inc", void sub_08076518(ItemBehavior* this, u32 idx)) +void sub_08076518(ItemBehavior* this, u32 index) { + if (PlayerTryDropObject(this, index)) { + gPlayerState.framestate = 4; + if ((gPlayerState.jump_status & 0x80) == 0 && gPlayerState.field_0x1f[0] == 0) { + if (gPlayerEntity.knockbackDuration != 0) { + PlayerCancelHoldItem(this, index); + } else { + if ((gPlayerState.field_0x92 & 0x8018) != 0) { + sub_0806F948(&gPlayerEntity); + gPlayerState.heldObject = 5; + this->field_0x18->subAction = 2; + this->field_0x18->direction = (gPlayerEntity.animationState & 0xe) << 2; + this->field_0x18 = NULL; + this->stateID++; + this->field_0xf = 0x0f; + if ((gPlayerState.flags & PL_NO_CAP) != 0) { + sub_08077DF4(this, 0x930); + } else { + sub_08077DF4(this, 0x344); + } + gPlayerState.field_0xa |= 8 >> index; + gPlayerState.keepFacing |= 8 >> index; + } + } + } + } +} void sub_080765E0(ItemBehavior* this, u32 idx) { if (PlayerTryDropObject(this, idx) != 0) { diff --git a/src/menu/kinstone_menu.c b/src/menu/kinstone_menu.c index 1a7816c1..6956a86e 100644 --- a/src/menu/kinstone_menu.c +++ b/src/menu/kinstone_menu.c @@ -18,7 +18,7 @@ extern u32 sub_08000E44(u32); extern void sub_080A3B74(void); -extern s32 sub_080A3B48(void); +extern u32 sub_080A3B48(void); extern void sub_0805ECEC(u32, u32, u32, u32); extern void sub_0801E6C8(u32); extern void sub_0801E798(u32); @@ -65,7 +65,15 @@ Subtask KinstoneMenu_Type3; Subtask KinstoneMenu_Type4; Subtask KinstoneMenu_Type5; -ASM_FUNC("asm/non_matching/menu/kinstone_menu/sub_080A3B48.inc", s32 sub_080A3B48(void)) +u32 sub_080A3B48(void) { + u32 index; + for (index = 0; index <= 0x12; index++) { + if (gSave.unk12B[index] == 0) { + break; + } + } + return index; +} void sub_080A3B74(void) { gKinstoneMenu.unk2f = 0; diff --git a/src/npc/gorman.c b/src/npc/gorman.c index 90266bf1..c4294df9 100644 --- a/src/npc/gorman.c +++ b/src/npc/gorman.c @@ -20,6 +20,12 @@ void sub_08069888(Entity* this); extern u16 gUnk_08111C50[]; +extern const s16 gUnk_08111C5C[]; +extern const u8 gUnk_08111C74[]; + +extern const s16 gUnk_08111C84[]; +extern const u8 gUnk_08111C8C[]; + void Gorman(Entity* this) { if ((this->flags & ENT_SCRIPTED) != 0) { sub_08069838(this); @@ -98,9 +104,37 @@ void sub_08069888(Entity* this) { MessageNoOverlap(gUnk_08111C50[index], this); } -ASM_FUNC("asm/non_matching/gorman/sub_0806991C.inc", void sub_0806991C(Entity* this, ScriptExecutionContext* context)) +void sub_0806991C(Entity* this, ScriptExecutionContext* context) { + u32 tmp; + const s16* ptr; + this->field_0x68.HALF.LO = (Random() & 0x1f) + 0x3c; + ptr = &gUnk_08111C5C[*(s8*)&this->field_0x68.HALF.HI * 2]; + context->x.HALF.HI = gRoomControls.origin_x + ptr[0]; + context->y.HALF.HI = gRoomControls.origin_y + ptr[1]; + context->unk_19 = 8; + context->postScriptActions |= 2; + context->condition = 0; + tmp = sub_080045DA(context->x.HALF.HI - this->x.HALF.HI, context->y.HALF.HI - this->y.HALF.HI); + this->direction = tmp; + this->animationState = (this->animationState & 0x80) | gUnk_08111C74[(tmp << 0x18) >> 0x1c]; + gActiveScriptInfo.flags |= 1; +} -ASM_FUNC("asm/non_matching/gorman/sub_080699AC.inc", void sub_080699AC(Entity* this, ScriptExecutionContext* context)) +void sub_080699AC(Entity* this, ScriptExecutionContext* context) { + u32 tmp; + const s16* ptr; + this->field_0x68.HALF.LO = (Random() & 0x1f) + 0x3c; + ptr = &gUnk_08111C84[*(s8*)&this->field_0x68.HALF.HI * 2]; + context->x.HALF.HI = gRoomControls.origin_x + ptr[0]; + context->y.HALF.HI = gRoomControls.origin_y + ptr[1]; + context->unk_19 = 8; + context->postScriptActions |= 2; + context->condition = 0; + tmp = sub_080045DA(context->x.HALF.HI - this->x.HALF.HI, context->y.HALF.HI - this->y.HALF.HI); + this->direction = tmp; + this->animationState = (this->animationState & 0x80) | gUnk_08111C8C[(tmp << 0x18) >> 0x1c]; + gActiveScriptInfo.flags |= 1; +} void sub_08069A3C(Entity* this) { this->field_0x68.HALF.HI = gUnk_08111C9C[(Random() & 1) + (s8)this->field_0x68.HALF.HI * 2]; diff --git a/src/npc/minishEzlo.c b/src/npc/minishEzlo.c index 130c58c9..561ac4d6 100644 --- a/src/npc/minishEzlo.c +++ b/src/npc/minishEzlo.c @@ -1,9 +1,12 @@ #include "entity.h" #include "sound.h" #include "script.h" +#include "npc.h" extern SpriteLoadData gUnk_0810C48C; +extern void sub_0806FF10(Entity* this, u32 param_2, u32 param_3); + void MinishEzlo(Entity* this) { if (this->action == 0) { if (LoadExtraSpriteData(this, &gUnk_0810C48C) == 0) { @@ -27,7 +30,29 @@ void MinishEzlo(Entity* this) { } } -ASM_FUNC("asm/non_matching/minishEzlo/MinishEzlo_Head.inc", void MinishEzlo_Head(Entity* this)) +void MinishEzlo_Head(Entity* this) { + u32 uVar1; + u32 uVar2; + u32 uVar3; + if ((this->frameSpriteSettings & 4) != 0) { + uVar2 = 1; + uVar1 = 0; + } else { + uVar2 = 0; + uVar1 = 1; + } + + if ((this->frameSpriteSettings & 8) != 0) { + uVar3 = 0x16; + } else { + uVar3 = 0x11c; + } + SetExtraSpriteFrame(this, uVar2, (this->frame & 0xffffff7f) - 1); + SetExtraSpriteFrame(this, uVar1, this->frameIndex); + sub_0806FF10(this, uVar1, uVar3); + SetSpriteSubEntryOffsetData1(this, uVar1, uVar2); + sub_0807000C(this); +} void sub_0806305C(Entity* this) { this->spritePriority.b1 = 0; diff --git a/src/object/beanstalk.c b/src/object/beanstalk.c index ee4a6ab0..8328945a 100644 --- a/src/object/beanstalk.c +++ b/src/object/beanstalk.c @@ -277,7 +277,7 @@ void Beanstalk_Action1Type7(BeanstalkEntity* this) { case 2: case 3: case 4: - if (gPlayerState.floor_type == 0x1e) { + if (gPlayerState.floor_type == SURFACE_LADDER) { if (EntityInRectRadius(super, &gPlayerEntity, 0, 8)) { if ((super->animIndex == (super->type2 - 1) * 3 + 1) && (super->timer == 0)) { super->timer = 1; @@ -339,7 +339,7 @@ void Beanstalk_Action1Type9(BeanstalkEntity* this) { } super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY; super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3; - if (gPlayerState.floor_type == 0x1e) { + 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); diff --git a/src/object/ladderUp.c b/src/object/ladderUp.c index b173b5f6..99f459ed 100644 --- a/src/object/ladderUp.c +++ b/src/object/ladderUp.c @@ -59,7 +59,7 @@ void LadderUp(Entity* this) { default: if (this->type2 == 0) { if (gPlayerEntity.y.HALF.HI < this->y.HALF.HI) { - if (gPlayerState.floor_type != 0x1e && (GetTileTypeByEntity(this) == 0x4017)) { + if (gPlayerState.floor_type != SURFACE_LADDER && (GetTileTypeByEntity(this) == 0x4017)) { SetTile(0x4023, COORD_TO_TILE(this), this->collisionLayer); RestorePrevTileEntity(COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer); } diff --git a/src/object/object42.c b/src/object/object42.c index 5fa85943..9f32164e 100644 --- a/src/object/object42.c +++ b/src/object/object42.c @@ -57,8 +57,9 @@ void sub_0808DDE8(Object42Entity* this) { if (sub_0807953C()) { super->subtimer++; } - if (((0x1e < super->subtimer) || ((gPlayerState.flags & 0x1810) != 0)) || (this->unk_6c == 0)) { - gPlayerState.flags &= 0xfffffbff; + if (((0x1e < super->subtimer) || ((gPlayerState.flags & (PL_CAPTURED | PL_FROZEN | PL_IN_MINECART)) != 0)) || + (this->unk_6c == 0)) { + gPlayerState.flags &= ~PL_BURNING; DeleteThisEntity(); } player = &gPlayerEntity; @@ -68,7 +69,7 @@ void sub_0808DDE8(Object42Entity* this) { super->collisionLayer = gPlayerEntity.collisionLayer; super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3; super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY; - if ((gPlayerState.flags & 0x400) != 0) { + if ((gPlayerState.flags & PL_BURNING) != 0) { GetNextFrame(super); } else { DeleteThisEntity(); diff --git a/src/object/object70.c b/src/object/object70.c index fa0a4bb4..7cc2664f 100644 --- a/src/object/object70.c +++ b/src/object/object70.c @@ -41,7 +41,7 @@ void Object70_Action1(Entity* this) { if (this->type == 0) { if (gPlayerEntity.z.WORD == 0) { - if ((((gPlayerState.dash_state & 0x40) == 0) && (gPlayerState.floor_type == 0x11)) && + if ((((gPlayerState.dash_state & 0x40) == 0) && (gPlayerState.floor_type == SURFACE_SWAMP)) && ((gPlayerEntity.action == 1 || ((gPlayerEntity.action == 0x18 || (gPlayerEntity.action == 4)))))) { goto _080974FA; } else { diff --git a/src/object/object96.c b/src/object/object96.c index 114b748e..0a7f96d7 100644 --- a/src/object/object96.c +++ b/src/object/object96.c @@ -137,7 +137,7 @@ void Object96_Action2(Entity* this, const struct_gUnk_08123FB0* param_2) { void Object96_Action3(Entity* this, const struct_gUnk_08123FB0* param_2) { u8 type; - if (gPlayerState.flags & 0x80) { + if (gPlayerState.flags & PL_MINISH) { sub_0800445C(this); } else { if (IsCollidingPlayer(this)) { diff --git a/src/object/pushableFurniture.c b/src/object/pushableFurniture.c index 4b9c269c..c7f05ffe 100644 --- a/src/object/pushableFurniture.c +++ b/src/object/pushableFurniture.c @@ -191,7 +191,7 @@ bool32 sub_0808FC5C(PushableFurnitureEntity* this) { } else { super->timer = 0x18; } - if ((gPlayerState.flags & 0x80) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { super->timer += 0x10; } sub_0808FF50(this); @@ -213,7 +213,7 @@ void sub_0808FD44(PushableFurnitureEntity* this, u32 param_2) { } else { tmp = this->unk_70; } - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { super->speed = 0x40; super->timer = 0x20; } else { @@ -222,7 +222,7 @@ void sub_0808FD44(PushableFurnitureEntity* this, u32 param_2) { } } else { tmp = this->unk_7c; - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { super->speed = 0x40; super->timer = 0x40; } else { @@ -271,7 +271,7 @@ void sub_0808FDE8(PushableFurnitureEntity* this) { bool32 sub_0808FECC(PushableFurnitureEntity* this) { bool32 result = TRUE; - if (!((gPlayerState.flags & 0x80) == 0 && (gPlayerEntity.action == 6) && (gPlayerEntity.animationState == 0) && + if (!((gPlayerState.flags & PL_MINISH) == 0 && (gPlayerEntity.action == 6) && (gPlayerEntity.animationState == 0) && (gPlayerEntity.y.HALF.HI - super->y.HALF.HI < 0x14) && (super->x.HALF.HI + 0xc > gPlayerEntity.x.HALF.HI) && (super->x.HALF.HI - 12 < gPlayerEntity.x.HALF.HI))) { result = FALSE; diff --git a/src/playerItem/playerItemSword.c b/src/playerItem/playerItemSword.c index 21b2ee13..6a0bd260 100644 --- a/src/playerItem/playerItemSword.c +++ b/src/playerItem/playerItemSword.c @@ -98,7 +98,7 @@ void sub_080A78B8(PlayerItemSwordEntity* this, Entity* param_2) { super->knockbackDirection = 0; super->iframes = 0; } - if ((gPlayerState.flags & 0x8000000) != 0) { + if ((gPlayerState.flags & PL_SWORD_THRUST) != 0) { gPlayerState.sword_state |= 0x80; } else if (gPlayerState.sword_state != 0) { switch (super->contactFlags & 0x7f) { diff --git a/src/playerUtils.c b/src/playerUtils.c index c8af20b5..2e5da41e 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -51,7 +51,7 @@ void* sub_08077C54(ItemBehavior*); u32 sub_08079FD4(Entity*, u32); void LoadRoomGfx(void); u32 sub_0807A094(u32); -u32 GetSurfaceCalcType(Entity*, u32, u32); +u32 GetSurfaceCalcType(Entity*, s32, s32); void sub_0807AAF8(Entity*, u32); extern struct_0811BE48 gUnk_0811BE48[]; @@ -78,6 +78,20 @@ bool32 sub_0807BF88(u32, u32, RoomResInfo*); void sub_0807BFD0(void); +void ForceSetPlayerState(u32 framestate); +struct_03003DF8* sub_080784E4(void); + +extern const u16 gUnk_0811C0F8[]; + +u32 sub_08079778(void); +u32 sub_0807A500(void); + +extern const u16 gUnk_0811C108[]; + +extern const u16 gUnk_0811C110[]; + +extern const u16 gUnk_08007CAC[]; + void sub_08077698(PlayerEntity* this) { ItemBehavior* puVar2; u32 idx; @@ -140,7 +154,7 @@ NONMATCH("asm/non_matching/playerUtils/sub_080777A0.inc", bool32 sub_080777A0(vo return TRUE; } } else if ((((gUnk_0200AF00.unk_2c == 0xc) && (gPlayerState.field_0x1c == 0)) && - (gPlayerState.floor_type != 0x11)) && + (gPlayerState.floor_type != SURFACE_SWAMP)) && ((((gPlayerState.field_0x90 & 0xf00) != 0 && ((gPlayerState.flags & (PL_BURNING | PL_ROLLING)) == 0)) && ((gPlayerState.jump_status == 0 && (gPlayerState.field_0x3[1] == 0)))))) { @@ -209,7 +223,7 @@ ItemBehavior* sub_0807794C(u32 param_1) { (((gPlayerState.flags & (PL_ROLLING | PL_CLONING)) != 0 && (6 < param_1)))) || ((((gPlayerState.jump_status != 0 || (gPlayerEntity.z.WORD != 0)) && (6 < param_1)) || (((gPlayerState.flags & PL_MINISH) != 0 && (gUnk_0811BE48[param_1].unk6[2] == 0)))))) || - ((gPlayerState.floor_type == 0x11 && ((gPlayerState.field_0x37 != 0 && (1 < param_1 - 0x14)))))) { + ((gPlayerState.floor_type == SURFACE_SWAMP && ((gPlayerState.field_0x37 != 0 && (1 < param_1 - 0x14)))))) { return NULL; } else { u32 tmp = gUnk_0811BE48[param_1].unk0[2]; @@ -701,14 +715,103 @@ void ForceSetPlayerState(u32 framestate) { ASM_FUNC("asm/non_matching/playerUtils/sub_08078180.inc", void sub_08078180()) -ASM_FUNC("asm/non_matching/playerUtils/sub_080782C0.inc", u32 sub_080782C0()) +bool32 sub_080782C0(void) { + u8 tmp; + Entity* entity; + + if (gPlayerState.framestate == 0) { + tmp = gPlayerState.framestate_last; + } else { + tmp = gPlayerState.framestate; + } + switch (tmp) { + case 2: + case 3: + case 0xc: + case 0x12: + case 0x15: + case 0x16: + return FALSE; + } + if ((gPlayerState.field_0x27[0] | gPlayerState.swim_state) != 0) { + return FALSE; + } + if (gPlayerState.floor_type == SURFACE_PIT) { + if (gPlayerState.field_0x14 == 0) { + return FALSE; + } + if (CanDispEzloMessage()) { + return TRUE; + } + return FALSE; + } + if ((gPlayerState.flags & PL_DRUGGED) != 0) { + return FALSE; + } + if (CanDispEzloMessage()) { + return TRUE; + } + entity = sub_080784E4()->entity; + if (entity == NULL) { + return FALSE; + } + if (gPlayerState.heldObject != 0) { + if (gPlayerState.heldObject != 4) { + return FALSE; + } + if ((gNewPlayerEntity.unk_74)->child->kind != OBJECT || (gNewPlayerEntity.unk_74)->child->id != SHOP_ITEM) { + return FALSE; + } + } + if (((gPlayerState.field_0x92 & 0x1000) != 0) && ((u8)(gUnk_03003DF0.unk_4[3] - 1) < 100)) { + sub_0801E738(0); + if (gSave.unk12B[0] != 0) { + gUnk_03003DF0.unk_2 = gUnk_03003DF0.unk_4[3]; + *(u8*)(*(int*)(gUnk_03003DF0.unk_4 + 8) + 0x39) = 2; + gPlayerState.queued_action = 7; + } else { + CreateEzloHint(0xb65, 0); + } + ForceSetPlayerState(0x13); + return TRUE; + } + if ((gPlayerState.field_0x92 & 0x88) == 0) { + return FALSE; + } + switch (gUnk_03003DF0.unk_4[1]) { + default: + case 0: + return TRUE; + case 1: + case 6: + case 9: + case 0xa: + gPlayerState.queued_action = 7; + ForceSetPlayerState(0x13); + case 3: + case 5: + case 7: + entity->interactType = 1; + gUnk_03003DF0.unk_2 = 0; + return TRUE; + case 8: + if (gRoomVars.shopItemType == 0) { + entity->interactType = 1; + gRoomVars.shopItemType = entity->type; + gRoomVars.shopItemType2 = entity->type2; + return TRUE; + } + return FALSE; + } + return TRUE; +} void sub_080784C8(void) { MemClear(&gUnk_03003DF0, 0x188); gUnk_03003DF0.unk_4 = (u8*)gUnk_0811C000; } -ASM_FUNC("asm/non_matching/playerUtils/sub_080784E4.inc", void sub_080784E4()) +ASM_FUNC("asm/non_matching/playerUtils/sub_080784E4.inc", struct_03003DF8* sub_080784E4(void)) void sub_08078778(Entity* ent) { sub_0807887C(ent, 1, 0); @@ -927,7 +1030,7 @@ void ClearPlayerState(void) { gPlayerState.field_0xd = 0; gPlayerState.field_0xe = 0; gPlayerState.field_0x11 = 0; - gPlayerState.floor_type = 0; + gPlayerState.floor_type = SURFACE_NORMAL; gPlayerState.floor_type_last = 0; gPlayerState.field_0x14 = 0; gPlayerState.sword_state = 0; @@ -1129,7 +1232,24 @@ void sub_080792BC(s32 speed, u32 direction, u32 field_0x38) { ASM_FUNC("asm/non_matching/playerUtils/sub_080792D8.inc", void sub_080792D8()) -ASM_FUNC("asm/non_matching/playerUtils/sub_080793E4.inc", bool32 sub_080793E4(u32 a)) +bool32 sub_080793E4(u32 param_1) { + u32 tmp; + if (gPlayerState.swim_state == 0) { + tmp = gUnk_0811C0F8[gPlayerEntity.animationState >> 1]; + } else { + tmp = gUnk_0811C0F8[gPlayerEntity.direction >> 2]; + } + if (sub_08079778() && ((gPlayerState.field_0x90 & tmp) != 0)) { + if (param_1 != 0) { + if (!sub_080B1BA4(sub_0807A500(), gPlayerEntity.collisionLayer, param_1)) { + return FALSE; + } + } + return TRUE; + } else { + return FALSE; + } +} ASM_FUNC("asm/non_matching/playerUtils/RespawnPlayer.inc", void RespawnPlayer()) @@ -1181,15 +1301,59 @@ void sub_08079744(Entity* this) { } } -ASM_FUNC("asm/non_matching/playerUtils/sub_08079778.inc", void sub_08079778()) +bool32 sub_08079778(void) { + u32 tmp; + if (gPlayerState.swim_state == 0) { + tmp = gUnk_0811C108[gPlayerEntity.animationState >> 1]; + } else { + tmp = gUnk_0811C108[gPlayerEntity.direction >> 2]; + } + return tmp == (gPlayerEntity.collisions & tmp); +} -ASM_FUNC("asm/non_matching/playerUtils/sub_080797C4.inc", u32 sub_080797C4(void)) +u32 sub_080797C4(void) { + u32 tmp = gUnk_0811C110[gPlayerEntity.direction >> 3]; + return tmp == (gPlayerEntity.collisions & tmp); +} ASM_FUNC("asm/non_matching/playerUtils/sub_080797EC.inc", void sub_080797EC()) ASM_FUNC("asm/non_matching/playerUtils/ResolvePlayerAnimation.inc", void ResolvePlayerAnimation()) -ASM_FUNC("asm/non_matching/playerUtils/sub_08079B24.inc", u32 sub_08079B24()) +bool32 sub_08079B24(void) { + if ((gPlayerEntity.action != PLAYER_MINISHDIE) && (gPlayerEntity.health == 0)) { + gPlayerState.flags &= ~PL_PARACHUTE; + gPlayerEntity.knockbackDuration = gPlayerEntity.health; + if (gPlayerState.field_0x7 == 0) { + if (gPlayerState.swim_state != 0) { + RespawnPlayer(); + } else { + if ((gPlayerState.field_0x14 == 0) && ((gPlayerState.flags & PL_IN_MINECART) == 0)) { + if (gPlayerEntity.z.HALF.HI < 0) { + if (gPlayerEntity.zVelocity > 0) { + gPlayerEntity.zVelocity = 0; + } + if ((gPlayerState.jump_status & 0x41) == 0) { + gPlayerState.jump_status = 0x41; + gPlayerEntity.direction = 0xff; + gPlayerState.field_0xd = 0xff; + return TRUE; + } else { + return TRUE; + } + } + if (((gPlayerState.flags & PL_FLAGS2) == 0) && (sub_08079D48() == 0)) { + gPlayerState.field_0xa |= 0x10; + return TRUE; + } + } + } + gPlayerEntity.flags &= ~ENT_COLLIDE; + return FALSE; + } + } + return TRUE; +} void sub_08079BD8(Entity* this) { this->x = gPlayerEntity.x; @@ -1337,7 +1501,28 @@ void UpdateFloorType(void) { gUnk_0811C120[gPlayerState.floor_type](&gPlayerEntity); } -ASM_FUNC("asm/non_matching/playerUtils/GetSurfaceCalcType.inc", u32 GetSurfaceCalcType(Entity* a, u32 b, u32 c)) +u32 GetSurfaceCalcType(Entity* param_1, s32 x, s32 y) { + u32 position = TILE(param_1->x.HALF.HI + (u32)x, param_1->y.HALF.HI + y); + u32 tileType = GetTileTypeByPos(param_1->x.HALF.HI + x, param_1->y.HALF.HI + y, gPlayerEntity.collisionLayer); + if (tileType != gPlayerState.field_0x22[1]) { + gPlayerState.field_0x37 = 0; + } + if ((tileType != gPlayerState.field_0x22[1]) || (position != gPlayerState.field_0x22[0])) { + gPlayerState.field_0x22[0] = position; + gPlayerState.field_0x22[1] = tileType; + gPlayerState.field_0x11 = 0; + } + + if (gPlayerState.field_0x11 != 0xff) { + gPlayerState.field_0x11++; + } + if (gPlayerState.field_0x37 != 0xff) { + gPlayerState.field_0x37++; + } + gPlayerState.floor_type_last = gPlayerState.floor_type; + tileType = GetRelativeCollisionTile(param_1, x, y); + return sub_08007DD6(tileType, (u16*)gUnk_08007CAC); +} void EnablePlayerDraw(Entity* this) { this->type2 = 0; @@ -1358,7 +1543,7 @@ bool32 sub_0807A2B8(void) { ASM_FUNC("asm/non_matching/playerUtils/sub_0807A2F8.inc", u32 sub_0807A2F8(u32 a1)) -ASM_FUNC("asm/non_matching/playerUtils/sub_0807A500.inc", void sub_0807A500()) +ASM_FUNC("asm/non_matching/playerUtils/sub_0807A500.inc", u32 sub_0807A500()) ASM_FUNC("asm/non_matching/playerUtils/sub_0807A5B8.inc", void sub_0807A5B8(u32 a)) diff --git a/src/projectile/gyorgTail.c b/src/projectile/gyorgTail.c index d743cf40..ddd0fcb9 100644 --- a/src/projectile/gyorgTail.c +++ b/src/projectile/gyorgTail.c @@ -188,7 +188,35 @@ END_NONMATCH ASM_FUNC("asm/non_matching/gyorgTail/sub_080AC6F0.inc", void sub_080AC6F0(Entity* this)) -ASM_FUNC("asm/non_matching/gyorgTail/sub_080AC760.inc", void sub_080AC760(Entity* this)) +void sub_080AC760(Entity* param_1) { + s32 tmp; + Entity* entity1; + Entity* entity2; + + entity1 = param_1->child; + tmp = (entity1->direction - param_1->direction) & 0xff; + if (((tmp + 8) & 0xff) > 0x10) { + if (tmp > 0x80) { + entity1->direction = param_1->direction - 8; + } else { + entity1->direction = param_1->direction + 8; + } + } + entity2 = entity1->child; + if (entity2->child == NULL) { + entity2->direction = param_1->parent->animationState ^ 0x80; + } else { + tmp = (entity2->direction - entity1->direction) & 0xff; + if (((tmp + 8) & 0xff) <= 0x10) { + return; + } + if (tmp > 0x80) { + entity2->direction = entity1->direction - 8; + } else { + entity2->direction = entity1->direction + 8; + } + } +} NONMATCH("asm/non_matching/gyorgTail/sub_080AC7C4.inc", void sub_080AC7C4(Entity* this)) { // TODO regalloc diff --git a/src/scroll.c b/src/scroll.c index 6a1e8673..8f83d4c9 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -54,6 +54,8 @@ void sub_08080B60(u8*); extern u8 gMapDataTopSpecial[]; +extern const void (*const gUnk_0811E7C4[])(int); + void UpdateScroll(void) { static void (*const gUnk_0811E768[])(RoomControls*) = { sub_0807FC64, sub_0807FC7C, sub_0807FDB0, NULL, sub_0807FEF0, sub_0807FF54, @@ -363,7 +365,30 @@ ASM_FUNC("asm/non_matching/scroll/sub_08080794.inc", void sub_08080794()) ASM_FUNC("asm/non_matching/scroll/sub_08080808.inc", void sub_08080808()) -ASM_FUNC("asm/non_matching/scroll/DoExitTransition.inc", void DoExitTransition(const ScreenTransitionData* data)) +void DoExitTransition(const ScreenTransitionData* data) { + PlayerRoomStatus* status; + gRoomTransition.transitioningOut = 1; + status = &gRoomTransition.player_status; + if ((u16)data->playerXPos <= 0x3ff) { + status->start_pos_x = data->playerXPos; + } else { + status->start_pos_x = (gRoomControls.camera_target)->x.HALF.HI | 0x8000; + } + if ((u16)data->playerYPos <= 0x3ff) { + status->start_pos_y = data->playerYPos; + } else { + status->start_pos_y = (gRoomControls.camera_target)->y.HALF.HI | 0x8000; + } + status->area_next = data->area; + status->room_next = data->room; + status->layer = data->playerLayer; + status->spawn_type = data->field_0xe; + status->start_anim = data->playerState; + if (data->transitionSFX != SFX_NONE) { + SoundReq(data->transitionSFX); + } + gUnk_0811E7C4[data->type](data->field_0xa); +} void sub_080808D8(void) { gRoomTransition.type = TRANSITION_DEFAULT; diff --git a/src/subtask2.c b/src/subtask2.c index 9717352c..e6cc5f44 100644 --- a/src/subtask2.c +++ b/src/subtask2.c @@ -364,7 +364,7 @@ void sub_080A5B34(void) { } if (bVar1) { if (uVar3 == 0) { - SetFade(7, 0x20); + SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 0x20); gMenu.transitionTimer = 0x3c; SetMenuType(2); } else { @@ -698,7 +698,7 @@ void sub_080A6378(void) { if ((gGenericMenu.unk2c & 0x20) == 0) { gOamCmd.x = gRoomTransition.player_status.overworld_map_x * 0xa0 / 0xf90 + 0x28; gOamCmd.y = (gRoomTransition.player_status.overworld_map_y << 7) / 0xc60 + 0xc; - if ((gPlayerState.flags & 8) != 0) { + if ((gPlayerState.flags & PL_NO_CAP) != 0) { frameIndex = 0x5a; } else { frameIndex = 0x59; @@ -773,7 +773,7 @@ void sub_080A6534(void) { gGenericMenu.unk10.h[0] = 0; gMenu.transitionTimer = 0x3c; SetMenuType(1); - SetFade(4, 8); + SetFade(FADE_INSTANT, 8); } void sub_080A65AC(void) {