diff --git a/asm/non_matching/playerUtils/sub_080777A0.inc b/asm/non_matching/playerUtils/sub_080777A0.inc deleted file mode 100644 index f5813552..00000000 --- a/asm/non_matching/playerUtils/sub_080777A0.inc +++ /dev/null @@ -1,118 +0,0 @@ - .syntax unified - push {r4, lr} - ldr r3, _080777D0 @ =gPlayerState - adds r0, r3, #0 - adds r0, #0x92 - ldrh r1, [r0] - movs r4, #0x80 - adds r0, r4, #0 - ands r0, r1 - cmp r0, #0 - beq _08077870 - ldr r1, [r3, #0x30] - movs r0, #0x80 - lsls r0, r0, #0xf - ands r0, r1 - cmp r0, #0 - beq _080777D4 - adds r1, r3, #0 - adds r1, #0xa0 - movs r0, #1 - strb r0, [r1] - bl DeleteClones -_080777CC: - movs r0, #1 - b _0807787C - .align 2, 0 -_080777D0: .4byte gPlayerState -_080777D4: - ldr r2, _080777F4 @ =gArea - ldrb r0, [r2, #0x18] - cmp r0, #2 - beq _080777FC - cmp r0, #3 - beq _08077810 - ldr r0, _080777F8 @ =gUnk_0200AF00 - adds r0, #0x2c - ldrb r0, [r0] - cmp r0, #0xc - bne _0807787A - adds r2, r3, #0 - ldrb r0, [r2, #0x1c] - cmp r0, #0 - bne _0807787A - b _08077838 - .align 2, 0 -_080777F4: .4byte gArea -_080777F8: .4byte gUnk_0200AF00 -_080777FC: - ldrb r0, [r2, #0x1a] - cmp r0, #0 - bne _080777CC - ldr r1, _0807780C @ =gPlayerEntity - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - b _080777CC - .align 2, 0 -_0807780C: .4byte gPlayerEntity -_08077810: - ldrb r0, [r2, #0x1a] - cmp r0, #0 - bne _0807787A - ands r1, r4 - cmp r1, #0 - beq _0807787A - ldr r0, _08077834 @ =gPlayerEntity - ldrb r1, [r0, #0xd] - adds r1, #1 - strb r1, [r0, #0xd] - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - movs r1, #0xb4 - bl RequestPriorityDuration - b _080777CC - .align 2, 0 -_08077834: .4byte gPlayerEntity -_08077838: - ldrb r0, [r2, #0x12] - cmp r0, #0x11 - beq _0807787A - adds r0, r2, #0 - adds r0, #0x90 - ldrh r1, [r0] - movs r0, #0xf0 - lsls r0, r0, #4 - ands r0, r1 - cmp r0, #0 - beq _0807787A - ldr r0, [r2, #0x30] - ldr r1, _0807786C @ =0x00040400 - ands r0, r1 - cmp r0, #0 - bne _0807787A - ldrb r0, [r2, #2] - cmp r0, #0 - bne _0807787A - ldrb r0, [r2, #4] - cmp r0, #0 - bne _0807787A - movs r0, #0x18 - strb r0, [r2, #0xc] - b _0807787A - .align 2, 0 -_0807786C: .4byte 0x00040400 -_08077870: - ldr r0, [r3, #0x30] - movs r1, #0x20 - ands r0, r1 - cmp r0, #0 - bne _080777CC -_0807787A: - movs r0, #0 -_0807787C: - pop {r4, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_080778CC.inc b/asm/non_matching/playerUtils/sub_080778CC.inc deleted file mode 100644 index 6b0771ae..00000000 --- a/asm/non_matching/playerUtils/sub_080778CC.inc +++ /dev/null @@ -1,64 +0,0 @@ - .syntax unified - push {lr} - ldr r2, _08077920 @ =gPlayerState - ldr r0, [r2, #0x30] - ldr r1, _08077924 @ =0x000400A0 - ands r0, r1 - cmp r0, #0 - bne _0807791C - ldr r0, _08077928 @ =gPlayerEntity - adds r0, #0x79 - ldrb r0, [r0] - cmp r0, #0 - bne _080778FA - ldrb r0, [r2, #5] - cmp r0, #0 - bne _080778FA - adds r0, r2, #0 - adds r0, #0x92 - ldrh r1, [r0] - movs r0, #0x80 - lsls r0, r0, #8 - ands r0, r1 - cmp r0, #0 - beq _0807791C -_080778FA: - bl sub_080789A8 - cmp r0, #0 - bne _08077910 - ldr r0, _08077920 @ =gPlayerState - adds r0, #0x90 - ldrh r1, [r0] - ldr r0, _0807792C @ =0x00000F03 - ands r0, r1 - cmp r0, #0 - bne _0807791C -_08077910: - movs r0, #0x1b - bl sub_0807794C - adds r1, r0, #0 - cmp r1, #0 - bne _08077930 -_0807791C: - movs r0, #0 - b _08077940 - .align 2, 0 -_08077920: .4byte gPlayerState -_08077924: .4byte 0x000400A0 -_08077928: .4byte gPlayerEntity -_0807792C: .4byte 0x00000F03 -_08077930: - movs r0, #0x1b - strb r0, [r1, #1] - ldr r0, _08077944 @ =gUnk_0811BE48 - ldr r2, _08077948 @ =0x00000145 - adds r0, r0, r2 - ldrb r0, [r0] - strb r0, [r1, #9] - movs r0, #1 -_08077940: - pop {pc} - .align 2, 0 -_08077944: .4byte gUnk_0811BE48 -_08077948: .4byte 0x00000145 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_08079E90.inc b/asm/non_matching/playerUtils/sub_08079E90.inc deleted file mode 100644 index 39e36a72..00000000 --- a/asm/non_matching/playerUtils/sub_08079E90.inc +++ /dev/null @@ -1,98 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - mov sb, r0 - ldr r1, _08079EBC @ =gPlayerEntity - ldrb r2, [r1, #0x15] - movs r0, #8 - ands r0, r2 - adds r7, r1, #0 - cmp r0, #0 - beq _08079ECA - movs r0, #0x10 - ands r0, r2 - cmp r0, #0 - beq _08079EC0 - ldr r0, [r7, #0x48] - ldrb r0, [r0, #2] - rsbs r0, r0, #0 - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 - b _08079EC4 - .align 2, 0 -_08079EBC: .4byte gPlayerEntity -_08079EC0: - ldr r0, [r7, #0x48] - ldrb r5, [r0, #2] -_08079EC4: - ldr r0, [r7, #0x48] - ldrb r4, [r0, #3] - b _08079EDE -_08079ECA: - ldr r0, [r7, #0x48] - ldrb r5, [r0, #4] - cmp r2, #0 - beq _08079ED6 - ldrb r4, [r0, #5] - b _08079EDE -_08079ED6: - ldrb r0, [r0, #5] - rsbs r0, r0, #0 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 -_08079EDE: - lsls r0, r5, #0x10 - asrs r0, r0, #0x10 - mov r8, r0 - lsls r0, r4, #0x10 - asrs r6, r0, #0x10 - adds r0, r7, #0 - mov r1, r8 - adds r2, r6, #0 - bl sub_080B1AF0 - adds r1, r0, #0 - mov r0, sb - bl sub_08079F48 - cmp r0, #0 - bne _08079F3C - ldrb r1, [r7, #0x15] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _08079F10 - rsbs r0, r6, #0 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - b _08079F18 -_08079F10: - mov r1, r8 - rsbs r0, r1, #0 - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 -_08079F18: - ldr r0, _08079F38 @ =gPlayerEntity - lsls r1, r5, #0x10 - asrs r1, r1, #0x10 - lsls r2, r4, #0x10 - asrs r2, r2, #0x10 - bl sub_080B1AF0 - adds r1, r0, #0 - mov r0, sb - bl sub_08079F48 - cmp r0, #0 - bne _08079F3C - movs r0, #0 - b _08079F3E - .align 2, 0 -_08079F38: .4byte gPlayerEntity -_08079F3C: - movs r0, #1 -_08079F3E: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807A094.inc b/asm/non_matching/playerUtils/sub_0807A094.inc deleted file mode 100644 index 54e5f680..00000000 --- a/asm/non_matching/playerUtils/sub_0807A094.inc +++ /dev/null @@ -1,66 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r3, r0, #0 - movs r2, #0x16 - ldr r0, _0807A0AC @ =gPlayerState - ldrb r0, [r0, #0xf] - cmp r0, #0 - beq _0807A0B0 - movs r2, #0x1b - cmp r0, #0x78 - bls _0807A104 - movs r2, #0x1a - b _0807A104 - .align 2, 0 -_0807A0AC: .4byte gPlayerState -_0807A0B0: - ldr r0, _0807A0F0 @ =gSave - adds r1, r0, #0 - adds r1, #0xb2 - ldrb r1, [r1] - adds r5, r0, #0 - cmp r1, #0 - beq _0807A104 - movs r4, #1 - cmp r3, #0 - bne _0807A0D6 - adds r0, #0xc4 - ldrh r1, [r0] - cmp r1, #0xb3 - bhi _0807A0D6 - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _0807A0D6 - movs r4, #0 -_0807A0D6: - cmp r4, #0 - beq _0807A104 - adds r0, r5, #0 - adds r0, #0xb2 - ldrb r0, [r0] - cmp r0, #0x30 - beq _0807A102 - cmp r0, #0x30 - bgt _0807A0F4 - cmp r0, #0x2f - beq _0807A0FA - b _0807A102 - .align 2, 0 -_0807A0F0: .4byte gSave -_0807A0F4: - cmp r0, #0x31 - beq _0807A0FE - b _0807A102 -_0807A0FA: - movs r2, #0x18 - b _0807A104 -_0807A0FE: - movs r2, #0x17 - b _0807A104 -_0807A102: - movs r2, #0x19 -_0807A104: - adds r0, r2, #0 - pop {r4, r5, pc} - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807A894.inc b/asm/non_matching/playerUtils/sub_0807A894.inc deleted file mode 100644 index 936c7fc8..00000000 --- a/asm/non_matching/playerUtils/sub_0807A894.inc +++ /dev/null @@ -1,41 +0,0 @@ - .syntax unified - push {lr} - ldrb r1, [r0, #0x15] - cmp r1, #8 - beq _0807A8BA - cmp r1, #8 - bgt _0807A8A6 - cmp r1, #0 - beq _0807A8B0 - b _0807A8C8 -_0807A8A6: - cmp r1, #0x10 - beq _0807A8B6 - cmp r1, #0x18 - beq _0807A8C0 - b _0807A8C8 -_0807A8B0: - movs r2, #8 - rsbs r2, r2, #0 - b _0807A8CA -_0807A8B6: - movs r2, #5 - b _0807A8CA -_0807A8BA: - movs r2, #0 - movs r1, #8 - b _0807A8CC -_0807A8C0: - movs r2, #0 - movs r1, #8 - rsbs r1, r1, #0 - b _0807A8CC -_0807A8C8: - movs r2, #0 -_0807A8CA: - movs r1, #0 -_0807A8CC: - bl GetRelativeCollisionTile - pop {pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807AAF8.inc b/asm/non_matching/playerUtils/sub_0807AAF8.inc deleted file mode 100644 index e65e42ec..00000000 --- a/asm/non_matching/playerUtils/sub_0807AAF8.inc +++ /dev/null @@ -1,42 +0,0 @@ - .syntax unified - push {r4, lr} - adds r3, r0, #0 - adds r2, r1, #0 - movs r1, #0x36 - ldrsh r0, [r3, r1] - cmp r0, #0 - bne _0807AB3C - adds r0, r3, #0 - adds r0, #0x38 - ldrb r0, [r0] - lsls r0, r0, #0x1e - orrs r2, r0 - movs r3, #0 - ldr r0, _0807AB40 @ =gPlayerState - ldr r1, [r0, #0x40] - adds r4, r0, #0 - cmp r1, r2 - beq _0807AB32 - adds r1, r4, #0 - adds r1, #0x40 -_0807AB20: - ldr r0, [r1] - stm r1!, {r2} - adds r2, r0, #0 - adds r3, #1 - cmp r3, #0xe - bhi _0807AB32 - ldr r0, [r1] - cmp r0, r2 - bne _0807AB20 -_0807AB32: - lsls r0, r3, #2 - adds r1, r4, #0 - adds r1, #0x40 - adds r0, r0, r1 - str r2, [r0] -_0807AB3C: - pop {r4, pc} - .align 2, 0 -_0807AB40: .4byte gPlayerState - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807AB44.inc b/asm/non_matching/playerUtils/sub_0807AB44.inc deleted file mode 100644 index 728e9f5a..00000000 --- a/asm/non_matching/playerUtils/sub_0807AB44.inc +++ /dev/null @@ -1,129 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r6, r0, #0 - adds r7, r1, #0 - mov r8, r2 - movs r1, #0x2e - ldrsh r0, [r6, r1] - adds r0, r0, r7 - ldr r2, _0807ABF0 @ =gRoomControls - mov sb, r2 - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - mov sl, r3 - ands r0, r3 - movs r5, #0x32 - ldrsh r1, [r6, r5] - add r1, r8 - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - adds r1, r6, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - movs r1, #0xb - bl sub_0806FC50 - adds r5, r0, #0 - cmp r5, #0 - beq _0807AC44 - ldrh r0, [r5, #6] - cmp r0, #0x76 - bne _0807ABF4 - movs r0, #0x2a - movs r1, #1 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _0807AC44 - lsls r2, r7, #0x10 - mov r0, r8 - lsls r3, r0, #0x10 - adds r0, r6, #0 - adds r1, r4, #0 - bl PositionRelative - adds r0, r4, #0 - bl sub_08004168 - ldrh r0, [r5, #6] - movs r2, #0x2e - ldrsh r1, [r4, r2] - mov r3, sb - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - mov r5, sl - ands r1, r5 - movs r3, #0x32 - ldrsh r2, [r4, r3] - mov r5, sb - ldrh r3, [r5, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - mov r3, sl - ands r2, r3 - lsls r2, r2, #6 - orrs r1, r2 - adds r2, r4, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl sub_0807B7D8 - b _0807AC44 - .align 2, 0 -_0807ABF0: .4byte gRoomControls -_0807ABF4: - movs r0, #0x2a - movs r1, #2 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _0807AC44 - lsls r2, r7, #0x10 - mov r0, r8 - lsls r3, r0, #0x10 - adds r0, r6, #0 - adds r1, r4, #0 - bl PositionRelative - str r5, [r4, #0x54] - ldr r0, _0807AC50 @ =0x0000404F - movs r2, #0x2e - ldrsh r1, [r4, r2] - mov r3, sb - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - mov r5, sl - ands r1, r5 - movs r3, #0x32 - ldrsh r2, [r4, r3] - mov r5, sb - ldrh r3, [r5, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - mov r3, sl - ands r2, r3 - lsls r2, r2, #6 - orrs r1, r2 - adds r2, r4, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile -_0807AC44: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0807AC50: .4byte 0x0000404F - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807AC54.inc b/asm/non_matching/playerUtils/sub_0807AC54.inc deleted file mode 100644 index 2b4b638f..00000000 --- a/asm/non_matching/playerUtils/sub_0807AC54.inc +++ /dev/null @@ -1,67 +0,0 @@ - .syntax unified - push {lr} - adds r2, r0, #0 - ldr r0, _0807AC74 @ =gPlayerState - ldrb r1, [r0, #0x11] - adds r3, r0, #0 - cmp r1, #0 - beq _0807ACC6 - ldrb r0, [r3, #0x12] - cmp r0, #0x2a - beq _0807ACA8 - cmp r0, #0x2a - bgt _0807AC78 - cmp r0, #0x1e - beq _0807AC82 - b _0807ACC6 - .align 2, 0 -_0807AC74: .4byte gPlayerState -_0807AC78: - cmp r0, #0x2b - beq _0807AC90 - cmp r0, #0x2c - beq _0807ACB6 - b _0807ACC6 -_0807AC82: - ldrh r0, [r2, #0x2e] - movs r1, #0x10 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #8 - orrs r1, r0 - strh r1, [r2, #0x2e] -_0807AC90: - movs r0, #0 - movs r1, #0x1d - strb r1, [r2, #0xc] - strb r0, [r2, #0xd] - strh r0, [r2, #0x30] - ldr r0, _0807ACA4 @ =0x000002CF - strh r0, [r3, #8] - movs r0, #1 - b _0807ACC8 - .align 2, 0 -_0807ACA4: .4byte 0x000002CF -_0807ACA8: - ldrh r0, [r2, #0x2e] - movs r1, #0x10 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #8 - orrs r1, r0 - strh r1, [r2, #0x2e] -_0807ACB6: - movs r0, #0 - movs r1, #0x1d - strb r1, [r2, #0xc] - movs r1, #1 - strb r1, [r2, #0xd] - strh r0, [r2, #0x30] - movs r0, #1 - b _0807ACC8 -_0807ACC6: - movs r0, #0 -_0807ACC8: - pop {pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807ACCC.inc b/asm/non_matching/playerUtils/sub_0807ACCC.inc deleted file mode 100644 index 419f3a09..00000000 --- a/asm/non_matching/playerUtils/sub_0807ACCC.inc +++ /dev/null @@ -1,121 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] - adds r1, r4, #0 - adds r1, #0x42 - movs r0, #0 - strb r0, [r1] - movs r0, #0x72 - bl GetInventoryValue - movs r1, #0xc0 - cmp r0, #1 - bne _0807ACF4 - adds r1, #0x40 -_0807ACF4: - movs r2, #0x24 - ldrsh r0, [r4, r2] - cmp r1, r0 - ble _0807AD18 - strh r1, [r4, #0x24] - ldr r0, _0807AD14 @ =gPlayerState - ldrb r1, [r0, #0xd] - strb r1, [r4, #0x15] - adds r0, #0x26 - ldrb r1, [r0] - movs r0, #0xf - ands r0, r1 - cmp r0, #1 - bne _0807ADB4 - b _0807AD1E - .align 2, 0 -_0807AD14: .4byte gPlayerState -_0807AD18: - ldrh r0, [r4, #0x24] - subs r0, #4 - strh r0, [r4, #0x24] -_0807AD1E: - ldr r2, _0807AD3C @ =gPlayerState - adds r1, r2, #0 - adds r1, #0x89 - ldrb r0, [r1] - cmp r0, #0 - bne _0807AD40 - adds r0, r4, #0 - bl sub_0807ADB8 - cmp r0, #0 - bne _0807AD74 - adds r0, r4, #0 - bl sub_0807AE20 - b _0807AD74 - .align 2, 0 -_0807AD3C: .4byte gPlayerState -_0807AD40: - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - beq _0807AD52 - adds r0, r4, #0 - bl sub_0807ADB8 - b _0807AD74 -_0807AD52: - adds r2, #0x26 - ldrb r1, [r2] - movs r0, #0x7f - ands r0, r1 - strb r0, [r2] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0807ADA0 @ =0x00000163 - bl SoundReq -_0807AD74: - ldr r0, _0807ADA4 @ =gPlayerState - adds r0, #0x26 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0807ADA8 - adds r2, r4, #0 - adds r2, #0x3c - ldrb r1, [r2] - movs r0, #4 - orrs r0, r1 - strb r0, [r2] - subs r2, #0x13 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - b _0807ADB2 - .align 2, 0 -_0807ADA0: .4byte 0x00000163 -_0807ADA4: .4byte gPlayerState -_0807ADA8: - adds r2, r4, #0 - adds r2, #0x3c - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 -_0807ADB2: - strb r0, [r2] -_0807ADB4: - pop {r4, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807ADB8.inc b/asm/non_matching/playerUtils/sub_0807ADB8.inc deleted file mode 100644 index e0ebea74..00000000 --- a/asm/non_matching/playerUtils/sub_0807ADB8.inc +++ /dev/null @@ -1,56 +0,0 @@ - .syntax unified - push {r4, lr} - adds r2, r0, #0 - ldr r3, _0807ADF4 @ =gPlayerState - adds r0, r3, #0 - adds r0, #0x92 - ldrh r1, [r0] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _0807AE1C - movs r0, #0x26 - adds r0, r0, r3 - mov ip, r0 - ldrb r0, [r0] - movs r1, #0x80 - eors r0, r1 - mov r1, ip - strb r0, [r1] - movs r1, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r4, r0, #0x18 - cmp r4, #0 - beq _0807ADF8 - adds r1, r3, #0 - adds r1, #0x89 - movs r0, #0x78 - strb r0, [r1] - b _0807AE0E - .align 2, 0 -_0807ADF4: .4byte gPlayerState -_0807ADF8: - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - adds r0, r3, #0 - adds r0, #0x89 - strb r4, [r0] -_0807AE0E: - ldr r0, _0807AE18 @ =0x00000163 - bl SoundReq - movs r0, #1 - b _0807AE1E - .align 2, 0 -_0807AE18: .4byte 0x00000163 -_0807AE1C: - movs r0, #0 -_0807AE1E: - pop {r4, pc} - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807AE20.inc b/asm/non_matching/playerUtils/sub_0807AE20.inc deleted file mode 100644 index fd809dea..00000000 --- a/asm/non_matching/playerUtils/sub_0807AE20.inc +++ /dev/null @@ -1,98 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0x17 - bne _0807AE32 - ldr r0, _0807AE58 @ =gPlayerState - ldrb r0, [r0, #0xa] - cmp r0, #0 - bne _0807AE74 -_0807AE32: - ldr r0, _0807AE5C @ =gRoomControls - ldrh r0, [r0] - cmp r0, #0 - bne _0807AE74 - ldr r0, _0807AE58 @ =gPlayerState - adds r0, #0x92 - ldrh r1, [r0] - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _0807AE74 - movs r0, #0x72 - bl GetInventoryValue - cmp r0, #1 - bne _0807AE60 - movs r0, #0xe0 - lsls r0, r0, #1 - b _0807AE64 - .align 2, 0 -_0807AE58: .4byte gPlayerState -_0807AE5C: .4byte gRoomControls -_0807AE60: - movs r0, #0xc0 - lsls r0, r0, #1 -_0807AE64: - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl sub_08079520 - movs r0, #0xb1 - lsls r0, r0, #1 - bl SoundReq -_0807AE74: - movs r0, #0x10 - bl sub_080793E4 - cmp r0, #0 - beq _0807AEA8 - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0x14 - strb r0, [r1] - adds r1, #5 - movs r0, #4 - strb r0, [r1] - ldrb r0, [r4, #0x14] - lsls r0, r0, #2 - movs r1, #0x10 - eors r0, r1 - adds r1, r4, #0 - adds r1, #0x3e - strb r0, [r1] - movs r0, #2 - rsbs r0, r0, #0 - bl ModHealth - movs r0, #0x7a - bl SoundReq -_0807AEA8: - ldrb r1, [r4, #0x15] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0807AECC - ldr r0, _0807AEC8 @ =gRoomTransition - ldr r0, [r0] - movs r1, #0xf - ands r0, r1 - cmp r0, #0 - bne _0807AEDE - adds r0, r4, #0 - movs r1, #4 - bl CreateRandomWaterTrace - b _0807AEDE - .align 2, 0 -_0807AEC8: .4byte gRoomTransition -_0807AECC: - ldr r0, _0807AEE0 @ =gRoomTransition - ldr r0, [r0] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _0807AEDE - adds r0, r4, #0 - bl CreateWaterTrace -_0807AEDE: - pop {r4, pc} - .align 2, 0 -_0807AEE0: .4byte gRoomTransition - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807B480.inc b/asm/non_matching/playerUtils/sub_0807B480.inc deleted file mode 100644 index 5b5a93f5..00000000 --- a/asm/non_matching/playerUtils/sub_0807B480.inc +++ /dev/null @@ -1,108 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - adds r7, r1, #0 - movs r1, #2 - bl sub_0807B464 - cmp r0, #0 - beq _0807B558 - adds r0, r6, #0 - subs r0, #0x40 - movs r1, #2 - bl sub_0807B464 - adds r5, r0, #0 - adds r0, r6, #1 - movs r1, #2 - bl sub_0807B464 - lsls r0, r0, #1 - orrs r5, r0 - adds r4, r6, #0 - adds r4, #0x40 - adds r0, r4, #0 - movs r1, #2 - bl sub_0807B464 - lsls r0, r0, #2 - orrs r5, r0 - subs r0, r6, #1 - movs r1, #2 - bl sub_0807B464 - lsls r0, r0, #3 - orrs r5, r0 - adds r0, r6, #0 - adds r0, #0x41 - movs r1, #1 - bl sub_0807B464 - lsls r0, r0, #1 - orrs r5, r0 - adds r0, r6, #0 - adds r0, #0x3f - movs r1, #1 - bl sub_0807B464 - lsls r0, r0, #3 - orrs r5, r0 - adds r0, r4, #0 - movs r1, #2 - bl GetTileType - cmp r0, #0 - beq _0807B4FA - adds r0, r6, #0 - adds r0, #0x80 - movs r1, #1 - bl sub_0807B464 - lsls r0, r0, #2 - orrs r5, r0 -_0807B4FA: - ldr r0, _0807B514 @ =gUnk_0811C2CC - lsls r1, r5, #1 - adds r1, r1, r0 - ldrh r4, [r1] - adds r0, r6, #0 - movs r1, #2 - bl GetTileType - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - ldr r2, _0807B518 @ =gUnk_0811C2EC - movs r3, #0 - b _0807B51E - .align 2, 0 -_0807B514: .4byte gUnk_0811C2CC -_0807B518: .4byte gUnk_0811C2EC -_0807B51C: - adds r2, #6 -_0807B51E: - ldrh r1, [r2] - cmp r1, #0 - beq _0807B52A - cmp r0, r1 - bne _0807B51C - ldrh r3, [r2, #2] -_0807B52A: - movs r0, #1 - lsls r0, r7 - bics r3, r0 - ldr r2, _0807B534 @ =gUnk_0811C2EC - b _0807B53A - .align 2, 0 -_0807B534: .4byte gUnk_0811C2EC -_0807B538: - adds r2, #6 -_0807B53A: - ldrh r0, [r2] - cmp r0, #0 - beq _0807B54E - ldrh r0, [r2, #2] - cmp r3, r0 - bne _0807B538 - ldrh r0, [r2, #4] - cmp r5, r0 - bne _0807B538 - ldrh r4, [r2] -_0807B54E: - adds r0, r4, #0 - adds r1, r6, #0 - movs r2, #2 - bl SetTileType -_0807B558: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807B55C.inc b/asm/non_matching/playerUtils/sub_0807B55C.inc deleted file mode 100644 index 80c33c7f..00000000 --- a/asm/non_matching/playerUtils/sub_0807B55C.inc +++ /dev/null @@ -1,39 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r6, r1, #0 - adds r7, r2, #0 - bl sub_0807B464 - cmp r0, #0 - beq _0807B5AC - adds r0, r5, #0 - subs r0, #0x40 - adds r1, r6, #0 - bl sub_0807B464 - adds r4, r0, #0 - adds r0, r5, #1 - adds r1, r6, #0 - bl sub_0807B464 - lsls r0, r0, #1 - orrs r4, r0 - adds r0, r5, #0 - adds r0, #0x40 - adds r1, r6, #0 - bl sub_0807B464 - lsls r0, r0, #2 - orrs r4, r0 - subs r0, r5, #1 - adds r1, r6, #0 - bl sub_0807B464 - lsls r0, r0, #3 - orrs r0, r4 - lsls r0, r0, #1 - adds r0, r0, r7 - ldrh r0, [r0] - adds r1, r5, #0 - adds r2, r6, #0 - bl SetTileType -_0807B5AC: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807B5B0.inc b/asm/non_matching/playerUtils/sub_0807B5B0.inc deleted file mode 100644 index e2555d37..00000000 --- a/asm/non_matching/playerUtils/sub_0807B5B0.inc +++ /dev/null @@ -1,40 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r3, r0, #0 - movs r1, #0x2e - ldrsh r0, [r3, r1] - ldr r6, _0807B5F8 @ =gUnk_0811C456 - ldrb r1, [r3, #0x14] - movs r2, #6 - ands r2, r1 - lsls r1, r2, #1 - adds r1, r1, r6 - movs r4, #0 - ldrsh r1, [r1, r4] - adds r0, r0, r1 - ldr r5, _0807B5FC @ =gRoomControls - ldrh r1, [r5, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r4, #0x3f - ands r0, r4 - movs r7, #0x32 - ldrsh r1, [r3, r7] - adds r2, #1 - lsls r2, r2, #1 - adds r2, r2, r6 - movs r3, #0 - ldrsh r2, [r2, r3] - adds r1, r1, r2 - ldrh r2, [r5, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r4 - lsls r1, r1, #6 - orrs r0, r1 - bl sub_0807B600 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0807B5F8: .4byte gUnk_0811C456 -_0807B5FC: .4byte gRoomControls - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807B600.inc b/asm/non_matching/playerUtils/sub_0807B600.inc deleted file mode 100644 index dc477a3b..00000000 --- a/asm/non_matching/playerUtils/sub_0807B600.inc +++ /dev/null @@ -1,173 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r5, #0 - subs r6, #0x40 - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - movs r1, #1 - bl sub_080B1AE0 - cmp r0, #0x56 - beq _0807B61A - movs r0, #0 - b _0807B76E -_0807B61A: - adds r0, r5, #0 - movs r1, #1 - bl GetTileType - adds r1, r0, #0 - ldr r0, _0807B634 @ =0x0000026A - cmp r1, r0 - bne _0807B638 - adds r0, r5, #0 - bl sub_0807B820 - b _0807B76C - .align 2, 0 -_0807B634: .4byte 0x0000026A -_0807B638: - ldr r0, _0807B648 @ =0x00000267 - cmp r1, r0 - bne _0807B64C - adds r0, r5, #0 - adds r0, #0x40 - bl sub_0807B820 - b _0807B76C - .align 2, 0 -_0807B648: .4byte 0x00000267 -_0807B64C: - ldr r0, _0807B65C @ =0x0000027A - cmp r1, r0 - bne _0807B660 - adds r0, r5, #0 - bl sub_0807B8A8 - b _0807B76C - .align 2, 0 -_0807B65C: .4byte 0x0000027A -_0807B660: - ldr r0, _0807B670 @ =0x00000277 - cmp r1, r0 - bne _0807B674 - adds r0, r5, #0 - adds r0, #0x40 - bl sub_0807B8A8 - b _0807B76C - .align 2, 0 -_0807B670: .4byte 0x00000277 -_0807B674: - ldr r0, _0807B684 @ =0x0000028A - cmp r1, r0 - bne _0807B688 - adds r0, r5, #0 - bl sub_0807B930 - b _0807B76C - .align 2, 0 -_0807B684: .4byte 0x0000028A -_0807B688: - ldr r0, _0807B698 @ =0x00000287 - cmp r1, r0 - bne _0807B69C - adds r0, r5, #0 - adds r0, #0x40 - bl sub_0807B930 - b _0807B76C - .align 2, 0 -_0807B698: .4byte 0x00000287 -_0807B69C: - adds r0, r5, #0 - movs r1, #2 - bl GetTileType - cmp r0, #0 - beq _0807B6EC - ldr r0, _0807B6E8 @ =0x000002F2 - adds r1, r5, #0 - movs r2, #1 - bl SetTileType - adds r0, r6, #0 - movs r1, #1 - bl sub_080B1B44 - cmp r0, #3 - bne _0807B6CA - movs r0, #0xbd - lsls r0, r0, #2 - adds r1, r6, #0 - movs r2, #1 - bl SetTileType -_0807B6CA: - adds r0, r5, #0 - adds r0, #0x40 - movs r1, #1 - bl sub_080B1B44 - cmp r0, #3 - bne _0807B6F8 - movs r0, #0xbd - lsls r0, r0, #2 - adds r1, r5, #0 - movs r2, #1 - bl SetTileType - b _0807B6F8 - .align 2, 0 -_0807B6E8: .4byte 0x000002F2 -_0807B6EC: - movs r0, #0xbd - lsls r0, r0, #2 - adds r1, r5, #0 - movs r2, #1 - bl SetTileType -_0807B6F8: - adds r0, r6, #0 - movs r1, #2 - bl sub_0807B464 - cmp r0, #0 - beq _0807B748 - movs r0, #0 - adds r1, r6, #0 - movs r2, #2 - bl SetTileType - adds r0, r6, #0 - movs r1, #1 - bl GetTileType - ldr r1, _0807B770 @ =0x000002F2 - cmp r0, r1 - bne _0807B728 - movs r0, #0xbd - lsls r0, r0, #2 - adds r1, r6, #0 - movs r2, #1 - bl SetTileType -_0807B728: - adds r0, r5, #1 - ldr r4, _0807B774 @ =gUnk_0811C2AC - movs r1, #1 - adds r2, r4, #0 - bl sub_0807B55C - subs r0, r5, #1 - movs r1, #1 - adds r2, r4, #0 - bl sub_0807B55C - adds r0, r6, #0 - movs r1, #1 - adds r2, r4, #0 - bl sub_0807B55C -_0807B748: - adds r0, r6, #1 - movs r1, #3 - bl sub_0807B480 - subs r0, r6, #1 - movs r1, #1 - bl sub_0807B480 - adds r0, r6, #0 - adds r0, #0x40 - movs r1, #0 - bl sub_0807B480 - adds r0, r6, #0 - subs r0, #0x40 - movs r1, #2 - bl sub_0807B480 -_0807B76C: - movs r0, #1 -_0807B76E: - pop {r4, r5, r6, pc} - .align 2, 0 -_0807B770: .4byte 0x000002F2 -_0807B774: .4byte gUnk_0811C2AC - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807B778.inc b/asm/non_matching/playerUtils/sub_0807B778.inc deleted file mode 100644 index e64d2063..00000000 --- a/asm/non_matching/playerUtils/sub_0807B778.inc +++ /dev/null @@ -1,44 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - lsls r1, r6, #0x18 - lsrs r1, r1, #0x18 - bl sub_080B1AE0 - cmp r0, #0xd - bne _0807B7D0 - adds r0, r5, #0 - subs r0, #0x40 - adds r1, r6, #0 - bl sub_0807B434 - adds r4, r0, #0 - adds r0, r5, #1 - adds r1, r6, #0 - bl sub_0807B434 - lsls r0, r0, #1 - orrs r4, r0 - adds r0, r5, #0 - adds r0, #0x40 - adds r1, r6, #0 - bl sub_0807B434 - lsls r0, r0, #2 - orrs r4, r0 - subs r0, r5, #1 - adds r1, r6, #0 - bl sub_0807B434 - lsls r0, r0, #3 - orrs r0, r4 - ldr r1, _0807B7D4 @ =gUnk_0811C466 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - adds r1, r5, #0 - adds r2, r6, #0 - bl SetTileType -_0807B7D0: - pop {r4, r5, r6, pc} - .align 2, 0 -_0807B7D4: .4byte gUnk_0811C466 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807BD14.inc b/asm/non_matching/playerUtils/sub_0807BD14.inc deleted file mode 100644 index 4055abd2..00000000 --- a/asm/non_matching/playerUtils/sub_0807BD14.inc +++ /dev/null @@ -1,87 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r5, r1, #0 - movs r1, #0x2e - ldrsh r2, [r0, r1] - movs r3, #0x32 - ldrsh r1, [r0, r3] - adds r0, r2, #0 - adds r2, r5, #0 - bl sub_0807BEEC - adds r3, r0, #0 - cmp r3, #0xff - beq _0807BDB4 - ldr r1, _0807BD68 @ =gRoomControls - movs r2, #0 - movs r0, #2 - strb r0, [r1, #2] - strb r2, [r1, #3] - movs r4, #1 - strh r4, [r1] - strb r3, [r1, #5] - strb r5, [r1, #0x10] - bl GetCurrentRoomInfo - adds r2, r0, #0 - ldr r1, _0807BD6C @ =gArea - ldr r3, _0807BD70 @ =0x0000085C - adds r0, r1, r3 - str r2, [r0] - ldrb r0, [r1, #0xd] - ands r4, r0 - cmp r4, #0 - beq _0807BD98 - cmp r5, #1 - beq _0807BD7E - cmp r5, #1 - blo _0807BD74 - cmp r5, #2 - beq _0807BD86 - cmp r5, #3 - beq _0807BD90 - b _0807BD98 - .align 2, 0 -_0807BD68: .4byte gRoomControls -_0807BD6C: .4byte gArea -_0807BD70: .4byte 0x0000085C -_0807BD74: - ldrh r0, [r2, #6] - ldrh r1, [r2, #2] - subs r0, r0, r1 - strh r0, [r2, #6] - b _0807BD98 -_0807BD7E: - ldrh r0, [r2] - ldrh r1, [r2, #4] - adds r0, r0, r1 - b _0807BD96 -_0807BD86: - ldrh r0, [r2, #2] - ldrh r3, [r2, #6] - adds r0, r0, r3 - strh r0, [r2, #6] - b _0807BD98 -_0807BD90: - ldrh r0, [r2, #4] - ldrh r1, [r2] - subs r0, r0, r1 -_0807BD96: - strh r0, [r2, #4] -_0807BD98: - ldr r2, _0807BDB0 @ =gPlayerEntity - ldrb r1, [r2, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r2, #0x11] - bl SetInitializationPriority - movs r0, #1 - b _0807BDB6 - .align 2, 0 -_0807BDB0: .4byte gPlayerEntity -_0807BDB4: - movs r0, #0 -_0807BDB6: - pop {r4, r5, pc} - .syntax divided diff --git a/include/player.h b/include/player.h index d9c869f5..e52cedf4 100644 --- a/include/player.h +++ b/include/player.h @@ -272,7 +272,7 @@ typedef struct { /*0x3e*/ u8 swordDamage : 2; /* */ u8 filler14 : 6; /*0x3f*/ u8 field_0x3f; - /*0x40*/ u8 path_memory[64]; + /*0x40*/ u32 path_memory[16]; /*0x80*/ u16 speed_modifier; /*0x82*/ u8 field_0x82[9]; /*0x8b*/ u8 controlMode; diff --git a/include/save.h b/include/save.h index 6536cc76..1941a722 100644 --- a/include/save.h +++ b/include/save.h @@ -54,7 +54,8 @@ typedef struct { /*0x086*/ u8 filler86[0x2]; /*0x088*/ PlayerRoomStatus saved_status; /**< Player room status. */ /*0x0A8*/ Stats stats; /**< Player stats. */ - /*0x0D0*/ u8 fillerD0[0x46]; + /*0x0D0*/ u8 fillerD0[34]; + u8 inventory[36]; /*0x116*/ u8 didAllFusions; /*0x117*/ u8 unk117; /*0x118*/ u8 unk118[0x13]; diff --git a/src/playerUtils.c b/src/playerUtils.c index d5062e2a..dc7f4f98 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -92,6 +92,40 @@ extern const u16 gUnk_0811C110[]; extern const u16 gUnk_08007CAC[]; +u32 sub_0807BEEC(u32 param_1, u32 param_2, u32 param_3); + +extern const u16 gUnk_0811C466[]; +bool32 sub_0807B434(u32 position, u32 layer); + +extern const u16 gUnk_0811C2AC[]; + +void sub_0807B820(u32); +void sub_0807B8A8(u32); +void sub_0807B930(u32); +bool32 sub_0807B464(u32 param_1, u32 param_2); +void sub_0807B55C(u32, u32, u16*); +void sub_0807B480(u32, u32); + +extern const s16 gUnk_0811C456[]; + +bool32 sub_0807B600(u32); + +bool32 sub_0807B464(u32 tilePos, u32 param_2); + +extern const u16 gUnk_0811C2CC[]; +extern const u16 gUnk_0811C2EC[]; + +bool32 sub_0807B464(u32 param_1, u32 param_2); + +extern void CreateRandomWaterTrace(Entity* parent, int range); +void sub_08079520(Entity* this); + +bool32 sub_0807ADB8(Entity*); + +extern const u16* sub_0806FC50(u32 param_1, u32 param_2); + +bool32 sub_08079F48(u32 param_1, u32 param_2); + void sub_08077698(PlayerEntity* this) { ItemBehavior* puVar2; u32 idx; @@ -139,41 +173,46 @@ bool32 sub_08077758(PlayerEntity* this) { return FALSE; } -NONMATCH("asm/non_matching/playerUtils/sub_080777A0.inc", bool32 sub_080777A0(void)) { +bool32 sub_080777A0(void) { if ((gPlayerState.field_0x92 & 0x80) != 0) { if ((gPlayerState.flags & PL_CLONING) != 0) { gPlayerState.chargeState.action = 1; DeleteClones(); + return TRUE; } else { - if (gArea.portal_mode != 2) { - if (gArea.portal_mode == 3) { + switch (gArea.portal_mode) { + case 2: + if (gArea.unk1A == 0) { + gPlayerEntity.subAction += 1; + } + break; + case 3: if ((gArea.unk1A == 0) && ((gPlayerState.flags & PL_MINISH) != 0)) { gPlayerEntity.subAction += 1; gPlayerEntity.flags &= ~ENT_COLLIDE; RequestPriorityDuration(&gPlayerEntity, 0xb4); return TRUE; } - } else if ((((gUnk_0200AF00.unk_2c == 0xc) && (gPlayerState.field_0x1c == 0)) && - (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)))))) { - gPlayerState.queued_action = 0x18; - } - return FALSE; - } - if (gArea.unk1A == 0) { - gPlayerEntity.subAction += 1; + return FALSE; + default: + if ((((gUnk_0200AF00.unk_2c == 0xc) && (gPlayerState.field_0x1c == 0)) && + (gPlayerState.floor_type != 0x11)) && + ((((gPlayerState.field_0x90 & 0xf00) != 0 && + ((gPlayerState.flags & (PL_BURNING | PL_ROLLING)) == 0)) && + ((gPlayerState.jump_status == 0 && (gPlayerState.field_0x3[1] == 0)))))) { + gPlayerState.queued_action = 0x18; + } + return FALSE; } } + return TRUE; } else { if ((gPlayerState.flags & PL_USE_PORTAL) == 0) { return FALSE; } + return TRUE; } - return TRUE; } -END_NONMATCH NONMATCH("asm/non_matching/playerUtils/sub_08077880.inc", void sub_08077880(u32 param_1, u32 param_2, u32 param_3)) { ItemBehavior* item; @@ -197,9 +236,8 @@ NONMATCH("asm/non_matching/playerUtils/sub_08077880.inc", void sub_08077880(u32 } END_NONMATCH -NONMATCH("asm/non_matching/playerUtils/sub_080778CC.inc", bool32 sub_080778CC(void)) { - s32 iVar1; - ItemBehavior* pIVar2; +bool32 sub_080778CC(void) { + ItemBehavior* item; if (!((((gPlayerState.flags & (PL_USE_PORTAL | PL_MINISH | PL_ROLLING)) == 0) && (((gNewPlayerEntity.unk_79 != 0 || (gPlayerState.heldObject != 0)) || @@ -207,16 +245,15 @@ NONMATCH("asm/non_matching/playerUtils/sub_080778CC.inc", bool32 sub_080778CC(vo (((sub_080789A8() != 0 || ((gPlayerState.field_0x90 & 0xf03) == 0)))))) { return FALSE; } - pIVar2 = sub_0807794C(0x1b); - if (pIVar2 == NULL) { - return FALSE; - } else { - pIVar2->behaviorID = 0x1b; - pIVar2->field_0x5[4] = 2; + item = sub_0807794C(0x1b); + if (item != NULL) { + item->behaviorID = 0x1b; + item->field_0x5[4] = gUnk_0811BE48[0].unk0[0x145]; return TRUE; + } else { + return FALSE; } } -END_NONMATCH ItemBehavior* sub_0807794C(u32 param_1) { if (((((gPlayerState.queued_action == PLAYER_ROLL) && (param_1 != 0x1b)) || @@ -1423,7 +1460,37 @@ void sub_08079E58(s32 speed, u32 direction) { sub_0807A5B8(direction); } -ASM_FUNC("asm/non_matching/playerUtils/sub_08079E90.inc", bool32 sub_08079E90(u32 a)) +bool32 sub_08079E90(u32 param_1) { + s16 tmp1; + s16 tmp2; + + if (gPlayerEntity.direction & DirectionEast) { + if (gPlayerEntity.direction & DirectionSouth) { + tmp2 = -gPlayerEntity.hitbox->unk2[0]; + } else { + tmp2 = gPlayerEntity.hitbox->unk2[0]; + } + tmp1 = gPlayerEntity.hitbox->unk2[1]; + } else { + tmp2 = gPlayerEntity.hitbox->unk2[2]; + if (gPlayerEntity.direction != DirectionNorth) { + tmp1 = gPlayerEntity.hitbox->unk2[3]; + } else { + tmp1 = -gPlayerEntity.hitbox->unk2[3]; + } + } + if (!sub_08079F48(param_1, sub_080B1AF0(&gPlayerEntity, tmp2, tmp1))) { + if ((gPlayerEntity.direction & DirectionSouth) != 0) { + tmp1 = -tmp1; + } else { + tmp2 = -tmp2; + } + if (!sub_08079F48(param_1, sub_080B1AF0(&gPlayerEntity, tmp2, tmp1))) { + return FALSE; + } + } + return TRUE; +} bool32 sub_08079F48(u32 param_1, u32 param_2) { if (gUnk_0811C118[param_1 >> 2] == param_2) { @@ -1468,7 +1535,38 @@ void sub_0807A050(void) { } } -ASM_FUNC("asm/non_matching/playerUtils/sub_0807A094.inc", u32 sub_0807A094(u32 a)) +u32 sub_0807A094(u32 param_1) { + bool32 condition; + u32 result = 0x16; + if (gPlayerState.hurtBlinkSpeed != 0) { + result = 0x1b; + if (0x78 < gPlayerState.hurtBlinkSpeed) { + result = 0x1a; + } + } else { + if (gSave.stats.charm != 0) { + condition = TRUE; + if (((param_1 == 0) && (gSave.stats.charmTimer < 0xb4)) && ((gSave.stats.charmTimer & 8) != 0)) { + condition = FALSE; + } + if (condition) { + switch (gSave.stats.charm) { + case 0x2f: + result = 0x18; + break; + case 0x31: + result = 0x17; + break; + case 0x30: + default: + result = 0x19; + break; + } + } + } + } + return result; +} void DeleteClones(void) { gPlayerClones[0] = NULL; @@ -1549,7 +1647,33 @@ ASM_FUNC("asm/non_matching/playerUtils/sub_0807A5B8.inc", void sub_0807A5B8(u32 ASM_FUNC("asm/non_matching/playerUtils/sub_0807A750.inc", void sub_0807A750()) -ASM_FUNC("asm/non_matching/playerUtils/sub_0807A894.inc", u32 sub_0807A894(Entity* a)) +u32 sub_0807A894(Entity* this) { + s32 x; + s32 y; + switch (this->direction) { + case DirectionNorth: + y = -8; + x = 0; + break; + case DirectionSouth: + y = 5; // why??? ._. + x = 0; + break; + case DirectionEast: + y = 0; + x = 8; + break; + case DirectionWest: + y = 0; + x = -8; + break; + default: + y = 0; + x = 0; + break; + } + return GetRelativeCollisionTile(this, x, y); +} void nullsub_505(void) { } @@ -1599,17 +1723,160 @@ void sub_0807AABC(Entity* this) { } } -ASM_FUNC("asm/non_matching/playerUtils/sub_0807AAF8.inc", void sub_0807AAF8(Entity* a, u32 b)) +void sub_0807AAF8(Entity* this, u32 tilePos) { + u32 tmp; + u32 index; + if (this->z.HALF.HI == 0) { + tilePos |= this->collisionLayer << 0x1e; + for (index = 0; index < 0xf; index++) { + if (gPlayerState.path_memory[index] == tilePos) { + break; + } + tmp = gPlayerState.path_memory[index]; + gPlayerState.path_memory[index] = tilePos; + tilePos = tmp; + } + gPlayerState.path_memory[index] = tilePos; + } +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807AB44.inc", void sub_0807AB44()) +void sub_0807AB44(Entity* this, s32 xOffset, s32 yOffset) { + Entity* object; + const u16* ptr = + sub_0806FC50(GetTileType(COORD_TO_TILE_OFFSET(this, -xOffset, -yOffset), this->collisionLayer), 0xb); + if (ptr != NULL) { + if (ptr[3] == 0x76) { + object = CreateObject(OBJECT_2A, 1, 0); + if (object != NULL) { + PositionRelative(this, object, xOffset << 0x10, yOffset << 0x10); + sub_08004168(object); + sub_0807B7D8(ptr[3], COORD_TO_TILE(object), object->collisionLayer); + } + } else { + object = CreateObject(OBJECT_2A, 2, 0); + if (object != NULL) { + PositionRelative(this, object, xOffset << 0x10, yOffset << 0x10); + object->child = (Entity*)ptr; + SetTile(0x404f, COORD_TO_TILE(object), object->collisionLayer); + } + } + } +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807AC54.inc", u32 sub_0807AC54(Entity* a)) +bool32 sub_0807AC54(Entity* this) { + if (gPlayerState.field_0x11 == 0) { + return FALSE; + } -ASM_FUNC("asm/non_matching/playerUtils/sub_0807ACCC.inc", void sub_0807ACCC(Entity* a)) + switch (gPlayerState.floor_type) { + case SURFACE_LADDER: + this->x.HALF.HI = (this->x.HALF.HI & 0xfff0) | 8; + // fallthrough + case SURFACE_CLIMB_WALL: + this->action = 0x1d; + this->subAction = 0; + this->y.HALF.LO = 0; + gPlayerState.animation = 0x2cf; + return TRUE; + case SURFACE_AUTO_LADDER: + this->x.HALF.HI = (this->x.HALF.HI & 0xfff0) | 8; + // fallthrough + case SURFACE_2C: + this->action = 0x1d; + this->subAction = 1; + this->y.HALF.LO = 0; + return TRUE; + default: + return FALSE; + } +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807ADB8.inc", void sub_0807ADB8()) +void sub_0807ACCC(Entity* this) { + s32 speed; + this->spritePriority.b1 = 0; + this->knockbackDuration = 0; + if (GetInventoryValue(ITEM_SWIM_BUTTERFLY) == 1) { + speed = 0x100; + } else { + speed = 0xc0; + } + if (speed > *(s16*)&this->speed) { + this->speed = speed; + this->direction = gPlayerState.field_0xd; + if ((gPlayerState.swim_state & 0xf) != 1) { + return; + } + } else { + this->speed -= 4; + } + if (gPlayerState.field_0x82[7] == 0) { + if (!sub_0807ADB8(this)) { + sub_0807AE20(this); + } + } else { + gPlayerState.field_0x82[7]--; + if (gPlayerState.field_0x82[7] != 0) { + sub_0807ADB8(this); + } else { + gPlayerState.swim_state &= 0x7f; + this->spritePriority.b0 = 4; + SoundReq(SFX_163); + } + } + if ((gPlayerState.swim_state & 0x80) != 0) { + this->collisionFlags |= 4; + this->spritePriority.b0 = 6; + } else { + this->collisionFlags &= 0xfb; + } +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807AE20.inc", void sub_0807AE20(Entity* e)) +bool32 sub_0807ADB8(Entity* this) { + u8 tmp; + if ((gPlayerState.field_0x92 & 0x10) != 0) { + gPlayerState.swim_state ^= 0x80; + tmp = (gPlayerState.swim_state & 0x80); + if (tmp != 0) { + gPlayerState.field_0x82[7] = 0x78; + } else { + this->spritePriority.b0 = 4; + gPlayerState.field_0x82[7] = tmp; + } + SoundReq(SFX_163); + return TRUE; + } else { + return FALSE; + } +} + +void sub_0807AE20(Entity* this) { + if ((((this->action != 0x17) || (gPlayerState.field_0xa == 0)) && (gRoomControls.reload_flags == 0)) && + ((gPlayerState.field_0x92 & 8) != 0)) { + if (GetInventoryValue(ITEM_SWIM_BUTTERFLY) == 1) { + this->speed = 0x1c0; + } else { + this->speed = 0x180; + } + sub_08079520(this); + SoundReq(SFX_162); + } + if (sub_080793E4(0x10)) { + this->iframes = 0x14; + this->knockbackDuration = 4; + this->knockbackDirection = this->animationState << 2 ^ 0x10; + ModHealth(-2); + SoundReq(SFX_PLY_VO6); + } + if ((this->direction & 0x80) != 0) { + if ((gRoomTransition.frameCount & 0xf) == 0) { + CreateRandomWaterTrace(this, 4); + } + } else { + if ((gRoomTransition.frameCount & 7) == 0) { + CreateWaterTrace(this); + } + } +} void UpdatePlayerSkills(void) { gPlayerState.skills = SKILL_NONE; @@ -1860,15 +2127,121 @@ bool32 sub_0807B464(u32 param_1, u32 param_2) { return sub_080B1AE0(param_1, param_2) == 0x56; } -ASM_FUNC("asm/non_matching/playerUtils/sub_0807B480.inc", void sub_0807B480()) +void sub_0807B480(u32 tilePos, u32 param_2) { + u32 tmp1; + u16 tmp2; + u16 tmp3; + u16 tileType; + const u16* ptr; -ASM_FUNC("asm/non_matching/playerUtils/sub_0807B55C.inc", void sub_0807B55C()) + if (sub_0807B464(tilePos, 2)) { + tmp1 = sub_0807B464(tilePos - 0x40, 2); + tmp1 |= sub_0807B464(tilePos + 1, 2) << 1; + tmp1 |= sub_0807B464(tilePos + 0x40, 2) << 2; + tmp1 |= sub_0807B464(tilePos - 1, 2) << 3; + tmp1 |= sub_0807B464(tilePos + 0x41, 1) << 1; + tmp1 |= sub_0807B464(tilePos + 0x3f, 1) << 3; + if (GetTileType(tilePos + 0x40, 2) != 0) { + tmp1 |= sub_0807B464(tilePos + 0x80, 1) << 2; + } + tmp2 = gUnk_0811C2CC[tmp1]; + tileType = GetTileType(tilePos, 2); + ptr = gUnk_0811C2EC; + tmp3 = 0; + for (; *ptr != 0; ptr = ptr + 3) { + if (tileType == ptr[0]) { + tmp3 = ptr[1]; + break; + } + } + tmp3 = tmp3 & ~(1 << (param_2)); + for (ptr = gUnk_0811C2EC; *ptr != 0; ptr = ptr + 3) { + if ((tmp3 == ptr[1]) && (tmp1 == ptr[2])) { + tmp2 = ptr[0]; + break; + } + } + SetTileType(tmp2, tilePos, 2); + } +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807B5B0.inc", void sub_0807B5B0()) +void sub_0807B55C(u32 param_1, u32 param_2, u16* param_3) { + u32 tmp; + if (sub_0807B464(param_1, param_2)) { + tmp = sub_0807B464(param_1 - 0x40, param_2); + tmp |= sub_0807B464(param_1 + 1, param_2) << 1; + tmp |= sub_0807B464(param_1 + 0x40, param_2) << 2; + tmp |= sub_0807B464(param_1 - 1, param_2) << 3; + SetTileType(param_3[tmp], param_1, param_2); + } +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807B600.inc", void sub_0807B600()) +bool32 sub_0807B5B0(Entity* this) { + return sub_0807B600(COORD_TO_TILE_OFFSET(this, -gUnk_0811C456[(this->animationState & 6)], + -gUnk_0811C456[(this->animationState & 6) + 1])); +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807B778.inc", void sub_0807B778(u32 a, u32 b)) +u32 sub_0807B600(u32 param_1) { + u32 tileType; + u32 tile; + + tile = param_1 - 0x40; + if (sub_080B1AE0(param_1, 1) != 0x56) { + return FALSE; + } else { + tileType = GetTileType(param_1, 1); + if (tileType == 0x26a) { + sub_0807B820(param_1); + } else if (tileType == 0x267) { + sub_0807B820(param_1 + 0x40); + } else if (tileType == 0x27a) { + sub_0807B8A8(param_1); + } else if (tileType == 0x277) { + sub_0807B8A8(param_1 + 0x40); + } else if (tileType == 0x28a) { + sub_0807B930(param_1); + } else if (tileType == 0x287) { + sub_0807B930(param_1 + 0x40); + } else { + if (GetTileType(param_1, 2) != 0) { + SetTileType(0x2f2, param_1, 1); + if (sub_080B1B44(tile, 1) == 3) { + SetTileType(0x2f4, tile, 1); + } + if (sub_080B1B44(param_1 + 0x40, 1) == 3) { + SetTileType(0x2f4, param_1, 1); + } + } else { + SetTileType(0x2f4, param_1, 1); + } + if (sub_0807B464(tile, 2)) { + SetTileType(0, tile, 2); + if (GetTileType(tile, 1) == 0x2f2) { + SetTileType(0x2f4, tile, 1); + } + sub_0807B55C(param_1 + 1, 1, (u16*)&gUnk_0811C2AC); + sub_0807B55C(param_1 - 1, 1, (u16*)&gUnk_0811C2AC); + sub_0807B55C(tile, 1, (u16*)&gUnk_0811C2AC); + } + sub_0807B480(tile + 1, 3); + sub_0807B480(tile - 1, 1); + sub_0807B480(tile + 0x40, 0); + sub_0807B480(tile - 0x40, 2); + } + return TRUE; + } +} + +void sub_0807B778(u32 position, u32 layer) { + u32 tmp; + if (sub_080B1AE0(position, layer) == 0xd) { + tmp = sub_0807B434(position - 0x40, layer); + tmp |= sub_0807B434(position + 1, layer) << 1; + tmp |= sub_0807B434(position + 0x40, layer) << 2; + tmp |= sub_0807B434(position - 1, layer) << 3; + SetTileType(gUnk_0811C466[tmp], position, layer); + } +} void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) { if (param_1 == 53) { @@ -2048,7 +2421,39 @@ void sub_0807BC84(void) { } } -ASM_FUNC("asm/non_matching/playerUtils/sub_0807BD14.inc", bool32 sub_0807BD14(Entity* a, u32 b)) +bool32 sub_0807BD14(Entity* this, u32 scrollDirection) { + u32 room = sub_0807BEEC(this->x.HALF.HI, this->y.HALF.HI, scrollDirection); + if (room != 0xff) { + gRoomControls.unk3 = 2; + gRoomControls.unk4 = 0; + gRoomControls.reload_flags = 1; + gRoomControls.room = room; + gRoomControls.scroll_direction = scrollDirection; + gArea.pCurrentRoomInfo = GetCurrentRoomInfo(); + if (gArea.unk_0c_0 != 0) { + switch (scrollDirection) { + case 0: + gArea.pCurrentRoomInfo->map_y -= gArea.pCurrentRoomInfo->pixel_height; + break; + case 1: + gArea.pCurrentRoomInfo->map_x = gArea.pCurrentRoomInfo->map_x + gArea.pCurrentRoomInfo->pixel_width; + break; + case 2: + gArea.pCurrentRoomInfo->map_y = + gArea.pCurrentRoomInfo->map_y + gArea.pCurrentRoomInfo->pixel_height; + break; + case 3: + gArea.pCurrentRoomInfo->map_x = gArea.pCurrentRoomInfo->map_x - gArea.pCurrentRoomInfo->pixel_width; + break; + } + } + gPlayerEntity.updatePriority = 6; + SetInitializationPriority(); + return TRUE; + } else { + return FALSE; + } +} u32 sub_0807BDB8(Entity* this, u32 param_2) { u32 result = 0xff; diff --git a/src/title.c b/src/title.c index d96fdf1d..bc8b30b5 100644 --- a/src/title.c +++ b/src/title.c @@ -92,12 +92,12 @@ static const SaveFile gDemoSave = { .itemButtons = { ITEM_SHIELD, ITEM_SMITH_SWORD }, .rupees = 5, }, - .fillerD0 = { - [34] = 5, - [37] = 4, - [47] = 6, - [51] = 0x40, - [56] = 0x40, + .inventory = { + [0] = 5, + [3] = 4, + [13] = 6, + [17] = 0x40, + [22] = 0x40, }, .flags = { [FLAG_BYTE(FLAG_BANK_G, START)] = FLAG_X(START) | FLAG_X(EZERO_1ST) | FLAG_X(TABIDACHI),