diff --git a/asm/non_matching/ShowNPCDialogue.inc b/asm/non_matching/ShowNPCDialogue.inc deleted file mode 100644 index 6db4a7c9..00000000 --- a/asm/non_matching/ShowNPCDialogue.inc +++ /dev/null @@ -1,216 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r6, r1, #0 - ldrh r1, [r6, #2] - asrs r7, r1, #4 - movs r0, #1 - ands r7, r0 - movs r0, #0xf - ands r1, r0 - cmp r1, #6 - bls _0806F1C8 - b _0806F332 -_0806F1C8: - lsls r0, r1, #2 - ldr r1, _0806F1D4 @ =_0806F1D8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806F1D4: .4byte _0806F1D8 -_0806F1D8: @ jump table - .4byte _0806F332 @ case 0 - .4byte _0806F342 @ case 1 - .4byte _0806F1F4 @ case 2 - .4byte _0806F24E @ case 3 - .4byte _0806F2BA @ case 4 - .4byte _0806F324 @ case 5 - .4byte _0806F336 @ case 6 -_0806F1F4: - ldr r4, [r6] - asrs r1, r4, #0xc - movs r0, #0xf - ands r1, r0 - ldr r0, _0806F210 @ =0x00000FFF - ands r4, r0 - movs r5, #0 - cmp r1, #1 - beq _0806F22A - cmp r1, #1 - bgt _0806F214 - cmp r1, #0 - beq _0806F21A - b _0806F248 - .align 2, 0 -_0806F210: .4byte 0x00000FFF -_0806F214: - cmp r1, #2 - beq _0806F23A - b _0806F248 -_0806F21A: - adds r0, r4, #0 - bl CheckRoomFlag - adds r5, r0, #0 -_0806F222: - adds r0, r4, #0 - bl SetRoomFlag - b _0806F248 -_0806F22A: - adds r0, r4, #0 - bl CheckLocalFlag - adds r5, r0, #0 -_0806F232: - adds r0, r4, #0 - bl SetLocalFlag - b _0806F248 -_0806F23A: - adds r0, r4, #0 - bl CheckGlobalFlag - adds r5, r0, #0 - adds r0, r4, #0 - bl SetGlobalFlag -_0806F248: - cmp r5, #0 - beq _0806F342 - b _0806F34C -_0806F24E: - ldr r4, [r6] - asrs r1, r4, #0xc - movs r0, #0xf - ands r1, r0 - ldr r0, _0806F26C @ =0x00000FFF - ands r4, r0 - movs r5, #0 - cmp r1, #1 - beq _0806F28A - cmp r1, #1 - bgt _0806F270 - cmp r1, #0 - beq _0806F276 - b _0806F248 - .align 2, 0 -_0806F26C: .4byte 0x00000FFF -_0806F270: - cmp r1, #2 - beq _0806F29E - b _0806F248 -_0806F276: - adds r0, r4, #0 - bl CheckRoomFlag - adds r5, r0, #0 - cmp r5, #0 - beq _0806F222 - adds r0, r4, #0 - bl ClearRoomFlag - b _0806F248 -_0806F28A: - adds r0, r4, #0 - bl CheckLocalFlag - adds r5, r0, #0 - cmp r5, #0 - beq _0806F232 - adds r0, r4, #0 - bl ClearLocalFlag - b _0806F248 -_0806F29E: - adds r0, r4, #0 - bl CheckGlobalFlag - adds r5, r0, #0 - cmp r5, #0 - bne _0806F2B2 - adds r0, r4, #0 - bl SetGlobalFlag - b _0806F248 -_0806F2B2: - adds r0, r4, #0 - bl ClearGlobalFlag - b _0806F248 -_0806F2BA: - ldr r4, [r6] - asrs r1, r4, #0xc - movs r0, #0xf - ands r1, r0 - ldr r0, _0806F2D8 @ =0x00000FFF - ands r4, r0 - movs r5, #0 - cmp r1, #4 - bhi _0806F248 - lsls r0, r1, #2 - ldr r1, _0806F2DC @ =_0806F2E0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806F2D8: .4byte 0x00000FFF -_0806F2DC: .4byte _0806F2E0 -_0806F2E0: @ jump table - .4byte _0806F2F4 @ case 0 - .4byte _0806F2FC @ case 1 - .4byte _0806F304 @ case 2 - .4byte _0806F30C @ case 3 - .4byte _0806F314 @ case 4 -_0806F2F4: - adds r0, r4, #0 - bl CheckRoomFlag - b _0806F320 -_0806F2FC: - adds r0, r4, #0 - bl CheckLocalFlag - b _0806F320 -_0806F304: - adds r0, r4, #0 - bl CheckGlobalFlag - b _0806F320 -_0806F30C: - adds r0, r4, #0 - bl CheckKinstoneFused - b _0806F320 -_0806F314: - adds r0, r4, #0 - bl GetInventoryValue - cmp r0, #0 - beq _0806F320 - movs r0, #1 -_0806F320: - adds r5, r0, #0 - b _0806F248 -_0806F324: - ldr r1, [r6, #4] - cmp r1, #0 - beq _0806F332 - mov r0, r8 - bl _call_via_r1 - b _0806F35E -_0806F332: - movs r0, #0 - b _0806F34E -_0806F336: - ldr r0, _0806F348 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806F34C -_0806F342: - ldrh r0, [r6, #6] - b _0806F34E - .align 2, 0 -_0806F348: .4byte gPlayerState -_0806F34C: - ldrh r0, [r6, #4] -_0806F34E: - cmp r7, #0 - beq _0806F35A - mov r1, r8 - bl MessageNoOverlap - b _0806F35E -_0806F35A: - bl MessageFromTarget -_0806F35E: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .syntax divided diff --git a/asm/non_matching/bigIceBlock/sub_08099880.inc b/asm/non_matching/bigIceBlock/sub_08099880.inc new file mode 100644 index 00000000..5b6cc241 --- /dev/null +++ b/asm/non_matching/bigIceBlock/sub_08099880.inc @@ -0,0 +1,69 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r1, r0, #1 + strb r1, [r5, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _08099896 + bl DeleteThisEntity + b _0809990E +_08099896: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x30 + bne _080998A4 + adds r0, r5, #0 + bl sub_08099C18 +_080998A4: + ldrb r0, [r5, #0xe] + movs r4, #0x3c + subs r4, r4, r0 + lsls r4, r4, #5 + movs r1, #0x80 + lsls r1, r1, #1 + adds r4, r4, r1 + adds r0, r5, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #2 + movs r3, #0 + bl sub_0806FCF4 + movs r0, #0xf + movs r1, #0x11 + movs r2, #0x40 + bl CreateObject + adds r6, r0, #0 + cmp r6, #0 + beq _0809990E + bl Random + adds r4, r0, #0 + asrs r0, r4, #0x10 + movs r1, #0x21 + bl __modsi3 + adds r2, r0, #0 + subs r2, #0x10 + movs r0, #0xf + ands r0, r4 + subs r4, r0, #4 + adds r3, r6, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + lsls r2, r2, #0x10 + lsls r3, r4, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + bl PositionRelative +_0809990E: + pop {r4, r5, r6, pc} + .syntax divided diff --git a/asm/non_matching/manager1/sub_080573AC.inc b/asm/non_matching/manager1/sub_080573AC.inc deleted file mode 100644 index fe845fce..00000000 --- a/asm/non_matching/manager1/sub_080573AC.inc +++ /dev/null @@ -1,77 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r6, r0, #0 - ldr r2, _08057434 @ =gRoomControls - ldr r0, [r2, #0x28] - ldr r1, _08057438 @ =0xFFFFE000 - adds r0, r0, r1 - str r0, [r2, #0x28] - ldr r0, [r2, #0x2c] - ldr r1, _0805743C @ =0xFFFFF000 - adds r0, r0, r1 - str r0, [r2, #0x2c] - ldr r5, _08057440 @ =gScreen - movs r1, #0xa - ldrsh r0, [r2, r1] - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #1 - ldrh r1, [r2, #0x2a] - adds r0, r0, r1 - strh r0, [r5, #0x2e] - movs r1, #0xc - ldrsh r0, [r2, r1] - ldrh r1, [r2, #8] - subs r0, r0, r1 - asrs r0, r0, #1 - ldrh r2, [r2, #0x2e] - adds r0, r0, r2 - strh r0, [r5, #0x30] - ldr r2, _08057444 @ =gSineTable - ldr r4, _08057448 @ =gRoomTransition - ldr r1, [r4] - ldrb r0, [r4] - adds r0, #0x40 - lsls r0, r0, #1 - adds r0, r0, r2 - movs r2, #0 - ldrsh r0, [r0, r2] - asrs r0, r0, #5 - adds r0, #0x10 - bl sub_0805732C - adds r0, r6, #0 - adds r0, #0x22 - ldrb r0, [r0] - cmp r0, #0 - bne _08057430 - ldr r0, [r4] - movs r1, #0x1f - ands r0, r1 - cmp r0, #0 - bne _08057430 - adds r2, r6, #0 - adds r2, #0x24 - ldrb r0, [r2] - adds r0, #1 - movs r1, #7 - ands r0, r1 - strb r0, [r2] - ldr r1, _0805744C @ =gUnk_08107C30 - ldrb r0, [r2] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] - adds r0, r5, #0 - adds r0, #0x68 - strh r1, [r0] -_08057430: - pop {r4, r5, r6, pc} - .align 2, 0 -_08057434: .4byte gRoomControls -_08057438: .4byte 0xFFFFE000 -_0805743C: .4byte 0xFFFFF000 -_08057440: .4byte gScreen -_08057444: .4byte gSineTable -_08057448: .4byte gRoomTransition -_0805744C: .4byte gUnk_08107C30 - .syntax divided diff --git a/asm/non_matching/pullableMushroom/sub_0808ABC4.inc b/asm/non_matching/pullableMushroom/sub_0808ABC4.inc new file mode 100644 index 00000000..254d7866 --- /dev/null +++ b/asm/non_matching/pullableMushroom/sub_0808ABC4.inc @@ -0,0 +1,155 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0xc] + ldr r0, _0808AC38 @ =0x00000201 + cmp r1, r0 + bne _0808ABD6 + bl DeleteThisEntity +_0808ABD6: + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x50] + bl sub_0808B1F0 + adds r2, r0, #0 + cmp r2, #7 + bhi _0808ABE6 + movs r2, #0 +_0808ABE6: + ldrb r3, [r4, #0x14] + lsls r1, r3, #2 + ldr r0, _0808AC3C @ =gUnk_081211CC + adds r5, r1, r0 + cmp r2, #0x1f + bhi _0808AC5A + cmp r2, #0 + beq _0808ABF8 + subs r2, #6 +_0808ABF8: + ldrh r0, [r5] + str r0, [r4, #0x70] + ldr r1, [r4, #0x50] + movs r0, #2 + ldrsb r0, [r5, r0] + ldrh r3, [r1, #0x2e] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + movs r0, #3 + ldrsb r0, [r5, r0] + ldrh r1, [r1, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrb r1, [r4, #0x14] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808AC40 + lsls r1, r2, #4 + movs r0, #0x80 + lsls r0, r0, #2 + subs r0, r0, r1 + str r0, [r4, #0x74] + lsls r0, r2, #3 + movs r1, #0x90 + lsls r1, r1, #1 + adds r0, r0, r1 + str r0, [r4, #0x78] + movs r0, #0xf + strb r0, [r4, #0x1e] + b _0808ACDE + .align 2, 0 +_0808AC38: .4byte 0x00000201 +_0808AC3C: .4byte gUnk_081211CC +_0808AC40: + lsls r1, r2, #4 + movs r0, #0x80 + lsls r0, r0, #2 + subs r0, r0, r1 + str r0, [r4, #0x78] + lsls r0, r2, #3 + movs r3, #0x90 + lsls r3, r3, #1 + adds r0, r0, r3 + str r0, [r4, #0x74] + movs r0, #0x14 + strb r0, [r4, #0x1e] + b _0808ACDE +_0808AC5A: + movs r0, #1 + ands r3, r0 + cmp r3, #0 + beq _0808AC9E + adds r1, r2, #0 + subs r1, #0x20 + lsls r1, r1, #2 + adds r0, #0xff + subs r0, r0, r1 + str r0, [r4, #0x74] + lsls r0, r2, #3 + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + str r0, [r4, #0x78] + movs r0, #0x10 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808AC92 + ldr r0, [r4, #0x50] + lsrs r1, r2, #1 + ldrh r0, [r0, #0x2e] + subs r0, r0, r1 + strh r0, [r4, #0x2e] + b _0808ACDE +_0808AC92: + ldr r1, [r4, #0x50] + lsrs r0, r2, #1 + ldrh r1, [r1, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + b _0808ACDE +_0808AC9E: + adds r1, r2, #0 + subs r1, #0x20 + lsls r1, r1, #2 + movs r0, #0x80 + lsls r0, r0, #1 + subs r0, r0, r1 + str r0, [r4, #0x78] + lsls r0, r2, #3 + movs r3, #0xa0 + lsls r3, r3, #1 + adds r0, r0, r3 + str r0, [r4, #0x74] + movs r0, #0x15 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808ACCE + ldr r0, [r4, #0x50] + lsrs r1, r2, #1 + ldrh r0, [r0, #0x32] + adds r1, r1, r0 + b _0808ACD6 +_0808ACCE: + ldr r0, [r4, #0x50] + lsrs r2, r2, #1 + ldrh r1, [r0, #0x32] + subs r1, r1, r2 +_0808ACD6: + movs r0, #3 + ldrsb r0, [r5, r0] + adds r0, r0, r1 + strh r0, [r4, #0x32] +_0808ACDE: + ldr r1, [r4, #0x74] + ldr r2, [r4, #0x78] + ldr r3, [r4, #0x70] + adds r0, r4, #0 + bl sub_0805EC9C + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/pullableMushroom/sub_0808ACEC.inc b/asm/non_matching/pullableMushroom/sub_0808ACEC.inc new file mode 100644 index 00000000..aed579ab --- /dev/null +++ b/asm/non_matching/pullableMushroom/sub_0808ACEC.inc @@ -0,0 +1,75 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0 + beq _0808AD00 + adds r0, r4, #0 + movs r1, #0 + bl InitializeAnimation +_0808AD00: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + subs r0, #4 + cmp r0, #0x12 + bhi _0808AD92 + lsls r0, r0, #2 + ldr r1, _0808AD1C @ =_0808AD20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808AD1C: .4byte _0808AD20 +_0808AD20: @ jump table + .4byte _0808AD6C @ case 0 + .4byte _0808AD6C @ case 1 + .4byte _0808AD6C @ case 2 + .4byte _0808AD92 @ case 3 + .4byte _0808AD6C @ case 4 + .4byte _0808AD6C @ case 5 + .4byte _0808AD6C @ case 6 + .4byte _0808AD6C @ case 7 + .4byte _0808AD6C @ case 8 + .4byte _0808AD6C @ case 9 + .4byte _0808AD92 @ case 10 + .4byte _0808AD92 @ case 11 + .4byte _0808AD6C @ case 12 + .4byte _0808AD6C @ case 13 + .4byte _0808AD6C @ case 14 + .4byte _0808AD88 @ case 15 + .4byte _0808AD6C @ case 16 + .4byte _0808AD92 @ case 17 + .4byte _0808AD6C @ case 18 +_0808AD6C: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + bl sub_0806F5A4 + strb r0, [r4, #0x14] + movs r0, #2 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + b _0808AD9E +_0808AD88: + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + b _0808AD9E +_0808AD92: + movs r0, #0 + strb r0, [r4, #0xf] + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08078930 +_0808AD9E: + pop {r4, pc} + .syntax divided diff --git a/asm/non_matching/pullableMushroom/sub_0808B0BC.inc b/asm/non_matching/pullableMushroom/sub_0808B0BC.inc new file mode 100644 index 00000000..11b0d898 --- /dev/null +++ b/asm/non_matching/pullableMushroom/sub_0808B0BC.inc @@ -0,0 +1,85 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + sub sp, #0x88 + adds r5, r0, #0 + ldr r1, [r5, #0x50] + bl sub_0808B1F0 + adds r7, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + beq _0808B0D6 + cmp r0, #1 + beq _0808B0DE + b _0808B162 +_0808B0D6: + adds r0, r5, #0 + bl GetNextFrame + b _0808B162 +_0808B0DE: + ldr r6, _0808B148 @ =gPlayerEntity + ldrb r0, [r6, #0x14] + movs r1, #0xe + ands r1, r0 + ldr r0, _0808B14C @ =gUnk_08126EE4 + adds r1, r1, r0 + mov r2, sp + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r6, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r6, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + mov r0, sp + adds r1, r5, #0 + movs r2, #7 + movs r3, #7 + bl sub_0800419C + cmp r0, #0 + beq _0808B154 + ldrb r0, [r6, #0xc] + cmp r0, #1 + bne _0808B162 + ldr r4, _0808B150 @ =gPlayerState + adds r0, r4, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _0808B162 + movs r0, #0x1b + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x38 + strb r7, [r0] + ldrb r0, [r5, #0x15] + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x39 + strb r0, [r1] + ldr r0, [r5, #0x50] + adds r1, r6, #0 + bl sub_0808B1F0 + adds r1, r4, #0 + adds r1, #0x3a + strb r0, [r1] + b _0808B162 + .align 2, 0 +_0808B148: .4byte gPlayerEntity +_0808B14C: .4byte gUnk_08126EE4 +_0808B150: .4byte gPlayerState +_0808B154: + movs r0, #0x40 + strh r0, [r5, #0x24] + cmp r7, #0x3f + bhi _0808B162 + adds r0, r5, #0 + bl LinearMoveUpdate +_0808B162: + add sp, #0x88 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/pullableMushroom/sub_0808B168.inc b/asm/non_matching/pullableMushroom/sub_0808B168.inc new file mode 100644 index 00000000..81551053 --- /dev/null +++ b/asm/non_matching/pullableMushroom/sub_0808B168.inc @@ -0,0 +1,68 @@ + .syntax unified + push {r4, r5, lr} + adds r3, r0, #0 + cmp r1, #0 + beq _0808B188 + ldrb r0, [r3, #0x14] + movs r1, #2 + eors r1, r0 + lsls r1, r1, #1 + ldr r0, _0808B184 @ =gUnk_081211F4 + adds r2, r1, r0 + adds r1, r2, #1 + ldr r4, [r3, #0x50] + adds r5, r4, #0 + b _0808B1CE + .align 2, 0 +_0808B184: .4byte gUnk_081211F4 +_0808B188: + ldrb r1, [r3, #0x14] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808B1B8 + ldr r5, _0808B1AC @ =gPlayerEntity + ldr r4, [r3, #0x50] + ldrb r1, [r3, #0x14] + lsls r2, r1, #1 + ldr r0, _0808B1B0 @ =gUnk_081211FC + adds r2, r2, r0 + movs r0, #2 + eors r1, r0 + lsls r1, r1, #1 + ldr r0, _0808B1B4 @ =gUnk_081211F5 + adds r1, r1, r0 + b _0808B1CE + .align 2, 0 +_0808B1AC: .4byte gPlayerEntity +_0808B1B0: .4byte gUnk_081211FC +_0808B1B4: .4byte gUnk_081211F4+1 +_0808B1B8: + ldr r5, [r3, #0x50] + ldr r4, _0808B1E4 @ =gPlayerEntity + movs r0, #2 + eors r0, r1 + lsls r0, r0, #1 + ldr r1, _0808B1E8 @ =gUnk_081211F4 + adds r2, r0, r1 + ldrb r0, [r3, #0x14] + lsls r0, r0, #1 + ldr r1, _0808B1EC @ =gUnk_081211FD + adds r1, r0, r1 +_0808B1CE: + movs r0, #0 + ldrsb r0, [r2, r0] + ldrh r5, [r5, #0x2e] + adds r0, r0, r5 + strh r0, [r3, #0x2e] + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r4, [r4, #0x32] + adds r0, r0, r4 + strh r0, [r3, #0x32] + pop {r4, r5, pc} + .align 2, 0 +_0808B1E4: .4byte gPlayerEntity +_0808B1E8: .4byte gUnk_081211F4 +_0808B1EC: .4byte gUnk_081211FC+1 + .syntax divided diff --git a/asm/non_matching/pushableFurniture/sub_0808F990.inc b/asm/non_matching/pushableFurniture/sub_0808F990.inc new file mode 100644 index 00000000..11bf33cd --- /dev/null +++ b/asm/non_matching/pushableFurniture/sub_0808F990.inc @@ -0,0 +1,170 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r2, #1 + strb r2, [r4, #0xc] + movs r3, #0 + movs r0, #0x80 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0xf] + strb r3, [r4, #0xe] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + adds r0, r4, #0 + adds r0, #0x81 + strb r3, [r0] + adds r0, #2 + strb r3, [r0] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _0808F9E8 + 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] + adds r0, r4, #0 + adds r0, #0x80 + strb r3, [r0] + b _0808FA1C +_0808F9E8: + adds r0, r4, #0 + adds r0, #0x80 + 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, #5 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _0808FA0A + cmp r0, #4 + bne _0808FA1C +_0808FA0A: + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xfe + strb r0, [r1] + strb r3, [r4, #0xd] + strb r3, [r4, #0x1e] +_0808FA1C: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0808FAC4 + movs r6, #0 + cmp r0, #0x80 + beq _0808FA84 + ldrh r1, [r4, #0xa] + ldr r0, _0808FA38 @ =0x00000101 + cmp r1, r0 + bne _0808FA3C + movs r0, #0xf + ldrsb r0, [r4, r0] + ldrh r1, [r4, #0x32] + b _0808FA42 + .align 2, 0 +_0808FA38: .4byte 0x00000101 +_0808FA3C: + movs r0, #0xf + ldrsb r0, [r4, r0] + ldrh r1, [r4, #0x2e] +_0808FA42: + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x7e + strh r0, [r1] + adds r5, r1, #0 + ldr r3, [r4, #0x50] + cmp r3, #0 + bne _0808FA5E + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl CheckFlags + b _0808FA7C +_0808FA5E: + adds r2, r4, #0 + adds r2, #0x82 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808FA76 + ldrb r0, [r3, #0xc] + cmp r0, #2 + bne _0808FAA2 + adds r6, #1 + b _0808FAA2 +_0808FA76: + ldrb r0, [r2] + bl CheckLocalFlag +_0808FA7C: + cmp r0, #0 + beq _0808FAA2 + adds r6, #1 + b _0808FAA2 +_0808FA84: + movs r6, #1 + ldrh r1, [r4, #0xa] + ldr r0, _0808FA94 @ =0x00000101 + cmp r1, r0 + bne _0808FA98 + ldrh r1, [r4, #0x32] + b _0808FA9A + .align 2, 0 +_0808FA94: .4byte 0x00000101 +_0808FA98: + ldrh r1, [r4, #0x2e] +_0808FA9A: + adds r0, r4, #0 + adds r0, #0x7e + strh r1, [r0] + adds r5, r0, #0 +_0808FAA2: + cmp r6, #0 + beq _0808FAC4 + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + ldrh r1, [r4, #0xa] + ldr r0, _0808FABC @ =0x00000101 + cmp r1, r0 + bne _0808FAC0 + ldrh r0, [r5] + strh r0, [r4, #0x32] + b _0808FAC4 + .align 2, 0 +_0808FABC: .4byte 0x00000101 +_0808FAC0: + ldrh r0, [r5] + strh r0, [r4, #0x2e] +_0808FAC4: + adds r0, r4, #0 + bl sub_0808FF50 + pop {r4, r5, r6, pc} + .syntax divided diff --git a/asm/non_matching/pushableFurniture/sub_08090094.inc b/asm/non_matching/pushableFurniture/sub_08090094.inc new file mode 100644 index 00000000..268ef34a --- /dev/null +++ b/asm/non_matching/pushableFurniture/sub_08090094.inc @@ -0,0 +1,201 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + adds r0, r7, #0 + movs r1, #1 + bl sub_080002E0 + adds r4, r0, #0 + adds r0, r7, #0 + movs r1, #1 + bl GetTileIndex + adds r3, r0, #0 + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r3 + cmp r0, #0 + bne _0809012C + adds r3, r5, #0 + ldr r1, _080900D0 @ =0xFFFFBFDC + adds r0, r3, r1 + cmp r0, #0xb + bhi _0809011A + lsls r0, r0, #2 + ldr r1, _080900D4 @ =_080900D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080900D0: .4byte 0xFFFFBFDC +_080900D4: .4byte _080900D8 +_080900D8: @ jump table + .4byte _08090114 @ case 0 + .4byte _08090108 @ case 1 + .4byte _0809011A @ case 2 + .4byte _0809011A @ case 3 + .4byte _0809011A @ case 4 + .4byte _0809011A @ case 5 + .4byte _0809011A @ case 6 + .4byte _0809011A @ case 7 + .4byte _08090114 @ case 8 + .4byte _0809010E @ case 9 + .4byte _08090114 @ case 10 + .4byte _0809010E @ case 11 +_08090108: + cmp r4, #5 + bne _0809011A + b _08090118 +_0809010E: + cmp r4, #5 + bne _0809011A + b _08090118 +_08090114: + cmp r4, #0xa + bne _0809011A +_08090118: + ldr r3, _08090128 @ =0x00004022 +_0809011A: + adds r0, r3, #0 + adds r1, r7, #0 + movs r2, #1 + bl SetTile + b _08090242 + .align 2, 0 +_08090128: .4byte 0x00004022 +_0809012C: + ldr r1, _08090140 @ =0xFFFFBFDE + adds r0, r3, r1 + cmp r0, #0xd + bls _08090136 + b _08090242 +_08090136: + lsls r0, r0, #2 + ldr r1, _08090144 @ =_08090148 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08090140: .4byte 0xFFFFBFDE +_08090144: .4byte _08090148 +_08090148: @ jump table + .4byte _08090242 @ case 0 + .4byte _08090242 @ case 1 + .4byte _080901EC @ case 2 + .4byte _08090180 @ case 3 + .4byte _08090242 @ case 4 + .4byte _08090242 @ case 5 + .4byte _08090242 @ case 6 + .4byte _08090242 @ case 7 + .4byte _08090242 @ case 8 + .4byte _08090242 @ case 9 + .4byte _08090210 @ case 10 + .4byte _080901B4 @ case 11 + .4byte _08090210 @ case 12 + .4byte _080901B4 @ case 13 +_08090180: + ldr r0, _080901A8 @ =0x00004024 + cmp r5, r0 + bne _08090194 + ldr r3, _080901AC @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] +_08090194: + ldr r0, _080901B0 @ =0x0000402C + cmp r5, r0 + bne _08090238 + ldr r3, _080901AC @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x10 + b _08090234 + .align 2, 0 +_080901A8: .4byte 0x00004024 +_080901AC: .4byte 0x00004022 +_080901B0: .4byte 0x0000402C +_080901B4: + ldr r0, _080901DC @ =0x0000402C + cmp r5, r0 + bne _080901C8 + ldr r3, _080901E0 @ =0x0000402B + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] +_080901C8: + ldr r0, _080901E4 @ =0x00004024 + cmp r5, r0 + bne _08090238 + ldr r3, _080901E8 @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x10 + b _08090234 + .align 2, 0 +_080901DC: .4byte 0x0000402C +_080901E0: .4byte 0x0000402B +_080901E4: .4byte 0x00004024 +_080901E8: .4byte 0x00004022 +_080901EC: + ldr r0, _08090204 @ =0x00004025 + cmp r5, r0 + bne _08090200 + ldr r3, _08090208 @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r2] +_08090200: + ldr r0, _0809020C @ =0x0000402D + b _08090226 + .align 2, 0 +_08090204: .4byte 0x00004025 +_08090208: .4byte 0x00004022 +_0809020C: .4byte 0x0000402D +_08090210: + ldr r0, _08090244 @ =0x0000402D + cmp r5, r0 + bne _08090224 + ldr r3, _08090248 @ =0x0000402B + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r2] +_08090224: + ldr r0, _0809024C @ =0x00004025 +_08090226: + cmp r5, r0 + bne _08090238 + ldr r3, _08090250 @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x20 +_08090234: + orrs r0, r1 + strb r0, [r2] +_08090238: + adds r0, r3, #0 + adds r1, r7, #0 + movs r2, #1 + bl SetTile +_08090242: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08090244: .4byte 0x0000402D +_08090248: .4byte 0x0000402B +_0809024C: .4byte 0x00004025 +_08090250: .4byte 0x00004022 + .syntax divided diff --git a/asm/non_matching/pushableFurniture/sub_0809028C.inc b/asm/non_matching/pushableFurniture/sub_0809028C.inc new file mode 100644 index 00000000..00af45a0 --- /dev/null +++ b/asm/non_matching/pushableFurniture/sub_0809028C.inc @@ -0,0 +1,256 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + adds r4, r6, #0 + adds r4, #0x83 + ldrb r0, [r4] + movs r2, #0x30 + ands r2, r0 + movs r0, #0 + mov sb, r0 + strb r2, [r4] + adds r0, r6, #0 + adds r0, #0x70 + ldrh r5, [r0] + adds r7, r5, #0 + subs r7, #0x80 + adds r0, #2 + ldrh r3, [r0] + movs r0, #0x80 + rsbs r0, r0, #0 + adds r0, r0, r3 + mov r8, r0 + cmp r1, #1 + bne _0809039A + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _080902D4 + adds r1, r3, #0 + subs r1, #0x7f + movs r0, #0 + bl sub_08090480 + b _080902FE +_080902D4: + mov r0, r8 + movs r1, #2 + bl GetTileType + adds r1, r0, #0 + ldr r0, _080902EC @ =0x00000301 + cmp r1, r0 + beq _080902F0 + adds r0, #7 + cmp r1, r0 + beq _080902F6 + b _080902FE + .align 2, 0 +_080902EC: .4byte 0x00000301 +_080902F0: + ldrb r0, [r4] + movs r1, #8 + b _080902FA +_080902F6: + ldrb r0, [r4] + movs r1, #2 +_080902FA: + orrs r0, r1 + strb r0, [r4] +_080902FE: + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x2a + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _0809031E + movs r0, #0 + adds r1, r7, #0 + bl sub_08090480 + movs r0, #0 + mov r1, r8 + bl sub_08090480 +_0809031E: + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0809034E + subs r4, r7, #1 + adds r0, r4, #0 + movs r1, #1 + bl GetTileType + movs r1, #0xc0 + lsls r1, r1, #2 + cmp r0, r1 + bne _0809033C + b _08090478 +_0809033C: + movs r0, #0 + adds r1, r4, #0 + bl sub_08090480 + subs r1, r7, #2 + movs r0, #2 + bl sub_08090480 + b _08090478 +_0809034E: + subs r0, r7, #1 + movs r1, #2 + bl GetTileType + adds r1, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + cmp r1, r0 + beq _08090368 + adds r0, #8 + cmp r1, r0 + beq _0809036E + b _08090376 +_08090368: + ldrb r1, [r4] + movs r0, #4 + b _08090372 +_0809036E: + ldrb r1, [r4] + movs r0, #1 +_08090372: + orrs r0, r1 + strb r0, [r4] +_08090376: + ldrb r1, [r4] + movs r0, #0x15 + ands r0, r1 + cmp r0, #0 + beq _08090478 + movs r0, #0x2a + ands r0, r1 + cmp r0, #0 + bne _08090478 + movs r0, #0 + adds r1, r7, #0 + bl sub_08090480 + movs r0, #1 + mov r1, r8 + bl sub_08090480 + b _08090478 +_0809039A: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _080903AE + adds r1, r5, #0 + subs r1, #0x81 + movs r0, #0 + bl sub_08090480 + b _080903DA +_080903AE: + adds r0, r7, #0 + movs r1, #2 + bl GetTileType + adds r1, r0, #0 + ldr r0, _080903C8 @ =0x00000302 + cmp r1, r0 + beq _080903CC + adds r0, #4 + cmp r1, r0 + beq _080903D2 + b _080903DA + .align 2, 0 +_080903C8: .4byte 0x00000302 +_080903CC: + ldrb r0, [r4] + movs r1, #4 + b _080903D6 +_080903D2: + ldrb r0, [r4] + movs r1, #1 +_080903D6: + orrs r0, r1 + strb r0, [r4] +_080903DA: + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x15 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _080903FA + movs r0, #0 + adds r1, r7, #0 + bl sub_08090480 + movs r0, #0 + mov r1, r8 + bl sub_08090480 +_080903FA: + ldrb r1, [r4] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0809042C + mov r4, r8 + adds r4, #1 + adds r0, r4, #0 + movs r1, #1 + bl GetTileType + movs r1, #0xc0 + lsls r1, r1, #2 + cmp r0, r1 + beq _08090478 + movs r0, #0 + adds r1, r4, #0 + bl sub_08090480 + mov r1, r8 + adds r1, #2 + movs r0, #1 + bl sub_08090480 + b _08090478 +_0809042C: + mov r0, r8 + adds r0, #1 + movs r1, #2 + bl GetTileType + adds r1, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + cmp r1, r0 + beq _08090448 + adds r0, #6 + cmp r1, r0 + beq _0809044E + b _08090456 +_08090448: + ldrb r1, [r4] + movs r0, #8 + b _08090452 +_0809044E: + ldrb r1, [r4] + movs r0, #2 +_08090452: + orrs r0, r1 + strb r0, [r4] +_08090456: + ldrb r1, [r4] + movs r0, #0x2a + ands r0, r1 + cmp r0, #0 + beq _08090478 + movs r0, #0x15 + ands r0, r1 + cmp r0, #0 + bne _08090478 + movs r0, #2 + adds r1, r7, #0 + bl sub_08090480 + movs r0, #0 + mov r1, r8 + bl sub_08090480 +_08090478: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/pushableStatue/sub_080896B0.inc b/asm/non_matching/pushableStatue/sub_080896B0.inc new file mode 100644 index 00000000..68c951e2 --- /dev/null +++ b/asm/non_matching/pushableStatue/sub_080896B0.inc @@ -0,0 +1,91 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + ldr r0, _08089750 @ =gPlayerState + ldrb r1, [r0, #5] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0x12 + bne _08089768 + ldr r6, _08089754 @ =gPlayerEntity + adds r0, r6, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08089768 + ldrb r3, [r6, #0x14] + movs r2, #6 + ands r2, r3 + lsls r2, r2, #1 + ldr r0, _08089758 @ =gUnk_080B4468 + adds r2, r2, r0 + ldr r0, _0808975C @ =gUnk_080B4488 + lsrs r3, r3, #1 + lsls r3, r3, #1 + adds r3, r3, r0 + movs r0, #0x2e + ldrsh r1, [r6, r0] + movs r4, #0 + ldrsh r0, [r2, r4] + adds r1, r1, r0 + ldr r5, _08089760 @ =gRoomControls + ldrh r0, [r5, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r7, #0x32 + ldrsh r0, [r6, r7] + movs r7, #2 + ldrsh r2, [r2, r7] + adds r0, r0, r2 + ldrh r2, [r5, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r1, r0 + movs r0, #0 + ldrsh r7, [r3, r0] + subs r1, r1, r7 + lsls r4, r1, #0x10 + lsrs r0, r4, #0x10 + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080002C8 + adds r1, r0, #0 + subs r0, #0x26 + cmp r0, #1 + bls _08089768 + cmp r1, #0x29 + beq _08089768 + ldrb r0, [r5] + bl GetLayerByIndex + asrs r1, r4, #0x10 + ldr r2, _08089764 @ =0x00002004 + adds r0, r0, r2 + adds r2, r0, r1 + ldrb r2, [r2] + subs r1, r1, r7 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, #0 + bne _08089768 + cmp r0, #0 + bne _08089768 + movs r0, #1 + b _0808976A + .align 2, 0 +_08089750: .4byte gPlayerState +_08089754: .4byte gPlayerEntity +_08089758: .4byte gUnk_080B4468 +_0808975C: .4byte gUnk_080B4488 +_08089760: .4byte gRoomControls +_08089764: .4byte 0x00002004 +_08089768: + movs r0, #0 +_0808976A: + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/object/bigIceBlock.s b/asm/object/bigIceBlock.s deleted file mode 100644 index 6194398b..00000000 --- a/asm/object/bigIceBlock.s +++ /dev/null @@ -1,806 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start BigIceBlock -BigIceBlock: @ 0x08099734 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #3 - bhi _08099754 - ldr r0, _08099750 @ =gUnk_081237A0 - ldrb r1, [r2, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 - b _0809975A - .align 2, 0 -_08099750: .4byte gUnk_081237A0 -_08099754: - adds r0, r2, #0 - bl sub_08099D30 -_0809975A: - pop {pc} - - thumb_func_start sub_0809975C -sub_0809975C: @ 0x0809975C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _08099770 - bl DeleteThisEntity -_08099770: - movs r2, #1 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r1, #4 - movs r0, #0x48 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x3f - strb r2, [r0] - subs r1, #5 - movs r0, #0x80 - strb r0, [r1] - ldr r0, _080997C8 @ =gUnk_080FD190 - str r0, [r4, #0x48] - adds r0, r4, #0 - bl sub_08099910 - ldrb r1, [r4, #0xa] - adds r0, r4, #0 - bl InitializeAnimation - movs r0, #0x85 - movs r1, #4 - movs r2, #0 - bl CreateObject - cmp r0, #0 - beq _080997C6 - str r4, [r0, #0x50] -_080997C6: - pop {r4, pc} - .align 2, 0 -_080997C8: .4byte gUnk_080FD190 - - thumb_func_start sub_080997CC -sub_080997CC: @ 0x080997CC - push {r4, lr} - adds r4, r0, #0 - bl sub_0809963C - cmp r0, #0 - beq _080997EC - movs r0, #0 - movs r1, #2 - strb r1, [r4, #0xc] - strb r0, [r4, #0xe] - ldr r0, _080997F0 @ =0x000001B3 - bl EnqueueSFX - adds r0, r4, #0 - bl sub_080997F4 -_080997EC: - pop {r4, pc} - .align 2, 0 -_080997F0: .4byte 0x000001B3 - - thumb_func_start sub_080997F4 -sub_080997F4: @ 0x080997F4 - push {r4, lr} - adds r4, r0, #0 - bl sub_0809963C - adds r1, r0, #0 - cmp r1, #0 - bne _08099822 - ldrb r0, [r4, #0xe] - cmp r0, #1 - bls _0809980E - subs r0, #2 - strb r0, [r4, #0xe] - b _08099810 -_0809980E: - strb r1, [r4, #0xe] -_08099810: - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _08099828 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0805EC60 - b _0809987C -_08099822: - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] -_08099828: - ldr r1, _08099858 @ =gUnk_081237B0 - ldrb r0, [r4, #0xe] - lsrs r0, r0, #5 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r2, [r0] - movs r1, #0x80 - lsls r1, r1, #1 - adds r0, r4, #0 - movs r3, #0 - bl sub_0805EC9C - ldrb r0, [r4, #0xa] - cmp r0, #1 - beq _0809986C - cmp r0, #2 - beq _0809985C - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl SetFlag - b _0809986C - .align 2, 0 -_08099858: .4byte gUnk_081237B0 -_0809985C: - adds r0, r4, #0 - adds r0, #0x86 - ldrh r3, [r0] - adds r0, r4, #0 - movs r1, #0x53 - movs r2, #0 - bl sub_080A2A3C -_0809986C: - movs r0, #3 - strb r0, [r4, #0xc] - movs r0, #0x3c - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] -_0809987C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08099880 -sub_08099880: @ 0x08099880 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xe] - subs r1, r0, #1 - strb r1, [r5, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _08099896 - bl DeleteThisEntity - b _0809990E -_08099896: - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x30 - bne _080998A4 - adds r0, r5, #0 - bl sub_08099C18 -_080998A4: - ldrb r0, [r5, #0xe] - movs r4, #0x3c - subs r4, r4, r0 - lsls r4, r4, #5 - movs r1, #0x80 - lsls r1, r1, #1 - adds r4, r4, r1 - adds r0, r5, #0 - adds r2, r4, #0 - movs r3, #0 - bl sub_0805EC9C - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #2 - movs r3, #0 - bl sub_0806FCF4 - movs r0, #0xf - movs r1, #0x11 - movs r2, #0x40 - bl CreateObject - adds r6, r0, #0 - cmp r6, #0 - beq _0809990E - bl Random - adds r4, r0, #0 - asrs r0, r4, #0x10 - movs r1, #0x21 - bl __modsi3 - adds r2, r0, #0 - subs r2, #0x10 - movs r0, #0xf - ands r0, r4 - subs r4, r0, #4 - adds r3, r6, #0 - adds r3, #0x29 - ldrb r1, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r3] - lsls r2, r2, #0x10 - lsls r3, r4, #0x10 - adds r0, r5, #0 - adds r1, r6, #0 - bl PositionRelative -_0809990E: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08099910 -sub_08099910: @ 0x08099910 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r3, _08099968 @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - asrs r6, r0, #4 - movs r2, #0x3f - ands r6, r2 - movs r1, #0x32 - ldrsh r0, [r4, r1] - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r6, r0 - adds r0, r4, #0 - adds r0, #0x6e - strh r6, [r0] - ldrh r2, [r4, #0x2e] - movs r0, #8 - adds r1, r0, #0 - ands r1, r2 - lsls r1, r1, #0x10 - lsrs r1, r1, #0x13 - ldrh r2, [r4, #0x32] - ands r0, r2 - lsls r0, r0, #0x10 - asrs r0, r0, #0x12 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - adds r1, r1, r0 - adds r0, r4, #0 - adds r0, #0x6c - strh r1, [r0] - cmp r1, #2 - beq _08099A4C - cmp r1, #2 - bhi _0809996C - cmp r1, #1 - beq _080999A8 - b _08099972 - .align 2, 0 -_08099968: .4byte gRoomControls -_0809996C: - cmp r1, #3 - bne _08099972 - b _08099AF0 -_08099972: - ldr r5, _080999A4 @ =0x00004022 - adds r1, r6, #0 - subs r1, #0x41 - adds r4, #0x38 - ldrb r2, [r4] - adds r0, r5, #0 - bl SetTile - adds r1, r6, #0 - subs r1, #0x40 - ldrb r2, [r4] - adds r0, r5, #0 - bl SetTile - subs r1, r6, #1 - ldrb r2, [r4] - adds r0, r5, #0 - bl SetTile - ldrb r2, [r4] - adds r0, r5, #0 - adds r1, r6, #0 - bl SetTile - b _08099BF0 - .align 2, 0 -_080999A4: .4byte 0x00004022 -_080999A8: - adds r5, r6, #0 - subs r5, #0x41 - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - adds r4, #0x38 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099A40 @ =0x00004024 - cmp r0, #0x12 - bne _080999C0 - adds r1, #0x55 -_080999C0: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - ldr r7, _08099A44 @ =0x00004022 - adds r1, r6, #0 - subs r1, #0x40 - ldrb r2, [r4] - adds r0, r7, #0 - bl SetTile - adds r5, r6, #0 - subs r5, #0x3f - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099A48 @ =0x00004025 - cmp r0, #0x12 - bne _080999EE - adds r1, #0x56 -_080999EE: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - subs r5, r6, #1 - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099A40 @ =0x00004024 - cmp r0, #0x12 - bne _08099A0C - adds r1, #0x55 -_08099A0C: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - ldrb r2, [r4] - adds r0, r7, #0 - adds r1, r6, #0 - bl SetTile - adds r5, r6, #1 - adds r0, r5, #0 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099A48 @ =0x00004025 - cmp r0, #0x12 - bne _08099A32 - adds r1, #0x56 -_08099A32: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - b _08099BF0 - .align 2, 0 -_08099A40: .4byte 0x00004024 -_08099A44: .4byte 0x00004022 -_08099A48: .4byte 0x00004025 -_08099A4C: - adds r7, r6, #0 - subs r7, #0x41 - lsls r0, r7, #0x10 - lsrs r0, r0, #0x10 - adds r5, r4, #0 - adds r5, #0x38 - ldrb r1, [r5] - bl sub_080002C8 - ldr r1, _08099AE4 @ =0x00004023 - cmp r0, #0x12 - bne _08099A66 - adds r1, #0x54 -_08099A66: - ldrb r2, [r5] - adds r0, r1, #0 - adds r1, r7, #0 - bl SetTile - adds r4, r6, #0 - subs r4, #0x40 - lsls r0, r4, #0x10 - lsrs r0, r0, #0x10 - ldrb r1, [r5] - bl sub_080002C8 - ldr r1, _08099AE4 @ =0x00004023 - cmp r0, #0x12 - bne _08099A86 - adds r1, #0x54 -_08099A86: - ldrb r2, [r5] - adds r0, r1, #0 - adds r1, r4, #0 - bl SetTile - ldr r4, _08099AE8 @ =0x00004022 - subs r1, r6, #1 - ldrb r2, [r5] - adds r0, r4, #0 - bl SetTile - ldrb r2, [r5] - adds r0, r4, #0 - adds r1, r6, #0 - bl SetTile - adds r4, r6, #0 - adds r4, #0x3f - adds r0, r4, #0 - ldrb r1, [r5] - bl sub_080002C8 - ldr r1, _08099AEC @ =0x00004026 - cmp r0, #0x12 - bne _08099ABA - adds r1, #0x56 -_08099ABA: - ldrb r2, [r5] - adds r0, r1, #0 - adds r1, r4, #0 - bl SetTile - adds r4, r6, #0 - adds r4, #0x40 - adds r0, r4, #0 - ldrb r1, [r5] - bl sub_080002C8 - ldr r1, _08099AEC @ =0x00004026 - cmp r0, #0x12 - bne _08099AD8 - adds r1, #0x56 -_08099AD8: - ldrb r2, [r5] - adds r0, r1, #0 - adds r1, r4, #0 - bl SetTile - b _08099BF0 - .align 2, 0 -_08099AE4: .4byte 0x00004023 -_08099AE8: .4byte 0x00004022 -_08099AEC: .4byte 0x00004026 -_08099AF0: - adds r5, r6, #0 - subs r5, #0x41 - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - adds r4, #0x38 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099BF4 @ =0x00004027 - cmp r0, #0x12 - bne _08099B08 - adds r1, #0x4e -_08099B08: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - adds r5, r6, #0 - subs r5, #0x40 - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099BF8 @ =0x00004023 - cmp r0, #0x12 - bne _08099B28 - adds r1, #0x54 -_08099B28: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - adds r5, r6, #0 - subs r5, #0x3f - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099BFC @ =0x00004028 - cmp r0, #0x12 - bne _08099B48 - adds r1, #0x4e -_08099B48: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - subs r5, r6, #1 - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099C00 @ =0x00004024 - cmp r0, #0x12 - bne _08099B66 - adds r1, #0x55 -_08099B66: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - ldr r0, _08099C04 @ =0x00004022 - ldrb r2, [r4] - adds r1, r6, #0 - bl SetTile - adds r5, r6, #1 - adds r0, r5, #0 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099C08 @ =0x00004025 - cmp r0, #0x12 - bne _08099B8C - adds r1, #0x56 -_08099B8C: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - adds r5, r6, #0 - adds r5, #0x3f - adds r0, r5, #0 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099C0C @ =0x00004029 - cmp r0, #0x12 - bne _08099BAA - adds r1, #0x4f -_08099BAA: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - adds r5, r6, #0 - adds r5, #0x40 - adds r0, r5, #0 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099C10 @ =0x00004026 - cmp r0, #0x12 - bne _08099BC8 - adds r1, #0x56 -_08099BC8: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile - adds r5, r6, #0 - adds r5, #0x41 - adds r0, r5, #0 - ldrb r1, [r4] - bl sub_080002C8 - ldr r1, _08099C14 @ =0x0000402A - cmp r0, #0x12 - bne _08099BE6 - adds r1, #0x50 -_08099BE6: - ldrb r2, [r4] - adds r0, r1, #0 - adds r1, r5, #0 - bl SetTile -_08099BF0: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08099BF4: .4byte 0x00004027 -_08099BF8: .4byte 0x00004023 -_08099BFC: .4byte 0x00004028 -_08099C00: .4byte 0x00004024 -_08099C04: .4byte 0x00004022 -_08099C08: .4byte 0x00004025 -_08099C0C: .4byte 0x00004029 -_08099C10: .4byte 0x00004026 -_08099C14: .4byte 0x0000402A - - thumb_func_start sub_08099C18 -sub_08099C18: @ 0x08099C18 - push {r4, r5, lr} - adds r1, r0, #0 - adds r0, #0x6e - ldrh r5, [r0] - subs r0, #2 - ldrh r0, [r0] - cmp r0, #2 - beq _08099C96 - cmp r0, #2 - bgt _08099C32 - cmp r0, #1 - beq _08099C60 - b _08099C36 -_08099C32: - cmp r0, #3 - beq _08099CD4 -_08099C36: - adds r0, r5, #0 - subs r0, #0x41 - adds r4, r1, #0 - adds r4, #0x38 - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - subs r0, #0x40 - ldrb r1, [r4] - bl sub_0807BA8C - subs r0, r5, #1 - ldrb r1, [r4] - bl sub_0807BA8C - ldrb r1, [r4] - adds r0, r5, #0 - bl sub_0807BA8C - b _08099D2C -_08099C60: - adds r0, r5, #0 - subs r0, #0x41 - adds r4, r1, #0 - adds r4, #0x38 - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - subs r0, #0x40 - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - subs r0, #0x3f - ldrb r1, [r4] - bl sub_0807BA8C - subs r0, r5, #1 - ldrb r1, [r4] - bl sub_0807BA8C - ldrb r1, [r4] - adds r0, r5, #0 - bl sub_0807BA8C - adds r0, r5, #1 - b _08099CCC -_08099C96: - adds r0, r5, #0 - subs r0, #0x41 - adds r4, r1, #0 - adds r4, #0x38 - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - subs r0, #0x40 - ldrb r1, [r4] - bl sub_0807BA8C - subs r0, r5, #1 - ldrb r1, [r4] - bl sub_0807BA8C - ldrb r1, [r4] - adds r0, r5, #0 - bl sub_0807BA8C - adds r0, r5, #0 - adds r0, #0x3f - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - adds r0, #0x40 -_08099CCC: - ldrb r1, [r4] - bl sub_0807BA8C - b _08099D2C -_08099CD4: - adds r0, r5, #0 - subs r0, #0x41 - adds r4, r1, #0 - adds r4, #0x38 - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - subs r0, #0x40 - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - subs r0, #0x3f - ldrb r1, [r4] - bl sub_0807BA8C - subs r0, r5, #1 - ldrb r1, [r4] - bl sub_0807BA8C - ldrb r1, [r4] - adds r0, r5, #0 - bl sub_0807BA8C - adds r0, r5, #1 - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - adds r0, #0x3f - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - adds r0, #0x40 - ldrb r1, [r4] - bl sub_0807BA8C - adds r0, r5, #0 - adds r0, #0x41 - ldrb r1, [r4] - bl sub_0807BA8C -_08099D2C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08099D30 -sub_08099D30: @ 0x08099D30 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _08099D40 - bl DeleteThisEntity -_08099D40: - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08099D6A - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPositionAndSpriteOffset - ldrh r0, [r4, #0x32] - adds r0, #1 - strh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x63 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] -_08099D6A: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #1 - bhi _08099DAA - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r2, r4, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08099DA2 - movs r0, #0 - strb r0, [r2] - bl Random - movs r1, #0x78 - ands r0, r1 - adds r0, #0x78 - adds r1, r4, #0 - adds r1, #0x59 - strb r0, [r1] -_08099DA2: - adds r0, r4, #0 - bl GetNextFrame - b _08099DB4 -_08099DAA: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_08099DB4: - pop {r4, pc} - .align 2, 0 diff --git a/asm/object/blockPushed.s b/asm/object/blockPushed.s deleted file mode 100644 index 1ff53891..00000000 --- a/asm/object/blockPushed.s +++ /dev/null @@ -1,542 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start BlockPushed -BlockPushed: @ 0x08082E9C - push {lr} - ldr r2, _08082EB0 @ =gUnk_0811F624 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08082EB0: .4byte gUnk_0811F624 - - thumb_func_start sub_08082EB4 -sub_08082EB4: @ 0x08082EB4 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r0, _08082EE0 @ =gRoomControls - ldrb r1, [r0, #4] - adds r6, r0, #0 - cmp r1, #0x11 - bne _08082EF6 - adds r0, r4, #0 - bl sub_080AE068 - ldr r1, _08082EE4 @ =0x000001C1 - adds r0, r4, #0 - bl LoadFixedGFX - cmp r0, #0 - bne _08082EE8 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - b _0808308E - .align 2, 0 -_08082EE0: .4byte gRoomControls -_08082EE4: .4byte 0x000001C1 -_08082EE8: - ldrb r0, [r4, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r4, #0x18] -_08082EF6: - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x20 - strb r0, [r4, #0xe] - movs r0, #0x80 - strh r0, [r4, #0x24] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0x88 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r2] - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldrh r1, [r6, #6] - subs r0, r0, r1 - asrs r5, r0, #4 - movs r2, #0x3f - ands r5, r2 - movs r1, #0x32 - ldrsh r0, [r4, r1] - ldrh r1, [r6, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r5, r0 - ldrb r1, [r4, #0xa] - lsls r1, r1, #3 - ldrh r0, [r4, #0x2e] - adds r0, r1, r0 - strh r0, [r4, #0x2e] - ldrh r0, [r4, #0x32] - adds r1, r1, r0 - strh r1, [r4, #0x32] - ldr r1, _08082F6C @ =gUnk_0811F64C - 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, #0x38 - ldrb r1, [r0] - adds r0, r5, #0 - bl GetTileType - str r0, [r4, #0x68] - ldrb r0, [r4, #0xa] - cmp r0, #1 - beq _08082F7A - cmp r0, #1 - bgt _08082F70 - cmp r0, #0 - beq _08082F76 - b _08082FF0 - .align 2, 0 -_08082F6C: .4byte gUnk_0811F64C -_08082F70: - cmp r0, #2 - beq _08082F9A - b _08082FF0 -_08082F76: - adds r0, r5, #0 - b _08082FE8 -_08082F7A: - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #1 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x40 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x41 - b _08082FE8 -_08082F9A: - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #1 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #2 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x40 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x41 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x42 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x80 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x81 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x82 -_08082FE8: - adds r1, r4, #0 - bl sub_080832D8 - b _08083088 -_08082FF0: - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #1 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #2 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #3 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x40 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x41 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x42 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x43 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x80 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x81 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x82 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0x83 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0xc0 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0xc1 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0xc2 - adds r1, r4, #0 - bl sub_080832D8 - adds r0, r5, #0 - adds r0, #0xc3 - adds r1, r4, #0 - bl sub_080832D8 -_08083088: - ldr r0, _08083090 @ =0x0000010F - bl EnqueueSFX -_0808308E: - pop {r4, r5, r6, pc} - .align 2, 0 -_08083090: .4byte 0x0000010F - - thumb_func_start sub_08083094 -sub_08083094: @ 0x08083094 - push {r4, lr} - adds r4, r0, #0 - bl LinearMoveUpdate - adds r0, r4, #0 - bl sub_0800445C - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080830B4 - adds r0, r4, #0 - bl sub_080830B8 -_080830B4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080830B8 -sub_080830B8: @ 0x080830B8 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - mov sb, r0 - ldrb r5, [r0, #0xa] - lsls r4, r5, #3 - movs r1, #0x2e - ldrsh r0, [r0, r1] - subs r0, r0, r4 - ldr r3, _080830FC @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - asrs r7, r0, #4 - movs r2, #0x3f - ands r7, r2 - mov r6, sb - movs r1, #0x32 - ldrsh r0, [r6, r1] - subs r0, r0, r4 - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r7, r0 - cmp r5, #1 - beq _08083128 - cmp r5, #1 - bgt _08083100 - cmp r5, #0 - beq _08083106 - b _080831EC - .align 2, 0 -_080830FC: .4byte gRoomControls -_08083100: - cmp r5, #2 - beq _08083160 - b _080831EC -_08083106: - mov r0, sb - bl sub_0800442E - cmp r0, #0 - beq _08083112 - b _080832C0 -_08083112: - ldr r0, _08083124 @ =0x00000365 - mov r1, sb - adds r1, #0x38 - ldrb r2, [r1] - adds r1, r7, #0 - bl sub_0807B7D8 - b _080832BA - .align 2, 0 -_08083124: .4byte 0x00000365 -_08083128: - mov r2, sb - ldr r0, [r2, #0x68] - mov r4, sb - adds r4, #0x38 - ldrb r2, [r4] - adds r1, r7, #0 - bl sub_0807B7D8 - ldr r0, _08083158 @ =0x0000036F - adds r1, r7, #1 - ldrb r2, [r4] - bl sub_0807B7D8 - movs r0, #0xdc - lsls r0, r0, #2 - adds r1, r7, #0 - adds r1, #0x40 - ldrb r2, [r4] - bl sub_0807B7D8 - ldr r0, _0808315C @ =0x00000371 - adds r1, r7, #0 - adds r1, #0x41 - b _080831CA - .align 2, 0 -_08083158: .4byte 0x0000036F -_0808315C: .4byte 0x00000371 -_08083160: - mov r6, sb - ldr r0, [r6, #0x68] - mov r4, sb - adds r4, #0x38 - ldrb r2, [r4] - adds r1, r7, #0 - bl sub_0807B7D8 - ldr r0, _080831D4 @ =0x00000372 - adds r1, r7, #1 - ldrb r2, [r4] - bl sub_0807B7D8 - ldr r0, _080831D8 @ =0x0000036F - adds r1, r7, #2 - ldrb r2, [r4] - bl sub_0807B7D8 - movs r0, #0xdd - lsls r0, r0, #2 - adds r1, r7, #0 - adds r1, #0x40 - ldrb r2, [r4] - bl sub_0807B7D8 - ldr r0, _080831DC @ =0x00000376 - adds r1, r7, #0 - adds r1, #0x41 - ldrb r2, [r4] - bl sub_0807B7D8 - ldr r0, _080831E0 @ =0x00000375 - adds r1, r7, #0 - adds r1, #0x42 - ldrb r2, [r4] - bl sub_0807B7D8 - movs r0, #0xdc - lsls r0, r0, #2 - adds r1, r7, #0 - adds r1, #0x80 - ldrb r2, [r4] - bl sub_0807B7D8 - ldr r0, _080831E4 @ =0x00000373 - adds r1, r7, #0 - adds r1, #0x81 - ldrb r2, [r4] - bl sub_0807B7D8 - ldr r0, _080831E8 @ =0x00000371 - adds r1, r7, #0 - adds r1, #0x82 -_080831CA: - ldrb r2, [r4] - bl sub_0807B7D8 - b _080832BA - .align 2, 0 -_080831D4: .4byte 0x00000372 -_080831D8: .4byte 0x0000036F -_080831DC: .4byte 0x00000376 -_080831E0: .4byte 0x00000375 -_080831E4: .4byte 0x00000373 -_080831E8: .4byte 0x00000371 -_080831EC: - mov r1, sb - ldr r0, [r1, #0x68] - mov r4, sb - adds r4, #0x38 - ldrb r2, [r4] - adds r1, r7, #0 - bl sub_0807B7D8 - ldr r5, _080832C8 @ =0x00000372 - adds r1, r7, #1 - ldrb r2, [r4] - adds r0, r5, #0 - bl sub_0807B7D8 - adds r1, r7, #2 - ldrb r2, [r4] - adds r0, r5, #0 - bl sub_0807B7D8 - ldr r0, _080832CC @ =0x0000036F - adds r1, r7, #3 - ldrb r2, [r4] - bl sub_0807B7D8 - movs r2, #0xdd - lsls r2, r2, #2 - mov r8, r2 - adds r1, r7, #0 - adds r1, #0x40 - ldrb r2, [r4] - mov r0, r8 - bl sub_0807B7D8 - adds r5, #4 - adds r1, r7, #0 - adds r1, #0x41 - ldrb r2, [r4] - adds r0, r5, #0 - bl sub_0807B7D8 - adds r1, r7, #0 - adds r1, #0x42 - ldrb r2, [r4] - adds r0, r5, #0 - bl sub_0807B7D8 - ldr r6, _080832D0 @ =0x00000375 - adds r1, r7, #0 - adds r1, #0x43 - ldrb r2, [r4] - adds r0, r6, #0 - bl sub_0807B7D8 - adds r1, r7, #0 - adds r1, #0x80 - ldrb r2, [r4] - mov r0, r8 - bl sub_0807B7D8 - adds r1, r7, #0 - adds r1, #0x81 - ldrb r2, [r4] - adds r0, r5, #0 - bl sub_0807B7D8 - adds r1, r7, #0 - adds r1, #0x82 - ldrb r2, [r4] - adds r0, r5, #0 - bl sub_0807B7D8 - adds r1, r7, #0 - adds r1, #0x83 - ldrb r2, [r4] - adds r0, r6, #0 - bl sub_0807B7D8 - movs r0, #0xdc - lsls r0, r0, #2 - adds r1, r7, #0 - adds r1, #0xc0 - ldrb r2, [r4] - bl sub_0807B7D8 - subs r5, #3 - adds r1, r7, #0 - adds r1, #0xc1 - ldrb r2, [r4] - adds r0, r5, #0 - bl sub_0807B7D8 - adds r1, r7, #0 - adds r1, #0xc2 - ldrb r2, [r4] - adds r0, r5, #0 - bl sub_0807B7D8 - ldr r0, _080832D4 @ =0x00000371 - adds r1, r7, #0 - adds r1, #0xc3 - ldrb r2, [r4] - bl sub_0807B7D8 -_080832BA: - mov r0, sb - bl DeleteEntity -_080832C0: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080832C8: .4byte 0x00000372 -_080832CC: .4byte 0x0000036F -_080832D0: .4byte 0x00000375 -_080832D4: .4byte 0x00000371 - - thumb_func_start sub_080832D8 -sub_080832D8: @ 0x080832D8 - push {lr} - adds r3, r0, #0 - adds r2, r1, #0 - adds r2, #0x38 - ldrb r0, [r2] - cmp r0, #2 - beq _080832FC - ldrb r1, [r1, #0x15] - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _080832F6 - ldrb r2, [r2] - movs r0, #0x21 - b _0808330A -_080832F6: - ldrb r2, [r2] - movs r0, #0x20 - b _0808330A -_080832FC: - ldrb r1, [r1, #0x15] - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _08083312 - ldrb r2, [r2] - movs r0, #0x2f -_0808330A: - adds r1, r3, #0 - bl sub_0807B7D8 - b _0808331C -_08083312: - ldrb r2, [r2] - movs r0, #0x2e - adds r1, r3, #0 - bl sub_0807B7D8 -_0808331C: - pop {pc} - .align 2, 0 diff --git a/asm/object/pullableMushroom.s b/asm/object/pullableMushroom.s deleted file mode 100644 index b5eb0457..00000000 --- a/asm/object/pullableMushroom.s +++ /dev/null @@ -1,1132 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start PullableMushroom -PullableMushroom: @ 0x0808A9FC - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0808AA18 @ =gUnk_081211A4 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r4, #0x41 - movs r0, #0 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_0808AA18: .4byte gUnk_081211A4 - - thumb_func_start sub_0808AA1C -sub_0808AA1C: @ 0x0808AA1C - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - movs r4, #0 - movs r6, #1 - strb r6, [r5, #0xc] - bl AreaIsDungeon - cmp r0, #0 - bne _0808AA36 - adds r0, r5, #0 - movs r1, #0 - bl ChangeObjPalette -_0808AA36: - ldrb r0, [r5, #0xa] - cmp r0, #1 - beq _0808AACC - cmp r0, #1 - bgt _0808AA46 - cmp r0, #0 - beq _0808AA4C - b _0808AB5E -_0808AA46: - cmp r0, #2 - beq _0808AB20 - b _0808AB5E -_0808AA4C: - adds r2, r5, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0808AAC0 @ =gUnk_080FD224 - str r0, [r5, #0x48] - strb r6, [r5, #0x16] - ldr r0, _0808AAC4 @ =0x00004022 - movs r2, #0x2e - ldrsh r1, [r5, r2] - ldr r3, _0808AAC8 @ =gRoomControls - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - movs r4, #0x3f - ands r1, r4 - movs r7, #0x32 - ldrsh r2, [r5, r7] - 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 - adds r0, r5, #0 - adds r0, #0x45 - strb r6, [r0] - adds r1, r5, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r1, #3 - movs r0, #0x6e - strb r0, [r1] - subs r1, #4 - movs r0, #0xe - strb r0, [r1] - strb r6, [r5, #0x1c] - ldrb r0, [r5, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] - adds r1, r5, #0 - adds r1, #0x63 - movs r0, #4 - strb r0, [r1] - b _0808AB5E - .align 2, 0 -_0808AAC0: .4byte gUnk_080FD224 -_0808AAC4: .4byte 0x00004022 -_0808AAC8: .4byte gRoomControls -_0808AACC: - adds r2, r5, #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] - ldrb r0, [r5, #0xb] - cmp r0, #0 - beq _0808AB10 - ldr r0, _0808AB1C @ =gUnk_080FD224 - str r0, [r5, #0x48] - ldrb r0, [r5, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] - adds r0, r5, #0 - adds r0, #0x45 - strb r6, [r0] - adds r1, r5, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r1, #3 - movs r0, #0x6e - strb r0, [r1] - subs r1, #4 - movs r0, #4 - strb r0, [r1] - strb r6, [r5, #0x1c] - movs r0, #3 - strb r0, [r5, #0xc] -_0808AB10: - ldrb r1, [r5, #0x14] - adds r1, #9 - adds r0, r5, #0 - bl InitializeAnimation - b _0808AB5E - .align 2, 0 -_0808AB1C: .4byte gUnk_080FD224 -_0808AB20: - adds r2, r5, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #5 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r5, #0x19] - movs r1, #3 - orrs r0, r1 - strb r0, [r5, #0x19] - ldrb r1, [r5, #0x14] - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - beq _0808AB52 - movs r0, #0x80 - lsls r0, r0, #2 - str r0, [r5, #0x74] - movs r0, #0x80 - lsls r0, r0, #1 - str r0, [r5, #0x78] - b _0808AB5E -_0808AB52: - movs r0, #0x80 - lsls r0, r0, #2 - str r0, [r5, #0x78] - movs r0, #0x80 - lsls r0, r0, #1 - str r0, [r5, #0x74] -_0808AB5E: - adds r0, r5, #0 - bl sub_0808AB68 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_0808AB68 -sub_0808AB68: @ 0x0808AB68 - push {lr} - ldr r2, _0808AB7C @ =gUnk_081211B4 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0808AB7C: .4byte gUnk_081211B4 - - thumb_func_start sub_0808AB80 -sub_0808AB80: @ 0x0808AB80 - push {lr} - ldr r2, _0808AB94 @ =gUnk_081211C0 - ldrb r1, [r0, #0xd] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0808AB94: .4byte gUnk_081211C0 - - thumb_func_start sub_0808AB98 -sub_0808AB98: @ 0x0808AB98 - push {lr} - adds r3, r0, #0 - ldr r2, [r3, #0x50] - ldrh r1, [r2, #0xc] - ldr r0, _0808ABB0 @ =0x00000201 - cmp r1, r0 - bne _0808ABB4 - movs r0, #0 - str r0, [r2, #0x54] - bl DeleteThisEntity - b _0808ABC2 - .align 2, 0 -_0808ABB0: .4byte 0x00000201 -_0808ABB4: - ldrb r0, [r2, #0xc] - cmp r0, #2 - bne _0808ABC2 - adds r0, r3, #0 - movs r1, #0 - bl sub_0808B168 -_0808ABC2: - pop {pc} - - thumb_func_start sub_0808ABC4 -sub_0808ABC4: @ 0x0808ABC4 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldrh r1, [r0, #0xc] - ldr r0, _0808AC38 @ =0x00000201 - cmp r1, r0 - bne _0808ABD6 - bl DeleteThisEntity -_0808ABD6: - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x50] - bl sub_0808B1F0 - adds r2, r0, #0 - cmp r2, #7 - bhi _0808ABE6 - movs r2, #0 -_0808ABE6: - ldrb r3, [r4, #0x14] - lsls r1, r3, #2 - ldr r0, _0808AC3C @ =gUnk_081211CC - adds r5, r1, r0 - cmp r2, #0x1f - bhi _0808AC5A - cmp r2, #0 - beq _0808ABF8 - subs r2, #6 -_0808ABF8: - ldrh r0, [r5] - str r0, [r4, #0x70] - ldr r1, [r4, #0x50] - movs r0, #2 - ldrsb r0, [r5, r0] - ldrh r3, [r1, #0x2e] - adds r0, r0, r3 - strh r0, [r4, #0x2e] - movs r0, #3 - ldrsb r0, [r5, r0] - ldrh r1, [r1, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] - ldrb r1, [r4, #0x14] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0808AC40 - lsls r1, r2, #4 - movs r0, #0x80 - lsls r0, r0, #2 - subs r0, r0, r1 - str r0, [r4, #0x74] - lsls r0, r2, #3 - movs r1, #0x90 - lsls r1, r1, #1 - adds r0, r0, r1 - str r0, [r4, #0x78] - movs r0, #0xf - strb r0, [r4, #0x1e] - b _0808ACDE - .align 2, 0 -_0808AC38: .4byte 0x00000201 -_0808AC3C: .4byte gUnk_081211CC -_0808AC40: - lsls r1, r2, #4 - movs r0, #0x80 - lsls r0, r0, #2 - subs r0, r0, r1 - str r0, [r4, #0x78] - lsls r0, r2, #3 - movs r3, #0x90 - lsls r3, r3, #1 - adds r0, r0, r3 - str r0, [r4, #0x74] - movs r0, #0x14 - strb r0, [r4, #0x1e] - b _0808ACDE -_0808AC5A: - movs r0, #1 - ands r3, r0 - cmp r3, #0 - beq _0808AC9E - adds r1, r2, #0 - subs r1, #0x20 - lsls r1, r1, #2 - adds r0, #0xff - subs r0, r0, r1 - str r0, [r4, #0x74] - lsls r0, r2, #3 - movs r1, #0xa0 - lsls r1, r1, #1 - adds r0, r0, r1 - str r0, [r4, #0x78] - movs r0, #0x10 - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x14] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0808AC92 - ldr r0, [r4, #0x50] - lsrs r1, r2, #1 - ldrh r0, [r0, #0x2e] - subs r0, r0, r1 - strh r0, [r4, #0x2e] - b _0808ACDE -_0808AC92: - ldr r1, [r4, #0x50] - lsrs r0, r2, #1 - ldrh r1, [r1, #0x2e] - adds r0, r0, r1 - strh r0, [r4, #0x2e] - b _0808ACDE -_0808AC9E: - adds r1, r2, #0 - subs r1, #0x20 - lsls r1, r1, #2 - movs r0, #0x80 - lsls r0, r0, #1 - subs r0, r0, r1 - str r0, [r4, #0x78] - lsls r0, r2, #3 - movs r3, #0xa0 - lsls r3, r3, #1 - adds r0, r0, r3 - str r0, [r4, #0x74] - movs r0, #0x15 - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x14] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0808ACCE - ldr r0, [r4, #0x50] - lsrs r1, r2, #1 - ldrh r0, [r0, #0x32] - adds r1, r1, r0 - b _0808ACD6 -_0808ACCE: - ldr r0, [r4, #0x50] - lsrs r2, r2, #1 - ldrh r1, [r0, #0x32] - subs r1, r1, r2 -_0808ACD6: - movs r0, #3 - ldrsb r0, [r5, r0] - adds r0, r0, r1 - strh r0, [r4, #0x32] -_0808ACDE: - ldr r1, [r4, #0x74] - ldr r2, [r4, #0x78] - ldr r3, [r4, #0x70] - adds r0, r4, #0 - bl sub_0805EC9C - pop {r4, r5, pc} - - thumb_func_start sub_0808ACEC -sub_0808ACEC: @ 0x0808ACEC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0 - beq _0808AD00 - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_0808AD00: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - subs r0, #4 - cmp r0, #0x12 - bhi _0808AD92 - lsls r0, r0, #2 - ldr r1, _0808AD1C @ =_0808AD20 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808AD1C: .4byte _0808AD20 -_0808AD20: @ jump table - .4byte _0808AD6C @ case 0 - .4byte _0808AD6C @ case 1 - .4byte _0808AD6C @ case 2 - .4byte _0808AD92 @ case 3 - .4byte _0808AD6C @ case 4 - .4byte _0808AD6C @ case 5 - .4byte _0808AD6C @ case 6 - .4byte _0808AD6C @ case 7 - .4byte _0808AD6C @ case 8 - .4byte _0808AD6C @ case 9 - .4byte _0808AD92 @ case 10 - .4byte _0808AD92 @ case 11 - .4byte _0808AD6C @ case 12 - .4byte _0808AD6C @ case 13 - .4byte _0808AD6C @ case 14 - .4byte _0808AD88 @ case 15 - .4byte _0808AD6C @ case 16 - .4byte _0808AD92 @ case 17 - .4byte _0808AD6C @ case 18 -_0808AD6C: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - adds r0, #0x3e - ldrb r0, [r0] - bl sub_0806F5A4 - strb r0, [r4, #0x14] - movs r0, #2 - strb r0, [r4, #0xd] - strb r0, [r4, #0xe] - b _0808AD9E -_0808AD88: - movs r1, #0 - movs r0, #3 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - b _0808AD9E -_0808AD92: - movs r0, #0 - strb r0, [r4, #0xf] - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl sub_08078930 -_0808AD9E: - pop {r4, pc} - - thumb_func_start sub_0808ADA0 -sub_0808ADA0: @ 0x0808ADA0 - push {r4, lr} - adds r4, r0, #0 - ldr r1, [r4, #0x54] - bl sub_0808B1F0 - cmp r0, #7 - bls _0808ADB4 - ldr r1, [r4, #0x54] - cmp r1, #0 - bne _0808ADE2 -_0808ADB4: - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r2, #2 - movs r0, #2 - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldrb r0, [r4, #0x14] - eors r0, r2 - strb r0, [r4, #0x14] - 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] - b _0808ADEE -_0808ADE2: - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r1, #0x24] - ldr r0, [r4, #0x54] - bl LinearMoveUpdate -_0808ADEE: - pop {r4, pc} - - thumb_func_start sub_0808ADF0 -sub_0808ADF0: @ 0x0808ADF0 - push {r4, lr} - adds r4, r0, #0 - ldrb r2, [r4, #0x14] - adds r1, r2, #0 - adds r1, #0xd - adds r0, #0x58 - ldrb r0, [r0] - cmp r1, r0 - bne _0808AE26 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808AE1E - movs r0, #0 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - b _0808AE80 -_0808AE1E: - adds r0, r4, #0 - bl GetNextFrame - b _0808AE80 -_0808AE26: - adds r1, r2, #1 - cmp r1, r0 - beq _0808AE54 - adds r0, r4, #0 - bl InitializeAnimation - ldrb r0, [r4, #0x14] - cmp r0, #3 - bne _0808AE42 - ldrb r1, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r1 - b _0808AE48 -_0808AE42: - ldrb r0, [r4, #0x18] - movs r1, #0x40 - orrs r0, r1 -_0808AE48: - strb r0, [r4, #0x18] - movs r0, #0x97 - lsls r0, r0, #1 - bl SoundReq - b _0808AE80 -_0808AE54: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808AE80 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - bne _0808AE80 - ldrb r1, [r4, #0x14] - adds r1, #0xd - adds r0, r4, #0 - bl InitializeAnimation -_0808AE80: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0808AE84 -sub_0808AE84: @ 0x0808AE84 - push {lr} - adds r2, r0, #0 - ldr r0, _0808AEA8 @ =gPlayerState - ldrb r0, [r0, #5] - cmp r0, #0 - bne _0808AE94 - movs r0, #6 - strb r0, [r2, #0xd] -_0808AE94: - ldr r0, _0808AEAC @ =gUnk_081211DC - ldrb r1, [r2, #0xd] - subs r1, #5 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0808AEA8: .4byte gPlayerState -_0808AEAC: .4byte gUnk_081211DC - - thumb_func_start sub_0808AEB0 -sub_0808AEB0: @ 0x0808AEB0 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0808AF68 - ldr r1, [r4, #0x54] - adds r0, r4, #0 - bl sub_0808B1F0 - adds r6, r0, #0 - ldr r5, _0808AF10 @ =gPlayerState - adds r2, r5, #0 - adds r2, #0x90 - ldr r1, _0808AF14 @ =gUnk_081211E4 - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r2] - ldrh r0, [r0] - ands r0, r1 - cmp r0, #0 - beq _0808AF20 - adds r0, r4, #0 - bl GetNextFrame - cmp r6, #0x3f - bhi _0808AF08 - ldr r0, _0808AF18 @ =gPlayerEntity - ldrb r2, [r4, #0x15] - movs r1, #0x40 - bl sub_080044AE - ldr r0, [r4, #0x7c] - subs r0, #1 - str r0, [r4, #0x7c] - movs r1, #1 - rsbs r1, r1, #0 - cmp r0, r1 - bne _0808AF08 - movs r0, #4 - str r0, [r4, #0x7c] - ldr r0, _0808AF1C @ =0x0000012F - bl SoundReq -_0808AF08: - movs r0, #1 - strb r0, [r4, #0xf] - b _0808AFD0 - .align 2, 0 -_0808AF10: .4byte gPlayerState -_0808AF14: .4byte gUnk_081211E4 -_0808AF18: .4byte gPlayerEntity -_0808AF1C: .4byte 0x0000012F -_0808AF20: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0808AFD0 - ldr r2, _0808AF64 @ =gPlayerEntity - ldrb r0, [r2, #0xc] - cmp r0, #1 - bne _0808AFD0 - adds r0, r5, #0 - adds r0, #0x26 - ldrb r0, [r0] - cmp r0, #0 - bne _0808AFD0 - movs r0, #0x1b - strb r0, [r5, #0xc] - adds r0, r5, #0 - adds r0, #0x38 - strb r6, [r0] - ldrb r0, [r4, #0x15] - movs r1, #0x10 - eors r0, r1 - adds r1, r5, #0 - adds r1, #0x39 - strb r0, [r1] - adds r0, r4, #0 - adds r1, r2, #0 - bl sub_0808B1F0 - adds r1, r5, #0 - adds r1, #0x3a - strb r0, [r1] - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - b _0808AFD0 - .align 2, 0 -_0808AF64: .4byte gPlayerEntity -_0808AF68: - movs r6, #1 - strb r6, [r4, #0xe] - str r6, [r4, #0x7c] - ldr r5, _0808AFC8 @ =gPlayerEntity - ldrb r0, [r5, #0x14] - lsrs r0, r0, #1 - movs r1, #2 - eors r0, r1 - strb r0, [r4, #0x14] - lsls r0, r0, #3 - strb r0, [r4, #0x15] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r0, [r5, #0x18] - movs r1, #0x40 - ands r1, r0 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x14] - adds r1, #5 - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - movs r1, #0 - bl sub_0808B21C - cmp r0, #0 - beq _0808AFB6 - ldr r0, [r4, #0x54] - movs r1, #0 - bl sub_0808B168 -_0808AFB6: - ldrb r1, [r4, #0x14] - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - beq _0808AFCC - ldrh r0, [r4, #0x32] - strh r0, [r5, #0x32] - b _0808AFD0 - .align 2, 0 -_0808AFC8: .4byte gPlayerEntity -_0808AFCC: - ldrh r0, [r4, #0x2e] - strh r0, [r5, #0x2e] -_0808AFD0: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0808AFD4 -sub_0808AFD4: @ 0x0808AFD4 - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - strb r1, [r0, #0xd] - ldr r2, [r0, #0x54] - ldrb r0, [r0, #0x15] - movs r1, #0x10 - eors r0, r1 - strb r0, [r2, #0x15] - movs r0, #0x98 - lsls r0, r0, #1 - bl SoundReq - pop {pc} - - thumb_func_start sub_0808AFF0 -sub_0808AFF0: @ 0x0808AFF0 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r1, _0808B054 @ =gUnk_081211EC - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - ldr r0, _0808B058 @ =gPlayerState - ldrb r1, [r0, #0x1c] - movs r0, #0xf - ands r0, r1 - cmp r0, #1 - bne _0808B01E - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0x13 - beq _0808B050 -_0808B01E: - ldrb r5, [r4, #0xa] - cmp r5, #1 - bne _0808B050 - ldr r0, [r4, #0x50] - strb r5, [r0, #0xc] - ldr r0, [r4, #0x50] - strb r5, [r0, #0xd] - ldr r2, [r4, #0x50] - ldrb r0, [r2, #0x15] - movs r1, #0x10 - eors r0, r1 - strb r0, [r4, #0x15] - ldrb r3, [r2, #0x10] - movs r1, #0x7f - adds r0, r1, #0 - ands r0, r3 - strb r0, [r2, #0x10] - ldrb r0, [r4, #0x10] - ands r1, r0 - strb r1, [r4, #0x10] - strb r5, [r4, #0xc] - movs r0, #0x98 - lsls r0, r0, #1 - bl SoundReq -_0808B050: - pop {r4, r5, pc} - .align 2, 0 -_0808B054: .4byte gUnk_081211EC -_0808B058: .4byte gPlayerState - - thumb_func_start sub_0808B05C -sub_0808B05C: @ 0x0808B05C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0808B0AE - ldr r2, _0808B0B8 @ =gPlayerEntity - ldrb r0, [r2, #0x14] - lsrs r0, r0, #1 - movs r1, #2 - eors r0, r1 - strb r0, [r4, #0x14] - lsls r0, r0, #3 - strb r0, [r4, #0x15] - ldrb r0, [r2, #0x18] - movs r1, #0x40 - ands r1, r0 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0x14] - adds r1, #5 - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - movs r1, #1 - bl sub_0808B21C - cmp r0, #0 - beq _0808B0AE - ldr r0, [r4, #0x54] - movs r1, #1 - bl sub_0808B168 -_0808B0AE: - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - pop {r4, pc} - .align 2, 0 -_0808B0B8: .4byte gPlayerEntity - - thumb_func_start sub_0808B0BC -sub_0808B0BC: @ 0x0808B0BC - push {r4, r5, r6, r7, lr} - sub sp, #0x88 - adds r5, r0, #0 - ldr r1, [r5, #0x50] - bl sub_0808B1F0 - adds r7, r0, #0 - ldrb r0, [r5, #0xa] - cmp r0, #0 - beq _0808B0D6 - cmp r0, #1 - beq _0808B0DE - b _0808B162 -_0808B0D6: - adds r0, r5, #0 - bl GetNextFrame - b _0808B162 -_0808B0DE: - ldr r6, _0808B148 @ =gPlayerEntity - ldrb r0, [r6, #0x14] - movs r1, #0xe - ands r1, r0 - ldr r0, _0808B14C @ =gUnk_08126EE4 - adds r1, r1, r0 - mov r2, sp - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r3, [r6, #0x2e] - adds r0, r0, r3 - strh r0, [r2, #0x2e] - movs r0, #1 - ldrsb r0, [r1, r0] - ldrh r1, [r6, #0x32] - adds r0, r0, r1 - strh r0, [r2, #0x32] - mov r0, sp - adds r1, r5, #0 - movs r2, #7 - movs r3, #7 - bl sub_0800419C - cmp r0, #0 - beq _0808B154 - ldrb r0, [r6, #0xc] - cmp r0, #1 - bne _0808B162 - ldr r4, _0808B150 @ =gPlayerState - adds r0, r4, #0 - adds r0, #0x26 - ldrb r0, [r0] - cmp r0, #0 - bne _0808B162 - movs r0, #0x1b - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x38 - strb r7, [r0] - ldrb r0, [r5, #0x15] - movs r1, #0x10 - eors r0, r1 - adds r1, r4, #0 - adds r1, #0x39 - strb r0, [r1] - ldr r0, [r5, #0x50] - adds r1, r6, #0 - bl sub_0808B1F0 - adds r1, r4, #0 - adds r1, #0x3a - strb r0, [r1] - b _0808B162 - .align 2, 0 -_0808B148: .4byte gPlayerEntity -_0808B14C: .4byte gUnk_08126EE4 -_0808B150: .4byte gPlayerState -_0808B154: - movs r0, #0x40 - strh r0, [r5, #0x24] - cmp r7, #0x3f - bhi _0808B162 - adds r0, r5, #0 - bl LinearMoveUpdate -_0808B162: - add sp, #0x88 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_0808B168 -sub_0808B168: @ 0x0808B168 - push {r4, r5, lr} - adds r3, r0, #0 - cmp r1, #0 - beq _0808B188 - ldrb r0, [r3, #0x14] - movs r1, #2 - eors r1, r0 - lsls r1, r1, #1 - ldr r0, _0808B184 @ =gUnk_081211F4 - adds r2, r1, r0 - adds r1, r2, #1 - ldr r4, [r3, #0x50] - adds r5, r4, #0 - b _0808B1CE - .align 2, 0 -_0808B184: .4byte gUnk_081211F4 -_0808B188: - ldrb r1, [r3, #0x14] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0808B1B8 - ldr r5, _0808B1AC @ =gPlayerEntity - ldr r4, [r3, #0x50] - ldrb r1, [r3, #0x14] - lsls r2, r1, #1 - ldr r0, _0808B1B0 @ =gUnk_081211FC - adds r2, r2, r0 - movs r0, #2 - eors r1, r0 - lsls r1, r1, #1 - ldr r0, _0808B1B4 @ =gUnk_081211F5 - adds r1, r1, r0 - b _0808B1CE - .align 2, 0 -_0808B1AC: .4byte gPlayerEntity -_0808B1B0: .4byte gUnk_081211FC -_0808B1B4: .4byte gUnk_081211F5 -_0808B1B8: - ldr r5, [r3, #0x50] - ldr r4, _0808B1E4 @ =gPlayerEntity - movs r0, #2 - eors r0, r1 - lsls r0, r0, #1 - ldr r1, _0808B1E8 @ =gUnk_081211F4 - adds r2, r0, r1 - ldrb r0, [r3, #0x14] - lsls r0, r0, #1 - ldr r1, _0808B1EC @ =gUnk_081211FD - adds r1, r0, r1 -_0808B1CE: - movs r0, #0 - ldrsb r0, [r2, r0] - ldrh r5, [r5, #0x2e] - adds r0, r0, r5 - strh r0, [r3, #0x2e] - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r4, [r4, #0x32] - adds r0, r0, r4 - strh r0, [r3, #0x32] - pop {r4, r5, pc} - .align 2, 0 -_0808B1E4: .4byte gPlayerEntity -_0808B1E8: .4byte gUnk_081211F4 -_0808B1EC: .4byte gUnk_081211FD - - thumb_func_start sub_0808B1F0 -sub_0808B1F0: @ 0x0808B1F0 - push {lr} - adds r2, r0, #0 - adds r3, r1, #0 - ldrb r1, [r2, #0x14] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0808B20A - movs r0, #0x2e - ldrsh r1, [r2, r0] - movs r2, #0x2e - ldrsh r0, [r3, r2] - b _0808B212 -_0808B20A: - movs r0, #0x32 - ldrsh r1, [r2, r0] - movs r2, #0x32 - ldrsh r0, [r3, r2] -_0808B212: - subs r0, r1, r0 - cmp r0, #0 - bge _0808B21A - rsbs r0, r0, #0 -_0808B21A: - pop {pc} - - thumb_func_start sub_0808B21C -sub_0808B21C: @ 0x0808B21C - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #8 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #6 - orrs r1, r0 - strb r1, [r2] - adds r0, r4, #0 - movs r1, #0x32 - movs r2, #1 - movs r3, #0 - bl CreateObjectWithParent - adds r1, r0, #0 - str r1, [r4, #0x54] - cmp r1, #0 - beq _0808B26E - ldrb r0, [r4, #0x14] - strb r0, [r1, #0x14] - ldr r1, [r4, #0x54] - ldrb r0, [r4, #0x15] - strb r0, [r1, #0x15] - ldr r3, [r4, #0x54] - ldrb r0, [r4, #0x18] - movs r1, #0x40 - ands r1, r0 - ldrb r2, [r3, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x18] - ldr r0, [r4, #0x54] - str r4, [r0, #0x50] - ldr r0, [r4, #0x54] - strb r5, [r0, #0xb] -_0808B26E: - adds r0, r4, #0 - movs r1, #0x32 - movs r2, #2 - movs r3, #0 - bl CreateObjectWithParent - adds r1, r0, #0 - str r1, [r4, #0x50] - cmp r1, #0 - bne _0808B286 - movs r0, #0 - b _0808B292 -_0808B286: - ldrb r0, [r4, #0x14] - strb r0, [r1, #0x14] - ldr r1, [r4, #0x50] - ldr r0, [r4, #0x54] - str r0, [r1, #0x54] - movs r0, #1 -_0808B292: - pop {r4, r5, pc} diff --git a/asm/object/pushableFurniture.s b/asm/object/pushableFurniture.s deleted file mode 100644 index a1eeabe4..00000000 --- a/asm/object/pushableFurniture.s +++ /dev/null @@ -1,1605 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start PushableFurniture -PushableFurniture: @ 0x0808F968 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0808F98C @ =gUnk_08121ED8 - 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, #0xc] - cmp r0, #0 - beq _0808F988 - adds r0, r4, #0 - bl sub_08090514 -_0808F988: - pop {r4, pc} - .align 2, 0 -_0808F98C: .4byte gUnk_08121ED8 - - thumb_func_start sub_0808F990 -sub_0808F990: @ 0x0808F990 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r2, #1 - strb r2, [r4, #0xc] - movs r3, #0 - movs r0, #0x80 - strh r0, [r4, #0x24] - ldrb r0, [r4, #0xe] - strb r0, [r4, #0xf] - strb r3, [r4, #0xe] - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - adds r0, r4, #0 - adds r0, #0x81 - strb r3, [r0] - adds r0, #2 - strb r3, [r0] - ldrb r1, [r4, #0x19] - movs r0, #0x3f - ands r0, r1 - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #0x19] - ldrb r0, [r4, #0xa] - cmp r0, #1 - bne _0808F9E8 - 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] - adds r0, r4, #0 - adds r0, #0x80 - strb r3, [r0] - b _0808FA1C -_0808F9E8: - adds r0, r4, #0 - adds r0, #0x80 - 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, #5 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4, #0xa] - cmp r0, #2 - beq _0808FA0A - cmp r0, #4 - bne _0808FA1C -_0808FA0A: - ldrh r0, [r4, #0x32] - adds r0, #2 - strh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #0xfe - strb r0, [r1] - strb r3, [r4, #0xd] - strb r3, [r4, #0x1e] -_0808FA1C: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0808FAC4 - movs r6, #0 - cmp r0, #0x80 - beq _0808FA84 - ldrh r1, [r4, #0xa] - ldr r0, _0808FA38 @ =0x00000101 - cmp r1, r0 - bne _0808FA3C - movs r0, #0xf - ldrsb r0, [r4, r0] - ldrh r1, [r4, #0x32] - b _0808FA42 - .align 2, 0 -_0808FA38: .4byte 0x00000101 -_0808FA3C: - movs r0, #0xf - ldrsb r0, [r4, r0] - ldrh r1, [r4, #0x2e] -_0808FA42: - adds r0, r0, r1 - adds r1, r4, #0 - adds r1, #0x7e - strh r0, [r1] - adds r5, r1, #0 - ldr r3, [r4, #0x50] - cmp r3, #0 - bne _0808FA5E - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - b _0808FA7C -_0808FA5E: - adds r2, r4, #0 - adds r2, #0x82 - ldrb r1, [r2] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808FA76 - ldrb r0, [r3, #0xc] - cmp r0, #2 - bne _0808FAA2 - adds r6, #1 - b _0808FAA2 -_0808FA76: - ldrb r0, [r2] - bl CheckLocalFlag -_0808FA7C: - cmp r0, #0 - beq _0808FAA2 - adds r6, #1 - b _0808FAA2 -_0808FA84: - movs r6, #1 - ldrh r1, [r4, #0xa] - ldr r0, _0808FA94 @ =0x00000101 - cmp r1, r0 - bne _0808FA98 - ldrh r1, [r4, #0x32] - b _0808FA9A - .align 2, 0 -_0808FA94: .4byte 0x00000101 -_0808FA98: - ldrh r1, [r4, #0x2e] -_0808FA9A: - adds r0, r4, #0 - adds r0, #0x7e - strh r1, [r0] - adds r5, r0, #0 -_0808FAA2: - cmp r6, #0 - beq _0808FAC4 - adds r1, r4, #0 - adds r1, #0x81 - movs r0, #1 - strb r0, [r1] - ldrh r1, [r4, #0xa] - ldr r0, _0808FABC @ =0x00000101 - cmp r1, r0 - bne _0808FAC0 - ldrh r0, [r5] - strh r0, [r4, #0x32] - b _0808FAC4 - .align 2, 0 -_0808FABC: .4byte 0x00000101 -_0808FAC0: - ldrh r0, [r5] - strh r0, [r4, #0x2e] -_0808FAC4: - adds r0, r4, #0 - bl sub_0808FF50 - pop {r4, r5, r6, pc} - - thumb_func_start sub_0808FACC -sub_0808FACC: @ 0x0808FACC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - bne _0808FAF2 - adds r0, r4, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #0 - bne _0808FAEA - adds r0, r4, #0 - bl sub_0808FBFC - b _0808FB0A -_0808FAEA: - adds r0, r4, #0 - bl sub_0808FB68 - b _0808FB0A -_0808FAF2: - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0808FB0A - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0808FB0A - movs r0, #0x86 - lsls r0, r0, #1 - bl EnqueueSFX -_0808FB0A: - ldrb r0, [r4, #0xa] - cmp r0, #2 - beq _0808FB14 - cmp r0, #4 - bne _0808FB64 -_0808FB14: - ldrb r1, [r4, #0xd] - cmp r1, #1 - beq _0808FB3E - cmp r1, #1 - bgt _0808FB24 - cmp r1, #0 - beq _0808FB2A - b _0808FB64 -_0808FB24: - cmp r1, #2 - beq _0808FB5E - b _0808FB64 -_0808FB2A: - adds r0, r4, #0 - bl sub_0808FECC - cmp r0, #0 - beq _0808FB64 - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #0xc - strb r0, [r4, #0xe] - b _0808FB64 -_0808FB3E: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0808FB64 - strb r1, [r4, #0x1e] - movs r0, #2 - strb r0, [r4, #0xd] - movs r0, #0x80 - bl EnqueueSFX - adds r0, r4, #0 - bl sub_0808FF20 - b _0808FB64 -_0808FB5E: - adds r0, r4, #0 - bl nullsub_1 -_0808FB64: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0808FB68 -sub_0808FB68: @ 0x0808FB68 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x70 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileIndex - adds r1, r0, #0 - ldr r0, _0808FBAC @ =0x00004031 - cmp r1, r0 - bhi _0808FBB0 - subs r0, #1 - cmp r1, r0 - blo _0808FBB0 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r1, #0 - subs r0, #0x30 - movs r1, #1 - ands r0, r1 - lsls r0, r0, #4 - movs r1, #8 - orrs r0, r1 - strb r0, [r4, #0x15] - movs r0, #1 - bl SetPlayerControl - adds r0, r4, #0 - movs r1, #0 - bl sub_0808FD44 - b _0808FBF6 - .align 2, 0 -_0808FBAC: .4byte 0x00004031 -_0808FBB0: - adds r0, r4, #0 - adds r0, #0x72 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileIndex - adds r1, r0, #0 - ldr r0, _0808FBF8 @ =0x00004031 - cmp r1, r0 - bhi _0808FBF0 - subs r0, #1 - cmp r1, r0 - blo _0808FBF0 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r1, #0 - subs r0, #0x30 - movs r1, #1 - ands r0, r1 - lsls r0, r0, #4 - movs r1, #8 - orrs r0, r1 - strb r0, [r4, #0x15] - movs r0, #1 - bl SetPlayerControl - adds r0, r4, #0 - movs r1, #1 - bl sub_0808FD44 -_0808FBF0: - adds r0, r4, #0 - bl sub_0808FDE8 -_0808FBF6: - pop {r4, pc} - .align 2, 0 -_0808FBF8: .4byte 0x00004031 - - thumb_func_start sub_0808FBFC -sub_0808FBFC: @ 0x0808FBFC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x7c - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileIndex - adds r1, r0, #0 - ldr r0, _0808FC38 @ =0x0000404A - cmp r1, r0 - beq _0808FC34 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r1, #0 - subs r0, #0x4b - movs r1, #3 - ands r0, r1 - lsls r0, r0, #3 - strb r0, [r4, #0x15] - movs r0, #1 - bl SetPlayerControl - adds r0, r4, #0 - movs r1, #0 - bl sub_0808FD44 -_0808FC34: - pop {r4, pc} - .align 2, 0 -_0808FC38: .4byte 0x0000404A - - thumb_func_start sub_0808FC3C -sub_0808FC3C: @ 0x0808FC3C - push {r4, lr} - adds r4, r0, #0 - bl sub_0800445C - adds r0, r4, #0 - bl sub_0808FC5C - cmp r0, #0 - beq _0808FC58 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0 - bl SetPlayerControl -_0808FC58: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0808FC5C -sub_0808FC5C: @ 0x0808FC5C - push {r4, r5, lr} - adds r4, r0, #0 - bl LinearMoveUpdate - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - bne _0808FD40 - ldrb r1, [r4, #0xa] - cmp r1, #2 - beq _0808FC7C - cmp r1, #4 - bne _0808FC84 -_0808FC7C: - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #0xfe - b _0808FC88 -_0808FC84: - adds r1, r4, #0 - adds r1, #0x63 -_0808FC88: - strb r0, [r1] - adds r0, r4, #0 - bl sub_080002D0 - cmp r0, #0 - bne _0808FD40 - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0808FD30 - movs r2, #0 - ldrh r1, [r4, #0xa] - ldr r0, _0808FCB4 @ =0x00000101 - cmp r1, r0 - bne _0808FCB8 - movs r1, #0x32 - ldrsh r0, [r4, r1] - adds r1, r4, #0 - adds r1, #0x7e - ldrh r1, [r1] - cmp r0, r1 - bne _0808FCC8 - b _0808FCCC - .align 2, 0 -_0808FCB4: .4byte 0x00000101 -_0808FCB8: - movs r1, #0x2e - ldrsh r0, [r4, r1] - adds r1, r4, #0 - adds r1, #0x7e - ldrh r1, [r1] - cmp r0, r1 - bne _0808FCC8 - movs r2, #1 -_0808FCC8: - cmp r2, #0 - beq _0808FD30 -_0808FCCC: - adds r0, r4, #0 - adds r0, #0x81 - movs r5, #1 - strb r5, [r0] - ldr r3, [r4, #0x50] - cmp r3, #0 - bne _0808FCE4 - adds r0, #5 - ldrh r0, [r0] - bl SetFlag - b _0808FD0C -_0808FCE4: - adds r2, r4, #0 - adds r2, #0x82 - ldrb r1, [r2] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808FD06 - adds r0, r3, #0 - adds r0, #0x28 - subs r2, #8 - adds r1, r5, #0 - ldrh r2, [r2] - lsls r1, r2 - ldrb r2, [r0] - orrs r1, r2 - strb r1, [r0] - b _0808FD0C -_0808FD06: - ldrb r0, [r2] - bl SetLocalFlag -_0808FD0C: - adds r0, r4, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #0 - bne _0808FD1A - movs r0, #4 - b _0808FD1C -_0808FD1A: - movs r0, #0x18 -_0808FD1C: - strb r0, [r4, #0xe] - ldr r0, _0808FD3C @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0808FD30 - ldrb r0, [r4, #0xe] - adds r0, #0x10 - strb r0, [r4, #0xe] -_0808FD30: - adds r0, r4, #0 - bl sub_0808FF50 - movs r0, #1 - b _0808FD42 - .align 2, 0 -_0808FD3C: .4byte gPlayerState -_0808FD40: - movs r0, #0 -_0808FD42: - pop {r4, r5, pc} - - thumb_func_start sub_0808FD44 -sub_0808FD44: @ 0x0808FD44 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #1 - bne _0808FD8E - adds r0, r4, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r0, #0 - beq _0808FD62 - adds r0, r4, #0 - bl sub_08090498 -_0808FD62: - cmp r5, #0 - beq _0808FD6C - adds r0, r4, #0 - adds r0, #0x72 - b _0808FD70 -_0808FD6C: - adds r0, r4, #0 - adds r0, #0x70 -_0808FD70: - ldrh r5, [r0] - ldr r0, _0808FD84 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808FD88 - movs r0, #0x40 - strh r0, [r4, #0x24] - b _0808FDB2 - .align 2, 0 -_0808FD84: .4byte gPlayerState -_0808FD88: - strh r1, [r4, #0x24] - movs r0, #0x10 - b _0808FDB4 -_0808FD8E: - adds r0, r4, #0 - adds r0, #0x7c - ldrh r5, [r0] - ldr r0, _0808FDAC @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808FDB0 - movs r1, #0x40 - movs r0, #0x40 - strh r0, [r4, #0x24] - strb r1, [r4, #0xe] - b _0808FDB6 - .align 2, 0 -_0808FDAC: .4byte gPlayerState -_0808FDB0: - strh r1, [r4, #0x24] -_0808FDB2: - movs r0, #0x20 -_0808FDB4: - strb r0, [r4, #0xe] -_0808FDB6: - ldr r0, _0808FDE0 @ =0x0000010F - bl EnqueueSFX - adds r0, r4, #0 - bl sub_08090254 - ldr r1, _0808FDE4 @ =gUnk_080B4488 - ldrb r0, [r4, #0x15] - lsrs r0, r0, #3 - lsls r0, r0, #1 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - adds r0, r5, r0 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileIndex - pop {r4, r5, pc} - .align 2, 0 -_0808FDE0: .4byte 0x0000010F -_0808FDE4: .4byte gUnk_080B4488 - - thumb_func_start sub_0808FDE8 -sub_0808FDE8: @ 0x0808FDE8 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r0, #0x70 - ldrh r5, [r0] - subs r0, r5, #1 - movs r1, #1 - bl sub_080002E0 - adds r4, r0, #0 - adds r0, r5, #0 - movs r1, #1 - bl GetTileIndex - ldr r6, _0808FE28 @ =0x0000402E - cmp r0, r6 - bne _0808FE30 - movs r0, #0xf0 - ands r0, r4 - cmp r0, #0 - beq _0808FE14 - cmp r0, #0x50 - bne _0808FE1C -_0808FE14: - movs r0, #5 - ands r0, r4 - cmp r0, #0 - bne _0808FE58 -_0808FE1C: - ldr r0, _0808FE2C @ =0x0000402C - adds r1, r5, #0 - movs r2, #1 - bl SetTile - b _0808FE58 - .align 2, 0 -_0808FE28: .4byte 0x0000402E -_0808FE2C: .4byte 0x0000402C -_0808FE30: - adds r0, r5, #0 - movs r1, #1 - bl sub_080002E0 - cmp r0, #5 - bne _0808FE58 - movs r1, #0xf0 - ands r1, r4 - cmp r1, #0 - beq _0808FE48 - cmp r1, #0x50 - bne _0808FE58 -_0808FE48: - ands r4, r0 - cmp r4, #0 - beq _0808FE58 - adds r0, r6, #0 - adds r1, r5, #0 - movs r2, #1 - bl SetTile -_0808FE58: - adds r0, r7, #0 - adds r0, #0x72 - ldrh r5, [r0] - adds r0, r5, #1 - movs r1, #1 - bl sub_080002E0 - adds r4, r0, #0 - adds r0, r5, #0 - movs r1, #1 - bl GetTileIndex - ldr r6, _0808FE98 @ =0x0000402F - cmp r0, r6 - bne _0808FEA0 - movs r0, #0xf0 - ands r0, r4 - cmp r0, #0 - beq _0808FE82 - cmp r0, #0x50 - bne _0808FE8A -_0808FE82: - movs r0, #0xa - ands r0, r4 - cmp r0, #0 - bne _0808FEC8 -_0808FE8A: - ldr r0, _0808FE9C @ =0x0000402D - adds r1, r5, #0 - movs r2, #1 - bl SetTile - b _0808FEC8 - .align 2, 0 -_0808FE98: .4byte 0x0000402F -_0808FE9C: .4byte 0x0000402D -_0808FEA0: - adds r0, r5, #0 - movs r1, #1 - bl sub_080002E0 - cmp r0, #0xa - bne _0808FEC8 - movs r1, #0xf0 - ands r1, r4 - cmp r1, #0 - beq _0808FEB8 - cmp r1, #0x50 - bne _0808FEC8 -_0808FEB8: - ands r4, r0 - cmp r4, #0 - beq _0808FEC8 - adds r0, r6, #0 - adds r1, r5, #0 - movs r2, #1 - bl SetTile -_0808FEC8: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_0808FECC -sub_0808FECC: @ 0x0808FECC - push {r4, r5, lr} - adds r2, r0, #0 - movs r4, #1 - ldr r0, _0808FF18 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0808FF10 - ldr r3, _0808FF1C @ =gPlayerEntity - ldrb r0, [r3, #0xc] - cmp r0, #6 - bne _0808FF10 - ldrb r0, [r3, #0x14] - cmp r0, #0 - bne _0808FF10 - movs r1, #0x32 - ldrsh r0, [r3, r1] - movs r5, #0x32 - ldrsh r1, [r2, r5] - subs r0, r0, r1 - cmp r0, #0x13 - bgt _0808FF10 - movs r0, #0x2e - ldrsh r2, [r2, r0] - adds r0, r2, #0 - adds r0, #0xc - movs r5, #0x2e - ldrsh r1, [r3, r5] - cmp r0, r1 - ble _0808FF10 - subs r0, #0x18 - cmp r0, r1 - blt _0808FF12 -_0808FF10: - movs r4, #0 -_0808FF12: - adds r0, r4, #0 - pop {r4, r5, pc} - .align 2, 0 -_0808FF18: .4byte gPlayerState -_0808FF1C: .4byte gPlayerEntity - - thumb_func_start sub_0808FF20 -sub_0808FF20: @ 0x0808FF20 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xb] - cmp r1, #0 - beq _0808FF4A - cmp r1, #0 - blt _0808FF4A - cmp r1, #2 - bgt _0808FF4A - subs r1, #1 - movs r0, #0x63 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _0808FF4A - str r4, [r1, #0x50] - adds r0, r4, #0 - bl CopyPosition -_0808FF4A: - pop {r4, pc} - - thumb_func_start nullsub_1 -nullsub_1: @ 0x0808FF4C - bx lr - .align 2, 0 - - thumb_func_start sub_0808FF50 -sub_0808FF50: @ 0x0808FF50 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r6, r0, #0 - movs r0, #0x2e - ldrsh r1, [r6, r0] - ldr r2, _0808FF98 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r4, #0x32 - ldrsh r0, [r6, r4] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r2, r6, #0 - adds r2, #0x7c - strh r1, [r2] - ldrh r0, [r6, #0x2e] - movs r1, #0xf - ands r1, r0 - ldrh r7, [r2] - adds r0, r6, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #0 - beq _0808FF9C - cmp r0, #1 - beq _0808FFC0 - b _0809008A - .align 2, 0 -_0808FF98: .4byte gRoomControls -_0808FF9C: - adds r0, r6, #0 - adds r0, #0x70 - strh r7, [r0] - ldrh r0, [r0] - movs r1, #1 - bl GetTileIndex - adds r1, r6, #0 - adds r1, #0x74 - strh r0, [r1] - ldr r0, _0808FFBC @ =0x0000404A - adds r1, r7, #0 - movs r2, #1 - bl SetTile - b _0809008A - .align 2, 0 -_0808FFBC: .4byte 0x0000404A -_0808FFC0: - movs r0, #8 - ands r1, r0 - cmp r1, #0 - beq _0809002C - adds r0, r6, #0 - adds r0, #0x70 - strh r7, [r0] - ldrh r0, [r0] - movs r1, #1 - bl GetTileIndex - adds r1, r6, #0 - adds r1, #0x74 - strh r0, [r1] - ldr r4, _08090028 @ =gUnk_08121EE4 - movs r0, #0x81 - adds r0, r0, r6 - mov r8, r0 - ldrb r0, [r0] - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r0, [r0] - adds r1, r7, #0 - movs r2, #1 - bl SetTile - adds r0, r7, #1 - adds r5, r6, #0 - adds r5, #0x72 - strh r0, [r5] - ldrh r0, [r5] - movs r1, #1 - bl GetTileIndex - adds r1, r6, #0 - adds r1, #0x76 - strh r0, [r1] - mov r1, r8 - ldrb r0, [r1] - adds r0, #4 - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r1, [r0] - ldrh r2, [r5] - adds r0, r6, #0 - bl sub_08090094 - adds r0, r6, #0 - movs r1, #1 - bl sub_0809028C - b _0809008A - .align 2, 0 -_08090028: .4byte gUnk_08121EE4 -_0809002C: - adds r0, r6, #0 - adds r0, #0x72 - strh r7, [r0] - ldrh r0, [r0] - movs r1, #1 - bl GetTileIndex - adds r1, r6, #0 - adds r1, #0x76 - strh r0, [r1] - ldr r5, _08090090 @ =gUnk_08121EE4 - movs r4, #0x81 - adds r4, r4, r6 - mov r8, r4 - ldrb r0, [r4] - lsls r0, r0, #1 - adds r0, r0, r5 - ldrh r0, [r0] - adds r1, r7, #0 - movs r2, #1 - bl SetTile - subs r0, r7, #1 - adds r4, r6, #0 - adds r4, #0x70 - strh r0, [r4] - ldrh r0, [r4] - movs r1, #1 - bl GetTileIndex - adds r1, r6, #0 - adds r1, #0x74 - strh r0, [r1] - mov r1, r8 - ldrb r0, [r1] - adds r0, #2 - lsls r0, r0, #1 - adds r0, r0, r5 - ldrh r1, [r0] - ldrh r2, [r4] - adds r0, r6, #0 - bl sub_08090094 - adds r0, r6, #0 - movs r1, #0 - bl sub_0809028C -_0809008A: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08090090: .4byte gUnk_08121EE4 - - thumb_func_start sub_08090094 -sub_08090094: @ 0x08090094 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - adds r5, r1, #0 - adds r7, r2, #0 - adds r0, r7, #0 - movs r1, #1 - bl sub_080002E0 - adds r4, r0, #0 - adds r0, r7, #0 - movs r1, #1 - bl GetTileIndex - adds r3, r0, #0 - movs r0, #0x80 - lsls r0, r0, #7 - ands r0, r3 - cmp r0, #0 - bne _0809012C - adds r3, r5, #0 - ldr r1, _080900D0 @ =0xFFFFBFDC - adds r0, r3, r1 - cmp r0, #0xb - bhi _0809011A - lsls r0, r0, #2 - ldr r1, _080900D4 @ =_080900D8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080900D0: .4byte 0xFFFFBFDC -_080900D4: .4byte _080900D8 -_080900D8: @ jump table - .4byte _08090114 @ case 0 - .4byte _08090108 @ case 1 - .4byte _0809011A @ case 2 - .4byte _0809011A @ case 3 - .4byte _0809011A @ case 4 - .4byte _0809011A @ case 5 - .4byte _0809011A @ case 6 - .4byte _0809011A @ case 7 - .4byte _08090114 @ case 8 - .4byte _0809010E @ case 9 - .4byte _08090114 @ case 10 - .4byte _0809010E @ case 11 -_08090108: - cmp r4, #5 - bne _0809011A - b _08090118 -_0809010E: - cmp r4, #5 - bne _0809011A - b _08090118 -_08090114: - cmp r4, #0xa - bne _0809011A -_08090118: - ldr r3, _08090128 @ =0x00004022 -_0809011A: - adds r0, r3, #0 - adds r1, r7, #0 - movs r2, #1 - bl SetTile - b _08090242 - .align 2, 0 -_08090128: .4byte 0x00004022 -_0809012C: - ldr r1, _08090140 @ =0xFFFFBFDE - adds r0, r3, r1 - cmp r0, #0xd - bls _08090136 - b _08090242 -_08090136: - lsls r0, r0, #2 - ldr r1, _08090144 @ =_08090148 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08090140: .4byte 0xFFFFBFDE -_08090144: .4byte _08090148 -_08090148: @ jump table - .4byte _08090242 @ case 0 - .4byte _08090242 @ case 1 - .4byte _080901EC @ case 2 - .4byte _08090180 @ case 3 - .4byte _08090242 @ case 4 - .4byte _08090242 @ case 5 - .4byte _08090242 @ case 6 - .4byte _08090242 @ case 7 - .4byte _08090242 @ case 8 - .4byte _08090242 @ case 9 - .4byte _08090210 @ case 10 - .4byte _080901B4 @ case 11 - .4byte _08090210 @ case 12 - .4byte _080901B4 @ case 13 -_08090180: - ldr r0, _080901A8 @ =0x00004024 - cmp r5, r0 - bne _08090194 - ldr r3, _080901AC @ =0x00004022 - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x10 - orrs r0, r1 - strb r0, [r2] -_08090194: - ldr r0, _080901B0 @ =0x0000402C - cmp r5, r0 - bne _08090238 - ldr r3, _080901AC @ =0x00004022 - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x10 - b _08090234 - .align 2, 0 -_080901A8: .4byte 0x00004024 -_080901AC: .4byte 0x00004022 -_080901B0: .4byte 0x0000402C -_080901B4: - ldr r0, _080901DC @ =0x0000402C - cmp r5, r0 - bne _080901C8 - ldr r3, _080901E0 @ =0x0000402B - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x10 - orrs r0, r1 - strb r0, [r2] -_080901C8: - ldr r0, _080901E4 @ =0x00004024 - cmp r5, r0 - bne _08090238 - ldr r3, _080901E8 @ =0x00004022 - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x10 - b _08090234 - .align 2, 0 -_080901DC: .4byte 0x0000402C -_080901E0: .4byte 0x0000402B -_080901E4: .4byte 0x00004024 -_080901E8: .4byte 0x00004022 -_080901EC: - ldr r0, _08090204 @ =0x00004025 - cmp r5, r0 - bne _08090200 - ldr r3, _08090208 @ =0x00004022 - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r2] -_08090200: - ldr r0, _0809020C @ =0x0000402D - b _08090226 - .align 2, 0 -_08090204: .4byte 0x00004025 -_08090208: .4byte 0x00004022 -_0809020C: .4byte 0x0000402D -_08090210: - ldr r0, _08090244 @ =0x0000402D - cmp r5, r0 - bne _08090224 - ldr r3, _08090248 @ =0x0000402B - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r2] -_08090224: - ldr r0, _0809024C @ =0x00004025 -_08090226: - cmp r5, r0 - bne _08090238 - ldr r3, _08090250 @ =0x00004022 - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x20 -_08090234: - orrs r0, r1 - strb r0, [r2] -_08090238: - adds r0, r3, #0 - adds r1, r7, #0 - movs r2, #1 - bl SetTile -_08090242: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08090244: .4byte 0x0000402D -_08090248: .4byte 0x0000402B -_0809024C: .4byte 0x00004025 -_08090250: .4byte 0x00004022 - - thumb_func_start sub_08090254 -sub_08090254: @ 0x08090254 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x74 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x70 - ldrh r1, [r1] - adds r5, r4, #0 - adds r5, #0x38 - ldrb r2, [r5] - bl sub_0807B9B8 - adds r0, r4, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #1 - bne _08090288 - adds r0, r4, #0 - adds r0, #0x76 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x72 - ldrh r1, [r1] - ldrb r2, [r5] - bl sub_0807B9B8 -_08090288: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0809028C -sub_0809028C: @ 0x0809028C - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r6, r0, #0 - adds r4, r6, #0 - adds r4, #0x83 - ldrb r0, [r4] - movs r2, #0x30 - ands r2, r0 - movs r0, #0 - mov sb, r0 - strb r2, [r4] - adds r0, r6, #0 - adds r0, #0x70 - ldrh r5, [r0] - adds r7, r5, #0 - subs r7, #0x80 - adds r0, #2 - ldrh r3, [r0] - movs r0, #0x80 - rsbs r0, r0, #0 - adds r0, r0, r3 - mov r8, r0 - cmp r1, #1 - bne _0809039A - movs r0, #0x20 - ands r0, r2 - cmp r0, #0 - beq _080902D4 - adds r1, r3, #0 - subs r1, #0x7f - movs r0, #0 - bl sub_08090480 - b _080902FE -_080902D4: - mov r0, r8 - movs r1, #2 - bl GetTileType - adds r1, r0, #0 - ldr r0, _080902EC @ =0x00000301 - cmp r1, r0 - beq _080902F0 - adds r0, #7 - cmp r1, r0 - beq _080902F6 - b _080902FE - .align 2, 0 -_080902EC: .4byte 0x00000301 -_080902F0: - ldrb r0, [r4] - movs r1, #8 - b _080902FA -_080902F6: - ldrb r0, [r4] - movs r1, #2 -_080902FA: - orrs r0, r1 - strb r0, [r4] -_080902FE: - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x2a - ands r0, r1 - adds r4, r2, #0 - cmp r0, #0 - beq _0809031E - movs r0, #0 - adds r1, r7, #0 - bl sub_08090480 - movs r0, #0 - mov r1, r8 - bl sub_08090480 -_0809031E: - ldrb r1, [r4] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _0809034E - subs r4, r7, #1 - adds r0, r4, #0 - movs r1, #1 - bl GetTileType - movs r1, #0xc0 - lsls r1, r1, #2 - cmp r0, r1 - bne _0809033C - b _08090478 -_0809033C: - movs r0, #0 - adds r1, r4, #0 - bl sub_08090480 - subs r1, r7, #2 - movs r0, #2 - bl sub_08090480 - b _08090478 -_0809034E: - subs r0, r7, #1 - movs r1, #2 - bl GetTileType - adds r1, r0, #0 - movs r0, #0xc0 - lsls r0, r0, #2 - cmp r1, r0 - beq _08090368 - adds r0, #8 - cmp r1, r0 - beq _0809036E - b _08090376 -_08090368: - ldrb r1, [r4] - movs r0, #4 - b _08090372 -_0809036E: - ldrb r1, [r4] - movs r0, #1 -_08090372: - orrs r0, r1 - strb r0, [r4] -_08090376: - ldrb r1, [r4] - movs r0, #0x15 - ands r0, r1 - cmp r0, #0 - beq _08090478 - movs r0, #0x2a - ands r0, r1 - cmp r0, #0 - bne _08090478 - movs r0, #0 - adds r1, r7, #0 - bl sub_08090480 - movs r0, #1 - mov r1, r8 - bl sub_08090480 - b _08090478 -_0809039A: - movs r0, #0x10 - ands r0, r2 - cmp r0, #0 - beq _080903AE - adds r1, r5, #0 - subs r1, #0x81 - movs r0, #0 - bl sub_08090480 - b _080903DA -_080903AE: - adds r0, r7, #0 - movs r1, #2 - bl GetTileType - adds r1, r0, #0 - ldr r0, _080903C8 @ =0x00000302 - cmp r1, r0 - beq _080903CC - adds r0, #4 - cmp r1, r0 - beq _080903D2 - b _080903DA - .align 2, 0 -_080903C8: .4byte 0x00000302 -_080903CC: - ldrb r0, [r4] - movs r1, #4 - b _080903D6 -_080903D2: - ldrb r0, [r4] - movs r1, #1 -_080903D6: - orrs r0, r1 - strb r0, [r4] -_080903DA: - adds r2, r6, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x15 - ands r0, r1 - adds r4, r2, #0 - cmp r0, #0 - beq _080903FA - movs r0, #0 - adds r1, r7, #0 - bl sub_08090480 - movs r0, #0 - mov r1, r8 - bl sub_08090480 -_080903FA: - ldrb r1, [r4] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _0809042C - mov r4, r8 - adds r4, #1 - adds r0, r4, #0 - movs r1, #1 - bl GetTileType - movs r1, #0xc0 - lsls r1, r1, #2 - cmp r0, r1 - beq _08090478 - movs r0, #0 - adds r1, r4, #0 - bl sub_08090480 - mov r1, r8 - adds r1, #2 - movs r0, #1 - bl sub_08090480 - b _08090478 -_0809042C: - mov r0, r8 - adds r0, #1 - movs r1, #2 - bl GetTileType - adds r1, r0, #0 - movs r0, #0xc0 - lsls r0, r0, #2 - cmp r1, r0 - beq _08090448 - adds r0, #6 - cmp r1, r0 - beq _0809044E - b _08090456 -_08090448: - ldrb r1, [r4] - movs r0, #8 - b _08090452 -_0809044E: - ldrb r1, [r4] - movs r0, #2 -_08090452: - orrs r0, r1 - strb r0, [r4] -_08090456: - ldrb r1, [r4] - movs r0, #0x2a - ands r0, r1 - cmp r0, #0 - beq _08090478 - movs r0, #0x15 - ands r0, r1 - cmp r0, #0 - bne _08090478 - movs r0, #2 - adds r1, r7, #0 - bl sub_08090480 - movs r0, #0 - mov r1, r8 - bl sub_08090480 -_08090478: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08090480 -sub_08090480: @ 0x08090480 - push {lr} - ldr r2, _08090494 @ =gUnk_08121EF0 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - movs r2, #1 - bl SetTile - pop {pc} - .align 2, 0 -_08090494: .4byte gUnk_08121EF0 - - thumb_func_start sub_08090498 -sub_08090498: @ 0x08090498 - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x70 - ldrh r0, [r0] - adds r4, r0, #0 - subs r4, #0x80 - adds r0, r4, #0 - movs r1, #1 - bl sub_0807BA8C - adds r0, r5, #0 - adds r0, #0x83 - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080904D2 - adds r0, r4, #0 - movs r1, #2 - bl GetTileType - ldr r1, _08090510 @ =0x00000306 - cmp r0, r1 - bne _080904D2 - movs r0, #0x62 - adds r1, r4, #0 - movs r2, #1 - bl sub_08000148 -_080904D2: - adds r0, r5, #0 - adds r0, #0x72 - ldrh r0, [r0] - adds r4, r0, #0 - subs r4, #0x80 - adds r0, r4, #0 - movs r1, #1 - bl sub_0807BA8C - adds r0, r5, #0 - adds r0, #0x83 - ldrb r1, [r0] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0809050C - adds r0, r4, #0 - movs r1, #2 - bl GetTileType - movs r1, #0xc2 - lsls r1, r1, #2 - cmp r0, r1 - bne _0809050C - movs r0, #0x63 - adds r1, r4, #0 - movs r2, #1 - bl sub_08000148 -_0809050C: - pop {r4, r5, pc} - .align 2, 0 -_08090510: .4byte 0x00000306 - - thumb_func_start sub_08090514 -sub_08090514: @ 0x08090514 - push {lr} - adds r2, r0, #0 - ldr r0, [r2, #0x50] - cmp r0, #0 - beq _0809059E - ldrb r0, [r0, #0xd] - cmp r0, #1 - beq _08090552 - cmp r0, #1 - bgt _0809052E - cmp r0, #0 - beq _08090538 - b _0809059E -_0809052E: - cmp r0, #2 - beq _08090568 - cmp r0, #3 - beq _08090582 - b _0809059E -_08090538: - ldrb r1, [r2, #0x19] - movs r0, #0x3f - ands r0, r1 - movs r1, #0x80 - orrs r0, r1 - strb r0, [r2, #0x19] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - b _0809059A -_08090552: - ldrb r0, [r2, #0x19] - movs r1, #0xc0 - orrs r0, r1 - strb r0, [r2, #0x19] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - b _0809059A -_08090568: - ldrb r1, [r2, #0x19] - movs r0, #0x3f - ands r0, r1 - movs r1, #0x80 - orrs r0, r1 - strb r0, [r2, #0x19] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #5 - b _0809059A -_08090582: - ldrb r1, [r2, #0x19] - movs r0, #0x3f - ands r0, r1 - movs r1, #0x80 - orrs r0, r1 - strb r0, [r2, #0x19] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 -_0809059A: - orrs r0, r1 - strb r0, [r2] -_0809059E: - pop {pc} diff --git a/asm/object/pushableGrave.s b/asm/object/pushableGrave.s deleted file mode 100644 index 7f763ea2..00000000 --- a/asm/object/pushableGrave.s +++ /dev/null @@ -1,537 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start PushableGrave -PushableGrave: @ 0x08097588 - push {lr} - ldr r2, _0809759C @ =gUnk_081232AC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0809759C: .4byte gUnk_081232AC - - thumb_func_start sub_080975A0 -sub_080975A0: @ 0x080975A0 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r4, r0, #0 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r0, [r4, #0xa] - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _08097690 @ =gRoomControls - mov r8, r2 - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r5, r0, #4 - movs r6, #0x3f - ands r5, r6 - movs r1, #0x32 - ldrsh r0, [r4, r1] - ldrh r1, [r2, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r6 - lsls r0, r0, #6 - orrs r5, r0 - adds r0, r5, #0 - subs r0, #0x41 - adds r7, r4, #0 - adds r7, #0x38 - ldrb r1, [r7] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x6a - strh r0, [r1] - adds r0, r5, #0 - subs r0, #0x40 - ldrb r1, [r7] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x6c - strh r0, [r1] - adds r0, r5, #0 - subs r0, #0x3f - ldrb r1, [r7] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x6e - strh r0, [r1] - subs r0, r5, #1 - ldrb r1, [r7] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x70 - strh r0, [r1] - ldrb r1, [r7] - adds r0, r5, #0 - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x72 - strh r0, [r1] - adds r0, r5, #1 - ldrb r1, [r7] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x74 - strh r0, [r1] - adds r0, r5, #0 - adds r0, #0x3f - ldrb r1, [r7] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x76 - strh r0, [r1] - adds r0, r5, #0 - adds r0, #0x40 - ldrb r1, [r7] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x78 - strh r0, [r1] - adds r0, r5, #0 - adds r0, #0x41 - ldrb r1, [r7] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x7a - strh r0, [r1] - adds r0, r4, #0 - bl sub_0809798C - cmp r0, #0 - beq _080976A2 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _08097694 - ldrh r0, [r4, #0x32] - subs r0, #0x16 - b _08097698 - .align 2, 0 -_08097690: .4byte gRoomControls -_08097694: - ldrh r0, [r4, #0x32] - subs r0, #0x10 -_08097698: - strh r0, [r4, #0x32] - adds r0, r4, #0 - bl sub_080977F4 - b _08097722 -_080976A2: - movs r0, #1 - strb r0, [r4, #0xc] - movs r2, #0x2e - ldrsh r0, [r4, r2] - mov r2, r8 - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r5, r0, #4 - ands r5, r6 - movs r1, #0x32 - ldrsh r0, [r4, r1] - ldrh r1, [r2, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r6 - lsls r0, r0, #6 - orrs r5, r0 - adds r0, r4, #0 - adds r0, #0x68 - strh r5, [r0] - ldr r1, _080976FC @ =gUnk_081232DE - ldrb r0, [r4, #0xb] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r6, [r0] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _08097704 - ldr r0, _08097700 @ =gUnk_080FD578 - str r0, [r4, #0x48] - subs r1, r5, #1 - ldrb r2, [r7] - adds r0, r6, #0 - bl SetTile - ldrb r2, [r7] - adds r0, r6, #0 - adds r1, r5, #0 - bl SetTile - ldrh r0, [r4, #0x32] - adds r0, #2 - strh r0, [r4, #0x32] - b _08097722 - .align 2, 0 -_080976FC: .4byte gUnk_081232DE -_08097700: .4byte gUnk_080FD578 -_08097704: - ldr r0, _08097728 @ =gUnk_080FD570 - str r0, [r4, #0x48] - ldrb r2, [r7] - adds r0, r6, #0 - adds r1, r5, #0 - bl SetTile - ldrb r0, [r4, #0xb] - cmp r0, #2 - bne _08097722 - ldr r0, _0809772C @ =gUnk_081232C0 - ldrb r2, [r7] - adds r1, r5, #0 - bl sub_0801AF18 -_08097722: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08097728: .4byte gUnk_080FD570 -_0809772C: .4byte gUnk_081232C0 - - thumb_func_start sub_08097730 -sub_08097730: @ 0x08097730 - push {r4, lr} - adds r4, r0, #0 - bl sub_0809785C - cmp r0, #0 - beq _08097744 - ldrb r1, [r4, #0xe] - adds r0, r4, #0 - bl RequestPriorityDuration -_08097744: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08097748 -sub_08097748: @ 0x08097748 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xd] - cmp r0, #0 - bne _08097774 - ldrb r0, [r2, #0xf] - subs r0, #1 - strb r0, [r2, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0809779A - movs r0, #1 - strb r0, [r2, #0xd] - movs r0, #0x78 - strb r0, [r2, #0xf] - ldr r1, _08097770 @ =gRoomControls - str r2, [r1, #0x30] - movs r0, #2 - strb r0, [r1, #0xe] - b _0809779A - .align 2, 0 -_08097770: .4byte gRoomControls -_08097774: - ldrb r0, [r2, #0xf] - subs r0, #1 - strb r0, [r2, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0809779A - movs r0, #3 - strb r0, [r2, #0xc] - movs r0, #0x60 - strb r0, [r2, #0xe] - movs r0, #0x14 - strb r0, [r2, #0xf] - adds r0, r2, #0 - movs r1, #0x60 - bl RequestPriorityDuration - ldr r0, _0809779C @ =0x0000010F - bl SoundReq -_0809779A: - pop {pc} - .align 2, 0 -_0809779C: .4byte 0x0000010F - - thumb_func_start sub_080977A0 -sub_080977A0: @ 0x080977A0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _080977BC - subs r0, #1 - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl LinearMoveUpdate - adds r0, r4, #0 - bl sub_0800445C - b _080977E4 -_080977BC: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _080977C8 - subs r0, #1 - strb r0, [r4, #0xf] - b _080977E4 -_080977C8: - movs r0, #0x72 - bl EnqueueSFX - adds r0, r4, #0 - bl sub_080977F4 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080977E4 - ldr r0, _080977E8 @ =gRoomControls - ldr r1, _080977EC @ =gPlayerEntity - str r1, [r0, #0x30] - movs r1, #4 - strb r1, [r0, #0xe] -_080977E4: - pop {r4, pc} - .align 2, 0 -_080977E8: .4byte gRoomControls -_080977EC: .4byte gPlayerEntity - - thumb_func_start nullsub_528 -nullsub_528: @ 0x080977F0 - bx lr - .align 2, 0 - - thumb_func_start sub_080977F4 -sub_080977F4: @ 0x080977F4 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - movs r1, #0 - movs r0, #4 - strb r0, [r5, #0xc] - adds r0, r5, #0 - adds r0, #0x63 - strb r1, [r0] - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r3, _08097854 @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - asrs r4, r0, #4 - movs r2, #0x3f - ands r4, r2 - movs r1, #0x32 - ldrsh r0, [r5, r1] - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r4, r0 - ldr r7, _08097858 @ =0x00004022 - adds r6, r5, #0 - adds r6, #0x38 - ldrb r2, [r6] - adds r0, r7, #0 - adds r1, r4, #0 - bl SetTile - ldrb r0, [r5, #0xa] - cmp r0, #0 - bne _08097844 - subs r1, r4, #1 - ldrb r2, [r6] - adds r0, r7, #0 - bl SetTile -_08097844: - adds r1, r5, #0 - adds r1, #0x86 - ldrh r0, [r1] - cmp r0, #0 - beq _08097852 - bl SetFlag -_08097852: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08097854: .4byte gRoomControls -_08097858: .4byte 0x00004022 - - thumb_func_start sub_0809785C -sub_0809785C: @ 0x0809785C - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r4, [r5, #0xa] - cmp r4, #0 - beq _08097948 - ldrb r0, [r5, #0xb] - cmp r0, #0 - bne _0809786E - b _08097986 -_0809786E: - adds r0, r5, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - adds r4, r5, #0 - adds r4, #0x68 - adds r6, r5, #0 - adds r6, #0x38 - cmp r0, #0 - bne _08097892 - ldrh r0, [r4] - ldrb r1, [r6] - bl GetTileType - ldr r1, _08097940 @ =0x0000403F - cmp r0, r1 - bne _08097986 -_08097892: - movs r1, #0 - movs r0, #3 - strb r0, [r5, #0xc] - movs r0, #0x40 - strb r0, [r5, #0xe] - strb r1, [r5, #0xf] - strb r1, [r5, #0x15] - strh r0, [r5, #0x24] - ldrh r4, [r4] - adds r0, r5, #0 - adds r0, #0x72 - ldrh r0, [r0] - ldrb r2, [r6] - adds r1, r4, #0 - bl sub_0807B9B8 - ldrb r0, [r5, #0xb] - cmp r0, #2 - bne _08097934 - adds r0, r5, #0 - adds r0, #0x6a - ldrh r0, [r0] - adds r1, r4, #0 - subs r1, #0x41 - ldrb r2, [r6] - bl sub_0807B9B8 - adds r0, r5, #0 - adds r0, #0x6c - ldrh r0, [r0] - adds r1, r4, #0 - subs r1, #0x40 - ldrb r2, [r6] - bl sub_0807B9B8 - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - adds r1, r4, #0 - subs r1, #0x3f - ldrb r2, [r6] - bl sub_0807B9B8 - adds r0, r5, #0 - adds r0, #0x70 - ldrh r0, [r0] - subs r1, r4, #1 - ldrb r2, [r6] - bl sub_0807B9B8 - adds r0, r5, #0 - adds r0, #0x74 - ldrh r0, [r0] - adds r1, r4, #1 - ldrb r2, [r6] - bl sub_0807B9B8 - adds r0, r5, #0 - adds r0, #0x76 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x3f - ldrb r2, [r6] - bl sub_0807B9B8 - adds r0, r5, #0 - adds r0, #0x78 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x40 - ldrb r2, [r6] - bl sub_0807B9B8 - adds r0, r5, #0 - adds r0, #0x7a - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x41 - ldrb r2, [r6] - bl sub_0807B9B8 -_08097934: - ldr r0, _08097944 @ =0x0000010F - bl SoundReq - movs r0, #1 - b _08097988 - .align 2, 0 -_08097940: .4byte 0x0000403F -_08097944: .4byte 0x0000010F -_08097948: - adds r0, r5, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _08097986 - movs r0, #2 - strb r0, [r5, #0xc] - strb r4, [r5, #0xd] - movs r0, #0xf0 - strb r0, [r5, #0xe] - movs r0, #0x3c - strb r0, [r5, #0xf] - strb r4, [r5, #0x15] - movs r0, #0x40 - strh r0, [r5, #0x24] - adds r4, r5, #0 - adds r4, #0x68 - ldrh r0, [r4] - adds r5, #0x38 - ldrb r1, [r5] - bl sub_0807BA8C - ldrh r0, [r4] - subs r0, #1 - ldrb r1, [r5] - bl sub_0807BA8C - movs r0, #1 - b _08097988 -_08097986: - movs r0, #0 -_08097988: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0809798C -sub_0809798C: @ 0x0809798C - push {r4, lr} - adds r1, r0, #0 - movs r4, #0 - ldrb r0, [r1, #0xa] - cmp r0, #0 - beq _0809799E - ldrb r0, [r1, #0xb] - cmp r0, #0 - beq _080979AE -_0809799E: - adds r0, r1, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _080979AE - movs r4, #1 -_080979AE: - adds r0, r4, #0 - pop {r4, pc} - .align 2, 0 diff --git a/asm/object/pushableRock.s b/asm/object/pushableRock.s deleted file mode 100644 index 8ee626ff..00000000 --- a/asm/object/pushableRock.s +++ /dev/null @@ -1,269 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start PushableRock -PushableRock: @ 0x0808A4F4 - push {lr} - ldr r2, _0808A508 @ =gUnk_08121078 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0808A508: .4byte gUnk_08121078 - - thumb_func_start sub_0808A50C -sub_0808A50C: @ 0x0808A50C - push {lr} - ldrb r2, [r0, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r2 - movs r2, #1 - orrs r1, r2 - strb r1, [r0, #0x18] - ldrb r1, [r0, #0xc] - adds r1, #1 - strb r1, [r0, #0xc] - ldrb r2, [r0, #0x19] - movs r1, #0x3f - ands r1, r2 - movs r2, #0x80 - orrs r1, r2 - strb r1, [r0, #0x19] - adds r3, r0, #0 - adds r3, #0x29 - ldrb r2, [r3] - movs r1, #8 - rsbs r1, r1, #0 - ands r1, r2 - movs r2, #4 - orrs r1, r2 - movs r2, #0x39 - rsbs r2, r2, #0 - ands r1, r2 - movs r2, #0x18 - orrs r1, r2 - strb r1, [r3] - bl sub_0808A644 - pop {pc} - - thumb_func_start sub_0808A550 -sub_0808A550: @ 0x0808A550 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x74 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - adds r1, r0, #0 - ldr r0, _0808A58C @ =0x0000401F - cmp r1, r0 - bhi _0808A5CC - subs r0, #3 - cmp r1, r0 - blo _0808A5CC - adds r0, r1, #0 - subs r0, #0x1c - lsls r1, r0, #1 - strb r1, [r4, #0x14] - lsls r1, r0, #3 - strb r1, [r4, #0x15] - lsls r0, r0, #0x19 - lsrs r0, r0, #0x18 - cmp r0, #2 - bne _0808A590 - ldrb r0, [r4, #0x18] - movs r1, #0x40 - orrs r0, r1 - b _0808A598 - .align 2, 0 -_0808A58C: .4byte 0x0000401F -_0808A590: - ldrb r1, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r1 -_0808A598: - strb r0, [r4, #0x18] - adds r0, r4, #0 - adds r0, #0x70 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x74 - ldrh r1, [r1] - adds r2, r4, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - adds r1, #1 - adds r0, r4, #0 - bl InitializeAnimation - ldr r0, _0808A5C8 @ =0x0000010F - bl EnqueueSFX - b _0808A5DE - .align 2, 0 -_0808A5C8: .4byte 0x0000010F -_0808A5CC: - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0 - beq _0808A5DE - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_0808A5DE: - pop {r4, pc} - - thumb_func_start sub_0808A5E0 -sub_0808A5E0: @ 0x0808A5E0 - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_0800445C - ldr r2, _0808A618 @ =gUnk_08121088 - adds r5, r4, #0 - adds r5, #0x5a - ldrb r1, [r5] - movs r0, #0xf - ands r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl LinearMoveUpdate - adds r0, r4, #0 - bl GetNextFrame - ldrb r1, [r5] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0808A616 - movs r0, #0 - strb r0, [r4, #0xc] -_0808A616: - pop {r4, r5, pc} - .align 2, 0 -_0808A618: .4byte gUnk_08121088 - - thumb_func_start sub_0808A61C -sub_0808A61C: @ 0x0808A61C - push {lr} - adds r2, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0808A634 - adds r0, r2, #0 - bl GetNextFrame - b _0808A640 -_0808A634: - adds r0, r2, #0 - adds r0, #0x29 - ldrb r1, [r0] - movs r2, #7 - orrs r1, r2 - strb r1, [r0] -_0808A640: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0808A644 -sub_0808A644: @ 0x0808A644 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0808A6D0 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r5, r4, #0 - adds r5, #0x74 - strh r1, [r5] - ldrh r0, [r5] - adds r6, r4, #0 - adds r6, #0x38 - ldrb r1, [r6] - bl GetTileIndex - adds r1, r4, #0 - adds r1, #0x70 - strh r0, [r1] - ldrh r0, [r5] - ldrb r1, [r6] - bl sub_080002E0 - adds r1, r4, #0 - adds r1, #0x72 - strb r0, [r1] - ldrh r0, [r5] - ldrb r1, [r6] - bl sub_080002C8 - cmp r0, #0x19 - beq _0808A69E - cmp r0, #0xf0 - bne _0808A6E2 -_0808A69E: - ldr r0, _0808A6D4 @ =0x00004015 - ldrh r1, [r5] - ldrb r2, [r6] - bl SetTile - movs r0, #3 - strb r0, [r4, #0xc] - adds r5, r4, #0 - adds r5, #0x86 - ldrh r0, [r5] - bl CheckFlags - cmp r0, #0 - bne _0808A6D8 - ldrh r0, [r5] - bl SetFlag - movs r0, #0xcd - bl SoundReq - adds r0, r4, #0 - movs r1, #5 - bl InitializeAnimation - b _0808A6EC - .align 2, 0 -_0808A6D0: .4byte gRoomControls -_0808A6D4: .4byte 0x00004015 -_0808A6D8: - adds r0, r4, #0 - movs r1, #6 - bl InitializeAnimation - b _0808A6EC -_0808A6E2: - ldr r0, _0808A6F0 @ =0x0000401B - ldrh r1, [r5] - ldrb r2, [r6] - bl SetTile -_0808A6EC: - pop {r4, r5, r6, pc} - .align 2, 0 -_0808A6F0: .4byte 0x0000401B diff --git a/asm/object/pushableStatue.s b/asm/object/pushableStatue.s deleted file mode 100644 index 4a83e3bf..00000000 --- a/asm/object/pushableStatue.s +++ /dev/null @@ -1,741 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start PushableStatue -PushableStatue: @ 0x080891DC - push {lr} - ldr r2, _080891F0 @ =gUnk_08120C98 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080891F0: .4byte gUnk_08120C98 - - thumb_func_start sub_080891F4 -sub_080891F4: @ 0x080891F4 - push {r4, lr} - adds r4, r0, #0 - bl sub_0808965C - cmp r0, #0 - beq _08089236 - movs r3, #0 - movs r2, #1 - strb r2, [r4, #0xc] - movs r0, #0x80 - strh r0, [r4, #0x24] - ldrb r1, [r4, #0x11] - subs r0, #0x90 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - ldr r0, _08089238 @ =gUnk_080FD1F4 - str r0, [r4, #0x48] - strb r2, [r4, #0x16] - adds r0, r4, #0 - adds r0, #0x86 - strh r3, [r0] - adds r0, r4, #0 - bl sub_08089454 - adds r0, r4, #0 - bl sub_080894C8 - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_08089236: - pop {r4, pc} - .align 2, 0 -_08089238: .4byte gUnk_080FD1F4 - - thumb_func_start sub_0808923C -sub_0808923C: @ 0x0808923C - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_0800442E - cmp r0, #0 - bne _080892C0 - adds r0, r4, #0 - adds r0, #0x84 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 - ldr r0, _08089278 @ =0x0000400B - cmp r5, r0 - beq _080892BA - adds r0, r5, #0 - bl sub_0808968C - cmp r0, #1 - beq _0808927C - cmp r0, #1 - blo _08089294 - cmp r0, #2 - beq _080892B2 - b _080892C0 - .align 2, 0 -_08089278: .4byte 0x0000400B -_0808927C: - movs r1, #3 - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r5, #0 - subs r0, #0xc - ands r0, r1 - lsls r0, r0, #3 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_08089538 - b _080892C0 -_08089294: - movs r0, #0xf - movs r1, #4 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _080892AA - adds r0, r4, #0 - bl CopyPosition -_080892AA: - adds r0, r4, #0 - bl sub_080894FC - b _080892C0 -_080892B2: - adds r0, r4, #0 - adds r0, #0x80 - strh r5, [r0] - b _080892C0 -_080892BA: - adds r0, r4, #0 - bl sub_08078930 -_080892C0: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080892C4 -sub_080892C4: @ 0x080892C4 - push {lr} - adds r2, r0, #0 - adds r0, #0x86 - ldrh r0, [r0] - cmp r0, #0 - beq _080892D8 - adds r0, r2, #0 - bl sub_080895C0 - b _080892F6 -_080892D8: - ldr r0, _080892F8 @ =gPlayerState - ldrb r0, [r0, #5] - cmp r0, #0 - bne _080892E4 - movs r0, #6 - strb r0, [r2, #0xd] -_080892E4: - ldr r0, _080892FC @ =gUnk_08120CAC - ldrb r1, [r2, #0xd] - subs r1, #5 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 -_080892F6: - pop {pc} - .align 2, 0 -_080892F8: .4byte gPlayerState -_080892FC: .4byte gUnk_08120CAC - - thumb_func_start sub_08089300 -sub_08089300: @ 0x08089300 - push {r4, r5, lr} - adds r5, r0, #0 - adds r1, r5, #0 - adds r1, #0x83 - ldrb r0, [r1] - cmp r0, #0 - bne _0808932C - movs r0, #1 - strb r0, [r1] - ldr r1, _0808935C @ =gPlayerEntity - ldrb r0, [r1, #0x14] - ldr r2, _08089360 @ =gUnk_08120CB4 - adds r0, r0, r2 - movs r2, #0 - ldrsb r2, [r0, r2] - lsls r2, r2, #0x10 - movs r3, #1 - ldrsb r3, [r0, r3] - lsls r3, r3, #0x10 - adds r0, r5, #0 - bl PositionRelative -_0808932C: - adds r0, r5, #0 - adds r0, #0x84 - ldrh r0, [r0] - adds r1, r5, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - ldr r0, _08089364 @ =0x0000400B - cmp r4, r0 - beq _080893A0 - adds r0, r4, #0 - bl sub_0808968C - cmp r0, #1 - beq _08089368 - cmp r0, #1 - blo _0808937C - cmp r0, #2 - beq _0808939A - b _080893A0 - .align 2, 0 -_0808935C: .4byte gPlayerEntity -_08089360: .4byte gUnk_08120CB4 -_08089364: .4byte 0x0000400B -_08089368: - adds r0, r4, #0 - subs r0, #0xc - movs r1, #3 - ands r0, r1 - lsls r0, r0, #3 - strb r0, [r5, #0x15] - adds r0, r5, #0 - bl sub_08089538 - b _080893A0 -_0808937C: - movs r0, #0xf - movs r1, #4 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _08089392 - adds r0, r5, #0 - bl CopyPosition -_08089392: - adds r0, r5, #0 - bl sub_080894FC - b _080893D6 -_0808939A: - adds r0, r5, #0 - adds r0, #0x80 - strh r4, [r0] -_080893A0: - bl sub_080896B0 - cmp r0, #0 - beq _080893D6 - ldr r2, _080893D8 @ =gPlayerState - movs r3, #0 - movs r0, #0x10 - strb r0, [r2, #0xc] - adds r1, r2, #0 - adds r1, #0x38 - movs r0, #0x20 - strb r0, [r1] - ldr r0, [r2, #0x30] - movs r1, #1 - orrs r0, r1 - str r0, [r2, #0x30] - ldr r0, _080893DC @ =gPlayerEntity - strh r3, [r0, #0x2c] - strh r3, [r0, #0x30] - ldrb r0, [r0, #0x14] - movs r1, #4 - eors r0, r1 - lsls r0, r0, #2 - strb r0, [r5, #0x15] - adds r0, r5, #0 - bl sub_08089538 -_080893D6: - pop {r4, r5, pc} - .align 2, 0 -_080893D8: .4byte gPlayerState -_080893DC: .4byte gPlayerEntity - - thumb_func_start sub_080893E0 -sub_080893E0: @ 0x080893E0 - movs r2, #0 - movs r1, #1 - strb r1, [r0, #0xc] - adds r0, #0x83 - strb r2, [r0] - bx lr - - thumb_func_start sub_080893EC -sub_080893EC: @ 0x080893EC - push {r4, lr} - adds r4, r0, #0 - bl sub_080895C0 - cmp r0, #0 - beq _080893FC - movs r0, #1 - strb r0, [r4, #0xc] -_080893FC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08089400 -sub_08089400: @ 0x08089400 - 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 - beq _08089424 - 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] - b _0808944E -_08089424: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - movs r0, #1 - strb r0, [r4, #0xc] - ldr r0, _08089450 @ =0x0000400B - adds r1, r4, #0 - adds r1, #0x84 - ldrh r1, [r1] - adds r2, r4, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile - adds r0, r4, #0 - bl sub_080894C8 -_0808944E: - pop {r4, pc} - .align 2, 0 -_08089450: .4byte 0x0000400B - - thumb_func_start sub_08089454 -sub_08089454: @ 0x08089454 - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r0, #0x2e - ldrsh r1, [r5, r0] - ldr r2, _080894C0 @ =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 r6, r5, #0 - adds r6, #0x84 - strh r1, [r6] - ldrh r0, [r6] - adds r4, r5, #0 - adds r4, #0x38 - ldrb r1, [r4] - bl GetTileIndex - adds r1, r5, #0 - adds r1, #0x80 - strh r0, [r1] - ldr r5, _080894C4 @ =0x0000400B - ldrh r1, [r6] - ldrb r2, [r4] - adds r0, r5, #0 - bl SetTile - ldrb r0, [r4] - cmp r0, #2 - bne _080894BC - ldrh r0, [r6] - movs r1, #1 - bl GetTileType - movs r1, #0xc4 - lsls r1, r1, #2 - cmp r0, r1 - bne _080894BC - ldrh r1, [r6] - adds r0, r5, #0 - movs r2, #1 - bl SetTile -_080894BC: - pop {r4, r5, r6, pc} - .align 2, 0 -_080894C0: .4byte gRoomControls -_080894C4: .4byte 0x0000400B - - thumb_func_start sub_080894C8 -sub_080894C8: @ 0x080894C8 - push {r4, lr} - adds r3, r0, #0 - movs r2, #0 - ldr r1, _080894E0 @ =gRoomVars - adds r4, r1, #0 - adds r4, #0xac - ldr r0, [r4] - mov ip, r1 - cmp r0, #0 - bne _080894E4 - str r3, [r4] - b _080894FA - .align 2, 0 -_080894E0: .4byte gRoomVars -_080894E4: - adds r2, #1 - cmp r2, #7 - bhi _080894FA - lsls r0, r2, #2 - mov r1, ip - adds r1, #0xac - adds r1, r0, r1 - ldr r0, [r1] - cmp r0, #0 - bne _080894E4 - str r3, [r1] -_080894FA: - pop {r4, pc} - - thumb_func_start sub_080894FC -sub_080894FC: @ 0x080894FC - push {r4, lr} - adds r3, r0, #0 - movs r2, #0 - ldr r1, _08089514 @ =gRoomVars - adds r4, r1, #0 - adds r4, #0xac - ldr r0, [r4] - mov ip, r1 - cmp r3, r0 - bne _08089518 - str r2, [r4] - b _08089530 - .align 2, 0 -_08089514: .4byte gRoomVars -_08089518: - adds r2, #1 - cmp r2, #7 - bhi _08089530 - lsls r0, r2, #2 - mov r1, ip - adds r1, #0xac - adds r1, r0, r1 - ldr r0, [r1] - cmp r3, r0 - bne _08089518 - movs r0, #0 - str r0, [r1] -_08089530: - adds r0, r3, #0 - bl DeleteEntity - pop {r4, pc} - - thumb_func_start sub_08089538 -sub_08089538: @ 0x08089538 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r1, r5, #0 - adds r1, #0x86 - movs r0, #0x20 - strh r0, [r1] - adds r0, #0xef - bl EnqueueSFX - adds r0, r5, #0 - adds r0, #0x80 - ldrh r0, [r0] - adds r6, r5, #0 - adds r6, #0x84 - ldrh r1, [r6] - adds r4, r5, #0 - adds r4, #0x38 - ldrb r2, [r4] - bl SetTile - ldrb r0, [r4] - cmp r0, #2 - bne _08089580 - ldrh r0, [r6] - movs r1, #1 - bl GetTileType - ldr r1, _080895B8 @ =0x0000400B - cmp r0, r1 - bne _08089580 - movs r0, #0xc4 - lsls r0, r0, #2 - ldrh r1, [r6] - movs r2, #1 - bl sub_08000152 -_08089580: - adds r2, r5, #0 - adds r2, #0x84 - ldr r1, _080895BC @ =gUnk_080B4488 - ldrb r0, [r5, #0x15] - lsrs r0, r0, #3 - lsls r0, r0, #1 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - ldrh r2, [r2] - adds r0, r0, r2 - adds r1, r5, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x79 - beq _080895AC - cmp r0, #0x77 - bne _080895B4 -_080895AC: - adds r1, r5, #0 - adds r1, #0x63 - movs r0, #0xfe - strb r0, [r1] -_080895B4: - pop {r4, r5, r6, pc} - .align 2, 0 -_080895B8: .4byte 0x0000400B -_080895BC: .4byte gUnk_080B4488 - - thumb_func_start sub_080895C0 -sub_080895C0: @ 0x080895C0 - push {r4, lr} - adds r4, r0, #0 - bl LinearMoveUpdate - adds r1, r4, #0 - adds r1, #0x86 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0808964C - adds r0, r4, #0 - bl sub_0800442E - cmp r0, #0 - bne _0808964C - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080002D0 - cmp r0, #0 - bne _080895FE - adds r0, r4, #0 - bl sub_08089454 - movs r0, #1 - b _08089654 -_080895FE: - movs r0, #0xf - movs r1, #4 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _08089614 - adds r0, r4, #0 - bl CopyPosition -_08089614: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - ldr r2, _08089658 @ =gUnk_08120CBC - ldrb r1, [r4, #0x15] - lsrs r1, r1, #2 - lsls r0, r1, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldrh r3, [r4, #0x2e] - adds r0, r0, r3 - strh r0, [r4, #0x2e] - adds r1, #1 - lsls r1, r1, #1 - adds r1, r1, r2 - ldrh r0, [r1] - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] - adds r0, r4, #0 - bl sub_08089454 - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x3c - strb r0, [r4, #0xe] -_0808964C: - adds r0, r4, #0 - bl sub_0800445C - movs r0, #0 -_08089654: - pop {r4, pc} - .align 2, 0 -_08089658: .4byte gUnk_08120CBC - - thumb_func_start sub_0808965C -sub_0808965C: @ 0x0808965C - push {lr} - adds r2, r0, #0 - ldr r3, _08089678 @ =gRoomControls - ldrb r0, [r3, #4] - cmp r0, #0x3f - bls _08089680 - ldr r1, _0808967C @ =gUnk_08120CCC - subs r0, #0x40 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] - adds r0, r2, #0 - b _08089684 - .align 2, 0 -_08089678: .4byte gRoomControls -_0808967C: .4byte gUnk_08120CCC -_08089680: - adds r0, r2, #0 - movs r1, #0xe9 -_08089684: - bl LoadFixedGFX - pop {pc} - .align 2, 0 - - thumb_func_start sub_0808968C -sub_0808968C: @ 0x0808968C - push {lr} - adds r2, r0, #0 - ldr r1, _08089694 @ =gUnk_08120D6C - b _080896A4 - .align 2, 0 -_08089694: .4byte gUnk_08120D6C -_08089698: - ldrh r0, [r1] - cmp r0, r2 - bne _080896A2 - ldrh r0, [r1, #2] - b _080896AC -_080896A2: - adds r1, #4 -_080896A4: - ldrh r0, [r1] - cmp r0, #0 - bne _08089698 - movs r0, #0 -_080896AC: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080896B0 -sub_080896B0: @ 0x080896B0 - push {r4, r5, r6, r7, lr} - ldr r0, _08089750 @ =gPlayerState - ldrb r1, [r0, #5] - movs r0, #0x1f - ands r0, r1 - cmp r0, #0x12 - bne _08089768 - ldr r6, _08089754 @ =gPlayerEntity - adds r0, r6, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08089768 - ldrb r3, [r6, #0x14] - movs r2, #6 - ands r2, r3 - lsls r2, r2, #1 - ldr r0, _08089758 @ =gUnk_080B4468 - adds r2, r2, r0 - ldr r0, _0808975C @ =gUnk_080B4488 - lsrs r3, r3, #1 - lsls r3, r3, #1 - adds r3, r3, r0 - movs r0, #0x2e - ldrsh r1, [r6, r0] - movs r4, #0 - ldrsh r0, [r2, r4] - adds r1, r1, r0 - ldr r5, _08089760 @ =gRoomControls - ldrh r0, [r5, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r4, #0x3f - ands r1, r4 - movs r7, #0x32 - ldrsh r0, [r6, r7] - movs r7, #2 - ldrsh r2, [r2, r7] - adds r0, r0, r2 - ldrh r2, [r5, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r4 - lsls r0, r0, #6 - orrs r1, r0 - movs r0, #0 - ldrsh r7, [r3, r0] - subs r1, r1, r7 - lsls r4, r1, #0x10 - lsrs r0, r4, #0x10 - adds r5, r6, #0 - adds r5, #0x38 - ldrb r1, [r5] - bl sub_080002C8 - adds r1, r0, #0 - subs r0, #0x26 - cmp r0, #1 - bls _08089768 - cmp r1, #0x29 - beq _08089768 - ldrb r0, [r5] - bl GetLayerByIndex - asrs r1, r4, #0x10 - ldr r2, _08089764 @ =0x00002004 - adds r0, r0, r2 - adds r2, r0, r1 - ldrb r2, [r2] - subs r1, r1, r7 - adds r0, r0, r1 - ldrb r0, [r0] - cmp r2, #0 - bne _08089768 - cmp r0, #0 - bne _08089768 - movs r0, #1 - b _0808976A - .align 2, 0 -_08089750: .4byte gPlayerState -_08089754: .4byte gPlayerEntity -_08089758: .4byte gUnk_080B4468 -_0808975C: .4byte gUnk_080B4488 -_08089760: .4byte gRoomControls -_08089764: .4byte 0x00002004 -_08089768: - movs r0, #0 -_0808976A: - pop {r4, r5, r6, r7, pc} diff --git a/asm/object/smallIceBlock.s b/asm/object/smallIceBlock.s deleted file mode 100644 index 71c8cbec..00000000 --- a/asm/object/smallIceBlock.s +++ /dev/null @@ -1,742 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start SmallIceBlock -SmallIceBlock: @ 0x080991A4 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #2 - bhi _080991C4 - ldr r0, _080991C0 @ =gUnk_08123734 - ldrb r1, [r2, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 - b _080991CA - .align 2, 0 -_080991C0: .4byte gUnk_08123734 -_080991C4: - adds r0, r2, #0 - bl sub_080996AC -_080991CA: - pop {pc} - - thumb_func_start sub_080991CC -sub_080991CC: @ 0x080991CC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #2 - bgt _080991EC - cmp r0, #0 - blt _080991EC - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _080991EC - bl DeleteThisEntity -_080991EC: - movs r2, #1 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r1, #4 - movs r0, #0x48 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x3f - strb r2, [r0] - subs r1, #5 - movs r0, #0x80 - strb r0, [r1] - ldr r0, _08099244 @ =gUnk_080FD408 - str r0, [r4, #0x48] - adds r0, r4, #0 - bl sub_08099468 - ldrb r1, [r4, #0xa] - adds r0, r4, #0 - bl InitializeAnimation - movs r0, #0x84 - movs r1, #3 - movs r2, #0 - bl CreateObject - cmp r0, #0 - beq _08099242 - str r4, [r0, #0x50] -_08099242: - pop {r4, pc} - .align 2, 0 -_08099244: .4byte gUnk_080FD408 - - thumb_func_start sub_08099248 -sub_08099248: @ 0x08099248 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - bl sub_0809963C - cmp r0, #0 - beq _08099280 - movs r1, #0 - movs r0, #3 - strb r0, [r4, #0xc] - strb r1, [r4, #0xe] - ldr r0, _0809927C @ =0x000001B3 - bl EnqueueSFX - adds r0, r4, #0 - bl sub_08099330 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0809930E - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl SetFlag - b _0809930E - .align 2, 0 -_0809927C: .4byte 0x000001B3 -_08099280: - adds r0, r4, #0 - bl sub_0800442E - cmp r0, #0 - bne _0809930E - adds r7, r4, #0 - adds r7, #0x70 - ldrh r0, [r7] - adds r6, r4, #0 - adds r6, #0x38 - ldrb r1, [r6] - bl GetTileType - adds r5, r0, #0 - ldr r0, _080992B8 @ =0x0000405A - cmp r5, r0 - beq _0809930E - adds r0, r5, #0 - bl sub_08099618 - cmp r0, #1 - beq _080992BC - cmp r0, #1 - blo _080992DC - cmp r0, #2 - beq _08099308 - b _0809930E - .align 2, 0 -_080992B8: .4byte 0x0000405A -_080992BC: - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0x16 - strb r0, [r4, #0xe] - adds r0, r5, #0 - subs r0, #0x5b - movs r1, #3 - ands r0, r1 - lsls r0, r0, #3 - strb r0, [r4, #0x15] - movs r0, #0x20 - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl sub_080994B8 - b _0809930E -_080992DC: - movs r0, #0xf - movs r1, #0xd - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _080992F2 - adds r0, r4, #0 - bl CopyPosition -_080992F2: - adds r0, r4, #0 - adds r0, #0x6c - ldrh r0, [r0] - ldrh r1, [r7] - ldrb r2, [r6] - bl SetTile - adds r0, r4, #0 - bl DeleteEntity - b _0809930E -_08099308: - adds r0, r4, #0 - adds r0, #0x6c - strh r5, [r0] -_0809930E: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08099310 -sub_08099310: @ 0x08099310 - push {r4, lr} - adds r4, r0, #0 - bl sub_0809953C - cmp r0, #0 - beq _0809932E - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_08099468 - movs r0, #0xd9 - lsls r0, r0, #1 - bl EnqueueSFX -_0809932E: - pop {r4, pc} - - thumb_func_start sub_08099330 -sub_08099330: @ 0x08099330 - push {r4, lr} - adds r4, r0, #0 - bl sub_0809963C - adds r1, r0, #0 - cmp r1, #0 - bne _0809935E - ldrb r0, [r4, #0xe] - cmp r0, #1 - bls _0809934A - subs r0, #2 - strb r0, [r4, #0xe] - b _0809934C -_0809934A: - strb r1, [r4, #0xe] -_0809934C: - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _08099364 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0805EC60 - b _080993CA -_0809935E: - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] -_08099364: - movs r1, #0x80 - lsls r1, r1, #1 - ldr r2, _0809939C @ =gUnk_08123748 - ldrb r0, [r4, #0xe] - lsrs r0, r0, #5 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r2, [r0] - adds r0, r4, #0 - movs r3, #0 - bl sub_0805EC9C - ldrb r0, [r4, #0xa] - cmp r0, #1 - bne _080993A0 - adds r0, r4, #0 - adds r0, #0x86 - ldrh r3, [r0] - adds r0, r4, #0 - movs r1, #0x53 - movs r2, #0 - bl sub_080A2A3C - movs r0, #0x72 - bl SoundReq - b _080993BA - .align 2, 0 -_0809939C: .4byte gUnk_08123748 -_080993A0: - cmp r0, #2 - bne _080993BA - adds r0, r4, #0 - adds r0, #0x86 - ldrh r3, [r0] - adds r0, r4, #0 - movs r1, #0x52 - movs r2, #0 - bl sub_080A2A3C - movs r0, #0x72 - bl SoundReq -_080993BA: - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x3c - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] -_080993CA: - pop {r4, pc} - - thumb_func_start sub_080993CC -sub_080993CC: @ 0x080993CC - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xe] - subs r1, r0, #1 - strb r1, [r5, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _080993E2 - bl DeleteThisEntity - b _08099466 -_080993E2: - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x30 - bne _08099400 - adds r0, r5, #0 - adds r0, #0x6c - ldrh r0, [r0] - adds r1, r5, #0 - adds r1, #0x70 - ldrh r1, [r1] - adds r2, r5, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile -_08099400: - movs r1, #0x80 - lsls r1, r1, #1 - ldrb r0, [r5, #0xe] - movs r2, #0x3c - subs r2, r2, r0 - lsls r2, r2, #5 - adds r2, r2, r1 - adds r0, r5, #0 - movs r3, #0 - bl sub_0805EC9C - ldrb r1, [r5, #0xe] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08099466 - movs r0, #0xf - movs r1, #0x11 - movs r2, #0x40 - bl CreateObject - adds r6, r0, #0 - cmp r6, #0 - beq _08099466 - bl Random - adds r4, r0, #0 - asrs r0, r4, #0x10 - movs r1, #9 - bl __modsi3 - adds r2, r0, #0 - subs r2, #4 - movs r3, #0xf - ands r3, r4 - adds r4, r6, #0 - adds r4, #0x29 - ldrb r1, [r4] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4] - lsls r2, r2, #0x10 - rsbs r3, r3, #0 - lsls r3, r3, #0x10 - adds r0, r5, #0 - adds r1, r6, #0 - bl PositionRelative -_08099466: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08099468 -sub_08099468: @ 0x08099468 - push {r4, r5, r6, lr} - adds r6, r0, #0 - movs r0, #0x2e - ldrsh r1, [r6, r0] - ldr r2, _080994B0 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r4, #0x32 - ldrsh r0, [r6, 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, r6, #0 - adds r4, #0x70 - strh r1, [r4] - ldrh r0, [r4] - adds r5, r6, #0 - adds r5, #0x38 - ldrb r1, [r5] - bl GetTileIndex - adds r1, r6, #0 - adds r1, #0x6c - strh r0, [r1] - ldr r0, _080994B4 @ =0x0000405A - ldrh r1, [r4] - ldrb r2, [r5] - bl SetTile - pop {r4, r5, r6, pc} - .align 2, 0 -_080994B0: .4byte gRoomControls -_080994B4: .4byte 0x0000405A - - thumb_func_start sub_080994B8 -sub_080994B8: @ 0x080994B8 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldr r0, _08099530 @ =0x000001B1 - bl EnqueueSFX - adds r0, r5, #0 - adds r0, #0x6c - ldrh r0, [r0] - adds r6, r5, #0 - adds r6, #0x70 - ldrh r1, [r6] - adds r4, r5, #0 - adds r4, #0x38 - ldrb r2, [r4] - bl SetTile - ldrb r0, [r4] - cmp r0, #2 - bne _080994F8 - ldrh r0, [r6] - movs r1, #1 - bl GetTileType - ldr r1, _08099534 @ =0x0000405A - cmp r0, r1 - bne _080994F8 - movs r0, #0xc4 - lsls r0, r0, #2 - ldrh r1, [r6] - movs r2, #1 - bl sub_08000152 -_080994F8: - adds r2, r5, #0 - adds r2, #0x70 - ldr r1, _08099538 @ =gUnk_080B4488 - ldrb r0, [r5, #0x15] - lsrs r0, r0, #3 - lsls r0, r0, #1 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - ldrh r2, [r2] - adds r0, r0, r2 - adds r1, r5, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x79 - beq _08099524 - cmp r0, #0x77 - bne _0809952C -_08099524: - adds r1, r5, #0 - adds r1, #0x63 - movs r0, #0xfe - strb r0, [r1] -_0809952C: - pop {r4, r5, r6, pc} - .align 2, 0 -_08099530: .4byte 0x000001B1 -_08099534: .4byte 0x0000405A -_08099538: .4byte gUnk_080B4488 - - thumb_func_start sub_0809953C -sub_0809953C: @ 0x0809953C - push {r4, lr} - adds r4, r0, #0 - bl sub_0800442E - cmp r0, #0 - bne _08099612 - adds r0, r4, #0 - bl sub_080AEFE0 - adds r0, r4, #0 - bl sub_0800445C - ldrb r1, [r4, #0xe] - cmp r1, #0 - beq _08099570 - ldrh r0, [r4, #0x24] - adds r0, #0x10 - strh r0, [r4, #0x24] - subs r0, r1, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08099570 - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r4, #0x24] -_08099570: - ldrb r0, [r4, #0x15] - lsrs r0, r0, #3 - cmp r0, #1 - beq _080995A0 - cmp r0, #1 - bgt _08099582 - cmp r0, #0 - beq _08099588 - b _080995E6 -_08099582: - cmp r0, #2 - beq _080995BA - b _080995E6 -_08099588: - ldrh r1, [r4, #0x2a] - movs r0, #0xe - ands r0, r1 - cmp r0, #0 - beq _08099612 - ldrh r1, [r4, #0x32] - movs r0, #0xf - ands r0, r1 - subs r0, #7 - cmp r0, #2 - bls _080995D0 - b _080995DE -_080995A0: - ldrh r1, [r4, #0x2a] - movs r0, #0xe0 - lsls r0, r0, #8 - ands r0, r1 - cmp r0, #0 - beq _08099612 - ldrh r1, [r4, #0x2e] - movs r0, #0xf - ands r0, r1 - subs r0, #7 - cmp r0, #2 - bls _080995FE - b _080995DE -_080995BA: - ldrh r1, [r4, #0x2a] - movs r0, #0xe0 - ands r0, r1 - cmp r0, #0 - beq _08099612 - ldrh r1, [r4, #0x32] - movs r0, #0xf - ands r0, r1 - subs r0, #7 - cmp r0, #2 - bhi _080995DE -_080995D0: - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - adds r0, #8 - strh r0, [r4, #0x32] - movs r0, #1 - b _08099614 -_080995DE: - adds r0, r4, #0 - bl sub_0809969C - b _08099612 -_080995E6: - ldrh r1, [r4, #0x2a] - movs r0, #0xe0 - lsls r0, r0, #4 - ands r0, r1 - cmp r0, #0 - beq _08099612 - ldrh r1, [r4, #0x2e] - movs r0, #0xf - ands r0, r1 - subs r0, #7 - cmp r0, #2 - bhi _0809960C -_080995FE: - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - adds r0, #8 - strh r0, [r4, #0x2e] - movs r0, #1 - b _08099614 -_0809960C: - adds r0, r4, #0 - bl sub_0809969C -_08099612: - movs r0, #0 -_08099614: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08099618 -sub_08099618: @ 0x08099618 - push {lr} - adds r2, r0, #0 - ldr r1, _08099620 @ =gUnk_08123750 - b _08099630 - .align 2, 0 -_08099620: .4byte gUnk_08123750 -_08099624: - ldrh r0, [r1] - cmp r0, r2 - bne _0809962E - ldrh r0, [r1, #2] - b _08099638 -_0809962E: - adds r1, #4 -_08099630: - ldrh r0, [r1] - cmp r0, #0 - bne _08099624 - movs r0, #0 -_08099638: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0809963C -sub_0809963C: @ 0x0809963C - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xb] - cmp r0, #0 - beq _08099684 - bl GetCurrentRoomProperty - adds r4, r0, #0 - ldrh r0, [r4] - bl CheckFlags - cmp r0, #0 - beq _08099684 - ldr r0, _08099694 @ =gRoomControls - ldrh r1, [r0, #6] - ldrh r2, [r4, #2] - adds r1, r1, r2 - lsls r1, r1, #0x10 - lsrs r1, r1, #0x10 - ldrh r0, [r0, #8] - ldrh r6, [r4, #4] - adds r0, r0, r6 - lsls r0, r0, #0x10 - lsrs r3, r0, #0x10 - ldrh r2, [r4, #6] - movs r6, #0x2e - ldrsh r0, [r5, r6] - subs r0, r0, r1 - cmp r2, r0 - blo _08099684 - ldrh r1, [r4, #8] - movs r2, #0x32 - ldrsh r0, [r5, r2] - subs r0, r0, r3 - cmp r1, r0 - bhs _08099698 -_08099684: - adds r0, r5, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x87 - beq _08099698 - movs r0, #0 - b _0809969A - .align 2, 0 -_08099694: .4byte gRoomControls -_08099698: - movs r0, #1 -_0809969A: - pop {r4, r5, r6, pc} - - thumb_func_start sub_0809969C -sub_0809969C: @ 0x0809969C - push {lr} - movs r1, #0xd - movs r2, #0 - bl CreateFx - bl DeleteThisEntity - pop {pc} - - thumb_func_start sub_080996AC -sub_080996AC: @ 0x080996AC - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _080996BC - bl DeleteThisEntity -_080996BC: - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080996CE - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #3 - bl InitializeAnimation -_080996CE: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #2 - bhi _08099726 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r2, r4, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08099706 - movs r0, #0 - strb r0, [r2] - bl Random - movs r1, #0x78 - ands r0, r1 - adds r0, #0x78 - adds r1, r4, #0 - adds r1, #0x59 - strb r0, [r1] -_08099706: - adds r0, r4, #0 - bl GetNextFrame - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPositionAndSpriteOffset - ldrh r0, [r4, #0x32] - adds r0, #1 - strh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x63 - ldrb r0, [r1] - subs r0, #0x11 - strb r0, [r1] - b _08099730 -_08099726: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_08099730: - pop {r4, pc} - .align 2, 0 diff --git a/assets/assets.json b/assets/assets.json index fb2ca490..5c11da48 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -26175,81 +26175,6 @@ "size": 5, "type": "animation" }, - { - "path": "octorokBoss/gUnk_080CF070.bin", - "start": 847984, - "size": 8 - }, - { - "path": "octorokBoss/gUnk_080CF08C.bin", - "start": 848012, - "size": 32 - }, - { - "path": "octorokBoss/gUnk_080CF0D8.bin", - "start": 848088, - "size": 4 - }, - { - "path": "octorokBoss/gUnk_080CF0DC.bin", - "start": 848092, - "size": 4 - }, - { - "path": "octorokBoss/gUnk_080CF10C.bin", - "start": 848140, - "size": 4 - }, - { - "path": "octorokBoss/gUnk_080CF110.bin", - "start": 848144, - "size": 4 - }, - { - "path": "octorokBoss/gUnk_080CF114.bin", - "start": 848148, - "size": 5 - }, - { - "path": "octorokBoss/gUnk_080CF119.bin", - "start": 848153, - "size": 5 - }, - { - "path": "octorokBoss/gUnk_080CF11E.bin", - "start": 848158, - "size": 6 - }, - { - "path": "octorokBoss/gUnk_080CF134.bin", - "start": 848180, - "size": 4 - }, - { - "path": "octorokBoss/gUnk_080CF138.bin", - "start": 848184, - "size": 4 - }, - { - "path": "octorokBoss/gUnk_080CF13C.bin", - "start": 848188, - "size": 3 - }, - { - "path": "octorokBoss/gUnk_080CF13F.bin", - "start": 848191, - "size": 3 - }, - { - "path": "octorokBoss/gUnk_080CF142.bin", - "start": 848194, - "size": 5 - }, - { - "path": "octorokBoss/gUnk_080CF147.bin", - "start": 848199, - "size": 5 - }, { "path": "flyingPot/gUnk_080CF290.bin", "start": 848528, @@ -26375,16 +26300,6 @@ "size": 20, "type": "animation" }, - { - "path": "octorokGolden/gUnk_080CF490.bin", - "start": 849040, - "size": 8 - }, - { - "path": "octorokGolden/gUnk_080CF498.bin", - "start": 849048, - "size": 8 - }, { "path": "animations/gSpriteAnimations_CloudPiranha_0.bin", "start": 849200, @@ -27135,26 +27050,6 @@ "size": 21, "type": "animation" }, - { - "path": "bowMoblin/gUnk_080CFFA4.bin", - "start": 851876, - "size": 8 - }, - { - "path": "bowMoblin/gUnk_080CFFAC.bin", - "start": 851884, - "size": 16 - }, - { - "path": "bowMoblin/gUnk_080CFFBC.bin", - "start": 851900, - "size": 8 - }, - { - "path": "bowMoblin/gUnk_080CFFC4.bin", - "start": 851908, - "size": 8 - }, { "path": "animations/gSpriteAnimations_Lakitu_0.bin", "start": 852316, @@ -27731,16 +27626,6 @@ "size": 13, "type": "animation" }, - { - "path": "ballChainSoldier/gUnk_080D0728.bin", - "start": 853800, - "size": 8 - }, - { - "path": "ballChainSoldier/gUnk_080D0730.bin", - "start": 853808, - "size": 8 - }, { "path": "animations/gSpriteAnimations_BallChainSoldier_3.bin", "start": 853816, @@ -30804,70 +30689,6 @@ "start": 1034656, "size": 16 }, - { - "path": "data_080FC8A4/sCutsceneData.bin", - "start": 1034784, - "size": 80 - }, - { - "path": "data_080FC8A4/gUnk_080FCA84.bin", - "start": 1034884, - "size": 8 - }, - { - "path": "data_080FC8A4/gUnk_080FCA8C.bin", - "start": 1034892, - "size": 24 - }, - { - "path": "data_080FC8A4/gUnk_080FCAA4.bin", - "start": 1034916, - "size": 36 - }, - { - "path": "data_080FC8A4/gUnk_080FCB38.bin", - "start": 1035064, - "size": 42 - }, - { - "path": "data_080FC8A4/gUnk_080FCB62_JP.bin", - "variants": [ - "JP" - ], - "starts": { - "JP": 1034258 - }, - "size": 50 - }, - { - "path": "data_080FC8A4/gUnk_080FCB62_1_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 1033030 - }, - "size": 50 - }, - { - "path": "data_080FC8A4/gUnk_080FCB62_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1032358 - }, - "size": 50 - }, - { - "path": "data_080FC8A4/gUnk_080FCB62_3_USA-DEMO_USA.bin", - "variants": [ - "USA", - "DEMO_USA" - ], - "start": 1035106, - "size": 50 - }, { "path": "data_080FC8A4/gUnk_080FCB94.bin", "start": 1035156, @@ -42077,71 +41898,6 @@ "start": 1161680, "size": 8 }, - { - "path": "data_0811B9E0/gUnk_0811BABC.bin", - "start": 1161916, - "size": 8 - }, - { - "path": "data_0811B9E0/gUnk_0811BAC4.bin", - "start": 1161924, - "size": 16 - }, - { - "path": "data_0811B9E0/gUnk_0811BAF0.bin", - "start": 1161968, - "size": 60 - }, - { - "path": "data_0811B9E0/gUnk_0811BBBC.bin", - "start": 1162172, - "size": 6 - }, - { - "path": "data_0811B9E0/gUnk_0811BBC2.bin", - "start": 1162178, - "size": 6 - }, - { - "path": "data_0811B9E0/gUnk_0811BBC8.bin", - "start": 1162184, - "size": 6 - }, - { - "path": "data_0811B9E0/gUnk_0811BBCE.bin", - "start": 1162190, - "size": 6 - }, - { - "path": "data_0811B9E0/gUnk_0811BBEC.bin", - "start": 1162220, - "size": 12 - }, - { - "path": "data_0811B9E0/gUnk_0811BC28.bin", - "start": 1162280, - "size": 8 - }, - { - "path": "data_0811B9E0/gUnk_0811BC30.bin", - "start": 1162288, - "size": 8 - }, - { - "path": "data_0811B9E0/gUnk_0811BC38.bin", - "start": 1162296, - "size": 8 - }, - { - "path": "data_0811B9E0/gUnk_0811BC40.bin", - "start": 1162304, - "size": 8 - }, - { - "path": "data_0811B9E0/gUnk_0811BC80.bin", - "start": 1162368, - "size": 8 - }, { "path": "itemBomb/gUnk_0811BDAC.bin", "start": 1162668, @@ -42374,21 +42130,6 @@ "DEMO_JP": -2192 } }, - { - "path": "data_0811E750/gUnk_0811E750.bin", - "start": 1173328, - "size": 8 - }, - { - "path": "data_0811E750/gUnk_0811E758.bin", - "start": 1173336, - "size": 8 - }, - { - "path": "data_0811E750/gUnk_0811E760.bin", - "start": 1173344, - "size": 8 - }, { "path": "data_0811E750/gUnk_0811E7BC.bin", "start": 1173436, @@ -42896,26 +42637,6 @@ "start": 1175948, "size": 4 }, - { - "path": "blockPushed/gUnk_0811F62C.bin", - "start": 1177132, - "size": 8 - }, - { - "path": "blockPushed/gUnk_0811F634.bin", - "start": 1177140, - "size": 8 - }, - { - "path": "blockPushed/gUnk_0811F63C.bin", - "start": 1177148, - "size": 8 - }, - { - "path": "blockPushed/gUnk_0811F644.bin", - "start": 1177156, - "size": 8 - }, { "path": "animations/gSpriteAnimations_Object9_0.bin", "start": 1177440, @@ -43896,41 +43617,6 @@ "size": 17, "type": "animation" }, - { - "path": "animations/gSpriteAnimations_PressurePlate_0.bin", - "start": 1182705, - "size": 4, - "type": "animation" - }, - { - "path": "animations/gSpriteAnimations_PressurePlate_1.bin", - "start": 1182709, - "size": 4, - "type": "animation" - }, - { - "path": "animations/gSpriteAnimations_PressurePlate_2.bin", - "start": 1182713, - "size": 4, - "type": "animation" - }, - { - "path": "animations/gSpriteAnimations_PressurePlate_3.bin", - "start": 1182717, - "size": 4, - "type": "animation" - }, - { - "path": "animations/gSpriteAnimations_PressurePlate_4.bin", - "start": 1182721, - "size": 7, - "type": "animation" - }, - { - "path": "PressurePlate/gUnk_08120BEC.bin", - "start": 1182700, - "size": 5 - }, { "path": "animations/gSpriteAnimations_BigBarrel_0.bin", "start": 1182822, @@ -43983,42 +43669,12 @@ "start": 1182814, "size": 8 }, - { - "path": "barrelInside/gUnk_08120C80.bin", - "start": 1182848, - "size": 18 - }, - { - "path": "barrelInside/gUnk_08120C92.bin", - "start": 1182866, - "size": 6 - }, { "path": "animations/gSpriteAnimations_PushableStatue_0.bin", "start": 1183110, "size": 6, "type": "animation" }, - { - "path": "pushableStatue/gUnk_08120CB4.bin", - "start": 1182900, - "size": 8 - }, - { - "path": "pushableStatue/gUnk_08120CBC.bin", - "start": 1182908, - "size": 16 - }, - { - "path": "pushableStatue/gUnk_08120CCC.bin", - "start": 1182924, - "size": 160 - }, - { - "path": "pushableStatue/gUnk_08120D6C.bin", - "start": 1183084, - "size": 26 - }, { "path": "animations/gSpriteAnimations_AmbientClouds_0.bin", "start": 1183136, @@ -44183,16 +43839,6 @@ "size": 4, "type": "animation" }, - { - "path": "pushableRock/gUnk_08121088.bin", - "start": 1183880, - "size": 8 - }, - { - "path": "hittableLever/gUnk_08121180.bin", - "start": 1184128, - "size": 8 - }, { "path": "object30/gUnk_08121194.bin", "start": 1184148, @@ -44276,36 +43922,6 @@ "size": 4, "type": "animation" }, - { - "path": "pullableMushroom/gUnk_081211CC.bin", - "start": 1184204, - "size": 16 - }, - { - "path": "pullableMushroom/gUnk_081211E4.bin", - "start": 1184228, - "size": 8 - }, - { - "path": "pullableMushroom/gUnk_081211F4.bin", - "start": 1184244, - "size": 1 - }, - { - "path": "pullableMushroom/gUnk_081211F5.bin", - "start": 1184245, - "size": 7 - }, - { - "path": "pullableMushroom/gUnk_081211FC.bin", - "start": 1184252, - "size": 1 - }, - { - "path": "pullableMushroom/gUnk_081211FD.bin", - "start": 1184253, - "size": 7 - }, { "path": "animations/gSpriteAnimations_Bollard_0.bin", "start": 1184532, @@ -44701,16 +44317,6 @@ "start": 1187507, "size": 5 }, - { - "path": "pushableFurniture/gUnk_08121EE4.bin", - "start": 1187556, - "size": 12 - }, - { - "path": "pushableFurniture/gUnk_08121EF0.bin", - "start": 1187568, - "size": 8 - }, { "path": "furniture/gUnk_08122128.bin", "start": 1188136, @@ -44756,11 +44362,6 @@ "start": 1188360, "size": 16 }, - { - "path": "furniture/gUnk_08122244.bin", - "start": 1188420, - "size": 16 - }, { "path": "furniture/gUnk_08121EF8.bin", "start": 1187576, @@ -44956,21 +44557,6 @@ "size": 4, "type": "animation" }, - { - "path": "pullableLever/gUnk_081222A8.bin", - "start": 1188520, - "size": 8 - }, - { - "path": "pullableLever/gUnk_081222B8.bin", - "start": 1188536, - "size": 8 - }, - { - "path": "pullableLever/gUnk_081222C0.bin", - "start": 1188544, - "size": 4 - }, { "path": "minecart/gUnk_081223E8.bin", "start": 1188840, @@ -45841,16 +45427,6 @@ "start": 1192608, "size": 4 }, - { - "path": "pushableGrave/gUnk_081232C0.bin", - "start": 1192640, - "size": 30 - }, - { - "path": "pushableGrave/gUnk_081232DE.bin", - "start": 1192670, - "size": 6 - }, { "path": "stoneTablet/gUnk_081232EC.bin", "start": 1192684, @@ -45921,11 +45497,6 @@ "start": 1192988, "size": 6 }, - { - "path": "steam/gUnk_08123484.bin", - "start": 1193092, - "size": 16 - }, { "path": "animations/gSpriteAnimations_PushableLever_0.bin", "start": 1193140, @@ -45938,21 +45509,6 @@ "size": 23, "type": "animation" }, - { - "path": "pushableLever/gUnk_081234A0.bin", - "start": 1193120, - "size": 4 - }, - { - "path": "pushableLever/gUnk_081234A4.bin", - "start": 1193124, - "size": 8 - }, - { - "path": "pushableLever/gUnk_081234AC.bin", - "start": 1193132, - "size": 8 - }, { "path": "macroShoes/gUnk_081234F4.bin", "start": 1193204, @@ -46054,21 +45610,6 @@ "size": 23, "type": "animation" }, - { - "path": "bigPushableLever/gUnk_081236E8.bin", - "start": 1193704, - "size": 4 - }, - { - "path": "bigPushableLever/gUnk_081236EC.bin", - "start": 1193708, - "size": 8 - }, - { - "path": "bigPushableLever/gUnk_081236F4.bin", - "start": 1193716, - "size": 8 - }, { "path": "animations/gSpriteAnimations_SmallIceBlock_0.bin", "start": 1193834, @@ -46093,16 +45634,6 @@ "size": 22, "type": "animation" }, - { - "path": "smallIceBlock/gUnk_08123748.bin", - "start": 1193800, - "size": 8 - }, - { - "path": "smallIceBlock/gUnk_08123750.bin", - "start": 1193808, - "size": 26 - }, { "path": "animations/gSpriteAnimations_BigIceBlock_0.bin", "start": 1193914, @@ -46133,11 +45664,6 @@ "size": 22, "type": "animation" }, - { - "path": "bigIceBlock/gUnk_081237B0.bin", - "start": 1193904, - "size": 10 - }, { "path": "animations/gSpriteAnimations_Object86_0.bin", "start": 1193996, @@ -46150,21 +45676,6 @@ "size": 20, "type": "animation" }, - { - "path": "object87/gUnk_0812384C.bin", - "start": 1194060, - "size": 64 - }, - { - "path": "object87/gUnk_0812388C.bin", - "start": 1194124, - "size": 20 - }, - { - "path": "object87/gUnk_081238A0.bin", - "start": 1194144, - "size": 992 - }, { "path": "animations/gSpriteAnimations_MacroBook_0.bin", "start": 1195192, @@ -48278,16 +47789,6 @@ "start": 1253604, "size": 12 }, - { - "path": "data_081320FC/_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 1251376 - }, - "size": 1280 - }, { "offsets": { "DEMO_JP": -988 @@ -52166,4 +51667,4 @@ }, "size": 129 } -] +] \ No newline at end of file diff --git a/data/const/object/bigIceBlock.s b/data/const/object/bigIceBlock.s deleted file mode 100644 index 9f4ddda5..00000000 --- a/data/const/object/bigIceBlock.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081237A0:: @ 081237A0 - .4byte sub_0809975C - .4byte sub_080997CC - .4byte sub_080997F4 - .4byte sub_08099880 - -gUnk_081237B0:: @ 081237B0 - .incbin "bigIceBlock/gUnk_081237B0.bin" diff --git a/data/const/object/blockPushed.s b/data/const/object/blockPushed.s deleted file mode 100644 index e0f47781..00000000 --- a/data/const/object/blockPushed.s +++ /dev/null @@ -1,27 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811F624:: @ 0811F624 - .4byte sub_08082EB4 - .4byte sub_08083094 - -gUnk_0811F62C:: @ 0811F62C - .incbin "blockPushed/gUnk_0811F62C.bin" - -gUnk_0811F634:: @ 0811F634 - .incbin "blockPushed/gUnk_0811F634.bin" - -gUnk_0811F63C:: @ 0811F63C - .incbin "blockPushed/gUnk_0811F63C.bin" - -gUnk_0811F644:: @ 0811F644 - .incbin "blockPushed/gUnk_0811F644.bin" - -gUnk_0811F64C:: @ 0811F64C - .4byte gUnk_0811F62C - .4byte gUnk_0811F634 - .4byte gUnk_0811F63C - .4byte gUnk_0811F644 diff --git a/data/const/object/pullableMushroom.s b/data/const/object/pullableMushroom.s deleted file mode 100644 index f5544b83..00000000 --- a/data/const/object/pullableMushroom.s +++ /dev/null @@ -1,47 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081211A4:: @ 081211A4 - .4byte sub_0808AA1C - .4byte sub_0808AB68 - .4byte sub_0808AE84 - .4byte sub_0808AFF0 - -gUnk_081211B4:: @ 081211B4 - .4byte sub_0808AB80 - .4byte sub_0808AB98 - .4byte sub_0808ABC4 - -gUnk_081211C0:: @ 081211C0 - .4byte sub_0808ACEC - .4byte sub_0808ADA0 - .4byte sub_0808ADF0 - -gUnk_081211CC:: @ 081211CC - .incbin "pullableMushroom/gUnk_081211CC.bin" - -gUnk_081211DC:: @ 081211DC - .4byte sub_0808AEB0 - .4byte sub_0808AFD4 - -gUnk_081211E4:: @ 081211E4 - .incbin "pullableMushroom/gUnk_081211E4.bin" - -gUnk_081211EC:: @ 081211EC - .4byte sub_0808B05C - .4byte sub_0808B0BC - -gUnk_081211F4:: @ 081211F4 - .incbin "pullableMushroom/gUnk_081211F4.bin" - -gUnk_081211F5:: @ 081211F5 - .incbin "pullableMushroom/gUnk_081211F5.bin" - -gUnk_081211FC:: @ 081211FC - .incbin "pullableMushroom/gUnk_081211FC.bin" - -gUnk_081211FD:: @ 081211FD - .incbin "pullableMushroom/gUnk_081211FD.bin" diff --git a/data/const/object/pushableFurniture.s b/data/const/object/pushableFurniture.s deleted file mode 100644 index 3a4c4a30..00000000 --- a/data/const/object/pushableFurniture.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121ED8:: @ 08121ED8 - .4byte sub_0808F990 - .4byte sub_0808FACC - .4byte sub_0808FC3C - -gUnk_08121EE4:: @ 08121EE4 - .incbin "pushableFurniture/gUnk_08121EE4.bin" - -gUnk_08121EF0:: @ 08121EF0 - .incbin "pushableFurniture/gUnk_08121EF0.bin" diff --git a/data/const/object/pushableGrave.s b/data/const/object/pushableGrave.s deleted file mode 100644 index a4a31527..00000000 --- a/data/const/object/pushableGrave.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081232AC:: @ 081232AC - .4byte sub_080975A0 - .4byte sub_08097730 - .4byte sub_08097748 - .4byte sub_080977A0 - .4byte nullsub_528 - -gUnk_081232C0:: @ 081232C0 - .incbin "pushableGrave/gUnk_081232C0.bin" - -gUnk_081232DE:: @ 081232DE - .incbin "pushableGrave/gUnk_081232DE.bin" diff --git a/data/const/object/pushableRock.s b/data/const/object/pushableRock.s deleted file mode 100644 index a795b34e..00000000 --- a/data/const/object/pushableRock.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121078:: @ 08121078 - .4byte sub_0808A50C - .4byte sub_0808A550 - .4byte sub_0808A5E0 - .4byte sub_0808A61C - -gUnk_08121088:: @ 08121088 - .incbin "pushableRock/gUnk_08121088.bin" diff --git a/data/const/object/pushableStatue.s b/data/const/object/pushableStatue.s deleted file mode 100644 index 900dc875..00000000 --- a/data/const/object/pushableStatue.s +++ /dev/null @@ -1,28 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08120C98:: @ 08120C98 - .4byte sub_080891F4 - .4byte sub_0808923C - .4byte sub_080892C4 - .4byte sub_080893EC - .4byte sub_08089400 - -gUnk_08120CAC:: @ 08120CAC - .4byte sub_08089300 - .4byte sub_080893E0 - -gUnk_08120CB4:: @ 08120CB4 - .incbin "pushableStatue/gUnk_08120CB4.bin" - -gUnk_08120CBC:: @ 08120CBC - .incbin "pushableStatue/gUnk_08120CBC.bin" - -gUnk_08120CCC:: @ 08120CCC - .incbin "pushableStatue/gUnk_08120CCC.bin" - -gUnk_08120D6C:: @ 08120D6C - .incbin "pushableStatue/gUnk_08120D6C.bin" diff --git a/data/const/object/smallIceBlock.s b/data/const/object/smallIceBlock.s deleted file mode 100644 index 9107a43f..00000000 --- a/data/const/object/smallIceBlock.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08123734:: @ 08123734 - .4byte sub_080991CC - .4byte sub_08099248 - .4byte sub_08099310 - .4byte sub_08099330 - .4byte sub_080993CC - -gUnk_08123748:: @ 08123748 - .incbin "smallIceBlock/gUnk_08123748.bin" - -gUnk_08123750:: @ 08123750 - .incbin "smallIceBlock/gUnk_08123750.bin" diff --git a/include/functions.h b/include/functions.h index c298432d..769b053f 100644 --- a/include/functions.h +++ b/include/functions.h @@ -165,4 +165,10 @@ extern void sub_0806FBB4(Entity*); extern u32 sub_080002D4(s32, s32, u32); extern void sub_08078930(Entity*); extern void sub_080044AE(Entity*, u32, u32); +extern void sub_0801AF18(u8*, u32, u32); +extern void sub_0807B9B8(s32, s32, s32); +extern void sub_08000148(u32, u32, u32); +extern void sub_0805457C(Entity*, s32); +extern Entity* sub_080A2A3C(Entity*, u32, u32, u32); +extern void sub_0806FCF4(Entity*, s32, s32, s32); #endif diff --git a/include/object.h b/include/object.h index 4b3fb61c..da910632 100644 --- a/include/object.h +++ b/include/object.h @@ -233,7 +233,7 @@ void Button(Entity*); void MinishEmoticon(Entity*); void Pot(Entity*); void EzloCap(Entity*); -void BlockPushed(Entity*); +void BlockPushed(); void LockedDoor(Entity*); void Object9(Entity*); void ObjectA(Entity*); @@ -265,18 +265,18 @@ void EyeSwitch(Entity*); void PressurePlate(); void BigBarrel(Entity*); void BarrelInside(Entity*); -void PushableStatue(Entity*); +void PushableStatue(); void Object28(Entity*); void AmbientClouds(Entity*); void Object2A(Entity*); void Object2B(Entity*); void Beanstalk(Entity*); void Smoke(Entity*); -void PushableRock(Entity*); +void PushableRock(); void HittableLever(); void Object30(Entity*); void FrozenFlower(Entity*); -void PullableMushroom(Entity*); +void PullableMushroom(); void Bollard(Entity*); void WarpPoint(Entity*); void Object35(Entity*); @@ -302,7 +302,7 @@ void FileScreenObjects(Entity*); void Object49(Entity*); void BackgroundCloud(Entity*); void Object4B(Entity*); -void PushableFurniture(Entity*); +void PushableFurniture(); void Furniture(Entity*); void MinishSizedEntrance(Entity*); void Archway(Entity*); @@ -339,7 +339,7 @@ void ObjectOnPillar(Entity*); void MineralWaterSource(Entity*); void MinishSizedArchway(Entity*); void Object70(Entity*); -void PushableGrave(Entity*); +void PushableGrave(); void StoneTablet(Entity*); void LilypadSmall(Entity*); void Object74(Entity*); @@ -358,8 +358,8 @@ void Board(Entity*); void Object81(Entity*); void BigVortex(Entity*); void BigPushableLever(); -void SmallIceBlock(Entity*); -void BigIceBlock(Entity*); +void SmallIceBlock(); +void BigIceBlock(); void Object86(Entity*); void OctorokBossObject(Entity*); void MacroBook(Entity*); diff --git a/include/room.h b/include/room.h index 0cd7f3c2..fb3d2630 100644 --- a/include/room.h +++ b/include/room.h @@ -76,7 +76,8 @@ typedef struct { /* 0x4c */ u8 filler5[28]; /* 0x68 */ u32 animFlags; /* 0x6c */ void* field_0x6c[8]; - /* 0x8c */ void* field_0x8c[16]; + /* 0x8c */ void* field_0x8c[8]; + /* 0xac */ void* field_0xac[8]; } RoomVars; static_assert(sizeof(RoomVars) == 0xCC); extern RoomVars gRoomVars; diff --git a/linker.ld b/linker.ld index df31eef9..cdfe19ed 100644 --- a/linker.ld +++ b/linker.ld @@ -650,7 +650,7 @@ SECTIONS { asm/object/minishEmoticon.o(.text); src/object/pot.o(.text); asm/object/ezloCap.o(.text); - asm/object/blockPushed.o(.text); + src/object/blockPushed.o(.text); src/object/lockedDoor.o(.text); asm/object/object9.o(.text); src/object/objectA.o(.text); @@ -683,18 +683,18 @@ SECTIONS { src/object/pressurePlate.o(.text); asm/object/bigBarrel.o(.text); src/object/barrelInside.o(.text); - asm/object/pushableStatue.o(.text); + src/object/pushableStatue.o(.text); asm/object/object28.o(.text); asm/object/ambientClouds.o(.text); src/object/object2A.o(.text); asm/object/object2B.o(.text); asm/object/beanstalk.o(.text); src/object/smoke.o(.text); - asm/object/pushableRock.o(.text); + src/object/pushableRock.o(.text); src/object/hittableLever.o(.text); asm/object/object30.o(.text); src/object/frozenFlower.o(.text); - asm/object/pullableMushroom.o(.text); + src/object/pullableMushroom.o(.text); asm/object/bollard.o(.text); src/object/warpPoint.o(.text); asm/object/object35.o(.text); @@ -723,7 +723,7 @@ SECTIONS { src/object/object49.o(.text); src/object/backgroundCloud.o(.text); asm/object/object4B.o(.text); - asm/object/pushableFurniture.o(.text); + src/object/pushableFurniture.o(.text); src/object/furniture.o(.text); src/object/minishSizedEntrance.o(.text); src/object/archway.o(.text); @@ -761,7 +761,7 @@ SECTIONS { src/object/mineralWaterSource.o(.text); src/object/minishSizedArchway.o(.text); asm/object/object70.o(.text); - asm/object/pushableGrave.o(.text); + src/object/pushableGrave.o(.text); asm/object/stoneTablet.o(.text); src/object/lilypadSmall.o(.text); asm/object/object74.o(.text); @@ -778,8 +778,8 @@ SECTIONS { asm/object/object81.o(.text); src/object/bigVortex.o(.text); src/object/bigPushableLever.o(.text); - asm/object/smallIceBlock.o(.text); - asm/object/bigIceBlock.o(.text); + src/object/smallIceBlock.o(.text); + src/object/bigIceBlock.o(.text); src/object/object86.o(.text); src/object/octorokBossObject.o(.text); asm/object/macroBook.o(.text); @@ -1366,7 +1366,7 @@ SECTIONS { data/animations/object/pot.o(.rodata); data/const/object/ezloCap.o(.rodata); data/animations/object/ezloCap.o(.rodata); - data/const/object/blockPushed.o(.rodata); + src/object/blockPushed.o(.rodata); src/object/lockedDoor.o(.rodata); data/const/object/object9.o(.rodata); data/animations/object/object9.o(.rodata); @@ -1407,7 +1407,7 @@ SECTIONS { data/const/object/bigBarrel.o(.rodata); data/animations/object/bigBarrel.o(.rodata); src/object/barrelInside.o(.rodata); - data/const/object/pushableStatue.o(.rodata); + src/object/pushableStatue.o(.rodata); data/animations/object/pushableStatue.o(.rodata); data/const/object/ambientClouds.o(.rodata); data/animations/object/ambientClouds.o(.rodata); @@ -1416,12 +1416,12 @@ SECTIONS { data/const/object/beanstalk.o(.rodata); data/animations/object/beanstalk.o(.rodata); data/const/object/smoke.o(.rodata); - data/const/object/pushableRock.o(.rodata); + src/object/pushableRock.o(.rodata); data/animations/object/pushableRock.o(.rodata); src/object/hittableLever.o(.rodata); data/const/object/object30.o(.rodata); data/const/object/object31.o(.rodata); - data/const/object/pullableMushroom.o(.rodata); + src/object/pullableMushroom.o(.rodata); data/animations/object/pullableMushroom.o(.rodata); data/const/object/bollard.o(.rodata); data/animations/object/bollard.o(.rodata); @@ -1459,7 +1459,7 @@ SECTIONS { data/const/object/object49.o(.rodata); data/const/object/backgroundCloud.o(.rodata); data/const/object/object4B.o(.rodata); - data/const/object/pushableFurniture.o(.rodata); + src/object/pushableFurniture.o(.rodata); data/const/object/furniture.o(.rodata); data/animations/object/furniture.o(.rodata); src/object/furniture.o(.rodata); @@ -1503,7 +1503,7 @@ SECTIONS { data/const/object/objectOnPillar.o(.rodata); data/const/object/mineralWaterSource.o(.rodata); data/const/object/object70.o(.rodata); - data/const/object/pushableGrave.o(.rodata); + src/object/pushableGrave.o(.rodata); data/const/object/stoneTablet.o(.rodata); data/const/object/lilypadSmall.o(.rodata); data/const/object/object74.o(.rodata); @@ -1525,9 +1525,9 @@ SECTIONS { data/animations/object/bigVortex.o(.rodata); src/object/bigPushableLever.o(.rodata); data/animations/object/bigPushableLever.o(.rodata); - data/const/object/smallIceBlock.o(.rodata); + src/object/smallIceBlock.o(.rodata); data/animations/object/smallIceBlock.o(.rodata); - data/const/object/bigIceBlock.o(.rodata); + src/object/bigIceBlock.o(.rodata); data/animations/object/bigIceBlock.o(.rodata); data/const/object/object86.o(.rodata); data/animations/object/object86.o(.rodata); diff --git a/src/manager/manager12.c b/src/manager/manager12.c index 24b2e630..9bc1eb23 100644 --- a/src/manager/manager12.c +++ b/src/manager/manager12.c @@ -28,7 +28,6 @@ void sub_08059B18(void); bool32 sub_08059C8C(Manager12*, u32, u8*, u16*); -extern void sub_0807B9B8(s32, s32, s32); extern u32 gUnk_086E8460; typedef struct { diff --git a/src/object/bigIceBlock.c b/src/object/bigIceBlock.c new file mode 100644 index 00000000..dc9539bb --- /dev/null +++ b/src/object/bigIceBlock.c @@ -0,0 +1,331 @@ +/** + * @file bigIceBlock.c + * @ingroup Objects + * + * @brief Big Ice Block object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x4]; + /*0x6c*/ u16 unk_6c; + /*0x6e*/ u16 unk_6e; + /*0x70*/ u8 unk_70[0x16]; + /*0x86*/ u16 unk_86; +} BigIceBlockEntity; + +extern const Hitbox gUnk_080FD190; + +extern void (*const BigIceBlock_Actions[])(BigIceBlockEntity*); +extern const u16 gUnk_081237B0[]; + +void sub_08099D30(BigIceBlockEntity*); +void sub_08099910(BigIceBlockEntity*); +extern bool32 sub_0809963C(BigIceBlockEntity*); +void BigIceBlock_Action2(BigIceBlockEntity*); +extern bool32 sub_0809963C(BigIceBlockEntity*); +void sub_08099C18(BigIceBlockEntity*); + +void BigIceBlock(BigIceBlockEntity* this) { + if (super->type < 4) { + BigIceBlock_Actions[super->action](this); + } else { + sub_08099D30(this); + } +} + +void BigIceBlock_Init(BigIceBlockEntity* this) { + Entity* obj; + + if (CheckFlags(this->unk_86)) { + DeleteThisEntity(); + } + super->action = 1; + super->flags |= 0x80; + super->updatePriority = 3; + super->field_0x3c = 7; + super->hurtType = 0x48; + super->hitType = 1; + super->flags2 = 0x80; + super->hitbox = (Hitbox*)&gUnk_080FD190; + sub_08099910(this); + InitializeAnimation(super, super->type); + obj = CreateObject(BIG_ICE_BLOCK, 4, 0); + if (obj != NULL) { + obj->parent = super; + } +} + +void BigIceBlock_Action1(BigIceBlockEntity* this) { + if (sub_0809963C(this)) { + super->action = 2; + super->actionDelay = 0; + EnqueueSFX(SFX_ICE_BLOCK_MELT); + BigIceBlock_Action2(this); + } +} + +void BigIceBlock_Action2(BigIceBlockEntity* this) { + u32 tmp; + if (!sub_0809963C(this)) { + if (super->actionDelay >= 2) { + super->actionDelay -= 2; + } else { + super->actionDelay = 0; + } + if (super->actionDelay == 0) { + super->action = 1; + sub_0805EC60(super); + return; + } + } else { + super->actionDelay += 1; + } + tmp = gUnk_081237B0[super->actionDelay >> 5]; + sub_0805EC9C(super, 0x100, tmp, 0); + if (super->type != 1) { + if (super->type != 2) { + SetFlag(this->unk_86); + } else { + sub_080A2A3C(super, 0x53, 0, this->unk_86); + } + } + super->action = 3; + super->actionDelay = 0x3c; + super->flags &= 0x7f; +} + +NONMATCH("asm/non_matching/bigIceBlock/sub_08099880.inc", void sub_08099880(BigIceBlockEntity* this)) { + Entity* obj; + s32 rand; + u8 uVar3; + u32 uVar4; + s32 x; + s32 y; + + if (--super->actionDelay == 0) { + DeleteThisEntity(); + } else { + if (super->actionDelay == 0x30) { + sub_08099C18(this); + } + uVar4 = (0x3c - super->actionDelay) * 0x20 + 0x100; + sub_0805EC9C(super, 0x100, uVar4, 0); + sub_0806FCF4(super, uVar4, 2, 0); + obj = CreateObject(SPECIAL_FX, 0x11, 0x40); + if (obj != NULL) { + rand = Random(); + x = ((rand >> 0x10) % 0x21) - 0x10; + y = (rand & 0xf) - 4; + obj->spritePriority.b0 = 3; + PositionRelative(super, obj, x * 0x10000, y * 0x10000); + } + } +} +END_NONMATCH + +void sub_08099910(BigIceBlockEntity* this) { + u32 uVar2; + s32 iVar1; + u32 uVar3; + u32 position; + + position = COORD_TO_TILE(super); + this->unk_6e = position; + uVar2 = (((super->x.HALF.HI & 8)) >> 0x3) + ((super->y.HALF.HI & 8) >> 2); + this->unk_6c = uVar2; + + switch (uVar2) { + default: + SetTile(0x4022, position - 0x41, super->collisionLayer); + SetTile(0x4022, position - 0x40, super->collisionLayer); + SetTile(0x4022, position - 1, super->collisionLayer); + SetTile(0x4022, position, super->collisionLayer); + break; + case 1: + iVar1 = sub_080002C8(position - 0x41, super->collisionLayer); + uVar3 = 0x4024; + if (iVar1 == 0x12) { + uVar3 = 0x4079; + } + SetTile(uVar3, position - 0x41, super->collisionLayer); + SetTile(0x4022, position - 0x40, super->collisionLayer); + iVar1 = sub_080002C8(position - 0x3f, super->collisionLayer); + uVar3 = 0x4025; + if (iVar1 == 0x12) { + uVar3 = 0x407b; + } + SetTile(uVar3, position - 0x3f, super->collisionLayer); + iVar1 = sub_080002C8(position - 1, super->collisionLayer); + uVar3 = 0x4024; + if (iVar1 == 0x12) { + uVar3 = 0x4079; + } + SetTile(uVar3, position - 1, super->collisionLayer); + SetTile(0x4022, position, super->collisionLayer); + iVar1 = sub_080002C8(position + 1, super->collisionLayer); + uVar3 = 0x4025; + if (iVar1 == 0x12) { + uVar3 = 0x407b; + } + SetTile(uVar3, position + 1, super->collisionLayer); + return; + break; + case 2: + iVar1 = sub_080002C8(position - 0x41, super->collisionLayer); + uVar3 = 0x4023; + if (iVar1 == 0x12) { + uVar3 = 0x4077; + } + SetTile(uVar3, position - 0x41, super->collisionLayer); + iVar1 = sub_080002C8(position - 0x40, super->collisionLayer); + uVar3 = 0x4023; + if (iVar1 == 0x12) { + uVar3 = 0x4077; + } + SetTile(uVar3, position - 0x40, super->collisionLayer); + SetTile(0x4022, position - 1, super->collisionLayer); + SetTile(0x4022, position, super->collisionLayer); + iVar1 = sub_080002C8(position + 0x3f, super->collisionLayer); + uVar3 = 0x4026; + if (iVar1 == 0x12) { + uVar3 = 0x407c; + } + SetTile(uVar3, position + 0x3f, super->collisionLayer); + iVar1 = sub_080002C8(position + 0x40, super->collisionLayer); + uVar3 = 0x4026; + if (iVar1 == 0x12) { + uVar3 = 0x407c; + } + SetTile(uVar3, position + 0x40, super->collisionLayer); + break; + case 3: + iVar1 = sub_080002C8(position - 0x41, super->collisionLayer); + uVar3 = 0x4027; + if (iVar1 == 0x12) { + uVar3 = 0x4075; + } + SetTile(uVar3, position - 0x41, super->collisionLayer); + iVar1 = sub_080002C8(position - 0x40, super->collisionLayer); + uVar3 = 0x4023; + if (iVar1 == 0x12) { + uVar3 = 0x4077; + } + SetTile(uVar3, position - 0x40, super->collisionLayer); + iVar1 = sub_080002C8(position - 0x3f, super->collisionLayer); + uVar3 = 0x4028; + if (iVar1 == 0x12) { + uVar3 = 0x4076; + } + SetTile(uVar3, position - 0x3f, super->collisionLayer); + iVar1 = sub_080002C8(position - 1, super->collisionLayer); + uVar3 = 0x4024; + if (iVar1 == 0x12) { + uVar3 = 0x4079; + } + SetTile(uVar3, position - 1, super->collisionLayer); + SetTile(0x4022, position, super->collisionLayer); + iVar1 = sub_080002C8(position + 1, super->collisionLayer); + uVar3 = 0x4025; + if (iVar1 == 0x12) { + uVar3 = 0x407b; + } + SetTile(uVar3, position + 1, super->collisionLayer); + iVar1 = sub_080002C8(position + 0x3f, super->collisionLayer); + uVar3 = 0x4029; + if (iVar1 == 0x12) { + uVar3 = 0x4078; + } + SetTile(uVar3, position + 0x3f, super->collisionLayer); + iVar1 = sub_080002C8(position + 0x40, super->collisionLayer); + uVar3 = 0x4026; + if (iVar1 == 0x12) { + uVar3 = 0x407c; + } + SetTile(uVar3, position + 0x40, super->collisionLayer); + iVar1 = sub_080002C8(position + 0x41, super->collisionLayer); + uVar3 = 0x402a; + if (iVar1 == 0x12) { + uVar3 = 0x407a; + } + SetTile(uVar3, position + 0x41, super->collisionLayer); + break; + } +} + +void sub_08099C18(BigIceBlockEntity* this) { + u32 tmp = this->unk_6e; + switch (this->unk_6c) { + default: + sub_0807BA8C(tmp - 0x41, super->collisionLayer); + sub_0807BA8C(tmp - 0x40, super->collisionLayer); + sub_0807BA8C(tmp - 1, super->collisionLayer); + sub_0807BA8C(tmp, super->collisionLayer); + break; + case 1: + sub_0807BA8C(tmp - 0x41, super->collisionLayer); + sub_0807BA8C(tmp - 0x40, super->collisionLayer); + sub_0807BA8C(tmp - 0x3f, super->collisionLayer); + sub_0807BA8C(tmp - 1, super->collisionLayer); + sub_0807BA8C(tmp, super->collisionLayer); + sub_0807BA8C(tmp + 1, super->collisionLayer); + break; + case 2: + sub_0807BA8C(tmp - 0x41, super->collisionLayer); + sub_0807BA8C(tmp - 0x40, super->collisionLayer); + sub_0807BA8C(tmp - 1, super->collisionLayer); + sub_0807BA8C(tmp, super->collisionLayer); + sub_0807BA8C(tmp + 0x3f, super->collisionLayer); + sub_0807BA8C(tmp + 0x40, super->collisionLayer); + break; + case 3: + sub_0807BA8C(tmp - 0x41, super->collisionLayer); + sub_0807BA8C(tmp - 0x40, super->collisionLayer); + sub_0807BA8C(tmp - 0x3f, super->collisionLayer); + sub_0807BA8C(tmp - 1, super->collisionLayer); + sub_0807BA8C(tmp, super->collisionLayer); + sub_0807BA8C(tmp + 1, super->collisionLayer); + sub_0807BA8C(tmp + 0x3f, super->collisionLayer); + sub_0807BA8C(tmp + 0x40, super->collisionLayer); + sub_0807BA8C(tmp + 0x41, super->collisionLayer); + break; + } +} + +void sub_08099D30(BigIceBlockEntity* this) { + if ((super->parent)->next == NULL) { + DeleteThisEntity(); + } + if (super->action == 0) { + super->action = 1; + InitializeAnimation(super, 4); + CopyPositionAndSpriteOffset(super->parent, super); + super->y.HALF.HI++; + super->spriteOffsetY--; + } + if ((super->parent)->action < 2) { + super->spriteSettings.draw = 1; + if ((super->frame & 1) != 0) { + super->frame = 0; + super->frameDuration = (Random() & 0x78) + 0x78; + } + GetNextFrame(super); + } else { + super->spriteSettings.draw = 0; + } +} + +void (*const BigIceBlock_Actions[])(BigIceBlockEntity*) = { + BigIceBlock_Init, + BigIceBlock_Action1, + BigIceBlock_Action2, + sub_08099880, +}; +const u16 gUnk_081237B0[] = { + 256, 266, 275, 284, 293, +}; diff --git a/src/object/blockPushed.c b/src/object/blockPushed.c new file mode 100644 index 00000000..f79a0ae0 --- /dev/null +++ b/src/object/blockPushed.c @@ -0,0 +1,181 @@ +/** + * @file blockPushed.c + * @ingroup Objects + * + * @brief Block Pushed object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u32 unk_68; +} BlockPushedEntity; + +extern void (*const gUnk_0811F624[])(BlockPushedEntity*); +extern const Hitbox* const gUnk_0811F64C[]; + +void sub_080832D8(u32, BlockPushedEntity*); +void sub_080830B8(BlockPushedEntity*); + +void BlockPushed(BlockPushedEntity* this) { + gUnk_0811F624[super->action](this); +} + +void sub_08082EB4(BlockPushedEntity* this) { + u16 tmp; + u32 pos; + + if (gRoomControls.area == 0x11) { + sub_080AE068(super); + if (LoadFixedGFX(super, 0x1c1) == 0) { + super->spriteSettings.draw = 0; + return; + } + super->spriteSettings.draw = 1; + } + super->action = 1; + super->actionDelay = 0x20; + super->speed = 0x80; + super->spritePriority.b0 = 6; + pos = COORD_TO_TILE(super); + tmp = super->type * 8; + super->x.HALF.HI += tmp; + super->y.HALF.HI += tmp; + super->hitbox = (Hitbox*)gUnk_0811F64C[super->type]; + this->unk_68 = GetTileType(pos, (u32)super->collisionLayer); + switch (super->type) { + case 0: + sub_080832D8(pos, this); + break; + case 1: + sub_080832D8(pos, this); + sub_080832D8(pos + 1, this); + sub_080832D8(pos + 0x40, this); + sub_080832D8(pos + 0x41, this); + break; + case 2: + sub_080832D8(pos, this); + sub_080832D8(pos + 1, this); + sub_080832D8(pos + 2, this); + sub_080832D8(pos + 0x40, this); + sub_080832D8(pos + 0x41, this); + sub_080832D8(pos + 0x42, this); + sub_080832D8(pos + 0x80, this); + sub_080832D8(pos + 0x81, this); + sub_080832D8(pos + 0x82, this); + break; + default: + sub_080832D8(pos, this); + sub_080832D8(pos + 1, this); + sub_080832D8(pos + 2, this); + sub_080832D8(pos + 3, this); + sub_080832D8(pos + 0x40, this); + sub_080832D8(pos + 0x41, this); + sub_080832D8(pos + 0x42, this); + sub_080832D8(pos + 0x43, this); + sub_080832D8(pos + 0x80, this); + sub_080832D8(pos + 0x81, this); + sub_080832D8(pos + 0x82, this); + sub_080832D8(pos + 0x83, this); + sub_080832D8(pos + 0xc0, this); + sub_080832D8(pos + 0xc1, this); + sub_080832D8(pos + 0xc2, this); + sub_080832D8(pos + 0xc3, this); + break; + } + EnqueueSFX(SFX_10F); +} + +void sub_08083094(BlockPushedEntity* this) { + LinearMoveUpdate(super); + sub_0800445C(super); + if (--super->actionDelay == 0) { + sub_080830B8(this); + } +} + +void sub_080830B8(BlockPushedEntity* this) { + s32 offset = super->type * 8; + u32 pos = COORD_TO_TILE_OFFSET(super, offset, offset); + + switch (super->type) { + case 0: + if (sub_0800442E(super)) { + return; + } + sub_0807B7D8(0x365, pos, super->collisionLayer); + break; + case 1: + sub_0807B7D8(this->unk_68, pos, super->collisionLayer); + sub_0807B7D8(0x36f, pos + 1, super->collisionLayer); + sub_0807B7D8(0x370, pos + 0x40, super->collisionLayer); + sub_0807B7D8(0x371, pos + 0x41, super->collisionLayer); + break; + case 2: + sub_0807B7D8(this->unk_68, pos, super->collisionLayer); + sub_0807B7D8(0x372, pos + 1, super->collisionLayer); + sub_0807B7D8(0x36f, pos + 2, super->collisionLayer); + sub_0807B7D8(0x374, pos + 0x40, super->collisionLayer); + sub_0807B7D8(0x376, pos + 0x41, super->collisionLayer); + sub_0807B7D8(0x375, pos + 0x42, super->collisionLayer); + sub_0807B7D8(0x370, pos + 0x80, super->collisionLayer); + sub_0807B7D8(0x373, pos + 0x81, super->collisionLayer); + sub_0807B7D8(0x371, pos + 0x82, super->collisionLayer); + break; + default: + sub_0807B7D8(this->unk_68, pos, super->collisionLayer); + sub_0807B7D8(0x372, pos + 1, super->collisionLayer); + sub_0807B7D8(0x372, pos + 2, super->collisionLayer); + sub_0807B7D8(0x36f, pos + 3, super->collisionLayer); + sub_0807B7D8(0x374, pos + 0x40, super->collisionLayer); + sub_0807B7D8(0x376, pos + 0x41, super->collisionLayer); + sub_0807B7D8(0x376, pos + 0x42, super->collisionLayer); + sub_0807B7D8(0x375, pos + 0x43, super->collisionLayer); + sub_0807B7D8(0x374, pos + 0x80, super->collisionLayer); + sub_0807B7D8(0x376, pos + 0x81, super->collisionLayer); + sub_0807B7D8(0x376, pos + 0x82, super->collisionLayer); + sub_0807B7D8(0x375, pos + 0x83, super->collisionLayer); + sub_0807B7D8(0x370, pos + 0xc0, super->collisionLayer); + sub_0807B7D8(0x373, pos + 0xc1, super->collisionLayer); + sub_0807B7D8(0x373, pos + 0xc2, super->collisionLayer); + sub_0807B7D8(0x371, pos + 0xc3, super->collisionLayer); + break; + } + DeleteEntity(super); +} + +void sub_080832D8(u32 param_1, BlockPushedEntity* this) { + if (super->collisionLayer != 2) { + if ((super->direction & 8) != 0) { + sub_0807B7D8(0x21, param_1, super->collisionLayer); + } else { + sub_0807B7D8(0x20, param_1, super->collisionLayer); + } + } else { + if ((super->direction & 8) != 0) { + sub_0807B7D8(0x2f, param_1, super->collisionLayer); + } else { + sub_0807B7D8(0x2e, param_1, super->collisionLayer); + } + } +} + +void (*const gUnk_0811F624[])(BlockPushedEntity*) = { + sub_08082EB4, + sub_08083094, +}; +const Hitbox gUnk_0811F62C = { 0, 0, { 0, 0, 0, 0 }, 5, 4 }; +const Hitbox gUnk_0811F634 = { 0, 0, { 0, 0, 0, 0 }, 13, 12 }; +const Hitbox gUnk_0811F63C = { 0, 0, { 0, 0, 0, 0 }, 21, 20 }; +const Hitbox gUnk_0811F644 = { 0, 0, { 0, 0, 0, 0 }, 29, 28 }; + +const Hitbox* const gUnk_0811F64C[] = { + &gUnk_0811F62C, + &gUnk_0811F634, + &gUnk_0811F63C, + &gUnk_0811F644, +}; diff --git a/src/object/jailBars.c b/src/object/jailBars.c index 84b44b61..7a36f0e2 100644 --- a/src/object/jailBars.c +++ b/src/object/jailBars.c @@ -3,9 +3,9 @@ #include "flags.h" #include "room.h" #include "sound.h" +#include "functions.h" extern void sub_080A0960(Entity*, u32); -extern void sub_0801AF18(u8*, u32, u32); extern void (*const gUnk_08124950[])(Entity*); extern u8 gUnk_08124960; diff --git a/src/object/mask.c b/src/object/mask.c index 00c9e957..1b960d7a 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -3,10 +3,6 @@ extern void (*MaskActionFuncs[])(Entity*); -extern void sub_08000148(u16, u16, u32); - -extern void sub_0805457C(Entity*, s32); - void Mask(Entity* this) { MaskActionFuncs[this->action](this); } @@ -79,7 +75,7 @@ void sub_08092A94(Entity* this) { // Presumably, make the mask fall SetTile(this->field_0x7c.HALF_U.LO, this->field_0x7c.HALF_U.HI, 1); - sub_08000148(this->field_0x7a.HWORD, this->field_0x7c.HALF.HI, 1); + sub_08000148(this->field_0x7a.HWORD, (u16)this->field_0x7c.HALF.HI, 1); this->action = 2; diff --git a/src/object/object49.c b/src/object/object49.c index c65b41bf..aaecd05b 100644 --- a/src/object/object49.c +++ b/src/object/object49.c @@ -5,7 +5,6 @@ static void sub_0808F2B0(Entity*); void sub_0808F14C(Entity*); void sub_0808F244(Entity*); -extern void sub_0806FCF4(Entity*, u32, u32, u32); extern void sub_0808F5EC(Entity*); extern void (*const gUnk_08121E5C[])(Entity*); diff --git a/src/object/octorokBossObject.c b/src/object/octorokBossObject.c index cd527a72..ef2f279a 100644 --- a/src/object/octorokBossObject.c +++ b/src/object/octorokBossObject.c @@ -2,8 +2,6 @@ #include "object.h" #include "game.h" -extern void sub_0807B9B8(s32, s32, s32); - extern void (*const OctorokBossObject_Actions[])(Entity*); extern const u16 gUnk_0812384C[]; extern const u16 gUnk_0812388C[]; diff --git a/src/object/pullableMushroom.c b/src/object/pullableMushroom.c new file mode 100644 index 00000000..9a878236 --- /dev/null +++ b/src/object/pullableMushroom.c @@ -0,0 +1,316 @@ +/** + * @file pullableMushroom.c + * @ingroup Objects + * + * @brief Pullable Mushroom object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" +#include "game.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x8]; + /*0x70*/ u32 unk_70; + /*0x74*/ u32 unk_74; + /*0x78*/ u32 unk_78; + /*0x7c*/ u32 unk_7c; +} PullableMushroomEntity; + +extern const Hitbox gUnk_080FD224; +extern const u8 gUnk_08126EE4[]; + +extern void (*const gUnk_081211A4[])(PullableMushroomEntity*); +extern void (*const gUnk_081211B4[])(PullableMushroomEntity*); +extern void (*const gUnk_081211C0[])(PullableMushroomEntity*); +extern const u16 gUnk_081211CC[]; +extern void (*const gUnk_081211DC[])(PullableMushroomEntity*); +extern const u16 gUnk_081211E4[]; +extern void (*const gUnk_081211EC[])(PullableMushroomEntity*); +extern const u8 gUnk_081211F4[]; +extern const u8 gUnk_081211FC[]; + +void sub_0808AB68(PullableMushroomEntity*); +void sub_0808B168(PullableMushroomEntity*, u32); +u32 sub_0808B1F0(PullableMushroomEntity*, Entity*); +bool32 sub_0808B21C(PullableMushroomEntity*, u32); + +void PullableMushroom(PullableMushroomEntity* this) { + gUnk_081211A4[super->action](this); + super->bitfield = 0; +} + +void sub_0808AA1C(PullableMushroomEntity* this) { + super->action = 1; + if (AreaIsDungeon() == 0) { + ChangeObjPalette(super, 0); + } + switch (super->type) { + case 0: + super->spritePriority.b0 = 4; + super->hitbox = (Hitbox*)&gUnk_080FD224; + super->field_0x16 = 1; + SetTile(0x4022, COORD_TO_TILE(super), super->collisionLayer); + super->health = 1; + super->field_0x3c = 7; + super->hitType = 0x6e; + super->flags2 = 0x0e; + super->field_0x1c = 1; + super->flags |= 0x80; + super->spriteOffsetY = 4; + break; + case 1: + super->spritePriority.b0 = 4; + if (super->type2 != 0) { + super->hitbox = (Hitbox*)&gUnk_080FD224; + super->flags |= 0x80; + super->health = 1; + super->field_0x3c = 7; + super->hitType = 0x6e; + super->flags2 = 4; + super->field_0x1c = 1; + super->action = 3; + } + InitializeAnimation(super, super->animationState + 9); + break; + case 2: + super->spritePriority.b0 = 5; + super->spriteRendering.b0 = 3; + if ((super->animationState & 1)) { + this->unk_74 = 0x200; + this->unk_78 = 0x100; + } else { + this->unk_78 = 0x200; + this->unk_74 = 0x100; + } + break; + } + sub_0808AB68(this); +} + +void sub_0808AB68(PullableMushroomEntity* this) { + gUnk_081211B4[super->type](this); +} + +void sub_0808AB80(PullableMushroomEntity* this) { + gUnk_081211C0[super->subAction](this); +} + +void sub_0808AB98(PullableMushroomEntity* this) { + if (*(u16*)&super->parent->action == 0x201) { + super->parent->child = NULL; + DeleteThisEntity(); + } else if (super->parent->action == 2) { + sub_0808B168(this, 0); + } +} + +ASM_FUNC("asm/non_matching/pullableMushroom/sub_0808ABC4.inc", void sub_0808ABC4(PullableMushroomEntity* this)) + +ASM_FUNC("asm/non_matching/pullableMushroom/sub_0808ACEC.inc", void sub_0808ACEC(PullableMushroomEntity* this)) + +void sub_0808ADA0(PullableMushroomEntity* this) { + if ((sub_0808B1F0(this, super->child) < 8) || (super->child == NULL)) { + super->subAction += 1; + super->actionDelay = 2; + super->flags |= 0x80; + super->animationState ^= 2; + super->spritePriority.b0 = 4; + } else { + super->child->speed = 0x400; + LinearMoveUpdate(super->child); + } +} + +void sub_0808ADF0(PullableMushroomEntity* this) { + if (super->animationState + 0xd == super->animIndex) { + if ((super->frame & 0x80) != 0) { + super->subAction = 0; + super->flags |= 0x80; + } else { + GetNextFrame(super); + } + } else { + if (super->animationState + 1 != super->animIndex) { + InitializeAnimation(super, super->animationState + 1); + if (super->animationState == 3) { + super->spriteSettings.flipX = 0; + } else { + super->spriteSettings.flipX = 1; + } + SoundReq(SFX_12E); + } else { + GetNextFrame(super); + if (((super->frame & 0x80) != 0) && (--super->actionDelay == 0xff)) { + InitializeAnimation(super, super->animationState + 0xd); + } + } + } +} + +void sub_0808AE84(PullableMushroomEntity* this) { + if (gPlayerState.heldObject == 0) { + super->subAction = 6; + } + gUnk_081211DC[super->subAction - 5](this); +} + +void sub_0808AEB0(PullableMushroomEntity* this) { + u32 uVar1; + if (super->actionDelay != 0) { + uVar1 = sub_0808B1F0(this, super->child); + if ((gPlayerState.field_0x90 & gUnk_081211E4[super->animationState]) != 0) { + GetNextFrame(super); + if (uVar1 < 0x40) { + sub_080044AE(&gPlayerEntity, 0x40, super->direction); + if (--this->unk_7c == 0xffffffff) { + this->unk_7c = 4; + SoundReq(SFX_12F); + } + } + super->field_0xf = 1; + + } else { + if (((super->field_0xf != 0) && (gPlayerEntity.action == 1)) && (gPlayerState.swim_state == 0)) { + gPlayerState.queued_action = 0x1b; + gPlayerState.field_0x38 = uVar1; + gPlayerState.field_0x39 = super->direction ^ 0x10; + gPlayerState.field_0x3a = sub_0808B1F0(this, &gPlayerEntity); + super->subAction++; + } + } + } else { + super->actionDelay = 1; + this->unk_7c = 1; + super->animationState = gPlayerEntity.animationState >> 1 ^ 2; + super->direction = (super->animationState << 3); + super->flags &= 0x7f; + super->spriteSettings.flipX = gPlayerEntity.spriteSettings.flipX; + InitializeAnimation(super, super->animationState + 5); + if (sub_0808B21C(this, 0)) { + sub_0808B168((PullableMushroomEntity*)super->child, 0); + } + if ((super->animationState & 1) != 0) { + gPlayerEntity.y.HALF.HI = super->y.HALF.HI; + } else { + gPlayerEntity.x.HALF.HI = super->x.HALF.HI; + } + } +} + +void sub_0808AFD4(PullableMushroomEntity* this) { + super->action = 1; + super->subAction = 1; + (super->child)->direction = super->direction ^ 0x10; + SoundReq(SFX_130); +} + +void sub_0808AFF0(PullableMushroomEntity* this) { + gUnk_081211EC[super->subAction](this); + if ((((gPlayerState.field_0x1c & 0xf) != 1) || ((super->bitfield & 0x7f) != 0x13)) && (super->type == 1)) { + (super->parent)->action = 1; + (super->parent)->subAction = 1; + super->direction = super->parent->direction ^ 0x10; + super->parent->flags &= 0x7f; + super->flags &= 0x7f; + super->action = 1; + SoundReq(SFX_130); + } +} + +void sub_0808B05C(PullableMushroomEntity* this) { + if (super->type == 0) { + super->animationState = gPlayerEntity.animationState >> 1 ^ 2; + super->direction = super->animationState << 3; + super->spriteSettings.flipX = gPlayerEntity.spriteSettings.flipX; + super->flags &= 0x7f; + InitializeAnimation(super, super->animationState + 5); + if (sub_0808B21C(this, 1)) { + sub_0808B168((PullableMushroomEntity*)super->child, 1); + } + } + super->subAction++; +} + +ASM_FUNC("asm/non_matching/pullableMushroom/sub_0808B0BC.inc", void sub_0808B0BC(PullableMushroomEntity* this)) + +ASM_FUNC("asm/non_matching/pullableMushroom/sub_0808B168.inc", + void sub_0808B168(PullableMushroomEntity* this, u32 param_2)) + +u32 sub_0808B1F0(PullableMushroomEntity* this, Entity* other) { + s32 sVar1; + s32 sVar2; + u32 uVar3; + + if ((super->animationState & 1) != 0) { + sVar1 = super->x.HALF.HI; + sVar2 = other->x.HALF.HI; + } else { + sVar1 = super->y.HALF.HI; + sVar2 = other->y.HALF.HI; + } + uVar3 = (s32)sVar1 - (s32)sVar2; + if ((s32)uVar3 < 0) { + uVar3 = -uVar3; + } + return uVar3; +} + +bool32 sub_0808B21C(PullableMushroomEntity* this, u32 param_2) { + Entity* obj; + + super->spritePriority.b0 = 6; + obj = CreateObjectWithParent(super, PULLABLE_MUSHROOM, 1, 0); + super->child = obj; + if (obj != NULL) { + obj->animationState = super->animationState; + (super->child)->direction = super->direction; + super->child->spriteSettings.flipX = super->spriteSettings.flipX; + (super->child)->parent = super; + (super->child)->type2 = (u8)param_2; + } + obj = CreateObjectWithParent(super, PULLABLE_MUSHROOM, 2, 0); + super->parent = obj; + if (obj != NULL) { + obj->animationState = super->animationState; + (super->parent)->child = super->child; + return TRUE; + } + return FALSE; +} + +void (*const gUnk_081211A4[])(PullableMushroomEntity*) = { + sub_0808AA1C, + sub_0808AB68, + sub_0808AE84, + sub_0808AFF0, +}; +void (*const gUnk_081211B4[])(PullableMushroomEntity*) = { + sub_0808AB80, + sub_0808AB98, + sub_0808ABC4, +}; +void (*const gUnk_081211C0[])(PullableMushroomEntity*) = { + sub_0808ACEC, + sub_0808ADA0, + sub_0808ADF0, +}; +const u16 gUnk_081211CC[] = { 32768, 64000, 0, 64517, 0, 0, 32768, 64763 }; +void (*const gUnk_081211DC[])(PullableMushroomEntity*) = { + sub_0808AEB0, + sub_0808AFD4, +}; +const u16 gUnk_081211E4[] = { 1024, 256, 2048, 512 }; +void (*const gUnk_081211EC[])(PullableMushroomEntity*) = { + sub_0808B05C, + sub_0808B0BC, +}; +const u8 gUnk_081211F4[] = { + 0, 8, 248, 252, 0, 248, 8, 252, +}; +const u8 gUnk_081211FC[] = { + 0, 3, 248, 252, 0, 244, 8, 252, +}; diff --git a/src/object/pushableFurniture.c b/src/object/pushableFurniture.c new file mode 100644 index 00000000..01bf646f --- /dev/null +++ b/src/object/pushableFurniture.c @@ -0,0 +1,401 @@ +/** + * @file pushableFurniture.c + * @ingroup Objects + * + * @brief Pushable Furniture object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x8]; + /*0x70*/ u16 unk_70; + /*0x72*/ u16 unk_72; + /*0x74*/ u16 unk_74; + /*0x76*/ u16 unk_76; + /*0x78*/ u8 unk_78[0x2]; + /*0x7a*/ u16 unk_7a; + /*0x7c*/ u16 unk_7c; + /*0x7e*/ u16 unk_7e; + /*0x80*/ u8 unk_80; + /*0x81*/ u8 unk_81; + /*0x82*/ u8 unk_82; + /*0x83*/ u8 unk_83; + /*0x84*/ u8 unk_84[0x2]; + /*0x86*/ u16 unk_86; +} PushableFurnitureEntity; + +extern const s16 gUnk_080B4488[]; + +extern void (*const PushableFurniture_Actions[])(PushableFurnitureEntity*); +extern const u16 gUnk_08121EE4[]; +extern const u16 gUnk_08121EF0[]; + +void sub_08090514(PushableFurnitureEntity*); +void sub_0808FF50(PushableFurnitureEntity*); +void sub_0808FBFC(PushableFurnitureEntity*); +void sub_0808FB68(PushableFurnitureEntity*); +bool32 sub_0808FECC(PushableFurnitureEntity*); +void sub_0808FF20(PushableFurnitureEntity*); +void nullsub_1(PushableFurnitureEntity*); +void sub_0808FD44(PushableFurnitureEntity*, u32); +void sub_0808FDE8(PushableFurnitureEntity*); +bool32 sub_0808FC5C(PushableFurnitureEntity*); +void sub_08090498(PushableFurnitureEntity*); +void sub_08090254(PushableFurnitureEntity*); +void sub_08090094(PushableFurnitureEntity*, u32, u32); +void sub_0809028C(PushableFurnitureEntity*, u32); +void sub_08090480(u32, u32); + +void PushableFurniture(PushableFurnitureEntity* this) { + PushableFurniture_Actions[super->action](this); + if (super->action != 0) { + sub_08090514(this); + } +} + +ASM_FUNC("asm/non_matching/pushableFurniture/sub_0808F990.inc", void sub_0808F990(PushableFurnitureEntity* this)) + +void PushableFurniture_Action1(PushableFurnitureEntity* this) { + if (this->unk_81 == 0) { + if (this->unk_80 == 0) { + sub_0808FBFC(this); + } else { + sub_0808FB68(this); + } + } else { + if (super->actionDelay != 0 && --super->actionDelay == 0) { + EnqueueSFX(SFX_BUTTON_PRESS); + } + } + switch (super->type) { + case 2: + case 4: + switch (super->subAction) { + case 0: + if (sub_0808FECC(this)) { + super->subAction = 1; + super->actionDelay = 0xc; + } + break; + case 1: + if (--super->actionDelay == 0) { + super->frameIndex = 1; + super->subAction = 2; + EnqueueSFX(SFX_80); + sub_0808FF20(this); + } + break; + case 2: + nullsub_1(this); + break; + } + } +} + +void sub_0808FB68(PushableFurnitureEntity* this) { + u32 tileIndex = GetTileIndex(this->unk_70, super->collisionLayer); + switch (tileIndex) { + case 0x4030: + case 0x4031: + super->action = 2; + super->direction = (((tileIndex - 0x30) & 1) << 4) | 8; + SetPlayerControl(CONTROL_1); + sub_0808FD44(this, 0); + break; + default: + tileIndex = GetTileIndex(this->unk_72, super->collisionLayer); + switch (tileIndex) { + case 0x4030: + case 0x4031: + super->action = 2; + super->direction = (((tileIndex - 0x30) & 1) << 4) | 8; + SetPlayerControl(CONTROL_1); + sub_0808FD44(this, 1); + break; + } + sub_0808FDE8(this); + break; + } +} + +void sub_0808FBFC(PushableFurnitureEntity* this) { + u32 tileIndex = GetTileIndex(this->unk_7c, super->collisionLayer); + if (tileIndex != 0x404a) { + super->action = 2; + super->direction = ((tileIndex - 0x4bU) & 3) << 3; + SetPlayerControl(CONTROL_1); + sub_0808FD44(this, 0); + } +} + +void PushableFurniture_Action2(PushableFurnitureEntity* this) { + sub_0800445C(super); + if (sub_0808FC5C(this)) { + super->action = 1; + SetPlayerControl(CONTROL_ENABLED); + } +} + +bool32 sub_0808FC5C(PushableFurnitureEntity* this) { + bool32 bVar2; + u8* puVar5; + + LinearMoveUpdate(super); + if (--super->actionDelay == 0) { + if ((super->type == 2) || (super->type == 4)) { + super->spriteOffsetY = 0xfe; + } else { + super->spriteOffsetY = 0; + } + if (sub_080002D0(super)) { + return 0; + } + if (super->field_0xf == 0) { + sub_0808FF50(this); + return TRUE; + } + bVar2 = FALSE; + if (*(u16*)&super->type == 0x101) { + if (super->y.HALF.HI != this->unk_7e) + goto _0808FCC8; + } else { + if (super->x.HALF.HI == this->unk_7e) { + bVar2 = TRUE; + } + _0808FCC8: + if (!bVar2) { + sub_0808FF50(this); + return TRUE; + } + } + this->unk_81 = 1; + if (super->parent == NULL) { + SetFlag((u32)this->unk_86); + } else { + if ((this->unk_82 & 0x80) != 0) { + puVar5 = super->parent->spriteAnimation + 2; + *puVar5 = (1 << (this->unk_7a)) | *puVar5; + } else { + SetLocalFlag((u32)this->unk_82); + } + } + if (this->unk_80 == 0) { + super->actionDelay = 4; + } else { + super->actionDelay = 0x18; + } + if ((gPlayerState.flags & 0x80) == 0) { + super->actionDelay += 0x10; + } + sub_0808FF50(this); + return TRUE; + } else { + return FALSE; + } +} + +void sub_0808FD44(PushableFurnitureEntity* this, u32 param_2) { + u32 tmp; + + if (this->unk_80 == 1) { + if (this->unk_83 != 0) { + sub_08090498(this); + } + if (param_2 != 0) { + tmp = this->unk_72; + } else { + tmp = this->unk_70; + } + if ((gPlayerState.flags & 0x80) != 0) { + super->speed = 0x40; + super->actionDelay = 0x20; + } else { + super->speed = 0x80; + super->actionDelay = 0x10; + } + } else { + tmp = this->unk_7c; + if ((gPlayerState.flags & 0x80) != 0) { + super->speed = 0x40; + super->actionDelay = 0x40; + } else { + super->speed = 0x80; + super->actionDelay = 0x20; + } + } + EnqueueSFX(SFX_10F); + sub_08090254(this); + GetTileIndex(tmp + gUnk_080B4488[super->direction >> 3], super->collisionLayer); +} + +void sub_0808FDE8(PushableFurnitureEntity* this) { + u32 uVar1; + s32 iVar2; + u32 uVar3; + + uVar3 = (u32)this->unk_70; + uVar1 = sub_080002E0(uVar3 - 1, 1); + iVar2 = GetTileIndex(uVar3, 1); + if (iVar2 == 0x402e) { + if ((((uVar1 & 0xf0) != 0) && ((uVar1 & 0xf0) != 0x50)) || ((uVar1 & 5) == 0)) { + SetTile(0x402c, uVar3, 1); + } + } else { + iVar2 = sub_080002E0(uVar3, 1); + if ((iVar2 == 5) && ((((uVar1 & 0xf0) == 0 || ((uVar1 & 0xf0) == 0x50)) && ((uVar1 & 5) != 0)))) { + SetTile(0x402e, uVar3, 1); + } + } + uVar3 = (u32)this->unk_72; + uVar1 = sub_080002E0(uVar3 + 1, 1); + iVar2 = GetTileIndex(uVar3, 1); + if (iVar2 == 0x402f) { + if ((((uVar1 & 0xf0) != 0) && ((uVar1 & 0xf0) != 0x50)) || ((uVar1 & 10) == 0)) { + SetTile(0x402d, uVar3, 1); + } + } else { + iVar2 = sub_080002E0(uVar3, 1); + if (((iVar2 == 10) && (((uVar1 & 0xf0) == 0 || ((uVar1 & 0xf0) == 0x50)))) && ((uVar1 & 10) != 0)) { + SetTile(0x402f, uVar3, 1); + } + } +} + +bool32 sub_0808FECC(PushableFurnitureEntity* this) { + bool32 result = TRUE; + + if (!((gPlayerState.flags & 0x80) == 0 && (gPlayerEntity.action == 6) && (gPlayerEntity.animationState == 0) && + (gPlayerEntity.y.HALF.HI - super->y.HALF.HI < 0x14) && (super->x.HALF.HI + 0xc > gPlayerEntity.x.HALF.HI) && + (super->x.HALF.HI - 12 < gPlayerEntity.x.HALF.HI))) { + result = FALSE; + } + return result; +} + +void sub_0808FF20(PushableFurnitureEntity* this) { + Entity* obj; + switch (super->type2) { + case 0: + break; + case 1: + case 2: + obj = CreateObject(OBJECT_63, super->type2 - 1, 0); + if (obj != NULL) { + obj->parent = super; + CopyPosition(super, obj); + } + break; + } +} + +void nullsub_1(PushableFurnitureEntity* this) { +} + +void sub_0808FF50(PushableFurnitureEntity* this) { + u32 tmp; + u32 position; + u32 tmp2; + this->unk_7c = COORD_TO_TILE(super); + tmp2 = super->x.HALF.HI & 0xf; + tmp = this->unk_7c; + position = tmp; + switch (this->unk_80) { + case 0: + this->unk_70 = tmp; + this->unk_74 = GetTileIndex(this->unk_70, 1); + SetTile(0x404a, tmp, 1); + break; + case 1: + if ((tmp2 & 8) != 0) { + this->unk_70 = this->unk_7c; + this->unk_74 = GetTileIndex(this->unk_70, 1); + SetTile(gUnk_08121EE4[this->unk_81], position, 1); + this->unk_72 = tmp + 1; + this->unk_76 = GetTileIndex(this->unk_72, 1); + sub_08090094(this, gUnk_08121EE4[this->unk_81 + 4], this->unk_72); + sub_0809028C(this, 1); + } else { + this->unk_72 = this->unk_7c; + this->unk_76 = GetTileIndex(this->unk_72, 1); + SetTile(gUnk_08121EE4[this->unk_81], position, 1); + this->unk_70 = tmp - 1; + this->unk_74 = GetTileIndex(this->unk_70, 1); + sub_08090094(this, gUnk_08121EE4[this->unk_81 + 2], this->unk_70); + sub_0809028C(this, 0); + } + break; + } +} + +ASM_FUNC("asm/non_matching/pushableFurniture/sub_08090094.inc", + void sub_08090094(PushableFurnitureEntity* this, u32 param_2, u32 param_3)) + +void sub_08090254(PushableFurnitureEntity* this) { + sub_0807B9B8(this->unk_74, this->unk_70, super->collisionLayer); + if (this->unk_80 == 1) { + sub_0807B9B8(this->unk_76, this->unk_72, super->collisionLayer); + } +} + +ASM_FUNC("asm/non_matching/pushableFurniture/sub_0809028C.inc", + void sub_0809028C(PushableFurnitureEntity* this, u32 param_2)) + +void sub_08090480(u32 param_1, u32 param_2) { + SetTile(gUnk_08121EF0[param_1], param_2, 1); +} + +void sub_08090498(PushableFurnitureEntity* this) { + u32 tmp = this->unk_70 - 0x80; + sub_0807BA8C(tmp, 1); + if (((this->unk_83 & 1) != 0) && (GetTileType(tmp, 2) == 0x306)) { + sub_08000148(0x62, tmp, 1); + } + tmp = this->unk_72 - 0x80; + sub_0807BA8C(tmp, 1); + if (((this->unk_83 & 2) != 0) && (GetTileType(tmp, 2) == 0x308)) { + sub_08000148(99, tmp, 1); + } +} + +void sub_08090514(PushableFurnitureEntity* this) { + if (super->parent != NULL) { + switch (super->parent->subAction) { + case 0: + super->spriteRendering.b3 = 2; + super->spritePriority.b0 = 4; + break; + case 1: + super->spriteRendering.b3 = 3; + super->spritePriority.b0 = 4; + break; + case 2: + super->spriteRendering.b3 = 2; + super->spritePriority.b0 = 5; + break; + case 3: + super->spriteRendering.b3 = 2; + super->spritePriority.b0 = 3; + break; + } + } +} + +void (*const PushableFurniture_Actions[])(PushableFurnitureEntity*) = { + sub_0808F990, + PushableFurniture_Action1, + PushableFurniture_Action2, +}; +const u16 gUnk_08121EE4[] = { + 0x402b, 0x4022, 0x402c, 0x4024, 0x402d, 0x4025, +}; +const u16 gUnk_08121EF0[] = { + 0x4026, + 0x4065, + 0x4066, + 0, +}; diff --git a/src/object/pushableGrave.c b/src/object/pushableGrave.c new file mode 100644 index 00000000..8d9d4a92 --- /dev/null +++ b/src/object/pushableGrave.c @@ -0,0 +1,213 @@ +/** + * @file pushableGrave.c + * @ingroup Objects + * + * @brief Pushable Grave object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u16 unk_68; + /*0x6a*/ u16 unk_6a; + /*0x6c*/ u16 unk_6c; + /*0x6e*/ u16 unk_6e; + /*0x70*/ u16 unk_70; + /*0x72*/ u16 unk_72; + /*0x74*/ u16 unk_74; + /*0x76*/ u16 unk_76; + /*0x78*/ u16 unk_78; + /*0x7a*/ u16 unk_7a; + /*0x7c*/ s8 unk_7c[0xa]; + /*0x86*/ u16 pushedFlag; +} PushableGraveEntity; + +extern const Hitbox gUnk_080FD578; +extern const Hitbox gUnk_080FD570; + +extern void (*const gUnk_081232AC[])(PushableGraveEntity*); +extern const u8 gUnk_081232C0[]; +extern const u16 PushableGrave_Tiles[]; + +bool32 sub_0809798C(PushableGraveEntity*); +void sub_080977F4(PushableGraveEntity*); +bool32 sub_0809785C(PushableGraveEntity*); + +void PushableGrave(PushableGraveEntity* this) { + gUnk_081232AC[super->action](this); +} + +void PushableGrave_Init(PushableGraveEntity* this) { + u32 tilePosition; + u32 tileIndex; + + super->spriteSettings.draw = 1; + super->frameIndex = super->type; + super->updatePriority = 3; + tilePosition = COORD_TO_TILE(super); + this->unk_6a = GetTileIndex(tilePosition - 0x41, super->collisionLayer); + this->unk_6c = GetTileIndex(tilePosition - 0x40, super->collisionLayer); + this->unk_6e = GetTileIndex(tilePosition - 0x3f, super->collisionLayer); + this->unk_70 = GetTileIndex(tilePosition - 1, super->collisionLayer); + this->unk_72 = GetTileIndex(tilePosition, super->collisionLayer); + this->unk_74 = GetTileIndex(tilePosition + 1, super->collisionLayer); + this->unk_76 = GetTileIndex(tilePosition + 0x3f, super->collisionLayer); + this->unk_78 = GetTileIndex(tilePosition + 0x40, super->collisionLayer); + this->unk_7a = GetTileIndex(tilePosition + 0x41, super->collisionLayer); + if (sub_0809798C(this)) { + if (super->type == 0) { + super->y.HALF.HI -= 0x16; + } else { + super->y.HALF.HI -= 0x10; + } + sub_080977F4(this); + + } else { + super->action = 1; + tilePosition = COORD_TO_TILE(super); + this->unk_68 = tilePosition; + tileIndex = PushableGrave_Tiles[super->type2]; + if (super->type == 0) { + super->hitbox = (Hitbox*)&gUnk_080FD578; + SetTile(tileIndex, tilePosition - 1, super->collisionLayer); + SetTile(tileIndex, tilePosition, super->collisionLayer); + super->y.HALF.HI += 2; + } else { + super->hitbox = (Hitbox*)&gUnk_080FD570; + SetTile(tileIndex, tilePosition, super->collisionLayer); + if (super->type2 == 2) { + sub_0801AF18((u8*)gUnk_081232C0, tilePosition, super->collisionLayer); + } + } + } +} + +void PushableGrave_Action1(PushableGraveEntity* this) { + if (sub_0809785C(this)) { + RequestPriorityDuration(super, super->actionDelay); + } +} + +void PushableGrave_Action2(PushableGraveEntity* this) { + if (super->subAction == 0) { + if (--super->field_0xf == 0) { + super->subAction = 1; + super->field_0xf = 0x78; + gRoomControls.camera_target = super; + gRoomControls.unk5 = 2; + } + } else { + if (--super->field_0xf == 0) { + super->action = 3; + super->actionDelay = 0x60; + super->field_0xf = 0x14; + RequestPriorityDuration(super, 0x60); + SoundReq(SFX_10F); + } + } +} + +void PushableGrave_Action3(PushableGraveEntity* this) { + if (super->actionDelay != 0) { + super->actionDelay--; + LinearMoveUpdate(super); + sub_0800445C(super); + } else { + if (super->field_0xf != 0) { + super->field_0xf--; + } else { + EnqueueSFX(SFX_SECRET); + sub_080977F4(this); + if (super->type == 0) { + gRoomControls.camera_target = &gPlayerEntity; + gRoomControls.unk5 = 4; + } + } + } +} + +void PushableGrave_Action4(PushableGraveEntity* this) { +} + +void sub_080977F4(PushableGraveEntity* this) { + u32 tilePosition; + super->action = 4; + super->spriteOffsetY = 0; + tilePosition = COORD_TO_TILE(super); + SetTile(0x4022, tilePosition, super->collisionLayer); + if (super->type == 0) { + SetTile(0x4022, tilePosition - 1, super->collisionLayer); + } + if (this->pushedFlag != 0) { + SetFlag(this->pushedFlag); + } +} + +bool32 sub_0809785C(PushableGraveEntity* this) { + u32 tilePosition; + + if (super->type != 0) { + if (super->type2 != 0) { + if ((CheckFlags(this->pushedFlag) != 0) || GetTileType(this->unk_68, super->collisionLayer) == 0x403f) { + super->action = 3; + super->actionDelay = 0x40; + super->field_0xf = 0; + super->direction = 0; + super->speed = 0x40; + tilePosition = this->unk_68; + sub_0807B9B8(this->unk_72, tilePosition, super->collisionLayer); + if (super->type2 == 2) { + sub_0807B9B8(this->unk_6a, tilePosition - 0x41, super->collisionLayer); + sub_0807B9B8(this->unk_6c, tilePosition - 0x40, super->collisionLayer); + sub_0807B9B8(this->unk_6e, tilePosition - 0x3f, super->collisionLayer); + sub_0807B9B8(this->unk_70, tilePosition - 1, super->collisionLayer); + sub_0807B9B8(this->unk_74, tilePosition + 1, super->collisionLayer); + sub_0807B9B8(this->unk_76, tilePosition + 0x3f, super->collisionLayer); + sub_0807B9B8(this->unk_78, tilePosition + 0x40, super->collisionLayer); + sub_0807B9B8(this->unk_7a, tilePosition + 0x41, super->collisionLayer); + } + SoundReq(SFX_10F); + return TRUE; + } + } + + } else { + if (CheckFlags(this->pushedFlag) != 0) { + super->action = 2; + super->subAction = 0; + super->actionDelay = 0xf0; + super->field_0xf = 0x3c; + super->direction = 0; + super->speed = 0x40; + sub_0807BA8C(this->unk_68, super->collisionLayer); + sub_0807BA8C(this->unk_68 - 1, super->collisionLayer); + return TRUE; + } + } + return FALSE; +} + +bool32 sub_0809798C(PushableGraveEntity* this) { + bool32 result = FALSE; + if (((super->type == 0) || (super->type2 != 0)) && CheckFlags(this->pushedFlag)) { + result = TRUE; + } + return result; +} + +void (*const gUnk_081232AC[])(PushableGraveEntity*) = { + PushableGrave_Init, PushableGrave_Action1, PushableGrave_Action2, PushableGrave_Action3, PushableGrave_Action4, +}; +const u8 gUnk_081232C0[] = { + 61, 64, 191, 255, 61, 64, 192, 255, 61, 64, 193, 255, 61, 64, 255, + 255, 61, 64, 1, 0, 61, 64, 63, 0, 61, 64, 65, 0, 255, 255, +}; +const u16 PushableGrave_Tiles[] = { + 0x4022, + 0x403e, + 0x403e, +}; diff --git a/src/object/pushableRock.c b/src/object/pushableRock.c new file mode 100644 index 00000000..a176e2da --- /dev/null +++ b/src/object/pushableRock.c @@ -0,0 +1,123 @@ +/** + * @file pushableRock.c + * @ingroup Objects + * + * @brief Pushable Rock object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[8]; + /*0x70*/ u16 tileIndex; + /*0x72*/ u8 unk_72; + /*0x73*/ u8 unk_73; + /*0x74*/ u16 tilePosition; + /*0x76*/ u8 unk_76[0x10]; + /*0x86*/ u16 pushedFlag; +} PushableRockEntity; + +extern void (*const PushableRock_Actions[])(PushableRockEntity*); +extern const u16 PushableRock_Speeds[]; + +void sub_0808A644(PushableRockEntity*); + +void PushableRock(PushableRockEntity* this) { + PushableRock_Actions[super->action](this); +} + +void PushableRock_Init(PushableRockEntity* this) { + super->spriteSettings.draw = 1; + super->action += 1; + super->spriteRendering.b3 = 2; + super->spritePriority.b0 = 4; + super->spritePriority.b1 = 3; + sub_0808A644(this); +} + +void PushableRock_Action1(PushableRockEntity* this) { + u32 tileType; + u32 tmp; + + tileType = GetTileType(this->tilePosition, super->collisionLayer); + switch (tileType) { + case 0x401c: + case 0x401d: + case 0x401e: + case 0x401f: + tmp = (tileType - 0x1c); + super->animationState = tmp * 2; + super->direction = tmp * 8; + if ((u8)(tmp * 2) == 2) { + super->spriteSettings.flipX = 1; + } else { + super->spriteSettings.flipX = 0; + } + SetTile(this->tileIndex, this->tilePosition, super->collisionLayer); + super->action = 2; + InitializeAnimation(super, (super->animationState >> 1) + 1); + EnqueueSFX(SFX_10F); + break; + default: + if (super->animIndex) { + InitializeAnimation(super, 0); + } + break; + } +} + +void PushableRock_Action2(PushableRockEntity* this) { + sub_0800445C(super); + super->speed = PushableRock_Speeds[super->frame & 0xf]; + LinearMoveUpdate(super); + GetNextFrame(super); + if (super->frame & 0x80) { + super->action = 0; + } +} + +void PushableRock_Action3(PushableRockEntity* this) { + if ((super->frame & 0x80) == 0) { + GetNextFrame(super); + } else { + super->spritePriority.b0 = 7; + } +} + +void sub_0808A644(PushableRockEntity* this) { + u32 tmp; + this->tilePosition = COORD_TO_TILE(super); + this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer); + this->unk_72 = sub_080002E0(this->tilePosition, super->collisionLayer); + tmp = sub_080002C8(this->tilePosition, super->collisionLayer); + if ((tmp == 0x19) || (tmp == 0xf0)) { + SetTile(0x4015, this->tilePosition, super->collisionLayer); + super->action = 3; + if (!CheckFlags(this->pushedFlag)) { + SetFlag(this->pushedFlag); + SoundReq(SFX_TASK_COMPLETE); + InitializeAnimation(super, 5); + } else { + InitializeAnimation(super, 6); + } + } else { + SetTile(0x401b, this->tilePosition, super->collisionLayer); + } +} + +void (*const PushableRock_Actions[])(PushableRockEntity*) = { + PushableRock_Init, + PushableRock_Action1, + PushableRock_Action2, + PushableRock_Action3, +}; +const u16 PushableRock_Speeds[] = { + 0, + 256, + 96, + 64, +}; diff --git a/src/object/pushableStatue.c b/src/object/pushableStatue.c new file mode 100644 index 00000000..c77436ae --- /dev/null +++ b/src/object/pushableStatue.c @@ -0,0 +1,277 @@ +/** + * @file pushableStatue.c + * @ingroup Objects + * + * @brief Pushable Statue object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x18]; + /*0x80*/ u16 unk_80; + /*0x82*/ u8 unk_82; + /*0x83*/ u8 unk_83; + /*0x84*/ u16 unk_84; + /*0x86*/ u16 unk_86; +} PushableStatueEntity; + +extern u8* GetLayerByIndex(u32); +extern const Hitbox gUnk_080FD1F4; +extern const s16 gUnk_080B4488[]; +extern const s16 gUnk_080B4468[]; + +extern void (*const PushableStatue_Actions[])(PushableStatueEntity*); +extern void (*const PushableStatue_SubActions[])(PushableStatueEntity*); +extern const s8 gUnk_08120CB4[]; +extern const u16 gUnk_08120CBC[]; +extern const u16 gUnk_08120CCC[]; +extern const u16 gUnk_08120D6C[]; + +u32 sub_0808968C(u32); +bool32 sub_0808965C(PushableStatueEntity*); +void sub_08089454(PushableStatueEntity*); +void sub_080894C8(PushableStatueEntity*); +void sub_08089538(PushableStatueEntity*); +void sub_080894FC(PushableStatueEntity*); +bool32 sub_080895C0(PushableStatueEntity*); +bool32 sub_080896B0(void); + +void PushableStatue(PushableStatueEntity* this) { + PushableStatue_Actions[super->action](this); +} + +void PushableStatue_Init(PushableStatueEntity* this) { + if (sub_0808965C(this)) { + super->action = 1; + super->speed = 0x80; + super->updatePriority = 3; + super->hitbox = (Hitbox*)&gUnk_080FD1F4; + super->field_0x16 = 1; + this->unk_86 = 0; + sub_08089454(this); + sub_080894C8(this); + InitializeAnimation(super, 0); + } +} + +void PushableStatue_Action1(PushableStatueEntity* this) { + u16 tileType; + Entity* obj; + + if (sub_0800442E(super) == 0) { + tileType = GetTileType(this->unk_84, super->collisionLayer); + if (tileType != 0x400b) { + switch (sub_0808968C(tileType)) { + case 1: + super->action = 3; + super->direction = ((tileType - 0xc) & 3) << 3; + sub_08089538(this); + break; + case 0: + obj = CreateObject(SPECIAL_FX, 4, 0); + if (obj != NULL) { + CopyPosition(super, obj); + } + sub_080894FC(this); + break; + case 2: + this->unk_80 = tileType; + break; + } + } else { + sub_08078930(super); + } + } +} + +void PushableStatue_Action2(PushableStatueEntity* this) { + if (this->unk_86 != 0) { + sub_080895C0(this); + } else { + if (gPlayerState.heldObject == 0) { + super->subAction = 6; + } + PushableStatue_SubActions[super->subAction - 5](this); + } +} + +void PushableStatue_SubAction0(PushableStatueEntity* this) { + u16 tileType; + Entity* obj; + u32 index; + const s8* ptr; + + if (this->unk_83 == 0) { + this->unk_83 = 1; + index = gPlayerEntity.animationState; + ptr = &gUnk_08120CB4[index]; + PositionRelative(super, &gPlayerEntity, *(ptr) << 0x10, *(ptr + 1) << 0x10); + } + tileType = GetTileType(this->unk_84, super->collisionLayer); + if (tileType != 0x400b) { + switch (sub_0808968C(tileType)) { + case 1: + super->direction = (((tileType - 0xc) & 3) << 3); + sub_08089538(this); + break; + case 0: + obj = CreateObject(SPECIAL_FX, 4, 0); + if (obj != NULL) { + CopyPosition(super, obj); + } + sub_080894FC(this); + return; + case 2: + this->unk_80 = tileType; + break; + } + } + if (sub_080896B0()) { + gPlayerState.queued_action = 0x10; + gPlayerState.field_0x38 = 0x20; + gPlayerState.flags |= 1; + gPlayerEntity.x.HALF.LO = 0; + gPlayerEntity.y.HALF.LO = 0; + super->direction = (gPlayerEntity.animationState ^ 4) << 2; + sub_08089538(this); + } +} + +void PushableStatue_SubAction1(PushableStatueEntity* this) { + super->action = 1; + this->unk_83 = 0; +} + +void PushableStatue_Action3(PushableStatueEntity* this) { + if (sub_080895C0(this)) { + super->action = 1; + } +} + +void PushableStatue_Action4(PushableStatueEntity* this) { + if (--super->actionDelay != 0) { + super->spriteSettings.draw ^= 1; + } else { + super->spriteSettings.draw = 1; + super->action = 1; + SetTile(0x400b, this->unk_84, super->collisionLayer); + sub_080894C8(this); + } +} + +void sub_08089454(PushableStatueEntity* this) { + this->unk_84 = COORD_TO_TILE(super); + this->unk_80 = GetTileIndex(this->unk_84, super->collisionLayer); + SetTile(0x400b, this->unk_84, super->collisionLayer); + if (super->collisionLayer == 2 && GetTileType(this->unk_84, 1) == 0x310) { + SetTile(0x400b, this->unk_84, 1); + } +} + +void sub_080894C8(PushableStatueEntity* this) { + u32 index; + for (index = 0; index < 8; index++) { + if (gRoomVars.field_0xac[index] == NULL) { + gRoomVars.field_0xac[index] = this; + break; + } + } +} + +void sub_080894FC(PushableStatueEntity* this) { + u32 index; + for (index = 0; index <= 7; index++) { + if (this == (PushableStatueEntity*)gRoomVars.field_0xac[index]) { + gRoomVars.field_0xac[index] = NULL; + break; + } + } + DeleteEntity(super); +} + +void sub_08089538(PushableStatueEntity* this) { + u16 tileType; + this->unk_86 = 0x20; + EnqueueSFX(SFX_10F); + SetTile(this->unk_80, this->unk_84, super->collisionLayer); + if ((super->collisionLayer == 2) && (GetTileType(this->unk_84, 1) == 0x400b)) { + sub_08000152(0x310, this->unk_84, 1); + } + tileType = GetTileType(this->unk_84 + gUnk_080B4488[super->direction >> 3], super->collisionLayer); + if ((tileType == 0x79) || (tileType == 0x77)) { + super->spriteOffsetY = -2; + } +} + +bool32 sub_080895C0(PushableStatueEntity* this) { + Entity* obj; + + LinearMoveUpdate(super); + if ((--this->unk_86 == 0) && (sub_0800442E(super) == 0)) { + super->spriteOffsetY = 0; + if (!sub_080002D0(super)) { + sub_08089454(this); + return TRUE; + } + obj = CreateObject(SPECIAL_FX, 4, 0); + if (obj != NULL) { + CopyPosition(super, obj); + } + super->spriteSettings.draw = 0; + super->x.HALF.HI += gUnk_08120CBC[super->direction >> 2]; + super->y.HALF.HI += gUnk_08120CBC[(super->direction >> 2) + 1]; + sub_08089454(this); + super->action = 4; + super->actionDelay = 0x3c; + } + sub_0800445C(super); + return FALSE; +} + +bool32 sub_0808965C(PushableStatueEntity* this) { + if (gRoomControls.area < 0x40) { + return LoadFixedGFX(super, 0xe9); + } else { + return LoadFixedGFX(super, gUnk_08120CCC[gRoomControls.area - 0x40]); + } +} + +u32 sub_0808968C(u32 param_1) { + const u16* it; + + for (it = gUnk_08120D6C; *it != 0; it += 2) { + if (*it == param_1) { + return it[1]; + } + } + return 0; +} + +ASM_FUNC("asm/non_matching/pushableStatue/sub_080896B0.inc", bool32 sub_080896B0(void)) + +void (*const PushableStatue_Actions[])(PushableStatueEntity*) = { + PushableStatue_Init, PushableStatue_Action1, PushableStatue_Action2, PushableStatue_Action3, PushableStatue_Action4, +}; +void (*const PushableStatue_SubActions[])(PushableStatueEntity*) = { + PushableStatue_SubAction0, + PushableStatue_SubAction1, +}; +const s8 gUnk_08120CB4[] = { + 0, 14, -14, 2, 0, -14, 14, 2, +}; +const u16 gUnk_08120CBC[] = { + 0, 16, 65520, 0, 0, 65520, 16, 0, +}; +const u16 gUnk_08120CCC[] = { + 29, 29, 29, 29, 29, 29, 29, 29, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, + 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, + 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, +}; +const u16 gUnk_08120D6C[] = { + 0x400c, 1, 0x400d, 1, 0x400e, 1, 0x400f, 1, 0x7a, 2, 0x78, 2, 0, +}; diff --git a/src/object/smallIceBlock.c b/src/object/smallIceBlock.c new file mode 100644 index 00000000..63542a02 --- /dev/null +++ b/src/object/smallIceBlock.c @@ -0,0 +1,330 @@ +/** + * @file smallIceBlock.c + * @ingroup Objects + * + * @brief Small Ice Block object + */ + +#define NENT_DEPRECATED +#include "global.h" +#include "object.h" +#include "functions.h" + +typedef struct { + /*0x00*/ Entity base; + /*0x68*/ u8 unk_68[0x4]; + /*0x6c*/ u16 unk_6c; + /*0x6e*/ u8 unk_6e[0x2]; + /*0x70*/ u16 unk_70; + /*0x72*/ u8 unk_72[0x14]; + /*0x86*/ u16 unk_86; +} SmallIceBlockEntity; + +extern const Hitbox gUnk_080FD408; +extern const s16 gUnk_080B4488[]; + +void sub_080996AC(SmallIceBlockEntity*); +void sub_08099468(SmallIceBlockEntity*); +bool32 sub_0809963C(SmallIceBlockEntity*); +u32 sub_08099618(u32); +void sub_080994B8(SmallIceBlockEntity*); +void SmallIceBlock_Action3(SmallIceBlockEntity*); +bool32 sub_0809953C(SmallIceBlockEntity*); +void sub_0809969C(SmallIceBlockEntity*); + +extern void (*const gUnk_08123734[])(SmallIceBlockEntity*); +extern const u16 gUnk_08123748[]; +extern const u16 gUnk_08123750[]; + +void SmallIceBlock(SmallIceBlockEntity* this) { + if (super->type < 3) { + gUnk_08123734[super->action](this); + } else { + sub_080996AC(this); + } +} + +void SmallIceBlock_Init(SmallIceBlockEntity* this) { + Entity* obj; + + switch (super->type) { + case 0: + case 1: + case 2: + if (CheckFlags(this->unk_86)) { + DeleteThisEntity(); + } + } + super->action = 1; + super->flags |= 0x80; + super->updatePriority = 3; + super->field_0x3c = 7; + super->hurtType = 0x48; + super->hitType = 1; + super->flags2 = 0x80; + super->hitbox = (Hitbox*)&gUnk_080FD408; + sub_08099468(this); + InitializeAnimation(super, super->type); + obj = CreateObject(SMALL_ICE_BLOCK, 3, 0); + if (obj != NULL) { + obj->parent = super; + } +} + +void SmallIceBlock_Action1(SmallIceBlockEntity* this) { + u32 tileType; + Entity* obj; + + if (sub_0809963C(this)) { + super->action = 3; + super->actionDelay = 0; + EnqueueSFX(SFX_ICE_BLOCK_MELT); + SmallIceBlock_Action3(this); + if (super->type == 0) { + SetFlag(this->unk_86); + } + } else { + if (!sub_0800442E(super)) { + tileType = GetTileType(this->unk_70, super->collisionLayer); + if (tileType != 0x405a) { + switch (sub_08099618(tileType)) { + case 1: + super->action = 2; + super->actionDelay = 0x16; + super->direction = ((tileType - 0x5b) & 3) << 3; + super->speed = 0x20; + sub_080994B8(this); + break; + case 0: + obj = CreateObject(SPECIAL_FX, 0xd, 0); + if (obj != NULL) { + CopyPosition(super, obj); + } + SetTile(this->unk_6c, this->unk_70, super->collisionLayer); + DeleteEntity(super); + break; + + case 2: + this->unk_6c = (u16)tileType; + break; + } + } + } + } +} + +void SmallIceBlock_Action2(SmallIceBlockEntity* this) { + if (sub_0809953C(this)) { + super->action = 1; + sub_08099468(this); + EnqueueSFX(SFX_ICE_BLOCK_STOP); + } +} + +void SmallIceBlock_Action3(SmallIceBlockEntity* this) { + if (sub_0809963C(this) == 0) { + if (super->actionDelay >= 2) { + super->actionDelay -= 2; + } else { + super->actionDelay = 0; + } + if (super->actionDelay == 0) { + super->action = 1; + sub_0805EC60(super); + return; + } + } else { + super->actionDelay++; + } + sub_0805EC9C(super, 0x100, gUnk_08123748[super->actionDelay >> 5], 0); + if (super->type == 1) { + sub_080A2A3C(super, 0x53, 0, this->unk_86); + SoundReq(SFX_SECRET); + } else if (super->type == 2) { + sub_080A2A3C(super, 0x52, 0, this->unk_86); + SoundReq(SFX_SECRET); + } + super->action = 4; + super->actionDelay = 0x3c; + super->flags &= 0x7f; +} + +void SmallIceBlock_Action4(SmallIceBlockEntity* this) { + Entity* obj; + s32 rand; + s32 x; + s32 y; + + if (--super->actionDelay == 0) { + DeleteThisEntity(); + } else { + if (super->actionDelay == 0x30) { + SetTile(this->unk_6c, this->unk_70, super->collisionLayer); + } + sub_0805EC9C(super, 0x100, (0x3c - super->actionDelay) * 0x20 + 0x100, 0); + if ((super->actionDelay & 1) != 0) { + obj = CreateObject(SPECIAL_FX, 0x11, 0x40); + if (obj != NULL) { + rand = Random(); + x = ((rand >> 0x10) % 9) - 4; + y = rand & 0xf; + obj->spritePriority.b0 = 3; + PositionRelative(super, obj, x * 0x10000, -y * 0x10000); + } + } + } +} + +void sub_08099468(SmallIceBlockEntity* this) { + this->unk_70 = COORD_TO_TILE(super); + this->unk_6c = GetTileIndex(this->unk_70, super->collisionLayer); + SetTile(0x405a, this->unk_70, super->collisionLayer); +} + +void sub_080994B8(SmallIceBlockEntity* this) { + u16 tileType; + + EnqueueSFX(SFX_ICE_BLOCK_SLIDE); + SetTile(this->unk_6c, this->unk_70, super->collisionLayer); + if ((super->collisionLayer == 2) && (GetTileType(this->unk_70, 1) == 0x405a)) { + sub_08000152(0x310, this->unk_70, 1); + } + tileType = GetTileType(this->unk_70 + gUnk_080B4488[super->direction >> 3], super->collisionLayer); + if (tileType == 0x79 || tileType == 0x77) { + super->spriteOffsetY = -2; + } +} + +bool32 sub_0809953C(SmallIceBlockEntity* this) { + u8 bVar1; + u8 uVar2; + u32 uVar3; + u16 uVar4; + + uVar3 = sub_0800442E(super); + if (uVar3 != 0) { + return 0; + } + sub_080AEFE0(super); + sub_0800445C(super); + if (super->actionDelay != 0) { + super->speed += 0x10; + if (--super->actionDelay == 0) { + super->speed = 0x200; + } + } + switch (super->direction >> 3) { + case 0: + if ((super->collisions & 0xe) == 0) { + return 0; + } + if ((u32)(super->y.HALF.HI & 0xf) - 7 < 3) { + super->y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 8; + return 1; + } + sub_0809969C(this); + break; + case 1: + if ((super->collisions & 0xe000) == 0) { + return FALSE; + } + if ((u32)(super->x.HALF.HI & 0xf) - 7 < 3) { + super->x.HALF.HI = (super->x.HALF.HI & 0xfff0) + 8; + return TRUE; + } + sub_0809969C(this); + break; + case 2: + if ((super->collisions & 0xe0) == 0) { + return FALSE; + } + if ((u32)(super->y.HALF.HI & 0xf) - 7 < 3) { + super->y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 8; + return TRUE; + } + sub_0809969C(this); + break; + default: + if ((super->collisions & 0xe00) != 0) { + if ((u32)(super->x.HALF.HI & 0xf) - 7 < 3) { + super->x.HALF.HI = (super->x.HALF.HI & 0xfff0) + 8; + return TRUE; + } + sub_0809969C(this); + } + break; + } + return FALSE; +} + +u32 sub_08099618(u32 param_1) { + const u16* it; + for (it = gUnk_08123750; *it != 0; it += 2) { + if (*it == param_1) { + return it[1]; + } + } + return 0; +} + +bool32 sub_0809963C(SmallIceBlockEntity* this) { + u16* var; + u16 x; + u16 y; + + if (super->type2 != 0) { + var = (u16*)GetCurrentRoomProperty(super->type2); + if (CheckFlags(var[0])) { + x = var[1] + gRoomControls.origin_x; + y = var[2] + gRoomControls.origin_y; + if (var[3] >= (u32)(super->x.HALF.HI - x) && var[4] >= (u32)(super->y.HALF.HI - y)) { + return TRUE; + } + } + } + if (super->bitfield == 0x87) { + return TRUE; + } + return FALSE; +} + +void sub_0809969C(SmallIceBlockEntity* this) { + CreateFx(super, 0xd, 0); + DeleteThisEntity(); +} + +void sub_080996AC(SmallIceBlockEntity* this) { + if ((super->parent)->next == NULL) { + DeleteThisEntity(); + } + if (super->action == 0) { + super->action = 1; + InitializeAnimation(super, 3); + } + if ((super->parent)->action < 3) { + super->spriteSettings.draw = 1; + if ((super->frame & 1) != 0) { + super->frame = 0; + super->frameDuration = (Random() & 0x78) + 0x78; + } + GetNextFrame(super); + CopyPositionAndSpriteOffset(super->parent, super); + super->y.HALF.HI += 1; + super->spriteOffsetY -= 0x11; + } else { + super->spriteSettings.draw = 0; + } +} + +void (*const gUnk_08123734[])(SmallIceBlockEntity*) = { + SmallIceBlock_Init, SmallIceBlock_Action1, SmallIceBlock_Action2, SmallIceBlock_Action3, SmallIceBlock_Action4, +}; +const u16 gUnk_08123748[] = { + 256, + 264, + 271, + 277, +}; +const u16 gUnk_08123750[] = { + 0x405b, 1, 0x405c, 1, 0x405d, 1, 0x405e, 1, 0x7a, 2, 0x78, 2, 0, +};