diff --git a/asm/non_matching/projectile13/sub_080AA320.inc b/asm/non_matching/projectile13/sub_080AA320.inc new file mode 100644 index 00000000..fc966357 --- /dev/null +++ b/asm/non_matching/projectile13/sub_080AA320.inc @@ -0,0 +1,41 @@ + .syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x50] + movs r2, #0 + movs r1, #2 + strb r1, [r5, #0xc] + adds r3, r5, #0 + adds r3, #0x82 + movs r0, #1 + strb r0, [r3] + strb r2, [r5, #0xf] + strb r1, [r4, #0xc] + movs r0, #0x30 + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #0x50 + strh r0, [r1] + strh r2, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0 + bl sub_08049F84 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x1c + ands r0, r1 + lsrs r1, r0, #2 + strb r1, [r5, #0x14] + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #1 + bl sub_080AA3E0 + adds r0, r5, #0 + bl sub_080AA1D8 + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/projectile13/sub_080AA374.inc b/asm/non_matching/projectile13/sub_080AA374.inc new file mode 100644 index 00000000..07a8161b --- /dev/null +++ b/asm/non_matching/projectile13/sub_080AA374.inc @@ -0,0 +1,54 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + movs r0, #0 + mov r8, r0 + ldr r5, [r6, #0x54] + cmp r5, #0 + beq _080AA3D8 + ldr r0, [r5, #4] + cmp r0, #0 + beq _080AA3D8 + ldrb r4, [r5, #0x14] + ldr r0, _080AA3CC @ =gUnk_08129D14 + adds r4, r4, r0 + movs r2, #0 + ldrsb r2, [r4, r2] + movs r3, #1 + ldrsb r3, [r4, r3] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0806F824 + adds r7, r0, #0 + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0 + ldrsb r0, [r4, r0] + adds r1, r1, r0 + movs r0, #0x32 + ldrsh r2, [r5, r0] + movs r0, #1 + ldrsb r0, [r4, r0] + adds r2, r2, r0 + adds r0, r6, #0 + movs r3, #8 + bl sub_0806FCB8 + cmp r0, #0 + beq _080AA3D0 + movs r0, #1 + mov r8, r0 + b _080AA3D8 + .align 2, 0 +_080AA3CC: .4byte gUnk_08129D14 +_080AA3D0: + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08004596 +_080AA3D8: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/projectile14/sub_080AA544.inc b/asm/non_matching/projectile14/sub_080AA544.inc new file mode 100644 index 00000000..22945df2 --- /dev/null +++ b/asm/non_matching/projectile14/sub_080AA544.inc @@ -0,0 +1,134 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + ldrb r0, [r6, #0xb] + cmp r0, #8 + bhi _080AA618 + ldr r0, _080AA5E8 @ =gUnk_08129FF8 + mov sb, r0 + movs r1, #0x2e + ldrsh r2, [r6, r1] + ldr r1, _080AA5EC @ =gRoomControls + ldrh r0, [r1, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r2, r0 + ldrb r0, [r6, #0xb] + add r0, sb + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r7, r2, r0 + movs r4, #0 + movs r5, #0 + movs r0, #0x38 + adds r0, r0, r6 + mov r8, r0 +_080AA58E: + mov r1, sb + adds r0, r1, r4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + subs r0, r7, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r2, r8 + ldrb r1, [r2] + bl sub_080002C8 + cmp r0, #0x3e + bne _080AA5AC + adds r5, #1 +_080AA5AC: + adds r4, #1 + cmp r4, #8 + bls _080AA58E + cmp r5, #8 + bne _080AA5F4 + movs r4, #0 + ldr r5, _080AA5F0 @ =gUnk_08129FD0 +_080AA5BA: + ldrh r0, [r5] + mov r3, sb + adds r1, r3, r4 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + subs r1, r7, r1 + mov r3, r8 + ldrb r2, [r3] + bl sub_0807B7D8 + adds r5, #2 + adds r4, #1 + cmp r4, #8 + bls _080AA5BA + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_080AA654 + ldrh r0, [r6, #0x24] + bl SetFlag + b _080AA648 + .align 2, 0 +_080AA5E8: .4byte gUnk_08129FF8 +_080AA5EC: .4byte gRoomControls +_080AA5F0: .4byte gUnk_08129FD0 +_080AA5F4: + ldr r2, _080AA614 @ =gUnk_08129FE4 + ldrb r1, [r6, #0xb] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + add r1, sb + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + subs r1, r7, r1 + mov r4, r8 + ldrb r2, [r4] + bl sub_0807B7D8 + b _080AA648 + .align 2, 0 +_080AA614: .4byte gUnk_08129FE4 +_080AA618: + movs r1, #0x2e + ldrsh r0, [r6, r1] + ldr r2, _080AA650 @ =gRoomControls + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r4, #0x32 + ldrsh r1, [r6, r4] + 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 sub_0807BA8C + ldrh r0, [r6, #0x24] + bl SetFlag +_080AA648: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AA650: .4byte gRoomControls + .syntax divided diff --git a/asm/non_matching/projectile15/sub_080AA9E0.inc b/asm/non_matching/projectile15/sub_080AA9E0.inc new file mode 100644 index 00000000..01531c51 --- /dev/null +++ b/asm/non_matching/projectile15/sub_080AA9E0.inc @@ -0,0 +1,74 @@ + .syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xa] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080AAA00 + ldr r0, _080AA9FC @ =gPlayerEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r2, #0x2e + ldrsh r0, [r5, r2] + b _080AAA0A + .align 2, 0 +_080AA9FC: .4byte gPlayerEntity +_080AAA00: + ldr r0, _080AAA24 @ =gPlayerEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r2, #0x32 + ldrsh r0, [r5, r2] +_080AAA0A: + subs r4, r1, r0 + ldrb r2, [r5, #0xa] + lsls r1, r2, #2 + ldr r0, _080AAA28 @ =gUnk_0812A074 + adds r3, r1, r0 + cmp r2, #2 + bgt _080AAA2C + cmp r2, #1 + bge _080AAA36 + cmp r2, #0 + beq _080AAA30 + b _080AAA40 + .align 2, 0 +_080AAA24: .4byte gPlayerEntity +_080AAA28: .4byte gUnk_0812A074 +_080AAA2C: + cmp r2, #3 + bne _080AAA40 +_080AAA30: + cmp r4, #4 + ble _080AAA40 + b _080AAA3E +_080AAA36: + movs r0, #4 + rsbs r0, r0, #0 + cmp r4, r0 + bge _080AAA40 +_080AAA3E: + adds r3, #2 +_080AAA40: + ldrb r0, [r3] + adds r4, r5, #0 + adds r4, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r3, #1] + strb r0, [r5, #0x15] + ldrb r0, [r3] + cmp r0, #5 + bne _080AAA66 + adds r0, r5, #0 + bl sub_08078930 +_080AAA66: + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/projectile18/sub_080AACE0.inc b/asm/non_matching/projectile18/sub_080AACE0.inc new file mode 100644 index 00000000..c353756c --- /dev/null +++ b/asm/non_matching/projectile18/sub_080AACE0.inc @@ -0,0 +1,77 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080AACF4 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _080AACF4 + bl DeleteThisEntity +_080AACF4: + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + lsrs r2, r0, #0x1e + adds r5, r4, #0 + adds r5, #0x86 + cmp r2, #1 + bne _080AAD16 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + strb r2, [r5] + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFx +_080AAD16: + ldr r2, [r4, #0x50] + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080AAD4A + adds r1, r2, #0 + adds r1, #0x74 + movs r0, #3 + strb r0, [r1] + adds r1, #0xc + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + lsrs r0, r0, #1 + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bls _080AAD42 + movs r0, #8 + b _080AAD56 +_080AAD42: + cmp r0, #0 + bne _080AAD58 + movs r0, #1 + b _080AAD56 +_080AAD4A: + adds r1, r2, #0 + adds r1, #0x84 + movs r0, #0 + strb r0, [r1] + subs r1, #0x45 + movs r0, #0x2b +_080AAD56: + strb r0, [r1] +_080AAD58: + ldrb r0, [r5] + cmp r0, #0 + bne _080AAD68 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFx +_080AAD68: + bl DeleteThisEntity + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/projectile19/sub_080AB170.inc b/asm/non_matching/projectile19/sub_080AB170.inc new file mode 100644 index 00000000..3021e507 --- /dev/null +++ b/asm/non_matching/projectile19/sub_080AB170.inc @@ -0,0 +1,133 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, [r4, #0x50] + ldr r0, [r6, #4] + cmp r0, #0 + bne _080AB180 + bl DeleteThisEntity +_080AB180: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080AB1AA + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3a + ands r0, r1 + strb r0, [r2] + movs r0, #5 + strb r0, [r4, #0x1e] + ldrb r1, [r2] + subs r0, #0xd + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080AB1C8 @ =gUnk_080FD460 + str r0, [r4, #0x48] +_080AB1AA: + ldr r5, [r6, #0x50] + adds r0, r4, #0 + adds r0, #0x7c + adds r2, r5, #0 + adds r2, #0x7c + ldrb r1, [r0] + adds r3, r0, #0 + ldrb r2, [r2] + cmp r1, r2 + beq _080AB1CC + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + b _080AB1D2 + .align 2, 0 +_080AB1C8: .4byte gUnk_080FD460 +_080AB1CC: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 +_080AB1D2: + strb r0, [r4, #0x10] + adds r0, r5, #0 + adds r0, #0x7c + ldrb r0, [r0] + strb r0, [r3] + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080AB208 + movs r0, #0x1f + ands r0, r1 + ldr r1, _080AB204 @ =gUnk_0812A4A8 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + movs r3, #1 + ldrsb r3, [r0, r3] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA90 + b _080AB216 + .align 2, 0 +_080AB204: .4byte gUnk_0812A4A8 +_080AB208: + movs r3, #0xa + rsbs r3, r3, #0 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA90 +_080AB216: + movs r1, #0x2e + ldrsh r0, [r6, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + ldrb r2, [r4, #0xa] + muls r0, r2, r0 + adds r3, r2, #0 + cmp r0, #0 + bge _080AB22C + adds r0, #3 +_080AB22C: + asrs r0, r0, #2 + ldrh r5, [r4, #0x2e] + adds r0, r0, r5 + strh r0, [r4, #0x2e] + movs r1, #0x32 + ldrsh r0, [r6, r1] + movs r5, #0x32 + ldrsh r1, [r4, r5] + subs r0, r0, r1 + muls r0, r3, r0 + cmp r0, #0 + bge _080AB246 + adds r0, #3 +_080AB246: + asrs r0, r0, #2 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + movs r3, #0x36 + ldrsh r0, [r6, r3] + movs r5, #0x36 + ldrsh r1, [r4, r5] + subs r0, r0, r1 + muls r0, r2, r0 + cmp r0, #0 + bge _080AB260 + adds r0, #3 +_080AB260: + asrs r0, r0, #2 + ldrh r1, [r4, #0x36] + adds r0, r0, r1 + strh r0, [r4, #0x36] + pop {r4, r5, r6, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/projectile1B/sub_080AB634.inc b/asm/non_matching/projectile1B/sub_080AB634.inc new file mode 100644 index 00000000..95c6b453 --- /dev/null +++ b/asm/non_matching/projectile1B/sub_080AB634.inc @@ -0,0 +1,49 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, [r6, #0x50] + movs r5, #0 + adds r4, r0, #0 + adds r4, #0x20 +_080AB640: + ldr r1, [r4] + cmp r1, #0 + beq _080AB684 + adds r0, r6, #0 + bl sub_080177A0 + cmp r0, #0 + beq _080AB684 + ldr r1, [r4] + ldrb r0, [r1, #0xc] + cmp r0, #2 + bhi _080AB67A + movs r0, #3 + strb r0, [r1, #0xc] + ldr r1, [r4] + movs r0, #0x1e + strb r0, [r1, #0xe] + ldr r2, [r4] + ldrb r0, [r2, #0x18] + movs r3, #4 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r2, #0x18] + ldr r0, [r4] + movs r1, #0x45 + movs r2, #0 + bl CreateFx +_080AB67A: + adds r0, r6, #0 + bl DeleteEntity + movs r0, #1 + b _080AB68E +_080AB684: + adds r4, #4 + adds r5, #1 + cmp r5, #3 + bls _080AB640 + movs r0, #0 +_080AB68E: + pop {r4, r5, r6, pc} + .syntax divided diff --git a/asm/non_matching/projectile1C/sub_080AB758.inc b/asm/non_matching/projectile1C/sub_080AB758.inc new file mode 100644 index 00000000..6e3699a1 --- /dev/null +++ b/asm/non_matching/projectile1C/sub_080AB758.inc @@ -0,0 +1,123 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r5, r0, #0 + movs r6, #6 + movs r7, #0 + movs r4, #0 + movs r0, #0x32 + ldrsh r2, [r5, r0] + ldr r1, _080AB818 @ =gRoomControls + ldrh r0, [r1, #8] + adds r0, #0xd4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r1 + cmp r2, r0 + bhi _080AB7B4 + movs r3, #7 +_080AB77E: + adds r0, r4, #0 + ands r0, r3 + cmp r0, #7 + bne _080AB798 + adds r0, r5, #0 + movs r1, #4 + adds r2, r6, #0 + str r3, [sp] + bl sub_080AB844 + adds r6, #0x3e + adds r7, #0x3e + ldr r3, [sp] +_080AB798: + adds r4, #1 + ands r4, r3 + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r0, r0, r7 + lsls r1, r4, #3 + adds r2, r0, r1 + ldr r0, _080AB818 @ =gRoomControls + ldrh r0, [r0, #8] + adds r0, #0xd4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r2, r0 + bls _080AB77E +_080AB7B4: + movs r4, #0 + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r2, r0, r7 + mov r1, r8 + ldrh r0, [r1, #8] + adds r0, #0xd4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r2, r0 + bhi _080AB802 + movs r3, #3 +_080AB7CC: + adds r0, r4, #0 + ands r0, r3 + cmp r0, #3 + bne _080AB7E6 + adds r0, r5, #0 + movs r1, #3 + adds r2, r6, #0 + str r3, [sp] + bl sub_080AB844 + adds r6, #0x1e + adds r7, #0x1e + ldr r3, [sp] +_080AB7E6: + adds r4, #1 + ands r4, r3 + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r0, r0, r7 + lsls r1, r4, #3 + adds r2, r0, r1 + ldr r0, _080AB818 @ =gRoomControls + ldrh r0, [r0, #8] + adds r0, #0xd4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r2, r0 + bls _080AB7CC +_080AB802: + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _080AB81C + adds r0, r5, #0 + movs r1, #2 + adds r2, r6, #0 + bl sub_080AB844 + adds r6, #0xe + b _080AB830 + .align 2, 0 +_080AB818: .4byte gRoomControls +_080AB81C: + movs r0, #1 + ands r4, r0 + cmp r4, #0 + beq _080AB830 + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_080AB844 + adds r6, #6 +_080AB830: + adds r0, r5, #0 + movs r1, #6 + adds r2, r6, #0 + bl sub_080AB844 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/projectile1D/sub_080AB950.inc b/asm/non_matching/projectile1D/sub_080AB950.inc new file mode 100644 index 00000000..0712e394 --- /dev/null +++ b/asm/non_matching/projectile1D/sub_080AB950.inc @@ -0,0 +1,70 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080AB99C + adds r0, r4, #0 + bl ProcessMovement + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + ldr r1, _080AB994 @ =gUnk_0812A6C4 + lsls r5, r0, #1 + adds r1, r5, r1 + ldrh r1, [r1] + ldrh r0, [r4, #0x2a] + ands r0, r1 + cmp r0, #0 + bne _080AB980 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AB9FC + cmp r0, #0 + beq _080AB9D4 +_080AB980: + bl Random + ldr r2, _080AB998 @ =gUnk_0812A6BC + movs r1, #1 + ands r1, r0 + adds r1, r1, r5 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0x15] + b _080AB9D4 + .align 2, 0 +_080AB994: .4byte gUnk_0812A6C4 +_080AB998: .4byte gUnk_0812A6BC +_080AB99C: + ldr r0, [r4, #0x50] + cmp r0, #0 + bne _080AB9A6 + bl DeleteThisEntity +_080AB9A6: + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080AB9B2 + bl DeleteThisEntity +_080AB9B2: + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _080AB9D0 + ldr r0, [r1, #4] + cmp r0, #0 + beq _080AB9D0 + adds r0, r1, #0 + adds r0, #0x68 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r1, #0 + adds r0, #0x6a + ldrh r0, [r0] + strh r0, [r4, #0x32] + b _080AB9D4 +_080AB9D0: + bl DeleteThisEntity +_080AB9D4: + adds r0, r4, #0 + bl GetNextFrame + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/projectile1D/sub_080AB9FC.inc b/asm/non_matching/projectile1D/sub_080AB9FC.inc new file mode 100644 index 00000000..a8339867 --- /dev/null +++ b/asm/non_matching/projectile1D/sub_080AB9FC.inc @@ -0,0 +1,49 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl GetLayerByIndex + movs r1, #0x2e + ldrsh r3, [r5, r1] + ldr r2, _080ABA4C @ =gRoomControls + ldrh r1, [r2, #6] + subs r3, r3, r1 + asrs r3, r3, #4 + movs r6, #0x3f + ands r3, r6 + movs r7, #0x32 + ldrsh r1, [r5, r7] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r3, r1 + ldr r1, _080ABA50 @ =gUnk_080B4488 + lsrs r4, r4, #3 + lsls r4, r4, #1 + adds r4, r4, r1 + movs r2, #0 + ldrsh r1, [r4, r2] + adds r3, r3, r1 + ldr r7, _080ABA54 @ =0x00002004 + adds r0, r0, r7 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0x1f + bls _080ABA58 + cmp r0, #0x3f + bhi _080ABA58 + movs r0, #1 + b _080ABA5A + .align 2, 0 +_080ABA4C: .4byte gRoomControls +_080ABA50: .4byte gUnk_080B4488 +_080ABA54: .4byte 0x00002004 +_080ABA58: + movs r0, #0 +_080ABA5A: + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/projectile1E/sub_080ABA74.inc b/asm/non_matching/projectile1E/sub_080ABA74.inc new file mode 100644 index 00000000..e0363105 --- /dev/null +++ b/asm/non_matching/projectile1E/sub_080ABA74.inc @@ -0,0 +1,59 @@ + .syntax unified + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + adds r0, #1 + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x86 + ldrh r0, [r0] + strh r0, [r2, #0x24] + ldrh r1, [r2, #0x2e] + adds r0, r2, #0 + adds r0, #0x68 + strh r1, [r0] + ldrh r0, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x6a + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x84 + ldrh r1, [r0] + subs r0, #0x18 + strh r1, [r0] + ldrb r0, [r2, #0xa] + cmp r0, #6 + bhi _080ABAAA + movs r0, #0 + b _080ABAAC +_080ABAAA: + movs r0, #1 +_080ABAAC: + strb r0, [r2, #0xb] + ldr r0, _080ABAC8 @ =gUnk_0812A6D4 + ldrb r1, [r2, #0xa] + adds r0, r1, r0 + ldrb r3, [r0] + ldrb r0, [r2, #0xb] + cmp r0, #0 + bne _080ABACC + movs r0, #8 + strb r0, [r2, #0x15] + ldrh r0, [r2, #0x32] + adds r0, r0, r3 + strh r0, [r2, #0x32] + b _080ABAD6 + .align 2, 0 +_080ABAC8: .4byte gUnk_0812A6D4 +_080ABACC: + movs r0, #0x10 + strb r0, [r2, #0x15] + ldrh r0, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] +_080ABAD6: + adds r0, r2, #0 + bl InitializeAnimation + pop {pc} + .align 2, 0 + .syntax divided diff --git a/asm/projectile/projectile1E.s b/asm/non_matching/projectile1E/sub_080ABAE0.inc similarity index 51% rename from asm/projectile/projectile1E.s rename to asm/non_matching/projectile1E/sub_080ABAE0.inc index fa8e82f8..e90123ce 100644 --- a/asm/projectile/projectile1E.s +++ b/asm/non_matching/projectile1E/sub_080ABAE0.inc @@ -1,85 +1,4 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start Projectile1E -Projectile1E: @ 0x080ABA5C - push {lr} - ldr r2, _080ABA70 @ =gUnk_0812A6CC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080ABA70: .4byte gUnk_0812A6CC - - thumb_func_start sub_080ABA74 -sub_080ABA74: @ 0x080ABA74 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - adds r0, #1 - strb r0, [r2, #0xc] - adds r0, r2, #0 - adds r0, #0x86 - ldrh r0, [r0] - strh r0, [r2, #0x24] - ldrh r1, [r2, #0x2e] - adds r0, r2, #0 - adds r0, #0x68 - strh r1, [r0] - ldrh r0, [r2, #0x32] - adds r1, r2, #0 - adds r1, #0x6a - strh r0, [r1] - adds r0, r2, #0 - adds r0, #0x84 - ldrh r1, [r0] - subs r0, #0x18 - strh r1, [r0] - ldrb r0, [r2, #0xa] - cmp r0, #6 - bhi _080ABAAA - movs r0, #0 - b _080ABAAC -_080ABAAA: - movs r0, #1 -_080ABAAC: - strb r0, [r2, #0xb] - ldr r0, _080ABAC8 @ =gUnk_0812A6D4 - ldrb r1, [r2, #0xa] - adds r0, r1, r0 - ldrb r3, [r0] - ldrb r0, [r2, #0xb] - cmp r0, #0 - bne _080ABACC - movs r0, #8 - strb r0, [r2, #0x15] - ldrh r0, [r2, #0x32] - adds r0, r0, r3 - strh r0, [r2, #0x32] - b _080ABAD6 - .align 2, 0 -_080ABAC8: .4byte gUnk_0812A6D4 -_080ABACC: - movs r0, #0x10 - strb r0, [r2, #0x15] - ldrh r0, [r2, #0x2e] - adds r0, r0, r3 - strh r0, [r2, #0x2e] -_080ABAD6: - adds r0, r2, #0 - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_080ABAE0 -sub_080ABAE0: @ 0x080ABAE0 push {r4, r5, r6, lr} adds r4, r0, #0 bl sub_080AF090 @@ -171,3 +90,4 @@ _080ABB84: adds r0, r4, #0 bl GetNextFrame pop {r4, r5, r6, pc} + .syntax divided diff --git a/asm/non_matching/projectile1F/sub_080ABBA8.inc b/asm/non_matching/projectile1F/sub_080ABBA8.inc new file mode 100644 index 00000000..2ed57bf3 --- /dev/null +++ b/asm/non_matching/projectile1F/sub_080ABBA8.inc @@ -0,0 +1,39 @@ + .syntax unified + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #1 + beq _080ABBC4 + cmp r0, #1 + bgt _080ABBDC + cmp r0, #0 + bne _080ABBDC + ldr r0, _080ABBC0 @ =gUnk_0812A7EC + b _080ABBC6 + .align 2, 0 +_080ABBC0: .4byte gUnk_0812A7EC +_080ABBC4: + ldr r0, _080ABBD8 @ =gUnk_0812A7F8 +_080ABBC6: + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _080ABBEC + .align 2, 0 +_080ABBD8: .4byte gUnk_0812A7F8 +_080ABBDC: + ldr r0, _080ABBF0 @ =gUnk_0812A800 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_080ABBEC: + pop {pc} + .align 2, 0 +_080ABBF0: .4byte gUnk_0812A800 + .syntax divided diff --git a/asm/non_matching/projectile1F/sub_080ABBF4.inc b/asm/non_matching/projectile1F/sub_080ABBF4.inc new file mode 100644 index 00000000..cedf0564 --- /dev/null +++ b/asm/non_matching/projectile1F/sub_080ABBF4.inc @@ -0,0 +1,50 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080ABC52 + ldrb r0, [r4, #0xa] + cmp r0, #0 + blt _080ABC52 + cmp r0, #1 + ble _080ABC3E + cmp r0, #2 + bne _080ABC52 + movs r0, #0x3f + ands r0, r1 + cmp r0, #3 + beq _080ABC32 + cmp r0, #3 + bgt _080ABC24 + cmp r0, #0 + beq _080ABC2A + b _080ABC52 +_080ABC24: + cmp r0, #0x14 + beq _080ABC32 + b _080ABC52 +_080ABC2A: + movs r0, #4 + rsbs r0, r0, #0 + bl ModHealth +_080ABC32: + adds r0, r4, #0 + bl CreateDust + bl DeleteThisEntity + b _080ABC52 +_080ABC3E: + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _080ABC52 + movs r0, #2 + rsbs r0, r0, #0 + bl ModHealth + bl DeleteThisEntity +_080ABC52: + pop {r4, pc} + .syntax divided diff --git a/asm/non_matching/projectile1F/sub_080ABE04.inc b/asm/non_matching/projectile1F/sub_080ABE04.inc new file mode 100644 index 00000000..825008f0 --- /dev/null +++ b/asm/non_matching/projectile1F/sub_080ABE04.inc @@ -0,0 +1,63 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + bl Random + adds r5, r0, #0 + movs r0, #0xff + ands r5, r0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080ABE48 @ =0xFFFF0000 + str r0, [r4, #0x20] + ldrh r0, [r4, #0x36] + subs r0, #0xa0 + strh r0, [r4, #0x36] + ldr r3, _080ABE4C @ =gRoomControls + ldrh r2, [r3, #6] + ldr r1, _080ABE50 @ =0x00007FF0 + adds r0, r1, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strh r0, [r4, #0x2e] + ldrh r0, [r3, #8] + ands r1, r0 + orrs r1, r2 + strh r1, [r4, #0x32] + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x10 + ands r0, r5 + cmp r0, #0 + beq _080ABE54 + adds r1, #0x10 + b _080ABE56 + .align 2, 0 +_080ABE48: .4byte 0xFFFF0000 +_080ABE4C: .4byte gRoomControls +_080ABE50: .4byte 0x00007FF0 +_080ABE54: + adds r1, #0xc0 +_080ABE56: + movs r0, #0xe0 + ands r0, r5 + lsrs r0, r0, #1 + adds r0, r1, r0 + strh r0, [r4, #0x2e] + movs r0, #0xf + ands r5, r0 + lsls r0, r5, #4 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_08004168 + adds r0, r4, #0 + movs r1, #0 + bl InitializeAnimation + ldr r0, _080ABE84 @ =0x0000012D + bl SoundReq + pop {r4, r5, pc} + .align 2, 0 +_080ABE84: .4byte 0x0000012D + .syntax divided diff --git a/asm/non_matching/projectile21/sub_080ABFEC.inc b/asm/non_matching/projectile21/sub_080ABFEC.inc new file mode 100644 index 00000000..cd4d966a --- /dev/null +++ b/asm/non_matching/projectile21/sub_080ABFEC.inc @@ -0,0 +1,69 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + adds r1, #1 + bl InitializeAnimation + ldrb r1, [r4, #0xa] + cmp r1, #0 + beq _080AC030 + cmp r1, #1 + beq _080AC048 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + movs r0, #0xff + strb r0, [r4, #0xf] + ldr r1, _080AC028 @ =gUnk_0812A97C + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x44 + movs r0, #0x88 + strb r0, [r1] + ldr r0, _080AC02C @ =0x00000193 + b _080AC06A + .align 2, 0 +_080AC028: .4byte gUnk_0812A97C +_080AC02C: .4byte 0x00000193 +_080AC030: + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + movs r0, #7 + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x85 + movs r0, #0x18 + strb r0, [r1] + subs r1, #0x41 + movs r0, #0x88 + b _080AC058 +_080AC048: + strb r1, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x85 + movs r0, #0x18 +_080AC058: + strb r0, [r1] + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl CopyPositionAndSpriteOffset + ldrh r0, [r4, #0x36] + subs r0, #0x14 + strh r0, [r4, #0x36] + ldr r0, _080AC070 @ =0x00000149 +_080AC06A: + bl SoundReq + pop {r4, pc} + .align 2, 0 +_080AC070: .4byte 0x00000149 + .syntax divided diff --git a/asm/non_matching/projectile21/sub_080AC168.inc b/asm/non_matching/projectile21/sub_080AC168.inc new file mode 100644 index 00000000..6e5607e2 --- /dev/null +++ b/asm/non_matching/projectile21/sub_080AC168.inc @@ -0,0 +1,75 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl GetNextFrame + ldr r0, [r4, #0x34] + ldr r1, _080AC1C0 @ =0xFFFF8000 + adds r0, r0, r1 + str r0, [r4, #0x34] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _080AC1F8 + movs r0, #4 + strb r0, [r4, #0xc] + strb r0, [r4, #0xe] + bl Random + adds r5, r0, #0 + movs r0, #7 + ands r5, r0 + ldr r0, _080AC1C4 @ =gUnk_0812A982 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r4, #0xf] + ldr r1, _080AC1C8 @ =gPlayerEntity + adds r0, r4, #0 + bl GetFacingDirection + adds r1, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #3 + bne _080AC1D0 + ldr r0, _080AC1CC @ =gUnk_0812A98A + adds r0, r5, r0 + ldrb r0, [r0] + subs r1, r1, r0 + strb r6, [r4, #0xb] + b _080AC1F2 + .align 2, 0 +_080AC1C0: .4byte 0xFFFF8000 +_080AC1C4: .4byte gUnk_0812A982 +_080AC1C8: .4byte gPlayerEntity +_080AC1CC: .4byte gUnk_0812A98A +_080AC1D0: + cmp r0, #2 + bne _080AC1E4 + ldr r0, _080AC1E0 @ =gUnk_0812A98A + adds r0, r5, r0 + ldrb r0, [r0] + subs r1, r1, r0 + movs r0, #1 + b _080AC1F0 + .align 2, 0 +_080AC1E0: .4byte gUnk_0812A98A +_080AC1E4: + ldr r0, _080AC1FC @ =gUnk_0812A98A + adds r0, r5, r0 + ldrb r0, [r0] + lsrs r0, r0, #1 + subs r1, r1, r0 + movs r0, #2 +_080AC1F0: + strb r0, [r4, #0xb] +_080AC1F2: + movs r0, #0x1f + ands r1, r0 + strb r1, [r4, #0x15] +_080AC1F8: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AC1FC: .4byte gUnk_0812A98A + .syntax divided diff --git a/asm/non_matching/projectile21/sub_080AC200.inc b/asm/non_matching/projectile21/sub_080AC200.inc new file mode 100644 index 00000000..6c1b2b1b --- /dev/null +++ b/asm/non_matching/projectile21/sub_080AC200.inc @@ -0,0 +1,62 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + bl GetNextFrame + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r5, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC270 + movs r0, #0x10 + strb r0, [r4, #0xe] + movs r0, #0x21 + bl sub_080A7EE0 + adds r1, r0, #0 + cmp r1, #0 + beq _080AC23C + movs r0, #2 + strb r0, [r1, #0xa] + ldrb r0, [r4, #0xb] + strb r0, [r1, #0xb] + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + adds r0, r4, #0 + bl CopyPosition +_080AC23C: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _080AC24C + bl DeleteThisEntity +_080AC24C: + ldr r0, [r4, #0x50] + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #3 + bne _080AC25C + ldrb r0, [r4, #0x15] + adds r0, #3 + b _080AC26A +_080AC25C: + cmp r0, #2 + bne _080AC266 + ldrb r0, [r4, #0x15] + adds r0, #3 + b _080AC26A +_080AC266: + ldrb r0, [r4, #0x15] + adds r0, #2 +_080AC26A: + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_080AC270: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/projectile22/sub_080AC388.inc b/asm/non_matching/projectile22/sub_080AC388.inc new file mode 100644 index 00000000..91a15698 --- /dev/null +++ b/asm/non_matching/projectile22/sub_080AC388.inc @@ -0,0 +1,128 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + ldr r1, _080AC3E4 @ =gUnk_0812A9B8 + ldrb r0, [r5, #0xa] + adds r0, r0, r1 + ldrb r3, [r0] + ldr r0, [r5, #0x50] + mov sl, r0 + ldrb r0, [r0, #0x14] + movs r1, #0x80 + mov sb, r1 + mov r1, sb + eors r1, r0 + adds r6, r5, #0 + adds r6, #0x7c + ldrh r4, [r6] + lsrs r0, r4, #8 + subs r1, r1, r0 + adds r2, r5, #0 + adds r2, #0x7a + ldrh r7, [r2] + mov ip, r7 + movs r7, #0 + ldrsh r0, [r2, r7] + cmp r0, #0 + bge _080AC404 + subs r0, r1, r3 + movs r7, #0xff + mov r8, r7 + ands r0, r7 + cmp r0, #0x7f + bhi _080AC3E8 + movs r1, #0 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + strh r0, [r2] + mov r2, sl + ldrb r0, [r2, #0x14] + mov r7, sb + eors r0, r7 + subs r0, r0, r3 + b _080AC422 + .align 2, 0 +_080AC3E4: .4byte gUnk_0812A9B8 +_080AC3E8: + mov r2, ip + adds r0, r4, r2 + strh r0, [r6] + adds r0, r1, r3 + mov r7, r8 + ands r0, r7 + cmp r0, #0x80 + bls _080AC45A + mov r1, sl + ldrb r0, [r1, #0x14] + mov r2, sb + eors r0, r2 + adds r0, r0, r3 + b _080AC44E +_080AC404: + adds r0, r1, r3 + movs r7, #0xff + mov r8, r7 + ands r0, r7 + cmp r0, #0x80 + bls _080AC432 + movs r1, #0 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + strh r0, [r2] + mov r2, sl + ldrb r0, [r2, #0x14] + mov r7, sb + eors r0, r7 + adds r0, r0, r3 +_080AC422: + movs r1, #0xff + ands r0, r1 + lsls r0, r0, #8 + strh r0, [r6] + adds r0, r5, #0 + bl sub_080AC884 + b _080AC45A +_080AC432: + mov r2, ip + adds r0, r4, r2 + strh r0, [r6] + subs r0, r1, r3 + mov r7, r8 + ands r0, r7 + subs r0, #1 + cmp r0, #0x7e + bhi _080AC45A + mov r1, sl + ldrb r0, [r1, #0x14] + mov r2, sb + eors r0, r2 + subs r0, r0, r3 +_080AC44E: + movs r1, #0xff + ands r0, r1 + lsls r0, r0, #8 + movs r1, #0x80 + orrs r0, r1 + strh r0, [r6] +_080AC45A: + adds r0, r5, #0 + adds r0, #0x7c + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_080AC6F0 + adds r0, r5, #0 + bl sub_080AC760 + adds r0, r5, #0 + bl sub_080AC7C4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/projectile22/sub_080AC5E4.inc b/asm/non_matching/projectile22/sub_080AC5E4.inc new file mode 100644 index 00000000..7189007f --- /dev/null +++ b/asm/non_matching/projectile22/sub_080AC5E4.inc @@ -0,0 +1,134 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + ldrb r4, [r5, #0xa] + cmp r4, #0 + bne _080AC668 + ldr r0, _080AC664 @ =gEntCount + ldrb r0, [r0] + cmp r0, #0x43 + bhi _080AC670 + adds r1, r5, #0 + adds r1, #0x79 + movs r0, #0x11 + strb r0, [r1] + movs r0, #0x22 + bl sub_080A7EE0 + adds r6, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r6, #0xa] + movs r0, #1 + strb r0, [r6, #0xb] + ldr r0, [r5, #0x50] + str r0, [r6, #0x50] + adds r1, r6, #0 + adds r1, #0x79 + movs r0, #0x12 + strb r0, [r1] + str r6, [r5, #0x54] + movs r0, #0x22 + bl sub_080A7EE0 + adds r7, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r7, #0xa] + movs r0, #2 + strb r0, [r7, #0xb] + ldr r0, [r5, #0x50] + str r0, [r7, #0x50] + adds r0, r7, #0 + adds r0, #0x79 + movs r1, #0x14 + mov r8, r1 + mov r1, r8 + strb r1, [r0] + str r7, [r6, #0x54] + movs r0, #0x22 + bl sub_080A7EE0 + ldrb r1, [r5, #0xa] + strb r1, [r0, #0xa] + movs r1, #3 + strb r1, [r0, #0xb] + ldr r1, [r5, #0x50] + str r1, [r0, #0x50] + str r4, [r0, #0x54] + adds r1, r0, #0 + adds r1, #0x79 + strb r4, [r1] + str r0, [r7, #0x54] + b _080AC6C8 + .align 2, 0 +_080AC664: .4byte gEntCount +_080AC668: + ldr r0, _080AC674 @ =gEntCount + ldrb r0, [r0] + cmp r0, #0x44 + bls _080AC678 +_080AC670: + movs r0, #0 + b _080AC6E8 + .align 2, 0 +_080AC674: .4byte gEntCount +_080AC678: + adds r1, r5, #0 + adds r1, #0x79 + movs r0, #0 + mov sb, r0 + movs r0, #0xf + strb r0, [r1] + movs r0, #0x22 + bl sub_080A7EE0 + adds r6, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r6, #0xa] + movs r0, #1 + strb r0, [r6, #0xb] + ldr r0, [r5, #0x50] + str r0, [r6, #0x50] + adds r0, r6, #0 + adds r0, #0x79 + movs r1, #0x10 + mov r8, r1 + mov r1, r8 + strb r1, [r0] + str r6, [r5, #0x54] + movs r0, #0x22 + bl sub_080A7EE0 + adds r7, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r7, #0xa] + movs r0, #2 + strb r0, [r7, #0xb] + ldr r0, [r5, #0x50] + str r0, [r7, #0x50] + mov r0, sb + str r0, [r7, #0x54] + adds r1, r7, #0 + adds r1, #0x79 + movs r0, #0x20 + strb r0, [r1] + str r7, [r6, #0x54] +_080AC6C8: + movs r0, #0x22 + bl sub_080A7EE0 + adds r6, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r6, #0xa] + movs r0, #4 + strb r0, [r6, #0xb] + ldr r0, [r5, #0x50] + str r0, [r6, #0x50] + str r5, [r6, #0x54] + adds r0, r6, #0 + adds r0, #0x79 + mov r1, r8 + strb r1, [r0] + movs r0, #1 +_080AC6E8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/projectile22/sub_080AC6F0.inc b/asm/non_matching/projectile22/sub_080AC6F0.inc new file mode 100644 index 00000000..74864ad8 --- /dev/null +++ b/asm/non_matching/projectile22/sub_080AC6F0.inc @@ -0,0 +1,63 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + movs r2, #0x1f + ands r2, r0 + lsrs r0, r0, #5 + lsls r1, r0, #1 + adds r3, r1, r0 + ldr r1, _080AC724 @ =gUnk_0812A9C0 + ldrb r0, [r4, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + subs r0, r0, r3 + adds r5, r1, #0 + cmp r0, #3 + bhi _080AC73A + cmp r0, #1 + beq _080AC72E + cmp r0, #1 + blo _080AC728 + cmp r0, #2 + beq _080AC732 + cmp r2, #0x19 + bhi _080AC75C + b _080AC73A + .align 2, 0 +_080AC724: .4byte gUnk_0812A9C0 +_080AC728: + cmp r2, #6 + bls _080AC75C + b _080AC73A +_080AC72E: + subs r0, r2, #5 + b _080AC736 +_080AC732: + adds r0, r2, #0 + subs r0, #0xf +_080AC736: + cmp r0, #0xc + bls _080AC75C +_080AC73A: + adds r0, r3, #3 + cmp r2, #0x1a + bhi _080AC74E + adds r0, r3, #2 + cmp r2, #0x10 + bhi _080AC74E + adds r0, r3, #0 + cmp r2, #5 + bls _080AC74E + adds r0, #1 +_080AC74E: + movs r1, #0x18 + bl __modsi3 + strb r0, [r4, #0x14] + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r4, #0x1e] +_080AC75C: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/projectile22/sub_080AC760.inc b/asm/non_matching/projectile22/sub_080AC760.inc new file mode 100644 index 00000000..36c76ada --- /dev/null +++ b/asm/non_matching/projectile22/sub_080AC760.inc @@ -0,0 +1,59 @@ + .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/projectile22/sub_080AC7C4.inc b/asm/non_matching/projectile22/sub_080AC7C4.inc new file mode 100644 index 00000000..5ab1b5da --- /dev/null +++ b/asm/non_matching/projectile22/sub_080AC7C4.inc @@ -0,0 +1,95 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + mov r8, r0 + ldr r7, [r0, #0x54] + ldr r5, [r7, #0x54] + cmp r5, #0 + beq _080AC7E4 + ldr r0, [r4, #0x50] + adds r1, r5, #0 + bl CopyPosition + b _080AC7E6 +_080AC7E4: + ldr r5, [r4, #0x50] +_080AC7E6: + adds r0, r7, #0 + adds r0, #0x79 + ldrb r2, [r0] + lsls r2, r2, #8 + ldr r3, _080AC880 @ =gSineTable + mov sb, r3 + ldrb r1, [r7, #0x15] + lsls r0, r1, #1 + add r0, sb + movs r3, #0 + ldrsh r0, [r0, r3] + adds r6, r0, #0 + muls r6, r2, r6 + adds r1, #0x40 + lsls r1, r1, #1 + add r1, sb + movs r3, #0 + ldrsh r0, [r1, r3] + muls r0, r2, r0 + rsbs r3, r0, #0 + adds r0, r5, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl PositionRelative + mov r0, r8 + adds r0, #0x79 + ldrb r2, [r0] + lsls r2, r2, #8 + mov r0, r8 + ldrb r1, [r0, #0x15] + lsls r0, r1, #1 + add r0, sb + movs r3, #0 + ldrsh r0, [r0, r3] + adds r6, r0, #0 + muls r6, r2, r6 + adds r1, #0x40 + lsls r1, r1, #1 + add r1, sb + movs r3, #0 + ldrsh r0, [r1, r3] + muls r0, r2, r0 + rsbs r3, r0, #0 + adds r0, r7, #0 + mov r1, r8 + adds r2, r6, #0 + bl PositionRelative + adds r0, r4, #0 + adds r0, #0x79 + ldrb r2, [r0] + lsls r2, r2, #8 + ldrb r1, [r4, #0x15] + lsls r0, r1, #1 + add r0, sb + movs r3, #0 + ldrsh r0, [r0, r3] + adds r6, r0, #0 + muls r6, r2, r6 + adds r1, #0x40 + lsls r1, r1, #1 + add r1, sb + movs r3, #0 + ldrsh r0, [r1, r3] + muls r0, r2, r0 + rsbs r3, r0, #0 + mov r0, r8 + adds r1, r4, #0 + adds r2, r6, #0 + bl PositionRelative + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AC880: .4byte gSineTable + .syntax divided diff --git a/asm/non_matching/projectile23/sub_080AC8DC.inc b/asm/non_matching/projectile23/sub_080AC8DC.inc new file mode 100644 index 00000000..e1bc226d --- /dev/null +++ b/asm/non_matching/projectile23/sub_080AC8DC.inc @@ -0,0 +1,40 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + blt _080AC8FE + cmp r1, #3 + ble _080AC8F8 + cmp r1, #0x1f + bgt _080AC8FE + cmp r1, #0x1e + blt _080AC8FE +_080AC8F8: + bl DeleteThisEntity + b _080AC920 +_080AC8FE: + ldrb r0, [r4, #0xc] + cmp r0, #3 + beq _080AC920 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #1 + bl InitializeAnimation +_080AC920: + adds r0, r4, #0 + bl sub_080AC8C4 + pop {r4, pc} + .syntax divided diff --git a/asm/non_matching/projectile24/sub_080ACA68.inc b/asm/non_matching/projectile24/sub_080ACA68.inc new file mode 100644 index 00000000..451a5e38 --- /dev/null +++ b/asm/non_matching/projectile24/sub_080ACA68.inc @@ -0,0 +1,53 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0xc + bgt _080ACA82 + cmp r1, #0xa + bge _080ACA86 + cmp r1, #6 + beq _080ACA86 + b _080ACAC0 +_080ACA82: + cmp r1, #0x1a + bne _080ACAC0 +_080ACA86: + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + ldr r0, [r4, #0x4c] + str r0, [r4, #0x54] + adds r0, r4, #0 + bl sub_080ACB40 + cmp r0, #0 + beq _080ACAB0 + movs r0, #0 + b _080ACAB6 +_080ACAB0: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] +_080ACAB6: + strb r0, [r4, #0x15] + movs r0, #0xd8 + bl SoundReq + b _080ACAC4 +_080ACAC0: + bl DeleteThisEntity +_080ACAC4: + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/projectile24/sub_080ACB40.inc b/asm/non_matching/projectile24/sub_080ACB40.inc new file mode 100644 index 00000000..fde2c262 --- /dev/null +++ b/asm/non_matching/projectile24/sub_080ACB40.inc @@ -0,0 +1,48 @@ + .syntax unified + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x50] + ldr r1, [r0, #0x50] + ldr r3, [r2, #0x54] + ldr r0, [r1, #0x64] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x54] + cmp r0, r2 + beq _080ACB5A + ldr r0, [r0, #0x54] + cmp r3, r0 + beq _080ACB86 +_080ACB5A: + ldr r1, [r1, #0x64] + ldr r0, [r1, #0x20] + ldr r0, [r0, #0x54] + cmp r0, r2 + beq _080ACB6A + ldr r0, [r0, #0x54] + cmp r3, r0 + beq _080ACB86 +_080ACB6A: + ldr r0, [r1, #0x24] + ldr r0, [r0, #0x54] + cmp r0, r2 + beq _080ACB78 + ldr r0, [r0, #0x54] + cmp r3, r0 + beq _080ACB86 +_080ACB78: + ldr r0, [r1, #0x28] + ldr r0, [r0, #0x54] + cmp r0, r2 + beq _080ACB8A + ldr r0, [r0, #0x54] + cmp r3, r0 + bne _080ACB8A +_080ACB86: + movs r0, #0 + b _080ACB8C +_080ACB8A: + movs r0, #1 +_080ACB8C: + pop {pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/projectile3/sub_080A83B4.inc b/asm/non_matching/projectile3/sub_080A83B4.inc new file mode 100644 index 00000000..e4590708 --- /dev/null +++ b/asm/non_matching/projectile3/sub_080A83B4.inc @@ -0,0 +1,73 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + cmp r5, #0 + bne _080A83C2 + bl DeleteThisEntity +_080A83C2: + ldr r0, [r5, #4] + cmp r0, #0 + bne _080A83CC + bl DeleteThisEntity +_080A83CC: + adds r0, r5, #0 + adds r0, #0x5a + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x18 + ldr r1, _080A8424 @ =gUnk_0812966C + adds r2, r0, r1 + ldr r1, [r4, #0x48] + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r0, r5, #0 + adds r0, #0x5b + ldrb r0, [r0] + cmp r0, #0x40 + bne _080A83F4 + ldr r1, [r4, #0x48] + ldrb r0, [r1] + rsbs r0, r0, #0 + strb r0, [r1] +_080A83F4: + ldr r1, [r4, #0x48] + ldrb r0, [r2] + strb r0, [r1, #1] + adds r2, #1 + ldr r1, [r4, #0x48] + ldrb r0, [r2] + strb r0, [r1, #6] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #1] + strb r0, [r1, #7] + adds r0, r5, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _080A8428 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A8438 + movs r0, #0x7f + ands r0, r1 + b _080A8436 + .align 2, 0 +_080A8424: .4byte gUnk_0812966C +_080A8428: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A8438 + movs r0, #0x80 + orrs r0, r1 +_080A8436: + strb r0, [r4, #0x10] +_080A8438: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/projectile/projectile0.s b/asm/projectile/projectile0.s deleted file mode 100644 index 312f8e67..00000000 --- a/asm/projectile/projectile0.s +++ /dev/null @@ -1,176 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile0 -Projectile0: @ 0x080A7F00 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080A7F26 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_080A7F80 - ldrb r0, [r4, #0xa] - cmp r0, #3 - bne _080A7F26 - ldr r0, [r4, #0x50] - ldrb r1, [r0, #0x14] - adds r1, #0x18 - adds r0, r4, #0 - bl InitAnimationForceUpdate -_080A7F26: - ldr r0, [r4, #0x50] - cmp r0, #0 - beq _080A7F34 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _080A7F38 -_080A7F34: - bl DeleteThisEntity -_080A7F38: - adds r2, r4, #0 - adds r2, #0x41 - ldrb r1, [r2] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A7F56 - ldr r1, [r4, #0x4c] - ldr r0, _080A7F7C @ =gPlayerEntity - cmp r1, r0 - bne _080A7F56 - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0xd3 - strb r0, [r1] -_080A7F56: - movs r0, #0 - strb r0, [r2] - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPositionAndSpriteOffset - adds r0, r4, #0 - bl sub_080A7F9C - ldrb r0, [r4, #0xa] - cmp r0, #3 - bne _080A7F7A - ldrh r0, [r4, #0x32] - adds r0, #1 - strh r0, [r4, #0x32] - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_080A7F7A: - pop {r4, pc} - .align 2, 0 -_080A7F7C: .4byte gPlayerEntity - - thumb_func_start sub_080A7F80 -sub_080A7F80: @ 0x080A7F80 - ldr r3, _080A7F98 @ =gUnk_081293B8 - ldr r2, [r0, #0x50] - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - ldrb r2, [r2, #0xa] - adds r1, r1, r2 - adds r1, r1, r3 - ldrb r1, [r1] - adds r0, #0x3f - strb r1, [r0] - bx lr - .align 2, 0 -_080A7F98: .4byte gUnk_081293B8 - - thumb_func_start sub_080A7F9C -sub_080A7F9C: @ 0x080A7F9C - push {lr} - ldr r2, _080A7FB0 @ =gUnk_081293CC - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A7FB0: .4byte gUnk_081293CC - - thumb_func_start sub_080A7FB4 -sub_080A7FB4: @ 0x080A7FB4 - ldr r1, [r0, #0x50] - ldr r3, _080A7FD4 @ =gUnk_081293E0 - ldrb r2, [r1, #0x14] - lsls r2, r2, #2 - adds r2, r2, r3 - adds r1, #0x5a - ldrb r3, [r1] - movs r1, #0xf - ands r1, r3 - ldr r2, [r2] - lsls r1, r1, #2 - adds r1, r1, r2 - subs r1, #4 - ldr r1, [r1] - str r1, [r0, #0x48] - bx lr - .align 2, 0 -_080A7FD4: .4byte gUnk_081293E0 - - thumb_func_start sub_080A7FD8 -sub_080A7FD8: @ 0x080A7FD8 - ldr r1, [r0, #0x50] - ldr r2, _080A7FE8 @ =gUnk_081293F0 - ldrb r1, [r1, #0x14] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - str r1, [r0, #0x48] - bx lr - .align 2, 0 -_080A7FE8: .4byte gUnk_081293F0 - - thumb_func_start sub_080A7FEC -sub_080A7FEC: @ 0x080A7FEC - push {lr} - adds r3, r0, #0 - ldr r2, [r3, #0x50] - adds r0, r2, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _080A8008 - ldr r0, _080A8004 @ =gUnk_08129410 - b _080A800A - .align 2, 0 -_080A8004: .4byte gUnk_08129410 -_080A8008: - ldr r0, _080A8018 @ =gUnk_08129400 -_080A800A: - ldrb r1, [r2, #0x14] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r0, [r1] - str r0, [r3, #0x48] - pop {pc} - .align 2, 0 -_080A8018: .4byte gUnk_08129400 - - thumb_func_start sub_080A801C -sub_080A801C: @ 0x080A801C - ldr r1, [r0, #0x50] - ldr r2, _080A802C @ =gUnk_08129420 - ldrb r1, [r1, #0x14] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - str r1, [r0, #0x48] - bx lr - .align 2, 0 -_080A802C: .4byte gUnk_08129420 diff --git a/asm/projectile/projectile1.s b/asm/projectile/projectile1.s deleted file mode 100644 index 0b759282..00000000 --- a/asm/projectile/projectile1.s +++ /dev/null @@ -1,192 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile1 -Projectile1: @ 0x080A8030 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A8048 @ =gUnk_081295D0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A8048: .4byte gUnk_081295D0 - - thumb_func_start sub_080A804C -sub_080A804C: @ 0x080A804C - push {lr} - ldr r2, _080A8060 @ =gUnk_081295E4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A8060: .4byte gUnk_081295E4 - - thumb_func_start sub_080A8064 -sub_080A8064: @ 0x080A8064 - push {lr} - adds r1, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _080A8078 - adds r0, r1, #0 - bl DeleteEntity - b _080A8086 -_080A8078: - adds r0, r1, #0 - adds r0, #0x3e - ldrb r0, [r0] - strb r0, [r1, #0x15] - adds r0, r1, #0 - bl sub_080A8178 -_080A8086: - pop {pc} - - thumb_func_start sub_080A8088 -sub_080A8088: @ 0x080A8088 - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - movs r1, #0x30 - strb r1, [r0, #0xe] - movs r1, #0xa0 - lsls r1, r1, #8 - str r1, [r0, #0x20] - movs r1, #0 - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_080A80A0 -sub_080A80A0: @ 0x080A80A0 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - cmp r0, #0 - beq _080A80DC - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080A80C4 - adds r0, r4, #0 - bl DeleteEntity - b _080A80F0 -_080A80C4: - adds r0, r4, #0 - bl sub_08016AD2 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A80F0 - movs r0, #3 - strb r0, [r4, #0xc] - b _080A80F0 -_080A80DC: - ldrh r1, [r4, #0x2a] - adds r0, r4, #0 - bl sub_0800417E - adds r0, r4, #0 - bl sub_080A8178 - adds r0, r4, #0 - bl sub_08016AD2 -_080A80F0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A80F4 -sub_080A80F4: @ 0x080A80F4 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F69C - adds r0, r4, #0 - bl GetNextFrame - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080A8116 - adds r0, r4, #0 - bl DeleteEntity -_080A8116: - pop {r4, pc} - - thumb_func_start sub_080A8118 -sub_080A8118: @ 0x080A8118 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_080044EC - cmp r0, #0 - beq _080A813A - cmp r0, #1 - beq _080A8142 - b _080A815A -_080A813A: - adds r0, r4, #0 - bl DeleteEntity - b _080A8176 -_080A8142: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r0, #0x90 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl sub_0800442E - cmp r0, #0 - bne _080A8176 -_080A815A: - ldrb r1, [r4, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080A8176 - ldrb r2, [r4, #0x18] - lsls r1, r2, #0x1e - lsrs r1, r1, #0x1e - movs r0, #1 - eors r1, r0 - subs r0, #5 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] -_080A8176: - pop {r4, pc} - - thumb_func_start sub_080A8178 -sub_080A8178: @ 0x080A8178 - movs r1, #2 - strb r1, [r0, #0xc] - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - movs r1, #0x40 - strh r1, [r0, #0x24] - movs r1, #0xa0 - lsls r1, r1, #9 - str r1, [r0, #0x20] - bx lr diff --git a/asm/projectile/projectile10.s b/asm/projectile/projectile10.s deleted file mode 100644 index e280921b..00000000 --- a/asm/projectile/projectile10.s +++ /dev/null @@ -1,401 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile10 -Projectile10: @ 0x080A9A00 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A9A18 @ =gUnk_08129AE0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A9A18: .4byte gUnk_08129AE0 - - thumb_func_start sub_080A9A1C -sub_080A9A1C: @ 0x080A9A1C - push {lr} - ldr r2, _080A9A30 @ =gUnk_08129AF8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A9A30: .4byte gUnk_08129AF8 - - thumb_func_start sub_080A9A34 -sub_080A9A34: @ 0x080A9A34 - push {lr} - adds r2, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x9d - bne _080A9A62 - movs r0, #3 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r2, #0x10] - movs r0, #0xa8 - lsls r0, r0, #0xa - str r0, [r2, #0x20] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r2] -_080A9A62: - pop {pc} - - thumb_func_start sub_080A9A64 -sub_080A9A64: @ 0x080A9A64 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #2 - bhi _080A9A7E - adds r0, r4, #0 - bl sub_0806F520 - cmp r0, #0 - bne _080A9A7E - adds r0, r4, #0 - bl sub_080A9BA8 -_080A9A7E: - ldr r0, _080A9A90 @ =gUnk_08129B08 - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080A9A90: .4byte gUnk_08129B08 - - thumb_func_start sub_080A9A94 -sub_080A9A94: @ 0x080A9A94 - movs r1, #2 - strb r1, [r0, #0xd] - ldr r1, _080A9AA0 @ =0x0000FFFE - strh r1, [r0, #0x36] - bx lr - .align 2, 0 -_080A9AA0: .4byte 0x0000FFFE - - thumb_func_start sub_080A9AA4 -sub_080A9AA4: @ 0x080A9AA4 - push {lr} - bl sub_0806F4E8 - pop {pc} - - thumb_func_start sub_080A9AAC -sub_080A9AAC: @ 0x080A9AAC - push {lr} - bl sub_0806F3E4 - pop {pc} - - thumb_func_start sub_080A9AB4 -sub_080A9AB4: @ 0x080A9AB4 - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - bx lr - .align 2, 0 - - thumb_func_start nullsub_128 -nullsub_128: @ 0x080A9AC0 - bx lr - .align 2, 0 - - thumb_func_start sub_080A9AC4 -sub_080A9AC4: @ 0x080A9AC4 - push {lr} - bl sub_080A9BA8 - pop {pc} - - thumb_func_start sub_080A9ACC -sub_080A9ACC: @ 0x080A9ACC - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xb] - cmp r0, #1 - beq _080A9AE0 - cmp r0, #2 - beq _080A9AEE - movs r0, #1 - strb r0, [r2, #0xc] - b _080A9B0A -_080A9AE0: - movs r0, #2 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x10] - b _080A9B0A -_080A9AEE: - movs r0, #3 - strb r0, [r2, #0xc] - movs r0, #0xa8 - lsls r0, r0, #0xa - str r0, [r2, #0x20] - adds r3, r2, #0 - adds r3, #0x29 - ldrb r1, [r3] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r3] -_080A9B0A: - movs r0, #2 - strb r0, [r2, #0x1c] - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _080A9B1E - adds r0, r2, #0 - movs r1, #5 - bl InitializeAnimation - b _080A9B22 -_080A9B1E: - movs r0, #0 - strb r0, [r2, #0x1e] -_080A9B22: - pop {pc} - - thumb_func_start sub_080A9B24 -sub_080A9B24: @ 0x080A9B24 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080A9B36 - adds r0, r4, #0 - bl sub_080A9BA8 -_080A9B36: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #0xb - bne _080A9B46 - adds r0, r4, #0 - bl sub_080A9BD0 - b _080A9B50 -_080A9B46: - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_080A9C34 -_080A9B50: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A9B54 -sub_080A9B54: @ 0x080A9B54 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080A9B66 - adds r0, r4, #0 - bl sub_080A9BA8 -_080A9B66: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #9 - bne _080A9B76 - adds r0, r4, #0 - bl sub_080A9C34 - b _080A9B7C -_080A9B76: - adds r0, r4, #0 - bl sub_080A9C50 -_080A9B7C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A9B80 -sub_080A9B80: @ 0x080A9B80 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x20] - cmp r0, #0 - bge _080A9B92 - ldrb r0, [r4, #0x18] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #0x18] -_080A9B92: - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080A9BA6 - adds r0, r4, #0 - bl sub_080A9BA8 -_080A9BA6: - pop {r4, pc} - - thumb_func_start sub_080A9BA8 -sub_080A9BA8: @ 0x080A9BA8 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xa] - cmp r0, #0 - bne _080A9BBE - adds r0, r1, #0 - movs r1, #5 - movs r2, #0 - bl CreateFx - b _080A9BC8 -_080A9BBE: - adds r0, r1, #0 - movs r1, #0x3c - movs r2, #0 - bl CreateFx -_080A9BC8: - bl DeleteThisEntity - pop {pc} - .align 2, 0 - - thumb_func_start sub_080A9BD0 -sub_080A9BD0: @ 0x080A9BD0 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r1, [r5, #0x50] - ldrb r0, [r1, #0x14] - cmp r0, #1 - beq _080A9BF8 - cmp r0, #1 - bgt _080A9BE6 - cmp r0, #0 - beq _080A9BF0 - b _080A9C06 -_080A9BE6: - cmp r0, #2 - beq _080A9C00 - cmp r0, #3 - beq _080A9BF8 - b _080A9C06 -_080A9BF0: - ldrb r0, [r1, #0x1e] - adds r2, r0, #0 - subs r2, #0x39 - b _080A9C06 -_080A9BF8: - ldrb r0, [r1, #0x1e] - adds r2, r0, #0 - subs r2, #0x3d - b _080A9C06 -_080A9C00: - ldrb r0, [r1, #0x1e] - adds r2, r0, #0 - subs r2, #0x41 -_080A9C06: - ldrb r0, [r1, #0x14] - lsls r0, r0, #2 - adds r0, r2, r0 - lsls r4, r0, #1 - adds r4, r4, r0 - ldr r0, _080A9C30 @ =gUnk_08129B20 - adds r4, r4, r0 - movs r2, #0 - ldrsb r2, [r4, r2] - movs r3, #1 - ldrsb r3, [r4, r3] - adds r0, r1, #0 - adds r1, r5, #0 - bl sub_0806FA90 - movs r0, #2 - ldrsb r0, [r4, r0] - ldrh r1, [r5, #0x36] - adds r0, r0, r1 - strh r0, [r5, #0x36] - pop {r4, r5, pc} - .align 2, 0 -_080A9C30: .4byte gUnk_08129B20 - - thumb_func_start sub_080A9C34 -sub_080A9C34: @ 0x080A9C34 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - adds r1, r4, #0 - movs r2, #0 - movs r3, #1 - bl sub_0806FA90 - adds r4, #0x63 - ldrb r0, [r4] - subs r0, #0xe - strb r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A9C50 -sub_080A9C50: @ 0x080A9C50 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r1, [r5, #0x50] - ldrb r0, [r1, #0x14] - cmp r0, #1 - beq _080A9C78 - cmp r0, #1 - bgt _080A9C66 - cmp r0, #0 - beq _080A9C70 - b _080A9C86 -_080A9C66: - cmp r0, #2 - beq _080A9C80 - cmp r0, #3 - beq _080A9C78 - b _080A9C86 -_080A9C70: - ldrb r0, [r1, #0x1e] - adds r4, r0, #0 - subs r4, #0x27 - b _080A9C86 -_080A9C78: - ldrb r0, [r1, #0x1e] - adds r4, r0, #0 - subs r4, #0x2d - b _080A9C86 -_080A9C80: - ldrb r0, [r1, #0x1e] - adds r4, r0, #0 - subs r4, #0x33 -_080A9C86: - adds r0, r1, #0 - adds r1, r5, #0 - movs r2, #0 - movs r3, #1 - bl sub_0806FA90 - adds r0, r5, #0 - adds r0, #0x63 - ldr r1, _080A9CA4 @ =gUnk_08129B50 - adds r1, r4, r1 - ldrb r1, [r1] - ldrb r2, [r0] - adds r1, r1, r2 - strb r1, [r0] - pop {r4, r5, pc} - .align 2, 0 -_080A9CA4: .4byte gUnk_08129B50 diff --git a/asm/projectile/projectile11.s b/asm/projectile/projectile11.s deleted file mode 100644 index ee1b382a..00000000 --- a/asm/projectile/projectile11.s +++ /dev/null @@ -1,142 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile11 -Projectile11: @ 0x080A9CA8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, [r5, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080A9CB8 - bl DeleteThisEntity -_080A9CB8: - ldr r4, _080A9CD0 @ =gUnk_08129B58 - adds r0, r5, #0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A9CD0: .4byte gUnk_08129B58 - - thumb_func_start sub_080A9CD4 -sub_080A9CD4: @ 0x080A9CD4 - push {lr} - ldr r2, _080A9CE8 @ =gUnk_08129B70 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A9CE8: .4byte gUnk_08129B70 - - thumb_func_start nullsub_539 -nullsub_539: @ 0x080A9CEC - bx lr - .align 2, 0 - - thumb_func_start sub_080A9CF0 -sub_080A9CF0: @ 0x080A9CF0 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F520 - cmp r0, #0 - bne _080A9D0A - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080A9D0A: - ldr r0, _080A9D1C @ =gUnk_08129B78 - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080A9D1C: .4byte gUnk_08129B78 - - thumb_func_start sub_080A9D20 -sub_080A9D20: @ 0x080A9D20 - movs r1, #2 - strb r1, [r0, #0xd] - bx lr - .align 2, 0 - - thumb_func_start nullsub_540 -nullsub_540: @ 0x080A9D28 - bx lr - .align 2, 0 - - thumb_func_start sub_080A9D2C -sub_080A9D2C: @ 0x080A9D2C - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F3E4 - cmp r0, #0 - beq _080A9D64 - adds r0, r4, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #0xa6 - bne _080A9D56 - movs r0, #2 - rsbs r0, r0, #0 - bl ModHealth - ldr r0, _080A9D68 @ =gPlayerEntity - movs r1, #0x7a - bl sub_0800449C - bl sub_08079D84 -_080A9D56: - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080A9D64: - pop {r4, pc} - .align 2, 0 -_080A9D68: .4byte gPlayerEntity - - thumb_func_start sub_080A9D6C -sub_080A9D6C: @ 0x080A9D6C - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - ldr r1, [r0, #0x50] - ldrb r1, [r1, #0x14] - strb r1, [r0, #0x14] - ldrb r1, [r0, #0x14] - bl InitAnimationForceUpdate - pop {pc} - - thumb_func_start sub_080A9D80 -sub_080A9D80: @ 0x080A9D80 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r3, _080A9D9C @ =0xFFFF0000 - adds r1, r4, #0 - movs r2, #0 - bl PositionRelative - ldr r0, _080A9DA0 @ =0x0000FFFE - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - .align 2, 0 -_080A9D9C: .4byte 0xFFFF0000 -_080A9DA0: .4byte 0x0000FFFE diff --git a/asm/projectile/projectile12.s b/asm/projectile/projectile12.s deleted file mode 100644 index 4c5a973e..00000000 --- a/asm/projectile/projectile12.s +++ /dev/null @@ -1,101 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile12 -Projectile12: @ 0x080A9DA4 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A9DBC @ =gUnk_08129BEC - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A9DBC: .4byte gUnk_08129BEC - - thumb_func_start sub_080A9DC0 -sub_080A9DC0: @ 0x080A9DC0 - push {lr} - ldr r2, _080A9DD4 @ =gUnk_08129C00 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A9DD4: .4byte gUnk_08129C00 - - thumb_func_start sub_080A9DD8 -sub_080A9DD8: @ 0x080A9DD8 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - beq _080A9DEE - adds r0, r4, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _080A9DF2 -_080A9DEE: - bl DeleteThisEntity -_080A9DF2: - adds r0, r4, #0 - bl sub_080A9DC0 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A9DFC -sub_080A9DFC: @ 0x080A9DFC - push {lr} - movs r2, #1 - strb r2, [r0, #0xc] - movs r1, #0xb4 - strb r1, [r0, #0xe] - adds r1, r0, #0 - adds r1, #0x45 - strb r2, [r1] - movs r1, #0 - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_080A9E14 -sub_080A9E14: @ 0x080A9E14 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - bne _080A9E34 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A9E42 -_080A9E34: - adds r0, r4, #0 - movs r1, #0x4f - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080A9E42: - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080A9E50 - bl DeleteThisEntity -_080A9E50: - pop {r4, pc} - .align 2, 0 diff --git a/asm/projectile/projectile13.s b/asm/projectile/projectile13.s deleted file mode 100644 index 595d6c87..00000000 --- a/asm/projectile/projectile13.s +++ /dev/null @@ -1,747 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile13 -Projectile13: @ 0x080A9E54 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, [r5, #0x54] - cmp r0, #0 - bne _080A9E60 - ldr r0, [r5, #0x50] -_080A9E60: - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - bne _080A9E78 - ldrb r1, [r5, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080A9E78 - movs r0, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] -_080A9E78: - ldr r4, _080A9E90 @ =gUnk_08129C7C - adds r0, r5, #0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A9E90: .4byte gUnk_08129C7C - - thumb_func_start sub_080A9E94 -sub_080A9E94: @ 0x080A9E94 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #2 - bhi _080A9EA4 - adds r0, r4, #0 - bl sub_080AA1D8 -_080A9EA4: - ldr r0, _080A9EB8 @ =gUnk_08129C90 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080A9EB8: .4byte gUnk_08129C90 - - thumb_func_start sub_080A9EBC -sub_080A9EBC: @ 0x080A9EBC - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A9F4E - ldrb r0, [r4, #0xc] - cmp r0, #3 - beq _080A9EF2 - cmp r0, #4 - bne _080A9F18 - movs r0, #0 - strb r0, [r4, #0xf] - subs r0, #2 - bl ModHealth - adds r0, r4, #0 - bl sub_080AF090 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r5, r4, #0 - adds r5, #0x42 - b _080A9F4A -_080A9EF2: - adds r0, r4, #0 - adds r0, #0x43 - ldrb r0, [r0] - adds r5, r4, #0 - adds r5, #0x42 - cmp r0, #0 - beq _080A9F4A - adds r1, r4, #0 - adds r1, #0x82 - movs r0, #2 - strb r0, [r1] - movs r0, #0xff - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_080AA270 - movs r0, #0x20 - strb r0, [r4, #0xf] - b _080A9F4A -_080A9F18: - ldr r3, [r4, #0x50] - adds r0, r4, #0 - adds r0, #0x3d - ldrb r0, [r0] - adds r1, r3, #0 - adds r1, #0x3d - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x3e - ldrb r0, [r0] - adds r1, #1 - strb r0, [r1] - adds r2, r4, #0 - adds r2, #0x42 - ldrb r1, [r2] - adds r0, r3, #0 - adds r0, #0x42 - strb r1, [r0] - ldrb r0, [r4, #0xc] - adds r5, r2, #0 - cmp r0, #1 - bne _080A9F4A - adds r0, r4, #0 - bl sub_080AA320 -_080A9F4A: - movs r0, #0 - strb r0, [r5] -_080A9F4E: - pop {r4, r5, pc} - - thumb_func_start sub_080A9F50 -sub_080A9F50: @ 0x080A9F50 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x80 - movs r2, #0 - strh r1, [r0] - movs r0, #0xff - strb r0, [r4, #0x14] - adds r0, r4, #0 - adds r0, #0x82 - strb r2, [r0] - 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 r1, [r4, #0x50] - adds r0, r4, #0 - bl sub_0806FAD8 - adds r0, r4, #0 - bl sub_080AA270 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A9F90 -sub_080A9F90: @ 0x080A9F90 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x80 - ldrh r0, [r1] - cmp r0, #0 - beq _080A9FA4 - subs r0, #1 - strh r0, [r1] - b _080A9FC8 -_080A9FA4: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A9FB8 - adds r0, r4, #0 - bl sub_080AA270 - b _080A9FC8 -_080A9FB8: - adds r0, r4, #0 - bl sub_080AA2E0 - cmp r0, #0 - beq _080A9FC8 - adds r0, r4, #0 - bl sub_080AA320 -_080A9FC8: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - - thumb_func_start sub_080A9FD0 -sub_080A9FD0: @ 0x080A9FD0 - push {r4, r5, lr} - adds r5, r0, #0 - bl UpdateAnimationSingleFrame - adds r2, r5, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _080A9FF2 - movs r0, #0xbf - ands r0, r1 - strb r0, [r2] - ldr r0, _080AA038 @ =0x0000015D - bl EnqueueSFX -_080A9FF2: - movs r0, #0x2e - ldrsh r1, [r5, r0] - ldr r2, _080AA03C @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r4, #0x32 - ldrsh r0, [r5, r4] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r4, r5, #0 - adds r4, #0x78 - strh r1, [r4] - ldrh r0, [r4] - adds r5, #0x38 - ldrb r1, [r5] - bl GetTileType - movs r1, #0x80 - lsls r1, r1, #7 - cmp r0, r1 - bne _080AA034 - ldr r0, _080AA040 @ =0x00004005 - ldrh r1, [r4] - ldrb r2, [r5] - bl SetTile -_080AA034: - pop {r4, r5, pc} - .align 2, 0 -_080AA038: .4byte 0x0000015D -_080AA03C: .4byte gRoomControls -_080AA040: .4byte 0x00004005 - - thumb_func_start sub_080AA044 -sub_080AA044: @ 0x080AA044 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x54] - cmp r5, #0 - bne _080AA052 - bl DeleteThisEntity -_080AA052: - ldr r0, [r5, #4] - cmp r0, #0 - bne _080AA05E - bl DeleteThisEntity - b _080AA0A2 -_080AA05E: - ldrh r0, [r5, #0x12] - ldrb r1, [r5, #0x1e] - bl GetSpriteSubEntryOffsetDataPointer - adds r3, r0, #0 - ldrb r1, [r5, #0x14] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _080AA08C - movs r2, #0 - ldrsb r2, [r3, r2] - rsbs r2, r2, #0 - lsls r2, r2, #0x10 - ldrb r3, [r3, #1] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - lsls r3, r3, #0x10 - adds r0, r5, #0 - adds r1, r4, #0 - bl PositionRelative - b _080AA0A2 -_080AA08C: - movs r2, #0 - ldrsb r2, [r3, r2] - lsls r2, r2, #0x10 - ldrb r3, [r3, #1] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - lsls r3, r3, #0x10 - adds r0, r5, #0 - adds r1, r4, #0 - bl PositionRelative -_080AA0A2: - adds r0, r5, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - bne _080AA108 - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _080AA0B8 - subs r0, #1 - strb r0, [r4, #0xf] - b _080AA108 -_080AA0B8: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AA108 - movs r0, #4 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x82 - movs r0, #3 - strb r0, [r1] - movs r0, #0x40 - strb r0, [r4, #0xf] - ldrb r0, [r5, #0x14] - lsls r1, r0, #2 - strb r1, [r4, #0x15] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x1a - strb r0, [r4, #0x14] - ldr r0, _080AA10C @ =gUnk_080FD150 - str r0, [r4, #0x48] - bl CheckIsDungeon - cmp r0, #0 - beq _080AA100 - ldrb r0, [r4, #0x1b] - movs r1, #0x3f - ands r1, r0 - movs r0, #0x40 - orrs r1, r0 - strb r1, [r4, #0x1b] -_080AA100: - adds r0, r4, #0 - movs r1, #0 - bl sub_080AA3E0 -_080AA108: - pop {r4, r5, pc} - .align 2, 0 -_080AA10C: .4byte gUnk_080FD150 - - thumb_func_start sub_080AA110 -sub_080AA110: @ 0x080AA110 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r6, r0, #0 - ldr r7, [r6, #0x54] - cmp r7, #0 - beq _080AA1B6 - ldr r0, [r7, #4] - cmp r0, #0 - bne _080AA128 - str r0, [r6, #0x54] -_080AA128: - ldrb r0, [r6, #0xf] - adds r5, r0, #0 - cmp r5, #0 - beq _080AA136 - subs r0, #1 - strb r0, [r6, #0xf] - b _080AA1C4 -_080AA136: - adds r0, r6, #0 - bl sub_080AA374 - cmp r0, #0 - beq _080AA1C4 - adds r0, r7, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _080AA14E - bl DeleteThisEntity -_080AA14E: - movs r0, #0xf2 - bl EnqueueSFX - movs r4, #1 - strb r4, [r6, #0xc] - movs r0, #0xff - strb r0, [r6, #0x14] - adds r0, r6, #0 - adds r0, #0x82 - strb r5, [r0] - strb r5, [r6, #0xe] - subs r0, #2 - movs r1, #0 - mov sb, r1 - movs r1, #0x20 - mov r8, r1 - mov r1, r8 - strh r1, [r0] - ldrb r1, [r6, #0x1b] - movs r0, #0x3f - ands r0, r1 - movs r1, #0x80 - orrs r0, r1 - strb r0, [r6, #0x1b] - ldr r0, [r6, #0x54] - str r0, [r6, #0x50] - str r5, [r6, #0x54] - adds r0, r6, #0 - bl sub_080AA270 - ldr r7, [r6, #0x50] - strb r4, [r7, #0xc] - ldrb r0, [r7, #0x14] - lsls r0, r0, #2 - strb r0, [r7, #0x15] - strh r5, [r7, #0x24] - adds r0, r7, #0 - adds r0, #0x82 - strb r4, [r0] - mov r0, sb - strb r0, [r7, #0xe] - movs r0, #0x78 - strb r0, [r7, #0xf] - adds r0, r7, #0 - adds r0, #0x80 - mov r1, r8 - strh r1, [r0] - adds r0, r7, #0 - movs r1, #1 - bl sub_080AA3E0 - b _080AA1C4 -_080AA1B6: - adds r0, r6, #0 - bl sub_080040A8 - cmp r0, #0 - bne _080AA1C4 - bl DeleteThisEntity -_080AA1C4: - adds r0, r6, #0 - bl sub_0806F69C - adds r0, r6, #0 - bl UpdateAnimationSingleFrame - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080AA1D8 -sub_080AA1D8: @ 0x080AA1D8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, [r5, #0x50] - cmp r4, #0 - beq _080AA268 - ldr r0, [r4, #4] - cmp r0, #0 - bne _080AA1EC - bl DeleteThisEntity -_080AA1EC: - ldrb r1, [r4, #0x1e] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - bne _080AA26C - ldrh r0, [r4, #0x12] - ldrb r1, [r4, #0x1e] - bl GetSpriteSubEntryOffsetDataPointer - adds r3, r0, #0 - ldrb r1, [r4, #0x14] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _080AA224 - movs r2, #0 - ldrsb r2, [r3, r2] - rsbs r2, r2, #0 - lsls r2, r2, #0x10 - ldrb r3, [r3, #1] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - lsls r3, r3, #0x10 - adds r0, r4, #0 - adds r1, r5, #0 - bl PositionRelative - b _080AA23A -_080AA224: - movs r2, #0 - ldrsb r2, [r3, r2] - lsls r2, r2, #0x10 - ldrb r3, [r3, #1] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - lsls r3, r3, #0x10 - adds r0, r4, #0 - adds r1, r5, #0 - bl PositionRelative -_080AA23A: - adds r0, r4, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _080AA256 - ldrb r1, [r5, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AA26C - movs r0, #0x7f - ands r0, r1 - strb r0, [r5, #0x10] - b _080AA26C -_080AA256: - ldrb r1, [r5, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080AA26C - movs r0, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] - b _080AA26C -_080AA268: - bl DeleteThisEntity -_080AA26C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080AA270 -sub_080AA270: @ 0x080AA270 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldr r4, [r5, #0x50] - bl Random - ldr r1, _080AA2A4 @ =gUnk_08129CA4 - movs r6, #7 - ands r0, r6 - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r5, #0xf] - ldrb r4, [r4, #0x14] - ldrb r0, [r5, #0x14] - cmp r0, #0xff - bne _080AA2AC - strb r4, [r5, #0x14] - ldr r0, _080AA2A8 @ =gUnk_08129CF4 - lsls r1, r4, #2 - adds r1, r1, r0 - ldr r0, [r1] - str r0, [r5, #0x48] - adds r0, r5, #0 - movs r1, #0 - bl sub_080AA3E0 - b _080AA2D6 - .align 2, 0 -_080AA2A4: .4byte gUnk_08129CA4 -_080AA2A8: .4byte gUnk_08129CF4 -_080AA2AC: - bl Random - ldr r1, _080AA2D8 @ =gUnk_08129CAC - ands r0, r6 - adds r0, r0, r1 - ldrb r0, [r0] - adds r4, r0, r4 - ands r4, r6 - ldrb r0, [r5, #0x14] - cmp r4, r0 - beq _080AA2D6 - strb r4, [r5, #0x14] - ldr r0, _080AA2DC @ =gUnk_08129CF4 - lsls r1, r4, #2 - adds r1, r1, r0 - ldr r0, [r1] - str r0, [r5, #0x48] - adds r0, r5, #0 - movs r1, #0 - bl sub_080AA3E0 -_080AA2D6: - pop {r4, r5, r6, pc} - .align 2, 0 -_080AA2D8: .4byte gUnk_08129CAC -_080AA2DC: .4byte gUnk_08129CF4 - - thumb_func_start sub_080AA2E0 -sub_080AA2E0: @ 0x080AA2E0 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0 - bl sub_08049DF4 - adds r4, r0, #0 - cmp r4, #0 - beq _080AA31C - adds r0, r5, #0 - adds r1, r4, #0 - bl GetFacingDirection - ldrb r1, [r5, #0x14] - lsls r1, r1, #2 - adds r0, #4 - movs r2, #0x1c - ands r0, r2 - adds r1, #4 - ands r1, r2 - cmp r0, r1 - bne _080AA31C - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0x40 - bl sub_08049F1C - cmp r0, #0 - beq _080AA31C - movs r0, #1 - b _080AA31E -_080AA31C: - movs r0, #0 -_080AA31E: - pop {r4, r5, pc} - - thumb_func_start sub_080AA320 -sub_080AA320: @ 0x080AA320 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, [r5, #0x50] - movs r2, #0 - movs r1, #2 - strb r1, [r5, #0xc] - adds r3, r5, #0 - adds r3, #0x82 - movs r0, #1 - strb r0, [r3] - strb r2, [r5, #0xf] - strb r1, [r4, #0xc] - movs r0, #0x30 - strb r0, [r4, #0xf] - adds r1, r4, #0 - adds r1, #0x80 - movs r0, #0x50 - strh r0, [r1] - strh r2, [r4, #0x24] - adds r0, r4, #0 - movs r1, #0 - bl sub_08049F84 - strb r0, [r4, #0x15] - ldrb r0, [r4, #0x15] - adds r0, #4 - movs r1, #0x1c - ands r0, r1 - lsrs r1, r0, #2 - strb r1, [r5, #0x14] - movs r1, #0x18 - ands r0, r1 - lsrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r0, r4, #0 - movs r1, #1 - bl sub_080AA3E0 - adds r0, r5, #0 - bl sub_080AA1D8 - pop {r4, r5, pc} - - thumb_func_start sub_080AA374 -sub_080AA374: @ 0x080AA374 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r6, r0, #0 - movs r0, #0 - mov r8, r0 - ldr r5, [r6, #0x54] - cmp r5, #0 - beq _080AA3D8 - ldr r0, [r5, #4] - cmp r0, #0 - beq _080AA3D8 - ldrb r4, [r5, #0x14] - ldr r0, _080AA3CC @ =gUnk_08129D14 - adds r4, r4, r0 - movs r2, #0 - ldrsb r2, [r4, r2] - movs r3, #1 - ldrsb r3, [r4, r3] - adds r0, r6, #0 - adds r1, r5, #0 - bl sub_0806F824 - adds r7, r0, #0 - movs r0, #0x2e - ldrsh r1, [r5, r0] - movs r0, #0 - ldrsb r0, [r4, r0] - adds r1, r1, r0 - movs r0, #0x32 - ldrsh r2, [r5, r0] - movs r0, #1 - ldrsb r0, [r4, r0] - adds r2, r2, r0 - adds r0, r6, #0 - movs r3, #8 - bl sub_0806FCB8 - cmp r0, #0 - beq _080AA3D0 - movs r0, #1 - mov r8, r0 - b _080AA3D8 - .align 2, 0 -_080AA3CC: .4byte gUnk_08129D14 -_080AA3D0: - adds r0, r6, #0 - adds r1, r7, #0 - bl sub_08004596 -_080AA3D8: - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080AA3E0 -sub_080AA3E0: @ 0x080AA3E0 - push {lr} - adds r3, r0, #0 - ldrb r2, [r3, #0x14] - adds r0, #0x82 - ldrb r0, [r0] - lsls r0, r0, #3 - orrs r2, r0 - cmp r1, #0 - beq _080AA3F4 - lsrs r2, r2, #1 -_080AA3F4: - adds r0, r3, #0 - adds r1, r2, #0 - bl InitAnimationForceUpdate - pop {pc} - .align 2, 0 diff --git a/asm/projectile/projectile14.s b/asm/projectile/projectile14.s deleted file mode 100644 index 7e184167..00000000 --- a/asm/projectile/projectile14.s +++ /dev/null @@ -1,342 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile14 -Projectile14: @ 0x080AA400 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080AA418 @ =gUnk_08129FB8 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080AA418: .4byte gUnk_08129FB8 - - thumb_func_start sub_080AA41C -sub_080AA41C: @ 0x080AA41C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _080AA44C - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0xa] - strb r1, [r2, #0x1e] - strb r0, [r2, #0x1c] - adds r0, r2, #0 - adds r0, #0x86 - ldrh r0, [r0] - strh r0, [r2, #0x24] - lsls r1, r1, #0x18 - cmp r1, #0 - bne _080AA446 - adds r0, r2, #0 - bl sub_080AA494 - b _080AA44C -_080AA446: - adds r0, r2, #0 - bl sub_080AA534 -_080AA44C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080AA450 -sub_080AA450: @ 0x080AA450 - push {lr} - adds r1, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x96 - bne _080AA462 - adds r0, r1, #0 - bl sub_080AA464 -_080AA462: - pop {pc} - - thumb_func_start sub_080AA464 -sub_080AA464: @ 0x080AA464 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080AA474 - adds r0, r4, #0 - bl sub_080AA544 -_080AA474: - movs r0, #0x21 - movs r1, #3 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _080AA48A - adds r0, r4, #0 - bl CopyPosition -_080AA48A: - adds r0, r4, #0 - bl DeleteEntity - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AA494 -sub_080AA494: @ 0x080AA494 - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r4, #0 - bl GetTileTypeByEntity - adds r2, r0, #0 - ldr r1, _080AA4A4 @ =gUnk_08129FD0 - b _080AA4AA - .align 2, 0 -_080AA4A4: .4byte gUnk_08129FD0 -_080AA4A8: - adds r4, #1 -_080AA4AA: - ldrh r0, [r1] - cmp r0, #0 - beq _080AA4B6 - adds r1, #2 - cmp r0, r2 - bne _080AA4A8 -_080AA4B6: - ldrh r0, [r5, #0x24] - bl CheckFlags - cmp r0, #0 - beq _080AA4EE - cmp r4, #4 - bne _080AA4EA - movs r0, #0x2e - ldrsh r1, [r5, r0] - ldr r2, _080AA52C @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r6, #0x32 - ldrsh r0, [r5, r6] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r5, #0 - bl sub_080AA654 -_080AA4EA: - bl DeleteThisEntity -_080AA4EE: - strb r4, [r5, #0xb] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080AA530 @ =0x00004068 - movs r2, #0x2e - ldrsh r1, [r5, r2] - ldr r3, _080AA52C @ =gRoomControls - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - movs r4, #0x3f - ands r1, r4 - movs r6, #0x32 - ldrsh r2, [r5, r6] - ldrh r3, [r3, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - adds r2, r5, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile - pop {r4, r5, r6, pc} - .align 2, 0 -_080AA52C: .4byte gRoomControls -_080AA530: .4byte 0x00004068 - - thumb_func_start sub_080AA534 -sub_080AA534: @ 0x080AA534 - push {lr} - adds r2, r0, #0 - adds r2, #0x38 - movs r1, #3 - strb r1, [r2] - bl UpdateSpriteForCollisionLayer - pop {pc} - - thumb_func_start sub_080AA544 -sub_080AA544: @ 0x080AA544 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r6, r0, #0 - ldrb r0, [r6, #0xb] - cmp r0, #8 - bhi _080AA618 - ldr r0, _080AA5E8 @ =gUnk_08129FF8 - mov sb, r0 - movs r1, #0x2e - ldrsh r2, [r6, r1] - ldr r1, _080AA5EC @ =gRoomControls - ldrh r0, [r1, #6] - subs r2, r2, r0 - asrs r2, r2, #4 - movs r3, #0x3f - ands r2, r3 - movs r4, #0x32 - ldrsh r0, [r6, r4] - ldrh r1, [r1, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r2, r0 - ldrb r0, [r6, #0xb] - add r0, sb - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r7, r2, r0 - movs r4, #0 - movs r5, #0 - movs r0, #0x38 - adds r0, r0, r6 - mov r8, r0 -_080AA58E: - mov r1, sb - adds r0, r1, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r0, r7, r0 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov r2, r8 - ldrb r1, [r2] - bl sub_080002C8 - cmp r0, #0x3e - bne _080AA5AC - adds r5, #1 -_080AA5AC: - adds r4, #1 - cmp r4, #8 - bls _080AA58E - cmp r5, #8 - bne _080AA5F4 - movs r4, #0 - ldr r5, _080AA5F0 @ =gUnk_08129FD0 -_080AA5BA: - ldrh r0, [r5] - mov r3, sb - adds r1, r3, r4 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - subs r1, r7, r1 - mov r3, r8 - ldrb r2, [r3] - bl sub_0807B7D8 - adds r5, #2 - adds r4, #1 - cmp r4, #8 - bls _080AA5BA - adds r0, r6, #0 - adds r1, r7, #0 - bl sub_080AA654 - ldrh r0, [r6, #0x24] - bl SetFlag - b _080AA648 - .align 2, 0 -_080AA5E8: .4byte gUnk_08129FF8 -_080AA5EC: .4byte gRoomControls -_080AA5F0: .4byte gUnk_08129FD0 -_080AA5F4: - ldr r2, _080AA614 @ =gUnk_08129FE4 - ldrb r1, [r6, #0xb] - lsls r0, r1, #1 - adds r0, r0, r2 - ldrh r0, [r0] - add r1, sb - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - subs r1, r7, r1 - mov r4, r8 - ldrb r2, [r4] - bl sub_0807B7D8 - b _080AA648 - .align 2, 0 -_080AA614: .4byte gUnk_08129FE4 -_080AA618: - movs r1, #0x2e - ldrsh r0, [r6, r1] - ldr r2, _080AA650 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r4, #0x32 - ldrsh r1, [r6, r4] - 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 sub_0807BA8C - ldrh r0, [r6, #0x24] - bl SetFlag -_080AA648: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AA650: .4byte gRoomControls - - thumb_func_start sub_080AA654 -sub_080AA654: @ 0x080AA654 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r4, #0x68 - ldr r0, _080AA688 @ =gUnk_0812A004 - adds r1, r4, #0 - movs r2, #0x10 - bl MemCopy - movs r1, #0x3f - adds r0, r5, #0 - ands r0, r1 - lsls r0, r0, #4 - adds r0, #8 - strh r0, [r4, #8] - movs r0, #0xfc - lsls r0, r0, #4 - ands r0, r5 - lsrs r0, r0, #2 - adds r0, #8 - strh r0, [r4, #0xa] - adds r0, r4, #0 - bl LoadRoomEntity - pop {r4, r5, pc} - .align 2, 0 -_080AA688: .4byte gUnk_0812A004 diff --git a/asm/projectile/projectile15.s b/asm/projectile/projectile15.s deleted file mode 100644 index bcb4a47a..00000000 --- a/asm/projectile/projectile15.s +++ /dev/null @@ -1,582 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile15 -Projectile15: @ 0x080AA68C - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080AA6A4 @ =gUnk_0812A014 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080AA6A4: .4byte gUnk_0812A014 - - thumb_func_start sub_080AA6A8 -sub_080AA6A8: @ 0x080AA6A8 - push {lr} - ldr r2, _080AA6BC @ =gUnk_0812A02C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080AA6BC: .4byte gUnk_0812A02C - - thumb_func_start sub_080AA6C0 -sub_080AA6C0: @ 0x080AA6C0 - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x87 - bne _080AA774 - movs r6, #3 - movs r0, #3 - strb r0, [r4, #0xc] - movs r5, #0x5a - strb r5, [r4, #0xe] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0xa] - adds r1, #0x10 - adds r0, r4, #0 - bl InitAnimationForceUpdate - movs r0, #0x2a - movs r1, #3 - movs r2, #0 - bl CreateObject - adds r3, r0, #0 - cmp r3, #0 - beq _080AA72A - strb r5, [r3, #0xb] - adds r2, r3, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r6 - strb r0, [r2] - ldr r1, _080AA770 @ =gUnk_0812A03C - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, r0, r1 - ldrb r0, [r0] - adds r2, #0x39 - strb r0, [r2] - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, #1 - adds r0, r0, r1 - ldrb r0, [r0] - adds r1, r3, #0 - adds r1, #0x63 - strb r0, [r1] - str r4, [r3, #0x50] -_080AA72A: - movs r0, #0x2a - movs r1, #3 - movs r2, #0 - bl CreateObject - adds r3, r0, #0 - cmp r3, #0 - beq _080AA784 - strb r5, [r3, #0xb] - adds r2, r3, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r6 - strb r0, [r2] - ldr r1, _080AA770 @ =gUnk_0812A03C - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, #2 - adds r0, r0, r1 - ldrb r0, [r0] - adds r2, #0x39 - strb r0, [r2] - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, #3 - adds r0, r0, r1 - ldrb r0, [r0] - adds r1, r3, #0 - adds r1, #0x63 - strb r0, [r1] - str r4, [r3, #0x50] - b _080AA784 - .align 2, 0 -_080AA770: .4byte gUnk_0812A03C -_080AA774: - ldrb r1, [r4, #0xa] - adds r1, #0x10 - adds r0, r4, #0 - bl InitAnimationForceUpdate - ldr r0, _080AA788 @ =0x00000101 - bl EnqueueSFX -_080AA784: - pop {r4, r5, r6, pc} - .align 2, 0 -_080AA788: .4byte 0x00000101 - - thumb_func_start sub_080AA78C -sub_080AA78C: @ 0x080AA78C - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _080AA7DA - ldr r0, _080AA7C8 @ =gPlayerEntity - ldrb r0, [r0, #0x14] - lsrs r2, r0, #1 - ldrb r0, [r4, #0xa] - cmp r2, r0 - beq _080AA7CC - adds r3, r4, #0 - adds r3, #0x3a - ldrb r0, [r3] - movs r1, #0xfb - ands r1, r0 - strb r1, [r3] - movs r0, #2 - eors r2, r0 - ldrb r0, [r4, #0xa] - cmp r2, r0 - bne _080AA832 - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0xe2 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080AA6C0 - b _080AA832 - .align 2, 0 -_080AA7C8: .4byte gPlayerEntity -_080AA7CC: - movs r0, #1 - strb r0, [r4, #0xd] - adds r1, r2, #0 - adds r1, #8 - adds r0, r4, #0 - bl InitAnimationForceUpdate -_080AA7DA: - adds r0, r4, #0 - bl sub_0806F520 - cmp r0, #0 - beq _080AA812 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r5, r4, #0 - adds r5, #0x5a - ldrb r1, [r5] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _080AA806 - movs r0, #0xef - ands r0, r1 - strb r0, [r5] - movs r0, #0x80 - lsls r0, r0, #1 - bl EnqueueSFX -_080AA806: - ldrb r1, [r5] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AA832 - b _080AA820 -_080AA812: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080AA828 -_080AA820: - adds r0, r4, #0 - bl sub_080AAAA8 - b _080AA832 -_080AA828: - ldrb r1, [r4, #0xa] - adds r1, #0x10 - adds r0, r4, #0 - bl InitAnimationForceUpdate -_080AA832: - pop {r4, r5, pc} - - thumb_func_start sub_080AA834 -sub_080AA834: @ 0x080AA834 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _080AA848 - bl DeleteThisEntity -_080AA848: - movs r2, #0 - movs r0, #1 - strb r0, [r4, #0xc] - strb r0, [r4, #0x1c] - strb r0, [r4, #0x16] - ldr r1, _080AA874 @ =gUnk_0812A04C - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - str r0, [r4, #0x48] - adds r0, r4, #0 - adds r0, #0x84 - strb r2, [r0] - ldrb r1, [r4, #0xa] - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_080AAA68 - pop {r4, pc} - .align 2, 0 -_080AA874: .4byte gUnk_0812A04C - - thumb_func_start sub_080AA878 -sub_080AA878: @ 0x080AA878 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080AA88E - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_080AA88E: - adds r0, r4, #0 - bl sub_080AA9E0 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AA898 -sub_080AA898: @ 0x080AA898 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806FBB4 - ldr r1, _080AA8B4 @ =gUnk_0812A05C - ldrb r0, [r4, #0xd] - subs r0, #5 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080AA8B4: .4byte gUnk_0812A05C - - thumb_func_start sub_080AA8B8 -sub_080AA8B8: @ 0x080AA8B8 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldr r7, _080AA99C @ =gPlayerEntity - adds r0, #0x84 - ldrb r0, [r0] - cmp r0, #0 - bne _080AA920 - ldrb r0, [r4, #0xa] - lsls r2, r0, #1 - ldrb r0, [r7, #0x14] - cmp r2, r0 - bne _080AA90A - ldr r1, _080AA9A0 @ =gUnk_0812A064 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r3, [r4, #0x2e] - adds r0, r0, r3 - lsls r0, r0, #0x10 - lsrs r6, r0, #0x10 - adds r0, r2, #1 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 - adds r0, r7, #0 - adds r0, #0x38 - ldrb r2, [r0] - adds r0, r6, #0 - adds r1, r5, #0 - bl sub_080002D4 - cmp r0, #0 - bne _080AA90A - strh r6, [r7, #0x2e] - strh r5, [r7, #0x32] -_080AA90A: - adds r1, r4, #0 - adds r1, #0x84 - movs r0, #1 - strb r0, [r1] - movs r0, #2 - strb r0, [r4, #0xf] - ldrb r1, [r4, #0xa] - adds r1, #4 - adds r0, r4, #0 - bl InitAnimationForceUpdate -_080AA920: - ldrb r0, [r7, #0x14] - lsrs r0, r0, #1 - ldrb r2, [r4, #0xa] - cmp r0, r2 - bne _080AA99A - ldr r1, _080AA9A4 @ =gPlayerState - adds r0, r1, #0 - adds r0, #0xa8 - ldrb r0, [r0] - cmp r0, #0x1a - bne _080AA99A - ldrb r1, [r1, #5] - movs r2, #2 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _080AA99A - ldr r0, _080AA99C @ =gPlayerEntity - adds r0, #0x5a - ldrb r1, [r0] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _080AA99A - adds r5, r4, #0 - adds r5, #0x5a - ldrb r1, [r5] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080AA99A - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - ldrb r1, [r5] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080AA99A - ldr r1, _080AA9A8 @ =gUnk_0812A06C - ldrb r0, [r7, #0x14] - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r3, [r7, #0x2e] - adds r0, r0, r3 - strh r0, [r7, #0x2e] - ldrb r0, [r7, #0x14] - adds r0, #1 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r7, #0x32] - adds r0, r0, r1 - strh r0, [r7, #0x32] - movs r0, #0x80 - lsls r0, r0, #1 - bl EnqueueSFX -_080AA99A: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AA99C: .4byte gPlayerEntity -_080AA9A0: .4byte gUnk_0812A064 -_080AA9A4: .4byte gPlayerState -_080AA9A8: .4byte gUnk_0812A06C - - thumb_func_start sub_080AA9AC -sub_080AA9AC: @ 0x080AA9AC - push {lr} - movs r2, #0 - movs r1, #1 - strb r1, [r0, #0xc] - adds r1, r0, #0 - adds r1, #0x84 - strb r2, [r1] - ldrb r1, [r0, #0xa] - adds r1, #0xc - bl InitAnimationForceUpdate - pop {pc} - - thumb_func_start sub_080AA9C4 -sub_080AA9C4: @ 0x080AA9C4 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080AA9DE - adds r0, r4, #0 - bl sub_080AAAA8 -_080AA9DE: - pop {r4, pc} - - thumb_func_start sub_080AA9E0 -sub_080AA9E0: @ 0x080AA9E0 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r1, [r5, #0xa] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080AAA00 - ldr r0, _080AA9FC @ =gPlayerEntity - movs r2, #0x2e - ldrsh r1, [r0, r2] - movs r2, #0x2e - ldrsh r0, [r5, r2] - b _080AAA0A - .align 2, 0 -_080AA9FC: .4byte gPlayerEntity -_080AAA00: - ldr r0, _080AAA24 @ =gPlayerEntity - movs r2, #0x32 - ldrsh r1, [r0, r2] - movs r2, #0x32 - ldrsh r0, [r5, r2] -_080AAA0A: - subs r4, r1, r0 - ldrb r2, [r5, #0xa] - lsls r1, r2, #2 - ldr r0, _080AAA28 @ =gUnk_0812A074 - adds r3, r1, r0 - cmp r2, #2 - bgt _080AAA2C - cmp r2, #1 - bge _080AAA36 - cmp r2, #0 - beq _080AAA30 - b _080AAA40 - .align 2, 0 -_080AAA24: .4byte gPlayerEntity -_080AAA28: .4byte gUnk_0812A074 -_080AAA2C: - cmp r2, #3 - bne _080AAA40 -_080AAA30: - cmp r4, #4 - ble _080AAA40 - b _080AAA3E -_080AAA36: - movs r0, #4 - rsbs r0, r0, #0 - cmp r4, r0 - bge _080AAA40 -_080AAA3E: - adds r3, #2 -_080AAA40: - ldrb r0, [r3] - adds r4, r5, #0 - adds r4, #0x29 - movs r1, #7 - ands r1, r0 - ldrb r2, [r4] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4] - ldrb r0, [r3, #1] - strb r0, [r5, #0x15] - ldrb r0, [r3] - cmp r0, #5 - bne _080AAA66 - adds r0, r5, #0 - bl sub_08078930 -_080AAA66: - pop {r4, r5, pc} - - thumb_func_start sub_080AAA68 -sub_080AAA68: @ 0x080AAA68 - push {r4, r5, r6, lr} - ldr r2, _080AAAA0 @ =gUnk_0812A084 - ldrb r1, [r0, #0xa] - lsls r1, r1, #1 - adds r1, r1, r2 - ldrh r5, [r1] - movs r2, #0x2e - ldrsh r1, [r0, r2] - ldr r3, _080AAAA4 @ =gRoomControls - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - movs r4, #0x3f - ands r1, r4 - movs r6, #0x32 - ldrsh r2, [r0, r6] - ldrh r3, [r3, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - adds r0, #0x38 - ldrb r2, [r0] - adds r0, r5, #0 - bl SetTile - pop {r4, r5, r6, pc} - .align 2, 0 -_080AAAA0: .4byte gUnk_0812A084 -_080AAAA4: .4byte gRoomControls - - thumb_func_start sub_080AAAA8 -sub_080AAAA8: @ 0x080AAAA8 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl SetFlag - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _080AAAE4 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r5, #0x32 - ldrsh r1, [r4, r5] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - adds r4, #0x38 - ldrb r1, [r4] - bl sub_0807BA8C - bl DeleteThisEntity - pop {r4, r5, pc} - .align 2, 0 -_080AAAE4: .4byte gRoomControls diff --git a/asm/projectile/projectile16.s b/asm/projectile/projectile16.s deleted file mode 100644 index 8db295ef..00000000 --- a/asm/projectile/projectile16.s +++ /dev/null @@ -1,97 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile16 -Projectile16: @ 0x080AAAE8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080AAB00 @ =gUnk_0812A3C0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080AAB00: .4byte gUnk_0812A3C0 - - thumb_func_start sub_080AAB04 -sub_080AAB04: @ 0x080AAB04 - push {lr} - ldr r2, _080AAB18 @ =gUnk_0812A3D4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080AAB18: .4byte gUnk_0812A3D4 - - thumb_func_start sub_080AAB1C -sub_080AAB1C: @ 0x080AAB1C - push {lr} - bl DeleteThisEntity - pop {pc} - - thumb_func_start sub_080AAB24 -sub_080AAB24: @ 0x080AAB24 - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - movs r1, #0x1e - strb r1, [r0, #0xe] - movs r1, #0 - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_080AAB38 -sub_080AAB38: @ 0x080AAB38 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _080AAB4C - subs r0, #1 - strb r0, [r4, #0xe] - b _080AAB62 -_080AAB4C: - adds r0, r4, #0 - bl sub_080AF090 - cmp r0, #0 - bne _080AAB5E - adds r0, r4, #0 - bl sub_0806F69C - b _080AAB62 -_080AAB5E: - movs r0, #2 - strb r0, [r4, #0xc] -_080AAB62: - pop {r4, pc} - - thumb_func_start sub_080AAB64 -sub_080AAB64: @ 0x080AAB64 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _080AAB7C - bl DeleteThisEntity -_080AAB7C: - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080AAB8A - bl DeleteThisEntity -_080AAB8A: - pop {r4, pc} diff --git a/asm/projectile/projectile17.s b/asm/projectile/projectile17.s deleted file mode 100644 index 9906583f..00000000 --- a/asm/projectile/projectile17.s +++ /dev/null @@ -1,58 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile17 -Projectile17: @ 0x080AAB8C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080AABA2 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_080AABA2: - adds r0, r4, #0 - bl sub_080AABB0 - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_080AABB0 -sub_080AABB0: @ 0x080AABB0 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldrb r1, [r5, #0x14] - lsls r1, r1, #1 - ldr r0, _080AABEC @ =gSineTable - adds r1, r1, r0 - ldrb r2, [r4, #0xe] - lsls r2, r2, #8 - movs r3, #0 - ldrsh r0, [r1, r3] - adds r3, r0, #0 - muls r3, r2, r3 - ldr r0, [r4, #0x2c] - adds r0, r0, r3 - str r0, [r4, #0x2c] - adds r1, #0x80 - movs r3, #0 - ldrsh r0, [r1, r3] - adds r1, r0, #0 - muls r1, r2, r1 - ldr r0, [r4, #0x30] - subs r0, r0, r1 - str r0, [r4, #0x30] - pop {r4, r5, pc} - .align 2, 0 -_080AABEC: .4byte gSineTable diff --git a/asm/projectile/projectile18.s b/asm/projectile/projectile18.s deleted file mode 100644 index a8be53c4..00000000 --- a/asm/projectile/projectile18.s +++ /dev/null @@ -1,603 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Projectile18 -Projectile18: @ 0x080AABF0 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080AAC08 @ =gUnk_0812A418 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080AAC08: .4byte gUnk_0812A418 - - thumb_func_start sub_080AAC0C -sub_080AAC0C: @ 0x080AAC0C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080AAC40 @ =gUnk_0812A430 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _080AAC3C - adds r1, r4, #0 - adds r1, #0x84 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _080AAC3C - subs r1, #0x3f - movs r0, #0 - strb r0, [r1] -_080AAC3C: - pop {r4, pc} - .align 2, 0 -_080AAC40: .4byte gUnk_0812A430 - - thumb_func_start sub_080AAC44 -sub_080AAC44: @ 0x080AAC44 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AACCA - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _080AACBC - movs r0, #0x3f - ands r0, r1 - cmp r0, #0 - bne _080AACA0 - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080AAC84 - ldr r0, _080AAC80 @ =gPlayerEntity - adds r1, r4, #0 - bl ResolveEntityOnTop - b _080AAC8C - .align 2, 0 -_080AAC80: .4byte gPlayerEntity -_080AAC84: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl ResolveEntityOnTop -_080AAC8C: - bl ResetPlayer - ldr r2, _080AACB4 @ =gPlayerState - ldrb r1, [r2, #0x1a] - movs r0, #0x80 - orrs r1, r0 - strb r1, [r2, #0x1a] - ldrb r1, [r2, #0xa] - orrs r0, r1 - strb r0, [r2, #0xa] -_080AACA0: - ldr r0, _080AACB8 @ =gPlayerEntity - adds r0, #0x45 - ldrb r1, [r0] - cmp r1, #0 - bne _080AACCA - adds r0, r4, #0 - adds r0, #0x45 - strb r1, [r0] - b _080AACCA - .align 2, 0 -_080AACB4: .4byte gPlayerState -_080AACB8: .4byte gPlayerEntity -_080AACBC: - ldr r0, _080AACDC @ =0x00000119 - bl SoundReq - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition -_080AACCA: - adds r1, r4, #0 - adds r1, #0x42 - ldrb r0, [r1] - cmp r0, #0 - beq _080AACD8 - movs r0, #0 - strb r0, [r1] -_080AACD8: - pop {r4, pc} - .align 2, 0 -_080AACDC: .4byte 0x00000119 - - thumb_func_start sub_080AACE0 -sub_080AACE0: @ 0x080AACE0 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _080AACF4 - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _080AACF4 - bl DeleteThisEntity -_080AACF4: - ldrb r1, [r4, #0x18] - lsls r0, r1, #0x1e - lsrs r2, r0, #0x1e - adds r5, r4, #0 - adds r5, #0x86 - cmp r2, #1 - bne _080AAD16 - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - strb r2, [r5] - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx -_080AAD16: - ldr r2, [r4, #0x50] - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _080AAD4A - adds r1, r2, #0 - adds r1, #0x74 - movs r0, #3 - strb r0, [r1] - adds r1, #0xc - adds r0, r4, #0 - adds r0, #0x81 - ldrb r0, [r0] - lsrs r0, r0, #1 - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #8 - bls _080AAD42 - movs r0, #8 - b _080AAD56 -_080AAD42: - cmp r0, #0 - bne _080AAD58 - movs r0, #1 - b _080AAD56 -_080AAD4A: - adds r1, r2, #0 - adds r1, #0x84 - movs r0, #0 - strb r0, [r1] - subs r1, #0x45 - movs r0, #0x2b -_080AAD56: - strb r0, [r1] -_080AAD58: - ldrb r0, [r5] - cmp r0, #0 - bne _080AAD68 - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx -_080AAD68: - bl DeleteThisEntity - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080AAD70 -sub_080AAD70: @ 0x080AAD70 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F520 - cmp r0, #0 - bne _080AAD82 - adds r1, r4, #0 - adds r1, #0x45 - strb r0, [r1] -_080AAD82: - ldr r0, _080AAD94 @ =gUnk_0812A440 - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080AAD94: .4byte gUnk_0812A440 - - thumb_func_start sub_080AAD98 -sub_080AAD98: @ 0x080AAD98 - movs r1, #2 - strb r1, [r0, #0xd] - bx lr - .align 2, 0 - - thumb_func_start nullsub_541 -nullsub_541: @ 0x080AADA0 - bx lr - .align 2, 0 - - thumb_func_start sub_080AADA4 -sub_080AADA4: @ 0x080AADA4 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F3E4 - cmp r0, #0 - beq _080AADB8 - adds r1, r4, #0 - adds r1, #0x45 - movs r0, #0 - strb r0, [r1] -_080AADB8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AADBC -sub_080AADBC: @ 0x080AADBC - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xb] - cmp r0, #0 - bne _080AADCC - movs r0, #1 - strb r0, [r5, #0xc] - b _080AADE0 -_080AADCC: - movs r0, #3 - strb r0, [r5, #0xc] - adds r1, r5, #0 - adds r1, #0x3f - movs r0, #0x2c - strb r0, [r1] - ldr r0, [r5, #0x50] - adds r1, r5, #0 - bl ResolveEntityOnTop -_080AADE0: - ldrb r1, [r5, #0xa] - cmp r1, #0 - bne _080AAE64 - strb r1, [r5, #0xe] - movs r3, #4 - movs r0, #4 - strb r0, [r5, #0xf] - adds r0, r5, #0 - adds r0, #0x80 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - adds r1, r5, #0 - adds r1, #0x45 - movs r0, #0x10 - strb r0, [r1] - ldrh r0, [r5, #0x36] - adds r0, #4 - movs r4, #0 - strh r0, [r5, #0x36] - ldrb r2, [r5, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r5, #0x1b] - ldrb r0, [r5, #0x19] - ands r1, r0 - orrs r1, r2 - strb r1, [r5, #0x19] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] - ldr r1, _080AAE60 @ =gPlayerEntity - adds r0, r5, #0 - bl GetFacingDirection - strb r0, [r5, #0x15] - adds r0, r5, #0 - adds r0, #0x86 - strb r4, [r0] - adds r1, r5, #0 - adds r1, #0x84 - movs r0, #0x96 - lsls r0, r0, #1 - strh r0, [r1] - movs r0, #0x18 - bl sub_080A7EE0 - adds r1, r0, #0 - cmp r1, #0 - beq _080AAE7C - movs r0, #1 - strb r0, [r1, #0xa] - ldrb r0, [r5, #0xb] - strb r0, [r1, #0xb] - str r5, [r1, #0x50] - b _080AAE7C - .align 2, 0 -_080AAE60: .4byte gPlayerEntity -_080AAE64: - ldr r0, [r5, #0x50] - adds r1, r5, #0 - bl ResolveEntityOnTop - ldrb r1, [r5, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r5, #0x10] - ldr r0, [r5, #0x50] - adds r1, r5, #0 - bl CopyPosition -_080AAE7C: - ldrb r1, [r5, #0xa] - adds r0, r5, #0 - bl InitializeAnimation - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080AAE88 -sub_080AAE88: @ 0x080AAE88 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #1 - beq _080AAED0 - cmp r0, #1 - bgt _080AAE9C - cmp r0, #0 - beq _080AAEA2 - b _080AAEF6 -_080AAE9C: - cmp r0, #2 - beq _080AAEE0 - b _080AAEF6 -_080AAEA2: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080AAEC2 - movs r0, #4 - strb r0, [r4, #0xf] - ldr r1, _080AAECC @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 -_080AAEC2: - adds r0, r4, #0 - bl sub_0806F69C - b _080AAEF6 - .align 2, 0 -_080AAECC: .4byte gPlayerEntity -_080AAED0: - ldr r0, [r4, #0x50] - cmp r0, #0 - beq _080AAEDC - ldr r0, [r0, #4] - cmp r0, #0 - bne _080AAEE0 -_080AAEDC: - bl DeleteThisEntity -_080AAEE0: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0x18] - lsls r0, r0, #0x1e - cmp r0, #0 - bne _080AAEEE - bl DeleteThisEntity -_080AAEEE: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition -_080AAEF6: - adds r0, r4, #0 - bl sub_080AB034 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AAF00 -sub_080AAF00: @ 0x080AAF00 - push {r4, lr} - adds r4, r0, #0 - bl sub_080AAF74 - adds r0, r4, #0 - bl sub_080AB034 - pop {r4, pc} - - thumb_func_start sub_080AAF10 -sub_080AAF10: @ 0x080AAF10 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - adds r0, r4, #0 - bl sub_080AB034 - ldr r3, [r4, #0x50] - ldrb r1, [r3, #0x18] - lsls r1, r1, #0x1e - lsrs r1, r1, #0x1e - ldrb r2, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _080AAF48 - adds r0, r3, #0 - adds r0, #0x45 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x45 - strb r0, [r1] -_080AAF48: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #2 - bne _080AAF60 - ldrb r1, [r4, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AAF70 - movs r0, #0x7f - ands r0, r1 - b _080AAF6E -_080AAF60: - ldrb r1, [r4, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080AAF70 - movs r0, #0x80 - orrs r0, r1 -_080AAF6E: - strb r0, [r4, #0x10] -_080AAF70: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AAF74 -sub_080AAF74: @ 0x080AAF74 - push {r4, r5, lr} - adds r5, r0, #0 - bl sub_0807953C - cmp r0, #0 - beq _080AAF94 - bl Random - adds r3, r5, #0 - adds r3, #0x80 - ldrb r1, [r3] - adds r1, #1 - movs r2, #1 - ands r0, r2 - adds r1, r1, r0 - strb r1, [r3] -_080AAF94: - ldrb r0, [r5, #0xe] - adds r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x3c - bne _080AAFCC - movs r0, #0x1e - strb r0, [r5, #0xe] - ldr r4, _080AAFFC @ =gPlayerEntity - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #8 - strb r0, [r1] - subs r0, #0xc - bl ModHealth - adds r0, r4, #0 - movs r1, #0x7a - bl sub_0800449C - adds r4, #0x45 - ldrb r1, [r4] - cmp r1, #0 - bne _080AAFCC - adds r0, r5, #0 - adds r0, #0x45 - strb r1, [r0] -_080AAFCC: - adds r1, r5, #0 - adds r1, #0x80 - ldrb r0, [r1] - cmp r0, #0x30 - bhi _080AAFE0 - adds r0, r5, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0x10 - bne _080AB004 -_080AAFE0: - movs r2, #0 - movs r0, #1 - strb r0, [r5, #0xc] - strb r2, [r1] - ldr r0, _080AAFFC @ =gPlayerEntity - adds r0, #0x3d - movs r1, #0xf0 - strb r1, [r0] - ldr r0, _080AB000 @ =gPlayerState - strb r2, [r0, #0x1a] - adds r0, r5, #0 - adds r0, #0x45 - strb r2, [r0] - b _080AB028 - .align 2, 0 -_080AAFFC: .4byte gPlayerEntity -_080AB000: .4byte gPlayerState -_080AB004: - bl ResetPlayer - ldr r2, _080AB02C @ =gPlayerState - ldrb r1, [r2, #0x1a] - movs r0, #0x80 - orrs r1, r0 - strb r1, [r2, #0x1a] - ldrb r1, [r2, #0xa] - orrs r0, r1 - strb r0, [r2, #0xa] - ldr r4, _080AB030 @ =gPlayerEntity - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - ldrh r0, [r4, #0x36] - subs r0, #4 - strh r0, [r5, #0x36] -_080AB028: - pop {r4, r5, pc} - .align 2, 0 -_080AB02C: .4byte gPlayerState -_080AB030: .4byte gPlayerEntity - - thumb_func_start sub_080AB034 -sub_080AB034: @ 0x080AB034 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - ldr r1, _080AB058 @ =0x00000139 - cmp r0, #0 - beq _080AB04E - movs r1, #0 -_080AB04E: - adds r0, r4, #0 - bl sub_0801D2B4 - pop {r4, pc} - .align 2, 0 -_080AB058: .4byte 0x00000139 diff --git a/asm/projectile/projectile19.s b/asm/projectile/projectile19.s deleted file mode 100644 index 5cef7868..00000000 --- a/asm/projectile/projectile19.s +++ /dev/null @@ -1,315 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile19 -Projectile19: @ 0x080AB05C - push {lr} - ldr r2, _080AB070 @ =gUnk_0812A494 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080AB070: .4byte gUnk_0812A494 - - thumb_func_start sub_080AB074 -sub_080AB074: @ 0x080AB074 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - ldr r0, [r5, #4] - cmp r0, #0 - bne _080AB084 - bl DeleteThisEntity -_080AB084: - ldrb r6, [r4, #0xc] - cmp r6, #0 - bne _080AB0AA - adds r0, r4, #0 - bl sub_080AB12C - cmp r0, #0 - beq _080AB124 - movs r0, #1 - strb r0, [r4, #0xc] - strb r6, [r4, #0x1e] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #9 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r2] -_080AB0AA: - ldr r0, [r4, #0x50] - adds r7, r5, #0 - adds r7, #0x7f - movs r3, #0 - ldrsb r3, [r7, r3] - rsbs r3, r3, #0 - subs r3, #0xa - adds r1, r4, #0 - movs r2, #0 - bl sub_0806FA90 - ldr r3, _080AB128 @ =gSineTable - adds r2, r5, #0 - adds r2, #0x7c - ldrb r0, [r2] - lsls r0, r0, #1 - adds r0, r0, r3 - movs r6, #0 - ldrsh r1, [r0, r6] - adds r6, r5, #0 - adds r6, #0x7e - ldrb r0, [r6] - lsls r0, r0, #8 - muls r1, r0, r1 - ldr r0, [r4, #0x2c] - adds r0, r0, r1 - str r0, [r4, #0x2c] - ldrb r0, [r2] - adds r0, #0x40 - lsls r0, r0, #1 - adds r0, r0, r3 - movs r2, #0 - ldrsh r1, [r0, r2] - ldrb r0, [r6] - lsls r0, r0, #8 - muls r1, r0, r1 - ldr r0, [r4, #0x30] - subs r0, r0, r1 - str r0, [r4, #0x30] - movs r0, #0 - ldrsb r0, [r7, r0] - ldrh r6, [r4, #0x36] - adds r0, r0, r6 - strh r0, [r4, #0x36] - adds r0, r5, #0 - adds r0, #0x7b - ldrb r0, [r0] - cmp r0, #0 - beq _080AB124 - movs r0, #0x19 - bl sub_080A7EE0 - adds r5, r0, #0 - cmp r5, #0 - beq _080AB124 - movs r0, #4 - strb r0, [r5, #0xa] - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPositionAndSpriteOffset -_080AB124: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AB128: .4byte gSineTable - - thumb_func_start sub_080AB12C -sub_080AB12C: @ 0x080AB12C - push {r4, lr} - adds r4, r0, #0 - ldr r0, _080AB168 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x44 - bhi _080AB16C - movs r0, #0x19 - bl sub_080A7EE0 - adds r1, r0, #0 - movs r0, #1 - strb r0, [r1, #0xa] - str r4, [r1, #0x50] - movs r0, #0x19 - bl sub_080A7EE0 - adds r1, r0, #0 - movs r0, #2 - strb r0, [r1, #0xa] - str r4, [r1, #0x50] - movs r0, #0x19 - bl sub_080A7EE0 - adds r1, r0, #0 - movs r0, #3 - strb r0, [r1, #0xa] - str r4, [r1, #0x50] - movs r0, #1 - b _080AB16E - .align 2, 0 -_080AB168: .4byte gEntCount -_080AB16C: - movs r0, #0 -_080AB16E: - pop {r4, pc} - - thumb_func_start sub_080AB170 -sub_080AB170: @ 0x080AB170 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r6, [r4, #0x50] - ldr r0, [r6, #4] - cmp r0, #0 - bne _080AB180 - bl DeleteThisEntity -_080AB180: - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080AB1AA - movs r0, #1 - strb r0, [r4, #0xc] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0x3a - ands r0, r1 - strb r0, [r2] - movs r0, #5 - strb r0, [r4, #0x1e] - ldrb r1, [r2] - subs r0, #0xd - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080AB1C8 @ =gUnk_080FD460 - str r0, [r4, #0x48] -_080AB1AA: - ldr r5, [r6, #0x50] - adds r0, r4, #0 - adds r0, #0x7c - adds r2, r5, #0 - adds r2, #0x7c - ldrb r1, [r0] - adds r3, r0, #0 - ldrb r2, [r2] - cmp r1, r2 - beq _080AB1CC - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - b _080AB1D2 - .align 2, 0 -_080AB1C8: .4byte gUnk_080FD460 -_080AB1CC: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 -_080AB1D2: - strb r0, [r4, #0x10] - adds r0, r5, #0 - adds r0, #0x7c - ldrb r0, [r0] - strb r0, [r3] - adds r0, r5, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - bne _080AB208 - movs r0, #0x1f - ands r0, r1 - ldr r1, _080AB204 @ =gUnk_0812A4A8 - adds r0, r0, r1 - movs r2, #0 - ldrsb r2, [r0, r2] - movs r3, #1 - ldrsb r3, [r0, r3] - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_0806FA90 - b _080AB216 - .align 2, 0 -_080AB204: .4byte gUnk_0812A4A8 -_080AB208: - movs r3, #0xa - rsbs r3, r3, #0 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0 - bl sub_0806FA90 -_080AB216: - movs r1, #0x2e - ldrsh r0, [r6, r1] - movs r2, #0x2e - ldrsh r1, [r4, r2] - subs r0, r0, r1 - ldrb r2, [r4, #0xa] - muls r0, r2, r0 - adds r3, r2, #0 - cmp r0, #0 - bge _080AB22C - adds r0, #3 -_080AB22C: - asrs r0, r0, #2 - ldrh r5, [r4, #0x2e] - adds r0, r0, r5 - strh r0, [r4, #0x2e] - movs r1, #0x32 - ldrsh r0, [r6, r1] - movs r5, #0x32 - ldrsh r1, [r4, r5] - subs r0, r0, r1 - muls r0, r3, r0 - cmp r0, #0 - bge _080AB246 - adds r0, #3 -_080AB246: - asrs r0, r0, #2 - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] - movs r3, #0x36 - ldrsh r0, [r6, r3] - movs r5, #0x36 - ldrsh r1, [r4, r5] - subs r0, r0, r1 - muls r0, r2, r0 - cmp r0, #0 - bge _080AB260 - adds r0, #3 -_080AB260: - asrs r0, r0, #2 - ldrh r1, [r4, #0x36] - adds r0, r0, r1 - strh r0, [r4, #0x36] - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_080AB26C -sub_080AB26C: @ 0x080AB26C - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0xc] - cmp r1, #0 - bne _080AB28C - movs r0, #1 - strb r0, [r2, #0xc] - movs r0, #5 - strb r0, [r2, #0xe] - strb r1, [r2, #0x1e] - adds r3, r2, #0 - adds r3, #0x29 - ldrb r1, [r3] - subs r0, #0x3e - ands r0, r1 - strb r0, [r3] -_080AB28C: - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080AB29E - bl DeleteThisEntity - b _080AB2A4 -_080AB29E: - ldrb r0, [r2, #0x1e] - adds r0, #1 - strb r0, [r2, #0x1e] -_080AB2A4: - pop {pc} - .align 2, 0 diff --git a/asm/projectile/projectile1A.s b/asm/projectile/projectile1A.s deleted file mode 100644 index b00c35a5..00000000 --- a/asm/projectile/projectile1A.s +++ /dev/null @@ -1,318 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile1A -Projectile1A: @ 0x080AB2A8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080AB2C0 @ =gUnk_0812A4C8 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080AB2C0: .4byte gUnk_0812A4C8 - - thumb_func_start sub_080AB2C4 -sub_080AB2C4: @ 0x080AB2C4 - push {lr} - ldr r2, _080AB2D8 @ =gUnk_0812A4DC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080AB2D8: .4byte gUnk_0812A4DC - - thumb_func_start sub_080AB2DC -sub_080AB2DC: @ 0x080AB2DC - push {r4, r5, lr} - adds r2, r0, #0 - adds r5, r2, #0 - adds r5, #0x41 - ldrb r1, [r5] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AB314 - movs r0, #3 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x10] - movs r4, #0x7f - adds r0, r4, #0 - ands r0, r1 - strb r0, [r2, #0x10] - adds r0, r2, #0 - movs r1, #0x53 - bl InitializeAnimation - ldrb r0, [r5] - ands r4, r0 - cmp r4, #0 - bne _080AB314 - movs r0, #4 - rsbs r0, r0, #0 - bl ModHealth -_080AB314: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080AB318 -sub_080AB318: @ 0x080AB318 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r6, r0, #0 - movs r4, #1 - movs r0, #1 - mov r8, r0 - mov r1, r8 - strb r1, [r6, #0xc] - ldr r0, _080AB3D8 @ =0xFFFF0000 - str r0, [r6, #0x20] - movs r2, #0x2e - ldrsh r1, [r6, r2] - ldr r2, _080AB3DC @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r6, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r6, #0 - adds r0, #0x76 - strh r1, [r0] - ldr r0, [r6, #0x50] - adds r1, r6, #0 - bl CopyPosition - movs r1, #0x80 - lsls r1, r1, #5 - ldrb r2, [r6, #0x15] - adds r0, r6, #0 - bl sub_0806F5BC - adds r2, r6, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r4 - strb r0, [r2] - ldr r0, [r6, #0x50] - ldr r0, [r0, #0x34] - str r0, [r6, #0x34] - adds r0, r6, #0 - movs r1, #0x51 - bl InitializeAnimation - ldr r0, _080AB3E0 @ =0x000001B5 - bl SoundReq - adds r0, r6, #0 - bl sub_080AB4F8 - movs r1, #0x2e - ldrsh r2, [r6, r1] - movs r1, #0 - ldrsb r1, [r0, r1] - adds r5, r2, r1 - movs r2, #0x32 - ldrsh r1, [r6, r2] - ldrb r0, [r0, #1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r7, r1, r0 - adds r0, r6, #0 - adds r1, r5, #0 - adds r2, r7, #0 - bl sub_080041DC - adds r4, r0, #0 - bl Random - adds r1, r0, #0 - ldr r0, _080AB3E4 @ =0x000001FF - ands r1, r0 - ldr r0, _080AB3E8 @ =gScreenTransition - ldr r0, [r0] - mov r2, r8 - ands r0, r2 - cmp r0, #0 - beq _080AB3EC - adds r4, r4, r1 - movs r0, #0x80 - lsls r0, r0, #3 - cmp r4, r0 - ble _080AB3F4 - adds r4, r0, #0 - b _080AB3F4 - .align 2, 0 -_080AB3D8: .4byte 0xFFFF0000 -_080AB3DC: .4byte gRoomControls -_080AB3E0: .4byte 0x000001B5 -_080AB3E4: .4byte 0x000001FF -_080AB3E8: .4byte gScreenTransition -_080AB3EC: - subs r4, r4, r1 - cmp r4, #0x1f - bgt _080AB3F4 - movs r4, #0x20 -_080AB3F4: - lsls r1, r4, #8 - ldr r0, [r6, #0x34] - bl __divsi3 - lsls r0, r0, #0xd - str r0, [r6, #0x20] - adds r0, r6, #0 - adds r1, r5, #0 - adds r2, r7, #0 - bl sub_080045B4 - strb r0, [r6, #0x15] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_080AB414 -sub_080AB414: @ 0x080AB414 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806F69C - adds r0, r4, #0 - movs r1, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080AB446 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0xf - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #0x54 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_080AB4A4 - b _080AB458 -_080AB446: - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xe0 - bls _080AB458 - bl DeleteThisEntity -_080AB458: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AB45C -sub_080AB45C: @ 0x080AB45C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AB486 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #0x53 - bl InitializeAnimation -_080AB486: - pop {r4, pc} - - thumb_func_start sub_080AB488 -sub_080AB488: @ 0x080AB488 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AB4A0 - bl DeleteThisEntity -_080AB4A0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AB4A4 -sub_080AB4A4: @ 0x080AB4A4 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - adds r7, r6, #0 - adds r7, #0x76 - ldrh r4, [r7] - movs r1, #0x2e - ldrsh r0, [r6, r1] - ldr r3, _080AB4F4 @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - asrs r5, r0, #4 - movs r2, #0x3f - ands r5, r2 - movs r1, #0x32 - ldrsh r0, [r6, r1] - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r5, r0 - cmp r4, r5 - beq _080AB4F2 - strh r5, [r7] - adds r0, r6, #0 - bl GetTileTypeByEntity - cmp r0, #0x13 - beq _080AB4E2 - cmp r0, #0x34 - bne _080AB4F2 -_080AB4E2: - movs r0, #0xd3 - lsls r0, r0, #2 - ldrh r1, [r7] - adds r2, r6, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl sub_0807B7D8 -_080AB4F2: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AB4F4: .4byte gRoomControls - - thumb_func_start sub_080AB4F8 -sub_080AB4F8: @ 0x080AB4F8 - adds r1, r0, #0 - ldrb r0, [r1, #0xa] - lsls r0, r0, #5 - ldrb r1, [r1, #0xf] - lsls r1, r1, #1 - orrs r0, r1 - ldr r1, _080AB50C @ =gUnk_0812A4EC - adds r0, r0, r1 - bx lr - .align 2, 0 -_080AB50C: .4byte gUnk_0812A4EC diff --git a/asm/projectile/projectile1B.s b/asm/projectile/projectile1B.s deleted file mode 100644 index a58cae90..00000000 --- a/asm/projectile/projectile1B.s +++ /dev/null @@ -1,214 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile1B -Projectile1B: @ 0x080AB510 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080AB528 @ =gUnk_0812A58C - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080AB528: .4byte gUnk_0812A58C - - thumb_func_start sub_080AB52C -sub_080AB52C: @ 0x080AB52C - push {lr} - ldr r2, _080AB540 @ =gUnk_0812A5A0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080AB540: .4byte gUnk_0812A5A0 - - thumb_func_start sub_080AB544 -sub_080AB544: @ 0x080AB544 - push {lr} - adds r2, r0, #0 - adds r0, #0x3d - movs r1, #0 - ldrsb r1, [r0, r1] - movs r0, #4 - rsbs r0, r0, #0 - cmp r1, r0 - bge _080AB57C - movs r1, #2 - movs r0, #2 - strb r0, [r2, #0xc] - adds r0, r2, #0 - adds r0, #0x3e - ldrb r0, [r0] - strb r0, [r2, #0x15] - ldrb r0, [r2, #0xa] - eors r1, r0 - lsls r1, r1, #3 - ldrb r0, [r2, #0x15] - subs r0, r0, r1 - adds r0, #1 - cmp r0, #2 - bhi _080AB576 - strb r1, [r2, #0x15] -_080AB576: - movs r0, #0xa0 - lsls r0, r0, #2 - strh r0, [r2, #0x24] -_080AB57C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080AB580 -sub_080AB580: @ 0x080AB580 - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - ldrb r1, [r0, #0xa] - lsls r1, r1, #3 - strb r1, [r0, #0x15] - ldr r1, _080AB598 @ =0x0000FFFC - strh r1, [r0, #0x36] - ldrb r1, [r0, #0xa] - bl InitializeAnimation - pop {pc} - .align 2, 0 -_080AB598: .4byte 0x0000FFFC - - thumb_func_start sub_080AB59C -sub_080AB59C: @ 0x080AB59C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - cmp r0, #0 - bne _080AB5BC - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080AB5BC: - adds r0, r4, #0 - bl sub_080AB5F4 - pop {r4, pc} - - thumb_func_start sub_080AB5C4 -sub_080AB5C4: @ 0x080AB5C4 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - adds r0, r4, #0 - bl sub_080AB634 - cmp r0, #0 - bne _080AB5F0 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _080AB5F0 - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080AB5F0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AB5F4 -sub_080AB5F4: @ 0x080AB5F4 - push {r4, lr} - adds r4, r0, #0 - bl sub_080043E8 - cmp r0, #2 - beq _080AB61A - cmp r0, #2 - bhi _080AB60A - cmp r0, #1 - beq _080AB610 - b _080AB62E -_080AB60A: - cmp r0, #3 - beq _080AB624 - b _080AB62E -_080AB610: - adds r0, r4, #0 - bl CreateItemOnGround - movs r0, #1 - b _080AB630 -_080AB61A: - adds r0, r4, #0 - bl sub_080043A8 - movs r0, #1 - b _080AB630 -_080AB624: - adds r0, r4, #0 - bl CreateChestSpawner - movs r0, #1 - b _080AB630 -_080AB62E: - movs r0, #0 -_080AB630: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AB634 -sub_080AB634: @ 0x080AB634 - push {r4, r5, r6, lr} - adds r6, r0, #0 - ldr r0, [r6, #0x50] - movs r5, #0 - adds r4, r0, #0 - adds r4, #0x20 -_080AB640: - ldr r1, [r4] - cmp r1, #0 - beq _080AB684 - adds r0, r6, #0 - bl sub_080177A0 - cmp r0, #0 - beq _080AB684 - ldr r1, [r4] - ldrb r0, [r1, #0xc] - cmp r0, #2 - bhi _080AB67A - movs r0, #3 - strb r0, [r1, #0xc] - ldr r1, [r4] - movs r0, #0x1e - strb r0, [r1, #0xe] - ldr r2, [r4] - ldrb r0, [r2, #0x18] - movs r3, #4 - rsbs r3, r3, #0 - adds r1, r3, #0 - ands r0, r1 - strb r0, [r2, #0x18] - ldr r0, [r4] - movs r1, #0x45 - movs r2, #0 - bl CreateFx -_080AB67A: - adds r0, r6, #0 - bl DeleteEntity - movs r0, #1 - b _080AB68E -_080AB684: - adds r4, #4 - adds r5, #1 - cmp r5, #3 - bls _080AB640 - movs r0, #0 -_080AB68E: - pop {r4, r5, r6, pc} diff --git a/asm/projectile/projectile1C.s b/asm/projectile/projectile1C.s deleted file mode 100644 index fca5d110..00000000 --- a/asm/projectile/projectile1C.s +++ /dev/null @@ -1,310 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile1C -Projectile1C: @ 0x080AB690 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0x18] - lsls r0, r0, #0x1e - cmp r0, #0 - bne _080AB6A2 - bl DeleteThisEntity -_080AB6A2: - ldr r0, _080AB6B4 @ =gUnk_0812A5E8 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080AB6B4: .4byte gUnk_0812A5E8 - - thumb_func_start sub_080AB6B8 -sub_080AB6B8: @ 0x080AB6B8 - push {lr} - adds r2, r0, #0 - ldr r0, [r2, #0x50] - ldr r0, [r0, #0x2c] - str r0, [r2, #0x74] - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _080AB6E8 - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r2, #0x10] - ldr r0, _080AB6E4 @ =gUnk_0812A614 - str r0, [r2, #0x48] - adds r0, r2, #0 - movs r1, #0 - bl InitializeAnimation - b _080AB6F8 - .align 2, 0 -_080AB6E4: .4byte gUnk_0812A614 -_080AB6E8: - movs r0, #2 - strb r0, [r2, #0xc] - movs r0, #4 - strb r0, [r2, #0xf] - ldrb r1, [r2, #0xe] - adds r0, r2, #0 - bl InitializeAnimation -_080AB6F8: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080AB6FC -sub_080AB6FC: @ 0x080AB6FC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080AB724 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_080AB758 -_080AB724: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AB728 -sub_080AB728: @ 0x080AB728 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldr r2, [r4, #0x50] - ldr r1, [r2, #0x2c] - ldr r0, [r4, #0x74] - subs r1, r1, r0 - ldr r0, [r4, #0x2c] - adds r0, r0, r1 - str r0, [r4, #0x2c] - ldr r0, [r2, #0x2c] - str r0, [r4, #0x74] - adds r0, r4, #0 - bl sub_080AB888 - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - cmp r0, #0 - bne _080AB754 - bl DeleteThisEntity -_080AB754: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AB758 -sub_080AB758: @ 0x080AB758 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - adds r5, r0, #0 - movs r6, #6 - movs r7, #0 - movs r4, #0 - movs r0, #0x32 - ldrsh r2, [r5, r0] - ldr r1, _080AB818 @ =gRoomControls - ldrh r0, [r1, #8] - adds r0, #0xd4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov r8, r1 - cmp r2, r0 - bhi _080AB7B4 - movs r3, #7 -_080AB77E: - adds r0, r4, #0 - ands r0, r3 - cmp r0, #7 - bne _080AB798 - adds r0, r5, #0 - movs r1, #4 - adds r2, r6, #0 - str r3, [sp] - bl sub_080AB844 - adds r6, #0x3e - adds r7, #0x3e - ldr r3, [sp] -_080AB798: - adds r4, #1 - ands r4, r3 - movs r1, #0x32 - ldrsh r0, [r5, r1] - adds r0, r0, r7 - lsls r1, r4, #3 - adds r2, r0, r1 - ldr r0, _080AB818 @ =gRoomControls - ldrh r0, [r0, #8] - adds r0, #0xd4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r2, r0 - bls _080AB77E -_080AB7B4: - movs r4, #0 - movs r1, #0x32 - ldrsh r0, [r5, r1] - adds r2, r0, r7 - mov r1, r8 - ldrh r0, [r1, #8] - adds r0, #0xd4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r2, r0 - bhi _080AB802 - movs r3, #3 -_080AB7CC: - adds r0, r4, #0 - ands r0, r3 - cmp r0, #3 - bne _080AB7E6 - adds r0, r5, #0 - movs r1, #3 - adds r2, r6, #0 - str r3, [sp] - bl sub_080AB844 - adds r6, #0x1e - adds r7, #0x1e - ldr r3, [sp] -_080AB7E6: - adds r4, #1 - ands r4, r3 - movs r1, #0x32 - ldrsh r0, [r5, r1] - adds r0, r0, r7 - lsls r1, r4, #3 - adds r2, r0, r1 - ldr r0, _080AB818 @ =gRoomControls - ldrh r0, [r0, #8] - adds r0, #0xd4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r2, r0 - bls _080AB7CC -_080AB802: - movs r0, #2 - ands r0, r4 - cmp r0, #0 - beq _080AB81C - adds r0, r5, #0 - movs r1, #2 - adds r2, r6, #0 - bl sub_080AB844 - adds r6, #0xe - b _080AB830 - .align 2, 0 -_080AB818: .4byte gRoomControls -_080AB81C: - movs r0, #1 - ands r4, r0 - cmp r4, #0 - beq _080AB830 - adds r0, r5, #0 - movs r1, #1 - adds r2, r6, #0 - bl sub_080AB844 - adds r6, #6 -_080AB830: - adds r0, r5, #0 - movs r1, #6 - adds r2, r6, #0 - bl sub_080AB844 - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_080AB844 -sub_080AB844: @ 0x080AB844 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r7, r1, #0 - adds r6, r2, #0 - movs r0, #0x1c - bl sub_080A7EE0 - adds r4, r0, #0 - cmp r4, #0 - beq _080AB880 - movs r0, #1 - strb r0, [r4, #0xa] - strb r7, [r4, #0xe] - ldr r0, [r5, #0x50] - str r0, [r4, #0x50] - lsls r3, r6, #0x10 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0 - bl PositionRelative - cmp r7, #1 - beq _080AB87C - ldr r0, _080AB878 @ =gUnk_0812A61C - b _080AB87E - .align 2, 0 -_080AB878: .4byte gUnk_0812A61C -_080AB87C: - ldr r0, _080AB884 @ =gUnk_0812A614 -_080AB87E: - str r0, [r4, #0x48] -_080AB880: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AB884: .4byte gUnk_0812A614 - - thumb_func_start sub_080AB888 -sub_080AB888: @ 0x080AB888 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xf] - subs r0, #1 - strb r0, [r2, #0xf] - movs r3, #0 - ldrb r0, [r2, #0xe] - cmp r0, #3 - beq _080AB8A4 - cmp r0, #3 - ble _080AB8B6 - cmp r0, #4 - beq _080AB8A6 - b _080AB8B6 -_080AB8A4: - movs r3, #1 -_080AB8A6: - ldr r0, _080AB8C4 @ =gUnk_0812A5F4 - ldrb r1, [r2, #0xf] - lsls r1, r1, #1 - adds r1, r1, r3 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r0, [r1] - str r0, [r2, #0x48] -_080AB8B6: - ldrb r0, [r2, #0xf] - cmp r0, #0 - bne _080AB8C0 - movs r0, #4 - strb r0, [r2, #0xf] -_080AB8C0: - pop {pc} - .align 2, 0 -_080AB8C4: .4byte gUnk_0812A5F4 diff --git a/asm/projectile/projectile1D.s b/asm/projectile/projectile1D.s deleted file mode 100644 index bece4fd6..00000000 --- a/asm/projectile/projectile1D.s +++ /dev/null @@ -1,216 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile1D -Projectile1D: @ 0x080AB8C8 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080AB8E4 @ =gUnk_0812A6B4 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_080AB9DC - pop {r4, pc} - .align 2, 0 -_080AB8E4: .4byte gUnk_0812A6B4 - - thumb_func_start sub_080AB8E8 -sub_080AB8E8: @ 0x080AB8E8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - adds r0, #1 - movs r1, #0 - strb r0, [r4, #0xc] - movs r0, #0xa0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - str r1, [r4, #0x34] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080AB90E - bl Random - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - str r4, [r4, #0x50] -_080AB90E: - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - ldrb r0, [r4, #0xa] - cmp r0, #3 - bhi _080AB936 - movs r0, #0x1d - bl sub_080A7EE0 - adds r1, r0, #0 - ldrb r0, [r4, #0xa] - adds r0, #1 - strb r0, [r1, #0xa] - ldr r0, [r4, #0x50] - str r0, [r1, #0x50] - str r4, [r1, #0x54] - adds r0, r4, #0 - bl CopyPosition -_080AB936: - adds r1, r4, #0 - adds r1, #0x68 - movs r2, #7 -_080AB93C: - ldrh r0, [r4, #0x2e] - strh r0, [r1] - adds r1, #2 - ldrh r0, [r4, #0x32] - strh r0, [r1] - adds r1, #2 - subs r2, #1 - cmp r2, #0 - bge _080AB93C - pop {r4, pc} - - thumb_func_start sub_080AB950 -sub_080AB950: @ 0x080AB950 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080AB99C - adds r0, r4, #0 - bl ProcessMovement - ldrb r0, [r4, #0x15] - lsrs r0, r0, #3 - ldr r1, _080AB994 @ =gUnk_0812A6C4 - lsls r5, r0, #1 - adds r1, r5, r1 - ldrh r1, [r1] - ldrh r0, [r4, #0x2a] - ands r0, r1 - cmp r0, #0 - bne _080AB980 - ldrb r1, [r4, #0x15] - adds r0, r4, #0 - bl sub_080AB9FC - cmp r0, #0 - beq _080AB9D4 -_080AB980: - bl Random - ldr r2, _080AB998 @ =gUnk_0812A6BC - movs r1, #1 - ands r1, r0 - adds r1, r1, r5 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4, #0x15] - b _080AB9D4 - .align 2, 0 -_080AB994: .4byte gUnk_0812A6C4 -_080AB998: .4byte gUnk_0812A6BC -_080AB99C: - ldr r0, [r4, #0x50] - cmp r0, #0 - bne _080AB9A6 - bl DeleteThisEntity -_080AB9A6: - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080AB9B2 - bl DeleteThisEntity -_080AB9B2: - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _080AB9D0 - ldr r0, [r1, #4] - cmp r0, #0 - beq _080AB9D0 - adds r0, r1, #0 - adds r0, #0x68 - ldrh r0, [r0] - strh r0, [r4, #0x2e] - adds r0, r1, #0 - adds r0, #0x6a - ldrh r0, [r0] - strh r0, [r4, #0x32] - b _080AB9D4 -_080AB9D0: - bl DeleteThisEntity -_080AB9D4: - adds r0, r4, #0 - bl GetNextFrame - pop {r4, r5, pc} - - thumb_func_start sub_080AB9DC -sub_080AB9DC: @ 0x080AB9DC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x6c - adds r1, r4, #0 - adds r1, #0x68 - movs r2, #0x1c - bl MemCopy - ldrh r1, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x84 - strh r1, [r0] - ldrh r1, [r4, #0x32] - adds r0, #2 - strh r1, [r0] - pop {r4, pc} - - thumb_func_start sub_080AB9FC -sub_080AB9FC: @ 0x080AB9FC - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r4, r1, #0 - adds r0, #0x38 - ldrb r0, [r0] - bl GetLayerByIndex - movs r1, #0x2e - ldrsh r3, [r5, r1] - ldr r2, _080ABA4C @ =gRoomControls - ldrh r1, [r2, #6] - subs r3, r3, r1 - asrs r3, r3, #4 - movs r6, #0x3f - ands r3, r6 - movs r7, #0x32 - ldrsh r1, [r5, r7] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r6 - lsls r1, r1, #6 - orrs r3, r1 - ldr r1, _080ABA50 @ =gUnk_080B4488 - lsrs r4, r4, #3 - lsls r4, r4, #1 - adds r4, r4, r1 - movs r2, #0 - ldrsh r1, [r4, r2] - adds r3, r3, r1 - ldr r7, _080ABA54 @ =0x00002004 - adds r0, r0, r7 - adds r0, r0, r3 - ldrb r0, [r0] - cmp r0, #0x1f - bls _080ABA58 - cmp r0, #0x3f - bhi _080ABA58 - movs r0, #1 - b _080ABA5A - .align 2, 0 -_080ABA4C: .4byte gRoomControls -_080ABA50: .4byte gUnk_080B4488 -_080ABA54: .4byte 0x00002004 -_080ABA58: - movs r0, #0 -_080ABA5A: - pop {r4, r5, r6, r7, pc} diff --git a/asm/projectile/projectile1F.s b/asm/projectile/projectile1F.s deleted file mode 100644 index b1087eaa..00000000 --- a/asm/projectile/projectile1F.s +++ /dev/null @@ -1,472 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile1F -Projectile1F: @ 0x080ABB8C - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080ABBA4 @ =gUnk_0812A7D4 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080ABBA4: .4byte gUnk_0812A7D4 - - thumb_func_start sub_080ABBA8 -sub_080ABBA8: @ 0x080ABBA8 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #1 - beq _080ABBC4 - cmp r0, #1 - bgt _080ABBDC - cmp r0, #0 - bne _080ABBDC - ldr r0, _080ABBC0 @ =gUnk_0812A7EC - b _080ABBC6 - .align 2, 0 -_080ABBC0: .4byte gUnk_0812A7EC -_080ABBC4: - ldr r0, _080ABBD8 @ =gUnk_0812A7F8 -_080ABBC6: - ldrb r1, [r2, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 - b _080ABBEC - .align 2, 0 -_080ABBD8: .4byte gUnk_0812A7F8 -_080ABBDC: - ldr r0, _080ABBF0 @ =gUnk_0812A800 - ldrb r1, [r2, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 -_080ABBEC: - pop {pc} - .align 2, 0 -_080ABBF0: .4byte gUnk_0812A800 - - thumb_func_start sub_080ABBF4 -sub_080ABBF4: @ 0x080ABBF4 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080ABC52 - ldrb r0, [r4, #0xa] - cmp r0, #0 - blt _080ABC52 - cmp r0, #1 - ble _080ABC3E - cmp r0, #2 - bne _080ABC52 - movs r0, #0x3f - ands r0, r1 - cmp r0, #3 - beq _080ABC32 - cmp r0, #3 - bgt _080ABC24 - cmp r0, #0 - beq _080ABC2A - b _080ABC52 -_080ABC24: - cmp r0, #0x14 - beq _080ABC32 - b _080ABC52 -_080ABC2A: - movs r0, #4 - rsbs r0, r0, #0 - bl ModHealth -_080ABC32: - adds r0, r4, #0 - bl CreateDust - bl DeleteThisEntity - b _080ABC52 -_080ABC3E: - movs r0, #0x3f - ands r0, r1 - cmp r0, #0 - bne _080ABC52 - movs r0, #2 - rsbs r0, r0, #0 - bl ModHealth - bl DeleteThisEntity -_080ABC52: - pop {r4, pc} - - thumb_func_start sub_080ABC54 -sub_080ABC54: @ 0x080ABC54 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F520 - cmp r0, #0 - bne _080ABC6E - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080ABC6E: - ldr r0, _080ABC80 @ =gUnk_0812A808 - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080ABC80: .4byte gUnk_0812A808 - - thumb_func_start sub_080ABC84 -sub_080ABC84: @ 0x080ABC84 - movs r1, #2 - strb r1, [r0, #0xd] - bx lr - .align 2, 0 - - thumb_func_start nullsub_542 -nullsub_542: @ 0x080ABC8C - bx lr - .align 2, 0 - - thumb_func_start sub_080ABC90 -sub_080ABC90: @ 0x080ABC90 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F3E4 - cmp r0, #0 - beq _080ABCBE - movs r0, #2 - rsbs r0, r0, #0 - bl ModHealth - ldr r0, _080ABCC0 @ =gPlayerEntity - movs r1, #0x7a - bl sub_0800449C - bl sub_08079D84 - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080ABCBE: - pop {r4, pc} - .align 2, 0 -_080ABCC0: .4byte gPlayerEntity - - thumb_func_start sub_080ABCC4 -sub_080ABCC4: @ 0x080ABCC4 - push {r4, r5, lr} - adds r5, r0, #0 - movs r4, #0 - movs r0, #1 - strb r0, [r5, #0xc] - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x30 - strb r0, [r5, #0xe] - strb r4, [r5, #0xf] - bl Random - movs r1, #0x1f - ands r0, r1 - strb r0, [r5, #0x15] - movs r0, #0x2e - ldrsh r1, [r5, r0] - ldr r2, _080ABD3C @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r4, #0x32 - ldrsh r0, [r5, r4] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r5, #0 - adds r0, #0x74 - strh r1, [r0] - ldrh r0, [r0] - movs r1, #2 - bl GetTileType - adds r1, r5, #0 - adds r1, #0x76 - strh r0, [r1] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - movs r1, #0 - bl InitializeAnimation - ldr r0, _080ABD40 @ =0x0000014B - bl SoundReq - pop {r4, r5, pc} - .align 2, 0 -_080ABD3C: .4byte gRoomControls -_080ABD40: .4byte 0x0000014B - - thumb_func_start sub_080ABD44 -sub_080ABD44: @ 0x080ABD44 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080ABD60 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_080ABD60: - adds r0, r4, #0 - bl sub_080AF090 - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080ABD70 -sub_080ABD70: @ 0x080ABD70 - push {r4, r5, lr} - adds r5, r0, #0 - bl GetNextFrame - adds r2, r5, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _080ABDEE - movs r0, #0xef - ands r0, r1 - movs r1, #0 - strb r0, [r2] - strh r1, [r5, #0x24] - movs r0, #0x2e - ldrsh r1, [r5, r0] - ldr r2, _080ABDDC @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r4, #0x32 - ldrsh r0, [r5, r4] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r4, r5, #0 - adds r4, #0x74 - strh r1, [r4] - ldrh r0, [r4] - movs r1, #2 - bl GetTileType - adds r1, r5, #0 - adds r1, #0x76 - strh r0, [r1] - ldrh r1, [r1] - cmp r1, #0x13 - beq _080ABDE4 - ldr r0, _080ABDE0 @ =0x00000315 - cmp r1, r0 - bne _080ABDEE - ldrh r1, [r4] - movs r0, #0x6e - movs r2, #2 - bl SetTileType - b _080ABDEE - .align 2, 0 -_080ABDDC: .4byte gRoomControls -_080ABDE0: .4byte 0x00000315 -_080ABDE4: - ldrh r1, [r4] - movs r0, #0x6d - movs r2, #2 - bl SetTileType -_080ABDEE: - adds r0, r5, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080ABE00 - bl DeleteThisEntity -_080ABE00: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080ABE04 -sub_080ABE04: @ 0x080ABE04 - push {r4, r5, lr} - adds r4, r0, #0 - bl Random - adds r5, r0, #0 - movs r0, #0xff - ands r5, r0 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r0, _080ABE48 @ =0xFFFF0000 - str r0, [r4, #0x20] - ldrh r0, [r4, #0x36] - subs r0, #0xa0 - strh r0, [r4, #0x36] - ldr r3, _080ABE4C @ =gRoomControls - ldrh r2, [r3, #6] - ldr r1, _080ABE50 @ =0x00007FF0 - adds r0, r1, #0 - ands r0, r2 - movs r2, #8 - orrs r0, r2 - strh r0, [r4, #0x2e] - ldrh r0, [r3, #8] - ands r1, r0 - orrs r1, r2 - strh r1, [r4, #0x32] - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r0, #0x10 - ands r0, r5 - cmp r0, #0 - beq _080ABE54 - adds r1, #0x10 - b _080ABE56 - .align 2, 0 -_080ABE48: .4byte 0xFFFF0000 -_080ABE4C: .4byte gRoomControls -_080ABE50: .4byte 0x00007FF0 -_080ABE54: - adds r1, #0xc0 -_080ABE56: - movs r0, #0xe0 - ands r0, r5 - lsrs r0, r0, #1 - adds r0, r1, r0 - strh r0, [r4, #0x2e] - movs r0, #0xf - ands r5, r0 - lsls r0, r5, #4 - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] - adds r0, r4, #0 - bl sub_08004168 - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - ldr r0, _080ABE84 @ =0x0000012D - bl SoundReq - pop {r4, r5, pc} - .align 2, 0 -_080ABE84: .4byte 0x0000012D - - thumb_func_start sub_080ABE88 -sub_080ABE88: @ 0x080ABE88 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0xc0 - lsls r1, r1, #5 - bl sub_08003FC4 - cmp r0, #0 - bne _080ABEA6 - adds r0, r4, #0 - movs r1, #4 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080ABEA6: - pop {r4, pc} - - thumb_func_start sub_080ABEA8 -sub_080ABEA8: @ 0x080ABEA8 - push {r4, lr} - adds r4, r0, #0 - movs r2, #1 - strb r2, [r4, #0xc] - movs r0, #0x60 - strb r0, [r4, #0xe] - adds r3, r4, #0 - adds r3, #0x29 - ldrb r1, [r3] - subs r0, #0x68 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r3] - strb r2, [r4, #0x1c] - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _080ABEDA - bl Random - movs r1, #0xf - ands r0, r1 - lsls r0, r0, #1 - strb r0, [r4, #0x15] - b _080ABEEC -_080ABEDA: - adds r0, r4, #0 - movs r1, #0 - bl sub_08049F84 - strb r0, [r4, #0x15] - ldr r1, _080ABEFC @ =0x0000013F - adds r0, r4, #0 - bl sub_0801D2B4 -_080ABEEC: - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - ldr r0, _080ABF00 @ =0x00000193 - bl SoundReq - pop {r4, pc} - .align 2, 0 -_080ABEFC: .4byte 0x0000013F -_080ABF00: .4byte 0x00000193 - - thumb_func_start sub_080ABF04 -sub_080ABF04: @ 0x080ABF04 - push {r4, lr} - adds r4, r0, #0 - bl sub_080040A8 - cmp r0, #0 - bne _080ABF14 - bl DeleteThisEntity -_080ABF14: - adds r0, r4, #0 - bl sub_0806F69C - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 diff --git a/asm/projectile/projectile2.s b/asm/projectile/projectile2.s deleted file mode 100644 index 4ebe500a..00000000 --- a/asm/projectile/projectile2.s +++ /dev/null @@ -1,196 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile2 -Projectile2: @ 0x080A8190 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A81A8 @ =gUnk_0812960C - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A81A8: .4byte gUnk_0812960C - - thumb_func_start sub_080A81AC -sub_080A81AC: @ 0x080A81AC - push {lr} - ldr r2, _080A81C0 @ =gUnk_08129620 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A81C0: .4byte gUnk_08129620 - - thumb_func_start sub_080A81C4 -sub_080A81C4: @ 0x080A81C4 - push {lr} - adds r1, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _080A81D8 - adds r0, r1, #0 - bl DeleteEntity - b _080A81DE -_080A81D8: - adds r0, r1, #0 - bl sub_080A82D8 -_080A81DE: - pop {pc} - - thumb_func_start sub_080A81E0 -sub_080A81E0: @ 0x080A81E0 - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - movs r1, #0x3c - strb r1, [r0, #0xe] - ldr r1, _080A81F8 @ =0x0000FFFE - strh r1, [r0, #0x36] - movs r1, #0 - bl InitializeAnimation - pop {pc} - .align 2, 0 -_080A81F8: .4byte 0x0000FFFE - - thumb_func_start sub_080A81FC -sub_080A81FC: @ 0x080A81FC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - bne _080A8240 - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080A8222 - adds r0, r4, #0 - bl DeleteEntity - b _080A8246 -_080A8222: - adds r0, r4, #0 - bl sub_08016AD2 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A8246 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0x90 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - b _080A8246 -_080A8240: - adds r0, r4, #0 - bl sub_080A82D8 -_080A8246: - pop {r4, pc} - - thumb_func_start sub_080A8248 -sub_080A8248: @ 0x080A8248 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080A827A - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r0, #0xe0 - strh r0, [r4, #0x24] - movs r0, #0xe0 - lsls r0, r0, #8 - str r0, [r4, #0x20] -_080A827A: - pop {r4, pc} - - thumb_func_start sub_080A827C -sub_080A827C: @ 0x080A827C - push {r4, lr} - adds r4, r0, #0 - ldrb r2, [r4, #0x18] - lsls r1, r2, #0x1e - lsrs r1, r1, #0x1e - movs r0, #1 - eors r1, r0 - subs r0, #5 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - bl sub_0806F69C - adds r0, r4, #0 - bl GetNextFrame - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_080044EC - cmp r0, #0 - bne _080A82B2 - adds r0, r4, #0 - bl DeleteEntity -_080A82B2: - pop {r4, pc} - - thumb_func_start sub_080A82B4 -sub_080A82B4: @ 0x080A82B4 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806F69C - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080A82D6 - adds r0, r4, #0 - bl DeleteEntity -_080A82D6: - pop {r4, pc} - - thumb_func_start sub_080A82D8 -sub_080A82D8: @ 0x080A82D8 - movs r1, #4 - strb r1, [r0, #0xc] - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - movs r1, #0x80 - lsls r1, r1, #9 - str r1, [r0, #0x20] - ldrb r1, [r0, #0x15] - movs r2, #0x10 - eors r1, r2 - strb r1, [r0, #0x15] - movs r1, #0x80 - strh r1, [r0, #0x24] - bx lr diff --git a/asm/projectile/projectile20.s b/asm/projectile/projectile20.s deleted file mode 100644 index 327322d7..00000000 --- a/asm/projectile/projectile20.s +++ /dev/null @@ -1,76 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile20 -Projectile20: @ 0x080ABF24 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080ABF3C @ =gUnk_0812A84C - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080ABF3C: .4byte gUnk_0812A84C - - thumb_func_start sub_080ABF40 -sub_080ABF40: @ 0x080ABF40 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080ABF66 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r1, _080ABFA0 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - strb r0, [r4, #0x15] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - ldr r0, _080ABFA4 @ =0x00000199 - bl SoundReq -_080ABF66: - ldrh r2, [r4, #0x36] - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #6 - rsbs r0, r0, #0 - cmp r1, r0 - bge _080ABF78 - adds r0, r2, #2 - strh r0, [r4, #0x36] -_080ABF78: - adds r0, r4, #0 - bl sub_080AF090 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _080ABF88 - bl DeleteThisEntity -_080ABF88: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080ABF9C - bl DeleteThisEntity -_080ABF9C: - pop {r4, pc} - .align 2, 0 -_080ABFA0: .4byte gPlayerEntity -_080ABFA4: .4byte 0x00000199 - - thumb_func_start sub_080ABFA8 -sub_080ABFA8: @ 0x080ABFA8 - push {lr} - bl DeleteThisEntity - pop {pc} diff --git a/asm/projectile/projectile21.s b/asm/projectile/projectile21.s deleted file mode 100644 index 01e362d8..00000000 --- a/asm/projectile/projectile21.s +++ /dev/null @@ -1,371 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile21 -Projectile21: @ 0x080ABFB0 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080ABFC8 @ =gUnk_0812A954 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080ABFC8: .4byte gUnk_0812A954 - - thumb_func_start sub_080ABFCC -sub_080ABFCC: @ 0x080ABFCC - push {lr} - ldr r2, _080ABFE0 @ =gUnk_0812A968 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080ABFE0: .4byte gUnk_0812A968 - - thumb_func_start sub_080ABFE4 -sub_080ABFE4: @ 0x080ABFE4 - push {lr} - bl DeleteThisEntity - pop {pc} - - thumb_func_start sub_080ABFEC -sub_080ABFEC: @ 0x080ABFEC - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xa] - adds r1, #1 - bl InitializeAnimation - ldrb r1, [r4, #0xa] - cmp r1, #0 - beq _080AC030 - cmp r1, #1 - beq _080AC048 - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r4, #0xe] - movs r0, #0xff - strb r0, [r4, #0xf] - ldr r1, _080AC028 @ =gUnk_0812A97C - ldrb r0, [r4, #0xb] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - strh r0, [r4, #0x24] - adds r1, r4, #0 - adds r1, #0x44 - movs r0, #0x88 - strb r0, [r1] - ldr r0, _080AC02C @ =0x00000193 - b _080AC06A - .align 2, 0 -_080AC028: .4byte gUnk_0812A97C -_080AC02C: .4byte 0x00000193 -_080AC030: - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xe] - movs r0, #7 - strb r0, [r4, #0xf] - adds r1, r4, #0 - adds r1, #0x85 - movs r0, #0x18 - strb r0, [r1] - subs r1, #0x41 - movs r0, #0x88 - b _080AC058 -_080AC048: - strb r1, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x85 - movs r0, #0x18 -_080AC058: - strb r0, [r1] - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPositionAndSpriteOffset - ldrh r0, [r4, #0x36] - subs r0, #0x14 - strh r0, [r4, #0x36] - ldr r0, _080AC070 @ =0x00000149 -_080AC06A: - bl SoundReq - pop {r4, pc} - .align 2, 0 -_080AC070: .4byte 0x00000149 - - thumb_func_start sub_080AC074 -sub_080AC074: @ 0x080AC074 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080AC084 - bl DeleteThisEntity -_080AC084: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPositionAndSpriteOffset - ldrh r0, [r4, #0x36] - subs r0, #0x14 - strh r0, [r4, #0x36] - adds r1, r4, #0 - adds r1, #0x85 - ldrb r0, [r1] - cmp r0, #0 - beq _080AC0B2 - subs r0, #1 - strb r0, [r1] - movs r1, #0xff - ands r0, r1 - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _080AC0B2 - ldr r0, _080AC0E8 @ =0x00000149 - bl SoundReq -_080AC0B2: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080AC0FE - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080AC0F0 - movs r0, #2 - strb r0, [r4, #0xc] - ldr r1, _080AC0EC @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - strb r0, [r4, #0x15] - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - adds r0, #0x13 - bl SoundReq - b _080AC0F8 - .align 2, 0 -_080AC0E8: .4byte 0x00000149 -_080AC0EC: .4byte gPlayerEntity -_080AC0F0: - movs r0, #3 - strb r0, [r4, #0xc] - movs r0, #0x10 - strb r0, [r4, #0xe] -_080AC0F8: - ldrh r0, [r4, #0x36] - subs r0, #0x28 - strh r0, [r4, #0x36] -_080AC0FE: - pop {r4, pc} - - thumb_func_start sub_080AC100 -sub_080AC100: @ 0x080AC100 - push {r4, lr} - adds r4, r0, #0 - ldrh r2, [r4, #0x36] - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #6 - rsbs r0, r0, #0 - cmp r1, r0 - bge _080AC116 - adds r0, r2, #3 - strh r0, [r4, #0x36] -_080AC116: - adds r0, r4, #0 - bl sub_080AF090 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _080AC126 - bl DeleteThisEntity -_080AC126: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080AC13A - bl DeleteThisEntity -_080AC13A: - ldrb r0, [r4, #0xe] - cmp r0, #0x1d - bhi _080AC160 - adds r0, #1 - strb r0, [r4, #0xe] - movs r1, #0xff - ands r0, r1 - ldrb r1, [r4, #0xf] - ands r0, r1 - cmp r0, #0 - bne _080AC160 - ldr r1, _080AC164 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 -_080AC160: - pop {r4, pc} - .align 2, 0 -_080AC164: .4byte gPlayerEntity - - thumb_func_start sub_080AC168 -sub_080AC168: @ 0x080AC168 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl GetNextFrame - ldr r0, [r4, #0x34] - ldr r1, _080AC1C0 @ =0xFFFF8000 - adds r0, r0, r1 - str r0, [r4, #0x34] - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r6, r0, #0x18 - cmp r6, #0 - bne _080AC1F8 - movs r0, #4 - strb r0, [r4, #0xc] - strb r0, [r4, #0xe] - bl Random - adds r5, r0, #0 - movs r0, #7 - ands r5, r0 - ldr r0, _080AC1C4 @ =gUnk_0812A982 - adds r0, r5, r0 - ldrb r0, [r0] - strb r0, [r4, #0xf] - ldr r1, _080AC1C8 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - adds r1, r0, #0 - ldr r0, [r4, #0x50] - adds r0, #0x84 - ldrb r0, [r0] - cmp r0, #3 - bne _080AC1D0 - ldr r0, _080AC1CC @ =gUnk_0812A98A - adds r0, r5, r0 - ldrb r0, [r0] - subs r1, r1, r0 - strb r6, [r4, #0xb] - b _080AC1F2 - .align 2, 0 -_080AC1C0: .4byte 0xFFFF8000 -_080AC1C4: .4byte gUnk_0812A982 -_080AC1C8: .4byte gPlayerEntity -_080AC1CC: .4byte gUnk_0812A98A -_080AC1D0: - cmp r0, #2 - bne _080AC1E4 - ldr r0, _080AC1E0 @ =gUnk_0812A98A - adds r0, r5, r0 - ldrb r0, [r0] - subs r1, r1, r0 - movs r0, #1 - b _080AC1F0 - .align 2, 0 -_080AC1E0: .4byte gUnk_0812A98A -_080AC1E4: - ldr r0, _080AC1FC @ =gUnk_0812A98A - adds r0, r5, r0 - ldrb r0, [r0] - lsrs r0, r0, #1 - subs r1, r1, r0 - movs r0, #2 -_080AC1F0: - strb r0, [r4, #0xb] -_080AC1F2: - movs r0, #0x1f - ands r1, r0 - strb r1, [r4, #0x15] -_080AC1F8: - pop {r4, r5, r6, pc} - .align 2, 0 -_080AC1FC: .4byte gUnk_0812A98A - - thumb_func_start sub_080AC200 -sub_080AC200: @ 0x080AC200 - push {r4, r5, lr} - adds r4, r0, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r5, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080AC270 - movs r0, #0x10 - strb r0, [r4, #0xe] - movs r0, #0x21 - bl sub_080A7EE0 - adds r1, r0, #0 - cmp r1, #0 - beq _080AC23C - movs r0, #2 - strb r0, [r1, #0xa] - ldrb r0, [r4, #0xb] - strb r0, [r1, #0xb] - ldrb r0, [r4, #0x15] - strb r0, [r1, #0x15] - ldr r0, [r4, #0x50] - str r0, [r1, #0x50] - adds r0, r4, #0 - bl CopyPosition -_080AC23C: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r5 - cmp r0, #0 - bne _080AC24C - bl DeleteThisEntity -_080AC24C: - ldr r0, [r4, #0x50] - adds r0, #0x84 - ldrb r0, [r0] - cmp r0, #3 - bne _080AC25C - ldrb r0, [r4, #0x15] - adds r0, #3 - b _080AC26A -_080AC25C: - cmp r0, #2 - bne _080AC266 - ldrb r0, [r4, #0x15] - adds r0, #3 - b _080AC26A -_080AC266: - ldrb r0, [r4, #0x15] - adds r0, #2 -_080AC26A: - movs r1, #0x1f - ands r0, r1 - strb r0, [r4, #0x15] -_080AC270: - pop {r4, r5, pc} - .align 2, 0 diff --git a/asm/projectile/projectile22.s b/asm/projectile/projectile22.s deleted file mode 100644 index e98f7eae..00000000 --- a/asm/projectile/projectile22.s +++ /dev/null @@ -1,848 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile22 -Projectile22: @ 0x080AC274 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080AC284 - bl DeleteThisEntity -_080AC284: - ldr r1, _080AC2BC @ =gUnk_0812A994 - ldrb r0, [r4, #0xb] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080AC2C0 - ldrb r0, [r4, #0x1b] - movs r1, #0xc0 - orrs r0, r1 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x19] - orrs r0, r1 - strb r0, [r4, #0x19] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2] - b _080AC324 - .align 2, 0 -_080AC2BC: .4byte gUnk_0812A994 -_080AC2C0: - ldr r5, [r4, #0x50] - ldrb r2, [r5, #0x1b] - lsrs r2, r2, #6 - lsls r2, r2, #6 - ldrb r3, [r4, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, #0x1b] - ldrb r0, [r5, #0x19] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r2, [r4, #0x19] - ands r1, r2 - orrs r1, r0 - strb r1, [r4, #0x19] - adds r0, r5, #0 - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - lsrs r1, r1, #0x1d - subs r1, #2 - adds r3, r4, #0 - adds r3, #0x29 - movs r0, #7 - ands r1, r0 - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrb r0, [r5, #0x19] - lsrs r0, r0, #6 - cmp r0, #3 - bne _080AC31C - adds r0, r5, #0 - adds r0, #0x7c - ldrb r0, [r0] - cmp r0, #0 - bne _080AC31C - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - b _080AC322 -_080AC31C: - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 -_080AC322: - strb r0, [r4, #0x10] -_080AC324: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080AC328 -sub_080AC328: @ 0x080AC328 - push {lr} - ldr r2, _080AC33C @ =gUnk_0812A9A8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080AC33C: .4byte gUnk_0812A9A8 - - thumb_func_start sub_080AC340 -sub_080AC340: @ 0x080AC340 - push {r4, r5, lr} - adds r5, r0, #0 - bl sub_080AC5E4 - cmp r0, #0 - beq _080AC380 - movs r2, #1 - movs r4, #1 - strb r4, [r5, #0xc] - movs r0, #0xc - strb r0, [r5, #0x1e] - ldrb r1, [r5, #0x18] - subs r0, #0x10 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, #0x18] - bl Random - ldr r1, _080AC384 @ =gUnk_0812A9B4 - ands r0, r4 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - adds r1, r5, #0 - adds r1, #0x7a - strh r0, [r1] - subs r1, #0x42 - movs r0, #2 - strb r0, [r1] - adds r0, r5, #0 - bl sub_080AC388 -_080AC380: - pop {r4, r5, pc} - .align 2, 0 -_080AC384: .4byte gUnk_0812A9B4 - - thumb_func_start sub_080AC388 -sub_080AC388: @ 0x080AC388 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r5, r0, #0 - ldr r1, _080AC3E4 @ =gUnk_0812A9B8 - ldrb r0, [r5, #0xa] - adds r0, r0, r1 - ldrb r3, [r0] - ldr r0, [r5, #0x50] - mov sl, r0 - ldrb r0, [r0, #0x14] - movs r1, #0x80 - mov sb, r1 - mov r1, sb - eors r1, r0 - adds r6, r5, #0 - adds r6, #0x7c - ldrh r4, [r6] - lsrs r0, r4, #8 - subs r1, r1, r0 - adds r2, r5, #0 - adds r2, #0x7a - ldrh r7, [r2] - mov ip, r7 - movs r7, #0 - ldrsh r0, [r2, r7] - cmp r0, #0 - bge _080AC404 - subs r0, r1, r3 - movs r7, #0xff - mov r8, r7 - ands r0, r7 - cmp r0, #0x7f - bhi _080AC3E8 - movs r1, #0 - ldrsh r0, [r2, r1] - rsbs r0, r0, #0 - strh r0, [r2] - mov r2, sl - ldrb r0, [r2, #0x14] - mov r7, sb - eors r0, r7 - subs r0, r0, r3 - b _080AC422 - .align 2, 0 -_080AC3E4: .4byte gUnk_0812A9B8 -_080AC3E8: - mov r2, ip - adds r0, r4, r2 - strh r0, [r6] - adds r0, r1, r3 - mov r7, r8 - ands r0, r7 - cmp r0, #0x80 - bls _080AC45A - mov r1, sl - ldrb r0, [r1, #0x14] - mov r2, sb - eors r0, r2 - adds r0, r0, r3 - b _080AC44E -_080AC404: - adds r0, r1, r3 - movs r7, #0xff - mov r8, r7 - ands r0, r7 - cmp r0, #0x80 - bls _080AC432 - movs r1, #0 - ldrsh r0, [r2, r1] - rsbs r0, r0, #0 - strh r0, [r2] - mov r2, sl - ldrb r0, [r2, #0x14] - mov r7, sb - eors r0, r7 - adds r0, r0, r3 -_080AC422: - movs r1, #0xff - ands r0, r1 - lsls r0, r0, #8 - strh r0, [r6] - adds r0, r5, #0 - bl sub_080AC884 - b _080AC45A -_080AC432: - mov r2, ip - adds r0, r4, r2 - strh r0, [r6] - subs r0, r1, r3 - mov r7, r8 - ands r0, r7 - subs r0, #1 - cmp r0, #0x7e - bhi _080AC45A - mov r1, sl - ldrb r0, [r1, #0x14] - mov r2, sb - eors r0, r2 - subs r0, r0, r3 -_080AC44E: - movs r1, #0xff - ands r0, r1 - lsls r0, r0, #8 - movs r1, #0x80 - orrs r0, r1 - strh r0, [r6] -_080AC45A: - adds r0, r5, #0 - adds r0, #0x7c - ldrh r0, [r0] - lsrs r0, r0, #8 - strb r0, [r5, #0x15] - adds r0, r5, #0 - bl sub_080AC6F0 - adds r0, r5, #0 - bl sub_080AC760 - adds r0, r5, #0 - bl sub_080AC7C4 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080AC480 -sub_080AC480: @ 0x080AC480 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xe] - cmp r1, #0 - beq _080AC4BE - ldr r0, [r4, #0x50] - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _080AC4A2 - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x1d - strb r0, [r1] - b _080AC50A -_080AC4A2: - subs r0, r1, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080AC50A - adds r0, r4, #0 - adds r0, #0x3f - movs r1, #0x1c - strb r1, [r0] - movs r0, #0x8b - lsls r0, r0, #1 - bl SoundReq - b _080AC50A -_080AC4BE: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080AC4D6 - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x1d - strb r0, [r1] -_080AC4D6: - adds r1, r4, #0 - adds r1, #0x7c - ldrh r2, [r1] - adds r0, r4, #0 - adds r0, #0x7a - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0 - ble _080AC4EE - movs r3, #0xc0 - lsls r3, r3, #2 - b _080AC4F0 -_080AC4EE: - ldr r3, _080AC50C @ =0xFFFFFD00 -_080AC4F0: - adds r0, r2, r3 - strh r0, [r1] - lsrs r0, r0, #8 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_080AC6F0 - adds r0, r4, #0 - bl sub_080AC760 - adds r0, r4, #0 - bl sub_080AC7C4 -_080AC50A: - pop {r4, pc} - .align 2, 0 -_080AC50C: .4byte 0xFFFFFD00 - - thumb_func_start sub_080AC510 -sub_080AC510: @ 0x080AC510 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080AC556 - movs r3, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r2, _080AC558 @ =gUnk_0812A9BA - ldrb r1, [r4, #0xa] - lsls r0, r1, #1 - adds r0, r0, r1 - ldrb r1, [r4, #0xb] - adds r0, r0, r1 - subs r0, #1 - adds r0, r0, r2 - ldrb r0, [r0] - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r3 - strb r0, [r4, #0x18] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - ldrh r1, [r4, #0xa] - movs r0, #0xc0 - lsls r0, r0, #2 - cmp r1, r0 - bne _080AC556 - ldr r0, _080AC55C @ =gUnk_080FD458 - str r0, [r4, #0x48] -_080AC556: - pop {r4, pc} - .align 2, 0 -_080AC558: .4byte gUnk_0812A9BA -_080AC55C: .4byte gUnk_080FD458 - - thumb_func_start sub_080AC560 -sub_080AC560: @ 0x080AC560 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x54] - ldr r0, [r5, #4] - cmp r0, #0 - bne _080AC570 - bl DeleteThisEntity -_080AC570: - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080AC5A6 - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080AC590 - ldr r0, _080AC58C @ =gUnk_080FD168 - b _080AC592 - .align 2, 0 -_080AC58C: .4byte gUnk_080FD168 -_080AC590: - ldr r0, _080AC5DC @ =gUnk_080FD448 -_080AC592: - str r0, [r4, #0x48] - movs r0, #0xff - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] -_080AC5A6: - adds r0, r4, #0 - adds r0, #0x79 - ldrb r2, [r0] - lsls r2, r2, #8 - ldr r3, _080AC5E0 @ =gSineTable - ldrb r0, [r5, #0x15] - lsls r0, r0, #1 - adds r0, r0, r3 - movs r1, #0 - ldrsh r0, [r0, r1] - adds r1, r0, #0 - muls r1, r2, r1 - ldr r0, [r5, #0x2c] - adds r0, r0, r1 - str r0, [r4, #0x2c] - ldrb r0, [r5, #0x15] - adds r0, #0x40 - lsls r0, r0, #1 - adds r0, r0, r3 - movs r1, #0 - ldrsh r0, [r0, r1] - adds r1, r0, #0 - muls r1, r2, r1 - ldr r0, [r5, #0x30] - subs r0, r0, r1 - str r0, [r4, #0x30] - pop {r4, r5, pc} - .align 2, 0 -_080AC5DC: .4byte gUnk_080FD448 -_080AC5E0: .4byte gSineTable - - thumb_func_start sub_080AC5E4 -sub_080AC5E4: @ 0x080AC5E4 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - ldrb r4, [r5, #0xa] - cmp r4, #0 - bne _080AC668 - ldr r0, _080AC664 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x43 - bhi _080AC670 - adds r1, r5, #0 - adds r1, #0x79 - movs r0, #0x11 - strb r0, [r1] - movs r0, #0x22 - bl sub_080A7EE0 - adds r6, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r6, #0xa] - movs r0, #1 - strb r0, [r6, #0xb] - ldr r0, [r5, #0x50] - str r0, [r6, #0x50] - adds r1, r6, #0 - adds r1, #0x79 - movs r0, #0x12 - strb r0, [r1] - str r6, [r5, #0x54] - movs r0, #0x22 - bl sub_080A7EE0 - adds r7, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r7, #0xa] - movs r0, #2 - strb r0, [r7, #0xb] - ldr r0, [r5, #0x50] - str r0, [r7, #0x50] - adds r0, r7, #0 - adds r0, #0x79 - movs r1, #0x14 - mov r8, r1 - mov r1, r8 - strb r1, [r0] - str r7, [r6, #0x54] - movs r0, #0x22 - bl sub_080A7EE0 - ldrb r1, [r5, #0xa] - strb r1, [r0, #0xa] - movs r1, #3 - strb r1, [r0, #0xb] - ldr r1, [r5, #0x50] - str r1, [r0, #0x50] - str r4, [r0, #0x54] - adds r1, r0, #0 - adds r1, #0x79 - strb r4, [r1] - str r0, [r7, #0x54] - b _080AC6C8 - .align 2, 0 -_080AC664: .4byte gEntCount -_080AC668: - ldr r0, _080AC674 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x44 - bls _080AC678 -_080AC670: - movs r0, #0 - b _080AC6E8 - .align 2, 0 -_080AC674: .4byte gEntCount -_080AC678: - adds r1, r5, #0 - adds r1, #0x79 - movs r0, #0 - mov sb, r0 - movs r0, #0xf - strb r0, [r1] - movs r0, #0x22 - bl sub_080A7EE0 - adds r6, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r6, #0xa] - movs r0, #1 - strb r0, [r6, #0xb] - ldr r0, [r5, #0x50] - str r0, [r6, #0x50] - adds r0, r6, #0 - adds r0, #0x79 - movs r1, #0x10 - mov r8, r1 - mov r1, r8 - strb r1, [r0] - str r6, [r5, #0x54] - movs r0, #0x22 - bl sub_080A7EE0 - adds r7, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r7, #0xa] - movs r0, #2 - strb r0, [r7, #0xb] - ldr r0, [r5, #0x50] - str r0, [r7, #0x50] - mov r0, sb - str r0, [r7, #0x54] - adds r1, r7, #0 - adds r1, #0x79 - movs r0, #0x20 - strb r0, [r1] - str r7, [r6, #0x54] -_080AC6C8: - movs r0, #0x22 - bl sub_080A7EE0 - adds r6, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r6, #0xa] - movs r0, #4 - strb r0, [r6, #0xb] - ldr r0, [r5, #0x50] - str r0, [r6, #0x50] - str r5, [r6, #0x54] - adds r0, r6, #0 - adds r0, #0x79 - mov r1, r8 - strb r1, [r0] - movs r0, #1 -_080AC6E8: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080AC6F0 -sub_080AC6F0: @ 0x080AC6F0 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0x15] - movs r2, #0x1f - ands r2, r0 - lsrs r0, r0, #5 - lsls r1, r0, #1 - adds r3, r1, r0 - ldr r1, _080AC724 @ =gUnk_0812A9C0 - ldrb r0, [r4, #0x14] - adds r0, r0, r1 - ldrb r0, [r0] - subs r0, r0, r3 - adds r5, r1, #0 - cmp r0, #3 - bhi _080AC73A - cmp r0, #1 - beq _080AC72E - cmp r0, #1 - blo _080AC728 - cmp r0, #2 - beq _080AC732 - cmp r2, #0x19 - bhi _080AC75C - b _080AC73A - .align 2, 0 -_080AC724: .4byte gUnk_0812A9C0 -_080AC728: - cmp r2, #6 - bls _080AC75C - b _080AC73A -_080AC72E: - subs r0, r2, #5 - b _080AC736 -_080AC732: - adds r0, r2, #0 - subs r0, #0xf -_080AC736: - cmp r0, #0xc - bls _080AC75C -_080AC73A: - adds r0, r3, #3 - cmp r2, #0x1a - bhi _080AC74E - adds r0, r3, #2 - cmp r2, #0x10 - bhi _080AC74E - adds r0, r3, #0 - cmp r2, #5 - bls _080AC74E - adds r0, #1 -_080AC74E: - movs r1, #0x18 - bl __modsi3 - strb r0, [r4, #0x14] - adds r0, r0, r5 - ldrb r0, [r0] - strb r0, [r4, #0x1e] -_080AC75C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080AC760 -sub_080AC760: @ 0x080AC760 - 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 - - thumb_func_start sub_080AC7C4 -sub_080AC7C4: @ 0x080AC7C4 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r4, r0, #0 - ldr r0, [r4, #0x54] - mov r8, r0 - ldr r7, [r0, #0x54] - ldr r5, [r7, #0x54] - cmp r5, #0 - beq _080AC7E4 - ldr r0, [r4, #0x50] - adds r1, r5, #0 - bl CopyPosition - b _080AC7E6 -_080AC7E4: - ldr r5, [r4, #0x50] -_080AC7E6: - adds r0, r7, #0 - adds r0, #0x79 - ldrb r2, [r0] - lsls r2, r2, #8 - ldr r3, _080AC880 @ =gSineTable - mov sb, r3 - ldrb r1, [r7, #0x15] - lsls r0, r1, #1 - add r0, sb - movs r3, #0 - ldrsh r0, [r0, r3] - adds r6, r0, #0 - muls r6, r2, r6 - adds r1, #0x40 - lsls r1, r1, #1 - add r1, sb - movs r3, #0 - ldrsh r0, [r1, r3] - muls r0, r2, r0 - rsbs r3, r0, #0 - adds r0, r5, #0 - adds r1, r7, #0 - adds r2, r6, #0 - bl PositionRelative - mov r0, r8 - adds r0, #0x79 - ldrb r2, [r0] - lsls r2, r2, #8 - mov r0, r8 - ldrb r1, [r0, #0x15] - lsls r0, r1, #1 - add r0, sb - movs r3, #0 - ldrsh r0, [r0, r3] - adds r6, r0, #0 - muls r6, r2, r6 - adds r1, #0x40 - lsls r1, r1, #1 - add r1, sb - movs r3, #0 - ldrsh r0, [r1, r3] - muls r0, r2, r0 - rsbs r3, r0, #0 - adds r0, r7, #0 - mov r1, r8 - adds r2, r6, #0 - bl PositionRelative - adds r0, r4, #0 - adds r0, #0x79 - ldrb r2, [r0] - lsls r2, r2, #8 - ldrb r1, [r4, #0x15] - lsls r0, r1, #1 - add r0, sb - movs r3, #0 - ldrsh r0, [r0, r3] - adds r6, r0, #0 - muls r6, r2, r6 - adds r1, #0x40 - lsls r1, r1, #1 - add r1, sb - movs r3, #0 - ldrsh r0, [r1, r3] - muls r0, r2, r0 - rsbs r3, r0, #0 - mov r0, r8 - adds r1, r4, #0 - adds r2, r6, #0 - bl PositionRelative - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AC880: .4byte gSineTable - - thumb_func_start sub_080AC884 -sub_080AC884: @ 0x080AC884 - push {lr} - adds r1, r0, #0 - ldr r0, [r1, #0x50] - adds r2, r0, #0 - adds r2, #0x72 - ldrh r0, [r2] - cmp r0, #0 - beq _080AC8A4 - movs r0, #0 - strh r0, [r2] - movs r0, #2 - strb r0, [r1, #0xc] - movs r0, #0x3c - strb r0, [r1, #0xe] - movs r0, #0x56 - strb r0, [r1, #0xf] -_080AC8A4: - pop {pc} - .align 2, 0 diff --git a/asm/projectile/projectile23.s b/asm/projectile/projectile23.s deleted file mode 100644 index a85dd813..00000000 --- a/asm/projectile/projectile23.s +++ /dev/null @@ -1,208 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile23 -Projectile23: @ 0x080AC8A8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080AC8C0 @ =gUnk_0812A9D8 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080AC8C0: .4byte gUnk_0812A9D8 - - thumb_func_start sub_080AC8C4 -sub_080AC8C4: @ 0x080AC8C4 - push {lr} - ldr r2, _080AC8D8 @ =gUnk_0812A9EC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080AC8D8: .4byte gUnk_0812A9EC - - thumb_func_start sub_080AC8DC -sub_080AC8DC: @ 0x080AC8DC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0 - blt _080AC8FE - cmp r1, #3 - ble _080AC8F8 - cmp r1, #0x1f - bgt _080AC8FE - cmp r1, #0x1e - blt _080AC8FE -_080AC8F8: - bl DeleteThisEntity - b _080AC920 -_080AC8FE: - ldrb r0, [r4, #0xc] - cmp r0, #3 - beq _080AC920 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrh r0, [r4, #0x24] - lsls r0, r0, #0x10 - asrs r0, r0, #0x11 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_080AC920: - adds r0, r4, #0 - bl sub_080AC8C4 - pop {r4, pc} - - thumb_func_start sub_080AC928 -sub_080AC928: @ 0x080AC928 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x3c - strb r0, [r4, #0xe] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_080AC954 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AC954 -sub_080AC954: @ 0x080AC954 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, [r5, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080AC964 - bl DeleteThisEntity -_080AC964: - ldr r0, [r5, #0x50] - ldrb r3, [r0, #0x14] - ldr r4, _080AC9C4 @ =gSineTable - lsls r1, r3, #1 - adds r1, r1, r4 - movs r2, #0 - ldrsh r1, [r1, r2] - lsls r2, r1, #2 - adds r2, r2, r1 - lsls r2, r2, #0xb - adds r3, #0x40 - lsls r3, r3, #1 - adds r3, r3, r4 - movs r4, #0 - ldrsh r1, [r3, r4] - lsls r3, r1, #2 - adds r3, r3, r1 - lsls r3, r3, #0xb - rsbs r3, r3, #0 - adds r1, r5, #0 - bl PositionRelative - adds r0, r5, #0 - bl GetNextFrame - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080AC9C0 - movs r0, #2 - strb r0, [r5, #0xc] - ldrb r0, [r5, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] - ldr r1, _080AC9C8 @ =gPlayerEntity - adds r0, r5, #0 - bl GetFacingDirection - strb r0, [r5, #0x15] - movs r0, #0x97 - lsls r0, r0, #1 - bl SoundReq -_080AC9C0: - pop {r4, r5, pc} - .align 2, 0 -_080AC9C4: .4byte gSineTable -_080AC9C8: .4byte gPlayerEntity - - thumb_func_start sub_080AC9CC -sub_080AC9CC: @ 0x080AC9CC - push {r4, lr} - adds r4, r0, #0 - bl sub_080AF090 - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080AC9E8 - bl DeleteThisEntity -_080AC9E8: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080ACA10 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrh r0, [r4, #0x24] - lsls r0, r0, #0x10 - asrs r0, r0, #0x11 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_080ACA10: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080ACA14 -sub_080ACA14: @ 0x080ACA14 - push {r4, lr} - adds r4, r0, #0 - bl sub_080AF090 - adds r0, r4, #0 - bl GetNextFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080ACA32 - bl DeleteThisEntity -_080ACA32: - pop {r4, pc} diff --git a/asm/projectile/projectile24.s b/asm/projectile/projectile24.s deleted file mode 100644 index 6e88da2f..00000000 --- a/asm/projectile/projectile24.s +++ /dev/null @@ -1,227 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile24 -Projectile24: @ 0x080ACA34 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080ACA4C @ =gUnk_0812AA5C - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080ACA4C: .4byte gUnk_0812AA5C - - thumb_func_start sub_080ACA50 -sub_080ACA50: @ 0x080ACA50 - push {lr} - ldr r2, _080ACA64 @ =gUnk_0812AA74 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080ACA64: .4byte gUnk_0812AA74 - - thumb_func_start sub_080ACA68 -sub_080ACA68: @ 0x080ACA68 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0xc - bgt _080ACA82 - cmp r1, #0xa - bge _080ACA86 - cmp r1, #6 - beq _080ACA86 - b _080ACAC0 -_080ACA82: - cmp r1, #0x1a - bne _080ACAC0 -_080ACA86: - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r1, #0x80 - lsls r1, r1, #1 - adds r0, r1, #0 - ldrh r1, [r4, #0x24] - adds r0, r0, r1 - strh r0, [r4, #0x24] - ldr r0, [r4, #0x4c] - str r0, [r4, #0x54] - adds r0, r4, #0 - bl sub_080ACB40 - cmp r0, #0 - beq _080ACAB0 - movs r0, #0 - b _080ACAB6 -_080ACAB0: - adds r0, r4, #0 - adds r0, #0x3e - ldrb r0, [r0] -_080ACAB6: - strb r0, [r4, #0x15] - movs r0, #0xd8 - bl SoundReq - b _080ACAC4 -_080ACAC0: - bl DeleteThisEntity -_080ACAC4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080ACAC8 -sub_080ACAC8: @ 0x080ACAC8 - push {lr} - movs r2, #0 - movs r1, #1 - strb r1, [r0, #0xc] - movs r1, #0x10 - strb r1, [r0, #0x15] - ldr r1, _080ACAE8 @ =0x0000FFFC - strh r1, [r0, #0x36] - str r2, [r0, #0x54] - movs r1, #7 - bl InitializeAnimation - ldr r0, _080ACAEC @ =0x00000199 - bl SoundReq - pop {pc} - .align 2, 0 -_080ACAE8: .4byte 0x0000FFFC -_080ACAEC: .4byte 0x00000199 - - thumb_func_start sub_080ACAF0 -sub_080ACAF0: @ 0x080ACAF0 - push {r4, lr} - adds r4, r0, #0 - bl sub_080AF090 - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080ACB0C - bl DeleteThisEntity -_080ACB0C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080ACB10 -sub_080ACB10: @ 0x080ACB10 - push {r4, lr} - adds r4, r0, #0 - bl sub_080AF090 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _080ACB22 - bl DeleteThisEntity -_080ACB22: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080ACB90 - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080ACB3C - bl DeleteThisEntity -_080ACB3C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080ACB40 -sub_080ACB40: @ 0x080ACB40 - push {lr} - adds r2, r0, #0 - ldr r0, [r2, #0x50] - ldr r1, [r0, #0x50] - ldr r3, [r2, #0x54] - ldr r0, [r1, #0x64] - ldr r0, [r0, #0x1c] - ldr r0, [r0, #0x54] - cmp r0, r2 - beq _080ACB5A - ldr r0, [r0, #0x54] - cmp r3, r0 - beq _080ACB86 -_080ACB5A: - ldr r1, [r1, #0x64] - ldr r0, [r1, #0x20] - ldr r0, [r0, #0x54] - cmp r0, r2 - beq _080ACB6A - ldr r0, [r0, #0x54] - cmp r3, r0 - beq _080ACB86 -_080ACB6A: - ldr r0, [r1, #0x24] - ldr r0, [r0, #0x54] - cmp r0, r2 - beq _080ACB78 - ldr r0, [r0, #0x54] - cmp r3, r0 - beq _080ACB86 -_080ACB78: - ldr r0, [r1, #0x28] - ldr r0, [r0, #0x54] - cmp r0, r2 - beq _080ACB8A - ldr r0, [r0, #0x54] - cmp r3, r0 - bne _080ACB8A -_080ACB86: - movs r0, #0 - b _080ACB8C -_080ACB8A: - movs r0, #1 -_080ACB8C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080ACB90 -sub_080ACB90: @ 0x080ACB90 - push {r4, lr} - adds r2, r0, #0 - ldr r3, [r2, #0x50] - movs r0, #0x2e - ldrsh r1, [r2, r0] - movs r4, #0x2e - ldrsh r0, [r3, r4] - cmp r1, r0 - bne _080ACBC6 - movs r0, #0x32 - ldrsh r1, [r2, r0] - movs r4, #0x32 - ldrsh r0, [r3, r4] - cmp r1, r0 - bgt _080ACBC6 - movs r0, #1 - strb r0, [r3, #0xf] - adds r0, r2, #0 - movs r1, #0x1f - movs r2, #0x40 - bl CreateFx - ldr r0, _080ACBC8 @ =0x00000119 - bl EnqueueSFX - bl DeleteThisEntity -_080ACBC6: - pop {r4, pc} - .align 2, 0 -_080ACBC8: .4byte 0x00000119 diff --git a/asm/projectile/projectile3.s b/asm/projectile/projectile3.s deleted file mode 100644 index 89599f32..00000000 --- a/asm/projectile/projectile3.s +++ /dev/null @@ -1,185 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile3 -Projectile3: @ 0x080A82F8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A8310 @ =gUnk_08129650 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A8310: .4byte gUnk_08129650 - - thumb_func_start sub_080A8314 -sub_080A8314: @ 0x080A8314 - push {lr} - ldr r2, _080A8328 @ =gUnk_08129664 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A8328: .4byte gUnk_08129664 - - thumb_func_start sub_080A832C -sub_080A832C: @ 0x080A832C - push {lr} - adds r3, r0, #0 - adds r2, r3, #0 - adds r2, #0x41 - ldrb r0, [r2] - cmp r0, #0x80 - bne _080A8358 - adds r1, r3, #0 - adds r1, #0x3d - movs r0, #0x10 - strb r0, [r1] - adds r1, #5 - movs r0, #0xc - strb r0, [r1] - adds r1, #4 - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r1] - ldr r0, [r3, #0x50] - ldrb r1, [r2] - adds r0, #0x41 - strb r1, [r0] -_080A8358: - adds r0, r3, #0 - adds r0, #0x3d - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A836A - ldr r0, [r3, #0x50] - b _080A836E -_080A836A: - ldr r0, [r3, #0x50] - rsbs r1, r1, #0 -_080A836E: - adds r0, #0x3d - strb r1, [r0] - ldr r0, [r3, #0x50] - movs r1, #0x42 - adds r1, r1, r3 - mov ip, r1 - ldrb r1, [r1] - adds r0, #0x42 - strb r1, [r0] - ldr r0, [r3, #0x50] - adds r1, r3, #0 - adds r1, #0x46 - ldrh r1, [r1] - adds r0, #0x46 - movs r2, #0 - strh r1, [r0] - ldr r0, [r3, #0x50] - adds r1, r3, #0 - adds r1, #0x3e - ldrb r1, [r1] - adds r0, #0x3e - strb r1, [r0] - mov r0, ip - strb r2, [r0] - pop {pc} - - thumb_func_start sub_080A83A0 -sub_080A83A0: @ 0x080A83A0 - push {r4, lr} - adds r4, r0, #0 - bl AllocMutableHitbox - cmp r0, #0 - beq _080A83B0 - movs r0, #1 - strb r0, [r4, #0xc] -_080A83B0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A83B4 -sub_080A83B4: @ 0x080A83B4 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - cmp r5, #0 - bne _080A83C2 - bl DeleteThisEntity -_080A83C2: - ldr r0, [r5, #4] - cmp r0, #0 - bne _080A83CC - bl DeleteThisEntity -_080A83CC: - adds r0, r5, #0 - adds r0, #0x5a - ldrb r0, [r0] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x18 - ldr r1, _080A8424 @ =gUnk_0812966C - adds r2, r0, r1 - ldr r1, [r4, #0x48] - ldrb r0, [r2] - strb r0, [r1] - adds r2, #1 - adds r0, r5, #0 - adds r0, #0x5b - ldrb r0, [r0] - cmp r0, #0x40 - bne _080A83F4 - ldr r1, [r4, #0x48] - ldrb r0, [r1] - rsbs r0, r0, #0 - strb r0, [r1] -_080A83F4: - ldr r1, [r4, #0x48] - ldrb r0, [r2] - strb r0, [r1, #1] - adds r2, #1 - ldr r1, [r4, #0x48] - ldrb r0, [r2] - strb r0, [r1, #6] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #1] - strb r0, [r1, #7] - adds r0, r5, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _080A8428 - ldrb r1, [r4, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A8438 - movs r0, #0x7f - ands r0, r1 - b _080A8436 - .align 2, 0 -_080A8424: .4byte gUnk_0812966C -_080A8428: - ldrb r1, [r4, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080A8438 - movs r0, #0x80 - orrs r0, r1 -_080A8436: - strb r0, [r4, #0x10] -_080A8438: - pop {r4, r5, pc} - .align 2, 0 diff --git a/asm/projectile/projectile4.s b/asm/projectile/projectile4.s deleted file mode 100644 index 09529b17..00000000 --- a/asm/projectile/projectile4.s +++ /dev/null @@ -1,335 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile4 -Projectile4: @ 0x080A843C - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A8454 @ =gUnk_081296F0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A8454: .4byte gUnk_081296F0 - - thumb_func_start sub_080A8458 -sub_080A8458: @ 0x080A8458 - push {lr} - ldr r2, _080A846C @ =gUnk_08129704 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A846C: .4byte gUnk_08129704 - - thumb_func_start sub_080A8470 -sub_080A8470: @ 0x080A8470 - push {r4, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x41 - ldrb r0, [r2] - cmp r0, #0x80 - bne _080A8496 - adds r0, r4, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #0x68 - bne _080A848E - movs r0, #0x86 - bl EnqueueSFX -_080A848E: - adds r0, r4, #0 - bl DeleteEntity - b _080A84C6 -_080A8496: - adds r0, r4, #0 - adds r0, #0x3e - ldrb r0, [r0] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - ldrb r0, [r2] - adds r0, #0x7e - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #1 - bhi _080A84B8 - adds r0, r4, #0 - bl sub_080A8680 - b _080A84C6 -_080A84B8: - adds r0, r4, #0 - movs r1, #0x19 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_080A86A0 -_080A84C6: - pop {r4, pc} - - thumb_func_start sub_080A84C8 -sub_080A84C8: @ 0x080A84C8 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x30 - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - ldrh r0, [r4, #0x36] - subs r0, #4 - strh r0, [r4, #0x36] - movs r0, #0x15 - bl CheckGlobalFlag - cmp r0, #0 - bne _080A84F0 - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x68 - strb r0, [r1] -_080A84F0: - ldr r0, _080A8500 @ =0x0000018D - bl EnqueueSFX - adds r0, r4, #0 - movs r1, #0x18 - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 -_080A8500: .4byte 0x0000018D - - thumb_func_start sub_080A8504 -sub_080A8504: @ 0x080A8504 - push {r4, r5, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - cmp r0, #0 - beq _080A853C - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080A8524 - bl DeleteThisEntity -_080A8524: - adds r0, r4, #0 - bl sub_08016AD2 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A8558 - movs r0, #4 - strb r0, [r4, #0xc] - b _080A8558 -_080A853C: - ldrh r1, [r4, #0x2a] - adds r0, r4, #0 - bl sub_0800417E - adds r0, r4, #0 - bl sub_08016AD2 - adds r0, r4, #0 - movs r1, #0x19 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_080A86A0 -_080A8558: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _080A85B6 - ldr r5, [r4, #0x50] - ldr r0, [r5, #4] - cmp r0, #0 - beq _080A85B6 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_080177A0 - cmp r0, #0 - beq _080A85B6 - adds r0, r4, #0 - adds r0, #0x3d - movs r3, #0 - movs r2, #0x10 - strb r2, [r0] - ldrb r0, [r4, #0x15] - rsbs r0, r0, #0 - adds r1, r4, #0 - adds r1, #0x3e - strb r0, [r1] - adds r1, #3 - movs r0, #0x80 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x42 - movs r1, #0xc - strb r1, [r0] - adds r0, #4 - strh r3, [r0] - adds r0, r5, #0 - adds r0, #0x3d - strb r2, [r0] - ldrb r0, [r4, #0x15] - adds r2, r5, #0 - adds r2, #0x3e - strb r0, [r2] - adds r2, #3 - movs r0, #0xc2 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x42 - strb r1, [r0] - adds r0, #4 - strh r3, [r0] -_080A85B6: - pop {r4, r5, pc} - - thumb_func_start sub_080A85B8 -sub_080A85B8: @ 0x080A85B8 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - cmp r0, #0 - beq _080A85F2 - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080A85D8 - bl DeleteThisEntity -_080A85D8: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A860E - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - b _080A860E -_080A85F2: - ldrh r1, [r4, #0x2a] - adds r0, r4, #0 - bl sub_0800417E - adds r0, r4, #0 - bl sub_08016AD2 - adds r0, r4, #0 - movs r1, #0x19 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_080A86A0 -_080A860E: - pop {r4, pc} - - thumb_func_start sub_080A8610 -sub_080A8610: @ 0x080A8610 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A8628 - bl DeleteThisEntity -_080A8628: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A862C -sub_080A862C: @ 0x080A862C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_080044EC - cmp r0, #0 - beq _080A864E - cmp r0, #1 - beq _080A8654 - b _080A8662 -_080A864E: - bl DeleteThisEntity - b _080A867E -_080A8654: - ldrb r0, [r4, #0x10] - movs r1, #0x7f - ands r1, r0 - strb r1, [r4, #0x10] - movs r0, #0x90 - lsls r0, r0, #1 - strh r0, [r4, #0x24] -_080A8662: - ldrb r1, [r4, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080A867E - ldrb r2, [r4, #0x18] - lsls r1, r2, #0x1e - lsrs r1, r1, #0x1e - movs r0, #1 - eors r1, r0 - subs r0, #5 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] -_080A867E: - pop {r4, pc} - - thumb_func_start sub_080A8680 -sub_080A8680: @ 0x080A8680 - push {lr} - movs r1, #2 - strb r1, [r0, #0xc] - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - movs r1, #3 - strb r1, [r0, #0xe] - movs r1, #1 - strb r1, [r0, #0xf] - movs r0, #0x8c - lsls r0, r0, #1 - bl EnqueueSFX - pop {pc} - - thumb_func_start sub_080A86A0 -sub_080A86A0: @ 0x080A86A0 - push {lr} - movs r3, #0 - movs r1, #3 - strb r1, [r0, #0xc] - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - strh r3, [r0, #0x24] - movs r0, #0xc7 - lsls r0, r0, #1 - bl EnqueueSFX - pop {pc} diff --git a/asm/projectile/projectile5.s b/asm/projectile/projectile5.s deleted file mode 100644 index 904eeddd..00000000 --- a/asm/projectile/projectile5.s +++ /dev/null @@ -1,146 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile5 -Projectile5: @ 0x080A86BC - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A86D4 @ =gUnk_08129718 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A86D4: .4byte gUnk_08129718 - - thumb_func_start sub_080A86D8 -sub_080A86D8: @ 0x080A86D8 - push {lr} - ldr r2, _080A86EC @ =gUnk_0812972C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A86EC: .4byte gUnk_0812972C - - thumb_func_start sub_080A86F0 -sub_080A86F0: @ 0x080A86F0 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r1, [r4, #0x50] - cmp r1, #0 - bne _080A8700 - bl DeleteThisEntity - b _080A876E -_080A8700: - adds r5, r1, #0 - adds r5, #0x83 - ldrb r1, [r5] - movs r3, #0x3f - adds r0, r3, #0 - ands r0, r1 - cmp r0, #3 - bne _080A8768 - ldr r0, _080A875C @ =gPlayerState - ldrb r0, [r0, #0xf] - cmp r0, #0 - beq _080A876E - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _080A8760 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r3 - movs r6, #0x32 - ldrsh r1, [r4, r6] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - ldr r1, _080A8764 @ =gPlayerEntity - adds r1, #0x38 - ldrb r1, [r1] - bl sub_080002E0 - cmp r0, #0 - bne _080A876E - adds r0, r4, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _080A876E - ldrb r1, [r5] - movs r0, #0x7f - ands r0, r1 - strb r0, [r5] - bl DeleteThisEntity - b _080A876E - .align 2, 0 -_080A875C: .4byte gPlayerState -_080A8760: .4byte gRoomControls -_080A8764: .4byte gPlayerEntity -_080A8768: - adds r0, r4, #0 - bl DeleteEntity -_080A876E: - pop {r4, r5, r6, pc} - - thumb_func_start sub_080A8770 -sub_080A8770: @ 0x080A8770 - movs r1, #1 - strb r1, [r0, #0xc] - adds r3, r0, #0 - adds r3, #0x3c - ldrb r2, [r3] - movs r1, #0x10 - orrs r1, r2 - strb r1, [r3] - ldr r1, _080A8788 @ =gUnk_08129734 - str r1, [r0, #0x48] - bx lr - .align 2, 0 -_080A8788: .4byte gUnk_08129734 - - thumb_func_start sub_080A878C -sub_080A878C: @ 0x080A878C - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, [r5, #0x50] - cmp r4, #0 - bne _080A879A - bl DeleteThisEntity -_080A879A: - ldr r0, [r4, #4] - cmp r0, #0 - bne _080A87A4 - bl DeleteThisEntity -_080A87A4: - adds r0, r4, #0 - adds r0, #0x83 - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #3 - beq _080A87B6 - bl DeleteThisEntity -_080A87B6: - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - ldrh r0, [r5, #0x36] - adds r0, #2 - strh r0, [r5, #0x36] - pop {r4, r5, pc} - .align 2, 0 diff --git a/asm/projectile/projectile6.s b/asm/projectile/projectile6.s deleted file mode 100644 index fee0d5d4..00000000 --- a/asm/projectile/projectile6.s +++ /dev/null @@ -1,368 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile6 -Projectile6: @ 0x080A87C8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A87E0 @ =gUnk_08129740 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A87E0: .4byte gUnk_08129740 - - thumb_func_start sub_080A87E4 -sub_080A87E4: @ 0x080A87E4 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #1 - bne _080A8804 - ldr r0, [r4, #0x54] - cmp r0, #0 - bne _080A87F8 - bl DeleteThisEntity -_080A87F8: - ldr r0, [r4, #0x54] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080A8804 - bl DeleteThisEntity -_080A8804: - ldr r0, _080A8818 @ =gUnk_08129754 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080A8818: .4byte gUnk_08129754 - - thumb_func_start sub_080A881C -sub_080A881C: @ 0x080A881C - push {lr} - adds r1, r0, #0 - adds r2, r1, #0 - adds r2, #0x46 - movs r0, #0 - strh r0, [r2] - ldrb r2, [r1, #0xa] - cmp r2, #0 - bne _080A8854 - ldr r0, [r1, #0x50] - str r2, [r0, #0x54] - adds r0, r1, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _080A884A - ldr r0, _080A8850 @ =gPlayerState - movs r1, #0xf0 - strb r1, [r0, #0xf] - movs r0, #2 - rsbs r0, r0, #0 - bl ModHealth -_080A884A: - bl DeleteThisEntity - b _080A8866 - .align 2, 0 -_080A8850: .4byte gPlayerState -_080A8854: - ldrb r0, [r1, #0xc] - cmp r0, #1 - bhi _080A8866 - movs r0, #2 - strb r0, [r1, #0xc] - ldr r0, [r1, #0x50] - adds r0, #0x83 - movs r1, #0xc0 - strb r1, [r0] -_080A8866: - pop {pc} - - thumb_func_start sub_080A8868 -sub_080A8868: @ 0x080A8868 - push {r4, lr} - adds r3, r0, #0 - movs r4, #0 - movs r0, #1 - strb r0, [r3, #0xc] - strb r4, [r3, #0xd] - ldrb r1, [r3, #0x18] - subs r0, #0x32 - ands r0, r1 - movs r1, #0x10 - orrs r0, r1 - strb r0, [r3, #0x18] - movs r0, #0x80 - lsls r0, r0, #8 - str r0, [r3, #0x20] - ldr r0, _080A88A4 @ =gUnk_08129764 - str r0, [r3, #0x48] - adds r2, r3, #0 - adds r2, #0x3c - ldrb r0, [r2] - orrs r1, r0 - strb r1, [r2] - ldrb r0, [r3, #0xa] - cmp r0, #1 - beq _080A88B8 - cmp r0, #1 - bgt _080A88A8 - cmp r0, #0 - beq _080A88AE - b _080A88C6 - .align 2, 0 -_080A88A4: .4byte gUnk_08129764 -_080A88A8: - cmp r0, #2 - beq _080A88BE - b _080A88C6 -_080A88AE: - adds r0, r3, #0 - movs r1, #0 - bl InitializeAnimation - b _080A88C6 -_080A88B8: - strb r4, [r3, #0xe] - strb r4, [r3, #0xf] - b _080A88C6 -_080A88BE: - adds r0, r3, #0 - movs r1, #5 - bl InitializeAnimation -_080A88C6: - pop {r4, pc} - - thumb_func_start sub_080A88C8 -sub_080A88C8: @ 0x080A88C8 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r6, [r4, #0x50] - cmp r6, #0 - bne _080A88D6 - movs r0, #2 - strb r0, [r4, #0xc] -_080A88D6: - ldr r0, [r6, #4] - cmp r0, #0 - bne _080A88E0 - movs r0, #2 - strb r0, [r4, #0xc] -_080A88E0: - ldr r3, _080A88FC @ =0xFFFF0000 - adds r0, r6, #0 - adds r1, r4, #0 - movs r2, #0 - bl PositionRelative - ldrb r5, [r4, #0xa] - cmp r5, #1 - beq _080A890E - cmp r5, #1 - bgt _080A8900 - cmp r5, #0 - beq _080A8906 - b _080A8982 - .align 2, 0 -_080A88FC: .4byte 0xFFFF0000 -_080A8900: - cmp r5, #2 - beq _080A8962 - b _080A8982 -_080A8906: - ldrh r0, [r4, #0x36] - adds r0, #0x10 - strh r0, [r4, #0x36] - b _080A8982 -_080A890E: - ldrh r0, [r4, #0x36] - adds r0, #0xe - strh r0, [r4, #0x36] - ldr r0, [r4, #0x54] - bl sub_08078954 - ldr r1, [r4, #0x54] - adds r0, r4, #0 - bl CopyPosition - ldrb r0, [r4, #0xe] - adds r1, r0, #1 - strb r1, [r4, #0xe] - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xf - bls _080A8982 - ldr r2, [r4, #0x54] - ldrb r0, [r2, #0xe] - cmp r0, #0 - bne _080A8982 - movs r3, #2 - ands r1, r3 - cmp r1, #0 - beq _080A8946 - ldrb r0, [r2, #0xf] - adds r0, #1 - strb r0, [r2, #0xf] -_080A8946: - ldr r0, [r4, #0x54] - ldrb r1, [r0, #0xf] - cmp r1, #0x1f - bhi _080A8982 - movs r0, #3 - ands r0, r1 - cmp r0, #3 - bne _080A8982 - adds r1, r6, #0 - adds r1, #0x83 - movs r0, #0xc0 - strb r0, [r1] - strb r3, [r4, #0xc] - b _080A8982 -_080A8962: - ldrh r0, [r4, #0x36] - adds r0, #0xe - strh r0, [r4, #0x36] - ldr r1, _080A8984 @ =gPlayerEntity - adds r0, r4, #0 - movs r2, #0xe - movs r3, #0xe - bl sub_080041A0 - cmp r0, #0 - beq _080A8982 - strb r5, [r4, #0xc] - adds r1, r6, #0 - adds r1, #0x83 - movs r0, #0xc0 - strb r0, [r1] -_080A8982: - pop {r4, r5, r6, pc} - .align 2, 0 -_080A8984: .4byte gPlayerEntity - - thumb_func_start sub_080A8988 -sub_080A8988: @ 0x080A8988 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xa] - cmp r0, #1 - bne _080A89B4 - ldr r4, [r5, #0x54] - cmp r4, #0 - bne _080A899C - bl DeleteThisEntity -_080A899C: - ldr r0, [r4, #4] - cmp r0, #0 - bne _080A89A6 - bl DeleteThisEntity -_080A89A6: - adds r0, r4, #0 - bl sub_08078954 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition -_080A89B4: - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r5, #0 - bl sub_080044EC - cmp r0, #1 - bne _080A8A44 - adds r0, r5, #0 - bl sub_080043E8 - cmp r0, #0 - beq _080A8A00 - cmp r0, #2 - beq _080A89E0 - cmp r0, #2 - bhi _080A89DA - cmp r0, #1 - beq _080A89E6 - b _080A89FC -_080A89DA: - cmp r0, #3 - beq _080A89F2 - b _080A89FC -_080A89E0: - adds r0, r5, #0 - movs r1, #0xb - b _080A89EA -_080A89E6: - adds r0, r5, #0 - movs r1, #0 -_080A89EA: - movs r2, #0 - bl CreateFx - b _080A89FC -_080A89F2: - adds r0, r5, #0 - movs r1, #0xc - movs r2, #0 - bl CreateFx -_080A89FC: - bl DeleteThisEntity -_080A8A00: - ldrb r0, [r5, #0xa] - cmp r0, #1 - beq _080A8A3E - cmp r0, #1 - bgt _080A8A10 - cmp r0, #0 - beq _080A8A16 - b _080A8A44 -_080A8A10: - cmp r0, #2 - beq _080A8A2A - b _080A8A44 -_080A8A16: - adds r0, r5, #0 - movs r1, #1 - bl InitializeAnimation - movs r0, #0x84 - bl EnqueueSFX - movs r0, #3 - strb r0, [r5, #0xc] - b _080A8A44 -_080A8A2A: - adds r0, r5, #0 - movs r1, #5 - movs r2, #0x80 - bl CreateFx - adds r4, r0, #0 - cmp r4, #0 - beq _080A8A3E - movs r0, #0 - str r0, [r4, #0x50] -_080A8A3E: - adds r0, r5, #0 - bl DeleteEntity -_080A8A44: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080A8A48 -sub_080A8A48: @ 0x080A8A48 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A8A64 - adds r0, r4, #0 - bl DeleteEntity -_080A8A64: - pop {r4, pc} - .align 2, 0 diff --git a/asm/projectile/projectile7.s b/asm/projectile/projectile7.s deleted file mode 100644 index 1664a95e..00000000 --- a/asm/projectile/projectile7.s +++ /dev/null @@ -1,165 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile7 -Projectile7: @ 0x080A8A68 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFunction - cmp r0, #0 - beq _080A8A78 - bl DeleteThisEntity -_080A8A78: - ldr r0, _080A8A8C @ =gUnk_0812979C - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080A8A8C: .4byte gUnk_0812979C - - thumb_func_start sub_080A8A90 -sub_080A8A90: @ 0x080A8A90 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _080A8AAA - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x15] - lsrs r1, r1, #3 - adds r0, r2, #0 - bl InitializeAnimation - b _080A8AC2 -_080A8AAA: - movs r0, #2 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x15] - lsrs r1, r1, #3 - movs r0, #4 - orrs r1, r0 - adds r0, r2, #0 - bl InitializeAnimation - ldr r0, _080A8AC4 @ =0x0000015F - bl EnqueueSFX -_080A8AC2: - pop {pc} - .align 2, 0 -_080A8AC4: .4byte 0x0000015F - - thumb_func_start sub_080A8AC8 -sub_080A8AC8: @ 0x080A8AC8 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - cmp r5, #0 - bne _080A8AD8 - bl DeleteEntity - b _080A8B34 -_080A8AD8: - ldr r0, [r5, #4] - cmp r0, #0 - bne _080A8AE6 - adds r0, r4, #0 - bl DeleteEntity - b _080A8B34 -_080A8AE6: - ldrb r0, [r4, #0x18] - lsls r0, r0, #0x1e - lsrs r0, r0, #0x1e - cmp r0, #1 - bne _080A8B2E - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldrb r0, [r5, #0x15] - adds r2, r0, #4 - movs r0, #0x18 - ands r2, r0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _080A8B1A - movs r0, #0 - strb r2, [r4, #0x15] - lsrs r1, r2, #2 - strb r1, [r4, #0x14] - strb r0, [r4, #0xe] - lsrs r1, r2, #3 - adds r0, r4, #0 - bl InitializeAnimation - b _080A8B2E -_080A8B1A: - lsrs r0, r2, #2 - ldrb r1, [r4, #0x14] - cmp r0, r1 - beq _080A8B2E - strb r2, [r4, #0x15] - strb r0, [r4, #0x14] - lsrs r1, r2, #3 - adds r0, r4, #0 - bl InitializeAnimation -_080A8B2E: - adds r0, r4, #0 - bl GetNextFrame -_080A8B34: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080A8B38 -sub_080A8B38: @ 0x080A8B38 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - adds r2, r0, #0 - cmp r2, #0 - beq _080A8B66 - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080A8B5E - adds r0, r4, #0 - bl DeleteEntity - b _080A8B74 -_080A8B5E: - adds r0, r4, #0 - bl sub_08016AD2 - b _080A8B74 -_080A8B66: - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - strh r2, [r4, #0x24] -_080A8B74: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A8B78 -sub_080A8B78: @ 0x080A8B78 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A8B94 - adds r0, r4, #0 - bl DeleteEntity -_080A8B94: - pop {r4, pc} - .align 2, 0 diff --git a/asm/projectile/projectile8.s b/asm/projectile/projectile8.s deleted file mode 100644 index 830da908..00000000 --- a/asm/projectile/projectile8.s +++ /dev/null @@ -1,151 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile8 -Projectile8: @ 0x080A8B98 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFunction - cmp r0, #0 - beq _080A8BA8 - bl DeleteThisEntity -_080A8BA8: - ldr r0, _080A8BBC @ =gUnk_0812982C - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080A8BBC: .4byte gUnk_0812982C - - thumb_func_start sub_080A8BC0 -sub_080A8BC0: @ 0x080A8BC0 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _080A8BDA - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x15] - lsrs r1, r1, #3 - adds r0, r2, #0 - bl InitializeAnimation - b _080A8BF4 -_080A8BDA: - movs r0, #2 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x15] - lsrs r1, r1, #3 - movs r0, #4 - orrs r1, r0 - adds r0, r2, #0 - bl InitializeAnimation - movs r0, #0xaf - lsls r0, r0, #1 - bl EnqueueSFX -_080A8BF4: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080A8BF8 -sub_080A8BF8: @ 0x080A8BF8 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - cmp r5, #0 - bne _080A8C08 - bl DeleteEntity - b _080A8C48 -_080A8C08: - ldr r0, [r5, #4] - cmp r0, #0 - bne _080A8C16 - adds r0, r4, #0 - bl DeleteEntity - b _080A8C48 -_080A8C16: - ldrb r0, [r4, #0x18] - lsls r0, r0, #0x1e - lsrs r0, r0, #0x1e - cmp r0, #1 - bne _080A8C42 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _080A8C42 - ldrb r0, [r5, #0x15] - movs r1, #0x18 - ands r1, r0 - movs r0, #0 - strb r1, [r4, #0x15] - strb r0, [r4, #0xe] - lsrs r1, r1, #3 - adds r0, r4, #0 - bl InitializeAnimation -_080A8C42: - adds r0, r4, #0 - bl GetNextFrame -_080A8C48: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080A8C4C -sub_080A8C4C: @ 0x080A8C4C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - adds r2, r0, #0 - cmp r2, #0 - beq _080A8C7A - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080A8C72 - adds r0, r4, #0 - bl DeleteEntity - b _080A8C88 -_080A8C72: - adds r0, r4, #0 - bl sub_08016AD2 - b _080A8C88 -_080A8C7A: - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - strh r2, [r4, #0x24] -_080A8C88: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A8C8C -sub_080A8C8C: @ 0x080A8C8C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A8CA8 - adds r0, r4, #0 - bl DeleteEntity -_080A8CA8: - pop {r4, pc} - .align 2, 0 diff --git a/asm/projectile/projectile9.s b/asm/projectile/projectile9.s deleted file mode 100644 index a09798e3..00000000 --- a/asm/projectile/projectile9.s +++ /dev/null @@ -1,151 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Projectile9 -Projectile9: @ 0x080A8CAC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFunction - cmp r0, #0 - beq _080A8CBC - bl DeleteThisEntity -_080A8CBC: - ldr r0, _080A8CD0 @ =gUnk_081298B8 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080A8CD0: .4byte gUnk_081298B8 - - thumb_func_start sub_080A8CD4 -sub_080A8CD4: @ 0x080A8CD4 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _080A8CEE - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x15] - lsrs r1, r1, #3 - adds r0, r2, #0 - bl InitializeAnimation - b _080A8D08 -_080A8CEE: - movs r0, #2 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x15] - lsrs r1, r1, #3 - movs r0, #4 - orrs r1, r0 - adds r0, r2, #0 - bl InitializeAnimation - movs r0, #0xb0 - lsls r0, r0, #1 - bl EnqueueSFX -_080A8D08: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080A8D0C -sub_080A8D0C: @ 0x080A8D0C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - cmp r5, #0 - bne _080A8D1C - bl DeleteEntity - b _080A8D5C -_080A8D1C: - ldr r0, [r5, #4] - cmp r0, #0 - bne _080A8D2A - adds r0, r4, #0 - bl DeleteEntity - b _080A8D5C -_080A8D2A: - ldrb r0, [r4, #0x18] - lsls r0, r0, #0x1e - lsrs r0, r0, #0x1e - cmp r0, #1 - bne _080A8D56 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _080A8D56 - ldrb r0, [r5, #0x15] - movs r1, #0x18 - ands r1, r0 - movs r0, #0 - strb r1, [r4, #0x15] - strb r0, [r4, #0xe] - lsrs r1, r1, #3 - adds r0, r4, #0 - bl InitializeAnimation -_080A8D56: - adds r0, r4, #0 - bl GetNextFrame -_080A8D5C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080A8D60 -sub_080A8D60: @ 0x080A8D60 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_080AF090 - adds r2, r0, #0 - cmp r2, #0 - beq _080A8D8E - adds r0, r4, #0 - bl sub_080A7EB0 - cmp r0, #0 - beq _080A8D86 - adds r0, r4, #0 - bl DeleteEntity - b _080A8D9C -_080A8D86: - adds r0, r4, #0 - bl sub_08016AD2 - b _080A8D9C -_080A8D8E: - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - strh r2, [r4, #0x24] -_080A8D9C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A8DA0 -sub_080A8DA0: @ 0x080A8DA0 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A8DBC - adds r0, r4, #0 - bl DeleteEntity -_080A8DBC: - pop {r4, pc} - .align 2, 0 diff --git a/asm/projectile/projectileA.s b/asm/projectile/projectileA.s deleted file mode 100644 index 54cf24d2..00000000 --- a/asm/projectile/projectileA.s +++ /dev/null @@ -1,459 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ProjectileA -ProjectileA: @ 0x080A8DC0 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A8DD8 @ =gUnk_08129954 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A8DD8: .4byte gUnk_08129954 - - thumb_func_start sub_080A8DDC -sub_080A8DDC: @ 0x080A8DDC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #3 - beq _080A8E12 - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A8E12 - movs r2, #0x7f - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0x1e - beq _080A8E12 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - adds r0, r2, #0 - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #0x53 - bl InitializeAnimation -_080A8E12: - ldr r0, _080A8E24 @ =gUnk_08129968 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080A8E24: .4byte gUnk_08129968 - - thumb_func_start sub_080A8E28 -sub_080A8E28: @ 0x080A8E28 - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r0, #1 - strb r0, [r5, #0xc] - ldr r0, _080A8E80 @ =0xFFFF0000 - str r0, [r5, #0x20] - ldrb r0, [r5, #0xa] - cmp r0, #3 - beq _080A8E6E - ldr r0, [r5, #0x50] - adds r1, r5, #0 - bl CopyPosition - movs r1, #0x80 - lsls r1, r1, #5 - ldrb r2, [r5, #0x15] - adds r0, r5, #0 - bl sub_0806F5BC - ldr r0, [r5, #0x50] - ldr r2, [r5, #0x54] - ldr r1, [r0, #0x30] - ldr r0, [r2, #0x30] - subs r1, r1, r0 - str r1, [r5, #0x34] - ldr r0, [r5, #0x30] - subs r0, r0, r1 - str r0, [r5, #0x30] - adds r0, r5, #0 - movs r1, #0x51 - bl InitializeAnimation - ldr r0, _080A8E84 @ =0x000001B5 - bl SoundReq -_080A8E6E: - ldrb r4, [r5, #0xa] - cmp r4, #2 - beq _080A8EF2 - cmp r4, #2 - ble _080A8E88 - cmp r4, #3 - beq _080A8F02 - b _080A8FAE - .align 2, 0 -_080A8E80: .4byte 0xFFFF0000 -_080A8E84: .4byte 0x000001B5 -_080A8E88: - cmp r4, #0 - bge _080A8E8E - b _080A8FAE -_080A8E8E: - ldr r0, _080A8EC0 @ =gPlayerEntity - movs r2, #0x2e - ldrsh r1, [r0, r2] - movs r3, #0x32 - ldrsh r2, [r0, r3] - adds r0, r5, #0 - bl sub_080041DC - adds r4, r0, #0 - ldrb r6, [r5, #0xa] - cmp r6, #1 - bne _080A8ECE - bl Random - adds r2, r0, #0 - ldr r0, _080A8EC4 @ =0x000001FF - ands r2, r0 - ldr r0, _080A8EC8 @ =gScreenTransition - ldr r0, [r0] - ands r0, r6 - cmp r0, #0 - bne _080A8ECC - adds r4, r4, r2 - b _080A8ECE - .align 2, 0 -_080A8EC0: .4byte gPlayerEntity -_080A8EC4: .4byte 0x000001FF -_080A8EC8: .4byte gScreenTransition -_080A8ECC: - subs r4, r4, r2 -_080A8ECE: - cmp r4, #0x1f - bgt _080A8ED6 - movs r4, #0x20 - b _080A8EE0 -_080A8ED6: - movs r0, #0x80 - lsls r0, r0, #3 - cmp r4, r0 - ble _080A8EE0 - adds r4, r0, #0 -_080A8EE0: - lsls r1, r4, #8 - ldr r0, [r5, #0x34] - bl __divsi3 - lsls r0, r0, #0xd - str r0, [r5, #0x20] - movs r0, #0x1e - strb r0, [r5, #0xf] - b _080A8FAE -_080A8EF2: - ldr r0, [r5, #0x34] - movs r1, #0xc0 - lsls r1, r1, #9 - bl __divsi3 - lsls r0, r0, #0xc - str r0, [r5, #0x20] - b _080A8FAE -_080A8F02: - ldr r0, _080A8F64 @ =0xFF600000 - str r0, [r5, #0x34] - bl Random - ands r4, r0 - lsls r2, r4, #1 - ldr r1, _080A8F68 @ =gUnk_08129978 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r3, [r5, #0x2e] - adds r0, r0, r3 - strh r0, [r5, #0x2e] - adds r0, r2, #1 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r5, #0x32] - adds r0, r0, r1 - strh r0, [r5, #0x32] - movs r0, #2 - ands r2, r0 - cmp r2, #0 - beq _080A8F74 - bl Random - ldr r2, _080A8F6C @ =gUnk_08129988 - movs r1, #0xf - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r2, [r5, #0x2e] - adds r0, r0, r2 - strh r0, [r5, #0x2e] - bl Random - ldr r2, _080A8F70 @ =gUnk_08129980 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r3, [r5, #0x32] - adds r0, r0, r3 - b _080A8F9E - .align 2, 0 -_080A8F64: .4byte 0xFF600000 -_080A8F68: .4byte gUnk_08129978 -_080A8F6C: .4byte gUnk_08129988 -_080A8F70: .4byte gUnk_08129980 -_080A8F74: - bl Random - ldr r2, _080A8FB0 @ =gUnk_08129980 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r1, [r5, #0x2e] - adds r0, r0, r1 - strh r0, [r5, #0x2e] - bl Random - ldr r2, _080A8FB4 @ =gUnk_08129988 - movs r1, #0xf - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r2, [r5, #0x32] - adds r0, r0, r2 -_080A8F9E: - strh r0, [r5, #0x32] - adds r0, r5, #0 - bl sub_08004168 - adds r0, r5, #0 - movs r1, #0 - bl InitializeAnimation -_080A8FAE: - pop {r4, r5, r6, pc} - .align 2, 0 -_080A8FB0: .4byte gUnk_08129980 -_080A8FB4: .4byte gUnk_08129988 - - thumb_func_start sub_080A8FB8 -sub_080A8FB8: @ 0x080A8FB8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #3 - bne _080A8FE8 - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080A9054 - adds r0, r4, #0 - movs r1, #7 - bl sub_08008790 - adds r0, r4, #0 - movs r1, #4 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity - b _080A9054 -_080A8FE8: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806F69C - ldrb r0, [r4, #0xa] - cmp r0, #2 - beq _080A901C - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - bne _080A901C - movs r0, #0x1e - strb r0, [r4, #0xf] - ldr r1, _080A9048 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 -_080A901C: - adds r0, r4, #0 - movs r1, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080A9054 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_080A90D8 - ldrb r0, [r4, #0xa] - cmp r0, #2 - bne _080A904C - movs r0, #0xf - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #0x54 - bl InitializeAnimation - b _080A9054 - .align 2, 0 -_080A9048: .4byte gPlayerEntity -_080A904C: - adds r0, r4, #0 - movs r1, #0x52 - bl InitializeAnimation -_080A9054: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A9058 -sub_080A9058: @ 0x080A9058 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldrb r0, [r4, #0xa] - cmp r0, #2 - bne _080A9098 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - bne _080A908A - ldrb r0, [r4, #0x10] - movs r1, #0x7f - ands r1, r0 - strb r1, [r4, #0x10] - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x55 - bl InitializeAnimation - b _080A90BA -_080A908A: - adds r0, r4, #0 - bl sub_0806F69C - adds r0, r4, #0 - bl sub_080A90D8 - b _080A90BA -_080A9098: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A90BA - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #0x53 - bl InitializeAnimation -_080A90BA: - pop {r4, pc} - - thumb_func_start sub_080A90BC -sub_080A90BC: @ 0x080A90BC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A90D4 - bl DeleteThisEntity -_080A90D4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A90D8 -sub_080A90D8: @ 0x080A90D8 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - movs r0, #0x74 - adds r0, r0, r5 - mov ip, r0 - ldrh r3, [r0] - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r7, _080A9154 @ =gRoomControls - ldrh r1, [r7, #6] - subs r0, r0, r1 - asrs r4, r0, #4 - movs r6, #0x3f - adds r2, r4, #0 - ands r2, r6 - movs r1, #0x32 - ldrsh r0, [r5, r1] - ldrh r1, [r7, #8] - subs r0, r0, r1 - asrs r1, r0, #4 - adds r0, r1, #0 - ands r0, r6 - lsls r0, r0, #6 - orrs r2, r0 - cmp r3, r2 - beq _080A9152 - movs r0, #0x3f - ands r4, r0 - ands r1, r0 - lsls r0, r1, #6 - orrs r4, r0 - mov r2, ip - strh r4, [r2] - adds r0, r5, #0 - bl GetTileTypeByEntity - cmp r0, #0x13 - beq _080A9128 - cmp r0, #0x34 - bne _080A9152 -_080A9128: - movs r0, #0xd3 - lsls r0, r0, #2 - movs r3, #0x2e - ldrsh r1, [r5, r3] - ldrh r2, [r7, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r6 - movs r3, #0x32 - ldrsh r2, [r5, r3] - ldrh r3, [r7, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r6 - lsls r2, r2, #6 - orrs r1, r2 - adds r2, r5, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl sub_0807B7D8 -_080A9152: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A9154: .4byte gRoomControls diff --git a/asm/projectile/projectileB.s b/asm/projectile/projectileB.s deleted file mode 100644 index d59f65db..00000000 --- a/asm/projectile/projectileB.s +++ /dev/null @@ -1,78 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ProjectileB -ProjectileB: @ 0x080A9158 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xc] - cmp r0, #0 - bne _080A9166 - movs r0, #1 - strb r0, [r5, #0xc] -_080A9166: - ldr r4, [r5, #0x50] - cmp r4, #0 - beq _080A917C - adds r0, r4, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - beq _080A917C - ldr r0, [r4, #4] - cmp r0, #0 - bne _080A91A4 -_080A917C: - adds r0, r5, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A9198 - ldr r1, [r5, #0x4c] - ldr r0, _080A91A0 @ =gPlayerEntity - cmp r1, r0 - bne _080A9198 - adds r0, r5, #0 - bl sub_0803C0AC -_080A9198: - adds r0, r5, #0 - bl DeleteEntity - b _080A91D8 - .align 2, 0 -_080A91A0: .4byte gPlayerEntity -_080A91A4: - ldr r1, _080A91DC @ =gUnk_08129998 - ldrb r0, [r4, #0x14] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - str r0, [r5, #0x48] - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - adds r0, r4, #0 - adds r0, #0x3d - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _080A91D8 - adds r1, r5, #0 - adds r1, #0x3d - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - bne _080A91D8 - movs r0, #0xff - strb r0, [r1] -_080A91D8: - pop {r4, r5, pc} - .align 2, 0 -_080A91DC: .4byte gUnk_08129998 diff --git a/asm/projectile/projectileC.s b/asm/projectile/projectileC.s deleted file mode 100644 index 2a6cbba3..00000000 --- a/asm/projectile/projectileC.s +++ /dev/null @@ -1,150 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ProjectileC -ProjectileC: @ 0x080A91E0 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080A9288 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080A9204 - movs r0, #1 - strb r0, [r4, #0xc] - bl Random - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_080A9204: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _080A921C - ldr r1, [r4, #0x50] - cmp r1, #0 - beq _080A9218 - movs r0, #0xff - strb r0, [r1, #0xa] -_080A9218: - bl DeleteThisEntity -_080A921C: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _080A9230 - subs r0, #1 - strb r0, [r4, #0xf] - b _080A92F6 -_080A9230: - adds r0, r4, #0 - bl sub_080644C8 - cmp r0, #0 - beq _080A92F6 - ldrb r1, [r4, #0xe] - adds r0, r1, #1 - strb r0, [r4, #0xe] - movs r0, #3 - ands r0, r1 - cmp r0, #0 - bne _080A92F6 - movs r0, #0xc - bl sub_080A7EE0 - adds r5, r0, #0 - cmp r5, #0 - beq _080A92F6 - movs r0, #1 - strb r0, [r5, #0xa] - ldr r0, [r4, #0x50] - adds r0, #0x3e - ldrb r1, [r0] - ldr r3, _080A9284 @ =gUnk_081299C8 - ldrb r0, [r4, #0xe] - lsrs r0, r0, #2 - movs r2, #7 - ands r0, r2 - adds r0, r0, r3 - lsls r1, r1, #3 - ldrb r0, [r0] - adds r1, r1, r0 - movs r0, #0x1f - ands r1, r0 - strb r1, [r5, #0x15] - ldr r0, [r4, #0x50] - str r0, [r5, #0x50] - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - b _080A92F6 - .align 2, 0 -_080A9284: .4byte gUnk_081299C8 -_080A9288: - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080A92B0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x12 - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x18] - subs r0, #0x16 - ands r0, r1 - strb r0, [r4, #0x18] - movs r0, #0x80 - lsls r0, r0, #4 - strh r0, [r4, #0x24] - ldr r0, _080A92F8 @ =gUnk_080FD1E4 - str r0, [r4, #0x48] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_080A92B0: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _080A92C8 - ldr r1, [r4, #0x50] - cmp r1, #0 - beq _080A92C4 - movs r0, #0xff - strb r0, [r1, #0xa] -_080A92C4: - bl DeleteThisEntity -_080A92C8: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A92D8 - bl DeleteThisEntity -_080A92D8: - adds r0, r4, #0 - bl sub_0806F69C - ldr r0, _080A92FC @ =gUnk_02027EB4 - movs r2, #0x2e - ldrsh r1, [r4, r2] - movs r3, #0x32 - ldrsh r2, [r4, r3] - movs r3, #2 - bl sub_080AE4CC - cmp r0, #0 - beq _080A92F6 - bl DeleteThisEntity -_080A92F6: - pop {r4, r5, pc} - .align 2, 0 -_080A92F8: .4byte gUnk_080FD1E4 -_080A92FC: .4byte gUnk_02027EB4 diff --git a/asm/projectile/projectileD.s b/asm/projectile/projectileD.s deleted file mode 100644 index 3ae402c5..00000000 --- a/asm/projectile/projectileD.s +++ /dev/null @@ -1,278 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ProjectileD -ProjectileD: @ 0x080A9300 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A9318 @ =gUnk_081299D0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A9318: .4byte gUnk_081299D0 - - thumb_func_start sub_080A931C -sub_080A931C: @ 0x080A931C - push {lr} - ldr r2, _080A9330 @ =gUnk_081299E4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A9330: .4byte gUnk_081299E4 - - thumb_func_start sub_080A9334 -sub_080A9334: @ 0x080A9334 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A936C - movs r0, #0x3f - ands r0, r1 - cmp r0, #0 - beq _080A9368 - movs r0, #2 - rsbs r0, r0, #0 - bl ModHealth - adds r0, r4, #0 - bl sub_080A9488 - adds r0, r4, #0 - adds r0, #0x42 - movs r1, #0 - strb r1, [r0] - subs r0, #5 - strb r1, [r0] - b _080A936C -_080A9368: - bl DeleteThisEntity -_080A936C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A9370 -sub_080A9370: @ 0x080A9370 - push {r4, lr} - movs r4, #0 - movs r3, #1 - movs r1, #1 - strb r1, [r0, #0xc] - ldrb r2, [r0, #0x18] - subs r1, #5 - ands r1, r2 - orrs r1, r3 - strb r1, [r0, #0x18] - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - movs r1, #0x6a - strb r1, [r0, #0xe] - strb r4, [r0, #0xf] - movs r1, #0xa0 - lsls r1, r1, #4 - str r1, [r0, #0x20] - ldrb r1, [r0, #0xa] - bl sub_080A94C0 - pop {r4, pc} - - thumb_func_start sub_080A93A0 -sub_080A93A0: @ 0x080A93A0 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - cmp r5, #0 - beq _080A93B0 - ldr r0, [r5, #4] - cmp r0, #0 - bne _080A93B4 -_080A93B0: - bl DeleteThisEntity -_080A93B4: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _080A93BE - bl DeleteThisEntity -_080A93BE: - ldrb r0, [r5, #0xf] - cmp r0, #0 - beq _080A93DA - movs r2, #0 - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - str r2, [r5, #0x54] - movs r0, #0xfc - bl SoundReq -_080A93DA: - pop {r4, r5, pc} - - thumb_func_start sub_080A93DC -sub_080A93DC: @ 0x080A93DC - push {r4, lr} - adds r4, r0, #0 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _080A9414 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r0, #0x20 - strb r0, [r4, #0xe] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] - adds r1, #2 - adds r0, r4, #0 - bl InitializeAnimation - movs r0, #0xc5 - lsls r0, r0, #1 - bl EnqueueSFX - adds r0, r4, #0 - bl sub_0806F69C - b _080A9424 -_080A9414: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A9424 - bl DeleteThisEntity -_080A9424: - adds r0, r4, #0 - bl sub_080AF090 - pop {r4, pc} - - thumb_func_start sub_080A942C -sub_080A942C: @ 0x080A942C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A9440 - bl DeleteThisEntity -_080A9440: - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_080A9448 -sub_080A9448: @ 0x080A9448 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0xa0 - lsls r1, r1, #6 - bl sub_08003FC4 - cmp r0, #0 - bne _080A9464 - adds r0, r4, #0 - bl CreateDust - bl DeleteThisEntity - b _080A9486 -_080A9464: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A9486 - movs r0, #2 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0x14] - adds r0, #1 - movs r1, #3 - ands r0, r1 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl sub_080A94C0 -_080A9486: - pop {r4, pc} - - thumb_func_start sub_080A9488 -sub_080A9488: @ 0x080A9488 - push {r4, lr} - adds r4, r0, #0 - movs r0, #4 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r0, #2 - strb r0, [r4, #0xe] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - adds r0, r4, #0 - adds r0, #0x3e - ldrb r1, [r0] - movs r0, #0x18 - ands r0, r1 - lsrs r0, r0, #3 - strb r0, [r4, #0x14] - movs r0, #0x74 - bl EnqueueSFX - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl sub_080A94C0 - pop {r4, pc} - - thumb_func_start sub_080A94C0 -sub_080A94C0: @ 0x080A94C0 - push {r4, lr} - lsls r1, r1, #3 - ldr r2, _080A94FC @ =gUnk_081299F8 - adds r1, r1, r2 - ldrb r3, [r1] - movs r2, #1 - ands r3, r2 - lsls r3, r3, #6 - ldrb r4, [r0, #0x18] - movs r2, #0x41 - rsbs r2, r2, #0 - ands r2, r4 - orrs r2, r3 - strb r2, [r0, #0x18] - ldrb r3, [r1, #1] - lsls r3, r3, #7 - movs r4, #0x7f - ands r2, r4 - orrs r2, r3 - strb r2, [r0, #0x18] - ldrb r2, [r1, #2] - adds r3, r0, #0 - adds r3, #0x58 - strb r2, [r3] - ldr r1, [r1, #4] - str r1, [r0, #0x48] - ldrb r1, [r3] - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 -_080A94FC: .4byte gUnk_081299F8 diff --git a/asm/projectile/projectileE.s b/asm/projectile/projectileE.s deleted file mode 100644 index 4eb51a75..00000000 --- a/asm/projectile/projectileE.s +++ /dev/null @@ -1,124 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ProjectileE -ProjectileE: @ 0x080A9500 - push {lr} - ldr r2, _080A9514 @ =gUnk_08129A64 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A9514: .4byte gUnk_08129A64 - - thumb_func_start sub_080A9518 -sub_080A9518: @ 0x080A9518 - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - movs r1, #0xa - strb r1, [r0, #0xe] - ldrh r1, [r0, #0x36] - subs r1, #2 - strh r1, [r0, #0x36] - ldrh r1, [r0, #0x32] - adds r1, #2 - strh r1, [r0, #0x32] - movs r1, #0 - bl InitializeAnimation - ldr r0, _080A953C @ =0x00000149 - bl SoundReq - pop {pc} - .align 2, 0 -_080A953C: .4byte 0x00000149 - - thumb_func_start sub_080A9540 -sub_080A9540: @ 0x080A9540 - push {r4, lr} - adds r3, r0, #0 - ldrb r0, [r3, #0xe] - subs r0, #1 - strb r0, [r3, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A9578 - movs r0, #2 - strb r0, [r3, #0xc] - ldrb r1, [r3, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r3, #0x10] - adds r2, r3, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r3, #0x32] - adds r0, #6 - strh r0, [r3, #0x32] - adds r0, r3, #0 - movs r1, #1 - bl InitializeAnimation - b _080A95B6 -_080A9578: - ldrh r1, [r3, #0x36] - movs r2, #0x36 - ldrsh r0, [r3, r2] - cmp r0, #0 - beq _080A9586 - adds r0, r1, #1 - strh r0, [r3, #0x36] -_080A9586: - ldrb r1, [r3, #0x15] - lsls r1, r1, #1 - ldr r0, _080A95B8 @ =gSineTable - adds r1, r1, r0 - movs r4, #0 - ldrsh r2, [r1, r4] - movs r4, #0x24 - ldrsh r0, [r3, r4] - muls r2, r0, r2 - ldr r0, [r3, #0x2c] - adds r0, r0, r2 - str r0, [r3, #0x2c] - adds r1, #0x80 - movs r0, #0 - ldrsh r1, [r1, r0] - movs r2, #0x24 - ldrsh r0, [r3, r2] - muls r1, r0, r1 - ldr r0, [r3, #0x30] - subs r0, r0, r1 - str r0, [r3, #0x30] - adds r0, r3, #0 - bl GetNextFrame -_080A95B6: - pop {r4, pc} - .align 2, 0 -_080A95B8: .4byte gSineTable - - thumb_func_start sub_080A95BC -sub_080A95BC: @ 0x080A95BC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A95D8 - adds r0, r4, #0 - bl DeleteEntity -_080A95D8: - pop {r4, pc} - .align 2, 0 diff --git a/asm/projectile/projectileF.s b/asm/projectile/projectileF.s deleted file mode 100644 index 55ce9be0..00000000 --- a/asm/projectile/projectileF.s +++ /dev/null @@ -1,537 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ProjectileF -ProjectileF: @ 0x080A95DC - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A95F4 @ =gUnk_08129ABC - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_080A95F4: .4byte gUnk_08129ABC - - thumb_func_start sub_080A95F8 -sub_080A95F8: @ 0x080A95F8 - push {lr} - ldr r2, _080A960C @ =gUnk_08129AD0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A960C: .4byte gUnk_08129AD0 - - thumb_func_start sub_080A9610 -sub_080A9610: @ 0x080A9610 - push {r4, r5, lr} - adds r4, r0, #0 - movs r5, #1 - strb r5, [r4, #0xc] - ldrb r0, [r4, #0xa] - cmp r0, #1 - beq _080A9660 - cmp r0, #1 - bgt _080A9628 - cmp r0, #0 - beq _080A9632 - b _080A9756 -_080A9628: - cmp r0, #2 - beq _080A96D0 - cmp r0, #3 - beq _080A9718 - b _080A9756 -_080A9632: - movs r1, #0x90 - lsls r1, r1, #7 - ldrb r2, [r4, #0x15] - adds r0, r4, #0 - bl sub_0806F62C - movs r1, #0 - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - strb r1, [r4, #0xe] - ldrb r0, [r4, #0x15] - strb r0, [r4, #0xf] - adds r1, r4, #0 - adds r1, #0x78 - movs r0, #0x96 - lsls r0, r0, #1 - strh r0, [r1] - adds r0, r4, #0 - movs r1, #0 - bl InitAnimationForceUpdate - b _080A9756 -_080A9660: - ldrb r0, [r4, #0x19] - movs r1, #0xc0 - orrs r0, r1 - strb r0, [r4, #0x19] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r2] - bl Random - ldr r2, _080A96C8 @ =0x000001FF - adds r1, r2, #0 - ands r0, r1 - adds r2, #1 - adds r1, r2, #0 - adds r0, r0, r1 - strh r0, [r4, #0x24] - bl Random - ldr r1, _080A96CC @ =0x00001FFF - ands r1, r0 - movs r0, #0xc0 - lsls r0, r0, #9 - adds r1, r1, r0 - str r1, [r4, #0x20] - bl Random - movs r1, #7 - ands r0, r1 - subs r0, #4 - ldrb r1, [r4, #0x15] - subs r1, r1, r0 - strb r1, [r4, #0x15] - movs r0, #0x96 - lsls r0, r0, #2 - str r0, [r4, #0x78] - movs r0, #0x24 - ldrsh r1, [r4, r0] - ldrb r2, [r4, #0x15] - adds r0, r4, #0 - bl sub_0806F62C - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation - b _080A9756 - .align 2, 0 -_080A96C8: .4byte 0x000001FF -_080A96CC: .4byte 0x00001FFF -_080A96D0: - bl Random - ands r0, r5 - cmp r0, #0 - beq _080A96EA - bl Random - movs r1, #7 - ands r0, r1 - ldrb r1, [r4, #0x15] - adds r0, r0, r1 - strb r0, [r4, #0x15] - b _080A96F8 -_080A96EA: - bl Random - movs r1, #7 - ands r0, r1 - ldrb r1, [r4, #0x15] - subs r1, r1, r0 - strb r1, [r4, #0x15] -_080A96F8: - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - movs r0, #0x30 - strb r0, [r4, #0xe] - movs r1, #0xa0 - lsls r1, r1, #7 - ldrb r2, [r4, #0x15] - adds r0, r4, #0 - bl sub_0806F62C - adds r0, r4, #0 - movs r1, #5 - bl InitializeAnimation - b _080A9756 -_080A9718: - ldr r0, _080A9760 @ =gPlayerEntity - adds r1, r4, #0 - bl CopyPosition - ldr r0, _080A9764 @ =0xFF600000 - str r0, [r4, #0x34] - ldrh r0, [r4, #0x2e] - adds r0, #0x60 - strh r0, [r4, #0x2e] - ldrh r0, [r4, #0x32] - adds r0, #0x40 - strh r0, [r4, #0x32] - bl Random - movs r1, #0xc0 - bl __modsi3 - ldrh r1, [r4, #0x2e] - subs r1, r1, r0 - strh r1, [r4, #0x2e] - bl Random - movs r1, #0x7f - ands r1, r0 - ldrh r0, [r4, #0x32] - subs r0, r0, r1 - strh r0, [r4, #0x32] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_080A9756: - ldr r0, _080A9768 @ =0x000001B5 - bl SoundReq - pop {r4, r5, pc} - .align 2, 0 -_080A9760: .4byte gPlayerEntity -_080A9764: .4byte 0xFF600000 -_080A9768: .4byte 0x000001B5 - - thumb_func_start sub_080A976C -sub_080A976C: @ 0x080A976C - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #1 - bne _080A9778 - b _080A9908 -_080A9778: - cmp r0, #1 - bgt _080A9782 - cmp r0, #0 - beq _080A9790 - b _080A99EE -_080A9782: - cmp r0, #2 - bne _080A9788 - b _080A99A0 -_080A9788: - cmp r0, #3 - bne _080A978E - b _080A99D2 -_080A978E: - b _080A99EE -_080A9790: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #2 - bne _080A979C - bl DeleteThisEntity -_080A979C: - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _080A97E0 - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A97E0 - movs r5, #0x7f - adds r0, r5, #0 - ands r0, r1 - cmp r0, #0 - bne _080A97C0 - adds r0, r4, #0 - bl sub_080A99F0 -_080A97C0: - adds r0, r4, #0 - adds r0, #0x3e - ldrb r0, [r0] - lsls r0, r0, #3 - strb r0, [r4, #0x15] - movs r1, #0 - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r4, #0x24] - movs r0, #1 - strb r0, [r4, #0xb] - strb r1, [r4, #0xe] - ldrb r1, [r4, #0x10] - adds r0, r5, #0 - ands r0, r1 - strb r0, [r4, #0x10] -_080A97E0: - ldr r1, [r4, #0x50] - adds r0, r4, #0 - movs r2, #0x40 - bl sub_0806FC80 - cmp r0, #0 - beq _080A9848 - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _080A9804 - ldrb r0, [r4, #0x15] - movs r1, #0x80 - eors r0, r1 - strb r0, [r4, #0x15] - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r4, #0x24] - b _080A9848 -_080A9804: - ldr r1, [r4, #0x50] - adds r1, #0x45 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - ldr r0, [r4, #0x50] - adds r0, #0x3d - movs r1, #0x1e - strb r1, [r0] - ldr r1, [r4, #0x50] - adds r0, r1, #0 - adds r0, #0x7c - ldrb r0, [r0] - cmp r0, #0 - beq _080A983C - adds r1, #0x42 - movs r0, #0x18 - strb r0, [r1] - ldr r0, [r4, #0x50] - adds r0, #0x46 - movs r1, #0x80 - lsls r1, r1, #2 - strh r1, [r0] - ldr r1, [r4, #0x50] - ldrb r0, [r4, #0x15] - lsrs r0, r0, #3 - adds r1, #0x3e - strb r0, [r1] -_080A983C: - ldr r0, _080A98B8 @ =0x00000127 - bl SoundReq - adds r0, r4, #0 - bl sub_080A99F0 -_080A9848: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r5, r4, #0 - adds r5, #0x78 - ldrh r0, [r5] - subs r0, #1 - strh r0, [r5] - movs r0, #0x24 - ldrsh r1, [r4, r0] - ldrb r2, [r4, #0x15] - adds r0, r4, #0 - bl sub_0806F62C - ldrb r1, [r4, #0x15] - lsrs r1, r1, #3 - adds r0, r4, #0 - movs r2, #0 - bl sub_080AE58C - ldrh r1, [r4, #0x2a] - movs r0, #0xee - lsls r0, r0, #8 - ands r0, r1 - cmp r0, #0 - beq _080A9882 - ldrb r0, [r4, #0x15] - rsbs r0, r0, #0 - strb r0, [r4, #0x15] -_080A9882: - ldrh r1, [r4, #0x2a] - movs r0, #0xee - ands r0, r1 - cmp r0, #0 - beq _080A989A - ldrb r0, [r4, #0x15] - rsbs r0, r0, #0 - movs r2, #0x80 - rsbs r2, r2, #0 - adds r1, r2, #0 - eors r0, r1 - strb r0, [r4, #0x15] -_080A989A: - ldrb r0, [r4, #0x15] - ldrb r1, [r4, #0xf] - cmp r0, r1 - bne _080A98A4 - b _080A99EE -_080A98A4: - movs r0, #0xb2 - lsls r0, r0, #1 - bl SoundReq - ldrh r0, [r5] - cmp r0, #0 - bne _080A98BC - movs r0, #4 - b _080A98C0 - .align 2, 0 -_080A98B8: .4byte 0x00000127 -_080A98BC: - ldrb r0, [r4, #0xe] - adds r0, #1 -_080A98C0: - strb r0, [r4, #0xe] - ldrb r0, [r4, #0x15] - strb r0, [r4, #0xf] - ldrb r0, [r4, #0xe] - cmp r0, #1 - bhi _080A98CE - b _080A99EE -_080A98CE: - movs r5, #0 -_080A98D0: - adds r0, r4, #0 - movs r1, #0xf - movs r2, #1 - bl sub_0804A98C - adds r1, r0, #0 - str r1, [r4, #0x54] - cmp r1, #0 - beq _080A98FC - ldr r0, [r4, #0x50] - str r0, [r1, #0x50] - ldr r1, [r4, #0x54] - ldr r0, _080A9904 @ =gUnk_08129ADC - adds r0, r5, r0 - ldrb r0, [r0] - ldrb r2, [r4, #0x15] - adds r0, r0, r2 - strb r0, [r1, #0x15] - ldr r1, [r4, #0x54] - adds r0, r4, #0 - bl CopyPosition -_080A98FC: - adds r5, #1 - cmp r5, #2 - bls _080A98D0 - b _080A9998 - .align 2, 0 -_080A9904: .4byte gUnk_08129ADC -_080A9908: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #2 - bne _080A9916 - adds r0, r4, #0 - bl sub_080A99F0 -_080A9916: - adds r0, r4, #0 - bl GetNextFrame - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - beq _080A9950 - ldrb r1, [r4, #0x15] - lsrs r1, r1, #3 - adds r0, r4, #0 - movs r2, #0 - bl sub_080AE58C - ldrh r0, [r4, #0x2a] - cmp r0, #0 - bne _080A994A - movs r0, #0x24 - ldrsh r1, [r4, r0] - ldrb r2, [r4, #0x15] - adds r0, r4, #0 - bl sub_0806F62C - b _080A9950 -_080A994A: - adds r0, r4, #0 - bl sub_080A99F0 -_080A9950: - ldr r2, [r4, #0x78] - cmp r2, #0x1d - bhi _080A9978 - movs r0, #7 - ands r0, r2 - cmp r0, #0 - beq _080A996E - ldrb r0, [r4, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r4, #0x18] - b _080A9978 -_080A996E: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_080A9978: - subs r1, r2, #1 - str r1, [r4, #0x78] - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - bne _080A998A - adds r0, r4, #0 - bl sub_080A99F0 -_080A998A: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A99EE -_080A9998: - adds r0, r4, #0 - bl sub_080A99F0 - b _080A99EE -_080A99A0: - adds r0, r4, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - beq _080A99C2 - movs r2, #0x24 - ldrsh r1, [r4, r2] - ldrb r2, [r4, #0x15] - adds r0, r4, #0 - bl sub_0806F62C - b _080A99EE -_080A99C2: - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _080A99CC - movs r0, #1 - strb r0, [r1, #0xe] -_080A99CC: - bl DeleteThisEntity - b _080A99EE -_080A99D2: - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080A99EE - adds r0, r4, #0 - movs r1, #4 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_080A99EE: - pop {r4, r5, pc} - - thumb_func_start sub_080A99F0 -sub_080A99F0: @ 0x080A99F0 - push {lr} - movs r1, #4 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity - pop {pc} diff --git a/linker.ld b/linker.ld index a4280231..8838ce5d 100644 --- a/linker.ld +++ b/linker.ld @@ -905,43 +905,43 @@ SECTIONS { asm/code_080A5574.o(.text); asm/playerItem/playerItemSword.o(.text); asm/code_080A7C00.o(.text); - asm/projectile/projectile0.o(.text); - asm/projectile/projectile1.o(.text); - asm/projectile/projectile2.o(.text); - asm/projectile/projectile3.o(.text); - asm/projectile/projectile4.o(.text); - asm/projectile/projectile5.o(.text); - asm/projectile/projectile6.o(.text); - asm/projectile/projectile7.o(.text); - asm/projectile/projectile8.o(.text); - asm/projectile/projectile9.o(.text); - asm/projectile/projectileA.o(.text); - asm/projectile/projectileB.o(.text); - asm/projectile/projectileC.o(.text); - asm/projectile/projectileD.o(.text); - asm/projectile/projectileE.o(.text); - asm/projectile/projectileF.o(.text); - asm/projectile/projectile10.o(.text); - asm/projectile/projectile11.o(.text); - asm/projectile/projectile12.o(.text); - asm/projectile/projectile13.o(.text); - asm/projectile/projectile14.o(.text); - asm/projectile/projectile15.o(.text); - asm/projectile/projectile16.o(.text); - asm/projectile/projectile17.o(.text); - asm/projectile/projectile18.o(.text); - asm/projectile/projectile19.o(.text); - asm/projectile/projectile1A.o(.text); - asm/projectile/projectile1B.o(.text); - asm/projectile/projectile1C.o(.text); - asm/projectile/projectile1D.o(.text); - asm/projectile/projectile1E.o(.text); - asm/projectile/projectile1F.o(.text); - asm/projectile/projectile20.o(.text); - asm/projectile/projectile21.o(.text); - asm/projectile/projectile22.o(.text); - asm/projectile/projectile23.o(.text); - asm/projectile/projectile24.o(.text); + src/projectile/projectile0.o(.text); + src/projectile/projectile1.o(.text); + src/projectile/projectile2.o(.text); + src/projectile/projectile3.o(.text); + src/projectile/projectile4.o(.text); + src/projectile/projectile5.o(.text); + src/projectile/projectile6.o(.text); + src/projectile/projectile7.o(.text); + src/projectile/projectile8.o(.text); + src/projectile/projectile9.o(.text); + src/projectile/projectileA.o(.text); + src/projectile/projectileB.o(.text); + src/projectile/projectileC.o(.text); + src/projectile/projectileD.o(.text); + src/projectile/projectileE.o(.text); + src/projectile/projectileF.o(.text); + src/projectile/projectile10.o(.text); + src/projectile/projectile11.o(.text); + src/projectile/projectile12.o(.text); + src/projectile/projectile13.o(.text); + src/projectile/projectile14.o(.text); + src/projectile/projectile15.o(.text); + src/projectile/projectile16.o(.text); + src/projectile/projectile17.o(.text); + src/projectile/projectile18.o(.text); + src/projectile/projectile19.o(.text); + src/projectile/projectile1A.o(.text); + src/projectile/projectile1B.o(.text); + src/projectile/projectile1C.o(.text); + src/projectile/projectile1D.o(.text); + src/projectile/projectile1E.o(.text); + src/projectile/projectile1F.o(.text); + src/projectile/projectile20.o(.text); + src/projectile/projectile21.o(.text); + src/projectile/projectile22.o(.text); + src/projectile/projectile23.o(.text); + src/projectile/projectile24.o(.text); asm/playerItem/playerItem10.o(.text); asm/playerItem/playerItem13.o(.text); src/intro.o(.text); diff --git a/src/code_080A29BC.c b/src/code_080A29BC.c index a33d6124..c085a684 100644 --- a/src/code_080A29BC.c +++ b/src/code_080A29BC.c @@ -3,10 +3,6 @@ #include "room.h" #include "object.h" -void sub_080A29BC(Entity* parent) { // TODO this is CreateDust, why is it here again? Fogot to delete file? - CreateFx(parent, 2, 0); -} - void sub_080A29C8(s32 xOff, s32 yOff, u32 layer) { Entity* pEVar1; diff --git a/src/npc/npc5.c b/src/npc/npc5.c index b8e9d488..ec68f38b 100644 --- a/src/npc/npc5.c +++ b/src/npc/npc5.c @@ -343,65 +343,7 @@ u32 sub_08060F80(Entity* this) { return 0; } -NONMATCH("asm/non_matching/npc5/sub_08060FD0.inc", bool32 sub_08060FD0(Entity* this, u32 a, u32 b)) { - u32 sVar1; - u32 sVar2; - u32 uVar3; - s32 iVar4; - s32 iVar5; - s32 iVar6; - u32 r6; - u32 r7; - Entity* puVar9; - r7 = this->x.HALF.HI; - r6 = this->y.HALF.HI; - // asm("c"); - uVar3 = sub_080045DA(a - r7, b - r6); - // asm("b"); - r7 = r7 << 8; - r6 = r6 << 8; - // asm("a"); - sVar1 = gSineTable[uVar3]; - // asm("b"); - sVar2 = gSineTable[uVar3 + 0x40]; - asm("c"); - puVar9 = &gUnk_0200D654; - if (this->collisionLayer != 2) { - puVar9 = &gUnk_02027EB4; - } -code0: - // for(;;) { - asm("k"); - if (r7 < 0) { - r7 += 0xff; - } - // asm("i"); - if (r6 < 0) { - // asm("j"); - r6 += 0xff; - } - // asm("k"); - // asm("m"); - if (sub_080AE4CC(puVar9, r7 >> 8, r6 >> 8, 6) != 0) { - return FALSE; - } - if (!(((a - (r7 >> 8)) + 6 < 0xd) && ((b - (r6 >> 8)) + 6 < 0xd))) { - r7 += sVar1 * 6; - r6 -= sVar2 * -6; - // asm("q"); - // asm("r"); - } else { - return TRUE; - - // asm("p"); - } - goto code0; -// }; -code4: - // asm("l"); - return FALSE; -} -END_NONMATCH +ASM_FUNC("asm/non_matching/npc5/sub_08060FD0.inc", bool32 sub_08060FD0(Entity* this, u32 a, u32 b)) void sub_08061090(Entity* this, u32 a, u32 b) { s32 xDist; diff --git a/src/projectile/projectile0.c b/src/projectile/projectile0.c new file mode 100644 index 00000000..644d9686 --- /dev/null +++ b/src/projectile/projectile0.c @@ -0,0 +1,73 @@ +#include "entity.h" +#include "player.h" +#include "coord.h" + +void sub_080A7F80(Entity*); +void sub_080A7F9C(Entity*); + +extern u8 gUnk_081293B8[]; + +extern void (*const gUnk_081293CC[])(Entity*); + +extern Hitbox** gUnk_081293E0[]; + +extern Hitbox* gUnk_081293F0[]; + +extern Hitbox* gUnk_08129400[]; +extern Hitbox* gUnk_08129410[]; + +extern Hitbox* gUnk_08129420[]; + +void Projectile0(Entity* this) { + if (this->action == 0) { + this->action = 1; + sub_080A7F80(this); + if (this->type == 3) { + InitAnimationForceUpdate(this, this->parent->animationState + 0x18); + } + } + if ((this->parent == NULL) || (this->parent->currentHealth == 0)) { + DeleteThisEntity(); + } + if (((this->bitfield & 0x80) != 0) && (this->field_0x4c == &gPlayerEntity)) { + this->iframes = -0x2d; + } + this->bitfield = 0; + CopyPositionAndSpriteOffset(this->parent, this); + sub_080A7F9C(this); + if (this->type == 3) { + this->y.HALF.HI += 1; + UpdateAnimationSingleFrame(this); + } +} + +void sub_080A7F80(Entity* this) { + this->damageType = gUnk_081293B8[this->parent->type + this->type * 4]; +} + +void sub_080A7F9C(Entity* this) { + gUnk_081293CC[this->type](this); +} + +void sub_080A7FB4(Entity* this) { + Entity* parent = this->parent; + this->hitbox = gUnk_081293E0[parent->animationState][(parent->frames.all & 0xf) - 1]; +} + +void sub_080A7FD8(Entity* this) { + Entity* parent = this->parent; + this->hitbox = gUnk_081293F0[parent->animationState]; +} + +void sub_080A7FEC(Entity* this) { + if ((this->parent->frames.all & 0x10) != 0) { + this->hitbox = gUnk_08129410[this->parent->animationState]; + } else { + this->hitbox = gUnk_08129400[this->parent->animationState]; + } +} + +void sub_080A801C(Entity* this) { + Entity* parent = this->parent; + this->hitbox = gUnk_08129420[parent->animationState]; +} diff --git a/src/projectile/projectile1.c b/src/projectile/projectile1.c new file mode 100644 index 00000000..d300cd5f --- /dev/null +++ b/src/projectile/projectile1.c @@ -0,0 +1,91 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" + +extern void (*const gUnk_081295D0[])(Entity*); + +extern void (*const gUnk_081295E4[])(Entity*); + +void sub_080A8178(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); +extern void sub_08016AD2(Entity*); + +void Projectile1(Entity* this) { + gUnk_081295D0[GetNextFunction(this)](this); +} + +void sub_080A804C(Entity* this) { + gUnk_081295E4[this->action](this); +} + +void sub_080A8064(Entity* this) { + if (this->bitfield == 0x80) { + DeleteEntity(this); + } else { + this->direction = this->field_0x3e; + sub_080A8178(this); + } +} + +void sub_080A8088(Entity* this) { + this->action = 1; + this->actionDelay = 0x30; + this->field_0x20 = 0xa000; + InitializeAnimation(this, 0); +} + +void sub_080A80A0(Entity* this) { + GetNextFrame(this); + if (sub_080AF090(this) != 0) { + if (sub_080A7EB0(this) != 0) { + DeleteEntity(this); + } else { + sub_08016AD2(this); + if (--this->actionDelay == 0) { + this->action = 3; + } + } + } else { + sub_0800417E(this, this->collisions); + sub_080A8178(this); + sub_08016AD2(this); + } +} + +void sub_080A80F4(Entity* this) { + sub_0806F69C(this); + GetNextFrame(this); + if (sub_08003FC4(this, 0x1800) == 0) { + DeleteEntity(this); + } +} + +void sub_080A8118(Entity* this) { + GetNextFrame(this); + sub_080AF090(this); + switch (sub_080044EC(this, 0x2800)) { + case 0: + DeleteEntity(this); + return; + case 1: + this->flags &= 0x7f; + this->speed = 0x120; + if (sub_0800442E(this) != 0) { + return; + } + + break; + } + if ((this->flags & 0x80) == 0) { + this->spriteSettings.b.draw ^= 1; + } +} + +void sub_080A8178(Entity* this) { + this->action = 2; + this->flags &= 0x7f; + this->speed = 0x40; + this->field_0x20 = 0x14000; +} diff --git a/src/projectile/projectile10.c b/src/projectile/projectile10.c new file mode 100644 index 00000000..d93f9e0c --- /dev/null +++ b/src/projectile/projectile10.c @@ -0,0 +1,188 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" + +extern void (*const gUnk_08129AE0[])(Entity*); + +extern void (*const gUnk_08129AF8[])(Entity*); + +extern void (*const gUnk_08129B08[])(Entity*); +void sub_080A9BA8(Entity*); + +void sub_080A9BD0(Entity*); +void sub_080A9C34(Entity*); + +void sub_080A9C50(Entity*); + +typedef struct { + s8 unk_0; + s8 unk_1; + s8 unk_2; +} PACKED struct_08129B20; +extern struct_08129B20 gUnk_08129B20[]; + +extern u8 gUnk_08129B50[]; + +void Projectile10(Entity* this) { + gUnk_08129AE0[GetNextFunction(this)](this); +} + +void sub_080A9A1C(Entity* this) { + gUnk_08129AF8[this->action](this); +} + +void sub_080A9A34(Entity* this) { + if (this->bitfield == 0x9d) { + this->action = 3; + this->flags &= 0x7f; + this->field_0x20 = 0x2a000; + this->spritePriority.b1 = 1; + } +} + +void sub_080A9A64(Entity* this) { + if ((this->subAction < 3) && (sub_0806F520(this) == 0)) { + sub_080A9BA8(this); + } + gUnk_08129B08[this->subAction](this); +} + +void sub_080A9A94(Entity* this) { + this->subAction = 2; + this->height.HALF.HI = 0xfffe; +} + +void sub_080A9AA4(Entity* this) { + sub_0806F4E8(this); +} + +void sub_080A9AAC(Entity* this) { + sub_0806F3E4(this); +} + +void sub_080A9AB4(Entity* this) { + this->flags &= 0x7f; +} + +void nullsub_128(Entity* this) { +} + +void sub_080A9AC4(Entity* this) { + sub_080A9BA8(this); +} + +void sub_080A9ACC(Entity* this) { + switch (this->type2) { + case 1: + this->action = 2; + this->flags |= 0x80; + break; + case 2: + this->action = 3; + this->field_0x20 = 0x2a000; + this->spritePriority.b1 = 1; + break; + default: + this->action = 1; + break; + } + + this->field_0x1c = 2; + if (this->type == 0) { + InitializeAnimation(this, 5); + } else { + this->frameIndex = 0; + } +} + +void sub_080A9B24(Entity* this) { + if (this->parent->next == NULL) { + sub_080A9BA8(this); + } + if (this->parent->action == 0xb) { + sub_080A9BD0(this); + } else { + this->action = 2; + sub_080A9C34(this); + } +} + +void sub_080A9B54(Entity* this) { + if (this->parent->next == NULL) { + sub_080A9BA8(this); + } + if (this->parent->action == 9) { + sub_080A9C34(this); + } else { + sub_080A9C50(this); + } +} + +void sub_080A9B80(Entity* this) { + if (this->field_0x20 < 0) { + this->spriteSettings.b.flipY = 1; + } + if (sub_08003FC4(this, 0x2000) == 0) { + sub_080A9BA8(this); + } +} + +void sub_080A9BA8(Entity* this) { + if (this->type == 0) { + CreateFx(this, 5, 0); + } else { + CreateFx(this, 0x3c, 0); + } + DeleteThisEntity(); +} + +void sub_080A9BD0(Entity* this) { + Entity* parent; + s32 tmp; + u32 tmp2; + struct_08129B20* entry; + + parent = this->parent; + switch (parent->animationState) { + case 0: + tmp = parent->frameIndex - 0x39; + break; + case 1: + case 3: + tmp = parent->frameIndex - 0x3d; + break; + case 2: + tmp = parent->frameIndex - 0x41; + break; + } + entry = &gUnk_08129B20[tmp + parent->animationState * 4]; + sub_0806FA90(parent, this, entry->unk_0, entry->unk_1); + this->height.HALF.HI = entry->unk_2 + this->height.HALF.HI; +} + +void sub_080A9C34(Entity* this) { + sub_0806FA90(this->parent, this, 0, 1); + this->spriteOffsetY -= 0xe; +} + +void sub_080A9C50(Entity* this) { + Entity* parent; + u32 tmp; + + parent = this->parent; + switch (parent->animationState) { + case 0: + tmp = 0xffffffd9 + parent->frameIndex; + break; + case 1: + case 3: + tmp = parent->frameIndex - 0x2d; + break; + case 2: + tmp = parent->frameIndex - 0x33; + break; + } + + sub_0806FA90(parent, this, 0, 1); + this->spriteOffsetY += gUnk_08129B50[tmp]; +} diff --git a/src/projectile/projectile11.c b/src/projectile/projectile11.c new file mode 100644 index 00000000..a3b62c6e --- /dev/null +++ b/src/projectile/projectile11.c @@ -0,0 +1,66 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" +#include "player.h" + +extern void (*const gUnk_08129B58[])(Entity*); + +extern void (*const gUnk_08129B70[])(Entity*); + +extern void (*const gUnk_08129B78[])(Entity*); + +extern void sub_0800449C(Entity*, u32); +extern void sub_08079D84(void); + +void Projectile11(Entity* this) { + if (this->parent->next == NULL) { + DeleteThisEntity(); + } + gUnk_08129B58[GetNextFunction(this)](this); +} + +void sub_080A9CD4(Entity* this) { + gUnk_08129B70[this->action](this); +} + +void nullsub_539(Entity* this) { +} + +void sub_080A9CF0(Entity* this) { + if (sub_0806F520() == 0) { + CreateFx(this, 2, 0); + DeleteThisEntity(); + } + gUnk_08129B78[this->subAction](this); +} + +void sub_080A9D20(Entity* this) { + this->subAction = 2; +} + +void nullsub_540(Entity* this) { +} + +void sub_080A9D2C(Entity* this) { + if (sub_0806F3E4(this) != 0) { + if (this->damageType == 0xa6) { + ModHealth(-2); + sub_0800449C(&gPlayerEntity, 0x7a); + sub_08079D84(); + } + CreateFx(this, 2, 0); + DeleteThisEntity(); + } +} + +void sub_080A9D6C(Entity* this) { + this->action = 1; + this->animationState = this->parent->animationState; + InitAnimationForceUpdate(this, this->animationState); +} + +void sub_080A9D80(Entity* this) { + PositionRelative(this->parent, this, 0, -0x10000); + this->height.HALF.HI = 0xfffe; + UpdateAnimationSingleFrame(this); +} diff --git a/src/projectile/projectile12.c b/src/projectile/projectile12.c new file mode 100644 index 00000000..98c2d546 --- /dev/null +++ b/src/projectile/projectile12.c @@ -0,0 +1,45 @@ +#include "entity.h" +#include "enemy.h" + +extern void (*const gUnk_08129BEC[])(Entity*); + +extern void (*const gUnk_08129C00[])(Entity*); + +void sub_080A9DC0(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); + +void Projectile12(Entity* this) { + gUnk_08129BEC[GetNextFunction(this)](this); +} + +void sub_080A9DC0(Entity* this) { + gUnk_08129C00[this->action](this); +} + +void sub_080A9DD8(Entity* this) { + if ((this->currentHealth == 0) || (this->bitfield == 0x80)) { + DeleteThisEntity(); + } + sub_080A9DC0(this); +} + +void sub_080A9DFC(Entity* this) { + this->action = 1; + this->actionDelay = 0xb4; + this->currentHealth = 1; + InitializeAnimation(this, 0); +} + +void sub_080A9E14(Entity* this) { + GetNextFrame(this); + sub_080AF090(this); + if ((this->collisions != 0) || (--this->actionDelay == 0)) { + CreateFx(this, 0x4f, 0); + DeleteThisEntity(); + } + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } +} diff --git a/src/projectile/projectile13.c b/src/projectile/projectile13.c new file mode 100644 index 00000000..434b3902 --- /dev/null +++ b/src/projectile/projectile13.c @@ -0,0 +1,338 @@ +#include "entity.h" +#include "enemy.h" +#include "coord.h" +#include "functions.h" +#include "audio.h" +#include "random.h" +#include "game.h" + +extern void (*const gUnk_08129C7C[])(Entity*); + +extern void (*const gUnk_08129C90[])(Entity*); +void sub_080AA1D8(Entity*); + +void sub_080AA270(Entity*); + +bool32 sub_080AA2E0(Entity*); +void sub_080AA320(Entity*); + +void sub_080AA3E0(Entity*, u32); +bool32 sub_080AA374(Entity*); + +extern u8 gUnk_08129CA4[]; +extern Hitbox* gUnk_08129CF4[]; +extern u8 gUnk_08129CAC[]; + +extern Entity* sub_08049DF4(u32); +extern u32 sub_08049F1C(Entity*, Entity*, u32); + +extern s32 sub_080AF090(Entity*); + +extern Hitbox gUnk_080FD150; + +extern s8 gUnk_08129D14[]; +extern u32 sub_0806F824(Entity*, Entity*, u32, u32); + +void Projectile13(Entity* this) { + Entity* entity; + + entity = this->attachedEntity; + if (entity == NULL) { + entity = this->parent; + } + if ((entity->field_0x43 == 0) && ((this->flags & 0x80) == 0)) { + this->flags |= 0x80; + } + gUnk_08129C7C[GetNextFunction(this)](this); +} + +void sub_080A9E94(Entity* this) { + if (this->action < 3) { + sub_080AA1D8(this); + } + gUnk_08129C90[this->action](this); +} + +void sub_080A9EBC(Entity* this) { + Entity* parent; + + if ((this->bitfield & 0x80) != 0) { + switch (this->action) { + case 4: + this->field_0xf = 0; + ModHealth(-2); + sub_080AF090(this); + UpdateAnimationSingleFrame(this); + break; + case 3: + if (this->field_0x43 != 0) { + this->field_0x82.HALF.LO = 2; + this->animationState = 0xff; + sub_080AA270(this); + this->field_0xf = 0x20; + } + break; + default: + parent = this->parent; + parent->iframes = this->iframes; + parent->field_0x3e = this->field_0x3e; + parent->field_0x42 = this->field_0x42; + if (this->action == 1) { + sub_080AA320(this); + } + break; + } + this->field_0x42 = 0; + } +} + +void sub_080A9F50(Entity* this) { + this->action = 1; + this->field_0x80.HWORD = 0; + this->animationState = 0xff; + this->field_0x82.HALF.LO = 0; + this->spritePriority.b0 = 4; + sub_0806FAD8(this, this->parent); + sub_080AA270(this); +} + +void sub_080A9F90(Entity* this) { + if (this->field_0x80.HWORD != 0) { + this->field_0x80.HWORD -= 1; + } else { + if (--this->field_0xf == 0) { + sub_080AA270(this); + } else { + if (sub_080AA2E0(this) != 0) { + sub_080AA320(this); + } + } + } + UpdateAnimationSingleFrame(this); +} + +void sub_080A9FD0(Entity* this) { + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 0x40) != 0) { + this->frames.all &= 0xbf; + EnqueueSFX(SFX_15D); + } + this->field_0x78.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI); + if (GetTileType(this->field_0x78.HWORD, this->collisionLayer) == 0x4000) { + SetTile(0x4005, this->field_0x78.HWORD, this->collisionLayer); + } +} + +void sub_080AA044(Entity* this) { + u32 uVar1; + s8* tmp; + Entity* entity; + + entity = this->attachedEntity; + if (entity == NULL) { + DeleteThisEntity(); + } + if (entity->next == NULL) { + DeleteThisEntity(); + } else { + tmp = GetSpriteSubEntryOffsetDataPointer((u16)entity->spriteIndex, entity->frameIndex); + if ((entity->animationState & 4) != 0) { + PositionRelative(entity, this, -tmp[0] * 0x10000, tmp[1] << 0x10); + } else { + PositionRelative(entity, this, tmp[0] << 0x10, tmp[1] << 0x10); + } + } + if (entity->field_0x43 == 0) { + if (this->field_0xf != 0) { + this->field_0xf -= 1; + } else { + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 4; + this->field_0x82.HALF.LO = 3; + this->field_0xf = 0x40; + uVar1 = entity->animationState; + this->direction = uVar1 << 2; + this->animationState = uVar1 << 0x1a >> 0x1a; + this->hitbox = &gUnk_080FD150; + if (CheckIsDungeon() != 0) { + this->spriteOrientation.flipY = 1; + } + sub_080AA3E0(this, 0); + } + } + } +} + +void sub_080AA110(Entity* this) { + s32 iVar1; + u32 uVar2; + Entity* entity; + + entity = this->attachedEntity; + if (entity != NULL) { + if (entity->next == NULL) { + this->attachedEntity = NULL; + } + if (this->field_0xf != 0) { + this->field_0xf -= 1; + } else { + if (sub_080AA374(this) != 0) { + if (entity->currentHealth == 0) { + DeleteThisEntity(); + } + EnqueueSFX(0xf2); + this->action = 1; + this->animationState = 0xff; + this->field_0x82.HALF.LO = 0; + this->actionDelay = 0; + this->field_0x80.HWORD = 0x20; + this->spriteOrientation.flipY = 2; + this->parent = this->attachedEntity; + this->attachedEntity = NULL; + sub_080AA270(this); + entity = this->parent; + entity->action = 1; + entity->direction = entity->animationState << 2; + entity->speed = 0; + entity->field_0x82.HALF.LO = 1; + entity->actionDelay = 0; + entity->field_0xf = 0x78; + entity->field_0x80.HWORD = 0x20; + sub_080AA3E0(entity, 1); + } + } + } else { + if (sub_080040A8(this) == 0) { + DeleteThisEntity(); + } + } + sub_0806F69C(this); + UpdateAnimationSingleFrame(this); +} + +void sub_080AA1D8(Entity* this) { + s8* tmp; + Entity* parent; + + parent = this->parent; + if (parent != NULL) { + if (parent->next == NULL) { + DeleteThisEntity(); + } + if ((parent->frameIndex & 0x20) == 0) { + tmp = GetSpriteSubEntryOffsetDataPointer((u16)parent->spriteIndex, parent->frameIndex); + if ((parent->animationState & 4) != 0) { + PositionRelative(parent, this, -tmp[0] * 0x10000, tmp[1] << 0x10); + } else { + PositionRelative(parent, this, tmp[0] << 0x10, tmp[1] << 0x10); + } + if (parent->field_0x43 != 0) { + if ((this->flags & 0x80) != 0) { + this->flags &= 0x7f; + } + } else { + if ((this->flags & 0x80) == 0) { + this->flags |= 0x80; + } + } + } + } else { + DeleteThisEntity(); + } +} + +void sub_080AA270(Entity* this) { + u32 animationState; + Entity* parent; + parent = this->parent; + this->field_0xf = gUnk_08129CA4[Random() & 7]; + animationState = parent->animationState; + if (this->animationState == 0xff) { + this->animationState = animationState; + this->hitbox = gUnk_08129CF4[animationState]; + sub_080AA3E0(this, 0); + } else { + animationState = (gUnk_08129CAC[Random() & 7] + animationState) & 7; + if (animationState != this->animationState) { + this->animationState = animationState; + this->hitbox = gUnk_08129CF4[animationState]; + sub_080AA3E0(this, 0); + } + } +} + +bool32 sub_080AA2E0(Entity* this) { + Entity* entity; + u32 a; + u32 b; + + entity = sub_08049DF4(0); + if (entity == NULL) { + return FALSE; + } + a = GetFacingDirection(this, entity); + b = this->animationState * 4; + if (Direction8Round(a + 4) != Direction8Round(b + 4)) { + return FALSE; + } + if (sub_08049F1C(this, entity, 0x40) == 0) { + return FALSE; + } + return TRUE; +} + +NONMATCH("asm/non_matching/projectile13/sub_080AA320.inc", void sub_080AA320(Entity* this)) { + u32 uVar2; + Entity* parent; + + parent = this->parent; + this->action = 2; + this->field_0x82.HALF.LO = 1; + this->field_0xf = 0; + parent->action = 2; + parent->field_0xf = 0x30; + parent->field_0x80.HWORD = 0x50; + parent->speed = 0; + parent->direction = sub_08049F84(parent, 0); + // TODO regalloc + uVar2 = parent->direction + 4; + this->animationState = Direction8Round(uVar2) >> 2; + parent->animationState = DirectionRound(uVar2) >> 2; + sub_080AA3E0(parent, 1); + sub_080AA1D8(this); +} +END_NONMATCH + +NONMATCH("asm/non_matching/projectile13/sub_080AA374.inc", bool32 sub_080AA374(Entity* this)) { + u32 uVar1; + u32 animationState; + Entity* entity; + bool32 result; + + result = FALSE; + if ((this->attachedEntity != NULL) && (this->attachedEntity->next != NULL)) { + // TODO regalloc + animationState = this->attachedEntity->animationState; + uVar1 = + sub_0806F824(this, this->attachedEntity, gUnk_08129D14[animationState], gUnk_08129D14[animationState + 1]); + if (sub_0806FCB8(this, this->attachedEntity->x.HALF.HI + gUnk_08129D14[animationState], + this->attachedEntity->y.HALF.HI + gUnk_08129D14[animationState + 1], 8) != 0) { + result = TRUE; + } else { + sub_08004596(this, uVar1); + } + } + return result; +} +END_NONMATCH + +void sub_080AA3E0(Entity* this, u32 param) { + u32 tmp; + + tmp = this->animationState | this->field_0x82.HALF.LO << 3; + if (param != 0) { + tmp >>= 1; + } + InitAnimationForceUpdate(this, tmp); +} diff --git a/src/projectile/projectile14.c b/src/projectile/projectile14.c new file mode 100644 index 00000000..0284e5d0 --- /dev/null +++ b/src/projectile/projectile14.c @@ -0,0 +1,150 @@ +#include "entity.h" +#include "enemy.h" +#include "coord.h" +#include "functions.h" +#include "flags.h" +#include "utils.h" + +extern void (*const gUnk_08129FB8[])(Entity*); + +void sub_080AA494(Entity*); +void sub_080AA534(Entity*); + +void sub_080AA464(Entity*); + +void sub_080AA544(Entity*); + +extern u16 gUnk_08129FD0[]; +void sub_080AA654(Entity*, u32); + +extern s8 gUnk_08129FF8[]; +extern u16 gUnk_08129FE4[]; +extern u32 sub_080002C8(u16, u8); + +extern u32 gUnk_0812A004; +extern Entity* LoadRoomEntity(EntityData*); + +void Projectile14(Entity* this) { + gUnk_08129FB8[GetNextFunction(this)](this); +} + +void sub_080AA41C(Entity* this) { + if (this->action == 0) { + this->action = 1; + this->frameIndex = this->type; + this->field_0x1c = 1; + this->speed = this->field_0x86.HWORD; + if (this->type == 0) { + sub_080AA494(this); + } else { + sub_080AA534(this); + } + } +} + +void sub_080AA450(Entity* this) { + if (this->bitfield == 0x96) { + sub_080AA464(this); + } +} + +void sub_080AA464(Entity* this) { + Entity* entity; + + if (this->type == 0) { + sub_080AA544(this); + } + entity = CreateObject(0x21, 3, 0); + if (entity != NULL) { + CopyPosition(this, entity); + } + DeleteEntity(this); +} + +void sub_080AA494(Entity* this) { + u32 tileType; + u16* iterator; + u32 index; + + index = 0; + tileType = GetTileTypeByEntity(this); + iterator = gUnk_08129FD0; + while (*iterator != 0) { + if (*(iterator++) == tileType) { + break; + } + index += 1; + } + if (CheckFlags((u16)this->speed) != 0) { + if (index == 4) { + sub_080AA654(this, TILE(this->x.HALF.HI, this->y.HALF.HI)); + } + DeleteThisEntity(); + } + this->type2 = index; + this->spritePriority.b0 = 7; + SetTile(0x4068, TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); +} + +void sub_080AA534(Entity* this) { + this->collisionLayer = 3; + UpdateSpriteForCollisionLayer(this); +} + +NONMATCH("asm/non_matching/projectile14/sub_080AA544.inc", void sub_080AA544(Entity* this)) { + u8* pbVar1; + s32 iVar2; + u32 uVar3; + s32 iVar4; + u16* puVar5; + u32 param; + s8* tmp; + + if (this->type2 < 9) { + tmp = gUnk_08129FF8; + param = TILE(this->x.HALF.HI, this->y.HALF.HI) + tmp[this->type2]; + uVar3 = 0; + iVar4 = 0; + do { + iVar2 = sub_080002C8((param - tmp[uVar3]) & 0xffff, this->collisionLayer); + if (iVar2 == 0x3e) { + iVar4 += 1; + } + uVar3 += 1; + } while (uVar3 < 9); + + if (iVar4 == 8) { + uVar3 = 0; + puVar5 = gUnk_08129FD0; + do { + sub_0807B7D8((u32)*puVar5, param - tmp[uVar3], this->collisionLayer); + puVar5 += 1; + uVar3 += 1; + } while (uVar3 < 9); + sub_080AA654(this, param); + SetFlag((u16)this->speed); + } else { + sub_0807B7D8(gUnk_08129FE4[this->type2], + param - + // TODO this array access is wrong + *((s8*)gUnk_08129FE4 + this->type2), + this->collisionLayer); + } + } else { + sub_0807BA8C(TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); + SetFlag((u16)this->speed); + } +} +END_NONMATCH + +void sub_080AA654(Entity* this, u32 param) { + EntityData* entityData; + entityData = (EntityData*)&this->field_0x68; + + MemCopy(&gUnk_0812A004, entityData, 0x10); + + entityData->xPos = ((u16)param & 0x3f) * 0x10 + 8; + entityData->yPos = ((param & 0xfc0) >> 2) + 8; + + LoadRoomEntity(entityData); +} diff --git a/src/projectile/projectile15.c b/src/projectile/projectile15.c new file mode 100644 index 00000000..0130e3a7 --- /dev/null +++ b/src/projectile/projectile15.c @@ -0,0 +1,186 @@ +#include "entity.h" +#include "enemy.h" +#include "audio.h" +#include "functions.h" +#include "object.h" +#include "flags.h" + +extern void (*const gUnk_0812A014[])(Entity*); + +extern void (*const gUnk_0812A02C[])(Entity*); + +extern u8 gUnk_0812A03C[]; + +void sub_080AA6C0(Entity*); +void sub_080AAAA8(Entity*); + +extern Hitbox* gUnk_0812A04C[]; +void sub_080AAA68(Entity*); + +void sub_080AA9E0(Entity*); + +extern void (*const gUnk_0812A05C[])(Entity*); +extern void sub_0806FBB4(Entity*); + +extern u16 gUnk_0812A084[]; + +extern u32 sub_080002D4(s32, s32, u32); +extern s8 gUnk_0812A064[]; +extern s8 gUnk_0812A06C[]; + +void Projectile15(Entity* this) { + gUnk_0812A014[GetNextFunction(this)](this); +} + +void sub_080AA6A8(Entity* this) { + gUnk_0812A02C[this->action](this); +} + +void sub_080AA6C0(Entity* this) { + Entity* object; + + if (this->bitfield == 0x87) { + this->action = 3; + this->actionDelay = 0x5a; + this->flags &= 0x7f; + InitAnimationForceUpdate(this, this->type + 0x10); + object = CreateObject(OBJECT_2A, 3, 0); + if (object != NULL) { + object->type2 = 0x5a; + object->spritePriority.b0 = 3; + object->spriteOffsetX = gUnk_0812A03C[this->type * 4]; + object->spriteOffsetY = gUnk_0812A03C[this->type * 4 + 1]; + object->parent = this; + } + object = CreateObject(OBJECT_2A, 3, 0); + if (object != NULL) { + object->type2 = 0x5a; + object->spritePriority.b0 = 3; + object->spriteOffsetX = gUnk_0812A03C[this->type * 4 + 2]; + object->spriteOffsetY = gUnk_0812A03C[this->type * 4 + 3]; + object->parent = this; + } + } else { + InitAnimationForceUpdate(this, this->type + 0x10); + EnqueueSFX(SFX_101); + } +} + +void sub_080AA78C(Entity* this) { + u32 animationState; + + if (this->subAction == 0) { + animationState = (gPlayerEntity.animationState >> 1); + if (animationState != this->type) { + this->field_0x3a &= 0xfb; + if ((animationState ^ 2) != this->type) { + return; + } + this->iframes = 0xe2; + sub_080AA6C0(this); + return; + } + this->subAction = 1; + InitAnimationForceUpdate(this, animationState + 8); + } + if (sub_0806F520(this) != 0) { + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 0x10) != 0) { + this->frames.all &= 0xef; + EnqueueSFX(SFX_100); + } + if ((this->frames.all & 0x80) != 0) { + sub_080AAAA8(this); + } + } else { + if ((this->frames.all & 1) != 0) { + sub_080AAAA8(this); + } else { + InitAnimationForceUpdate(this, this->type + 0x10); + } + } +} + +void sub_080AA834(Entity* this) { + if (CheckFlags(this->field_0x86.HWORD) != 0) { + DeleteThisEntity(); + } + this->action = 1; + this->field_0x1c = 1; + this->field_0x16 = 1; + this->hitbox = gUnk_0812A04C[this->type]; + this->cutsceneBeh.HALF.LO = 0; + InitAnimationForceUpdate(this, this->type); + sub_080AAA68(this); +} + +void sub_080AA878(Entity* this) { + if ((this->frames.all & 0x80) == 0) { + UpdateAnimationSingleFrame(this); + } + sub_080AA9E0(this); +} + +void sub_080AA898(Entity* this) { + sub_0806FBB4(this); + gUnk_0812A05C[this->subAction - 5](this); +} + +void sub_080AA8B8(Entity* this) { + u32 tmp; + u16 x; + u16 y; + Entity* entity; + + entity = &gPlayerEntity; + + if (this->cutsceneBeh.HALF.LO == 0) { + tmp = this->type; + if (tmp * 2 - entity->animationState == 0) { + x = gUnk_0812A064[tmp * 2] + this->x.HALF.HI; + y = gUnk_0812A064[tmp * 2 + 1] + this->y.HALF.HI; + if (sub_080002D4(x, y, entity->collisionLayer) == 0) { + entity->x.HALF.HI = x; + entity->y.HALF.HI = y; + } + } + this->cutsceneBeh.HALF.LO = 1; + this->field_0xf = 2; + InitAnimationForceUpdate(this, this->type + 4); + } + if ((entity->animationState >> 1 == this->type) && (gPlayerState.field_0xa8 == 0x1a) && + ((gPlayerState.heldObject & 2) != 0) && ((gPlayerEntity.frames.all & 2) != 0) && + ((this->frames.all & 0x80) == 0)) { + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 1) != 0) { + entity->x.HALF.HI = gUnk_0812A06C[entity->animationState] + entity->x.HALF.HI; + entity->y.HALF.HI = gUnk_0812A06C[entity->animationState + 1] + entity->y.HALF.HI; + EnqueueSFX(0x100); + } + } +} + +void sub_080AA9AC(Entity* this) { + this->action = 1; + this->cutsceneBeh.HALF.LO = 0; + InitAnimationForceUpdate(this, this->type + 0xc); +} + +void sub_080AA9C4(Entity* this) { + GetNextFrame(this); + if (--this->actionDelay == 0) { + sub_080AAAA8(this); + } +} + +ASM_FUNC("asm/non_matching/projectile15/sub_080AA9E0.inc", void sub_080AA9E0(Entity* this)) + +void sub_080AAA68(Entity* this) { + SetTile(gUnk_0812A084[this->type], TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); +} + +void sub_080AAAA8(Entity* this) { + SetFlag(this->field_0x86.HWORD); + sub_0807BA8C(TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); + DeleteThisEntity(); +} diff --git a/src/projectile/projectile16.c b/src/projectile/projectile16.c new file mode 100644 index 00000000..93208ac9 --- /dev/null +++ b/src/projectile/projectile16.c @@ -0,0 +1,53 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" + +extern void (*const gUnk_0812A3C0[])(Entity*); + +extern void (*const gUnk_0812A3D4[])(Entity*); + +extern s32 sub_080AF090(Entity*); + +extern s32 sub_080A7EB0(Entity*); + +void Projectile16(Entity* this) { + gUnk_0812A3C0[GetNextFunction(this)](this); +} + +void sub_080AAB04(Entity* this) { + gUnk_0812A3D4[this->action](this); +} + +void sub_080AAB1C(Entity* this) { + DeleteThisEntity(); +} + +void sub_080AAB24(Entity* this) { + this->action = 1; + this->actionDelay = 0x1e; + InitializeAnimation(this, 0); +} + +void sub_080AAB38(Entity* this) { + GetNextFrame(this); + if (this->actionDelay != 0) { + this->actionDelay -= 1; + } else { + if (sub_080AF090(this) == 0) { + sub_0806F69C(this); + } else { + this->action = 2; + } + } +} + +void sub_080AAB64(Entity* this) { + GetNextFrame(this); + sub_080AF090(this); + if (this->collisions != 0) { + DeleteThisEntity(); + } + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } +} diff --git a/src/projectile/projectile17.c b/src/projectile/projectile17.c new file mode 100644 index 00000000..47a0cb1b --- /dev/null +++ b/src/projectile/projectile17.c @@ -0,0 +1,29 @@ + +#include "entity.h" +#include "enemy.h" +#include "coord.h" + +void sub_080AABB0(Entity*); + +void Projectile17(Entity* this) { + if (this->action == 0) { + this->action = 1; + InitializeAnimation(this, 0); + } + sub_080AABB0(this); + GetNextFrame(this); +} + +void sub_080AABB0(Entity* this) { + u32 factor; + const s16* tmp; + Entity* parent; + + parent = this->parent; + CopyPosition(parent, this); + + tmp = &gSineTable[parent->animationState]; + factor = this->actionDelay << 8; + this->x.WORD += tmp[0] * factor; + this->y.WORD -= tmp[0x40] * factor; +} diff --git a/src/projectile/projectile18.c b/src/projectile/projectile18.c new file mode 100644 index 00000000..373126a8 --- /dev/null +++ b/src/projectile/projectile18.c @@ -0,0 +1,206 @@ +#include "entity.h" +#include "enemy.h" +#include "coord.h" +#include "player.h" +#include "audio.h" +#include "functions.h" +#include "random.h" + +extern void (*const gUnk_0812A418[])(Entity*); + +extern void (*const gUnk_0812A430[])(Entity*); + +extern void (*const gUnk_0812A440[])(Entity*); + +void sub_080AAF74(Entity*); +void sub_080AB034(Entity*); + +extern void sub_0800449C(Entity*, u32); + +void Projectile18(Entity* this) { + gUnk_0812A418[GetNextFunction(this)](this); +} + +void sub_080AAC0C(Entity* this) { + gUnk_0812A430[this->action](this); + if ((this->type2 == 0) && (--this->cutsceneBeh.HWORD == 0)) { + this->currentHealth = 0; + } +} + +void sub_080AAC44(Entity* this) { + if ((this->bitfield & 0x80) != 0) { + if (this->type2 == 0) { + if ((this->bitfield & 0x3f) == 0) { + this->action = 2; + this->flags &= 0x7f; + if (this->type == 0) { + ResolveEntityOnTop(&gPlayerEntity, this); + } else { + ResolveEntityOnTop(this->parent, this); + } + ResetPlayer(); + gPlayerState.field_0x1a[0] |= 0x80; + gPlayerState.field_0xa |= 0x80; + } + if (gPlayerEntity.currentHealth == 0) { + this->currentHealth = 0; + } + } else { + SoundReq(SFX_ITEM_GLOVES_KNOCKBACK); + CopyPosition(this->parent, this); + } + } + if (this->field_0x42 != 0) { + this->field_0x42 = 0; + } +} + +ASM_FUNC("asm/non_matching/projectile18/sub_080AACE0.inc", void sub_080AACE0(Entity* this)) + +void sub_080AAD70(Entity* this) { + if (sub_0806F520() == 0) { + this->currentHealth = 0; + } + gUnk_0812A440[this->subAction](this); +} + +void sub_080AAD98(Entity* this) { + this->subAction = 2; +} + +void nullsub_541(Entity* this) { +} + +void sub_080AADA4(Entity* this) { + if (sub_0806F3E4(this) != 0) { + this->currentHealth = 0; + } +} + +void sub_080AADBC(Entity* this) { + Entity* entity; + + if (this->type2 == 0) { + this->action = 1; + } else { + this->action = 3; + this->damageType = 0x2c; + ResolveEntityOnTop(this->parent, this); + } + if (this->type == 0) { + this->actionDelay = 0; + this->field_0xf = 4; + this->field_0x80.HALF.LO = 0; + this->field_0x80.HALF.HI = 0; + this->currentHealth = 0x10; + this->height.HALF.HI += 4; + this->spriteOrientation.flipY = 1; + this->spriteRendering.b3 = 1; + this->spritePriority.b0 = 4; + this->direction = GetFacingDirection(this, &gPlayerEntity); + this->field_0x86.HALF.LO = 0; + this->cutsceneBeh.HWORD = 300; + entity = sub_080A7EE0(0x18); + if (entity != NULL) { + entity->type = 1; + entity->type2 = this->type2; + entity->parent = this; + } + } else { + ResolveEntityOnTop(this->parent, this); + this->flags &= 0x7f; + CopyPosition(this->parent, this); + } + InitializeAnimation(this, this->type); +} + +void sub_080AAE88(Entity* this) { + u8 bVar1; + u32 uVar2; + + switch (this->type) { + case 0: + if (--this->field_0xf == 0) { + this->field_0xf = 4; + uVar2 = GetFacingDirection(this, &gPlayerEntity); + sub_08004596(this, uVar2); + } + sub_0806F69C(this); + break; + case 1: + if ((this->parent == NULL) || (this->parent->next == NULL)) { + DeleteThisEntity(); + } + case 2: + if (this->parent->spriteSettings.b.draw == 0) { + DeleteThisEntity(); + } + CopyPosition(this->parent, this); + break; + } + sub_080AB034(this); +} + +void sub_080AAF00(Entity* this) { + sub_080AAF74(this); + sub_080AB034(this); +} + +void sub_080AAF10(Entity* this) { + CopyPosition(this->parent, this); + sub_080AB034(this); + this->spriteSettings.b.draw = this->parent->spriteSettings.b.draw; + if (this->type != 0) { + this->currentHealth = this->parent->currentHealth; + } + if (this->parent->action == 2) { + if ((this->flags & 0x80) != 0) { + this->flags &= 0x7f; + } + } else { + if ((this->flags & 0x80) == 0) { + this->flags |= 0x80; + } + } +} + +void sub_080AAF74(Entity* this) { + if (sub_0807953C() != 0) { + this->field_0x80.HALF.LO += (Random() & 1) + 1; + } + if (++this->actionDelay == 0x3c) { + this->actionDelay = 0x1e; + gPlayerEntity.iframes = 8; + ModHealth(-4); + sub_0800449C(&gPlayerEntity, 0x7a); + if (gPlayerEntity.currentHealth == 0) { + this->currentHealth = 0; + } + } + if (!((this->field_0x80.HALF.LO < 0x31) && (this->field_0x80.HALF.HI != 0x10))) { + this->action = 1; + this->field_0x80.HALF.LO = 0; + gPlayerEntity.iframes = 0xf0; + gPlayerState.field_0x1a[0] = 0; + this->currentHealth = 0; + } else { + ResetPlayer(); + gPlayerState.field_0x1a[0] |= 0x80; + gPlayerState.field_0xa |= 0x80; + CopyPosition(&gPlayerEntity, this); + this->height.HALF.HI = gPlayerEntity.height.HALF.HI - 4; + } +} + +void sub_080AB034(Entity* this) { + u32 tmp; + + GetNextFrame(this); + if ((this->frameSpriteSettings & 1) != 0) { + tmp = 0; + } else { + tmp = 0x139; + } + sub_0801D2B4(this, tmp); +} diff --git a/src/projectile/projectile19.c b/src/projectile/projectile19.c new file mode 100644 index 00000000..6106a5d8 --- /dev/null +++ b/src/projectile/projectile19.c @@ -0,0 +1,78 @@ +#include "entity.h" +#include "functions.h" + +extern void (*const gUnk_0812A494[])(Entity*); + +extern u8 gEntCount; + +bool32 sub_080AB12C(Entity* this); + +void Projectile19(Entity* this) { + gUnk_0812A494[this->type](this); +} + +void sub_080AB074(Entity* this) { + Entity* parent; + const s16* tmp; + u32 factor; + + parent = this->parent; + if (parent->next == NULL) { + DeleteThisEntity(); + } + if (this->action == 0) { + if (sub_080AB12C(this) == FALSE) { + return; + } + this->action = 1; + this->frameIndex = 0; + this->spritePriority.b0 = 3; + } + sub_0806FA90(this->parent, this, 0, 0xfffffff6 + -(s8)parent->field_0x7c.BYTES.byte3); + + this->x.WORD += gSineTable[parent->field_0x7c.BYTES.byte0] * (parent->field_0x7c.BYTES.byte2 << 8); + this->y.WORD -= gSineTable[parent->field_0x7c.BYTES.byte0 + 0x40] * (parent->field_0x7c.BYTES.byte2 << 8); + + this->height.HALF.HI += (s8)parent->field_0x7c.BYTES.byte3; + if (parent->field_0x7a.HALF.HI != 0) { + parent = sub_080A7EE0(0x19); + if (parent != NULL) { + parent->type = 4; + CopyPositionAndSpriteOffset(this, parent); + } + } +} + +bool32 sub_080AB12C(Entity* this) { + Entity* entity; + + if (gEntCount > 0x44) { + return FALSE; + } + entity = sub_080A7EE0(0x19); + entity->type = 1; + entity->parent = this; + entity = sub_080A7EE0(0x19); + entity->type = 2; + entity->parent = this; + entity = sub_080A7EE0(0x19); + entity->type = 3; + entity->parent = this; + return TRUE; +} + +ASM_FUNC("asm/non_matching/projectile19/sub_080AB170.inc", void sub_080AB170(Entity* this)) + +void sub_080AB26C(Entity* this) { + if (this->action == 0) { + this->action = 1; + this->actionDelay = 5; + this->frameIndex = 0; + this->spritePriority.b1 = 0; + } + if (--this->actionDelay == 0) { + DeleteThisEntity(); + } else { + this->frameIndex += 1; + } +} diff --git a/src/projectile/projectile1A.c b/src/projectile/projectile1A.c new file mode 100644 index 00000000..de519353 --- /dev/null +++ b/src/projectile/projectile1A.c @@ -0,0 +1,128 @@ +#include "entity.h" +#include "enemy.h" +#include "player.h" +#include "functions.h" +#include "audio.h" +#include "random.h" + +extern void (*const gUnk_0812A4C8[])(Entity*); + +extern void (*const gUnk_0812A4DC[])(Entity*); + +void sub_080AB4A4(Entity*); + +extern void sub_0806F5BC(Entity*, u32, u32); +extern u32 sub_080041DC(Entity*, u32, u32); +s8* sub_080AB4F8(Entity*); + +extern s8 gUnk_0812A4EC[]; + +void Projectile1A(Entity* this) { + gUnk_0812A4C8[GetNextFunction(this)](this); +} + +void sub_080AB2C4(Entity* this) { + gUnk_0812A4DC[this->action](this); +} + +void sub_080AB2DC(Entity* this) { + if ((this->bitfield & 0x80) != 0) { + this->action = 3; + this->flags &= 0x7f; + InitializeAnimation(this, 0x53); + if ((this->bitfield & 0x7f) == 0) { + ModHealth(-4); + } + } +} + +void sub_080AB318(Entity* this) { + s32 iVar2; + u32 rnd; + u32 x; + u32 y; + s8* data; + + this->action = 1; + this->field_0x20 = -0x10000; + this->field_0x76.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI); + CopyPosition(this->parent, this); + sub_0806F5BC(this, 0x1000, this->direction); + this->spritePriority.b0 = 1; + this->height = this->parent->height; + InitializeAnimation(this, 0x51); + SoundReq(SFX_1B5); + data = sub_080AB4F8(this); + x = this->x.HALF.HI + data[0]; + y = this->y.HALF.HI + data[1]; + iVar2 = sub_080041DC(this, x, y); + rnd = Random() & 0x1ff; + if ((gScreenTransition.frameCount & 1U) != 0) { + + iVar2 += rnd; + if (0x400 < iVar2) { + iVar2 = 0x400; + } + + } else { + iVar2 -= rnd; + if (iVar2 < 0x20) { + iVar2 = 0x20; + } + } + this->field_0x20 = (this->height.WORD / (iVar2 << 8)) << 0xd; + + this->direction = sub_080045B4(this, x, y); +} + +void sub_080AB414(Entity* this) { + GetNextFrame(this); + sub_0806F69C(this); + if (sub_08003FC4(this, 0) == 0) { + this->action = 2; + this->actionDelay = 0xf; + InitializeAnimation(this, 0x54); + sub_080AB4A4(this); + } else { + if (++this->actionDelay > 0xe0) { + DeleteThisEntity(); + } + } +} + +void sub_080AB45C(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 3; + this->flags &= 0x7f; + InitializeAnimation(this, 0x53); + } +} + +void sub_080AB488(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteThisEntity(); + } +} + +void sub_080AB4A4(Entity* this) { + u32 tmp; + u16 tile; + + tmp = this->field_0x76.HWORD; + tile = TILE(this->x.HALF.HI, this->y.HALF.HI); + if (tmp != tile) { + this->field_0x76.HWORD = tile; + switch (GetTileTypeByEntity(this)) { + case 0x13: + case 0x34: + sub_0807B7D8(0x34c, this->field_0x76.HWORD, this->collisionLayer); + break; + } + } +} + +s8* sub_080AB4F8(Entity* this) { + return &gUnk_0812A4EC[this->type << 5 | this->field_0xf << 1]; +} diff --git a/src/projectile/projectile1B.c b/src/projectile/projectile1B.c new file mode 100644 index 00000000..01284bc3 --- /dev/null +++ b/src/projectile/projectile1B.c @@ -0,0 +1,82 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" + +extern void (*const gUnk_0812A58C[])(Entity*); + +extern void (*const gUnk_0812A5A0[])(Entity*); + +extern s32 sub_080AF090(Entity*); +bool32 sub_080AB5F4(Entity*); + +bool32 sub_080AB634(Entity*); + +extern void sub_080043A8(Entity*); +extern void CreateItemOnGround(Entity*); +extern void CreateChestSpawner(Entity*); + +void Projectile1B(Entity* this) { + gUnk_0812A58C[GetNextFunction(this)](this); +} + +void sub_080AB52C(Entity* this) { + gUnk_0812A5A0[this->action](this); +} + +void sub_080AB544(Entity* this) { + u32 tmp; + + if (this->iframes < -4) { + this->action = 2; + this->direction = this->field_0x3e; + tmp = (this->type ^ 2) << 3; + if (this->direction - tmp + 1 < 3) { + this->direction = tmp; + } + this->speed = 0x280; + } +} + +void sub_080AB580(Entity* this) { + this->action = 1; + this->direction = this->type << 3; + this->height.HALF.HI = 0xfffc; + InitializeAnimation(this, this->type); +} + +void sub_080AB59C(Entity* this) { + GetNextFrame(this); + if (sub_080AF090(this) == 0) { + CreateFx(this, 2, 0); + DeleteThisEntity(); + } + sub_080AB5F4(this); +} + +void sub_080AB5C4(Entity* this) { + GetNextFrame(this); + sub_080AF090(this); + if ((sub_080AB634(this) == 0) && (this->collisions != 0)) { + CreateFx(this, 2, 0); + DeleteThisEntity(); + } +} + +bool32 sub_080AB5F4(Entity* this) { + u32 uVar1; + + switch (sub_080043E8(this)) { + case 1: + CreateItemOnGround(this); + return TRUE; + case 2: + sub_080043A8(this); + return TRUE; + case 3: + CreateChestSpawner(this); + return TRUE; + } + return FALSE; +} + +ASM_FUNC("asm/non_matching/projectile1B/sub_080AB634.inc", bool32 sub_080AB634(Entity* this)) diff --git a/src/projectile/projectile1C.c b/src/projectile/projectile1C.c new file mode 100644 index 00000000..5b5f1938 --- /dev/null +++ b/src/projectile/projectile1C.c @@ -0,0 +1,98 @@ +#include "entity.h" +#include "functions.h" + +extern void (*const gUnk_0812A5E8[])(Entity*); + +extern Hitbox gUnk_0812A614; + +void sub_080AB758(Entity*); + +void sub_080AB888(Entity*); + +extern Hitbox gUnk_0812A614; +extern Hitbox gUnk_0812A61C; + +extern Hitbox* gUnk_0812A5F4[]; + +void Projectile1C(Entity* this) { + if (this->parent->spriteSettings.b.draw == 0) { + DeleteThisEntity(); + } + gUnk_0812A5E8[this->action](this); +} + +void sub_080AB6B8(Entity* this) { + *(u32*)&this->field_0x74 = this->parent->x.WORD; + if (this->type == 0) { + this->action = 1; + this->flags &= 0x7f; + this->hitbox = &gUnk_0812A614; + InitializeAnimation(this, 0); + } else { + this->action = 2; + this->field_0xf = 4; + InitializeAnimation(this, this->actionDelay); + } +} + +void sub_080AB6FC(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 2; + InitializeAnimation(this, 1); + sub_080AB758(this); + } +} + +void sub_080AB728(Entity* this) { + GetNextFrame(this); + this->x.WORD += (this->parent->x.WORD - *(u32*)&this->field_0x74); + *(u32*)&this->field_0x74 = this->parent->x.WORD; + sub_080AB888(this); + if (this->parent->field_0xf == 0) { + DeleteThisEntity(); + } +} + +ASM_FUNC("asm/non_matching/projectile1C/sub_080AB758.inc", void sub_080AB758(Entity* this)) + +void sub_080AB844(Entity* this, s32 param_1, s32 param_2) { + Entity* entity; + + entity = sub_080A7EE0(0x1c); + if (entity != NULL) { + entity->type = 1; + entity->actionDelay = param_1; + entity->parent = this->parent; + PositionRelative(this, entity, 0, param_2 << 0x10); + if (param_1 != 1) { + entity->hitbox = &gUnk_0812A61C; + } else { + entity->hitbox = &gUnk_0812A614; + } + } +} + +void sub_080AB888(Entity* this) { + s32 index; + + this->field_0xf -= 1; + index = 0; + + switch (this->actionDelay) { + case 3: + index = 1; + case 4: + this->hitbox = gUnk_0812A5F4[this->field_0xf * 2 + index]; + break; + case 0: + case 1: + case 2: + default: + break; + } + + if (this->field_0xf == 0) { + this->field_0xf = 4; + } +} diff --git a/src/projectile/projectile1D.c b/src/projectile/projectile1D.c new file mode 100644 index 00000000..c6dfe87f --- /dev/null +++ b/src/projectile/projectile1D.c @@ -0,0 +1,52 @@ +#include "entity.h" +#include "random.h" +#include "functions.h" +#include "utils.h" + +extern void (*const gUnk_0812A6B4[])(Entity*); +void sub_080AB9DC(Entity*); + +void Projectile1D(Entity* this) { + gUnk_0812A6B4[this->action](this); + sub_080AB9DC(this); +} + +void sub_080AB8E8(Entity* this) { + Entity* entity; + u16* puVar3; + s32 index; + + this->action += 1; + this->speed = 0x140; + this->height.WORD = 0; + if (this->type == 0) { + this->direction = Random() & 0x18; + this->parent = this; + } + InitializeAnimation(this, 0); + if (this->type < 4) { + entity = sub_080A7EE0(0x1d); + entity->type = this->type + 1; + entity->parent = this->parent; + entity->attachedEntity = this; + CopyPosition(this, entity); + } + + puVar3 = &this->field_0x68.HWORD; + for (index = 7; index >= 0; --index) { + *puVar3 = this->x.HALF.HI; + puVar3 += 1; + *puVar3 = this->y.HALF.HI; + puVar3 += 1; + } +} + +ASM_FUNC("asm/non_matching/projectile1D/sub_080AB950.inc", void sub_080AB950(Entity* this)) + +void sub_080AB9DC(Entity* this) { + MemCopy(&this->field_0x6c, &this->field_0x68, 0x1c); + this->cutsceneBeh.HWORD = this->x.HALF.HI; + this->field_0x86.HWORD = this->y.HALF.HI; +} + +ASM_FUNC("asm/non_matching/projectile1D/sub_080AB9FC.inc", void sub_080AB9FC(Entity* this)) diff --git a/src/projectile/projectile1E.c b/src/projectile/projectile1E.c new file mode 100644 index 00000000..9b160f9d --- /dev/null +++ b/src/projectile/projectile1E.c @@ -0,0 +1,11 @@ +#include "entity.h" + +extern void (*const gUnk_0812A6CC[])(Entity*); + +void Projectile1E(Entity* this) { + gUnk_0812A6CC[this->action](this); +} + +ASM_FUNC("asm/non_matching/projectile1E/sub_080ABA74.inc", void sub_080ABA74(Entity* this)) + +ASM_FUNC("asm/non_matching/projectile1E/sub_080ABAE0.inc", void sub_080ABAE0(Entity* this)) diff --git a/src/projectile/projectile1F.c b/src/projectile/projectile1F.c new file mode 100644 index 00000000..93941e4c --- /dev/null +++ b/src/projectile/projectile1F.c @@ -0,0 +1,123 @@ + +#include "entity.h" +#include "enemy.h" +#include "functions.h" +#include "random.h" +#include "audio.h" + +extern void (*const gUnk_0812A7D4[])(Entity*); + +extern void (*const gUnk_0812A808[])(Entity*); + +extern void sub_0800449C(Entity*, u32); +extern void sub_08079D84(void); + +extern s32 sub_080AF090(Entity*); + +void Projectile1F(Entity* this) { + gUnk_0812A7D4[GetNextFunction(this)](this); +} + +ASM_FUNC("asm/non_matching/projectile1F/sub_080ABBA8.inc", void sub_080ABBA8(Entity* this)) + +ASM_FUNC("asm/non_matching/projectile1F/sub_080ABBF4.inc", void sub_080ABBF4(Entity* this)) + +void sub_080ABC54(Entity* this) { + if (sub_0806F520() == 0) { + CreateFx(this, 2, 0); + DeleteThisEntity(); + } + gUnk_0812A808[this->subAction](this); +} + +void sub_080ABC84(Entity* this) { + this->subAction = 2; +} + +void nullsub_542(Entity* this) { +} + +void sub_080ABC90(Entity* this) { + if (sub_0806F3E4(this) != 0) { + ModHealth(-2); + sub_0800449C(&gPlayerEntity, 0x7a); + sub_08079D84(); + CreateFx(this, 2, 0); + DeleteThisEntity(); + } +} + +void sub_080ABCC4(Entity* this) { + this->action = 1; + this->actionDelay = (Random() & 0x3f) + 0x30; + this->field_0xf = 0; + this->direction = Random() & 0x1f; + this->field_0x74.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI); + this->field_0x76.HWORD = GetTileType(this->field_0x74.HWORD, 2); + this->spritePriority.b0 = 2; + InitializeAnimation(this, 0); + SoundReq(SFX_14B); +} + +void sub_080ABD44(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 2; + InitializeAnimation(this, 1); + } + sub_080AF090(this); + GetNextFrame(this); +} + +void sub_080ABD70(Entity* this) { + u32 tmp; + GetNextFrame(this); + if ((this->frames.all & 0x10) != 0) { + this->frames.all &= 0xef; + this->speed = 0; + this->field_0x74.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI); + this->field_0x76.HWORD = GetTileType(this->field_0x74.HWORD, 2); + tmp = this->field_0x76.HWORD; + if (tmp != 0x13) { + if (tmp == 0x315) { + SetTileType(0x6e, this->field_0x74.HWORD, 2); + } + } else { + SetTileType(0x6d, this->field_0x74.HWORD, 2); + } + } + if ((this->frames.all & 0x80) != 0) { + DeleteThisEntity(); + } +} + +ASM_FUNC("asm/non_matching/projectile1F/sub_080ABE04.inc", void sub_080ABE04(Entity* this)) + +void sub_080ABE88(Entity* this) { + if (sub_08003FC4(this, 0x1800) == 0) { + CreateFx(this, 4, 0); + DeleteThisEntity(); + } +} + +void sub_080ABEA8(Entity* this) { + this->action = 1; + this->actionDelay = 0x60; + this->spritePriority.b0 = 2; + this->field_0x1c = 1; + if (this->type2 == 0) { + this->direction = (Random() & 0xf) << 1; + } else { + this->direction = sub_08049F84(this, 0); + sub_0801D2B4(this, 0x13f); + } + InitializeAnimation(this, 0); + SoundReq(SFX_193); +} + +void sub_080ABF04(Entity* this) { + if (sub_080040A8(this) == 0) { + DeleteThisEntity(); + } + sub_0806F69C(this); + GetNextFrame(this); +} diff --git a/src/projectile/projectile2.c b/src/projectile/projectile2.c new file mode 100644 index 00000000..fa163358 --- /dev/null +++ b/src/projectile/projectile2.c @@ -0,0 +1,90 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" + +extern void (*const gUnk_0812960C[])(Entity*); + +extern void (*const gUnk_08129620[])(Entity*); + +void sub_080A82D8(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); +extern void sub_08016AD2(Entity*); + +void Projectile2(Entity* this) { + gUnk_0812960C[GetNextFunction(this)](this); +} + +void sub_080A81AC(Entity* this) { + gUnk_08129620[this->action](this); +} + +void sub_080A81C4(Entity* this) { + if (this->bitfield == 0x80) { + DeleteEntity(this); + } else { + sub_080A82D8(this); + } +} + +void sub_080A81E0(Entity* this) { + this->action = 1; + this->actionDelay = 0x3c; + this->height.HALF.HI = 0xfffe; + InitializeAnimation(this, 0); +} + +void sub_080A81FC(Entity* this) { + GetNextFrame(this); + sub_080AF090(this); + if (this->collisions == 0) { + if (sub_080A7EB0(this) != 0) { + DeleteEntity(this); + } else { + sub_08016AD2(this); + if (--this->actionDelay == 0) { + this->action = 2; + this->speed = 0x120; + } + } + } else { + sub_080A82D8(this); + } +} + +void sub_080A8248(Entity* this) { + GetNextFrame(this); + sub_080AF090(this); + if (sub_08003FC4(this, 0x1800) == 0) { + this->action = 3; + this->flags = this->flags & 0x7f; + this->speed = 0xe0; + this->field_0x20 = 0xe000; + } +} + +void sub_080A827C(Entity* this) { + this->spriteSettings.b.draw ^= 1; + sub_0806F69C(this); + GetNextFrame(this); + if (sub_080044EC(this, 0x1800) == 0) { + DeleteEntity(this); + } +} + +void sub_080A82B4(Entity* this) { + GetNextFrame(this); + sub_0806F69C(this); + if (sub_08003FC4(this, 0x1800) == 0) { + DeleteEntity(this); + } +} + +void sub_080A82D8(Entity* this) { + this->action = 4; + this->flags &= 0x7f; + this->field_0x20 = 0x10000; + this->direction ^= 0x10; + this->speed = 0x80; +} diff --git a/src/projectile/projectile20.c b/src/projectile/projectile20.c new file mode 100644 index 00000000..4c97790d --- /dev/null +++ b/src/projectile/projectile20.c @@ -0,0 +1,37 @@ +#include "entity.h" +#include "enemy.h" +#include "player.h" +#include "audio.h" + +extern void (*const gUnk_0812A84C[])(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); + +void Projectile20(Entity* this) { + gUnk_0812A84C[GetNextFunction(this)](this); +} + +void sub_080ABF40(Entity* this) { + if (this->action == 0) { + this->action = 1; + this->direction = GetFacingDirection(this, &gPlayerEntity); + InitializeAnimation(this, 0); + SoundReq(SFX_199); + } + if (this->height.HALF.HI < -6) { + this->height.HALF.HI += 2; + } + sub_080AF090(this); + if (this->collisions != 0) { + DeleteThisEntity(); + } + GetNextFrame(this); + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } +} + +void sub_080ABFA8(Entity* this) { + DeleteThisEntity(); +} diff --git a/src/projectile/projectile21.c b/src/projectile/projectile21.c new file mode 100644 index 00000000..d8ac77fc --- /dev/null +++ b/src/projectile/projectile21.c @@ -0,0 +1,80 @@ +#include "entity.h" +#include "enemy.h" +#include "audio.h" +#include "player.h" +#include "coord.h" +#include "functions.h" + +extern void (*const gUnk_0812A954[])(Entity*); + +extern void (*const gUnk_0812A968[])(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); + +void Projectile21(Entity* this) { + gUnk_0812A954[GetNextFunction(this)](this); +} + +void sub_080ABFCC(Entity* this) { + gUnk_0812A968[this->action](this); +} + +void sub_080ABFE4(Entity* this) { + DeleteThisEntity(); +} + +ASM_FUNC("asm/non_matching/projectile21/sub_080ABFEC.inc", void sub_080ABFEC(Entity* this)) + +void sub_080AC074(Entity* this) { + if (this->parent->next == NULL) { + DeleteThisEntity(); + } + CopyPositionAndSpriteOffset(this->parent, this); + this->height.HALF.HI -= 0x14; + if (this->cutsceneBeh.HALF.HI != 0) { + if (((--this->cutsceneBeh.HALF.HI) & 7) == 0) { + SoundReq(SFX_149); + } + } + GetNextFrame(this); + if ((this->frames.all & 1) != 0) { + if (this->type == 0) { + this->action = 2; + this->direction = GetFacingDirection(this, &gPlayerEntity); + this->speed = 0x180; + SoundReq(SFX_193); + } else { + this->action = 3; + this->actionDelay = 0x10; + } + this->height.HALF.HI -= 0x28; + } +} + +void sub_080AC100(Entity* this) { + u8 bVar1; + s32 iVar2; + u32 uVar3; + + if (this->height.HALF.HI < -6) { + this->height.HALF.HI += 3; + } + sub_080AF090(this); + if (this->collisions != 0) { + DeleteThisEntity(); + } + GetNextFrame(this); + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } + if (this->actionDelay < 0x1e) { + if (((++this->actionDelay) & this->field_0xf) == 0) { + sub_08004596(this, GetFacingDirection(this, &gPlayerEntity)); + } + } +} + +ASM_FUNC("asm/non_matching/projectile21/sub_080AC168.inc", void sub_080AC168(Entity* this)) + +ASM_FUNC("asm/non_matching/projectile21/sub_080AC200.inc", void sub_080AC200(Entity* this)) diff --git a/src/projectile/projectile22.c b/src/projectile/projectile22.c new file mode 100644 index 00000000..bbc4fc58 --- /dev/null +++ b/src/projectile/projectile22.c @@ -0,0 +1,229 @@ +#include "entity.h" +#include "random.h" +#include "coord.h" +#include "audio.h" +#include "functions.h" + +extern void (*const gUnk_0812A9A8[])(Entity*); + +extern u16 gUnk_0812A9B4[]; +bool32 sub_080AC5E4(Entity*); +void sub_080AC388(Entity*); + +extern u8 gUnk_0812A9BA[]; +extern Hitbox gUnk_080FD458; + +extern Hitbox gUnk_080FD168; +extern Hitbox gUnk_080FD448; + +extern void (*const gUnk_0812A994[])(Entity*); + +void sub_080AC6F0(Entity*); +void sub_080AC760(Entity*); +void sub_080AC7C4(Entity*); + +extern u8 gEntCount; + +void Projectile22(Entity* this) { + Entity* parent; + + if (this->parent->next == NULL) { + DeleteThisEntity(); + } + gUnk_0812A994[this->type2](this); + if (this->type == 0) { + this->spriteOrientation.flipY = 3; + this->spriteRendering.b3 = 3; + this->spritePriority.b0 = 1; + } else { + parent = this->parent; + this->spriteOrientation.flipY = parent->spriteOrientation.flipY; + this->spriteRendering.b3 = parent->spriteRendering.b3; + this->spritePriority.b0 = parent->spritePriority.b0 - 2; + + if ((parent->spriteRendering.b3 == 3) && (parent->field_0x7c.BYTES.byte0 == 0)) { + this->flags &= 0x7f; + } else { + this->flags |= 0x80; + } + } +} + +void sub_080AC328(Entity* this) { + gUnk_0812A9A8[this->action](this); +} + +void sub_080AC340(Entity* this) { + if (sub_080AC5E4(this) != 0) { + this->action = 1; + this->frameIndex = 0xc; + this->spriteSettings.b.draw = 1; + this->field_0x7a.HWORD = gUnk_0812A9B4[Random() & 1]; + this->collisionLayer = 2; + sub_080AC388(this); + } +} + +ASM_FUNC("asm/non_matching/projectile22/sub_080AC388.inc", void sub_080AC388(Entity* this)) + +void sub_080AC480(Entity* this) { + if (this->actionDelay != 0) { + if (this->parent->currentHealth == 0) { + this->action = 1; + this->damageType = 0x1d; + } else { + if (--this->actionDelay == 0) { + this->damageType = 0x1c; + SoundReq(SFX_116); + } + } + } else { + if (--this->field_0xf == 0) { + this->action = 1; + this->damageType = 0x1d; + } + this->field_0x7c.HALF_U.LO += ((s16)this->field_0x7a.HWORD >= 1) ? 0x300 : -0x300; + this->direction = this->field_0x7c.HALF.LO >> 8; + sub_080AC6F0(this); + sub_080AC760(this); + sub_080AC7C4(this); + } +} + +void sub_080AC510(Entity* this) { + if (this->action == 0) { + this->action = 1; + this->frameIndex = gUnk_0812A9BA[this->type * 3 + this->type2 - 1]; + this->spriteSettings.b.draw = 1; + this->collisionLayer = 2; + if (*(u16*)&this->type == 0x300) { + this->hitbox = &gUnk_080FD458; + } + } +} + +void sub_080AC560(Entity* this) { + s32 factor; + Entity* entity; + + entity = this->attachedEntity; + if (entity->next == NULL) { + DeleteThisEntity(); + } + if (this->action == 0) { + this->action = 1; + this->collisionLayer = 2; + if (this->type == 0) { + this->hitbox = &gUnk_080FD168; + } else { + this->hitbox = &gUnk_080FD448; + } + this->frameIndex = 0xff; + this->spriteSettings.b.draw = 1; + } + factor = this->field_0x78.HALF.HI << 8; + this->x.WORD = entity->x.WORD + gSineTable[entity->direction] * factor; + this->y.WORD = entity->y.WORD - gSineTable[entity->direction + 0x40] * factor; +} + +NONMATCH("asm/non_matching/projectile22/sub_080AC5E4.inc", bool32 sub_080AC5E4(Entity* this)) { + // TODO regalloc + Entity* entity; + Entity* entity2; + Entity* entity3; + Entity* entity4; + u8 uVar3; + + if (this->type == 0) { + if (0x43 < gEntCount) { + return 0; + } + this->field_0x78.HALF.HI = 0x11; + entity = sub_080A7EE0(0x22); + entity->type = this->type; + entity->type2 = 1; + entity->parent = this->parent; + entity->field_0x78.HALF.HI = 0x12; + this->attachedEntity = entity; + entity2 = sub_080A7EE0(0x22); + entity2->type = this->type; + entity2->type2 = 2; + entity2->parent = this->parent; + entity2->field_0x78.HALF.HI = 0x14; + uVar3 = entity2->field_0x78.HALF.HI; + entity->attachedEntity = entity2; + entity3 = sub_080A7EE0(0x22); + entity3->type = this->type; + entity3->type2 = 3; + entity3->parent = this->parent; + entity3->attachedEntity = NULL; + entity3->field_0x78.HALF.HI = 0; + entity2->attachedEntity = entity3; + } else { + if (0x44 < gEntCount) { + return 0; + } + this->field_0x78.HALF.HI = 0xf; + entity = sub_080A7EE0(0x22); + entity->type = this->type; + entity->type2 = 1; + entity->parent = this->parent; + entity->field_0x78.HALF.HI = 0x10; + uVar3 = entity->field_0x78.HALF.HI; + this->attachedEntity = entity; + entity2 = sub_080A7EE0(0x22); + entity2->type = this->type; + entity2->type2 = 2; + entity2->parent = this->parent; + entity2->attachedEntity = NULL; + entity2->field_0x78.HALF.HI = 0x20; + entity->attachedEntity = entity2; + } + entity4 = sub_080A7EE0(0x22); + entity4->type = this->type; + entity4->type2 = 4; + entity4->parent = this->parent; + entity4->attachedEntity = this; + entity4->field_0x78.HALF.HI = uVar3; + return 1; +} +END_NONMATCH + +ASM_FUNC("asm/non_matching/projectile22/sub_080AC6F0.inc", void sub_080AC6F0(Entity* this)) + +ASM_FUNC("asm/non_matching/projectile22/sub_080AC760.inc", void sub_080AC760(Entity* this)) + +NONMATCH("asm/non_matching/projectile22/sub_080AC7C4.inc", void sub_080AC7C4(Entity* this)) { + // TODO regalloc + Entity* entity1; + Entity* entity2; + Entity* entity3; + s32 iVar1; + s32 iVar2; + s32 iVar3; + + entity1 = this->attachedEntity; + entity2 = entity1->attachedEntity; + entity3 = entity2->attachedEntity; + if (entity3 != NULL) { + CopyPosition(this->parent, entity3); + } else { + entity3 = this->parent; + } + PositionRelative(entity3, entity2, (entity2->field_0x78.HALF.HI << 8) * gSineTable[entity2->direction], + -((entity2->field_0x78.HALF.HI << 8) * gSineTable[entity2->direction + 0x40])); + PositionRelative(entity2, entity1, (entity1->field_0x78.HALF.HI << 8) * gSineTable[entity1->direction], + -((entity1->field_0x78.HALF.HI << 8) * gSineTable[entity1->direction + 0x40])); + PositionRelative(entity1, this, (this->field_0x78.HALF.HI << 8) * gSineTable[this->direction], + -((this->field_0x78.HALF.HI << 8) * gSineTable[this->direction + 0x40])); +} +END_NONMATCH + +void sub_080AC884(Entity* this) { + if (this->parent->field_0x70.HALF_U.HI != 0) { + this->parent->field_0x70.HALF_U.HI = 0; + this->action = 2; + this->actionDelay = 0x3c; + this->field_0xf = 0x56; + } +} diff --git a/src/projectile/projectile23.c b/src/projectile/projectile23.c new file mode 100644 index 00000000..ae9edb41 --- /dev/null +++ b/src/projectile/projectile23.c @@ -0,0 +1,73 @@ +#include "entity.h" +#include "enemy.h" +#include "coord.h" +#include "player.h" +#include "audio.h" + +extern void (*const gUnk_0812A9D8[])(Entity*); + +extern void (*const gUnk_0812A9EC[])(Entity*); + +void sub_080AC954(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); + +void Projectile23(Entity* this) { + gUnk_0812A9D8[GetNextFunction(this)](this); +} + +void sub_080AC8C4(Entity* this) { + gUnk_0812A9EC[this->action](this); +} + +ASM_FUNC("asm/non_matching/projectile23/sub_080AC8DC.inc", void sub_080AC8DC(Entity* this)) + +void sub_080AC928(Entity* this) { + this->action = 1; + this->actionDelay = 0x3c; + this->collisionLayer = 2; + UpdateSpriteForCollisionLayer(this); + InitializeAnimation(this, 0); + sub_080AC954(this); +} + +void sub_080AC954(Entity* this) { + u32 animationState; + + if (this->parent->next == NULL) { + DeleteThisEntity(); + } + animationState = this->parent->animationState; + PositionRelative(this->parent, this, gSineTable[animationState] * 0x2800, + gSineTable[animationState + 0x40] * -0x2800); + GetNextFrame(this); + if (--this->actionDelay == 0) { + this->action = 2; + this->flags |= 0x80; + this->direction = GetFacingDirection(this, &gPlayerEntity); + SoundReq(SFX_12E); + } +} + +void sub_080AC9CC(Entity* this) { + sub_080AF090(this); + GetNextFrame(this); + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } + if (--this->actionDelay == 0) { + this->action = 3; + this->flags &= 0x7f; + this->speed = this->speed >> 1; + InitializeAnimation(this, 1); + } +} + +void sub_080ACA14(Entity* this) { + sub_080AF090(this); + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteThisEntity(); + } +} diff --git a/src/projectile/projectile24.c b/src/projectile/projectile24.c new file mode 100644 index 00000000..d60bf32b --- /dev/null +++ b/src/projectile/projectile24.c @@ -0,0 +1,66 @@ +#include "entity.h" +#include "enemy.h" +#include "audio.h" +#include "functions.h" + +extern void (*const gUnk_0812AA5C[])(Entity*); + +extern void (*const gUnk_0812AA74[])(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); + +void sub_080ACB90(Entity*); + +void Projectile24(Entity* this) { + gUnk_0812AA5C[GetNextFunction(this)](this); +} + +void sub_080ACA50(Entity* this) { + gUnk_0812AA74[this->action](this); +} + +ASM_FUNC("asm/non_matching/projectile24/sub_080ACA68.inc", void sub_080ACA68(Entity* this)) + +void sub_080ACAC8(Entity* this) { + this->action = 1; + this->direction = 0x10; + this->height.HALF.HI = 0xfffc; + this->attachedEntity = NULL; + InitializeAnimation(this, 7); + SoundReq(SFX_199); +} + +void sub_080ACAF0(Entity* this) { + sub_080AF090(this); + GetNextFrame(this); + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } +} + +void sub_080ACB10(Entity* this) { + sub_080AF090(this); + if (this->collisions != 0) { + DeleteThisEntity(); + } + GetNextFrame(this); + sub_080ACB90(this); + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } +} + +ASM_FUNC("asm/non_matching/projectile24/sub_080ACB40.inc", void sub_080ACB40(Entity* this)) + +void sub_080ACB90(Entity* this) { + Entity* parent; + + parent = this->parent; + if ((this->x.HALF.HI == parent->x.HALF.HI) && (this->y.HALF.HI <= parent->y.HALF.HI)) { + parent->field_0xf = 1; + CreateFx(this, 0x1f, 0x40); + EnqueueSFX(SFX_ITEM_GLOVES_KNOCKBACK); + DeleteThisEntity(); + } +} diff --git a/src/projectile/projectile3.c b/src/projectile/projectile3.c new file mode 100644 index 00000000..b1f86734 --- /dev/null +++ b/src/projectile/projectile3.c @@ -0,0 +1,87 @@ +#include "entity.h" +#include "enemy.h" + +extern void (*const gUnk_08129650[])(Entity*); + +extern void (*const gUnk_08129664[])(Entity*); + +extern bool32 AllocMutableHitbox(Entity*); + +typedef struct { + u8 offsetX; + u8 offsetY; + u8 width; + u8 height; +} Test; + +extern Test gUnk_0812966C[]; + +void Projectile3(Entity* this) { + gUnk_08129650[GetNextFunction(this)](this); +} + +void sub_080A8314(Entity* this) { + gUnk_08129664[this->action](this); +} + +void sub_080A832C(Entity* this) { + u8 tmp; + + if (this->bitfield == 0x80) { + this->iframes = 0x10; + this->field_0x42 = 0xc; + this->field_0x46 = 0x180; + this->parent->bitfield = this->bitfield; + } + tmp = this->iframes; + if ((tmp & 0x80) != 0) { + this->parent->iframes = tmp; + } else { + this->parent->iframes = -tmp; + } + this->parent->field_0x42 = this->field_0x42; + this->parent->field_0x46 = this->field_0x46; + this->parent->field_0x3e = this->field_0x3e; + this->field_0x42 = 0; +} + +void sub_080A83A0(Entity* this) { + if (AllocMutableHitbox(this) != 0) { + this->action = 1; + } +} + +NONMATCH("asm/non_matching/projectile3/sub_080A83B4.inc", void sub_080A83B4(Entity* this)) { + u8 frames; + Entity* parent; + u32 tmp; + Test* a; + + parent = this->parent; + if (parent == NULL) { + DeleteThisEntity(); + } + if (parent->next == NULL) { + DeleteThisEntity(); + } + frames = parent->frames.all * 4; + a = &gUnk_0812966C[frames / 4]; + this->hitbox->offset_x = a->offsetX; + // TODO offset used to increate a pointer is already increated here? + if (parent->frameSpriteSettings == 0x40) { + this->hitbox->offset_x = -this->hitbox->offset_x; + } + this->hitbox->offset_y = a->offsetY; + this->hitbox->width = a->width; + this->hitbox->height = a->height; + if (parent->field_0x43 != 0) { + if ((this->flags & 0x80) != 0) { + this->flags &= 0x7f; + } + } else { + if ((this->flags & 0x80) == 0) { + this->flags |= 0x80; + } + } +} +END_NONMATCH diff --git a/src/projectile/projectile4.c b/src/projectile/projectile4.c new file mode 100644 index 00000000..7d58f00a --- /dev/null +++ b/src/projectile/projectile4.c @@ -0,0 +1,147 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" +#include "audio.h" +#include "flags.h" + +extern void (*const gUnk_081296F0[])(Entity*); + +extern void (*const gUnk_08129704[])(Entity*); + +void sub_080A8680(Entity*); +void sub_080A86A0(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); +extern void sub_08016AD2(Entity*); +extern u32 sub_080177A0(Entity*, Entity*); + +void Projectile4(Entity* this) { + gUnk_081296F0[GetNextFunction(this)](this); +} + +void sub_080A8458(Entity* this) { + gUnk_08129704[this->action](this); +} + +void sub_080A8470(Entity* this) { + if (this->bitfield == 0x80) { + if (this->damageType == 0x68) { + EnqueueSFX(SFX_86); + } + DeleteEntity(this); + } else { + this->direction = (this->field_0x3e + 4) & 0x18; + if ((u8)(this->bitfield + 0x7e) < 2) { + sub_080A8680(this); + } else { + InitializeAnimation(this, 0x19); + sub_080A86A0(this); + } + } +} + +void sub_080A84C8(Entity* this) { + this->action = 1; + this->actionDelay = 0x30; + this->field_0xf = 0; + this->height.HALF.HI -= 4; + if (CheckGlobalFlag(TABIDACHI) == 0) { + this->damageType = 0x68; + } + EnqueueSFX(SFX_18D); + InitializeAnimation(this, 0x18); +} + +void sub_080A8504(Entity* this) { + Entity* parent; + + GetNextFrame(this); + if (sub_080AF090(this) != 0) { + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } + sub_08016AD2(this); + if (--this->actionDelay == 0) { + this->action = 4; + } + } else { + sub_0800417E(this, this->collisions); + sub_08016AD2(this); + InitializeAnimation(this, 0x19); + sub_080A86A0(this); + } + if (this->field_0xf != 0) { + parent = this->parent; + if ((parent->next != NULL) && (sub_080177A0(this, parent) != 0)) { + this->iframes = 0x10; + this->field_0x3e = -this->direction; + this->bitfield = -0x80; + this->field_0x42 = 0xc; + this->field_0x46 = 0; + parent->iframes = 0x10; + parent->field_0x3e = this->direction; + parent->bitfield = -0x3e; + parent->field_0x42 = 0xc; + parent->field_0x46 = 0; + } + } +} + +void sub_080A85B8(Entity* this) { + GetNextFrame(this); + if (sub_080AF090(this) != 0) { + if (sub_080A7EB0(this) != 0) { + DeleteThisEntity(); + } + if (--this->actionDelay == 0) { + this->action = 1; + this->flags |= 0x80; + } + } else { + sub_0800417E(this, (u32)this->collisions); + sub_08016AD2(this); + InitializeAnimation(this, 0x19); + sub_080A86A0(this); + } +} + +void sub_080A8610(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteThisEntity(); + } +} + +void sub_080A862C(Entity* this) { + GetNextFrame(this); + sub_080AF090(this); + switch (sub_080044EC(this, 0x2800)) { + case 0: + DeleteThisEntity(); + return; + case 1: + this->flags &= 0x7f; + this->speed = 0x120; + + break; + } + if ((this->flags & 0x80) == 0) { + this->spriteSettings.b.draw ^= 1; + } +} + +void sub_080A8680(Entity* this) { + this->action = 2; + this->flags &= 0x7f; + this->actionDelay = 3; + this->field_0xf = 1; + EnqueueSFX(SFX_ITEM_SHIELD_BOUNCE); +} + +void sub_080A86A0(Entity* this) { + this->action = 3; + this->flags &= 0x7f; + this->speed = 0; + EnqueueSFX(SFX_18E); +} diff --git a/src/projectile/projectile5.c b/src/projectile/projectile5.c new file mode 100644 index 00000000..1d0d6c5a --- /dev/null +++ b/src/projectile/projectile5.c @@ -0,0 +1,67 @@ + +#include "entity.h" +#include "enemy.h" +#include "player.h" +#include "room.h" +#include "coord.h" + +extern void (*const gUnk_08129718[])(Entity*); + +extern void (*const gUnk_0812972C[])(Entity*); + +extern u32 sub_080002E0(u32, u32); + +extern Hitbox gUnk_08129734; + +void Projectile5(Entity* this) { + gUnk_08129718[GetNextFunction(this)](this); +} + +void sub_080A86D8(Entity* this) { + gUnk_0812972C[this->action](this); +} + +void sub_080A86F0(Entity* this) { + u8* pbVar2; + + if (this->parent == NULL) { + DeleteThisEntity(); + } else { + pbVar2 = &this->parent->field_0x82.HALF.HI; + if ((this->parent->field_0x82.HALF.HI & 0x3f) == 3) { + if (gPlayerState.hurtBlinkSpeed != 0) { + if (sub_080002E0(TILE(this->x.HALF.HI, this->y.HALF.HI), gPlayerEntity.collisionLayer) == 0) { + if (this->bitfield == 0x80) { + *pbVar2 = *pbVar2 & 0x7f; + DeleteThisEntity(); + } + } + } + } else { + DeleteEntity(this); + } + } +} + +void sub_080A8770(Entity* this) { + this->action = 1; + this->field_0x3c |= 0x10; + this->hitbox = &gUnk_08129734; +} + +void sub_080A878C(Entity* this) { + Entity* parent; + + parent = this->parent; + if (parent == NULL) { + DeleteThisEntity(); + } + if (parent->next == NULL) { + DeleteThisEntity(); + } + if ((parent->field_0x82.HALF.HI & 0x7f) != 3) { + DeleteThisEntity(); + } + CopyPosition(parent, this); + this->height.HALF.HI += 2; +} diff --git a/src/projectile/projectile6.c b/src/projectile/projectile6.c new file mode 100644 index 00000000..92c0b83e --- /dev/null +++ b/src/projectile/projectile6.c @@ -0,0 +1,168 @@ +#include "entity.h" +#include "enemy.h" +#include "player.h" +#include "coord.h" +#include "functions.h" + +extern void (*const gUnk_08129740[])(Entity*); + +extern void (*const gUnk_08129754[])(Entity*); + +extern Hitbox gUnk_08129764; + +extern void sub_08078954(Entity*); + +void Projectile6(Entity* this) { + gUnk_08129740[GetNextFunction(this)](this); +} + +void sub_080A87E4(Entity* this) { + if (this->type == 1) { + if (this->attachedEntity == NULL) { + DeleteThisEntity(); + } + if (this->attachedEntity->next == NULL) { + DeleteThisEntity(); + } + } + gUnk_08129754[this->action](this); +} + +void sub_080A881C(Entity* this) { + this->field_0x46 = 0; + if (this->type == 0) { + this->parent->attachedEntity = NULL; + if (this->bitfield == 0x80) { + gPlayerState.hurtBlinkSpeed = 0xf0; + ModHealth(-2); + } + DeleteThisEntity(); + } else { + if (this->action < 2) { + this->action = 2; + this->parent->field_0x82.HALF.HI = 0xc0; + } + } +} + +void sub_080A8868(Entity* this) { + this->action = 1; + this->subAction = 0; + this->spriteSettings.b.shadow = 1; + this->field_0x20 = 0x8000; + this->hitbox = &gUnk_08129764; + this->field_0x3c |= 0x10; + switch (this->type) { + case 0: + InitializeAnimation(this, 0); + break; + case 1: + this->actionDelay = 0; + this->field_0xf = 0; + break; + case 2: + InitializeAnimation(this, 5); + break; + } +} + +void sub_080A88C8(Entity* this) { + Entity* entity; + Entity* parent; + + parent = this->parent; + if (parent == NULL) { + this->action = 2; + } + if (parent->next == NULL) { + this->action = 2; + } + PositionRelative(parent, this, 0, -0x10000); + switch (this->type) { + case 0: + this->height.HALF.HI += 0x10; + break; + case 1: + this->height.HALF.HI += 0xe; + sub_08078954(this->attachedEntity); + CopyPosition(this, this->attachedEntity); + if ((0xf < (u8)(this->actionDelay++ + 1)) && (entity = this->attachedEntity, entity->actionDelay == 0)) { + if ((this->actionDelay & 2) != 0) { + entity->field_0xf += 1; + } + if ((this->attachedEntity->field_0xf < 0x20) && ((this->attachedEntity->field_0xf & 3) == 3)) { + parent->field_0x82.HALF.HI = 0xc0; + this->action = 2; + } + } + break; + case 2: + this->height.HALF.HI += 0xe; + if (sub_080041A0(this, &gPlayerEntity, 0xe, 0xe) != 0) { + this->action = 2; + parent->field_0x82.HALF.HI = 0xc0; + } + break; + } +} + +void sub_080A8988(Entity* this) { + u8 bVar1; + u32 uVar2; + u32 tmp; + Entity* entity; + + if (this->type == 1) { + entity = this->attachedEntity; + if (entity == NULL) { + DeleteThisEntity(); + } + if (entity->next == NULL) { + DeleteThisEntity(); + } + sub_08078954(entity); + CopyPosition(this, entity); + } + if (sub_080044EC(this, 0x2800) != 1) { + return; + } + + tmp = sub_080043E8(this); + if (tmp != 0) { + switch (tmp) { + case 2: + CreateFx(this, 0xb, 0); + break; + case 1: + CreateFx(this, 0, 0); + break; + case 3: + CreateFx(this, 0xc, 0); + break; + } + DeleteThisEntity(); + } + + switch (this->type) { + case 0: + InitializeAnimation(this, 1); + EnqueueSFX(0x84); + this->action = 3; + return; + case 2: + entity = CreateFx(this, 5, 0x80); + if (entity != NULL) { + entity->parent = NULL; + } + case 1: + DeleteEntity(this); + break; + } +} + +void sub_080A8A48(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteEntity(this); + } +} diff --git a/src/projectile/projectile7.c b/src/projectile/projectile7.c new file mode 100644 index 00000000..9d59e7eb --- /dev/null +++ b/src/projectile/projectile7.c @@ -0,0 +1,82 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_0812979C[])(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); +extern void sub_08016AD2(Entity*); + +void Projectile7(Entity* this) { + if (GetNextFunction(this) != 0) { + DeleteThisEntity(); + } + gUnk_0812979C[this->action](this); +} + +void sub_080A8A90(Entity* this) { + if (this->type == 0) { + this->action = 1; + InitializeAnimation(this, this->direction >> 3); + } else { + this->action = 2; + InitializeAnimation(this, this->direction >> 3 | 4); + EnqueueSFX(SFX_15F); + } +} + +void sub_080A8AC8(Entity* this) { + u32 direction; + Entity* parent; + + parent = this->parent; + if (parent == NULL) { + DeleteEntity(this); + } else { + if (parent->next == NULL) { + DeleteEntity(this); + } else { + if (this->spriteSettings.b.draw == 1) { + CopyPosition(parent, this); + direction = (parent->direction + 4) & 0x18; + if (this->actionDelay != 0) { + this->direction = direction; + this->animationState = direction >> 2; + this->actionDelay = 0; + InitializeAnimation(this, direction >> 3); + } else { + if (direction >> 2 != this->animationState) { + this->direction = direction; + this->animationState = direction >> 2; + InitializeAnimation(this, direction >> 3); + } + } + } + GetNextFrame(this); + } + } +} + +void sub_080A8B38(Entity* this) { + GetNextFrame(this); + if (sub_080AF090(this) != 0) { + if (sub_080A7EB0(this) != 0) { + DeleteEntity(this); + } else { + sub_08016AD2(this); + } + } else { + this->action = 3; + this->flags &= 0x7f; + this->speed = 0; + } +} + +void sub_080A8B78(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteEntity(this); + } +} diff --git a/src/projectile/projectile8.c b/src/projectile/projectile8.c new file mode 100644 index 00000000..08a5a555 --- /dev/null +++ b/src/projectile/projectile8.c @@ -0,0 +1,76 @@ + +#include "entity.h" +#include "enemy.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_0812982C[])(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); +extern void sub_08016AD2(Entity*); + +void Projectile8(Entity* this) { + if (GetNextFunction(this) != 0) { + DeleteThisEntity(); + } + gUnk_0812982C[this->action](this); +} + +void sub_080A8BC0(Entity* this) { + if (this->type == 0) { + this->action = 1; + InitializeAnimation(this, this->direction >> 3); + } else { + this->action = 2; + InitializeAnimation(this, this->direction >> 3 | 4); + EnqueueSFX(SFX_15E); + } +} + +void sub_080A8BF8(Entity* this) { + u32 direction; + Entity* parent; + + parent = this->parent; + if (parent == NULL) { + DeleteEntity(this); + } else { + if (parent->next == NULL) { + DeleteEntity(this); + } else { + if (this->spriteSettings.b.draw == 1) { + CopyPosition(parent, this); + if (this->actionDelay != 0) { + direction = parent->direction & 0x18; + this->direction = direction; + this->actionDelay = 0; + InitializeAnimation(this, direction >> 3); + } + } + GetNextFrame(this); + } + } +} + +void sub_080A8C4C(Entity* this) { + GetNextFrame(this); + if (sub_080AF090(this) != 0) { + if (sub_080A7EB0(this) != 0) { + DeleteEntity(this); + } else { + sub_08016AD2(this); + } + } else { + this->action = 3; + this->flags &= 0x7f; + this->speed = 0; + } +} + +void sub_080A8C8C(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteEntity(this); + } +} diff --git a/src/projectile/projectile9.c b/src/projectile/projectile9.c new file mode 100644 index 00000000..dfb8e213 --- /dev/null +++ b/src/projectile/projectile9.c @@ -0,0 +1,76 @@ + +#include "entity.h" +#include "enemy.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_081298B8[])(Entity*); + +extern s32 sub_080AF090(Entity*); +extern s32 sub_080A7EB0(Entity*); +extern void sub_08016AD2(Entity*); + +void Projectile9(Entity* this) { + if (GetNextFunction(this) != 0) { + DeleteThisEntity(); + } + gUnk_081298B8[this->action](this); +} + +void sub_080A8CD4(Entity* this) { + if (this->type == 0) { + this->action = 1; + InitializeAnimation(this, this->direction >> 3); + } else { + this->action = 2; + InitializeAnimation(this, this->direction >> 3 | 4); + EnqueueSFX(SFX_160); + } +} + +void sub_080A8D0C(Entity* this) { + u32 direction; + Entity* parent; + + parent = this->parent; + if (parent == NULL) { + DeleteEntity(this); + } else { + if (parent->next == NULL) { + DeleteEntity(this); + } else { + if (this->spriteSettings.b.draw == 1) { + CopyPosition(parent, this); + if (this->actionDelay != 0) { + direction = parent->direction & 0x18; + this->direction = direction; + this->actionDelay = 0; + InitializeAnimation(this, direction >> 3); + } + } + GetNextFrame(this); + } + } +} + +void sub_080A8D60(Entity* this) { + GetNextFrame(this); + if (sub_080AF090(this) != 0) { + if (sub_080A7EB0(this) != 0) { + DeleteEntity(this); + } else { + sub_08016AD2(this); + } + } else { + this->action = 3; + this->flags &= 0x7f; + this->speed = 0; + } +} + +void sub_080A8DA0(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteEntity(this); + } +} diff --git a/src/projectile/projectileA.c b/src/projectile/projectileA.c new file mode 100644 index 00000000..1699a1a5 --- /dev/null +++ b/src/projectile/projectileA.c @@ -0,0 +1,155 @@ + +#include "entity.h" +#include "enemy.h" +#include "player.h" +#include "functions.h" +#include "random.h" +#include "audio.h" + +extern void (*const gUnk_08129954[])(Entity*); + +extern void (*const gUnk_08129968[])(Entity*); + +void sub_080A90D8(Entity*); + +extern void sub_0806F5BC(Entity*, u32, u32); +extern u32 sub_080041DC(Entity*, u32, u32); + +extern s8 gUnk_08129978[]; +extern s8 gUnk_08129980[]; +extern s8 gUnk_08129988[]; + +void ProjectileA(Entity* this) { + gUnk_08129954[GetNextFunction(this)](this); +} + +void sub_080A8DDC(Entity* this) { + if (((this->type != 3) && ((this->bitfield & 0x80) != 0)) && ((this->bitfield & 0x7f) != 0x1e)) { + this->action = 3; + this->flags &= 0x7f; + InitializeAnimation(this, 0x53); + } + gUnk_08129968[this->action](this); +} + +void sub_080A8E28(Entity* this) { + u32 uVar1; + s32 iVar2; + + this->action = 1; + this->field_0x20 = -0x10000; + if (this->type != 3) { + CopyPosition(this->parent, this); + sub_0806F5BC(this, 0x1000, this->direction); + this->height.WORD = this->parent->y.WORD - this->attachedEntity->y.WORD; + this->y.WORD -= this->height.WORD; + InitializeAnimation(this, 0x51); + SoundReq(SFX_1B5); + } + + switch (this->type) { + case 0: + case 1: + iVar2 = sub_080041DC(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI); + if (this->type == 1) { + uVar1 = Random() & 0x1ff; + if ((gScreenTransition.frameCount & 1U) == 0) { + iVar2 += uVar1; + } else { + iVar2 -= uVar1; + } + } + if (iVar2 < 0x20) { + iVar2 = 0x20; + } else if (0x400 < iVar2) { + iVar2 = 0x400; + } + this->field_0x20 = this->height.WORD / (iVar2 << 8) << 0xd; + this->field_0xf = 0x1e; + break; + case 2: + this->field_0x20 = (this->height.WORD / 0x18000) << 0xc; + break; + case 3: + this->height.WORD = 0xff600000; + uVar1 = (Random() & 3) * 2; + this->x.HALF.HI = gUnk_08129978[uVar1] + this->x.HALF.HI; + this->y.HALF.HI = gUnk_08129978[uVar1 + 1] + this->y.HALF.HI; + if ((uVar1 & 2) != 0) { + this->x.HALF.HI += gUnk_08129988[Random() & 0xf]; + this->y.HALF.HI += gUnk_08129980[Random() & 7]; + } else { + this->x.HALF.HI += gUnk_08129980[Random() & 7]; + this->y.HALF.HI += gUnk_08129988[Random() & 0xf]; + } + sub_08004168(this); + InitializeAnimation(this, 0); + break; + } +} + +void sub_080A8FB8(Entity* this) { + if (this->type == 3) { + if (sub_08003FC4(this, 0x1800) == 0) { + sub_08008790(this, 7); + CreateFx(this, 4, 0); + DeleteThisEntity(); + } + } else { + GetNextFrame(this); + sub_0806F69C(this); + if ((this->type != 2) && (--this->field_0xf == 0xff)) { + this->field_0xf = 0x1e; + sub_08004596(this, GetFacingDirection(this, &gPlayerEntity)); + } + if (sub_08003FC4(this, 0) == 0) { + this->action = 2; + sub_080A90D8(this); + if (this->type == 2) { + this->actionDelay = 0xf; + InitializeAnimation(this, 0x54); + } else { + InitializeAnimation(this, 0x52); + } + } + } +} + +void sub_080A9058(Entity* this) { + GetNextFrame(this); + if (this->type == 2) { + if (--this->actionDelay == 0xff) { + this->flags &= 0x7f; + this->action = 3; + InitializeAnimation(this, 0x55); + } else { + sub_0806F69C(this); + sub_080A90D8(this); + } + } else { + if ((this->frames.all & 0x80) != 0) { + this->action = 3; + this->flags &= 0x7f; + InitializeAnimation(this, 0x53); + } + } +} + +void sub_080A90BC(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteThisEntity(); + } +} + +void sub_080A90D8(Entity* this) { + u32 tmp; + + if (this->field_0x74.HWORD != TILE(this->x.HALF.HI, this->y.HALF.HI)) { + this->field_0x74.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI); + tmp = GetTileTypeByEntity(this); + if ((tmp == 0x13) || (tmp == 0x34)) { + sub_0807B7D8(0x34c, TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); + } + } +} diff --git a/src/projectile/projectileB.c b/src/projectile/projectileB.c new file mode 100644 index 00000000..0a4c6898 --- /dev/null +++ b/src/projectile/projectileB.c @@ -0,0 +1,27 @@ +#include "entity.h" +#include "player.h" +#include "coord.h" + +extern Hitbox* gUnk_08129998[]; +extern void sub_0803C0AC(Entity*); + +void ProjectileB(Entity* this) { + Entity* parent; + + if (this->action == 0) { + this->action = 1; + } + parent = this->parent; + if (((parent == NULL) || (parent->currentHealth == 0)) || (parent->next == NULL)) { + if (((this->bitfield & 0x80) != 0) && (this->field_0x4c == &gPlayerEntity)) { + sub_0803C0AC(this); + } + DeleteEntity(this); + } else { + this->hitbox = gUnk_08129998[parent->animationState]; + CopyPosition(parent, this); + if ((parent->iframes != 0) && (this->iframes == 0)) { + this->iframes = 0xff; + } + } +} diff --git a/src/projectile/projectileC.c b/src/projectile/projectileC.c new file mode 100644 index 00000000..8af3163a --- /dev/null +++ b/src/projectile/projectileC.c @@ -0,0 +1,68 @@ +#include "entity.h" +#include "random.h" +#include "coord.h" +#include "functions.h" + +extern Hitbox gUnk_080FD1E4; +extern u32 sub_080644C8(Entity*); +extern u8 gUnk_081299C8[]; +extern bool32 sub_080AE4CC(Entity*, u32, u32, u32); +extern Entity gUnk_02027EB4; + +void ProjectileC(Entity* this) { + Entity* entity; + u8 tmp; + + if (this->type == 0) { + if (this->action == 0) { + this->action = 1; + this->actionDelay = Random(); + this->spriteSettings.b.draw = 0; + } + if (this->bitfield == 0x80) { + if (this->parent != NULL) { + this->parent->type = 0xff; + } + DeleteThisEntity(); + } + CopyPosition(this->parent, this); + if (this->field_0xf != 0) { + this->field_0xf -= 1; + } else { + if (sub_080644C8(this) != 0) { + if (((this->actionDelay++) & 3) == 0) { + entity = sub_080A7EE0(0xc); + if (entity != NULL) { + entity->type = 1; + tmp = this->parent->field_0x3e; + entity->direction = (gUnk_081299C8[(this->actionDelay >> 2 & 7)] + (tmp << 3)) & 0x1f; + entity->parent = this->parent; + CopyPosition(this, entity); + } + } + } + } + } else { + if (this->action == 0) { + this->action = 1; + this->actionDelay = 0x12; + this->spriteSettings.b.draw = 0; + this->speed = 0x800; + this->hitbox = &gUnk_080FD1E4; + InitializeAnimation(this, 0); + } + if (this->bitfield == 0x80) { + if (this->parent != NULL) { + this->parent->type = 0xff; + } + DeleteThisEntity(); + } + if (--this->actionDelay == 0) { + DeleteThisEntity(); + } + sub_0806F69C(this); + if (sub_080AE4CC(&gUnk_02027EB4, this->x.HALF.HI, this->y.HALF.HI, 2) != 0) { + DeleteThisEntity(); + } + } +} diff --git a/src/projectile/projectileD.c b/src/projectile/projectileD.c new file mode 100644 index 00000000..931728dd --- /dev/null +++ b/src/projectile/projectileD.c @@ -0,0 +1,126 @@ +#include "entity.h" +#include "enemy.h" +#include "functions.h" +#include "audio.h" +#include "createObject.h" + +extern void (*const gUnk_081299D0[])(Entity*); + +extern void (*const gUnk_081299E4[])(Entity*); + +void sub_080A9488(Entity*); + +void sub_080A94C0(Entity*, u32); + +extern s32 sub_080AF090(Entity*); + +typedef struct { + u8 flipX; + u8 flipY; + u8 animIndex; + u8 unk; + Hitbox* hitbox; +} struct_081299F8; +extern struct_081299F8 gUnk_081299F8[]; + +void ProjectileD(Entity* this) { + gUnk_081299D0[GetNextFunction(this)](this); +} + +void sub_080A931C(Entity* this) { + gUnk_081299E4[this->action](this); +} + +void sub_080A9334(Entity* this) { + if ((this->bitfield & 0x80) != 0) { + if ((this->bitfield & 0x3f) != 0) { + ModHealth(-2); + sub_080A9488(this); + this->field_0x42 = 0; + this->iframes = 0; + } else { + DeleteThisEntity(); + } + } +} + +void sub_080A9370(Entity* this) { + this->action = 1; + this->spriteSettings.b.draw = 1; + this->flags &= 0x7f; + this->actionDelay = 0x6a; + this->field_0xf = 0; + this->field_0x20 = 0xa00; + sub_080A94C0(this, this->type); +} + +void sub_080A93A0(Entity* this) { + Entity* parent; + + parent = this->parent; + if ((parent == NULL) || (parent->next == NULL)) { + DeleteThisEntity(); + } + if (this->field_0xf != 0) { + DeleteThisEntity(); + } + if (parent->field_0xf != 0) { + this->action = 2; + this->flags = this->flags | 0x80; + parent->attachedEntity = NULL; + SoundReq(SFX_FC); + } +} + +void sub_080A93DC(Entity* this) { + if (this->collisions != 0) { + this->action = 3; + this->flags &= 0x7f; + this->actionDelay = 0x20; + InitializeAnimation(this, this->animIndex + 2); + EnqueueSFX(0x18a); + sub_0806F69C(this); + } else if (--this->actionDelay == 0) { + DeleteThisEntity(); + } + sub_080AF090(this); +} + +void sub_080A942C(Entity* this) { + if (--this->actionDelay == 0) { + DeleteThisEntity(); + } + GetNextFrame(this); +} + +void sub_080A9448(Entity* this) { + if (sub_08003FC4(this, 0x2800) == 0) { + CreateDust(this); + DeleteThisEntity(); + } else { + if (--this->actionDelay == 0) { + this->actionDelay = 2; + this->animationState = (this->animationState + 1) & 3; + sub_080A94C0(this, this->animationState); + } + } +} + +void sub_080A9488(Entity* this) { + this->action = 4; + this->flags &= 0x7f; + this->actionDelay = 2; + this->field_0x20 = 0x18000; + this->animationState = (this->field_0x3e & 0x18) >> 3; + EnqueueSFX(SFX_METAL_CLINK); + sub_080A94C0(this, this->animationState); +} + +void sub_080A94C0(Entity* this, u32 param) { + struct_081299F8* entry = &gUnk_081299F8[param]; + this->spriteSettings.b.flipX = entry->flipX; + this->spriteSettings.b.flipY = entry->flipY; + this->animIndex = entry->animIndex; + this->hitbox = entry->hitbox; + InitializeAnimation(this, this->animIndex); +} diff --git a/src/projectile/projectileE.c b/src/projectile/projectileE.c new file mode 100644 index 00000000..cc5745e5 --- /dev/null +++ b/src/projectile/projectileE.c @@ -0,0 +1,46 @@ +#include "entity.h" +#include "audio.h" +#include "coord.h" + +extern void (*const gUnk_08129A64[])(Entity*); + +void ProjectileE(Entity* this) { + gUnk_08129A64[this->action](this); +} + +void sub_080A9518(Entity* this) { + this->action = 1; + this->actionDelay = 10; + this->height.HALF.HI -= 2; + this->y.HALF.HI += 2; + InitializeAnimation(this, 0); + SoundReq(SFX_149); +} + +void sub_080A9540(Entity* this) { + const s16* tmp; + + if (--this->actionDelay == 0) { + this->action = 2; + this->flags &= 0x7f; + this->spritePriority.b0 = 7; + this->y.HALF.HI += 6; + InitializeAnimation(this, 1); + } else { + if (this->height.HALF.HI != 0) { + this->height.HALF.HI += 1; + } + + tmp = &gSineTable[this->direction]; + this->x.WORD += tmp[0] * this->speed; + this->y.WORD -= tmp[0x40] * this->speed; + GetNextFrame(this); + } +} + +void sub_080A95BC(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteEntity(this); + } +} diff --git a/src/projectile/projectileF.c b/src/projectile/projectileF.c new file mode 100644 index 00000000..5f9ce5a4 --- /dev/null +++ b/src/projectile/projectileF.c @@ -0,0 +1,197 @@ +#include "entity.h" +#include "enemy.h" +#include "random.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_08129ABC[])(Entity*); + +extern void (*const gUnk_08129AD0[])(Entity*); + +void sub_080A99F0(Entity*); +extern void sub_080AE58C(Entity*, u32, u32); +extern u32 sub_0806FC80(Entity*, Entity*, s32); + +extern u8 gUnk_08129ADC[]; + +void ProjectileF(Entity* this) { + gUnk_08129ABC[GetNextFunction(this)](this); +} + +void sub_080A95F8(Entity* this) { + gUnk_08129AD0[this->action](this); +} + +void sub_080A9610(Entity* this) { + u32 uVar1; + u32 uVar2; + + this->action = 1; + + switch (this->type) { + case 0: + sub_0806F62C(this, 0x4800, this->direction); + this->speed = 0x200; + this->actionDelay = 0; + this->field_0xf = this->direction; + this->field_0x78.HWORD = 300; + InitAnimationForceUpdate(this, 0); + break; + case 1: + this->spriteRendering.b3 = 3; + this->spritePriority.b0 = 6; + this->speed = (Random() & 0x1ff) + 0x200; + this->field_0x20 = (Random() & 0x1fff) + 0x18000; + uVar1 = (((u8)Random() & 7) - 4); + this->direction -= uVar1; + *(u32*)&this->field_0x78 = 600; + sub_0806F62C(this, this->speed, this->direction); + InitializeAnimation(this, 4); + break; + case 2: + if ((Random() & 1) != 0) { + this->direction = (Random() & 7) + this->direction; + } else { + this->direction = this->direction - (Random() & 7); + } + this->speed = 0x200; + this->actionDelay = 0x30; + sub_0806F62C(this, 0x5000, this->direction); + InitializeAnimation(this, 5); + break; + case 3: + CopyPosition(&gPlayerEntity, this); + this->height.WORD = 0xff600000; + this->x.HALF.HI += 0x60; + this->y.HALF.HI += 0x40; + this->x.HALF.HI -= (s32)Random() % 0xc0; + uVar2 = Random() & 0x7f; + this->y.HALF.HI -= uVar2; + InitializeAnimation(this, 0); + break; + } + + SoundReq(SFX_1B5); +} + +void sub_080A976C(Entity* this) { + u32 index; + + switch (this->type) { + case 0: + if (this->parent->action == 2) { + DeleteThisEntity(); + } + if ((this->type2 == 0) && ((this->bitfield & 0x80) != 0)) { + if ((this->bitfield & 0x7f) == 0) { + sub_080A99F0(this); + } + this->direction = this->field_0x3e << 3; + this->speed = 0x400; + this->type2 = 1; + this->actionDelay = 0; + this->flags &= 0x7f; + } + if (sub_0806FC80(this, this->parent, 0x40) != 0) { + if (this->type2 == 0) { + this->direction ^= 0x80; + this->speed = 0x400; + } else { + this->parent->currentHealth -= 1; + this->parent->iframes = 0x1e; + if (this->parent->field_0x7c.BYTES.byte0 != 0) { + this->parent->field_0x42 = 0x18; + this->parent->field_0x46 = 0x200; + this->parent->field_0x3e = this->direction >> 3; + } + SoundReq(SFX_BOSS_HIT); + sub_080A99F0(this); + } + } + UpdateAnimationSingleFrame(this); + this->field_0x78.HWORD--; + sub_0806F62C(this, this->speed, this->direction); + sub_080AE58C(this, this->direction >> 3, 0); + if ((this->collisions & 0xee00) != 0) { + this->direction = -this->direction; + } + if ((this->collisions & 0xee) != 0) { + this->direction = -this->direction ^ 0x80; + } + if (this->direction == this->field_0xf) { + return; + } + SoundReq(SFX_164); + if (this->field_0x78.HWORD == 0) { + this->actionDelay = 4; + } else { + this->actionDelay++; + } + + this->field_0xf = this->direction; + if (this->actionDelay < 2) { + return; + } + for (index = 0; index < 3; ++index) { + this->attachedEntity = sub_0804A98C(this, 0xf, 1); + if (this->attachedEntity != NULL) { + this->attachedEntity->parent = this->parent; + this->attachedEntity->direction = this->direction + gUnk_08129ADC[index]; + CopyPosition(this, this->attachedEntity); + } + } + sub_080A99F0(this); + break; + case 1: + if (this->parent->action == 2) { + sub_080A99F0(this); + } + GetNextFrame(this); + if (sub_08003FC4(this, 0x1800) != 0) { + sub_080AE58C(this, this->direction >> 3, 0); + if (this->collisions == 0) { + sub_0806F62C(this, (s32)this->speed, (u32)this->direction); + } else { + sub_080A99F0(this); + } + } + if (*(u32*)&this->field_0x78 < 0x1e) { + if ((*(u32*)&this->field_0x78 & 7) != 0) { + this->spriteSettings.b.draw = 1; + } else { + this->spriteSettings.b.draw = 0; + } + } + if (--*(u32*)&this->field_0x78 == -1) { + sub_080A99F0(this); + } + if ((this->bitfield & 0x80) == 0) { + return; + } + sub_080A99F0(this); + break; + case 2: + GetNextFrame(this); + if (--this->actionDelay != 0xff) { + sub_0806F62C(this, this->speed, this->direction); + return; + } + if (this->attachedEntity != NULL) { + this->attachedEntity->actionDelay = 1; + } + DeleteThisEntity(); + break; + case 3: + if (sub_08003FC4(this, 0x1800) != 0) { + return; + } + CreateFx(this, 4, 0); + DeleteThisEntity(); + break; + } +} + +void sub_080A99F0(Entity* this) { + CreateFx(this, 4, 0); + DeleteThisEntity(); +}