diff --git a/asm/mazaalBracelet.s b/asm/mazaalBracelet.s deleted file mode 100644 index c3fa21a1..00000000 --- a/asm/mazaalBracelet.s +++ /dev/null @@ -1,3486 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start MazaalBracelet -MazaalBracelet: @ 0x0803A154 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _0803A16C @ =gUnk_080CFC14 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_0803A16C: .4byte gUnk_080CFC14 - - thumb_func_start sub_0803A170 -sub_0803A170: @ 0x0803A170 - push {lr} - ldr r2, _0803A184 @ =gUnk_080CFC2C - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0803A184: .4byte gUnk_080CFC2C - - thumb_func_start sub_0803A188 -sub_0803A188: @ 0x0803A188 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r3, [r4, #0xa] - cmp r3, #1 - bhi _0803A23E - ldrb r0, [r4, #0xc] - cmp r0, #0x2b - beq _0803A210 - adds r0, r4, #0 - adds r0, #0x3d - movs r1, #0 - ldrsb r1, [r0, r1] - adds r5, r0, #0 - cmp r1, #0 - ble _0803A23E - adds r0, #4 - ldrb r0, [r0] - cmp r0, #0x95 - beq _0803A1B2 - cmp r0, #0x8e - bne _0803A23E -_0803A1B2: - movs r0, #0x28 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldr r2, [r4, #0x50] - adds r0, r2, #0 - adds r0, #0x7d - ldrb r1, [r0] - cmp r3, #0 - bne _0803A1CE - movs r0, #1 - b _0803A1D0 -_0803A1CE: - movs r0, #2 -_0803A1D0: - orrs r1, r0 - adds r0, r2, #0 - adds r0, #0x7d - strb r1, [r0] - adds r0, #3 - ldrb r2, [r0] - ldrb r1, [r4, #0xa] - adds r3, r0, #0 - cmp r1, #0 - bne _0803A1E8 - movs r0, #1 - b _0803A1EA -_0803A1E8: - movs r0, #2 -_0803A1EA: - orrs r0, r2 - strb r0, [r3] - ldr r2, [r4, #0x54] - ldrb r1, [r5] - adds r0, r2, #0 - adds r0, #0x3d - strb r1, [r0] - ldr r2, [r4, #0x74] - ldrb r1, [r5] - adds r0, r2, #0 - adds r0, #0x3d - strb r1, [r0] - ldr r0, _0803A20C @ =0x00000127 - bl SoundReq - b _0803A23E - .align 2, 0 -_0803A20C: .4byte 0x00000127 -_0803A210: - ldr r2, [r4, #0x54] - adds r3, r4, #0 - adds r3, #0x3d - ldrb r1, [r3] - adds r0, r2, #0 - adds r0, #0x3d - strb r1, [r0] - ldr r2, [r4, #0x74] - ldrb r1, [r3] - adds r0, r2, #0 - adds r0, #0x3d - strb r1, [r0] - adds r0, r4, #0 - movs r1, #0x18 - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #9 - bl InitAnimationForceUpdate - ldr r0, _0803A248 @ =0x00000127 - bl SoundReq -_0803A23E: - ldr r1, _0803A24C @ =gUnk_080CFC14 - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, r5, pc} - .align 2, 0 -_0803A248: .4byte 0x00000127 -_0803A24C: .4byte gUnk_080CFC14 - - thumb_func_start nullsub_167 -nullsub_167: @ 0x0803A250 - bx lr - .align 2, 0 - - thumb_func_start sub_0803A254 -sub_0803A254: @ 0x0803A254 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0803A270 @ =gUnk_080CFC3C - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0803B538 - pop {r4, pc} - .align 2, 0 -_0803A270: .4byte gUnk_080CFC3C - - thumb_func_start sub_0803A274 -sub_0803A274: @ 0x0803A274 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _0803A2C8 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x44 - bhi _0803A360 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0803A2CC - movs r0, #0x38 - movs r1, #0 - bl CreateEnemy - adds r1, r0, #0 - str r4, [r1, #0x50] - str r1, [r4, #0x54] - movs r0, #0x44 - movs r1, #2 - bl CreateEnemy - adds r1, r0, #0 - str r4, [r1, #0x50] - str r1, [r4, #0x74] - movs r0, #0x7e - movs r1, #1 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - str r4, [r1, #0x50] - ldr r0, [r4, #0x54] - str r0, [r1, #0x54] - ldr r0, [r4, #0x50] - movs r2, #0x80 - lsls r2, r2, #0xd - movs r3, #0x80 - lsls r3, r3, #0xe - adds r1, r4, #0 - bl PositionRelative - b _0803A310 - .align 2, 0 -_0803A2C8: .4byte gEntCount -_0803A2CC: - movs r0, #0x38 - movs r1, #1 - bl CreateEnemy - adds r1, r0, #0 - str r4, [r1, #0x50] - str r1, [r4, #0x54] - movs r0, #0x44 - movs r1, #3 - bl CreateEnemy - adds r1, r0, #0 - str r4, [r1, #0x50] - str r1, [r4, #0x74] - movs r0, #0x7e - movs r1, #2 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - str r4, [r1, #0x50] - ldr r0, [r4, #0x54] - str r0, [r1, #0x54] - ldrb r0, [r4, #0x18] - movs r1, #0x40 - orrs r0, r1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0x50] - ldr r2, _0803A34C @ =0xFFF00000 - movs r3, #0x80 - lsls r3, r3, #0xe - adds r1, r4, #0 - bl PositionRelative -_0803A310: - ldr r0, _0803A350 @ =gScreenTransition - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #0 - beq _0803A354 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldrb r2, [r4, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - adds r0, r1, #0 - ands r0, r2 - movs r3, #1 - orrs r0, r3 - strb r0, [r4, #0x18] - ldr r2, [r4, #0x54] - ldrb r0, [r2, #0x18] - ands r1, r0 - orrs r1, r3 - strb r1, [r2, #0x18] - adds r0, r4, #0 - movs r1, #0x10 - bl InitializeAnimation - b _0803A360 - .align 2, 0 -_0803A34C: .4byte 0xFFF00000 -_0803A350: .4byte gScreenTransition -_0803A354: - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation -_0803A360: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803A364 -sub_0803A364: @ 0x0803A364 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803A3A0 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - ldrb r0, [r4, #0xd] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0xb - bls _0803A394 - b _0803A52C -_0803A394: - lsls r0, r1, #2 - ldr r1, _0803A3A4 @ =_0803A3A8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803A3A0: .4byte gUnk_080CED6C -_0803A3A4: .4byte _0803A3A8 -_0803A3A8: @ jump table - .4byte _0803A546 @ case 0 - .4byte _0803A3D8 @ case 1 - .4byte _0803A546 @ case 2 - .4byte _0803A3FA @ case 3 - .4byte _0803A418 @ case 4 - .4byte _0803A434 @ case 5 - .4byte _0803A44E @ case 6 - .4byte _0803A468 @ case 7 - .4byte _0803A49A @ case 8 - .4byte _0803A4B2 @ case 9 - .4byte _0803A4CC @ case 10 - .4byte _0803A4FA @ case 11 -_0803A3D8: - movs r0, #2 - strb r0, [r4, #0xd] - ldr r2, [r4, #0x54] - ldrb r1, [r2, #0x18] - subs r0, #6 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] - ldrb r1, [r2, #0x19] - movs r0, #0xd - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2, #0x19] - b _0803A546 -_0803A3FA: - movs r0, #4 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x18] - subs r0, #8 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - ldr r2, [r4, #0x54] - ldrb r1, [r2, #0x19] - movs r0, #0xd - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2, #0x19] - b _0803A546 -_0803A418: - 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 - bne _0803A42E - b _0803A546 -_0803A42E: - movs r0, #5 - strb r0, [r4, #0xd] - b _0803A546 -_0803A434: - adds r0, r4, #0 - bl sub_0803B4E4 - cmp r0, #0 - bne _0803A446 - adds r0, r4, #0 - bl sub_0806F69C - b _0803A546 -_0803A446: - movs r0, #0 - strb r0, [r4, #0xb] - movs r0, #6 - b _0803A516 -_0803A44E: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803A546 - movs r0, #7 - strb r0, [r4, #0xd] - adds r0, r4, #0 - movs r1, #5 - bl InitializeAnimation - b _0803A546 -_0803A468: - 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 _0803A546 - movs r0, #8 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x18] - subs r0, #0xc - ands r0, r1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0x54] - movs r1, #8 - bl InitAnimationForceUpdate - movs r0, #0xb7 - lsls r0, r0, #1 - bl SoundReq - b _0803A546 -_0803A49A: - adds r0, r4, #0 - bl sub_0803B55C - ldr r0, [r4, #0x54] - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803A546 - movs r0, #9 - b _0803A516 -_0803A4B2: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803A546 - movs r0, #0xa - strb r0, [r4, #0xd] - ldr r0, [r4, #0x54] - movs r1, #6 - bl InitAnimationForceUpdate - b _0803A546 -_0803A4CC: - adds r0, r4, #0 - bl sub_0803B55C - ldr r0, [r4, #0x54] - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803A546 - movs r0, #0xb - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x18] - subs r0, #0xf - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation - b _0803A546 -_0803A4FA: - 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 _0803A546 - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _0803A51E - movs r0, #0xc -_0803A516: - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - b _0803A546 -_0803A51E: - movs r0, #1 - strb r0, [r4, #0xb] - movs r0, #6 - strb r0, [r4, #0xd] - movs r0, #0xa - strb r0, [r4, #0xe] - b _0803A546 -_0803A52C: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803A546 - ldrb r0, [r4, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - bl sub_0803B4D4 -_0803A546: - pop {r4, pc} - - thumb_func_start sub_0803A548 -sub_0803A548: @ 0x0803A548 - push {r4, lr} - adds r4, r0, #0 - bl sub_0803B5C0 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - ldr r2, _0803A588 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B4E4 - cmp r0, #0 - bne _0803A586 - adds r0, r4, #0 - bl sub_0806F69C -_0803A586: - pop {r4, pc} - .align 2, 0 -_0803A588: .4byte gUnk_080CED6C - - thumb_func_start sub_0803A58C -sub_0803A58C: @ 0x0803A58C - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803A5C4 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B4E4 - cmp r0, #0 - beq _0803A5C8 - adds r0, r4, #0 - bl sub_0803B59C - b _0803A5CE - .align 2, 0 -_0803A5C4: .4byte gUnk_080CED6C -_0803A5C8: - adds r0, r4, #0 - bl sub_0806F69C -_0803A5CE: - pop {r4, pc} - - thumb_func_start sub_0803A5D0 -sub_0803A5D0: @ 0x0803A5D0 - push {lr} - movs r1, #5 - strb r1, [r0, #0xc] - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - ldr r3, _0803A608 @ =gUnk_080CED6C - ldr r1, [r0, #0x50] - ldrb r1, [r1, #0xf] - lsrs r1, r1, #4 - adds r1, #3 - ldrb r2, [r0, #0xa] - lsls r2, r2, #1 - adds r1, r1, r2 - movs r2, #7 - ands r1, r2 - adds r1, r1, r3 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r1, #4 - strh r1, [r0, #0x36] - movs r1, #5 - bl InitializeAnimation - pop {pc} - .align 2, 0 -_0803A608: .4byte gUnk_080CED6C - - thumb_func_start sub_0803A60C -sub_0803A60C: @ 0x0803A60C - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803A65C @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - 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 _0803A658 - movs r0, #6 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0xa - ands r0, r1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0x54] - movs r1, #8 - bl InitAnimationForceUpdate -_0803A658: - pop {r4, pc} - .align 2, 0 -_0803A65C: .4byte gUnk_080CED6C - - thumb_func_start sub_0803A660 -sub_0803A660: @ 0x0803A660 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x54] - adds r5, r0, #0 - adds r5, #0x5a - ldrb r1, [r5] - movs r6, #0x80 - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - beq _0803A6A8 - ldrh r2, [r4, #0x36] - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #0x50 - rsbs r0, r0, #0 - cmp r1, r0 - ble _0803A688 - subs r0, r2, #2 - b _0803A6DC -_0803A688: - movs r1, #0 - movs r0, #7 - strb r0, [r4, #0xc] - strb r1, [r4, #0xe] - ldr r1, _0803A6A4 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - strb r0, [r4, #0x15] - movs r0, #0xa0 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - b _0803A6DE - .align 2, 0 -_0803A6A4: .4byte gPlayerEntity -_0803A6A8: - adds r0, r4, #0 - bl sub_0803B55C - ldrb r1, [r5] - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - beq _0803A6BE - ldr r0, _0803A6E0 @ =0x00000157 - bl SoundReq -_0803A6BE: - ldr r2, _0803A6E4 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 -_0803A6DC: - strh r0, [r4, #0x36] -_0803A6DE: - pop {r4, r5, r6, pc} - .align 2, 0 -_0803A6E0: .4byte 0x00000157 -_0803A6E4: .4byte gUnk_080CED6C - - thumb_func_start sub_0803A6E8 -sub_0803A6E8: @ 0x0803A6E8 - push {r4, lr} - adds r4, r0, #0 - bl sub_0803B610 - cmp r0, #0 - beq _0803A6FE - movs r0, #8 - strb r0, [r4, #0xc] - movs r0, #0xa - strb r0, [r4, #0xe] - b _0803A71E -_0803A6FE: - adds r0, r4, #0 - bl sub_0803B63C - adds r0, r4, #0 - bl sub_0806F69C - ldr r0, [r4, #0x50] - movs r1, #0x32 - ldrsh r0, [r0, r1] - adds r1, r0, #0 - adds r1, #8 - movs r2, #0x32 - ldrsh r0, [r4, r2] - cmp r1, r0 - ble _0803A71E - strh r1, [r4, #0x32] -_0803A71E: - pop {r4, pc} - - thumb_func_start sub_0803A720 -sub_0803A720: @ 0x0803A720 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803A73C - movs r0, #9 - strb r0, [r1, #0xc] - adds r0, r1, #0 - movs r1, #0x16 - bl sub_0803B8E8 -_0803A73C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803A740 -sub_0803A740: @ 0x0803A740 - push {lr} - adds r3, r0, #0 - ldrh r0, [r3, #0x36] - adds r0, #4 - strh r0, [r3, #0x36] - lsls r0, r0, #0x10 - cmp r0, #0 - blt _0803A77E - movs r0, #0 - strh r0, [r3, #0x36] - movs r0, #0xa - strb r0, [r3, #0xc] - strb r0, [r3, #0xe] - ldr r1, [r3, #0x50] - adds r1, #0x7d - ldrb r2, [r1] - movs r0, #0x40 - orrs r0, r2 - strb r0, [r1] - adds r0, r3, #0 - movs r1, #0x13 - bl sub_0803B8E8 - movs r0, #0xa - movs r1, #0 - bl sub_08080964 - movs r0, #0xac - lsls r0, r0, #1 - bl SoundReq -_0803A77E: - pop {pc} - - thumb_func_start sub_0803A780 -sub_0803A780: @ 0x0803A780 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - movs r3, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803A7AA - adds r1, r2, #0 - adds r1, #0x7c - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - ands r0, r3 - cmp r0, #0 - beq _0803A7A6 - movs r0, #6 - b _0803A7A8 -_0803A7A6: - movs r0, #0xb -_0803A7A8: - strb r0, [r2, #0xc] -_0803A7AA: - pop {pc} - - thumb_func_start sub_0803A7AC -sub_0803A7AC: @ 0x0803A7AC - push {lr} - adds r2, r0, #0 - ldrh r3, [r2, #0x36] - movs r0, #0x36 - ldrsh r1, [r2, r0] - movs r0, #6 - rsbs r0, r0, #0 - cmp r1, r0 - ble _0803A7C4 - subs r0, r3, #1 - strh r0, [r2, #0x36] - b _0803A7C8 -_0803A7C4: - movs r0, #0xc - strb r0, [r2, #0xc] -_0803A7C8: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803A7CC -sub_0803A7CC: @ 0x0803A7CC - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803A808 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B4E4 - cmp r0, #0 - beq _0803A80C - movs r0, #0xd - strb r0, [r4, #0xc] - ldr r0, [r4, #0x54] - movs r1, #6 - bl InitAnimationForceUpdate - b _0803A812 - .align 2, 0 -_0803A808: .4byte gUnk_080CED6C -_0803A80C: - adds r0, r4, #0 - bl sub_0806F69C -_0803A812: - pop {r4, pc} - - thumb_func_start sub_0803A814 -sub_0803A814: @ 0x0803A814 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803A868 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B55C - ldr r0, [r4, #0x54] - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803A864 - movs r0, #0xe - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x12 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation -_0803A864: - pop {r4, pc} - .align 2, 0 -_0803A868: .4byte gUnk_080CED6C - - thumb_func_start sub_0803A86C -sub_0803A86C: @ 0x0803A86C - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803A8B4 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - 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 _0803A8B2 - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - bl sub_0803B59C -_0803A8B2: - pop {r4, pc} - .align 2, 0 -_0803A8B4: .4byte gUnk_080CED6C - - thumb_func_start sub_0803A8B8 -sub_0803A8B8: @ 0x0803A8B8 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r0, #0x10 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - strb r1, [r4, #0x15] - movs r0, #0x80 - strh r0, [r4, #0x24] - ldr r2, _0803A904 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - movs r1, #6 - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #1 - bl InitAnimationForceUpdate - ldr r0, _0803A908 @ =0x00000153 - bl SoundReq - pop {r4, pc} - .align 2, 0 -_0803A904: .4byte gUnk_080CED6C -_0803A908: .4byte 0x00000153 - - thumb_func_start sub_0803A90C -sub_0803A90C: @ 0x0803A90C - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803A974 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0803B55C - adds r0, r4, #0 - bl sub_0806F69C - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803A970 - movs r0, #0x11 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xa] - lsls r0, r0, #4 - adds r0, #8 - strb r0, [r4, #0x15] - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #7 - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #2 - bl InitAnimationForceUpdate -_0803A970: - pop {r4, pc} - .align 2, 0 -_0803A974: .4byte gUnk_080CED6C - - thumb_func_start sub_0803A978 -sub_0803A978: @ 0x0803A978 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803A9FC @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0803B55C - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - movs r1, #0xff - ands r0, r1 - movs r1, #3 - ands r0, r1 - cmp r0, #0 - bne _0803A9C2 - adds r0, r4, #0 - movs r1, #0x10 - bl sub_08004596 -_0803A9C2: - adds r0, r4, #0 - bl sub_0806F69C - ldrb r0, [r4, #0x15] - cmp r0, #0x10 - bne _0803A9F8 - movs r0, #0x12 - strb r0, [r4, #0xc] - movs r0, #3 - strb r0, [r4, #0xe] - ldrb r2, [r4, #0x10] - movs r1, #0x7f - adds r0, r1, #0 - ands r0, r2 - strb r0, [r4, #0x10] - ldr r2, [r4, #0x74] - ldrb r0, [r2, #0x10] - ands r1, r0 - strb r1, [r2, #0x10] - adds r0, r4, #0 - movs r1, #8 - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #3 - bl InitAnimationForceUpdate -_0803A9F8: - pop {r4, pc} - .align 2, 0 -_0803A9FC: .4byte gUnk_080CED6C - - thumb_func_start sub_0803AA00 -sub_0803AA00: @ 0x0803AA00 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r2, _0803AA90 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B870 - cmp r0, #0 - bne _0803AA8E - ldrb r1, [r4, #0xa] - movs r0, #1 - eors r0, r1 - lsls r0, r0, #4 - adds r5, r0, #0 - adds r5, #8 - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - movs r1, #0xff - ands r0, r1 - movs r1, #3 - ands r0, r1 - cmp r0, #0 - bne _0803AA54 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_08004596 -_0803AA54: - adds r0, r4, #0 - bl sub_0806F69C - ldrb r0, [r4, #0x15] - cmp r0, r5 - beq _0803AA6E - ldr r0, _0803AA94 @ =gPlayerEntity - movs r2, #0x32 - ldrsh r1, [r4, r2] - movs r2, #0x32 - ldrsh r0, [r0, r2] - cmp r1, r0 - blt _0803AA8E -_0803AA6E: - movs r0, #0x13 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x17 - ands r0, r1 - strb r0, [r4, #0x18] - strb r5, [r4, #0x15] - ldr r0, _0803AA94 @ =gPlayerEntity - ldrh r1, [r0, #0x2e] - adds r0, r4, #0 - adds r0, #0x80 - strh r1, [r0] - ldr r0, [r4, #0x54] - movs r1, #4 - bl InitAnimationForceUpdate -_0803AA8E: - pop {r4, r5, pc} - .align 2, 0 -_0803AA90: .4byte gUnk_080CED6C -_0803AA94: .4byte gPlayerEntity - - thumb_func_start sub_0803AA98 -sub_0803AA98: @ 0x0803AA98 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803AB0C @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B870 - cmp r0, #0 - bne _0803AB0A - adds r0, r4, #0 - bl sub_0806F69C - adds r0, r4, #0 - bl sub_0803B6F4 - cmp r0, #0 - beq _0803AB0A - movs r0, #0x14 - strb r0, [r4, #0xc] - movs r0, #0x40 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #0xa - bl InitializeAnimation - ldr r2, [r4, #0x74] - ldrb r1, [r2, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x10] - ldr r2, [r4, #0x54] - adds r1, r2, #0 - adds r1, #0x3f - movs r0, #0x13 - strb r0, [r1] - adds r0, r2, #0 - movs r1, #5 - bl InitAnimationForceUpdate - movs r0, #0xb7 - lsls r0, r0, #1 - bl SoundReq -_0803AB0A: - pop {r4, pc} - .align 2, 0 -_0803AB0C: .4byte gUnk_080CED6C - - thumb_func_start sub_0803AB10 -sub_0803AB10: @ 0x0803AB10 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803AB58 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0806F69C - adds r0, r4, #0 - bl sub_0803B55C - ldr r0, [r4, #0x54] - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803AB56 - movs r0, #0x15 - strb r0, [r4, #0xc] - movs r0, #0xf - strb r0, [r4, #0xe] -_0803AB56: - pop {r4, pc} - .align 2, 0 -_0803AB58: .4byte gUnk_080CED6C - - thumb_func_start sub_0803AB5C -sub_0803AB5C: @ 0x0803AB5C - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803ABB0 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803ABAC - movs r0, #0x16 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x1a - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #0xb - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #6 - bl InitAnimationForceUpdate -_0803ABAC: - pop {r4, pc} - .align 2, 0 -_0803ABB0: .4byte gUnk_080CED6C - - thumb_func_start sub_0803ABB4 -sub_0803ABB4: @ 0x0803ABB4 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803AC18 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0803B55C - ldr r0, [r4, #0x54] - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803AC14 - movs r0, #0x17 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #0x10 - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #0 - bl InitAnimationForceUpdate -_0803AC14: - pop {r4, pc} - .align 2, 0 -_0803AC18: .4byte gUnk_080CED6C - - thumb_func_start sub_0803AC1C -sub_0803AC1C: @ 0x0803AC1C - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803AC54 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B4E4 - cmp r0, #0 - beq _0803AC58 - adds r0, r4, #0 - bl sub_0803B59C - b _0803AC5E - .align 2, 0 -_0803AC54: .4byte gUnk_080CED6C -_0803AC58: - adds r0, r4, #0 - bl sub_0806F69C -_0803AC5E: - pop {r4, pc} - - thumb_func_start sub_0803AC60 -sub_0803AC60: @ 0x0803AC60 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803ACA8 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _0803ACB4 - adds r0, r4, #0 - bl sub_0803B4E4 - cmp r0, #0 - beq _0803ACAC - movs r0, #0x19 - strb r0, [r4, #0xc] - movs r0, #0 - strb r0, [r4, #0xd] - movs r0, #0x1e - b _0803ACB6 - .align 2, 0 -_0803ACA8: .4byte gUnk_080CED6C -_0803ACAC: - adds r0, r4, #0 - bl sub_0806F69C - b _0803ACB8 -_0803ACB4: - subs r0, #1 -_0803ACB6: - strb r0, [r4, #0xe] -_0803ACB8: - adds r0, r4, #0 - bl sub_0803B824 - pop {r4, pc} - - thumb_func_start sub_0803ACC0 -sub_0803ACC0: @ 0x0803ACC0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - subs r0, #1 - cmp r0, #4 - bhi _0803ACF0 - lsls r0, r0, #2 - ldr r1, _0803ACD8 @ =_0803ACDC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803ACD8: .4byte _0803ACDC -_0803ACDC: @ jump table - .4byte _0803AD02 @ case 0 - .4byte _0803AD1A @ case 1 - .4byte _0803AD4A @ case 2 - .4byte _0803AD5C @ case 3 - .4byte _0803AD74 @ case 4 -_0803ACF0: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803ADA4 - movs r0, #1 - strb r0, [r4, #0xd] - b _0803ADA4 -_0803AD02: - ldrh r0, [r4, #0x36] - subs r0, #1 - strh r0, [r4, #0x36] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x20 - rsbs r1, r1, #0 - cmp r0, r1 - bge _0803ADA4 - movs r0, #2 - strb r0, [r4, #0xd] - b _0803ADA4 -_0803AD1A: - ldrh r0, [r4, #0x36] - adds r0, #4 - strh r0, [r4, #0x36] - lsls r0, r0, #0x10 - cmp r0, #0 - blt _0803ADA4 - movs r0, #0 - strh r0, [r4, #0x36] - movs r0, #0xc - strb r0, [r4, #0xe] - movs r0, #3 - strb r0, [r4, #0xd] - movs r0, #8 - movs r1, #0 - bl sub_08080964 - movs r0, #0xac - lsls r0, r0, #1 - bl SoundReq - adds r0, r4, #0 - bl sub_0803B804 - b _0803ADA4 -_0803AD4A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803ADA4 - movs r0, #4 - strb r0, [r4, #0xd] - b _0803ADA4 -_0803AD5C: - ldrh r0, [r4, #0x36] - subs r0, #2 - strh r0, [r4, #0x36] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x28 - rsbs r1, r1, #0 - cmp r0, r1 - bge _0803ADA4 - movs r0, #5 - strb r0, [r4, #0xd] - b _0803ADA4 -_0803AD74: - ldrh r0, [r4, #0x36] - adds r0, #4 - strh r0, [r4, #0x36] - lsls r0, r0, #0x10 - cmp r0, #0 - blt _0803ADA4 - movs r0, #0 - strh r0, [r4, #0x36] - movs r0, #0x1a - strb r0, [r4, #0xc] - movs r0, #0x3c - strb r0, [r4, #0xe] - movs r0, #0x1e - movs r1, #0 - bl sub_08080964 - movs r0, #0xac - lsls r0, r0, #1 - bl SoundReq - adds r0, r4, #0 - bl sub_0803B804 - b _0803ADAA -_0803ADA4: - adds r0, r4, #0 - bl sub_0803B824 -_0803ADAA: - pop {r4, pc} - - thumb_func_start sub_0803ADAC -sub_0803ADAC: @ 0x0803ADAC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803ADEC - movs r0, #0x16 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x1a - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - ldr r2, [r4, #0x74] - ldrb r0, [r2, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r2, #0x10] - adds r0, r4, #0 - movs r1, #0xb - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #6 - bl InitAnimationForceUpdate - bl sub_0803B798 - b _0803ADF2 -_0803ADEC: - adds r0, r4, #0 - bl sub_0803B824 -_0803ADF2: - pop {r4, pc} - - thumb_func_start sub_0803ADF4 -sub_0803ADF4: @ 0x0803ADF4 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803AE44 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - 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 _0803AE42 - movs r0, #0x1c - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x18] - subs r0, #0x22 - ands r0, r1 - strb r0, [r4, #0x18] -_0803AE42: - pop {r4, pc} - .align 2, 0 -_0803AE44: .4byte gUnk_080CED6C - - thumb_func_start sub_0803AE48 -sub_0803AE48: @ 0x0803AE48 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803AEAC @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0803AE82 - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803AEB0 -_0803AE82: - ldr r0, [r4, #0x50] - adds r0, #0x7d - ldrb r1, [r0] - movs r0, #3 - ands r0, r1 - cmp r0, #0 - beq _0803AEB0 - movs r0, #0x1d - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x21 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation - b _0803AEC0 - .align 2, 0 -_0803AEAC: .4byte gUnk_080CED6C -_0803AEB0: - adds r0, r4, #0 - bl sub_0803B4E4 - cmp r0, #0 - bne _0803AEC0 - adds r0, r4, #0 - bl sub_0806F69C -_0803AEC0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803AEC4 -sub_0803AEC4: @ 0x0803AEC4 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803AF14 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - 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 _0803AF10 - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - bl sub_0803B59C -_0803AF10: - pop {r4, pc} - .align 2, 0 -_0803AF14: .4byte gUnk_080CED6C - - thumb_func_start sub_0803AF18 -sub_0803AF18: @ 0x0803AF18 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x1f - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #5 - bl InitializeAnimation - ldr r2, _0803AF4C @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - pop {r4, pc} - .align 2, 0 -_0803AF4C: .4byte gUnk_080CED6C - - thumb_func_start sub_0803AF50 -sub_0803AF50: @ 0x0803AF50 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803AF7A - movs r0, #0x20 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x24 - ands r0, r1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0x54] - movs r1, #8 - bl InitAnimationForceUpdate -_0803AF7A: - pop {r4, pc} - - thumb_func_start sub_0803AF7C -sub_0803AF7C: @ 0x0803AF7C - push {r4, lr} - adds r4, r0, #0 - bl sub_0803B55C - ldr r0, [r4, #0x54] - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803AF9A - movs r0, #0x21 - strb r0, [r4, #0xc] - movs r0, #0xf - strb r0, [r4, #0xe] -_0803AF9A: - pop {r4, pc} - - thumb_func_start sub_0803AF9C -sub_0803AF9C: @ 0x0803AF9C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - cmp r0, #0 - beq _0803AFAA - subs r0, #1 - b _0803AFC4 -_0803AFAA: - ldrh r3, [r2, #0x36] - movs r0, #0x36 - ldrsh r1, [r2, r0] - movs r0, #0x20 - rsbs r0, r0, #0 - cmp r1, r0 - ble _0803AFBE - subs r0, r3, #2 - strh r0, [r2, #0x36] - b _0803AFC6 -_0803AFBE: - movs r0, #0x22 - strb r0, [r2, #0xc] - movs r0, #0xa -_0803AFC4: - strb r0, [r2, #0xe] -_0803AFC6: - pop {pc} - - thumb_func_start sub_0803AFC8 -sub_0803AFC8: @ 0x0803AFC8 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803AFDC - movs r0, #0x23 - strb r0, [r1, #0xc] -_0803AFDC: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803AFE0 -sub_0803AFE0: @ 0x0803AFE0 - push {lr} - adds r3, r0, #0 - ldrh r1, [r3, #0x36] - movs r2, #0x36 - ldrsh r0, [r3, r2] - cmp r0, #0 - bge _0803AFF4 - adds r0, r1, #4 - strh r0, [r3, #0x36] - b _0803B018 -_0803AFF4: - movs r2, #0 - movs r0, #0x24 - strb r0, [r3, #0xc] - movs r0, #0xf0 - strb r0, [r3, #0xe] - adds r1, r3, #0 - adds r1, #0x84 - movs r0, #3 - strb r0, [r1] - strh r2, [r3, #0x36] - movs r0, #0xa0 - movs r1, #0 - bl sub_08080964 - movs r0, #0xac - lsls r0, r0, #1 - bl SoundReq -_0803B018: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803B01C -sub_0803B01C: @ 0x0803B01C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - subs r1, r0, #1 - strb r1, [r2, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _0803B032 - movs r0, #0x25 - strb r0, [r2, #0xc] - b _0803B048 -_0803B032: - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x46 - bls _0803B048 - movs r0, #0xf - ands r1, r0 - cmp r1, #0 - bne _0803B048 - adds r0, r2, #0 - bl sub_0803B724 -_0803B048: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803B04C -sub_0803B04C: @ 0x0803B04C - push {lr} - adds r2, r0, #0 - ldrh r3, [r2, #0x36] - movs r0, #0x36 - ldrsh r1, [r2, r0] - movs r0, #6 - rsbs r0, r0, #0 - cmp r1, r0 - ble _0803B064 - subs r0, r3, #1 - strh r0, [r2, #0x36] - b _0803B070 -_0803B064: - movs r0, #0x26 - strb r0, [r2, #0xc] - ldr r0, [r2, #0x54] - movs r1, #6 - bl InitAnimationForceUpdate -_0803B070: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803B074 -sub_0803B074: @ 0x0803B074 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803B0D0 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B55C - ldr r0, [r4, #0x54] - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803B0CC - movs r0, #0x27 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x2b - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #0 - bl InitAnimationForceUpdate -_0803B0CC: - pop {r4, pc} - .align 2, 0 -_0803B0D0: .4byte gUnk_080CED6C - - thumb_func_start sub_0803B0D4 -sub_0803B0D4: @ 0x0803B0D4 - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - 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 _0803B0FE - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - bl sub_0803B59C -_0803B0FE: - pop {r4, pc} - - thumb_func_start sub_0803B100 -sub_0803B100: @ 0x0803B100 - push {lr} - adds r2, r0, #0 - movs r0, #0x29 - strb r0, [r2, #0xc] - movs r0, #0xa0 - lsls r0, r0, #9 - str r0, [r2, #0x20] - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _0803B11C - ldr r0, _0803B118 @ =gUnk_080FD364 - b _0803B11E - .align 2, 0 -_0803B118: .4byte gUnk_080FD364 -_0803B11C: - ldr r0, _0803B13C @ =gUnk_080FD374 -_0803B11E: - str r0, [r2, #0x48] - ldr r0, [r2, #0x74] - movs r1, #3 - strb r1, [r0, #0xc] - adds r0, #0x74 - movs r1, #0x20 - strb r1, [r0] - ldr r0, [r2, #0x54] - movs r1, #9 - bl InitAnimationForceUpdate - ldr r0, _0803B140 @ =0x0000014F - bl SoundReq - pop {pc} - .align 2, 0 -_0803B13C: .4byte gUnk_080FD374 -_0803B140: .4byte 0x0000014F - - thumb_func_start sub_0803B144 -sub_0803B144: @ 0x0803B144 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x54] - bl UpdateAnimationSingleFrame - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _0803B178 - movs r0, #0x2a - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x16 - bl InitializeAnimation - adds r0, r4, #0 - movs r1, #0x14 - bl sub_0803B8E8 - movs r0, #8 - movs r1, #0 - bl sub_08080964 -_0803B178: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803B17C -sub_0803B17C: @ 0x0803B17C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803B1B4 - movs r0, #0x2b - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x18 - strb r0, [r1] - adds r1, #6 - movs r0, #0xff - strb r0, [r1] - adds r1, #0x39 - movs r0, #0x96 - lsls r0, r0, #2 - strh r0, [r1] -_0803B1B4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803B1B8 -sub_0803B1B8: @ 0x0803B1B8 - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0803B1D4 - adds r0, r5, #0 - bl GetNextFrame - ldr r0, [r5, #0x54] - bl UpdateAnimationSingleFrame -_0803B1D4: - adds r0, r5, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0xf4 - bhi _0803B2B8 - movs r0, #0x32 - strb r0, [r5, #0xc] - adds r1, r5, #0 - adds r1, #0x7e - ldr r0, _0803B284 @ =0x000005DC - strh r0, [r1] - ldrb r1, [r5, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r5, #0x18] - adds r1, r5, #0 - adds r1, #0x3f - movs r0, #0x14 - strb r0, [r1] - adds r0, r5, #0 - movs r1, #0x51 - movs r2, #0 - bl CreateFx - adds r4, r0, #0 - cmp r4, #0 - beq _0803B23A - ldr r0, [r5, #0x48] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r4, #0x2e] - adds r0, r0, r1 - strh r0, [r4, #0x2e] - ldr r0, [r5, #0x48] - ldrb r0, [r0, #1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r2] -_0803B23A: - movs r0, #0 - movs r1, #0x5e - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _0803B268 - movs r0, #0 - strb r0, [r4, #0xe] - movs r0, #0x90 - strb r0, [r4, #0x15] - ldr r0, [r5, #0x48] - 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 - adds r1, r4, #0 - bl PositionRelative -_0803B268: - ldr r4, [r5, #0x74] - adds r1, r4, #0 - adds r1, #0x74 - movs r0, #0x40 - strb r0, [r1] - ldr r4, [r5, #0x50] - adds r0, r4, #0 - adds r0, #0x80 - ldrb r1, [r0] - ldrb r0, [r5, #0xa] - cmp r0, #0 - bne _0803B288 - movs r0, #4 - b _0803B28A - .align 2, 0 -_0803B284: .4byte 0x000005DC -_0803B288: - movs r0, #8 -_0803B28A: - orrs r1, r0 - adds r0, r4, #0 - adds r0, #0x80 - strb r1, [r0] - movs r0, #0xc - ands r0, r1 - cmp r0, #0xc - bne _0803B2CE - movs r0, #0xb - strb r0, [r4, #0xc] - movs r0, #0x78 - strb r0, [r4, #0xe] - movs r0, #0 - str r0, [r4, #0x20] - ldr r0, [r4, #0x74] - adds r0, #0x7e - movs r1, #0xe1 - lsls r1, r1, #3 - strh r1, [r0] - ldr r0, [r4, #0x78] - adds r0, #0x7e - strh r1, [r0] - b _0803B2CE -_0803B2B8: - adds r1, r5, #0 - adds r1, #0x7e - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0803B2CE - adds r0, r5, #0 - bl sub_0803B6A4 -_0803B2CE: - pop {r4, r5, pc} - - thumb_func_start sub_0803B2D0 -sub_0803B2D0: @ 0x0803B2D0 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803B30A - movs r2, #0 - movs r0, #0x2d - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x31 - ands r0, r1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0x74] - movs r1, #2 - strb r1, [r0, #0xc] - adds r1, r0, #0 - adds r1, #0x74 - strb r2, [r1] - adds r1, #4 - strh r2, [r1] - movs r1, #3 - bl InitializeAnimation -_0803B30A: - pop {r4, pc} - - thumb_func_start sub_0803B30C -sub_0803B30C: @ 0x0803B30C - push {r4, lr} - adds r2, r0, #0 - ldr r4, [r2, #0x74] - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803B334 - movs r0, #0x2e - strb r0, [r2, #0xc] - adds r0, r2, #0 - movs r1, #0x13 - bl sub_0803B8E8 - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_0803B334: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803B338 -sub_0803B338: @ 0x0803B338 - push {lr} - adds r2, r0, #0 - ldrh r3, [r2, #0x36] - movs r0, #0x36 - ldrsh r1, [r2, r0] - movs r0, #0xa - rsbs r0, r0, #0 - cmp r1, r0 - ble _0803B350 - subs r0, r3, #1 - strh r0, [r2, #0x36] - b _0803B358 -_0803B350: - movs r0, #0x2f - strb r0, [r2, #0xc] - movs r0, #0xf - strb r0, [r2, #0xe] -_0803B358: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803B35C -sub_0803B35C: @ 0x0803B35C - push {lr} - adds r3, r0, #0 - ldr r2, _0803B394 @ =gUnk_080CED6C - ldr r0, [r3, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r3, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r3, #0x36] - ldrb r0, [r3, #0xe] - subs r0, #1 - strb r0, [r3, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803B390 - movs r0, #0x30 - strb r0, [r3, #0xc] -_0803B390: - pop {pc} - .align 2, 0 -_0803B394: .4byte gUnk_080CED6C - - thumb_func_start sub_0803B398 -sub_0803B398: @ 0x0803B398 - push {r4, lr} - adds r4, r0, #0 - ldr r2, _0803B3E8 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - adds r0, r4, #0 - bl sub_0803B4E4 - cmp r0, #0 - beq _0803B3EC - movs r0, #0x31 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0x35 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation - ldr r0, [r4, #0x54] - movs r1, #0 - bl InitAnimationForceUpdate - b _0803B3F2 - .align 2, 0 -_0803B3E8: .4byte gUnk_080CED6C -_0803B3EC: - adds r0, r4, #0 - bl sub_0806F69C -_0803B3F2: - pop {r4, pc} - - thumb_func_start sub_0803B3F4 -sub_0803B3F4: @ 0x0803B3F4 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r2, _0803B440 @ =gUnk_080CED6C - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xf] - lsrs r0, r0, #4 - adds r0, #3 - ldrb r1, [r4, #0xa] - lsls r1, r1, #1 - adds r0, r0, r1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #4 - strh r0, [r4, #0x36] - 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 _0803B47C - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x17 - strb r0, [r1] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0803B448 - ldr r0, _0803B444 @ =gUnk_080FD35C - b _0803B44A - .align 2, 0 -_0803B440: .4byte gUnk_080CED6C -_0803B444: .4byte gUnk_080FD35C -_0803B448: - ldr r0, _0803B468 @ =gUnk_080FD36C -_0803B44A: - str r0, [r4, #0x48] - ldr r0, [r4, #0x50] - ldrb r2, [r4, #0xa] - movs r1, #2 - cmp r2, #0 - bne _0803B458 - movs r1, #1 -_0803B458: - adds r0, #0x80 - ldrb r3, [r0] - adds r5, r0, #0 - cmp r2, #0 - bne _0803B46C - movs r0, #0x10 - b _0803B46E - .align 2, 0 -_0803B468: .4byte gUnk_080FD36C -_0803B46C: - movs r0, #0x20 -_0803B46E: - orrs r1, r0 - adds r0, r3, #0 - bics r0, r1 - strb r0, [r5] - adds r0, r4, #0 - bl sub_0803B59C -_0803B47C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0803B480 -sub_0803B480: @ 0x0803B480 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x7e - ldrh r1, [r0] - movs r0, #0x1f - ands r0, r1 - cmp r0, #0 - bne _0803B4B6 - movs r0, #0x2d - movs r1, #1 - movs r2, #0 - bl CreateObject - adds r3, r0, #0 - cmp r3, #0 - beq _0803B4B6 - ldr r0, _0803B4D0 @ =gUnk_080CFD08 - ldrb r1, [r4, #0xa] - adds r1, r1, r0 - movs r2, #0 - ldrsb r2, [r1, r2] - lsls r2, r2, #0x10 - adds r0, r4, #0 - adds r1, r3, #0 - movs r3, #0 - bl PositionRelative -_0803B4B6: - adds r1, r4, #0 - adds r1, #0x7e - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0803B4CC - adds r0, r4, #0 - bl sub_0803B6A4 -_0803B4CC: - pop {r4, pc} - .align 2, 0 -_0803B4D0: .4byte gUnk_080CFD08 - - thumb_func_start sub_0803B4D4 -sub_0803B4D4: @ 0x0803B4D4 - push {lr} - movs r1, #3 - strb r1, [r0, #0xc] - movs r1, #0x10 - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803B4E4 -sub_0803B4E4: @ 0x0803B4E4 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r2, [r4, #0x50] - movs r0, #0x2e - ldrsh r3, [r2, r0] - ldr r1, _0803B52C @ =gUnk_080CFD0A - ldrb r0, [r4, #0xa] - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r5, r3, r0 - movs r1, #0x32 - ldrsh r0, [r2, r1] - adds r6, r0, #0 - adds r6, #0x10 - adds r0, r4, #0 - adds r1, r5, #0 - adds r2, r6, #0 - movs r3, #2 - bl sub_0806FCB8 - cmp r0, #0 - bne _0803B530 - movs r2, #0x2e - ldrsh r0, [r4, r2] - movs r2, #0x32 - ldrsh r1, [r4, r2] - adds r2, r5, #0 - adds r3, r6, #0 - bl sub_080045D4 - strb r0, [r4, #0x15] - movs r0, #0 - b _0803B536 - .align 2, 0 -_0803B52C: .4byte gUnk_080CFD0A -_0803B530: - strh r5, [r4, #0x2e] - strh r6, [r4, #0x32] - movs r0, #1 -_0803B536: - pop {r4, r5, r6, pc} - - thumb_func_start sub_0803B538 -sub_0803B538: @ 0x0803B538 - push {r4, lr} - adds r4, r0, #0 - ldr r1, [r4, #0x54] - ldr r3, _0803B554 @ =0xFFFF0000 - movs r2, #0 - bl PositionRelative - ldr r1, [r4, #0x74] - ldr r3, _0803B558 @ =0xFFFE0000 - adds r0, r4, #0 - movs r2, #0 - bl PositionRelative - pop {r4, pc} - .align 2, 0 -_0803B554: .4byte 0xFFFF0000 -_0803B558: .4byte 0xFFFE0000 - - thumb_func_start sub_0803B55C -sub_0803B55C: @ 0x0803B55C - push {r4, r5, lr} - ldr r5, [r0, #0x74] - ldr r4, [r0, #0x54] - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _0803B588 - adds r0, r5, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #1 - beq _0803B59A - adds r0, r5, #0 - movs r1, #1 - bl InitializeAnimation - b _0803B59A -_0803B588: - adds r0, r5, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0 - beq _0803B59A - adds r0, r5, #0 - movs r1, #0 - bl InitializeAnimation -_0803B59A: - pop {r4, r5, pc} - - thumb_func_start sub_0803B59C -sub_0803B59C: @ 0x0803B59C - push {lr} - movs r3, #2 - strb r3, [r0, #0xc] - ldr r2, [r0, #0x50] - adds r1, r2, #0 - adds r1, #0x7d - ldrb r1, [r1] - ldrb r0, [r0, #0xa] - cmp r0, #0 - bne _0803B5B6 - movs r0, #1 - orrs r1, r0 - b _0803B5B8 -_0803B5B6: - orrs r1, r3 -_0803B5B8: - adds r0, r2, #0 - adds r0, #0x7d - strb r1, [r0] - pop {pc} - - thumb_func_start sub_0803B5C0 -sub_0803B5C0: @ 0x0803B5C0 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0803B5E8 @ =gPlayerEntity - bl GetFacingDirection - adds r2, r0, #0 - cmp r2, #9 - bhi _0803B5D2 - movs r2, #0xa -_0803B5D2: - cmp r2, #0x16 - bls _0803B5D8 - movs r2, #0x16 -_0803B5D8: - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0803B5F0 - ldr r1, _0803B5EC @ =gUnk_080CFD0C - adds r0, r2, #0 - subs r0, #0xa - b _0803B5F6 - .align 2, 0 -_0803B5E8: .4byte gPlayerEntity -_0803B5EC: .4byte gUnk_080CFD0C -_0803B5F0: - ldr r1, _0803B60C @ =gUnk_080CFD0C - movs r0, #0x16 - subs r0, r0, r2 -_0803B5F6: - adds r0, r0, r1 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, r1 - beq _0803B60A - adds r0, r4, #0 - bl InitializeAnimation -_0803B60A: - pop {r4, pc} - .align 2, 0 -_0803B60C: .4byte gUnk_080CFD0C - - thumb_func_start sub_0803B610 -sub_0803B610: @ 0x0803B610 - push {r4, lr} - ldr r4, _0803B634 @ =gPlayerEntity - movs r2, #0x2e - ldrsh r1, [r4, r2] - ldr r3, _0803B638 @ =gUnk_080CFD19 - ldrb r2, [r0, #0xa] - adds r2, r2, r3 - ldrb r2, [r2] - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - adds r1, r1, r2 - movs r3, #0x32 - ldrsh r2, [r4, r3] - subs r2, #0xc - movs r3, #8 - bl sub_0806FCB8 - pop {r4, pc} - .align 2, 0 -_0803B634: .4byte gPlayerEntity -_0803B638: .4byte gUnk_080CFD19 - - thumb_func_start sub_0803B63C -sub_0803B63C: @ 0x0803B63C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r2, _0803B680 @ =gPlayerEntity - movs r0, #0x2e - ldrsh r3, [r2, r0] - ldr r1, _0803B684 @ =gUnk_080CFD19 - ldrb r0, [r4, #0xa] - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r3, r3, r0 - movs r1, #0x32 - ldrsh r0, [r2, r1] - adds r5, r0, #0 - subs r5, #0xc - ldrb r0, [r4, #0xe] - adds r1, r0, #1 - strb r1, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xb4 - bls _0803B688 - movs r2, #0x2e - ldrsh r0, [r4, r2] - movs r2, #0x32 - ldrsh r1, [r4, r2] - adds r2, r3, #0 - adds r3, r5, #0 - bl sub_080045D4 - strb r0, [r4, #0x15] - b _0803B6A0 - .align 2, 0 -_0803B680: .4byte gPlayerEntity -_0803B684: .4byte gUnk_080CFD19 -_0803B688: - movs r1, #0x2e - ldrsh r0, [r4, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - adds r2, r3, #0 - adds r3, r5, #0 - bl sub_080045D4 - - thumb_func_start sub_0803B698 -sub_0803B698: @ 0x0803B698 - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 -_0803B6A0: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0803B6A4 -sub_0803B6A4: @ 0x0803B6A4 - push {r4, lr} - adds r2, r0, #0 - movs r0, #0x2c - strb r0, [r2, #0xc] - adds r1, r2, #0 - adds r1, #0x3f - movs r0, #0x14 - strb r0, [r1] - ldr r3, [r2, #0x50] - adds r0, r3, #0 - adds r0, #0x80 - ldrb r1, [r0] - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _0803B6C6 - movs r0, #0x10 - b _0803B6C8 -_0803B6C6: - movs r0, #0x20 -_0803B6C8: - orrs r1, r0 - adds r0, r3, #0 - adds r0, #0x80 - strb r1, [r0] - ldrb r3, [r0] - ldrb r1, [r2, #0xa] - adds r4, r0, #0 - cmp r1, #0 - bne _0803B6E0 - movs r0, #5 - rsbs r0, r0, #0 - b _0803B6E4 -_0803B6E0: - movs r0, #9 - rsbs r0, r0, #0 -_0803B6E4: - ands r0, r3 - strb r0, [r4] - adds r0, r2, #0 - movs r1, #0x17 - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803B6F4 -sub_0803B6F4: @ 0x0803B6F4 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _0803B710 - adds r0, r2, #0 - adds r0, #0x80 - ldrh r1, [r0] - movs r3, #0x2e - ldrsh r0, [r2, r3] - cmp r1, r0 - ble _0803B71E -_0803B70C: - movs r0, #1 - b _0803B720 -_0803B710: - adds r0, r2, #0 - adds r0, #0x80 - ldrh r1, [r0] - movs r3, #0x2e - ldrsh r0, [r2, r3] - cmp r1, r0 - blt _0803B70C -_0803B71E: - movs r0, #0 -_0803B720: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803B724 -sub_0803B724: @ 0x0803B724 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xf] - cmp r0, #2 - bhi _0803B78E - adds r6, r5, #0 - adds r6, #0x84 - ldrb r0, [r6] - cmp r0, #0 - beq _0803B78E - movs r0, #7 - movs r1, #1 - bl CreateEnemy - adds r4, r0, #0 - cmp r4, #0 - beq _0803B78E - movs r0, #1 - strb r0, [r4, #0xb] - bl Random - ldr r2, _0803B790 @ =gUnk_080CFD1B - ldrb r1, [r5, #0xa] - adds r1, r1, r2 - movs r3, #0x70 - adds r2, r0, #0 - ands r2, r3 - ldrb r1, [r1] - adds r2, r2, r1 - ldr r3, _0803B794 @ =gRoomControls - ldrh r1, [r3, #6] - adds r1, r1, r2 - strh r1, [r4, #0x2e] - lsrs r0, r0, #0x10 - movs r1, #7 - ands r0, r1 - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #1 - adds r1, #0x5c - ldrh r3, [r3, #8] - adds r1, r1, r3 - strh r1, [r4, #0x32] - str r5, [r4, #0x50] - adds r0, r4, #0 - bl sub_08016A30 - ldrb r0, [r5, #0xf] - adds r0, #1 - strb r0, [r5, #0xf] - ldrb r0, [r6] - subs r0, #1 - strb r0, [r6] -_0803B78E: - pop {r4, r5, r6, pc} - .align 2, 0 -_0803B790: .4byte gUnk_080CFD1B -_0803B794: .4byte gRoomControls - - thumb_func_start sub_0803B798 -sub_0803B798: @ 0x0803B798 - ldr r2, _0803B7F4 @ =gPlayerState - movs r1, #0 - movs r0, #0x41 - strb r0, [r2, #2] - strb r1, [r2, #0xa] - ldr r0, [r2, #0x30] - ldr r1, _0803B7F8 @ =0x0000FFEF - ands r0, r1 - str r0, [r2, #0x30] - ldr r3, _0803B7FC @ =gPlayerEntity - ldrb r1, [r3, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r3, #0x10] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r3, #0x20] - movs r2, #0 - ldr r0, _0803B800 @ =0x0000FFF6 - strh r0, [r3, #0x36] - movs r0, #0x10 - strb r0, [r3, #0x15] - movs r0, #4 - strb r0, [r3, #0x14] - movs r0, #0x29 - adds r0, r0, r3 - mov ip, r0 - ldrb r1, [r0] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - mov r1, ip - strb r0, [r1] - adds r0, r3, #0 - adds r0, #0x63 - strb r2, [r0] - movs r0, #0xa0 - lsls r0, r0, #1 - strh r0, [r3, #0x24] - adds r1, r3, #0 - adds r1, #0x3d - movs r0, #0xe2 - strb r0, [r1] - bx lr - .align 2, 0 -_0803B7F4: .4byte gPlayerState -_0803B7F8: .4byte 0x0000FFEF -_0803B7FC: .4byte gPlayerEntity -_0803B800: .4byte 0x0000FFF6 - - thumb_func_start sub_0803B804 -sub_0803B804: @ 0x0803B804 - push {r4, lr} - ldr r4, _0803B820 @ =gPlayerEntity - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0x1e - strb r0, [r1] - subs r0, #0x22 - bl ModHealth - adds r0, r4, #0 - movs r1, #0x7a - bl sub_0800449C - pop {r4, pc} - .align 2, 0 -_0803B820: .4byte gPlayerEntity - - thumb_func_start sub_0803B824 -sub_0803B824: @ 0x0803B824 - push {r4, r5, lr} - adds r5, r0, #0 - bl ResetPlayer - ldr r2, _0803B864 @ =gPlayerState - ldrb r1, [r2, #0x1a] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x1a] - ldr r4, _0803B868 @ =gPlayerEntity - ldr r1, _0803B86C @ =gUnk_080CFD1D - ldrb r0, [r5, #0xa] - adds r0, r0, r1 - movs r2, #0 - ldrsb r2, [r0, r2] - adds r0, r5, #0 - adds r1, r4, #0 - movs r3, #1 - bl sub_0806FA90 - adds r1, r4, #0 - adds r1, #0x63 - movs r0, #0xfa - strb r0, [r1] - adds r4, #0x29 - ldrb r1, [r4] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4] - pop {r4, r5, pc} - .align 2, 0 -_0803B864: .4byte gPlayerState -_0803B868: .4byte gPlayerEntity -_0803B86C: .4byte gUnk_080CFD1D - - thumb_func_start sub_0803B870 -sub_0803B870: @ 0x0803B870 - push {r4, lr} - adds r3, r0, #0 - ldr r4, [r3, #0x54] - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803B8DC - ldr r0, _0803B8D4 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x10 - ands r0, r1 - cmp r0, #0 - beq _0803B8DC - movs r0, #0x18 - strb r0, [r3, #0xc] - movs r0, #0x44 - strb r0, [r3, #0xe] - ldrb r1, [r3, #0x18] - subs r0, #0x48 - ands r0, r1 - strb r0, [r3, #0x18] - ldr r1, _0803B8D8 @ =gPlayerEntity - ldrb r2, [r1, #0x10] - movs r0, #0x7f - ands r0, r2 - strb r0, [r1, #0x10] - adds r1, #0x3d - movs r0, #0xf0 - strb r0, [r1] - adds r0, r3, #0 - bl sub_0803B824 - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x13 - strb r0, [r1] - adds r0, r4, #0 - movs r1, #7 - bl InitAnimationForceUpdate - movs r0, #0xb7 - lsls r0, r0, #1 - bl SoundReq - movs r0, #1 - b _0803B8E6 - .align 2, 0 -_0803B8D4: .4byte gPlayerState -_0803B8D8: .4byte gPlayerEntity -_0803B8DC: - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x15 - strb r0, [r1] - movs r0, #0 -_0803B8E6: - pop {r4, pc} - - thumb_func_start sub_0803B8E8 -sub_0803B8E8: @ 0x0803B8E8 - ldr r2, [r0, #0x54] - adds r2, #0x3f - strb r1, [r2] - ldr r2, [r0, #0x74] - adds r0, r2, #0 - adds r0, #0x3f - strb r1, [r0] - bx lr - - thumb_func_start sub_0803B8F8 -sub_0803B8F8: @ 0x0803B8F8 - push {lr} - ldr r2, _0803B90C @ =gUnk_080CFD20 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0803B90C: .4byte gUnk_080CFD20 - - thumb_func_start sub_0803B910 -sub_0803B910: @ 0x0803B910 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _0803B940 @ =gScreenTransition - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #0 - beq _0803B944 - movs r2, #0 - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #6 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - adds r0, #0x74 - strb r2, [r0] - adds r0, r4, #0 - movs r1, #0xa - bl sub_0803BA8C - b _0803B950 - .align 2, 0 -_0803B940: .4byte gScreenTransition -_0803B944: - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x74 - movs r0, #0x80 - strb r0, [r1] -_0803B950: - ldrb r1, [r4, #0xa] - subs r1, #2 - movs r0, #1 - ands r1, r0 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPositionAndSpriteOffset - pop {r4, pc} - - thumb_func_start sub_0803B978 -sub_0803B978: @ 0x0803B978 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #5 - bhi _0803BA34 - lsls r0, r0, #2 - ldr r1, _0803B98C @ =_0803B990 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803B98C: .4byte _0803B990 -_0803B990: @ jump table - .4byte _0803BA66 @ case 0 - .4byte _0803B9A8 @ case 1 - .4byte _0803B9C0 @ case 2 - .4byte _0803BA46 @ case 3 - .4byte _0803BA14 @ case 4 - .4byte _0803BA40 @ case 5 -_0803B9A8: - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xd] - strb r0, [r4, #0xe] - movs r0, #0x1e - strb r0, [r4, #0xf] - adds r0, r4, #0 - adds r0, #0x74 - strb r1, [r0] - ldr r0, _0803BA10 @ =0x000001A9 - bl SoundReq -_0803B9C0: - ldrb r1, [r4, #0xf] - adds r0, r4, #0 - bl sub_0803BA8C - adds r0, r4, #0 - adds r0, #0x75 - adds r5, r4, #0 - adds r5, #0x74 - ldrb r1, [r0] - ldrb r0, [r5] - orrs r0, r1 - cmp r0, #0 - bne _0803B9E0 - ldr r0, _0803BA10 @ =0x000001A9 - bl SoundReq -_0803B9E0: - ldrb r0, [r5] - cmp r0, #0 - bne _0803BA66 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803BA66 - movs r0, #2 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xf] - subs r0, #4 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xa - bne _0803BA66 - ldr r0, [r4, #0x50] - ldr r1, [r0, #0x50] - movs r0, #3 - strb r0, [r1, #0xd] - strb r0, [r4, #0xd] - b _0803BA66 - .align 2, 0 -_0803BA10: .4byte 0x000001A9 -_0803BA14: - movs r0, #5 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x18] - subs r0, #9 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x19] - movs r0, #0xd - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r4, #0x19] - b _0803BA46 -_0803BA34: - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x19] - subs r0, #0xf - ands r0, r1 - strb r0, [r4, #0x19] -_0803BA40: - adds r0, r4, #0 - bl GetNextFrame -_0803BA46: - adds r0, r4, #0 - movs r1, #0x10 - bl sub_0803BA8C - adds r1, r4, #0 - adds r1, #0x75 - adds r0, r4, #0 - adds r0, #0x74 - ldrb r1, [r1] - ldrb r0, [r0] - orrs r0, r1 - cmp r0, #0 - bne _0803BA66 - ldr r0, _0803BA68 @ =0x000001A9 - bl SoundReq -_0803BA66: - pop {r4, r5, pc} - .align 2, 0 -_0803BA68: .4byte 0x000001A9 - - thumb_func_start sub_0803BA6C -sub_0803BA6C: @ 0x0803BA6C - push {r4, lr} - adds r4, r0, #0 - movs r1, #0xa - bl sub_0803BA8C - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803BA80 -sub_0803BA80: @ 0x0803BA80 - push {lr} - movs r1, #0xa - bl sub_0803BA8C - pop {pc} - .align 2, 0 - - thumb_func_start sub_0803BA8C -sub_0803BA8C: @ 0x0803BA8C - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r5, r1, #0 - movs r1, #0 - adds r4, r6, #0 - adds r4, #0x74 - ldrb r3, [r4] - movs r2, #0xe0 - ands r2, r3 - cmp r2, #0 - bne _0803BAEC - cmp r3, #0 - bne _0803BAD2 - adds r2, r6, #0 - adds r2, #0x75 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #9 - bls _0803BABA - strb r1, [r2] -_0803BABA: - ldrb r0, [r6, #0xa] - cmp r0, #2 - bne _0803BAC8 - ldr r1, _0803BAC4 @ =gUnk_080CFD30 - b _0803BACA - .align 2, 0 -_0803BAC4: .4byte gUnk_080CFD30 -_0803BAC8: - ldr r1, _0803BAE8 @ =gUnk_080CFD44 -_0803BACA: - ldrb r0, [r2] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] -_0803BAD2: - adds r2, r6, #0 - adds r2, #0x74 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - cmp r5, r0 - bhi _0803BB18 - movs r0, #0 - strb r0, [r2] - b _0803BB18 - .align 2, 0 -_0803BAE8: .4byte gUnk_080CFD44 -_0803BAEC: - movs r0, #0x80 - ands r0, r2 - cmp r0, #0 - bne _0803BB18 - movs r0, #0x80 - orrs r0, r3 - strb r0, [r4] - movs r0, #0x20 - ands r2, r0 - cmp r2, #0 - beq _0803BB0C - ldr r1, _0803BB08 @ =gUnk_080CFD58 - b _0803BB0E - .align 2, 0 -_0803BB08: .4byte gUnk_080CFD58 -_0803BB0C: - ldr r1, _0803BB78 @ =gUnk_080CFD5C -_0803BB0E: - ldrb r0, [r6, #0xa] - subs r0, #2 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] -_0803BB18: - cmp r1, #0 - beq _0803BB74 - adds r0, r6, #0 - bl sub_0801D2B4 - ldr r0, [r6, #0x50] - ldr r4, [r0, #0x78] - ldrb r1, [r6, #0x1a] - lsls r1, r1, #0x1c - lsrs r1, r1, #0x1c - ldrb r2, [r4, #0x1a] - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r3, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1a] - ldr r0, [r6, #0x50] - ldr r5, [r0, #0x78] - ldrb r1, [r6, #0x1a] - lsls r1, r1, #0x1c - lsrs r1, r1, #0x18 - ldrb r4, [r5, #0x1a] - movs r2, #0xf - adds r0, r2, #0 - ands r0, r4 - orrs r0, r1 - strb r0, [r5, #0x1a] - ldr r0, [r6, #0x50] - ldr r4, [r0, #0x54] - ldrb r0, [r6, #0x1a] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - ldrb r1, [r4, #0x1a] - ands r3, r1 - orrs r3, r0 - strb r3, [r4, #0x1a] - ldr r0, [r6, #0x50] - ldr r3, [r0, #0x54] - ldrb r0, [r6, #0x1a] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x18 - ldrb r1, [r3, #0x1a] - ands r2, r1 - orrs r2, r0 - strb r2, [r3, #0x1a] -_0803BB74: - pop {r4, r5, r6, pc} - .align 2, 0 -_0803BB78: .4byte gUnk_080CFD5C diff --git a/asm/mazaalHand.s b/asm/mazaalHand.s deleted file mode 100644 index ec9b8e89..00000000 --- a/asm/mazaalHand.s +++ /dev/null @@ -1,57 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start MazaalHand -MazaalHand: @ 0x08035164 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0803518C - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0xa] - ands r1, r2 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - subs r0, #0x42 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #0 - bl InitAnimationForceUpdate -_0803518C: - adds r0, r4, #0 - bl sub_08035194 - pop {r4, pc} - - thumb_func_start sub_08035194 -sub_08035194: @ 0x08035194 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _080351A8 - ldr r0, _080351A4 @ =gUnk_080CEF34 - b _080351AA - .align 2, 0 -_080351A4: .4byte gUnk_080CEF34 -_080351A8: - ldr r0, _080351B8 @ =gUnk_080CEF58 -_080351AA: - ldrb r1, [r2, #0x1e] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r0, [r1] - str r0, [r2, #0x48] - pop {pc} - .align 2, 0 -_080351B8: .4byte gUnk_080CEF58 diff --git a/asm/mazaalHead.s b/asm/mazaalHead.s deleted file mode 100644 index d1803157..00000000 --- a/asm/mazaalHead.s +++ /dev/null @@ -1,1853 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start MazaalHead -MazaalHead: @ 0x08033ED4 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _08033EEC @ =gUnk_080CEC88 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_08033EEC: .4byte gUnk_080CEC88 - - thumb_func_start sub_08033EF0 -sub_08033EF0: @ 0x08033EF0 - push {lr} - ldr r2, _08033F04 @ =gUnk_080CECA0 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08033F04: .4byte gUnk_080CECA0 - - thumb_func_start sub_08033F08 -sub_08033F08: @ 0x08033F08 - push {lr} - ldr r1, _08033F14 @ =gUnk_080CEC88 - bl sub_0804AA30 - pop {pc} - .align 2, 0 -_08033F14: .4byte gUnk_080CEC88 - - thumb_func_start nullsub_160 -nullsub_160: @ 0x08033F18 - bx lr - .align 2, 0 - - thumb_func_start sub_08033F1C -sub_08033F1C: @ 0x08033F1C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08033F38 @ =gUnk_080CECB4 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0803499C - pop {r4, pc} - .align 2, 0 -_08033F38: .4byte gUnk_080CECB4 - - thumb_func_start sub_08033F3C -sub_08033F3C: @ 0x08033F3C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, _08033F64 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x42 - bhi _08033FFA - ldr r0, _08033F68 @ =gScreenTransition - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #0 - beq _08033F6C - adds r0, r4, #0 - bl sub_08034420 - adds r1, r4, #0 - adds r1, #0x81 - movs r0, #1 - strb r0, [r1] - b _08033F70 - .align 2, 0 -_08033F64: .4byte gEntCount -_08033F68: .4byte gScreenTransition -_08033F6C: - movs r0, #1 - strb r0, [r4, #0xc] -_08033F70: - 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 r3, r4, #0 - adds r3, #0x6d - ldrb r0, [r3] - movs r2, #0 - orrs r1, r0 - strb r1, [r3] - adds r0, r4, #0 - adds r0, #0x80 - strb r2, [r0] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - movs r0, #0x36 - movs r1, #1 - bl CreateEnemy - adds r5, r0, #0 - str r4, [r5, #0x50] - movs r0, #0x7e - movs r1, #0 - movs r2, #0 - bl CreateObject - str r4, [r0, #0x50] - ldr r0, _08033FD0 @ =gScreenTransition - adds r0, #0x39 - ldrb r1, [r0] - cmp r1, #0 - bne _08033FD4 - movs r0, #0xd - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - movs r0, #0xfc - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - b _08033FFA - .align 2, 0 -_08033FD0: .4byte gScreenTransition -_08033FD4: - movs r0, #0x44 - movs r1, #0 - bl CreateEnemy - str r4, [r0, #0x50] - str r4, [r0, #0x78] - str r0, [r4, #0x74] - movs r0, #0x44 - movs r1, #1 - bl CreateEnemy - str r4, [r0, #0x50] - str r5, [r0, #0x78] - str r0, [r4, #0x78] - movs r0, #0x36 - movs r1, #4 - bl CreateEnemy - str r4, [r0, #0x50] -_08033FFA: - pop {r4, r5, pc} - - thumb_func_start sub_08033FFC -sub_08033FFC: @ 0x08033FFC - push {r4, lr} - adds r3, r0, #0 - ldrb r0, [r3, #0xd] - cmp r0, #7 - bls _08034008 - b _08034114 -_08034008: - lsls r0, r0, #2 - ldr r1, _08034014 @ =_08034018 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08034014: .4byte _08034018 -_08034018: @ jump table - .4byte _0803413E @ case 0 - .4byte _08034038 @ case 1 - .4byte _0803413E @ case 2 - .4byte _08034056 @ case 3 - .4byte _08034068 @ case 4 - .4byte _0803413E @ case 5 - .4byte _08034090 @ case 6 - .4byte _080340C4 @ case 7 -_08034038: - movs r0, #2 - strb r0, [r3, #0xd] - movs r0, #0x1e - strb r0, [r3, #0xe] - ldr r0, [r3, #0x74] - ldr r2, [r0, #0x74] - movs r1, #1 - strb r1, [r2, #0xd] - ldr r0, [r3, #0x78] - ldr r2, [r0, #0x74] - strb r1, [r2, #0xd] - adds r0, r3, #0 - bl UnloadOBJPalette - b _0803413E -_08034056: - ldrb r0, [r3, #0xe] - subs r0, #1 - strb r0, [r3, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803413E - movs r0, #4 - strb r0, [r3, #0xd] - b _0803413E -_08034068: - ldr r0, [r3, #0x34] - ldr r1, _0803408C @ =0xFFFF8000 - adds r0, r0, r1 - str r0, [r3, #0x34] - movs r0, #0x36 - ldrsh r1, [r3, r0] - movs r0, #0xa - rsbs r0, r0, #0 - cmp r1, r0 - bne _0803413E - movs r0, #5 - strb r0, [r3, #0xd] - adds r1, r3, #0 - adds r1, #0x81 - movs r0, #1 - strb r0, [r1] - b _0803413E - .align 2, 0 -_0803408C: .4byte 0xFFFF8000 -_08034090: - movs r1, #0 - movs r0, #7 - strb r0, [r3, #0xd] - strb r1, [r3, #0xe] - ldr r2, [r3, #0x74] - movs r1, #1 - strb r1, [r2, #0xd] - ldr r2, [r2, #0x74] - movs r0, #4 - strb r0, [r2, #0xd] - ldr r2, [r3, #0x78] - strb r1, [r2, #0xd] - ldr r2, [r2, #0x74] - strb r0, [r2, #0xd] - ldr r1, _080340C0 @ =gScreen - adds r2, r1, #0 - adds r2, #0x66 - movs r0, #0xf4 - lsls r0, r0, #4 - strh r0, [r2] - adds r1, #0x68 - adds r0, #0xc0 - strh r0, [r1] - b _0803413E - .align 2, 0 -_080340C0: .4byte gScreen -_080340C4: - ldrb r1, [r3, #0xe] - adds r1, #1 - strb r1, [r3, #0xe] - lsls r2, r1, #0x18 - lsrs r2, r2, #0x19 - ldr r4, _08034110 @ =gScreen - movs r0, #0x10 - subs r0, r0, r2 - lsls r0, r0, #8 - orrs r2, r0 - adds r0, r4, #0 - adds r0, #0x68 - strh r2, [r0] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - cmp r1, #0x1f - bls _0803413E - movs r0, #8 - strb r0, [r3, #0xd] - ldr r2, [r3, #0x74] - movs r1, #3 - strb r1, [r2, #0xd] - ldr r2, [r2, #0x74] - movs r0, #6 - strb r0, [r2, #0xd] - ldr r2, [r3, #0x78] - strb r1, [r2, #0xd] - ldr r2, [r2, #0x74] - strb r0, [r2, #0xd] - ldrb r1, [r3, #0x19] - subs r0, #0x13 - ands r0, r1 - strb r0, [r3, #0x19] - adds r1, r4, #0 - adds r1, #0x66 - movs r0, #0 - strh r0, [r1] - b _0803413E - .align 2, 0 -_08034110: .4byte gScreen -_08034114: - ldr r0, [r3, #0x74] - ldrb r1, [r0, #0x10] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0803413E - ldr r1, _08034140 @ =gRoomControls - ldr r0, _08034144 @ =gPlayerEntity - str r0, [r1, #0x30] - adds r0, r3, #0 - bl sub_08034420 - ldr r0, _08034148 @ =gPlayerState - adds r0, #0x8b - movs r1, #1 - strb r1, [r0] - bl sub_080791D0 - movs r0, #0x2e - bl SoundReq -_0803413E: - pop {r4, pc} - .align 2, 0 -_08034140: .4byte gRoomControls -_08034144: .4byte gPlayerEntity -_08034148: .4byte gPlayerState - - thumb_func_start sub_0803414C -sub_0803414C: @ 0x0803414C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r1, _08034194 @ =gRoomControls - ldrh r0, [r1, #6] - adds r2, r0, #0 - adds r2, #0xb8 - ldrh r0, [r1, #8] - adds r3, r0, #0 - adds r3, #0x48 - movs r1, #0x2e - ldrsh r0, [r4, r1] - subs r0, r0, r2 - adds r0, #1 - cmp r0, #2 - bhi _080341A2 - movs r5, #0x32 - ldrsh r0, [r4, r5] - subs r0, r0, r3 - adds r0, #1 - cmp r0, #2 - bhi _080341A2 - adds r0, r4, #0 - bl sub_080349D8 - cmp r0, #0 - beq _080341B6 - ldrb r0, [r4, #0xd] - cmp r0, #0 - beq _08034198 - movs r0, #0 - strb r0, [r4, #0xd] - adds r0, r4, #0 - movs r1, #0x1e - bl sub_0803442C - b _080341B6 - .align 2, 0 -_08034194: .4byte gRoomControls -_08034198: - adds r0, r4, #0 - movs r1, #0x5a - bl sub_0803442C - b _080341B6 -_080341A2: - movs r1, #0x2e - ldrsh r0, [r4, r1] - movs r5, #0x32 - ldrsh r1, [r4, r5] - bl sub_080045D4 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_0806F69C -_080341B6: - pop {r4, r5, pc} - - thumb_func_start sub_080341B8 -sub_080341B8: @ 0x080341B8 - push {r4, lr} - adds r4, r0, #0 - bl sub_080349D8 - cmp r0, #0 - beq _080341CC - adds r0, r4, #0 - movs r1, #0x2d - bl sub_0803442C -_080341CC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080341D0 -sub_080341D0: @ 0x080341D0 - push {lr} - adds r2, r0, #0 - adds r0, #0x80 - ldrb r1, [r0] - movs r0, #3 - ands r0, r1 - cmp r0, #3 - beq _080341F2 - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080341F2 - adds r0, r2, #0 - bl sub_0803443C -_080341F2: - pop {pc} - - thumb_func_start sub_080341F4 -sub_080341F4: @ 0x080341F4 - push {r4, lr} - adds r4, r0, #0 - bl sub_080347B4 - adds r0, r4, #0 - bl sub_080349D8 - cmp r0, #0 - beq _0803420C - adds r0, r4, #0 - bl sub_08034420 -_0803420C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08034210 -sub_08034210: @ 0x08034210 - push {r4, lr} - adds r4, r0, #0 - bl sub_080347B4 - adds r0, r4, #0 - adds r0, #0x7d - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08034238 - adds r0, r4, #0 - bl sub_080349D8 - cmp r0, #0 - beq _08034238 - adds r0, r4, #0 - bl sub_08034420 - b _0803423E -_08034238: - adds r0, r4, #0 - bl sub_08034830 -_0803423E: - pop {r4, pc} - - thumb_func_start sub_08034240 -sub_08034240: @ 0x08034240 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x7e - ldrh r0, [r1] - cmp r0, #0 - beq _08034260 - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x95 - bhi _08034260 - adds r0, r4, #0 - bl sub_0803473C -_08034260: - adds r0, r4, #0 - bl sub_080349D8 - cmp r0, #0 - beq _08034270 - adds r0, r4, #0 - bl sub_08034420 -_08034270: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08034274 -sub_08034274: @ 0x08034274 - push {r4, lr} - adds r4, r0, #0 - bl sub_080349D8 - cmp r0, #0 - beq _08034288 - adds r0, r4, #0 - bl sub_08034420 - b _0803429E -_08034288: - adds r0, r4, #0 - bl sub_0803473C - adds r0, r4, #0 - bl sub_08034A10 - cmp r0, #0 - beq _0803429E - adds r0, r4, #0 - bl sub_080347FC -_0803429E: - pop {r4, pc} - - thumb_func_start sub_080342A0 -sub_080342A0: @ 0x080342A0 - push {r4, lr} - adds r4, r0, #0 - bl sub_080349D8 - cmp r0, #0 - beq _080342B2 - adds r0, r4, #0 - bl sub_08034420 -_080342B2: - pop {r4, pc} - - thumb_func_start sub_080342B4 -sub_080342B4: @ 0x080342B4 - push {lr} - adds r1, r0, #0 - adds r0, #0x7e - ldrh r0, [r0] - cmp r0, #0xff - bne _080342C6 - adds r0, r1, #0 - bl sub_08034420 -_080342C6: - pop {pc} - - thumb_func_start sub_080342C8 -sub_080342C8: @ 0x080342C8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - adds r1, r0, #0 - cmp r1, #0 - beq _08034304 - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080342E4 - ldr r0, _080342FC @ =0x00000115 - bl SoundReq -_080342E4: - ldr r2, _08034300 @ =gUnk_080CECEC - ldrb r0, [r4, #0xe] - lsrs r0, r0, #1 - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x62 - strb r1, [r0] - b _08034340 - .align 2, 0 -_080342FC: .4byte 0x00000115 -_08034300: .4byte gUnk_080CECEC -_08034304: - adds r0, r4, #0 - adds r0, #0x62 - strb r1, [r0] - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _08034340 - movs r0, #0xc - strb r0, [r4, #0xc] - adds r2, r4, #0 - adds r2, #0x7e - movs r1, #0 - movs r0, #0xe1 - lsls r0, r0, #3 - strh r0, [r2] - adds r0, r4, #0 - adds r0, #0x7d - strb r1, [r0] - adds r0, #4 - strb r1, [r0] - movs r0, #0x1e - movs r1, #0 - bl sub_08080964 - ldr r0, _08034344 @ =0x000001A1 - bl SoundReq -_08034340: - pop {r4, pc} - .align 2, 0 -_08034344: .4byte 0x000001A1 - - thumb_func_start sub_08034348 -sub_08034348: @ 0x08034348 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x7e - ldrh r0, [r1] - cmp r0, #0 - beq _0803435C - subs r0, #1 - strh r0, [r1] - b _08034388 -_0803435C: - ldrh r2, [r4, #0x36] - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #0xa - rsbs r0, r0, #0 - cmp r1, r0 - ble _08034370 - subs r0, r2, #1 - strh r0, [r4, #0x36] - b _08034388 -_08034370: - adds r0, r4, #0 - bl sub_080349D8 - cmp r0, #0 - beq _08034388 - adds r1, r4, #0 - adds r1, #0x81 - movs r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08034420 -_08034388: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803438C -sub_0803438C: @ 0x0803438C - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xe] - adds r1, r0, #0 - cmp r1, #0 - bne _080343A0 - adds r0, r5, #0 - adds r0, #0x45 - strb r1, [r0] - b _08034414 -_080343A0: - subs r2, r0, #1 - strb r2, [r5, #0xe] - lsls r0, r2, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xc0 - bls _080343C4 - ldr r0, _080343C0 @ =gUnk_080CED06 - movs r1, #3 - ands r2, r1 - adds r0, r2, r0 - ldrb r1, [r0] - adds r0, r5, #0 - adds r0, #0x62 - strb r1, [r0] - b _08034414 - .align 2, 0 -_080343C0: .4byte gUnk_080CED06 -_080343C4: - movs r0, #0x1f - ands r2, r0 - cmp r2, #0 - bne _08034414 - ldr r4, _08034418 @ =gUnk_080CED02 - bl Random - movs r1, #3 - ands r1, r0 - adds r1, r1, r4 - ldrb r1, [r1] - adds r0, r5, #0 - movs r2, #0 - bl CreateFx - adds r2, r0, #0 - cmp r2, #0 - beq _08034414 - ldrb r1, [r5, #0xe] - lsrs r1, r1, #4 - ldr r0, _0803441C @ =gUnk_080CECF4 - adds r1, r1, r0 - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r3, [r2, #0x2e] - adds r0, r0, r3 - strh r0, [r2, #0x2e] - movs r0, #1 - ldrsb r0, [r1, r0] - ldrh r1, [r2, #0x32] - adds r0, r0, r1 - strh r0, [r2, #0x32] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r2] -_08034414: - pop {r4, r5, pc} - .align 2, 0 -_08034418: .4byte gUnk_080CED02 -_0803441C: .4byte gUnk_080CECF4 - - thumb_func_start sub_08034420 -sub_08034420: @ 0x08034420 - movs r1, #2 - strb r1, [r0, #0xc] - adds r0, #0x7d - movs r1, #3 - strb r1, [r0] - bx lr - - thumb_func_start sub_0803442C -sub_0803442C: @ 0x0803442C - movs r2, #4 - strb r2, [r0, #0xc] - strb r1, [r0, #0xe] - adds r0, #0x7d - movs r1, #3 - strb r1, [r0] - bx lr - .align 2, 0 - - thumb_func_start sub_0803443C -sub_0803443C: @ 0x0803443C - push {lr} - adds r2, r0, #0 - adds r1, r2, #0 - adds r1, #0x7d - movs r0, #0 - strb r0, [r1] - ldr r0, _0803445C @ =gScreenTransition - adds r0, #0x39 - ldrb r0, [r0] - cmp r0, #0x1e - bhi _08034460 - adds r0, r2, #0 - bl sub_080344BC - b _08034472 - .align 2, 0 -_0803445C: .4byte gScreenTransition -_08034460: - cmp r0, #0x3c - bhi _0803446C - adds r0, r2, #0 - bl sub_08034498 - b _08034472 -_0803446C: - adds r0, r2, #0 - bl sub_08034474 -_08034472: - pop {pc} - - thumb_func_start sub_08034474 -sub_08034474: @ 0x08034474 - push {r4, lr} - ldr r2, _08034494 @ =gUnk_080CED0C - adds r4, r0, #0 - adds r4, #0x7c - ldrb r1, [r4] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - ldrb r0, [r4] - adds r0, #1 - movs r1, #7 - ands r0, r1 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_08034494: .4byte gUnk_080CED0C - - thumb_func_start sub_08034498 -sub_08034498: @ 0x08034498 - push {r4, lr} - ldr r2, _080344B8 @ =gUnk_080CED2C - adds r4, r0, #0 - adds r4, #0x7c - ldrb r1, [r4] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - ldrb r0, [r4] - adds r0, #1 - movs r1, #7 - ands r0, r1 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_080344B8: .4byte gUnk_080CED2C - - thumb_func_start sub_080344BC -sub_080344BC: @ 0x080344BC - push {r4, lr} - ldr r2, _080344DC @ =gUnk_080CED4C - adds r4, r0, #0 - adds r4, #0x7c - ldrb r1, [r4] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - ldrb r0, [r4] - adds r0, #1 - movs r1, #7 - ands r0, r1 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_080344DC: .4byte gUnk_080CED4C - - thumb_func_start sub_080344E0 -sub_080344E0: @ 0x080344E0 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x80 - ldrb r1, [r0] - movs r0, #5 - ands r0, r1 - cmp r0, #0 - beq _080344F8 - adds r0, r4, #0 - bl sub_080345A0 - b _0803451A -_080344F8: - movs r0, #0xa - ands r0, r1 - cmp r0, #0 - bne _0803450C - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _08034514 -_0803450C: - adds r0, r4, #0 - bl sub_080345B8 - b _0803451A -_08034514: - adds r0, r4, #0 - bl sub_080345A0 -_0803451A: - pop {r4, pc} - - thumb_func_start sub_0803451C -sub_0803451C: @ 0x0803451C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x80 - ldrb r1, [r0] - movs r0, #5 - ands r0, r1 - cmp r0, #0 - bne _08034548 - movs r0, #0xa - ands r0, r1 - cmp r0, #0 - beq _0803453C - adds r0, r4, #0 - bl sub_08034638 - b _08034556 -_0803453C: - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _08034550 -_08034548: - adds r0, r4, #0 - bl sub_08034618 - b _08034556 -_08034550: - adds r0, r4, #0 - bl sub_08034638 -_08034556: - pop {r4, pc} - - thumb_func_start sub_08034558 -sub_08034558: @ 0x08034558 - push {r4, lr} - adds r4, r0, #0 - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _08034570 - adds r0, r4, #0 - bl sub_08034658 - b _08034576 -_08034570: - adds r0, r4, #0 - bl sub_0803467C -_08034576: - pop {r4, pc} - - thumb_func_start sub_08034578 -sub_08034578: @ 0x08034578 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x7d - strb r1, [r0] - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #0 - bl sub_080348A4 - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #0 - bl sub_080348A4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080345A0 -sub_080345A0: @ 0x080345A0 - push {lr} - movs r1, #5 - strb r1, [r0, #0xc] - adds r2, r0, #0 - adds r2, #0x7d - movs r1, #1 - strb r1, [r2] - ldr r1, [r0, #0x78] - movs r2, #1 - bl sub_080348A4 - pop {pc} - - thumb_func_start sub_080345B8 -sub_080345B8: @ 0x080345B8 - push {lr} - movs r1, #5 - strb r1, [r0, #0xc] - adds r2, r0, #0 - adds r2, #0x7d - movs r1, #2 - strb r1, [r2] - ldr r1, [r0, #0x74] - movs r2, #1 - bl sub_080348A4 - pop {pc} - - thumb_func_start sub_080345D0 -sub_080345D0: @ 0x080345D0 - push {r4, lr} - adds r4, r0, #0 - movs r0, #6 - strb r0, [r4, #0xc] - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _080345FE - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #2 - bl sub_080348A4 - cmp r0, #0 - bne _08034616 - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #2 - bl sub_080348A4 - b _08034616 -_080345FE: - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #2 - bl sub_080348A4 - cmp r0, #0 - bne _08034616 - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #2 - bl sub_080348A4 -_08034616: - pop {r4, pc} - - thumb_func_start sub_08034618 -sub_08034618: @ 0x08034618 - push {lr} - movs r1, #7 - strb r1, [r0, #0xc] - adds r2, r0, #0 - adds r2, #0x7d - movs r1, #1 - strb r1, [r2] - adds r2, #1 - movs r1, #0xb4 - strh r1, [r2] - ldr r1, [r0, #0x78] - movs r2, #3 - bl sub_080348A4 - pop {pc} - .align 2, 0 - - thumb_func_start sub_08034638 -sub_08034638: @ 0x08034638 - push {lr} - movs r1, #7 - strb r1, [r0, #0xc] - adds r2, r0, #0 - adds r2, #0x7d - movs r1, #2 - strb r1, [r2] - adds r2, #1 - movs r1, #0xb4 - strh r1, [r2] - ldr r1, [r0, #0x74] - movs r2, #3 - bl sub_080348A4 - pop {pc} - .align 2, 0 - - thumb_func_start sub_08034658 -sub_08034658: @ 0x08034658 - push {r4, lr} - movs r2, #0 - movs r1, #8 - strb r1, [r0, #0xc] - adds r4, r0, #0 - adds r4, #0x7d - strb r2, [r4] - ldr r1, [r0, #0x78] - movs r2, #4 - bl sub_080348A4 - cmp r0, #0 - bne _0803467A - ldrb r0, [r4] - movs r1, #0x40 - orrs r0, r1 - strb r0, [r4] -_0803467A: - pop {r4, pc} - - thumb_func_start sub_0803467C -sub_0803467C: @ 0x0803467C - push {r4, lr} - movs r2, #0 - movs r1, #8 - strb r1, [r0, #0xc] - adds r4, r0, #0 - adds r4, #0x7d - strb r2, [r4] - ldr r1, [r0, #0x74] - movs r2, #4 - bl sub_080348A4 - cmp r0, #0 - bne _0803469E - ldrb r0, [r4] - movs r1, #0x40 - orrs r0, r1 - strb r0, [r4] -_0803469E: - pop {r4, pc} - - thumb_func_start sub_080346A0 -sub_080346A0: @ 0x080346A0 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r0, #9 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x7d - strb r1, [r0] - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #6 - bl sub_080348A4 - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #6 - bl sub_080348A4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080346C8 -sub_080346C8: @ 0x080346C8 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r0, #0xa - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x7e - strh r1, [r0] - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _0803470C - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #8 - bl sub_080348A4 - cmp r0, #0 - beq _080346F6 - ldr r1, [r4, #0x78] - b _0803471C -_080346F6: - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #7 - bl sub_080348A4 - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #8 - bl sub_080348A4 - b _0803473A -_0803470C: - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #8 - bl sub_080348A4 - cmp r0, #0 - beq _08034726 - ldr r1, [r4, #0x74] -_0803471C: - adds r0, r4, #0 - movs r2, #7 - bl sub_080348A4 - b _0803473A -_08034726: - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #8 - bl sub_080348A4 - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #7 - bl sub_080348A4 -_0803473A: - pop {r4, pc} - - thumb_func_start sub_0803473C -sub_0803473C: @ 0x0803473C - push {r4, r5, lr} - adds r3, r0, #0 - adds r0, #0x7d - ldrb r1, [r0] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _08034764 - ldr r0, [r3, #0x74] - ldrb r0, [r0, #0xc] - cmp r0, #0x28 - bhi _080347B0 - ldr r0, _08034760 @ =gPlayerEntity - movs r1, #0x2e - ldrsh r0, [r0, r1] - adds r2, r0, #0 - subs r2, #0x60 - b _08034776 - .align 2, 0 -_08034760: .4byte gPlayerEntity -_08034764: - ldr r0, [r3, #0x78] - ldrb r0, [r0, #0xc] - cmp r0, #0x28 - bhi _080347B0 - ldr r0, _08034790 @ =gPlayerEntity - movs r5, #0x2e - ldrsh r0, [r0, r5] - adds r2, r0, #0 - adds r2, #0x60 -_08034776: - ldr r0, _08034794 @ =gRoomControls - ldrh r4, [r0, #6] - subs r0, r2, #4 - movs r5, #0x2e - ldrsh r1, [r3, r5] - cmp r0, r1 - bls _08034798 - adds r0, r4, #0 - adds r0, #0xe0 - cmp r0, r1 - blo _080347B0 - movs r0, #8 - b _080347A8 - .align 2, 0 -_08034790: .4byte gPlayerEntity -_08034794: .4byte gRoomControls -_08034798: - adds r0, r2, #4 - cmp r0, r1 - bhs _080347B0 - adds r0, r4, #0 - adds r0, #0x90 - cmp r0, r1 - bhi _080347B0 - movs r0, #0x18 -_080347A8: - strb r0, [r3, #0x15] - adds r0, r3, #0 - bl sub_0806F69C -_080347B0: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080347B4 -sub_080347B4: @ 0x080347B4 - push {r4, r5, lr} - adds r2, r0, #0 - ldr r0, _080347D8 @ =gPlayerEntity - movs r1, #0x2e - ldrsh r3, [r0, r1] - ldr r0, _080347DC @ =gRoomControls - ldrh r4, [r0, #6] - subs r0, r3, #4 - movs r5, #0x2e - ldrsh r1, [r2, r5] - cmp r0, r1 - bls _080347E0 - adds r0, r4, #0 - adds r0, #0xe0 - cmp r0, r1 - blo _080347F8 - movs r0, #8 - b _080347F0 - .align 2, 0 -_080347D8: .4byte gPlayerEntity -_080347DC: .4byte gRoomControls -_080347E0: - adds r0, r3, #4 - cmp r0, r1 - bhs _080347F8 - adds r0, r4, #0 - adds r0, #0x90 - cmp r0, r1 - bhi _080347F8 - movs r0, #0x18 -_080347F0: - strb r0, [r2, #0x15] - adds r0, r2, #0 - bl sub_0806F69C -_080347F8: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080347FC -sub_080347FC: @ 0x080347FC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x7d - ldrb r1, [r0] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _08034818 - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #5 - bl sub_080348A4 - b _08034822 -_08034818: - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #5 - bl sub_080348A4 -_08034822: - adds r2, r4, #0 - adds r2, #0x7d - ldrb r1, [r2] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r2] - pop {r4, pc} - - thumb_func_start sub_08034830 -sub_08034830: @ 0x08034830 - push {r4, lr} - adds r4, r0, #0 - bl sub_080349D8 - cmp r0, #0 - beq _0803484C - adds r1, r4, #0 - adds r1, #0x7d - movs r0, #0x80 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080345D0 - b _080348A0 -_0803484C: - adds r0, r4, #0 - bl sub_08034A10 - cmp r0, #0 - beq _080348A0 - adds r0, r4, #0 - adds r0, #0x80 - ldrb r1, [r0] - movs r0, #0xf - ands r0, r1 - cmp r0, #0 - beq _08034876 - adds r0, r4, #0 - bl sub_080349D8 - cmp r0, #0 - beq _080348A0 - adds r0, r4, #0 - bl sub_08034420 - b _080348A0 -_08034876: - adds r2, r4, #0 - adds r2, #0x7d - ldrb r0, [r2] - movs r1, #0x20 - orrs r1, r0 - strb r1, [r2] - movs r0, #0x10 - ands r1, r0 - cmp r1, #0 - beq _08034896 - ldr r1, [r4, #0x78] - adds r0, r4, #0 - movs r2, #2 - bl sub_080348A4 - b _080348A0 -_08034896: - ldr r1, [r4, #0x74] - adds r0, r4, #0 - movs r2, #2 - bl sub_080348A4 -_080348A0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080348A4 -sub_080348A4: @ 0x080348A4 - push {r4, r5, lr} - adds r4, r0, #0 - adds r3, r1, #0 - adds r5, r2, #0 - ldrb r0, [r3, #0xa] - cmp r0, #0 - bne _080348C6 - movs r2, #5 - movs r0, #0x7d - adds r0, r0, r4 - mov ip, r0 - ldrb r1, [r0] - movs r0, #0x10 - orrs r0, r1 - mov r1, ip - strb r0, [r1] - b _080348C8 -_080348C6: - movs r2, #0xa -_080348C8: - adds r0, r4, #0 - adds r0, #0x80 - ldrb r0, [r0] - ands r0, r2 - cmp r0, #0 - beq _080348F0 - adds r0, r4, #0 - adds r0, #0x7d - ldrb r2, [r0] - ldrb r1, [r3, #0xa] - adds r3, r0, #0 - cmp r1, #0 - bne _080348E6 - movs r0, #1 - b _080348E8 -_080348E6: - movs r0, #2 -_080348E8: - orrs r0, r2 - strb r0, [r3] - movs r0, #0 - b _08034998 -_080348F0: - cmp r5, #8 - bhi _08034996 - lsls r0, r5, #2 - ldr r1, _08034900 @ =_08034904 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08034900: .4byte _08034904 -_08034904: @ jump table - .4byte _08034928 @ case 0 - .4byte _0803492E @ case 1 - .4byte _0803493C @ case 2 - .4byte _0803494A @ case 3 - .4byte _0803493C @ case 4 - .4byte _08034958 @ case 5 - .4byte _08034966 @ case 6 - .4byte _0803496C @ case 7 - .4byte _08034982 @ case 8 -_08034928: - movs r0, #3 - strb r0, [r3, #0xc] - b _08034996 -_0803492E: - movs r0, #4 - strb r0, [r3, #0xc] - adds r1, r3, #0 - adds r1, #0x7c - movs r0, #3 - strb r0, [r1] - b _08034996 -_0803493C: - movs r0, #4 - strb r0, [r3, #0xc] - adds r1, r3, #0 - adds r1, #0x7c - movs r0, #1 - strb r0, [r1] - b _08034996 -_0803494A: - movs r0, #0xf - strb r0, [r3, #0xc] - adds r1, r3, #0 - adds r1, #0x7e - movs r0, #0xb4 - strh r0, [r1] - b _08034996 -_08034958: - movs r0, #0xf - strb r0, [r3, #0xc] - adds r1, r3, #0 - adds r1, #0x7e - movs r0, #1 - strh r0, [r1] - b _08034996 -_08034966: - movs r0, #0x1e - strb r0, [r3, #0xc] - b _08034996 -_0803496C: - movs r0, #0x1b - strb r0, [r3, #0xc] - ldrb r1, [r3, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r3, #0x10] - adds r0, r3, #0 - movs r1, #5 - bl InitializeAnimation - b _08034996 -_08034982: - ldrb r0, [r3, #0xa] - adds r2, r0, #2 - movs r0, #0x36 - adds r1, r2, #0 - bl CreateEnemy - adds r3, r0, #0 - cmp r3, #0 - beq _08034996 - str r4, [r3, #0x50] -_08034996: - movs r0, #1 -_08034998: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0803499C -sub_0803499C: @ 0x0803499C - push {lr} - adds r3, r0, #0 - adds r0, #0x80 - ldrb r1, [r0] - movs r0, #0xc - ands r0, r1 - cmp r0, #0xc - beq _080349D0 - adds r0, r3, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _080349D0 - ldr r2, _080349D4 @ =gUnk_080CED6C - ldrb r0, [r3, #0xf] - adds r0, #1 - strb r0, [r3, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1c - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - strh r0, [r3, #0x36] -_080349D0: - pop {pc} - .align 2, 0 -_080349D4: .4byte gUnk_080CED6C - - thumb_func_start sub_080349D8 -sub_080349D8: @ 0x080349D8 - push {lr} - adds r2, r0, #0 - adds r0, #0x7d - ldrb r0, [r0] - movs r1, #3 - ands r1, r0 - cmp r1, #3 - beq _08034A08 - cmp r1, #1 - bne _080349F6 - adds r0, r2, #0 - adds r0, #0x80 - ldrb r1, [r0] - movs r0, #0xa - b _08034A02 -_080349F6: - cmp r1, #2 - bne _08034A0C - adds r0, r2, #0 - adds r0, #0x80 - ldrb r1, [r0] - movs r0, #5 -_08034A02: - ands r0, r1 - cmp r0, #0 - beq _08034A0C -_08034A08: - movs r0, #1 - b _08034A0E -_08034A0C: - movs r0, #0 -_08034A0E: - pop {pc} - - thumb_func_start sub_08034A10 -sub_08034A10: @ 0x08034A10 - push {r4, lr} - adds r1, r0, #0 - adds r3, r1, #0 - adds r3, #0x7d - ldrb r2, [r3] - movs r0, #0x60 - ands r0, r2 - cmp r0, #0x40 - beq _08034A52 - movs r0, #0x10 - ands r0, r2 - cmp r0, #0 - beq _08034A56 - adds r4, r1, #0 - adds r4, #0x80 - ldrb r1, [r4] - movs r0, #5 - ands r0, r1 - cmp r0, #0 - beq _08034A3E - movs r0, #0x40 - orrs r0, r2 - strb r0, [r3] -_08034A3E: - ldrb r1, [r4] - movs r0, #0xa - ands r0, r1 - cmp r0, #0 - beq _08034A7E - ldrb r1, [r3] - movs r0, #3 - ands r0, r1 - cmp r0, #1 - bne _08034A7E -_08034A52: - movs r0, #1 - b _08034A80 -_08034A56: - adds r4, r1, #0 - adds r4, #0x80 - ldrb r1, [r4] - movs r0, #0xa - ands r0, r1 - cmp r0, #0 - beq _08034A6A - movs r0, #0x40 - orrs r0, r2 - strb r0, [r3] -_08034A6A: - ldrb r1, [r4] - movs r0, #5 - ands r0, r1 - cmp r0, #0 - beq _08034A7E - ldrb r1, [r3] - movs r0, #3 - ands r0, r1 - cmp r0, #2 - beq _08034A52 -_08034A7E: - movs r0, #0 -_08034A80: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08034A84 -sub_08034A84: @ 0x08034A84 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _08034A98 - adds r0, r4, #0 - bl DeleteEntity - b _08034AC2 -_08034A98: - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08034ABA - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - movs r1, #0x40 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_08034ABA: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPositionAndSpriteOffset -_08034AC2: - pop {r4, pc} - - thumb_func_start sub_08034AC4 -sub_08034AC4: @ 0x08034AC4 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - movs r3, #0x80 - lsls r3, r3, #9 - adds r1, r4, #0 - movs r2, #0 - bl PositionRelative - ldr r1, _08034AE8 @ =gUnk_080CED74 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_08034AE8: .4byte gUnk_080CED74 - - thumb_func_start sub_08034AEC -sub_08034AEC: @ 0x08034AEC - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - movs r1, #0x1e - strb r1, [r0, #0xe] - ldrb r1, [r0, #0xa] - adds r1, #1 - bl InitializeAnimation - ldr r0, _08034B08 @ =0x00000151 - bl SoundReq - pop {pc} - .align 2, 0 -_08034B08: .4byte 0x00000151 - - thumb_func_start sub_08034B0C -sub_08034B0C: @ 0x08034B0C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _08034B1A - subs r0, #1 - b _08034B34 -_08034B1A: - 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 _08034B36 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0x50 -_08034B34: - strb r0, [r4, #0xe] -_08034B36: - pop {r4, pc} - - thumb_func_start sub_08034B38 -sub_08034B38: @ 0x08034B38 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08034B58 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0xa] - adds r1, #3 - adds r0, r4, #0 - bl InitializeAnimation - b _08034B9A -_08034B58: - movs r0, #0xe - bl sub_080A7EE0 - adds r5, r0, #0 - cmp r5, #0 - beq _08034B9A - ldrb r0, [r4, #0xa] - subs r0, #2 - strb r0, [r5, #0xa] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08034B78 - ldrb r1, [r4, #0xe] - movs r0, #0xa8 - subs r0, r0, r1 - b _08034B7C -_08034B78: - ldrb r0, [r4, #0xe] - adds r0, #0x58 -_08034B7C: - strb r0, [r5, #0x15] - ldrb r0, [r5, #0xa] - lsls r0, r0, #1 - ldr r1, _08034B9C @ =gUnk_080CED84 - adds r0, r0, r1 - movs r2, #0 - ldrsb r2, [r0, r2] - lsls r2, r2, #0x10 - movs r3, #1 - ldrsb r3, [r0, r3] - lsls r3, r3, #0x10 - adds r0, r4, #0 - adds r1, r5, #0 - bl PositionRelative -_08034B9A: - pop {r4, r5, pc} - .align 2, 0 -_08034B9C: .4byte gUnk_080CED84 - - thumb_func_start sub_08034BA0 -sub_08034BA0: @ 0x08034BA0 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08034BC4 - ldr r0, [r4, #0x50] - adds r0, #0x7e - movs r1, #0xff - strh r1, [r0] - adds r0, r4, #0 - bl DeleteEntity -_08034BC4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08034BC8 -sub_08034BC8: @ 0x08034BC8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08034BDE - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_08034BDE: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - movs r2, #0 - movs r3, #1 - bl sub_0806FA90 - adds r0, r4, #0 - bl sub_0800445C - movs r1, #0x36 - ldrsh r0, [r4, r1] - cmp r0, #0 - bne _08034BFE - adds r0, r4, #0 - bl sub_08034C00 -_08034BFE: - pop {r4, pc} - - thumb_func_start sub_08034C00 -sub_08034C00: @ 0x08034C00 - push {r4, lr} - adds r3, r0, #0 - ldr r0, _08034C44 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08034C5A - movs r1, #0x2e - ldrsh r0, [r3, r1] - ldr r2, _08034C48 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - movs r4, #0x32 - ldrsh r1, [r3, r4] - ldrh r2, [r2, #8] - subs r1, r1, r2 - adds r1, #0xd - movs r2, #3 - movs r3, #3 - bl CheckPlayerInRegion - cmp r0, #0 - beq _08034C5A - ldr r0, _08034C4C @ =gScreenTransition - adds r0, #0x39 - ldrb r0, [r0] - cmp r0, #0x3c - bls _08034C54 - ldr r0, _08034C50 @ =gUnk_080CED88 - bl DoExitTransition - b _08034C5A - .align 2, 0 -_08034C44: .4byte gPlayerState -_08034C48: .4byte gRoomControls -_08034C4C: .4byte gScreenTransition -_08034C50: .4byte gUnk_080CED88 -_08034C54: - ldr r0, _08034C5C @ =gUnk_080CED9C - bl DoExitTransition -_08034C5A: - pop {r4, pc} - .align 2, 0 -_08034C5C: .4byte gUnk_080CED9C diff --git a/asm/mazaalMacro.s b/asm/mazaalMacro.s deleted file mode 100644 index 1f0cef9a..00000000 --- a/asm/mazaalMacro.s +++ /dev/null @@ -1,673 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start MazaalMacro -MazaalMacro: @ 0x08034C60 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _08034C78 @ =gUnk_080CEE90 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_08034C78: .4byte gUnk_080CEE90 - - thumb_func_start sub_08034C7C -sub_08034C7C: @ 0x08034C7C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xa] - cmp r0, #2 - beq _08034C9C - ldr r0, _08034C98 @ =gUnk_080CEEA4 - ldrb r1, [r2, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 - b _08034CA2 - .align 2, 0 -_08034C98: .4byte gUnk_080CEEA4 -_08034C9C: - adds r0, r2, #0 - bl sub_08034E18 -_08034CA2: - pop {pc} - - thumb_func_start sub_08034CA4 -sub_08034CA4: @ 0x08034CA4 - push {r4, lr} - adds r4, r0, #0 - bl sub_08034FA0 - ldr r1, _08034CB8 @ =gUnk_080CEE90 - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, pc} - .align 2, 0 -_08034CB8: .4byte gUnk_080CEE90 - - thumb_func_start sub_08034CBC -sub_08034CBC: @ 0x08034CBC - push {lr} - bl sub_0804A7D4 - pop {pc} - - thumb_func_start sub_08034CC4 -sub_08034CC4: @ 0x08034CC4 - push {r4, r5, r6, lr} - adds r5, r0, #0 - bl sub_08035084 - cmp r0, #0 - beq _08034D42 - ldrb r0, [r5, #0xa] - adds r0, #1 - movs r1, #0 - strb r0, [r5, #0xc] - strb r1, [r5, #0xf] - adds r2, r5, #0 - adds r2, #0x6d - ldrb r1, [r2] - movs r0, #1 - orrs r0, r1 - strb r0, [r2] - adds r1, r5, #0 - adds r1, #0x78 - movs r0, #0x96 - lsls r0, r0, #3 - strh r0, [r1] - adds r0, r5, #0 - bl sub_08034F70 - ldrb r1, [r5, #0xa] - adds r0, r5, #0 - bl InitializeAnimation - ldr r0, _08034D44 @ =0x00004022 - movs r2, #0x2e - ldrsh r1, [r5, r2] - ldr r3, _08034D48 @ =gRoomControls - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - movs r4, #0x3f - ands r1, r4 - movs r6, #0x32 - ldrsh r2, [r5, r6] - ldrh r3, [r3, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - adds r2, r5, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile - movs r0, #0x37 - movs r1, #2 - bl CreateEnemy - adds r1, r0, #0 - cmp r1, #0 - beq _08034D42 - str r1, [r5, #0x54] - str r5, [r1, #0x50] - adds r0, r5, #0 - bl CopyPosition -_08034D42: - pop {r4, r5, r6, pc} - .align 2, 0 -_08034D44: .4byte 0x00004022 -_08034D48: .4byte gRoomControls - - thumb_func_start sub_08034D4C -sub_08034D4C: @ 0x08034D4C - push {r4, r5, r6, lr} - adds r5, r0, #0 - bl GetNextFrame - adds r6, r5, #0 - adds r6, #0x78 - ldrh r0, [r6] - subs r0, #1 - strh r0, [r6] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _08034DC4 - ldrb r0, [r5, #0xf] - cmp r0, #7 - bhi _08034DBC - movs r0, #0x4b - movs r1, #0 - bl CreateEnemy - adds r4, r0, #0 - cmp r4, #0 - beq _08034DBC - bl Random - movs r1, #5 - bl __modsi3 - adds r0, #0xc - strb r0, [r4, #0x15] - ldr r1, _08034DB8 @ =gRoomControls - ldrh r0, [r1, #0x1e] - lsrs r0, r0, #1 - ldrh r2, [r1, #6] - adds r0, r0, r2 - strh r0, [r4, #0x2e] - ldrh r0, [r1, #8] - adds r0, #8 - strh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #3 - strb r0, [r1] - str r5, [r4, #0x50] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - movs r0, #0x96 - lsls r0, r0, #2 - strh r0, [r6] - ldrb r0, [r5, #0xf] - adds r0, #1 - strb r0, [r5, #0xf] - b _08034DC4 - .align 2, 0 -_08034DB8: .4byte gRoomControls -_08034DBC: - adds r1, r5, #0 - adds r1, #0x78 - movs r0, #0x78 - strh r0, [r1] -_08034DC4: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_08034DC8 -sub_08034DC8: @ 0x08034DC8 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, _08034E10 @ =gScreenTransition - adds r0, #0x39 - ldrb r0, [r0] - cmp r0, #0 - bne _08034E0E - adds r0, r4, #0 - movs r1, #0x51 - movs r2, #0 - bl CreateFx - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _08034E14 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r5, #0x32 - ldrsh r1, [r4, r5] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl sub_0807BA8C - bl DeleteThisEntity -_08034E0E: - pop {r4, r5, pc} - .align 2, 0 -_08034E10: .4byte gScreenTransition -_08034E14: .4byte gRoomControls - - thumb_func_start sub_08034E18 -sub_08034E18: @ 0x08034E18 - push {lr} - ldr r2, _08034E2C @ =gUnk_080CEEB0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08034E2C: .4byte gUnk_080CEEB0 - - thumb_func_start sub_08034E30 -sub_08034E30: @ 0x08034E30 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xa] - adds r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - movs r1, #0x39 - rsbs r1, r1, #0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08034E68 -sub_08034E68: @ 0x08034E68 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _08034EBC - ldrb r1, [r4, #0x18] - lsls r0, r1, #0x1e - cmp r0, #0 - beq _08034E8A - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - bl sub_08035120 -_08034E8A: - ldr r0, _08034EB0 @ =gScreenTransition - adds r0, #0x39 - ldrb r0, [r0] - cmp r0, #0 - bne _08034EB8 - bl sub_08079F8C - cmp r0, #0 - beq _08034EBC - movs r0, #3 - strb r0, [r4, #0xc] - ldr r1, _08034EB4 @ =script_08012E20 - adds r0, r4, #0 - bl StartCutscene - adds r1, r4, #0 - adds r1, #0x84 - str r0, [r1] - b _08034EBC - .align 2, 0 -_08034EB0: .4byte gScreenTransition -_08034EB4: .4byte script_08012E20 -_08034EB8: - bl DeleteThisEntity -_08034EBC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08034EC0 -sub_08034EC0: @ 0x08034EC0 - push {lr} - adds r1, r0, #0 - ldr r0, [r1, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - bne _08034ED6 - adds r0, r1, #0 - bl sub_08035120 - bl DeleteThisEntity -_08034ED6: - pop {pc} - - thumb_func_start sub_08034ED8 -sub_08034ED8: @ 0x08034ED8 - push {lr} - movs r1, #0 - bl ExecuteScriptForEntity - pop {pc} - .align 2, 0 - - thumb_func_start sub_08034EE4 -sub_08034EE4: @ 0x08034EE4 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xe] - adds r0, #1 - strb r0, [r5, #0xe] - movs r1, #0xff - ands r0, r1 - movs r1, #0xf - ands r0, r1 - cmp r0, #0 - bne _08034F46 - bl Random - adds r4, r0, #0 - ldr r0, _08034F50 @ =gUnk_080CEEC8 - movs r1, #3 - ands r1, r4 - adds r1, r1, r0 - ldrb r1, [r1] - adds r0, r5, #0 - movs r2, #0 - bl CreateFx - adds r3, r0, #0 - cmp r3, #0 - beq _08034F46 - lsrs r1, r4, #2 - movs r0, #0x77 - ands r1, r0 - lsls r1, r1, #1 - adds r1, #1 - ldr r2, _08034F54 @ =gRoomControls - ldrh r0, [r2, #0xa] - adds r0, r0, r1 - strh r0, [r3, #0x2e] - lsrs r1, r4, #9 - movs r0, #0x7e - ands r1, r0 - adds r1, #1 - ldrh r0, [r2, #0xc] - adds r0, r0, r1 - strh r0, [r3, #0x32] - adds r1, r3, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - adds r0, r3, #0 - bl UpdateSpriteForCollisionLayer -_08034F46: - adds r0, r5, #0 - movs r1, #0 - bl ExecuteScriptForEntity - pop {r4, r5, pc} - .align 2, 0 -_08034F50: .4byte gUnk_080CEEC8 -_08034F54: .4byte gRoomControls - - thumb_func_start sub_08034F58 -sub_08034F58: @ 0x08034F58 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _08034F6C @ =gUnk_0813ABA8 - bl DoExitTransition - adds r0, r4, #0 - bl DeleteEntity - pop {r4, pc} - .align 2, 0 -_08034F6C: .4byte gUnk_0813ABA8 - - thumb_func_start sub_08034F70 -sub_08034F70: @ 0x08034F70 - push {lr} - adds r2, r0, #0 - ldr r0, _08034F8C @ =gScreenTransition - adds r0, #0x39 - ldrb r0, [r0] - adds r1, r2, #0 - adds r1, #0x45 - strb r0, [r1] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x3c - bls _08034F90 - movs r0, #0 - b _08034F9A - .align 2, 0 -_08034F8C: .4byte gScreenTransition -_08034F90: - cmp r0, #0x1e - bls _08034F98 - movs r0, #1 - b _08034F9A -_08034F98: - movs r0, #2 -_08034F9A: - strb r0, [r2, #0xb] - pop {pc} - .align 2, 0 - - thumb_func_start sub_08034FA0 -sub_08034FA0: @ 0x08034FA0 - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r0, #0x3d - ldrb r1, [r0] - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - ble _08034FC0 - ldr r0, [r4, #0x54] - adds r0, #0x3d - strb r1, [r0] - movs r0, #0xc - movs r1, #1 - bl sub_08080964 -_08034FC0: - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _08035008 - cmp r0, #1 - beq _08035020 - adds r0, r4, #0 - adds r0, #0x45 - ldrb r1, [r0] - adds r5, r0, #0 - cmp r1, #0 - bne _08035040 - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _08035004 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r6, #0x32 - ldrsh r1, [r4, r6] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl sub_0807BA8C - b _08035040 - .align 2, 0 -_08035004: .4byte gRoomControls -_08035008: - adds r0, r4, #0 - adds r0, #0x45 - ldrb r1, [r0] - adds r5, r0, #0 - cmp r1, #0x3b - bhi _08035040 - ldr r0, _0803501C @ =gScreenTransition - adds r0, #0x39 - movs r1, #0x3c - b _08035032 - .align 2, 0 -_0803501C: .4byte gScreenTransition -_08035020: - adds r0, r4, #0 - adds r0, #0x45 - ldrb r1, [r0] - adds r5, r0, #0 - cmp r1, #0x1d - bhi _08035040 - ldr r0, _0803503C @ =gScreenTransition - adds r0, #0x39 - movs r1, #0x1e -_08035032: - strb r1, [r0] - adds r0, r4, #0 - bl sub_08035050 - b _08035048 - .align 2, 0 -_0803503C: .4byte gScreenTransition -_08035040: - ldr r0, _0803504C @ =gScreenTransition - ldrb r1, [r5] - adds r0, #0x39 - strb r1, [r0] -_08035048: - pop {r4, r5, r6, pc} - .align 2, 0 -_0803504C: .4byte gScreenTransition - - thumb_func_start sub_08035050 -sub_08035050: @ 0x08035050 - push {r4, lr} - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - movs r4, #0 - strb r1, [r0, #0x10] - adds r0, #0x45 - strb r4, [r0] - movs r0, #0x4b - movs r1, #0 - bl CreateEnemy - adds r2, r0, #0 - cmp r2, #0 - beq _08035082 - movs r0, #1 - strb r0, [r2, #0xb] - adds r1, r2, #0 - adds r1, #0x38 - movs r0, #3 - strb r0, [r1] - str r4, [r2, #0x50] - adds r0, r2, #0 - bl UpdateSpriteForCollisionLayer -_08035082: - pop {r4, pc} - - thumb_func_start sub_08035084 -sub_08035084: @ 0x08035084 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - mov r8, r0 - ldrb r0, [r0, #0xa] - cmp r0, #0 - bne _08035118 - ldr r0, _080350A0 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x42 - bls _080350A4 - movs r0, #0 - b _0803511A - .align 2, 0 -_080350A0: .4byte gEntCount -_080350A4: - ldr r4, _080350D8 @ =gUnk_030010D8 -_080350A6: - bl Random - movs r1, #6 - bl __modsi3 - adds r6, r0, #0 - ldrb r0, [r4] - lsrs r0, r0, #4 - cmp r6, r0 - beq _080350A6 - ldr r2, _080350DC @ =gScreenTransition - adds r2, #0x38 - ldrb r1, [r2] - movs r0, #0xf - ands r0, r1 - lsls r1, r6, #4 - orrs r0, r1 - strb r0, [r2] - movs r5, #0 - ldr r4, _080350E0 @ =gUnk_080CEECC - ldr r7, _080350E4 @ =gRoomControls -_080350D0: - cmp r5, r6 - bne _080350E8 - mov r2, r8 - b _080350F2 - .align 2, 0 -_080350D8: .4byte gUnk_030010D8 -_080350DC: .4byte gScreenTransition -_080350E0: .4byte gUnk_080CEECC -_080350E4: .4byte gRoomControls -_080350E8: - movs r0, #0x37 - movs r1, #1 - bl CreateEnemy - adds r2, r0, #0 -_080350F2: - ldrh r0, [r7, #6] - ldrb r1, [r4] - adds r0, r0, r1 - strh r0, [r2, #0x2e] - ldrh r0, [r7, #8] - ldrb r1, [r4, #1] - adds r0, r0, r1 - strh r0, [r2, #0x32] - adds r1, r2, #0 - adds r1, #0x38 - movs r0, #1 - strb r0, [r1] - adds r0, r2, #0 - bl UpdateSpriteForCollisionLayer - adds r5, #1 - adds r4, #2 - cmp r5, #5 - bls _080350D0 -_08035118: - movs r0, #1 -_0803511A: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08035120 -sub_08035120: @ 0x08035120 - push {r4, r5, r6, lr} - movs r2, #0x2e - ldrsh r1, [r0, r2] - ldr r3, _0803515C @ =gRoomControls - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r4, r1, #4 - movs r2, #0x3f - ands r4, r2 - movs r1, #0x32 - ldrsh r0, [r0, r1] - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r4, r0 - movs r6, #0 - ldr r5, _08035160 @ =gUnk_080CEED8 -_08035146: - movs r2, #0 - ldrsh r0, [r5, r2] - adds r0, r4, r0 - bl sub_0807B600 - adds r5, #2 - adds r6, #1 - cmp r6, #0x17 - bls _08035146 - pop {r4, r5, r6, pc} - .align 2, 0 -_0803515C: .4byte gRoomControls -_08035160: .4byte gUnk_080CEED8 diff --git a/asm/non_matching/mazaal/sub_0803473C.inc b/asm/non_matching/mazaal/sub_0803473C.inc new file mode 100644 index 00000000..2858af55 --- /dev/null +++ b/asm/non_matching/mazaal/sub_0803473C.inc @@ -0,0 +1,66 @@ + + .syntax unified + push {r4, r5, lr} + adds r3, r0, #0 + adds r0, #0x7d + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08034764 + ldr r0, [r3, #0x74] + ldrb r0, [r0, #0xc] + cmp r0, #0x28 + bhi _080347B0 + ldr r0, _08034760 @ =gPlayerEntity + movs r1, #0x2e + ldrsh r0, [r0, r1] + adds r2, r0, #0 + subs r2, #0x60 + b _08034776 + .align 2, 0 +_08034760: .4byte gPlayerEntity +_08034764: + ldr r0, [r3, #0x78] + ldrb r0, [r0, #0xc] + cmp r0, #0x28 + bhi _080347B0 + ldr r0, _08034790 @ =gPlayerEntity + movs r5, #0x2e + ldrsh r0, [r0, r5] + adds r2, r0, #0 + adds r2, #0x60 +_08034776: + ldr r0, _08034794 @ =gRoomControls + ldrh r4, [r0, #6] + subs r0, r2, #4 + movs r5, #0x2e + ldrsh r1, [r3, r5] + cmp r0, r1 + bls _08034798 + adds r0, r4, #0 + adds r0, #0xe0 + cmp r0, r1 + blo _080347B0 + movs r0, #8 + b _080347A8 + .align 2, 0 +_08034790: .4byte gPlayerEntity +_08034794: .4byte gRoomControls +_08034798: + adds r0, r2, #4 + cmp r0, r1 + bhs _080347B0 + adds r0, r4, #0 + adds r0, #0x90 + cmp r0, r1 + bhi _080347B0 + movs r0, #0x18 +_080347A8: + strb r0, [r3, #0x15] + adds r0, r3, #0 + bl sub_0806F69C +_080347B0: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/mazaal/sub_080347B4.inc b/asm/non_matching/mazaal/sub_080347B4.inc new file mode 100644 index 00000000..08fd61a6 --- /dev/null +++ b/asm/non_matching/mazaal/sub_080347B4.inc @@ -0,0 +1,40 @@ + + .syntax unified + push {r4, r5, lr} + adds r2, r0, #0 + ldr r0, _080347D8 @ =gPlayerEntity + movs r1, #0x2e + ldrsh r3, [r0, r1] + ldr r0, _080347DC @ =gRoomControls + ldrh r4, [r0, #6] + subs r0, r3, #4 + movs r5, #0x2e + ldrsh r1, [r2, r5] + cmp r0, r1 + bls _080347E0 + adds r0, r4, #0 + adds r0, #0xe0 + cmp r0, r1 + blo _080347F8 + movs r0, #8 + b _080347F0 + .align 2, 0 +_080347D8: .4byte gPlayerEntity +_080347DC: .4byte gRoomControls +_080347E0: + adds r0, r3, #4 + cmp r0, r1 + bhs _080347F8 + adds r0, r4, #0 + adds r0, #0x90 + cmp r0, r1 + bhi _080347F8 + movs r0, #0x18 +_080347F0: + strb r0, [r2, #0x15] + adds r0, r2, #0 + bl sub_0806F69C +_080347F8: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/mazaal/sub_080348A4.inc b/asm/non_matching/mazaal/sub_080348A4.inc new file mode 100644 index 00000000..0143b5c0 --- /dev/null +++ b/asm/non_matching/mazaal/sub_080348A4.inc @@ -0,0 +1,130 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + adds r3, r1, #0 + adds r5, r2, #0 + ldrb r0, [r3, #0xa] + cmp r0, #0 + bne _080348C6 + movs r2, #5 + movs r0, #0x7d + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + movs r0, #0x10 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + b _080348C8 +_080348C6: + movs r2, #0xa +_080348C8: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + ands r0, r2 + cmp r0, #0 + beq _080348F0 + adds r0, r4, #0 + adds r0, #0x7d + ldrb r2, [r0] + ldrb r1, [r3, #0xa] + adds r3, r0, #0 + cmp r1, #0 + bne _080348E6 + movs r0, #1 + b _080348E8 +_080348E6: + movs r0, #2 +_080348E8: + orrs r0, r2 + strb r0, [r3] + movs r0, #0 + b _08034998 +_080348F0: + cmp r5, #8 + bhi _08034996 + lsls r0, r5, #2 + ldr r1, _08034900 @ =_08034904 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08034900: .4byte _08034904 +_08034904: @ jump table + .4byte _08034928 @ case 0 + .4byte _0803492E @ case 1 + .4byte _0803493C @ case 2 + .4byte _0803494A @ case 3 + .4byte _0803493C @ case 4 + .4byte _08034958 @ case 5 + .4byte _08034966 @ case 6 + .4byte _0803496C @ case 7 + .4byte _08034982 @ case 8 +_08034928: + movs r0, #3 + strb r0, [r3, #0xc] + b _08034996 +_0803492E: + movs r0, #4 + strb r0, [r3, #0xc] + adds r1, r3, #0 + adds r1, #0x7c + movs r0, #3 + strb r0, [r1] + b _08034996 +_0803493C: + movs r0, #4 + strb r0, [r3, #0xc] + adds r1, r3, #0 + adds r1, #0x7c + movs r0, #1 + strb r0, [r1] + b _08034996 +_0803494A: + movs r0, #0xf + strb r0, [r3, #0xc] + adds r1, r3, #0 + adds r1, #0x7e + movs r0, #0xb4 + strh r0, [r1] + b _08034996 +_08034958: + movs r0, #0xf + strb r0, [r3, #0xc] + adds r1, r3, #0 + adds r1, #0x7e + movs r0, #1 + strh r0, [r1] + b _08034996 +_08034966: + movs r0, #0x1e + strb r0, [r3, #0xc] + b _08034996 +_0803496C: + movs r0, #0x1b + strb r0, [r3, #0xc] + ldrb r1, [r3, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3, #0x10] + adds r0, r3, #0 + movs r1, #5 + bl InitializeAnimation + b _08034996 +_08034982: + ldrb r0, [r3, #0xa] + adds r2, r0, #2 + movs r0, #0x36 + adds r1, r2, #0 + bl CreateEnemy + adds r3, r0, #0 + cmp r3, #0 + beq _08034996 + str r4, [r3, #0x50] +_08034996: + movs r0, #1 +_08034998: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/mazaal/sub_08034A10.inc b/asm/non_matching/mazaal/sub_08034A10.inc new file mode 100644 index 00000000..0b1bacf8 --- /dev/null +++ b/asm/non_matching/mazaal/sub_08034A10.inc @@ -0,0 +1,67 @@ + + .syntax unified + push {r4, lr} + adds r1, r0, #0 + adds r3, r1, #0 + adds r3, #0x7d + ldrb r2, [r3] + movs r0, #0x60 + ands r0, r2 + cmp r0, #0x40 + beq _08034A52 + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _08034A56 + adds r4, r1, #0 + adds r4, #0x80 + ldrb r1, [r4] + movs r0, #5 + ands r0, r1 + cmp r0, #0 + beq _08034A3E + movs r0, #0x40 + orrs r0, r2 + strb r0, [r3] +_08034A3E: + ldrb r1, [r4] + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + beq _08034A7E + ldrb r1, [r3] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _08034A7E +_08034A52: + movs r0, #1 + b _08034A80 +_08034A56: + adds r4, r1, #0 + adds r4, #0x80 + ldrb r1, [r4] + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + beq _08034A6A + movs r0, #0x40 + orrs r0, r2 + strb r0, [r3] +_08034A6A: + ldrb r1, [r4] + movs r0, #5 + ands r0, r1 + cmp r0, #0 + beq _08034A7E + ldrb r1, [r3] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _08034A52 +_08034A7E: + movs r0, #0 +_08034A80: + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/mazaal/sub_08034B38.inc b/asm/non_matching/mazaal/sub_08034B38.inc new file mode 100644 index 00000000..58dda627 --- /dev/null +++ b/asm/non_matching/mazaal/sub_08034B38.inc @@ -0,0 +1,56 @@ + + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08034B58 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + adds r1, #3 + adds r0, r4, #0 + bl InitializeAnimation + b _08034B9A +_08034B58: + movs r0, #0xe + bl sub_080A7EE0 + adds r5, r0, #0 + cmp r5, #0 + beq _08034B9A + ldrb r0, [r4, #0xa] + subs r0, #2 + strb r0, [r5, #0xa] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08034B78 + ldrb r1, [r4, #0xe] + movs r0, #0xa8 + subs r0, r0, r1 + b _08034B7C +_08034B78: + ldrb r0, [r4, #0xe] + adds r0, #0x58 +_08034B7C: + strb r0, [r5, #0x15] + ldrb r0, [r5, #0xa] + lsls r0, r0, #1 + ldr r1, _08034B9C @ =gUnk_080CED84 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl PositionRelative +_08034B9A: + pop {r4, r5, pc} + .align 2, 0 +_08034B9C: .4byte gUnk_080CED84 + .syntax divided diff --git a/asm/non_matching/mazaal/sub_0803A188.inc b/asm/non_matching/mazaal/sub_0803A188.inc new file mode 100644 index 00000000..a1161bd4 --- /dev/null +++ b/asm/non_matching/mazaal/sub_0803A188.inc @@ -0,0 +1,105 @@ + + .syntax unified + + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r3, [r4, #0xa] + cmp r3, #1 + bhi _0803A23E + ldrb r0, [r4, #0xc] + cmp r0, #0x2b + beq _0803A210 + adds r0, r4, #0 + adds r0, #0x3d + movs r1, #0 + ldrsb r1, [r0, r1] + adds r5, r0, #0 + cmp r1, #0 + ble _0803A23E + adds r0, #4 + ldrb r0, [r0] + cmp r0, #0x95 + beq _0803A1B2 + cmp r0, #0x8e + bne _0803A23E +_0803A1B2: + movs r0, #0x28 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r2, [r4, #0x50] + adds r0, r2, #0 + adds r0, #0x7d + ldrb r1, [r0] + cmp r3, #0 + bne _0803A1CE + movs r0, #1 + b _0803A1D0 +_0803A1CE: + movs r0, #2 +_0803A1D0: + orrs r1, r0 + adds r0, r2, #0 + adds r0, #0x7d + strb r1, [r0] + adds r0, #3 + ldrb r2, [r0] + ldrb r1, [r4, #0xa] + adds r3, r0, #0 + cmp r1, #0 + bne _0803A1E8 + movs r0, #1 + b _0803A1EA +_0803A1E8: + movs r0, #2 +_0803A1EA: + orrs r0, r2 + strb r0, [r3] + ldr r2, [r4, #0x54] + ldrb r1, [r5] + adds r0, r2, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r2, [r4, #0x74] + ldrb r1, [r5] + adds r0, r2, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r0, _0803A20C @ =0x00000127 + bl SoundReq + b _0803A23E + .align 2, 0 +_0803A20C: .4byte 0x00000127 +_0803A210: + ldr r2, [r4, #0x54] + adds r3, r4, #0 + adds r3, #0x3d + ldrb r1, [r3] + adds r0, r2, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r2, [r4, #0x74] + ldrb r1, [r3] + adds r0, r2, #0 + adds r0, #0x3d + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0x18 + bl InitializeAnimation + ldr r0, [r4, #0x54] + movs r1, #9 + bl InitAnimationForceUpdate + ldr r0, _0803A248 @ =0x00000127 + bl SoundReq +_0803A23E: + ldr r1, _0803A24C @ =gUnk_080CFC14 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_0803A248: .4byte 0x00000127 +_0803A24C: .4byte gUnk_080CFC14 + + .syntax divided diff --git a/asm/non_matching/mazaal/sub_0803AA98.inc b/asm/non_matching/mazaal/sub_0803AA98.inc new file mode 100644 index 00000000..fa5339dc --- /dev/null +++ b/asm/non_matching/mazaal/sub_0803AA98.inc @@ -0,0 +1,60 @@ + + .syntax unified + + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803AB0C @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B870 + cmp r0, #0 + bne _0803AB0A + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_0803B6F4 + cmp r0, #0 + beq _0803AB0A + movs r0, #0x14 + strb r0, [r4, #0xc] + movs r0, #0x40 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0xa + bl InitializeAnimation + ldr r2, [r4, #0x74] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + ldr r2, [r4, #0x54] + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x13 + strb r0, [r1] + adds r0, r2, #0 + movs r1, #5 + bl InitAnimationForceUpdate + movs r0, #0xb7 + lsls r0, r0, #1 + bl SoundReq +_0803AB0A: + pop {r4, pc} + .align 2, 0 +_0803AB0C: .4byte gUnk_080CED6C + + .syntax divided diff --git a/asm/non_matching/mazaal/sub_0803BA8C.inc b/asm/non_matching/mazaal/sub_0803BA8C.inc new file mode 100644 index 00000000..3b0fd69f --- /dev/null +++ b/asm/non_matching/mazaal/sub_0803BA8C.inc @@ -0,0 +1,129 @@ + + .syntax unified + + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r1, #0 + adds r4, r6, #0 + adds r4, #0x74 + ldrb r3, [r4] + movs r2, #0xe0 + ands r2, r3 + cmp r2, #0 + bne _0803BAEC + cmp r3, #0 + bne _0803BAD2 + adds r2, r6, #0 + adds r2, #0x75 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bls _0803BABA + strb r1, [r2] +_0803BABA: + ldrb r0, [r6, #0xa] + cmp r0, #2 + bne _0803BAC8 + ldr r1, _0803BAC4 @ =gUnk_080CFD30 + b _0803BACA + .align 2, 0 +_0803BAC4: .4byte gUnk_080CFD30 +_0803BAC8: + ldr r1, _0803BAE8 @ =gUnk_080CFD44 +_0803BACA: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] +_0803BAD2: + adds r2, r6, #0 + adds r2, #0x74 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + cmp r5, r0 + bhi _0803BB18 + movs r0, #0 + strb r0, [r2] + b _0803BB18 + .align 2, 0 +_0803BAE8: .4byte gUnk_080CFD44 +_0803BAEC: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _0803BB18 + movs r0, #0x80 + orrs r0, r3 + strb r0, [r4] + movs r0, #0x20 + ands r2, r0 + cmp r2, #0 + beq _0803BB0C + ldr r1, _0803BB08 @ =gUnk_080CFD58 + b _0803BB0E + .align 2, 0 +_0803BB08: .4byte gUnk_080CFD58 +_0803BB0C: + ldr r1, _0803BB78 @ =gUnk_080CFD5C +_0803BB0E: + ldrb r0, [r6, #0xa] + subs r0, #2 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] +_0803BB18: + cmp r1, #0 + beq _0803BB74 + adds r0, r6, #0 + bl sub_0801D2B4 + ldr r0, [r6, #0x50] + ldr r4, [r0, #0x78] + ldrb r1, [r6, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x1a] + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldr r0, [r6, #0x50] + ldr r5, [r0, #0x78] + ldrb r1, [r6, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x18 + ldrb r4, [r5, #0x1a] + movs r2, #0xf + adds r0, r2, #0 + ands r0, r4 + orrs r0, r1 + strb r0, [r5, #0x1a] + ldr r0, [r6, #0x50] + ldr r4, [r0, #0x54] + ldrb r0, [r6, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r1, [r4, #0x1a] + ands r3, r1 + orrs r3, r0 + strb r3, [r4, #0x1a] + ldr r0, [r6, #0x50] + ldr r3, [r0, #0x54] + ldrb r0, [r6, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x18 + ldrb r1, [r3, #0x1a] + ands r2, r1 + orrs r2, r0 + strb r2, [r3, #0x1a] +_0803BB74: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803BB78: .4byte gUnk_080CFD5C + .syntax divided diff --git a/data/const/enemy/mazaalBracelet.s b/data/const/enemy/mazaalBracelet.s deleted file mode 100644 index 26632bd9..00000000 --- a/data/const/enemy/mazaalBracelet.s +++ /dev/null @@ -1,109 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - - -gUnk_080CFC14:: @ 080CFC14 - .4byte sub_0803A170 - .4byte sub_0803A188 - .4byte sub_08001324 - .4byte sub_0804A7D4 - .4byte sub_08001242 - .4byte nullsub_167 - -gUnk_080CFC2C:: @ 080CFC2C - .4byte sub_0803A254 - .4byte sub_0803A254 - .4byte sub_0803B8F8 - .4byte sub_0803B8F8 - -gUnk_080CFC3C:: @ 080CFC3C - .4byte sub_0803A274 - .4byte sub_0803A364 - .4byte sub_0803A548 - .4byte sub_0803A58C - .4byte sub_0803A5D0 - .4byte sub_0803A60C - .4byte sub_0803A660 - .4byte sub_0803A6E8 - .4byte sub_0803A720 - .4byte sub_0803A740 - .4byte sub_0803A780 - .4byte sub_0803A7AC - .4byte sub_0803A7CC - .4byte sub_0803A814 - .4byte sub_0803A86C - .4byte sub_0803A8B8 - .4byte sub_0803A90C - .4byte sub_0803A978 - .4byte sub_0803AA00 - .4byte sub_0803AA98 - .4byte sub_0803AB10 - .4byte sub_0803AB5C - .4byte sub_0803ABB4 - .4byte sub_0803AC1C - .4byte sub_0803AC60 - .4byte sub_0803ACC0 - .4byte sub_0803ADAC - .4byte sub_0803ADF4 - .4byte sub_0803AE48 - .4byte sub_0803AEC4 - .4byte sub_0803AF18 - .4byte sub_0803AF50 - .4byte sub_0803AF7C - .4byte sub_0803AF9C - .4byte sub_0803AFC8 - .4byte sub_0803AFE0 - .4byte sub_0803B01C - .4byte sub_0803B04C - .4byte sub_0803B074 - .4byte sub_0803B0D4 - .4byte sub_0803B100 - .4byte sub_0803B144 - .4byte sub_0803B17C - .4byte sub_0803B1B8 - .4byte sub_0803B2D0 - .4byte sub_0803B30C - .4byte sub_0803B338 - .4byte sub_0803B35C - .4byte sub_0803B398 - .4byte sub_0803B3F4 - .4byte sub_0803B480 - -gUnk_080CFD08:: @ 080CFD08 - .incbin "baserom.gba", 0x0CFD08, 0x0000002 - -gUnk_080CFD0A:: @ 080CFD0A - .incbin "baserom.gba", 0x0CFD0A, 0x0000002 - -gUnk_080CFD0C:: @ 080CFD0C - .incbin "baserom.gba", 0x0CFD0C, 0x000000D - -gUnk_080CFD19:: @ 080CFD19 - .incbin "baserom.gba", 0x0CFD19, 0x0000002 - -gUnk_080CFD1B:: @ 080CFD1B - .incbin "baserom.gba", 0x0CFD1B, 0x0000002 - -gUnk_080CFD1D:: @ 080CFD1D - .incbin "baserom.gba", 0x0CFD1D, 0x0000003 - -gUnk_080CFD20:: @ 080CFD20 - .4byte sub_0803B910 - .4byte sub_0803B978 - .4byte sub_0803BA6C - .4byte sub_0803BA80 - -gUnk_080CFD30:: @ 080CFD30 - .incbin "baserom.gba", 0x0CFD30, 0x0000014 - -gUnk_080CFD44:: @ 080CFD44 - .incbin "baserom.gba", 0x0CFD44, 0x0000014 - -gUnk_080CFD58:: @ 080CFD58 - .incbin "baserom.gba", 0x0CFD58, 0x0000004 - -gUnk_080CFD5C:: @ 080CFD5C - .incbin "baserom.gba", 0x0CFD5C, 0x0000004 diff --git a/data/const/enemy/mazaalHand.s b/data/const/enemy/mazaalHand.s deleted file mode 100644 index 0d65c322..00000000 --- a/data/const/enemy/mazaalHand.s +++ /dev/null @@ -1,27 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080CEF34:: @ 080CEF34 - .4byte gUnk_080FD394 - .4byte gUnk_080FD394 - .4byte gUnk_080FD394 - .4byte gUnk_080FD39C - .4byte gUnk_080FD3A4 - .4byte gUnk_080FD3AC - .4byte gUnk_080FD3AC - .4byte gUnk_080FD3AC - .4byte gUnk_080FD3AC - -gUnk_080CEF58:: @ 080CEF58 - .4byte gUnk_080FD3B4 - .4byte gUnk_080FD3B4 - .4byte gUnk_080FD3B4 - .4byte gUnk_080FD3BC - .4byte gUnk_080FD3A4 - .4byte gUnk_080FD3C4 - .4byte gUnk_080FD3C4 - .4byte gUnk_080FD3C4 - .4byte gUnk_080FD3C4 diff --git a/data/const/enemy/mazaalHead.s b/data/const/enemy/mazaalHead.s deleted file mode 100644 index 58b68b47..00000000 --- a/data/const/enemy/mazaalHead.s +++ /dev/null @@ -1,96 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080CEC88:: @ 080CEC88 - .4byte sub_08033EF0 - .4byte sub_08033F08 - .4byte sub_08001324 - .4byte sub_0804A7D4 - .4byte sub_08001242 - .4byte nullsub_160 - -gUnk_080CECA0:: @ 080CECA0 - .4byte sub_08033F1C - .4byte sub_08034A84 - .4byte sub_08034AC4 - .4byte sub_08034AC4 - .4byte sub_08034BC8 - -gUnk_080CECB4:: @ 080CECB4 - .4byte sub_08033F3C - .4byte sub_08033FFC - .4byte sub_0803414C - .4byte sub_080341B8 - .4byte sub_080341D0 - .4byte sub_080341F4 - .4byte sub_08034210 - .4byte sub_08034240 - .4byte sub_08034274 - .4byte sub_080342A0 - .4byte sub_080342B4 - .4byte sub_080342C8 - .4byte sub_08034348 - .4byte sub_0803438C - -gUnk_080CECEC:: @ 080CECEC - .incbin "baserom.gba", 0x0CECEC, 0x0000008 - -gUnk_080CECF4:: @ 080CECF4 - .incbin "baserom.gba", 0x0CECF4, 0x000000E - -gUnk_080CED02:: @ 080CED02 - .incbin "baserom.gba", 0x0CED02, 0x0000004 - -gUnk_080CED06:: @ 080CED06 - .incbin "baserom.gba", 0x0CED06, 0x0000006 - -gUnk_080CED0C:: @ 080CED0C - .4byte sub_08034578 - .4byte sub_080344E0 - .4byte sub_0803451C - .4byte sub_080344E0 - .4byte sub_08034558 - .4byte sub_080344E0 - .4byte sub_0803451C - .4byte sub_080346A0 - -gUnk_080CED2C:: @ 080CED2C - .4byte sub_08034578 - .4byte sub_080345D0 - .4byte sub_0803451C - .4byte sub_080346A0 - .4byte sub_08034558 - .4byte sub_080345D0 - .4byte sub_08034558 - .4byte sub_080346A0 - -gUnk_080CED4C:: @ 080CED4C - .4byte sub_08034578 - .4byte sub_080345D0 - .4byte sub_080346C8 - .4byte sub_080346A0 - .4byte sub_08034558 - .4byte sub_080346C8 - .4byte sub_080346A0 - .4byte sub_080346C8 - -gUnk_080CED6C:: @ 080CED6C - .incbin "baserom.gba", 0x0CED6C, 0x0000008 - -gUnk_080CED74:: @ 080CED74 - .4byte sub_08034AEC - .4byte sub_08034B0C - .4byte sub_08034B38 - .4byte sub_08034BA0 - -gUnk_080CED84:: @ 080CED84 - .incbin "baserom.gba", 0x0CED84, 0x0000004 - -gUnk_080CED88:: @ 080CED88 - .incbin "baserom.gba", 0x0CED88, 0x0000014 - -gUnk_080CED9C:: @ 080CED9C - .incbin "baserom.gba", 0x0CED9C, 0x0000014 diff --git a/data/const/enemy/mazaalMacro.s b/data/const/enemy/mazaalMacro.s deleted file mode 100644 index 3c64ef30..00000000 --- a/data/const/enemy/mazaalMacro.s +++ /dev/null @@ -1,37 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080CEE90:: @ 080CEE90 - .4byte sub_08034C7C - .4byte sub_08034CA4 - .4byte sub_08001324 - .4byte sub_08034CBC - .4byte sub_08001242 - -gUnk_080CEEA4:: @ 080CEEA4 - .4byte sub_08034CC4 - .4byte sub_08034D4C - .4byte sub_08034DC8 - -gUnk_080CEEB0:: @ 080CEEB0 - .4byte sub_08034E30 - .4byte sub_08034E68 - .4byte sub_08034EC0 - .4byte sub_08034ED8 - .4byte sub_08034EE4 - .4byte sub_08034F58 - -gUnk_080CEEC8:: @ 080CEEC8 - .incbin "baserom.gba", 0x0CEEC8, 0x0000004 - -gUnk_080CEECC:: @ 080CEECC - .incbin "baserom.gba", 0x0CEECC, 0x000000C - -gUnk_080CEED8:: @ 080CEED8 - .incbin "baserom.gba", 0x0CEED8, 0x0000004 - -gUnk_080CEEDC:: @ 080CEEDC - .incbin "baserom.gba", 0x0CEEDC, 0x000002C diff --git a/linker.ld b/linker.ld index fcf63a1a..e281d0ce 100644 --- a/linker.ld +++ b/linker.ld @@ -185,7 +185,6 @@ SECTIONS { . = 0x00001020; gUnk_03001020 = .; . = 0x000010A0; gScreenTransition = .; . = 0x000010AC; gUnk_030010AC = .; - . = 0x000010D8; gUnk_030010D8 = .; . = 0x000010EC; gUnk_030010EC = .; . = 0x0000110C; gUnk_0300110C = .; . = 0x00001150; gRand = .; @@ -396,9 +395,9 @@ SECTIONS { asm/bombarossa.o(.text); src/enemy/wisp.o(.text); asm/spinyBeetle.o(.text); - asm/mazaalHead.o(.text); - asm/mazaalMacro.o(.text); - asm/mazaalHand.o(.text); + src/enemy/mazaalHead.o(.text); + src/enemy/mazaalMacro.o(.text); + src/enemy/mazaalHand.o(.text); asm/octorokBoss.o(.text); asm/flyingPot.o(.text); src/enemy/gibdo.o(.text); @@ -410,7 +409,7 @@ SECTIONS { asm/cuccoAggr.o(.text); asm/stalfos.o(.text); asm/flyingSkull.o(.text); - asm/mazaalBracelet.o(.text); + src/enemy/mazaalBracelet.o(.text); asm/takkuri.o(.text); src/enemy/bowMoblin.o(.text); asm/bowMoblin.o(.text); @@ -1093,11 +1092,11 @@ SECTIONS { data/animations/enemy/wisp.o(.rodata); data/const/enemy/spinyBeetle.o(.rodata); data/animations/enemy/spinyBeetle.o(.rodata); - data/const/enemy/mazaalHead.o(.rodata); + src/enemy/mazaalHead.o(.rodata); data/animations/enemy/mazaalHead.o(.rodata); - data/const/enemy/mazaalMacro.o(.rodata); + src/enemy/mazaalMacro.o(.rodata); data/animations/enemy/mazaalMacro.o(.rodata); - data/const/enemy/mazaalHand.o(.rodata); + src/enemy/mazaalHand.o(.rodata); data/animations/enemy/mazaalHand.o(.rodata); data/const/enemy/octorokBoss.o(.rodata); data/animations/enemy/octorokBoss.o(.rodata); @@ -1117,7 +1116,7 @@ SECTIONS { data/animations/enemy/stalfos.o(.rodata); data/const/enemy/flyingSkull.o(.rodata); data/animations/enemy/flyingSkull.o(.rodata); - data/const/enemy/mazaalBracelet.o(.rodata); + src/enemy/mazaalBracelet.o(.rodata); data/animations/enemy/mazaalBracelet.o(.rodata); data/const/enemy/takkuri.o(.rodata); data/const/enemy/bowMoblin.o(.rodata); diff --git a/src/enemy/mazaalBracelet.c b/src/enemy/mazaalBracelet.c new file mode 100644 index 00000000..819b0a13 --- /dev/null +++ b/src/enemy/mazaalBracelet.c @@ -0,0 +1,1398 @@ +#include "global.h" +#include "enemy.h" +#include "audio.h" +#include "random.h" +#include "object.h" +#include "functions.h" + +void sub_0803B538(Entity*); +u32 sub_0803B4E4(Entity*); +void sub_0803B55C(Entity*); +void sub_0803B4D4(Entity*); +void sub_0803B59C(Entity*); +void sub_0803B5C0(Entity*); +u32 sub_0803B610(Entity*); +void sub_0803B63C(Entity*); +void sub_0803B6A4(Entity*); +u32 sub_0803B6F4(Entity*); +void sub_0803B8E8(Entity*, u32); +u32 sub_0803B870(Entity*); +void sub_0803B824(Entity*); +void sub_0803B804(Entity*); +void sub_0803B798(void); +void sub_0803BA8C(Entity*, u32); + +void sub_0803B724(Entity*); +extern void sub_0800449C(Entity*, u32); + +void sub_0803A170(Entity*); +void sub_0803A188(Entity*); +void nullsub_167(Entity*); +void sub_0803A254(Entity*); +void sub_0803B8F8(Entity*); + +void sub_0803A274(Entity*); +void sub_0803A364(Entity*); +void sub_0803A548(Entity*); +void sub_0803A58C(Entity*); +void sub_0803A5D0(Entity*); +void sub_0803A60C(Entity*); +void sub_0803A660(Entity*); +void sub_0803A6E8(Entity*); +void sub_0803A720(Entity*); +void sub_0803A740(Entity*); +void sub_0803A780(Entity*); +void sub_0803A7AC(Entity*); +void sub_0803A7CC(Entity*); +void sub_0803A814(Entity*); +void sub_0803A86C(Entity*); +void sub_0803A8B8(Entity*); +void sub_0803A90C(Entity*); +void sub_0803A978(Entity*); +void sub_0803AA00(Entity*); +void sub_0803AA98(Entity*); +void sub_0803AB10(Entity*); +void sub_0803AB5C(Entity*); +void sub_0803ABB4(Entity*); +void sub_0803AC1C(Entity*); +void sub_0803AC60(Entity*); +void sub_0803ACC0(Entity*); +void sub_0803ADAC(Entity*); +void sub_0803ADF4(Entity*); +void sub_0803AE48(Entity*); +void sub_0803AEC4(Entity*); +void sub_0803AF18(Entity*); +void sub_0803AF50(Entity*); +void sub_0803AF7C(Entity*); +void sub_0803AF9C(Entity*); +void sub_0803AFC8(Entity*); +void sub_0803AFE0(Entity*); +void sub_0803B01C(Entity*); +void sub_0803B04C(Entity*); +void sub_0803B074(Entity*); +void sub_0803B0D4(Entity*); +void sub_0803B100(Entity*); +void sub_0803B144(Entity*); +void sub_0803B17C(Entity*); +void sub_0803B1B8(Entity*); +void sub_0803B2D0(Entity*); +void sub_0803B30C(Entity*); +void sub_0803B338(Entity*); +void sub_0803B35C(Entity*); +void sub_0803B398(Entity*); +void sub_0803B3F4(Entity*); +void sub_0803B480(Entity*); + +void sub_0803B910(Entity*); +void sub_0803B978(Entity*); +void sub_0803BA6C(Entity*); +void sub_0803BA80(Entity*); + +extern u8 gEntCount; +// these are not with the rest of this files constant data +extern Hitbox gUnk_080FD35C; +extern Hitbox gUnk_080FD364; +extern Hitbox gUnk_080FD36C; +extern Hitbox gUnk_080FD374; + +void (*const gUnk_080CFC14[])(Entity*) = { sub_0803A170, sub_0803A188, sub_08001324, + sub_0804A7D4, sub_08001242, nullsub_167 }; + +void (*const gUnk_080CFC2C[])(Entity*) = { sub_0803A254, sub_0803A254, sub_0803B8F8, sub_0803B8F8 }; + +void (*const gUnk_080CFC3C[])(Entity*) = { + sub_0803A274, sub_0803A364, sub_0803A548, sub_0803A58C, sub_0803A5D0, sub_0803A60C, sub_0803A660, sub_0803A6E8, + sub_0803A720, sub_0803A740, sub_0803A780, sub_0803A7AC, sub_0803A7CC, sub_0803A814, sub_0803A86C, sub_0803A8B8, + sub_0803A90C, sub_0803A978, sub_0803AA00, sub_0803AA98, sub_0803AB10, sub_0803AB5C, sub_0803ABB4, sub_0803AC1C, + sub_0803AC60, sub_0803ACC0, sub_0803ADAC, sub_0803ADF4, sub_0803AE48, sub_0803AEC4, sub_0803AF18, sub_0803AF50, + sub_0803AF7C, sub_0803AF9C, sub_0803AFC8, sub_0803AFE0, sub_0803B01C, sub_0803B04C, sub_0803B074, sub_0803B0D4, + sub_0803B100, sub_0803B144, sub_0803B17C, sub_0803B1B8, sub_0803B2D0, sub_0803B30C, sub_0803B338, sub_0803B35C, + sub_0803B398, sub_0803B3F4, sub_0803B480 +}; + +const s8 gUnk_080CFD08[] = { 10, -10 }; +const s8 gUnk_080CFD0A[] = { 0x30, -0x30 }; +const u8 gUnk_080CFD0C[] = { 0x14, 0x13, 0x13, 0x12, 0x12, 0x11, 0x10, 0x0f, 0x0f, 0x0e, 0x0e, 0x0d, 0x0c }; +const s8 gUnk_080CFD19[] = { 0x10, -0x10 }; +const s8 gUnk_080CFD1B[] = { -0x38, 0x38 }; +const s8 gUnk_080CFD1D[] = { -0x11, 0x11 }; + +void (*const gUnk_080CFD20[])(Entity*) = { sub_0803B910, sub_0803B978, sub_0803BA6C, sub_0803BA80 }; + +const u16 gUnk_080CFD30[] = { 0xdb, 0xdd, 0xdf, 0xe1, 0xdf, 0xdd, 0xdb, 0xe3, 0xe5, 0xe3 }; +const u16 gUnk_080CFD44[] = { 0xdc, 0xde, 0xe0, 0xe2, 0xe0, 0xde, 0xdc, 0xe4, 0xe6, 0xe4 }; +const u16 gUnk_080CFD58[] = { 0xe5, 0xe6 }; +const u16 gUnk_080CFD5C[] = { 0xe7, 0xe8 }; + +extern s8 gUnk_080CED6C[8]; + +void MazaalBracelet(Entity* this) { + gUnk_080CFC14[GetNextFunction(this)](this); +} + +void sub_0803A170(Entity* this) { + gUnk_080CFC2C[this->type](this); +} + +NONMATCH("asm/non_matching/mazaal/sub_0803A188.inc", void sub_0803A188(Entity* this)) { + Entity* pEVar3; + Entity* entity74; + + if (this->type < 2) { + if (this->action != 0x2b) { + if ((0 < this->iframes) && ((this->bitfield == 0x95 || (this->bitfield == 0x8e)))) { + this->action = 0x28; + this->flags = this->flags & 0x7f; + pEVar3 = this->parent; + pEVar3->field_0x7c.BYTES.byte1 = pEVar3->field_0x7c.BYTES.byte1 | (this->type == 0 ? 1 : 2); + pEVar3->field_0x80.HALF.LO = (this->type == 0 ? 1 : 2) | pEVar3->field_0x80.HALF.LO; + this->attachedEntity->iframes = this->iframes; + entity74 = *(Entity**)&this->field_0x74; + entity74->iframes = this->iframes; + SoundReq(SFX_BOSS_HIT); + } + } else { + this->attachedEntity->iframes = this->iframes; + entity74 = *(Entity**)&this->field_0x74; + entity74->iframes = this->iframes; + InitializeAnimation(this, 0x18); + InitAnimationForceUpdate(this->attachedEntity, 9); + SoundReq(SFX_BOSS_HIT); + } + } + sub_0804AA30(this, gUnk_080CFC14); +} +END_NONMATCH + +void nullsub_167(Entity* this) { +} + +void sub_0803A254(Entity* this) { + gUnk_080CFC3C[this->action](this); + sub_0803B538(this); +} + +void sub_0803A274(Entity* this) { + Entity* pEVar1; + + if (gEntCount < 0x45) { + if (this->type == 0) { + pEVar1 = CreateEnemy(0x38, 0); + pEVar1->parent = this; + this->attachedEntity = pEVar1; + pEVar1 = CreateEnemy(0x44, 2); + pEVar1->parent = this; + *(Entity**)&this->field_0x74 = pEVar1; + pEVar1 = CreateObject(OBJECT_7E, 1, 0); + pEVar1->parent = this; + pEVar1->attachedEntity = this->attachedEntity; + PositionRelative(this->parent, this, 0x100000, 0x200000); + } else { + pEVar1 = CreateEnemy(0x38, 1); + pEVar1->parent = this; + this->attachedEntity = pEVar1; + pEVar1 = CreateEnemy(0x44, 3); + pEVar1->parent = this; + *(Entity**)&this->field_0x74 = pEVar1; + pEVar1 = CreateObject(OBJECT_7E, 2, 0); + pEVar1->parent = this; + pEVar1->attachedEntity = this->attachedEntity; + this->spriteSettings.b.flipX = 1; + PositionRelative(this->parent, this, -0x100000, 0x200000); + } + if (gScreenTransition.field_0x38 != 0) { + this->action = 3; + this->flags |= 0x80; + this->spriteSettings.b.draw = 1; + this->attachedEntity->spriteSettings.b.draw = 1; + InitializeAnimation(this, 0x10); + } else { + this->action = 1; + InitializeAnimation(this, 4); + } + } +} + +void sub_0803A364(Entity* this) { + u8 uVar1; + Entity* pEVar3; + u32 index; + s8* ptr; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + switch (this->subAction & 0x7f) { + case 0: + case 2: + break; + case 1: + this->subAction = 2; + pEVar3 = this->attachedEntity; + pEVar3->spriteSettings.b.draw = 1; + pEVar3->spriteRendering.alphaBlend = 1; + break; + case 3: + this->subAction = 4; + this->spriteSettings.b.draw = 1; + this->attachedEntity->spriteRendering.alphaBlend = 0; + break; + case 4: + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->subAction = 5; + } + break; + case 5: + if (sub_0803B4E4(this) == 0) { + sub_0806F69C(this); + return; + } + this->type2 = 0; + uVar1 = 6; + this->subAction = uVar1; + this->actionDelay = 0x1e; + break; + case 6: + this->actionDelay--; + if (this->actionDelay == 0) { + this->subAction = 7; + InitializeAnimation(this, 5); + } + break; + case 7: + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->subAction = 8; + this->spriteSettings.b.draw = 0; + InitAnimationForceUpdate(this->attachedEntity, 8); + SoundReq(SFX_16E); + } + break; + case 8: + sub_0803B55C(this); + if ((this->attachedEntity->frames.all & 0x80) == 0) { + return; + } + uVar1 = 9; + this->subAction = uVar1; + this->actionDelay = 0x1e; + break; + case 9: + this->actionDelay--; + if (this->actionDelay == 0) { + this->subAction = 10; + InitAnimationForceUpdate(this->attachedEntity, 6); + } + break; + case 10: + sub_0803B55C(this); + if ((this->attachedEntity->frames.all & 0x80) != 0) { + this->subAction = 0xb; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 4); + } + break; + case 0xb: + GetNextFrame(this); + if ((this->frames.all & 0x80) == 0) { + return; + } + if (this->type2 != 0) { + uVar1 = 0xc; + this->subAction = uVar1; + this->actionDelay = 0x1e; + } else { + this->type2 = 1; + this->subAction = 6; + this->actionDelay = 10; + } + break; + default: + this->actionDelay--; + if (this->actionDelay == 0) { + this->flags = this->flags | 0x80; + sub_0803B4D4(this); + } + break; + } +} + +void sub_0803A548(Entity* this) { + u32 index; + s8* ptr; + + sub_0803B5C0(this); + UpdateAnimationSingleFrame(this); + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (sub_0803B4E4(this) == 0) { + sub_0806F69C(this); + } +} + +void sub_0803A58C(Entity* this) { + u32 index; + s8* ptr; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (sub_0803B4E4(this) != 0) { + sub_0803B59C(this); + } else { + sub_0806F69C(this); + } +} + +void sub_0803A5D0(Entity* this) { + u32 index; + s8* ptr; + + this->action = 5; + this->flags = this->flags & 0x7f; + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + InitializeAnimation(this, 5); +} + +void sub_0803A60C(Entity* this) { + u32 index; + s8* ptr; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 6; + this->spriteSettings.b.draw = 0; + InitAnimationForceUpdate(this->attachedEntity, 8); + } +} + +void sub_0803A660(Entity* this) { + u32 uVar2; + u8* pbVar3; + + s8* ptr; + u32 index; + + pbVar3 = &this->attachedEntity->frames.all; + if ((*pbVar3 & 0x80) != 0) { + if (this->height.HALF.HI > -0x50) { + this->height.HALF.HI = this->height.HALF.HI - 2; + } else { + this->action = 7; + this->actionDelay = 0; + uVar2 = GetFacingDirection(this, &gPlayerEntity); + this->direction = (u8)uVar2; + this->speed = 0x280; + return; + } + } else { + sub_0803B55C(this); + if ((*pbVar3 & 0x80) != 0) { + SoundReq(SFX_157); + } + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + } +} + +void sub_0803A6E8(Entity* this) { + s32 y; + + if (sub_0803B610(this)) { + this->action = 8; + this->actionDelay = 10; + } else { + sub_0803B63C(this); + sub_0806F69C(this); + y = this->parent->y.HALF.HI + 8; + if (y > this->y.HALF.HI) { + this->y.HALF.HI = y; + } + } +} + +void sub_0803A720(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 9; + sub_0803B8E8(this, 0x16); + } +} + +void sub_0803A740(Entity* this) { + u16 height; + + height = this->height.HALF.HI + 4; + this->height.HALF.HI += 4; + if (-1 < height * 0x10000) { + this->height.HALF.HI = 0; + this->action = 10; + this->actionDelay = 10; + this->parent->field_0x7c.BYTES.byte1 |= 0x40; + sub_0803B8E8(this, 0x13); + sub_08080964(10, 0); + SoundReq(SFX_158); + } +} + +void sub_0803A780(Entity* this) { + if (--this->actionDelay == 0) { + if (--this->field_0x7c.BYTES.byte0) { + this->action = 6; + } else { + this->action = 0xb; + } + } +} + +void sub_0803A7AC(Entity* this) { + if (this->height.HALF.HI > -6) { + this->height.HALF.HI--; + } else { + this->action = 0xc; + } +} + +void sub_0803A7CC(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (sub_0803B4E4(this)) { + this->action = 0xd; + InitAnimationForceUpdate(this->attachedEntity, 6); + } else { + sub_0806F69C(this); + } +} + +void sub_0803A814(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + sub_0803B55C(this); + if ((this->attachedEntity->frames.all & 0x80) != 0) { + this->action = 0xe; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 4); + } +} + +void sub_0803A86C(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->flags = this->flags | 0x80; + sub_0803B59C(this); + } +} + +void sub_0803A8B8(Entity* this) { + s8* ptr; + u32 index; + + this->action = 0x10; + this->actionDelay = 0x1e; + this->direction = 0; + this->speed = 0x80; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + InitializeAnimation(this, 6); + InitAnimationForceUpdate(this->attachedEntity, 1); + SoundReq(SFX_153); +} + +void sub_0803A90C(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + GetNextFrame(this); + sub_0803B55C(this); + sub_0806F69C(this); + this->actionDelay--; + if (this->actionDelay == 0) { + this->action = 0x11; + this->direction = this->type * 0x10 + 8; + this->speed = 0x200; + InitializeAnimation(this, 7); + InitAnimationForceUpdate(this->attachedEntity, 2); + } +} + +void sub_0803A978(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + GetNextFrame(this); + sub_0803B55C(this); + if ((++this->actionDelay & 3) == 0) { + sub_08004596(this, 0x10); + } + sub_0806F69C(this); + if (this->direction == 0x10) { + this->action = 0x12; + this->actionDelay = 3; + this->flags = this->flags & 0x7f; + *(u8*)(*(int*)&this->field_0x74 + 0x10) &= 0x7f; + InitializeAnimation(this, 8); + InitAnimationForceUpdate(this->attachedEntity, 3); + } +} + +void sub_0803AA00(Entity* this) { + u32 direction; + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (sub_0803B870(this) == 0) { + direction = (this->type ^ 1) * 0x10 + 8; + if ((++this->actionDelay & 3) == 0) { + sub_08004596(this, direction); + } + sub_0806F69C(this); + if ((this->direction == direction) || (this->y.HALF.HI >= gPlayerEntity.y.HALF.HI)) { + this->action = 0x13; + this->spriteSettings.b.draw = 0; + this->direction = direction; + this->field_0x80.HWORD = gPlayerEntity.x.HALF.HI; + InitAnimationForceUpdate(this->attachedEntity, 4); + } + } +} + +NONMATCH("asm/non_matching/mazaal/sub_0803AA98.inc", void sub_0803AA98(Entity* this)) { + Entity* temp; + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (sub_0803B870(this) == 0) { + sub_0806F69C(this); + if (sub_0803B6F4(this) != 0) { + this->action = 0x14; + this->speed = 0x40; + InitializeAnimation(this, 10); + (*(Entity**)&this->field_0x74)->flags |= 0x80; + temp = this->attachedEntity; + temp->damageType = 0x13; + InitAnimationForceUpdate(temp, 5); + SoundReq(SFX_16E); + } + } +} +END_NONMATCH + +void sub_0803AB10(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + sub_0806F69C(this); + sub_0803B55C(this); + if ((this->attachedEntity->frames.all & 0x80) != 0) { + this->action = 0x15; + this->actionDelay = 0xf; + } +} + +void sub_0803AB5C(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (--this->actionDelay == 0) { + this->action = 0x16; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 0xb); + InitAnimationForceUpdate(this->attachedEntity, 6); + } +} + +void sub_0803ABB4(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + GetNextFrame(this); + sub_0803B55C(this); + if ((this->attachedEntity->frames.all & 0x80) != 0) { + this->action = 0x17; + this->flags = this->flags | 0x80; + this->speed = 0x180; + InitializeAnimation(this, 0x10); + InitAnimationForceUpdate(this->attachedEntity, 0); + } +} + +void sub_0803AC1C(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (sub_0803B4E4(this)) { + sub_0803B59C(this); + } else { + sub_0806F69C(this); + } +} + +void sub_0803AC60(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + GetNextFrame(this); + if (!this->actionDelay) { + if (sub_0803B4E4(this) != 0) { + this->action = 0x19; + this->subAction = 0; + this->actionDelay = 0x1e; + } else { + sub_0806F69C(this); + } + } else { + this->actionDelay = this->actionDelay - 1; + } + sub_0803B824(this); +} + +void sub_0803ACC0(Entity* this) { + u16 uVar2; + + switch (this->subAction) { + default: + if (--this->actionDelay == 0) { + this->subAction = 1; + } + break; + case 1: + if (--this->height.HALF.HI * 0x10000 >> 0x10 < -0x20) { + this->subAction = 2; + } + break; + case 2: + uVar2 = this->height.HALF.HI += 4; + if (-1 < (uVar2 * 0x10000)) { + this->height.HALF.HI = 0; + this->actionDelay = 0xc; + this->subAction = 3; + sub_08080964(8, 0); + SoundReq(SFX_158); + sub_0803B804(this); + } + break; + case 3: + if (--this->actionDelay == 0) { + this->subAction = 4; + } + break; + case 4: + uVar2 = this->height.HALF.HI -= 2; + if (uVar2 * 0x10000 >> 0x10 < -0x28) { + this->subAction = 5; + } + break; + case 5: + uVar2 = this->height.HALF.HI += 4; + if (-1 < (uVar2 * 0x10000)) { + this->height.HALF.HI = 0; + this->action = 0x1a; + this->actionDelay = 0x3c; + sub_08080964(0x1e, 0); + SoundReq(SFX_158); + sub_0803B804(this); + return; + } + break; + } + sub_0803B824(this); +} + +void sub_0803ADAC(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 0x16; + this->spriteSettings.b.draw = 1; + (*(Entity**)&this->field_0x74)->flags |= 0x80; + InitializeAnimation(this, 0xb); + InitAnimationForceUpdate(this->attachedEntity, 6); + sub_0803B798(); + } else { + sub_0803B824(this); + } +} + +void sub_0803ADF4(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + UpdateAnimationSingleFrame(this); + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 0x1c; + this->actionDelay = 0x1e; + this->spriteSettings.b.draw = 0; + } +} + +void sub_0803AE48(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + UpdateAnimationSingleFrame(this); + if (((this->actionDelay == 0) || (--this->actionDelay == 0)) && ((this->parent->field_0x7c.BYTES.byte1 & 3) != 0)) { + this->action = 0x1d; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 4); + } else { + if (sub_0803B4E4(this) == 0) { + sub_0806F69C(this); + } + } +} + +void sub_0803AEC4(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + UpdateAnimationSingleFrame(this); + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->flags |= 0x80; + sub_0803B59C(this); + } +} + +void sub_0803AF18(Entity* this) { + this->action = 0x1f; + this->flags = this->flags & 0x7f; + InitializeAnimation(this, 5); + this->height.HALF.HI = gUnk_080CED6C[(this->parent->field_0xf >> 4) & 7] + 4; +} + +void sub_0803AF50(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 0x20; + this->spriteSettings.b.draw = 0; + InitAnimationForceUpdate(this->attachedEntity, 8); + } +} + +void sub_0803AF7C(Entity* this) { + sub_0803B55C(this); + if ((this->attachedEntity->frames.all & 0x80) != 0) { + this->action = 0x21; + this->actionDelay = 0xf; + } +} + +void sub_0803AF9C(Entity* this) { + if (this->actionDelay != 0) { + this->actionDelay--; + } else { + if (-0x20 < this->height.HALF.HI) { + this->height.HALF.HI -= 2; + } else { + this->action = 0x22; + this->actionDelay = 10; + } + } +} + +void sub_0803AFC8(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 0x23; + } +} + +void sub_0803AFE0(Entity* this) { + if (this->height.HALF.HI < 0) { + this->height.HALF.HI += 4; + } else { + this->action = 0x24; + this->actionDelay = 0xf0; + *(u8*)&this->cutsceneBeh = 3; + this->height.HALF.HI = 0; + sub_08080964(0xa0, 0); + SoundReq(SFX_158); + } +} + +void sub_0803B01C(Entity* this) { + if (--this->actionDelay == 0) { + this->action = 0x25; + } else { + if ((0x46 < this->actionDelay) && ((this->actionDelay & 0xf) == 0)) { + sub_0803B724(this); + } + } +} + +void sub_0803B04C(Entity* this) { + if (this->height.HALF.HI > -6) { + this->height.HALF.HI--; + } else { + this->action = 0x26; + InitAnimationForceUpdate(this->attachedEntity, 6); + } +} + +void sub_0803B074(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + sub_0803B55C(this); + if ((this->attachedEntity->frames.all & 0x80) != 0) { + this->action = 0x27; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 4); + InitAnimationForceUpdate(this->attachedEntity, 0); + } +} + +void sub_0803B0D4(Entity* this) { + UpdateAnimationSingleFrame(this); + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->flags |= 0x80; + sub_0803B59C(this); + } +} + +void sub_0803B100(Entity* this) { + Entity* temp; + + this->action = 0x29; + this->field_0x20 = 0x14000; + if (this->type == 0) { + this->hitbox = &gUnk_080FD364; + } else { + this->hitbox = &gUnk_080FD374; + } + temp = *(Entity**)&this->field_0x74; + temp->action = 3; + temp->field_0x74.HALF.LO = 0x20; + InitAnimationForceUpdate(this->attachedEntity, 9); + SoundReq(SFX_14F); +} + +void sub_0803B144(Entity* this) { + UpdateAnimationSingleFrame(this->attachedEntity); + if (sub_08003FC4(this, 0x2000) == 0) { + this->action = 0x2a; + InitializeAnimation(this, 0x16); + sub_0803B8E8(this, 0x14); + sub_08080964(8, 0); + } +} + +void sub_0803B17C(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 0x2b; + this->flags |= 0x80; + this->damageType = 0x18; + this->currentHealth = 0xff; + this->field_0x7c.HALF.HI = 600; + } +} + +void sub_0803B1B8(Entity* this) { + Entity* temp; + u16 val; + + if ((this->frames.all & 0x80) == 0) { + GetNextFrame(this); + UpdateAnimationSingleFrame(this->attachedEntity); + } + if (this->currentHealth < 0xf5) { + this->action = 0x32; + this->field_0x7c.HALF.HI = 0x5dc; + this->spriteSettings.b.draw = 0; + this->damageType = 0x14; + temp = CreateFx(this, 0x51, 0); + if (temp != (Entity*)0x0) { + temp->x.HALF.HI += this->hitbox->offset_x; + temp->y.HALF.HI += this->hitbox->offset_y; + temp->spritePriority.b0 = 3; + } + temp = CreateObject(0, 0x5e, 0); + if (temp != (Entity*)0x0) { + temp->actionDelay = 0; + temp->direction = 0x90; + PositionRelative(this, temp, this->hitbox->offset_x << 0x10, this->hitbox->offset_y << 0x10); + } + temp = *(Entity**)&this->field_0x74; + temp->field_0x74.HALF.LO = 0x40; + temp = this->parent; + temp->field_0x80.HALF.LO |= (this->type == 0) ? 4 : 8; + if ((temp->field_0x80.HALF.LO & 0xc) == 0xc) { + temp->action = 0xb; + temp->actionDelay = 0x78; + temp->field_0x20 = 0; + (*(Entity**)&temp->field_0x74)->field_0x7c.HALF_U.HI = 0x708; + (*(Entity**)&temp->field_0x78)->field_0x7c.HALF_U.HI = 0x708; + } + } else { + if (--this->field_0x7c.HALF.HI == 0) { + sub_0803B6A4(this); + } + } +} + +void sub_0803B2D0(Entity* this) { + Entity* entity; + + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 0x2d; + this->spriteSettings.b.draw = 0; + entity = *(Entity**)&this->field_0x74; + entity->action = 2; + entity->field_0x74.HALF.LO = 0; + entity->field_0x78.HWORD = 0; + InitializeAnimation(entity, 3); + } +} + +void sub_0803B30C(Entity* this) { + Entity* entity; + + entity = *(Entity**)&this->field_0x74; + if ((entity->frames.all & 0x80) != 0) { + this->action = 0x2e; + sub_0803B8E8(this, 0x13); + InitializeAnimation(entity, 0); + } +} + +void sub_0803B338(Entity* this) { + if (this->height.HALF.HI > -10) { + this->height.HALF.HI--; + } else { + this->action = 0x2f; + this->actionDelay = 0xf; + } +} + +void sub_0803B35C(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (--this->actionDelay == 0) { + this->action = 0x30; + } +} + +void sub_0803B398(Entity* this) { + s8* ptr; + u32 index; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + if (sub_0803B4E4(this) != 0) { + this->action = 0x31; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 4); + InitAnimationForceUpdate(this->attachedEntity, 0); + } else { + sub_0806F69C(this); + } +} + +void sub_0803B3F4(Entity* this) { + u8 value; + s8* ptr; + u32 index; + Entity* temp; + + ptr = gUnk_080CED6C; + index = ((this->parent->field_0xf >> 4) + 3); + this->height.HALF.HI = ptr[(index + (u32)this->type * 2) & 7] + 4; + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->damageType = 0x17; + if (this->type == 0) { + this->hitbox = (Hitbox*)&gUnk_080FD35C; + } else { + this->hitbox = &gUnk_080FD36C; + } + temp = this->parent; + value = (this->type == 0) ? 1 : 2; + temp->field_0x80.HALF.LO &= ~(((this->type == 0) ? 0x10 : 0x20) | value); + sub_0803B59C(this); + } +} + +void sub_0803B480(Entity* this) { + Entity* target; + + if (((this->field_0x7c.HALF.HI & 0x1f) == 0) && (target = CreateObject(0x2d, 1, 0), target != (Entity*)0x0)) { + PositionRelative(this, target, gUnk_080CFD08[this->type] << 0x10, 0); + } + if (--this->field_0x7c.HALF.HI == 0) { + sub_0803B6A4(this); + } +} + +void sub_0803B4D4(Entity* this) { + this->action = 3; + InitializeAnimation(this, 0x10); +} + +u32 sub_0803B4E4(Entity* this) { + u32 xoff; + u32 yoff; + + xoff = this->parent->x.HALF.HI + gUnk_080CFD0A[this->type]; + yoff = this->parent->y.HALF.HI + 0x10; + if (sub_0806FCB8(this, xoff, yoff, 2)) { + this->x.HALF.HI = xoff; + this->y.HALF.HI = yoff; + return 1; + } else { + this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, xoff, yoff); + return 0; + } +} + +void sub_0803B538(Entity* this) { + PositionRelative(this, this->attachedEntity, 0, -0x10000); + PositionRelative(this, *(Entity**)&this->field_0x74, 0, -0x20000); +} + +void sub_0803B55C(Entity* this) { + Entity* entity; + Entity* pEVar1; + + pEVar1 = *(Entity**)&this->field_0x74; + entity = this->attachedEntity; + UpdateAnimationSingleFrame(entity); + if ((entity->frames.all & 0x10) != 0) { + if (pEVar1->animIndex != 1) { + InitializeAnimation(pEVar1, 1); + } + } else { + if (pEVar1->animIndex != 0) { + InitializeAnimation(pEVar1, 0); + } + } +} + +void sub_0803B59C(Entity* this) { + this->action = 2; + this->parent->field_0x7c.BYTES.byte1 |= (this->type == 0) ? 1 : 2; +} + +void sub_0803B5C0(Entity* this) { + u32 direction; + u32 temp; + + direction = GetFacingDirection(this, &gPlayerEntity); + if (direction < 10) { + direction = 10; + } + if (direction > 0x16) { + direction = 0x16; + } + if (this->type == 0) { + temp = gUnk_080CFD0C[direction - 10]; + } else { + temp = gUnk_080CFD0C[0x16 - direction]; + } + if (this->frames.all != temp) { + InitializeAnimation(this, temp); + } +} + +u32 sub_0803B610(Entity* this) { + return sub_0806FCB8(this, gPlayerEntity.x.HALF.HI + gUnk_080CFD19[this->type], gPlayerEntity.y.HALF.HI - 0xc, 8); +} + +// sub_0803B698 was the tail of this function +void sub_0803B63C(Entity* this) { + int y; + int x; + + x = gPlayerEntity.x.HALF.HI; + x += gUnk_080CFD19[this->type]; + y = gPlayerEntity.y.HALF.HI - 0xc; + if (this->actionDelay++ >= 0xb5) { + this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, x, y); + } else { + sub_08004596(this, sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, x, y)); + } +} + +void sub_0803B6A4(Entity* this) { + Entity* temp; + + this->action = 0x2c; + this->damageType = 0x14; + temp = this->parent; + temp->field_0x80.HALF.LO |= (this->type == 0) ? 0x10 : 0x20; + temp->field_0x80.HALF.LO &= (this->type == 0) ? -5 : -9; + InitializeAnimation(this, 0x17); +} + +u32 sub_0803B6F4(Entity* this) { + if (this->type == 0) { + if (this->field_0x80.HWORD > this->x.HALF.HI) { + return 1; + } + } else { + if (this->field_0x80.HWORD < this->x.HALF.HI) { + return 1; + } + } + return 0; +} + +void sub_0803B724(Entity* param_1) { + Entity* pEVar1; + u32 random_value; + u8 temp; + + if (((param_1->field_0xf < 3) && (param_1->cutsceneBeh.HALF.LO != 0)) && + (pEVar1 = CreateEnemy(7, 1), pEVar1 != (Entity*)0x0)) { + pEVar1->type2 = 1; + random_value = Random(); + temp = gUnk_080CFD1B[param_1->type]; + pEVar1->x.HALF.HI = (random_value & 0x70) + temp + gRoomControls.roomOriginX; + pEVar1->y.HALF.HI = ((random_value >> 0x10) & 7) * 10 + 0x5c + gRoomControls.roomOriginY; + pEVar1->parent = param_1; + sub_08016A30(pEVar1); + param_1->field_0xf++; + param_1->cutsceneBeh.HALF.LO--; + } +} + +void sub_0803B798(void) { + gPlayerState.jumpStatus = 0x41; + gPlayerState.field_0xa = 0; + gPlayerState.flags.all &= 0xffef; + gPlayerEntity.flags |= 0x80; + gPlayerEntity.field_0x20 = 0x18000; + gPlayerEntity.height.HALF.HI = -10; + gPlayerEntity.direction = 0x10; + gPlayerEntity.animationState = 4; + gPlayerEntity.spritePriority.b1 = 1; + gPlayerEntity.spriteOffsetY = 0; + gPlayerEntity.speed = 0x140; + gPlayerEntity.iframes = -0x1e; +} + +void sub_0803B804(Entity* this) { + gPlayerEntity.iframes = 30; + ModHealth(-4); + sub_0800449C(&gPlayerEntity, 0x7a); +} + +void sub_0803B824(Entity* this) { + ResetPlayer(); + gPlayerState.field_0x1a[0] = gPlayerState.field_0x1a[0] | 0x80; + sub_0806FA90(this, &gPlayerEntity, gUnk_080CFD1D[this->type], 1); + gPlayerEntity.spriteOffsetY = -6; + gPlayerEntity.spritePriority.b1 = 0; +} + +u32 sub_0803B870(Entity* this) { + Entity* entity; + + entity = this->attachedEntity; + if ((entity->bitfield & 0x80) != 0 && (gPlayerState.flags.all & 0x10) != 0) { + this->action = 0x18; + this->actionDelay = 0x44; + this->spriteSettings.b.draw = 0; + gPlayerEntity.flags = gPlayerEntity.flags & 0x7f; + gPlayerEntity.iframes = -0x10; + sub_0803B824(this); + entity->damageType = 0x13; + InitAnimationForceUpdate(entity, 7); + SoundReq(SFX_16E); + return 1; + } else { + entity->damageType = 0x15; + return 0; + } +} + +void sub_0803B8E8(Entity* this, u32 unk) { + Entity* entity; + entity = this->attachedEntity; + entity->damageType = unk; + entity = (*(Entity**)&this->field_0x74); + entity->damageType = unk; +} + +void sub_0803B8F8(Entity* this) { + gUnk_080CFD20[this->action](this); +} + +void sub_0803B910(Entity* this) { + if (gScreenTransition.field_0x38 != 0) { + this->action = 2; + this->spriteSettings.b.draw = 1; + *(u8*)&this->field_0x74 = 0; + sub_0803BA8C(this, 10); + } else { + this->action = 1; + *(u8*)&this->field_0x74 = 0x80; + } + this->spriteSettings.b.flipX = (this->type - 2); + InitializeAnimation(this, 0); + CopyPositionAndSpriteOffset(this->parent, this); +} + +void sub_0803B978(Entity* this) { + switch (this->subAction) { + case 0: + return; + case 1: + this->subAction = 2; + this->actionDelay = 2; + this->field_0xf = 0x1e; + this->field_0x74.HALF.LO = 0; + SoundReq(SFX_1A9); + case 2: + sub_0803BA8C(this, this->field_0xf); + if ((this->field_0x74.HALF.HI | this->field_0x74.HALF.LO) == 0) { + SoundReq(SFX_1A9); + } + if (this->field_0x74.HALF.LO != 0) { + return; + } + if (--this->actionDelay != 0) { + return; + } + this->actionDelay = 2; + this->field_0xf -= 4; + if (this->field_0xf != 10) { + return; + } + this->parent->parent->subAction = 3; + this->subAction = 3; + return; + case 3: + break; + case 4: + this->subAction = 5; + this->spriteSettings.b.draw = 1; + this->spriteRendering.alphaBlend = 1; + break; + default: + this->action = 2; + this->spriteRendering.alphaBlend = 0; + case 5: + GetNextFrame(this); + } + sub_0803BA8C(this, 0x10); + if ((this->field_0x74.HALF.HI | this->field_0x74.HALF.LO) == 0) { + SoundReq(SFX_1A9); + } +} + +void sub_0803BA6C(Entity* this) { + sub_0803BA8C(this, 10); + GetNextFrame(this); +} + +void sub_0803BA80(Entity* this) { + sub_0803BA8C(this, 10); +} + +void sub_0803BA8C(Entity* this, u32 unk) { + u32 sVar2; + u32 tmp; + + sVar2 = 0; + tmp = this->field_0x74.HALF.LO & 0xe0; + if ((this->field_0x74.HALF.LO & 0xe0) == 0) { + if (this->field_0x74.HALF.LO == 0) { + if (9 < ++this->field_0x74.HALF.HI) { + this->field_0x74.HALF.HI = 0; + } + if (this->type == 2) { + sVar2 = gUnk_080CFD30[this->field_0x74.HALF.HI]; + } else { + sVar2 = gUnk_080CFD44[this->field_0x74.HALF.HI]; + } + } + this->field_0x74.HALF.LO++; + if (unk <= this->field_0x74.HALF.LO) { + this->field_0x74.HALF.LO = 0; + } + } else { + if ((tmp & 0x80) == 0) { + this->field_0x74.HALF.LO |= 0x80; + if ((tmp & 0x20) != 0) { + sVar2 = gUnk_080CFD58[this->type - 2]; + } else { + sVar2 = gUnk_080CFD5C[this->type - 2]; + } + } + } + if (sVar2 != 0) { + sub_0801D2B4(this, sVar2); + (*(Entity**)&this->parent->field_0x78)->palette.b.b0 = this->palette.raw << 0x1c >> 0x1c; + (*(Entity**)&this->parent->field_0x78)->palette.b.b4 = this->palette.b.b0; + this->parent->attachedEntity->palette.b.b0 = this->palette.raw << 0x1c >> 0x1c; + this->parent->attachedEntity->palette.b.b4 = this->palette.b.b0; + } +} diff --git a/src/enemy/mazaalHand.c b/src/enemy/mazaalHand.c new file mode 100644 index 00000000..49c19820 --- /dev/null +++ b/src/enemy/mazaalHand.c @@ -0,0 +1,38 @@ +#include "global.h" +#include "entity.h" + +void sub_08035194(Entity*); + +extern const Hitbox gUnk_080FD394; +extern const Hitbox gUnk_080FD39C; +extern const Hitbox gUnk_080FD3A4; +extern const Hitbox gUnk_080FD3AC; +extern const Hitbox gUnk_080FD3B4; +extern const Hitbox gUnk_080FD3BC; +extern const Hitbox gUnk_080FD3C4; + +const Hitbox* const gUnk_080CEF34[] = { + &gUnk_080FD394, &gUnk_080FD394, &gUnk_080FD394, &gUnk_080FD39C, &gUnk_080FD3A4, + &gUnk_080FD3AC, &gUnk_080FD3AC, &gUnk_080FD3AC, &gUnk_080FD3AC, +}; +const Hitbox* const gUnk_080CEF58[] = { + &gUnk_080FD3B4, &gUnk_080FD3B4, &gUnk_080FD3B4, &gUnk_080FD3BC, &gUnk_080FD3A4, + &gUnk_080FD3C4, &gUnk_080FD3C4, &gUnk_080FD3C4, &gUnk_080FD3C4, +}; + +void MazaalHand(Entity* this) { + if (this->action == 0) { + this->action = 1; + this->spriteSettings.b.flipX = this->type; + InitAnimationForceUpdate(this, 0); + } + sub_08035194(this); +} + +void sub_08035194(Entity* this) { + if (this->type == 0) { + this->hitbox = (Hitbox*)gUnk_080CEF34[this->frameIndex]; + } else { + this->hitbox = (Hitbox*)gUnk_080CEF58[this->frameIndex]; + } +} diff --git a/src/enemy/mazaalHead.c b/src/enemy/mazaalHead.c new file mode 100644 index 00000000..56e1c976 --- /dev/null +++ b/src/enemy/mazaalHead.c @@ -0,0 +1,827 @@ +#include "global.h" +#include "entity.h" +#include "enemy.h" +#include "screen.h" +#include "audio.h" +#include "random.h" +#include "functions.h" + +extern void UnloadOBJPalette(Entity*); +extern void DoExitTransition(ScreenTransitionData*); + +extern u8 gEntCount; + +void sub_0803499C(Entity*); +void sub_08034420(Entity*); +void sub_08034830(Entity*); +u32 sub_080349D8(Entity*); +void sub_0803442C(Entity*, u32); +void sub_0803443C(Entity*); +void sub_080347B4(Entity*); +void sub_0803473C(Entity*); +u32 sub_08034A10(Entity*); +void sub_080347FC(Entity*); +void sub_080344BC(Entity*); +void sub_08034498(Entity*); +void sub_08034474(Entity*); +void sub_080345A0(Entity*); +void sub_080345B8(Entity*); +void sub_08034638(Entity*); +void sub_08034618(Entity*); +void sub_08034658(Entity*); +void sub_0803467C(Entity*); +u32 sub_080348A4(Entity*, Entity*, u32); +void sub_08034C00(Entity*); + +void sub_08033EF0(Entity* this); +void sub_08033F08(Entity* this); +void nullsub_160(Entity* this); +void sub_08033F1C(Entity* this); +void sub_08034A84(Entity* this); +void sub_08034AC4(Entity* this); +void sub_08034BC8(Entity* this); +void sub_08033F3C(Entity* this); +void sub_08033FFC(Entity* this); +void sub_0803414C(Entity* this); +void sub_080341B8(Entity* this); +void sub_080341D0(Entity* this); +void sub_080341F4(Entity* this); +void sub_08034210(Entity* this); +void sub_08034240(Entity* this); +void sub_08034274(Entity* this); +void sub_080342A0(Entity* this); +void sub_080342B4(Entity* this); +void sub_080342C8(Entity* this); +void sub_08034348(Entity* this); +void sub_0803438C(Entity* this); +void sub_08034578(Entity* this); +void sub_080344E0(Entity* this); +void sub_0803451C(Entity* this); +void sub_08034558(Entity* this); +void sub_080346A0(Entity* this); +void sub_080345D0(Entity* this); +void sub_080346C8(Entity* this); +void sub_08034AEC(Entity* this); +void sub_08034B0C(Entity* this); +void sub_08034B38(Entity* this); +void sub_08034BA0(Entity* this); + +void (*const gUnk_080CEC88[])(Entity*) = { + sub_08033EF0, sub_08033F08, sub_08001324, sub_0804A7D4, sub_08001242, nullsub_160, +}; +void (*const gUnk_080CECA0[])(Entity*) = { + sub_08033F1C, sub_08034A84, sub_08034AC4, sub_08034AC4, sub_08034BC8, +}; +void (*const gUnk_080CECB4[])(Entity*) = { + sub_08033F3C, sub_08033FFC, sub_0803414C, sub_080341B8, sub_080341D0, sub_080341F4, sub_08034210, + sub_08034240, sub_08034274, sub_080342A0, sub_080342B4, sub_080342C8, sub_08034348, sub_0803438C, +}; +const u8 gUnk_080CECEC[] = { 0xff, 0xfe, 0xff, 0x00, 0x01, 0x02, 0x01, 0x00 }; +const s8 gUnk_080CECF4[] = { -2, 0x01, -8, -4, -0x14, 0x08, 0x0e, -0x10, -6, 0x0c, 0x12, -2, 0x00, 0x00 }; +const u8 gUnk_080CED02[] = { 0x46, 0x46, 0x47, 0x48 }; +const u8 gUnk_080CED06[] = { 0xff, 0x00, 0x01, 0x00, 0x00, 0x00 }; +void (*const gUnk_080CED0C[])(Entity*) = { + sub_08034578, sub_080344E0, sub_0803451C, sub_080344E0, sub_08034558, sub_080344E0, sub_0803451C, sub_080346A0, +}; +void (*const gUnk_080CED2C[])(Entity*) = { + sub_08034578, sub_080345D0, sub_0803451C, sub_080346A0, sub_08034558, sub_080345D0, sub_08034558, sub_080346A0, +}; +void (*const gUnk_080CED4C[])(Entity*) = { + sub_08034578, sub_080345D0, sub_080346C8, sub_080346A0, sub_08034558, sub_080346C8, sub_080346A0, sub_080346C8, +}; +const s8 gUnk_080CED6C[] = { -0xa, -0xb, -0xc, -0xb, -0xa, -0x9, -0x8, -0x9 }; +void (*const gUnk_080CED74[])(Entity*) = { + sub_08034AEC, + sub_08034B0C, + sub_08034B38, + sub_08034BA0, +}; +const s8 gUnk_080CED84[] = { 0x0d, 0x10, -0xd, 0x10 }; +const ScreenTransitionData gUnk_080CED88 = { 1, { 0, 0, 0, 0 }, 0x88, 0xf8, 0, 0x5a, 1, 1, 0, 0, 0 }; +const ScreenTransitionData gUnk_080CED9C = { 1, { 0, 0, 0, 0 }, 0x88, 0xf8, 0, 0x5a, 0, 1, 0, 0, 0 }; + +void MazaalHead(Entity* this) { + gUnk_080CEC88[GetNextFunction(this)](this); +} + +void sub_08033EF0(Entity* this) { + gUnk_080CECA0[this->type](this); +} + +void sub_08033F08(Entity* this) { + sub_0804AA30(this, gUnk_080CEC88); +} + +void nullsub_160(Entity* this) { +} + +void sub_08033F1C(Entity* this) { + gUnk_080CECB4[this->action](this); + sub_0803499C(this); +} + +void sub_08033F3C(Entity* this) { + Entity* pEVar1; + Entity* pEVar2; + + if (gEntCount < 0x43) { + if (gScreenTransition.field_0x38 != 0) { + sub_08034420(this); + this->field_0x80.HALF.HI = 1; + } else { + this->action = 1; + } + this->spriteSettings.b.draw = 1; + this->field_0x6c.HALF.HI |= 1; + this->field_0x80.HALF.LO = 0; + InitializeAnimation(this, 0); + pEVar1 = CreateEnemy(0x36, 1); + pEVar1->parent = this; + pEVar2 = CreateObject(0x7e, 0, 0); + pEVar2->parent = this; + if (gScreenTransition.field_0x39 == 0) { + this->action = 0xd; + this->subAction = 0; + this->actionDelay = 0xfc; + this->flags = this->flags & 0x7f; + } else { + pEVar2 = CreateEnemy(0x44, 0); + pEVar2->parent = this; + *(Entity**)&pEVar2->field_0x78 = this; + *(Entity**)&this->field_0x74 = pEVar2; + pEVar2 = CreateEnemy(0x44, 1); + pEVar2->parent = this; + *(Entity**)&pEVar2->field_0x78 = pEVar1; + *(Entity**)&this->field_0x78 = pEVar2; + CreateEnemy(0x36, 4)->parent = this; + } + } +} + +void sub_08033FFC(Entity* this) { + u16 temp; + Entity* entity; + + switch (this->subAction) { + case 0: + case 2: + case 5: + break; + case 1: + this->subAction = 2; + this->actionDelay = 0x1e; + entity = *(Entity**)&(*(Entity**)&this->field_0x74)->field_0x74; + entity->subAction = 1; + entity = *(Entity**)&(*(Entity**)&this->field_0x78)->field_0x74; + entity->subAction = 1; + UnloadOBJPalette(this); + break; + case 3: + if (--this->actionDelay == 0) { + this->subAction = 4; + } + break; + case 4: + this->height.WORD += -0x8000; + if (this->height.HALF.HI == -10) { + this->subAction = 5; + this->field_0x80.HALF.HI = 1; + } + break; + case 6: + this->subAction = 7; + this->actionDelay = 0; + entity = *(Entity**)&this->field_0x74; + entity->subAction = 1; + entity = *(Entity**)&entity->field_0x74; + entity->subAction = 4; + entity = *(Entity**)&this->field_0x78; + entity->subAction = 1; + entity = *(Entity**)&entity->field_0x74; + entity->subAction = 4; + gScreen.controls.layerFXControl = 0xf40; + gScreen.controls.alphaBlend = 0x1000; + break; + case 7: + temp = ++this->actionDelay >> 1; + gScreen.controls.alphaBlend = (temp) | (0x10 - (temp)) * 0x100; + if (0x1f < (this->actionDelay & 0xff)) { + this->subAction = 8; + entity = *(Entity**)&this->field_0x74; + entity->subAction = 3; + entity = *(Entity**)&entity->field_0x74; + entity->subAction = 6; + entity = *(Entity**)&this->field_0x78; + entity->subAction = 3; + entity = *(Entity**)&entity->field_0x74; + entity->subAction = 6; + this->spriteRendering.alphaBlend = 0; + gScreen.controls.layerFXControl = 0; + } + break; + default: + if (((*(Entity**)&this->field_0x74)->flags & 0x80) != 0) { + gRoomControls.cameraTarget = &gPlayerEntity; + sub_08034420(this); + gPlayerState.field_0x8b = 1; + sub_080791D0(); + SoundReq(BGM_BOSS_THEME); + } + } +} + +void sub_0803414C(Entity* this) { + u32 x, y; + + x = gRoomControls.roomOriginX + 0xb8; + y = gRoomControls.roomOriginY + 0x48; + + if (this->x.HALF.HI - x + 1 < 3 && this->y.HALF.HI - y + 1 < 3) { + if (sub_080349D8(this)) { + if (this->subAction != 0) { + this->subAction = 0; + sub_0803442C(this, 0x1e); + } else { + sub_0803442C(this, 0x5a); + } + } + } else { + this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, x, y); + sub_0806F69C(this); + } +} + +void sub_080341B8(Entity* this) { + if (sub_080349D8(this) != 0) { + sub_0803442C(this, 0x2d); + } +} + +void sub_080341D0(Entity* this) { + if (((this->field_0x80.HALF.LO & 3) != 3) && (--this->actionDelay == 0)) { + sub_0803443C(this); + } +} + +void sub_080341F4(Entity* this) { + sub_080347B4(this); + if (sub_080349D8(this) != 0) { + sub_08034420(this); + } +} + +void sub_08034210(Entity* this) { + sub_080347B4(this); + if ((this->field_0x7c.BYTES.byte1 & 0x80) != 0 && sub_080349D8(this) != 0) { + sub_08034420(this); + } else { + sub_08034830(this); + } +} + +void sub_08034240(Entity* this) { + if ((this->field_0x7c.HALF_U.HI != 0) && (--this->field_0x7c.HALF_U.HI < 0x96)) { + sub_0803473C(this); + } + if (sub_080349D8(this) != 0) { + sub_08034420(this); + } +} + +void sub_08034274(Entity* this) { + if (sub_080349D8(this) != 0) { + sub_08034420(this); + } else { + sub_0803473C(this); + if (sub_08034A10(this) != 0) { + sub_080347FC(this); + } + } +} + +void sub_080342A0(Entity* this) { + if (sub_080349D8(this) != 0) { + sub_08034420(this); + } +} + +void sub_080342B4(Entity* this) { + if (this->field_0x7c.HALF_U.HI == 0xff) { + sub_08034420(this); + } +} + +void sub_080342C8(Entity* this) { + if (this->actionDelay != 0) { + if (--this->actionDelay == 0) { + SoundReq(SFX_115); + } + this->spriteOffsetX = gUnk_080CECEC[this->actionDelay >> 1 & 7]; + } else { + this->spriteOffsetX = 0; + if (sub_08003FC4(this, 0x2000) == 0) { + this->action = 0xc; + this->field_0x7c.HALF.HI = 0x708; + this->field_0x7c.BYTES.byte1 = 0; + this->field_0x80.HALF.HI = 0; + sub_08080964(0x1e, 0); + SoundReq(SFX_1A1); + } + } +} + +void sub_08034348(Entity* this) { + if (this->field_0x7c.HALF_U.HI != 0) { + this->field_0x7c.HALF.HI--; + } else { + if (this->height.HALF.HI > -10) { + this->height.HALF.HI--; + } else { + if (sub_080349D8(this) != 0) { + this->field_0x80.HALF.HI = 1; + sub_08034420(this); + } + } + } +} + +void sub_0803438C(Entity* this) { + Entity* pEVar3; + const s8* pVar; + + if (this->actionDelay == 0) { + this->currentHealth = 0; + } else { + this->actionDelay--; + if (this->actionDelay > 0xc0) { + this->spriteOffsetX = gUnk_080CED06[this->actionDelay & 3]; + } else { + if ((this->actionDelay & 0x1f) == 0) { + pEVar3 = CreateFx(this, gUnk_080CED02[Random() & 3], 0); + if (pEVar3 != NULL) { + pVar = &gUnk_080CECF4[this->actionDelay >> 4]; + pEVar3->x.HALF.HI = *pVar + pEVar3->x.HALF.HI; + pVar++; + pEVar3->y.HALF.HI = *pVar + pEVar3->y.HALF.HI; + pEVar3->spritePriority.b0 = 3; + } + } + } + } +} + +void sub_08034420(Entity* this) { + this->action = 2; + this->field_0x7c.BYTES.byte1 = 3; +} + +void sub_0803442C(Entity* this, u32 unk) { + this->action = 4; + this->actionDelay = unk; + this->field_0x7c.BYTES.byte1 = 3; +} + +void sub_0803443C(Entity* this) { + this->field_0x7c.BYTES.byte1 = 0; + if (gScreenTransition.field_0x39 < 0x1f) { + sub_080344BC(this); + } else { + if (gScreenTransition.field_0x39 < 0x3d) { + sub_08034498(this); + } else { + sub_08034474(this); + } + } +} + +void sub_08034474(Entity* this) { + gUnk_080CED0C[this->field_0x7c.BYTES.byte0](this); + this->field_0x7c.BYTES.byte0 = (this->field_0x7c.BYTES.byte0 + 1) & 7; +} + +void sub_08034498(Entity* this) { + gUnk_080CED2C[this->field_0x7c.BYTES.byte0](this); + this->field_0x7c.BYTES.byte0 = (this->field_0x7c.BYTES.byte0 + 1) & 7; +} + +void sub_080344BC(Entity* this) { + gUnk_080CED4C[this->field_0x7c.BYTES.byte0](this); + this->field_0x7c.BYTES.byte0 = (this->field_0x7c.BYTES.byte0 + 1) & 7; +} + +void sub_080344E0(Entity* this) { + if ((this->field_0x80.HALF.LO & 5) != 0) { + sub_080345A0(this); + } else { + if ((this->field_0x80.HALF.LO & 10) != 0 || (Random() & 1) != 0) { + sub_080345B8(this); + } else { + sub_080345A0(this); + } + } +} + +void sub_0803451C(Entity* this) { + if ((this->field_0x80.HALF.LO & 5) != 0) { + sub_08034618(this); + } else if ((this->field_0x80.HALF.LO & 10) != 0) { + sub_08034638(this); + } else if ((Random() & 1) != 0) { + sub_08034618(this); + } else { + sub_08034638(this); + } +} + +void sub_08034558(Entity* this) { + if ((Random() & 1) != 0) { + sub_08034658(this); + } else { + sub_0803467C(this); + } +} + +void sub_08034578(Entity* this) { + this->action = 3; + this->field_0x7c.BYTES.byte1 = 0; + sub_080348A4(this, *(Entity**)&this->field_0x74, 0); + sub_080348A4(this, *(Entity**)&this->field_0x78, 0); +} + +void sub_080345A0(Entity* this) { + this->action = 5; + this->field_0x7c.BYTES.byte1 = 1; + sub_080348A4(this, *(Entity**)&this->field_0x78, 1); +} + +void sub_080345B8(Entity* this) { + this->action = 5; + this->field_0x7c.BYTES.byte1 = 2; + sub_080348A4(this, *(Entity**)&this->field_0x74, 1); +} + +void sub_080345D0(Entity* this) { + this->action = 6; + if ((Random() & 1) != 0) { + if (sub_080348A4(this, *(Entity**)&this->field_0x74, 2) == 0) { + sub_080348A4(this, *(Entity**)&this->field_0x78, 2); + } + } else { + if (sub_080348A4(this, *(Entity**)&this->field_0x78, 2) == 0) { + sub_080348A4(this, *(Entity**)&this->field_0x74, 2); + } + } +} + +void sub_08034618(Entity* this) { + this->action = 7; + this->field_0x7c.BYTES.byte1 = 1; + this->field_0x7c.HALF.HI = 0xb4; + sub_080348A4(this, *(Entity**)&this->field_0x78, 3); +} + +void sub_08034638(Entity* this) { + this->action = 7; + this->field_0x7c.BYTES.byte1 = 2; + this->field_0x7c.HALF.HI = 0xb4; + sub_080348A4(this, *(Entity**)&this->field_0x74, 3); +} + +void sub_08034658(Entity* this) { + this->action = 8; + this->field_0x7c.BYTES.byte1 = 0; + if (sub_080348A4(this, *(Entity**)&this->field_0x78, 4) == 0) { + this->field_0x7c.BYTES.byte1 |= 0x40; + } +} + +void sub_0803467C(Entity* this) { + this->action = 8; + this->field_0x7c.BYTES.byte1 = 0; + if (sub_080348A4(this, *(Entity**)&this->field_0x74, 4) == 0) { + this->field_0x7c.BYTES.byte1 |= 0x40; + } +} + +void sub_080346A0(Entity* this) { + this->action = 9; + this->field_0x7c.BYTES.byte1 = 0; + sub_080348A4(this, *(Entity**)&this->field_0x74, 6); + sub_080348A4(this, *(Entity**)&this->field_0x78, 6); +} + +void sub_080346C8(Entity* this) { + Entity* hand; + + this->action = 10; + this->field_0x7c.HALF.HI = 0; + if ((Random() & 1) != 0) { + if (sub_080348A4(this, *(Entity**)&this->field_0x74, 8) != 0) { + hand = *(Entity**)&this->field_0x78; + sub_080348A4(this, hand, 7); + } else { + sub_080348A4(this, *(Entity**)&this->field_0x74, 7); + sub_080348A4(this, *(Entity**)&this->field_0x78, 8); + } + } else { + if (sub_080348A4(this, *(Entity**)&this->field_0x78, 8) != 0) { + hand = *(Entity**)&this->field_0x74; + sub_080348A4(this, hand, 7); + } else { + sub_080348A4(this, *(Entity**)&this->field_0x74, 8); + sub_080348A4(this, *(Entity**)&this->field_0x78, 7); + } + } +} + +NONMATCH("asm/non_matching/mazaal/sub_0803473C.inc", void sub_0803473C(Entity* this)) { + u32 direction; + u32 playerX; + u32 roomX; + + if ((this->field_0x7c.BYTES.byte1 & 0x10) != 0) { + if (0x28 < (*(Entity**)&this->field_0x74)->action) { + return; + } + playerX = gPlayerEntity.x.HALF.HI - 0x60; + } else { + if (0x28 < (*(Entity**)&this->field_0x78)->action) { + return; + } + playerX = gPlayerEntity.x.HALF.HI + 0x60; + } + roomX = gRoomControls.roomOriginX; + if (playerX - 4 > this->x.HALF.HI) { + if (roomX + 0xe0 < this->x.HALF.HI) { + return; + } + direction = 8; + } else { + if (playerX + 4 >= this->x.HALF.HI) { + return; + } + if (roomX + 0x90 > this->x.HALF.HI) { + return; + } + direction = 0x18; + } + this->direction = direction; + sub_0806F69C(this); +} +END_NONMATCH + +NONMATCH("asm/non_matching/mazaal/sub_080347B4.inc", void sub_080347B4(Entity* this)) { + u32 direction; + u32 playerX = gPlayerEntity.x.HALF.HI; + u32 roomX = gRoomControls.roomOriginX; + if (playerX - 4 > this->x.HALF.HI) { + if (roomX + 0xe0 < this->x.HALF.HI) { + return; + } + direction = 8; + } else { + if (playerX + 4 >= this->x.HALF.HI) { + return; + } + if (roomX + 0x90 > this->x.HALF.HI) { + return; + } + direction = 0x18; + } + this->direction = direction; + sub_0806F69C(this); +} +END_NONMATCH + +void sub_080347FC(Entity* this) { + if ((this->field_0x7c.BYTES.byte1 & 0x10) != 0) { + sub_080348A4(this, *(Entity**)&this->field_0x78, 5); + } else { + sub_080348A4(this, *(Entity**)&this->field_0x74, 5); + } + this->field_0x7c.BYTES.byte1 |= 0x20; +} + +void sub_08034830(Entity* this) { + if (sub_080349D8(this) != 0) { + this->field_0x7c.BYTES.byte1 = 0x80; + sub_080345D0(this); + } else { + if (sub_08034A10(this) != 0) { + if ((this->field_0x80.HALF.LO & 0xf) != 0) { + if (sub_080349D8(this) != 0) { + sub_08034420(this); + } + } else { + this->field_0x7c.BYTES.byte1 |= 0x20; + if ((this->field_0x7c.BYTES.byte1 & 0x10) != 0) { + sub_080348A4(this, *(Entity**)&this->field_0x78, 2); + } else { + sub_080348A4(this, *(Entity**)&this->field_0x74, 2); + } + } + } + } +} + +NONMATCH("asm/non_matching/mazaal/sub_080348A4.inc", u32 sub_080348A4(Entity* this, Entity* hand_, u32 unk)) { + u8 bVar1; + Entity* pEVar4; + u32 temp; + + if (hand_->type == 0) { + bVar1 = 5; + this->field_0x7c.BYTES.byte1 |= 0x10; + } else { + bVar1 = 10; + } + + if (this->field_0x80.HALF.LO & bVar1) { + this->field_0x7c.BYTES.byte1 |= (hand_->type == 0) ? 1 : 2; + return 0; + } else { + switch (unk) { + case 0: + hand_->action = 3; + break; + case 1: + hand_->action = 4; + hand_->field_0x7c.BYTES.byte0 = 3; + break; + case 2: + case 4: + hand_->action = 4; + hand_->field_0x7c.BYTES.byte0 = 1; + break; + case 3: + hand_->action = 0xf; + hand_->field_0x7c.HALF.HI = 0xb4; + break; + case 5: + hand_->action = 0xf; + hand_->field_0x7c.HALF.HI = 1; + break; + case 6: + hand_->action = 0x1e; + break; + case 7: + hand_->action = 0x1b; + hand_->flags = hand_->flags & 0x7f; + InitializeAnimation(hand_, 5); + break; + case 8: + pEVar4 = CreateEnemy(0x36, hand_->type + 2); + if (pEVar4 != NULL) { + pEVar4->parent = this; + } + break; + default: + break; + } + return 1; + } +} +END_NONMATCH + +void sub_0803499C(Entity* this) { + if (((this->field_0x80.HALF.LO & 0xc) != 0xc) && (this->field_0x80.HALF.HI != 0)) { + this->height.HALF.HI = gUnk_080CED6C[(++this->field_0xf >> 4) & 7]; + } +} + +u32 sub_080349D8(Entity* this) { + // this feels like a switch, but I couldn't get it to match as one + if ((this->field_0x7c.BYTES.byte1 & 3) == 3) { + return 1; + } else { + if ((this->field_0x7c.BYTES.byte1 & 3) == 1) { + if (this->field_0x80.HALF.LO & 10) + return 1; + } else { + if ((this->field_0x7c.BYTES.byte1 & 3) == 2) { + if (this->field_0x80.HALF.LO & 5) + return 1; + } + } + return 0; + } +} + +NONMATCH("asm/non_matching/mazaal/sub_08034A10.inc", u32 sub_08034A10(Entity* this)) { + if ((this->field_0x7c.BYTES.byte1 & 0x60) != 0x40) { + if ((this->field_0x7c.BYTES.byte1 & 0x10) != 0) { + if ((this->field_0x80.HALF.LO & 5) != 0) { + this->field_0x7c.BYTES.byte1 |= 0x40; + } + if (((this->field_0x80.HALF.LO & 10) == 0) || ((this->field_0x7c.BYTES.byte1 & 3) != 1)) { + return 0; + } + } else { + if ((this->field_0x80.HALF.LO & 10) != 0) { + this->field_0x7c.BYTES.byte1 |= 0x40; + } + if ((this->field_0x80.HALF.LO & 5) == 0) { + return 0; + } + if ((this->field_0x7c.BYTES.byte1 & 3) != 2) { + return 0; + } + } + } + return 1; +} +END_NONMATCH + +void sub_08034A84(Entity* this) { + if (this->parent->next == NULL) { + DeleteEntity(this); + } else { + if (this->action == 0) { + this->action = 1; + this->spriteSettings.b.draw = 1; + this->spriteSettings.b.flipX = 1; + InitializeAnimation(this, 0); + } + CopyPositionAndSpriteOffset(this->parent, this); + } +} + +void sub_08034AC4(Entity* this) { + PositionRelative(this->parent, this, 0, 0x10000); + gUnk_080CED74[this->action](this); +} + +void sub_08034AEC(Entity* this) { + this->action = 1; + this->actionDelay = 0x1e; + InitializeAnimation(this, this->type + 1); + SoundReq(SFX_151); +} + +void sub_08034B0C(Entity* this) { + if (this->actionDelay != 0) { + this->actionDelay--; + } else { + GetNextFrame(this); + if ((this->frames.all & 0x80) == 0) { + return; + } + this->action = 2; + this->actionDelay = 0x50; + } +} + +NONMATCH("asm/non_matching/mazaal/sub_08034B38.inc", void sub_08034B38(Entity* this)) { + Entity* target; + const s8* ptr; + + if (--this->actionDelay == 0) { + this->action = 3; + InitializeAnimation(this, this->type + 3); + } else { + target = sub_080A7EE0(0xe); + if (target != NULL) { + target->type -= 2; + if (target->type == 0) { + target->direction = 0xa8 - this->actionDelay; + } else { + target->direction = this->actionDelay + 0x58; + } + ptr = &gUnk_080CED84[target->type * 2]; + PositionRelative(this, target, *(ptr++) << 0x10, *ptr << 0x10); + } + } +} +END_NONMATCH + +void sub_08034BA0(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->parent->field_0x7c.HALF.HI = 0xff; + DeleteEntity(this); + } +} + +void sub_08034BC8(Entity* this) { + if (this->action == 0) { + this->action = 1; + InitializeAnimation(this, 1); + } + sub_0806FA90(this->parent, this, 0, 1); + sub_0800445C(this); + if (this->height.HALF.HI == 0) { + sub_08034C00(this); + } +} + +void sub_08034C00(Entity* this) { + if (((gPlayerState.flags.all & 0x80) != 0) && + CheckPlayerInRegion(this->x.HALF.HI - gRoomControls.roomOriginX, + this->y.HALF.HI - gRoomControls.roomOriginY + 0xd, 3, 3) != 0) { + if (gScreenTransition.field_0x39 >= 0x3d) { + DoExitTransition((ScreenTransitionData*)&gUnk_080CED88); + } else { + DoExitTransition((ScreenTransitionData*)&gUnk_080CED9C); + } + } +} diff --git a/src/enemy/mazaalMacro.c b/src/enemy/mazaalMacro.c new file mode 100644 index 00000000..3da60dee --- /dev/null +++ b/src/enemy/mazaalMacro.c @@ -0,0 +1,280 @@ +#include "global.h" +#include "entity.h" +#include "enemy.h" +#include "random.h" +#include "script.h" +#include "structures.h" +#include "functions.h" + +extern void DoExitTransition(ScreenTransitionData*); +extern void sub_0807B600(u32); + +extern const u16 script_08012E20[]; +extern const u8 gEntCount; + +void sub_08034E18(Entity*); +void sub_08034FA0(Entity*); +u32 sub_08035084(Entity*); +void sub_08034F70(Entity*); +void sub_08035120(Entity*); +void sub_08035050(Entity*); + +void sub_08034C7C(Entity* this); +void sub_08034CA4(Entity* this); +void sub_08034CBC(Entity* this); +void sub_08034CC4(Entity* this); +void sub_08034D4C(Entity* this); +void sub_08034DC8(Entity* this); +void sub_08034E30(Entity* this); +void sub_08034E68(Entity* this); +void sub_08034EC0(Entity* this); +void sub_08034ED8(Entity* this); +void sub_08034EE4(Entity* this); +void sub_08034F58(Entity* this); + +void (*const gUnk_080CEE90[])(Entity*) = { + sub_08034C7C, sub_08034CA4, sub_08001324, sub_08034CBC, sub_08001242, +}; +void (*const gUnk_080CEEA4[])(Entity*) = { + sub_08034CC4, + sub_08034D4C, + sub_08034DC8, +}; +void (*const gUnk_080CEEB0[])(Entity*) = { + sub_08034E30, sub_08034E68, sub_08034EC0, sub_08034ED8, sub_08034EE4, sub_08034F58, +}; + +const u8 gUnk_080CEEC8[] = { 0x46, 0x46, 0x47, 0x48 }; +const u8 gUnk_080CEECC[] = { 0x58, 0x68, 0x88, 0x68, 0xb8, 0x68, 0x58, 0xa8, 0x88, 0xa8, 0xb8, 0xa8 }; +const s16 gUnk_080CEED8[] = { -0x82, -0x81, -0x80, -0x7f, -0x7e, -0x42, -0x41, -0x40, -0x3f, -0x3e, -2, -1, + 1, 2, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x7e, 0x7f, 0x80, 0x81, 0x82 }; + +extern const ScreenTransitionData gUnk_0813ABA8; + +void MazaalMacro(Entity* this) { + gUnk_080CEE90[GetNextFunction(this)](this); +} + +void sub_08034C7C(Entity* this) { + if (this->type != 2) { + gUnk_080CEEA4[this->action](this); + } else { + sub_08034E18(this); + } +} + +void sub_08034CA4(Entity* this) { + sub_08034FA0(this); + sub_0804AA30(this, gUnk_080CEE90); +} + +void sub_08034CBC(Entity* this) { + sub_0804A7D4(this); +} + +void sub_08034CC4(Entity* this) { + Entity* entity; + + if (sub_08035084(this) != 0) { + this->action = this->type + 1; + this->field_0xf = 0; + this->field_0x6c.HALF.HI |= 1; + this->field_0x78.HWORD = 0x4b0; + sub_08034F70(this); + InitializeAnimation(this, this->type); + SetTile(0x4022, COORD_TO_TILE(this), this->collisionLayer); + entity = CreateEnemy(0x37, 2); + if (entity != NULL) { + this->attachedEntity = entity; + entity->parent = this; + CopyPosition(this, entity); + } + } +} + +void sub_08034D4C(Entity* this) { + Entity* entity; + + GetNextFrame(this); + if (--this->field_0x78.HWORD == 0) { + if ((this->field_0xf < 8) && (entity = CreateEnemy(0x4b, 0), entity != (Entity*)0x0)) { + entity->direction = (s32)Random() % 5 + 0xc; + entity->x.HALF.HI = (gRoomControls.width / 2) + gRoomControls.roomOriginX; + entity->y.HALF.HI = gRoomControls.roomOriginY + 8; + entity->collisionLayer = 3; + entity->parent = this; + UpdateSpriteForCollisionLayer(entity); + this->field_0x78.HWORD = 600; + this->field_0xf = this->field_0xf + 1; + } else { + this->field_0x78.HWORD = 0x78; + } + } +} + +void sub_08034DC8(Entity* this) { + if (gScreenTransition.field_0x39 == 0) { + CreateFx(this, 0x51, 0); + sub_0807BA8C(COORD_TO_TILE(this), this->collisionLayer); + DeleteThisEntity(); + } +} + +void sub_08034E18(Entity* this) { + gUnk_080CEEB0[this->action](this); +} + +void sub_08034E30(Entity* this) { + this->action = this->parent->type + 1; + this->collisionLayer = 2; + this->spritePriority.b0 = 7; + this->spritePriority.b1 = 0; + UpdateSpriteForCollisionLayer(this); + InitializeAnimation(this, 2); +} + +void sub_08034E68(Entity* this) { + ScriptExecutionContext* scriptExecutionContext; + + if (this->parent->next == NULL) { + if (this->spriteSettings.b.draw != 0) { + this->spriteSettings.b.draw = 0; + sub_08035120(this); + } + if (gScreenTransition.field_0x39 == 0) { + if (sub_08079F8C() != 0) { + this->action = 3; + scriptExecutionContext = StartCutscene(this, (u16*)script_08012E20); + *(ScriptExecutionContext**)&this->cutsceneBeh = scriptExecutionContext; + } + } else { + DeleteThisEntity(); + } + } +} + +void sub_08034EC0(Entity* this) { + if (this->parent->next == NULL) { + sub_08035120(this); + DeleteThisEntity(); + } +} + +void sub_08034ED8(Entity* this) { + ExecuteScriptForEntity(this, NULL); +} + +void sub_08034EE4(Entity* this) { + u32 randomValue; + Entity* entity; + + if ((++this->actionDelay & 0xf) == 0) { + randomValue = Random(); + entity = CreateFx(this, gUnk_080CEEC8[randomValue & 3], 0); + if (entity != NULL) { + entity->x.HALF.HI = (((randomValue >> 2) & 0x77) << 1) + 1 + gRoomControls.roomScrollX; + entity->y.HALF.HI = ((randomValue >> 9) & 0x7e) + 1 + gRoomControls.roomScrollY; + entity->collisionLayer = 2; + UpdateSpriteForCollisionLayer(entity); + } + } + ExecuteScriptForEntity(this, NULL); +} + +void sub_08034F58(Entity* this) { + DoExitTransition((ScreenTransitionData*)&gUnk_0813ABA8); + DeleteEntity(this); +} + +void sub_08034F70(Entity* this) { + this->currentHealth = gScreenTransition.field_0x39; + if (gScreenTransition.field_0x39 >= 0x3d) { + this->type2 = 0; + } else if (gScreenTransition.field_0x39 >= 0x1f) { + this->type2 = 1; + } else { + this->type2 = 2; + } +} + +void sub_08034FA0(Entity* this) { + if (0 < this->iframes) { + this->attachedEntity->iframes = this->iframes; + sub_08080964(0xc, 1); + } + switch (this->type2) { + case 0: + if (this->currentHealth < 0x3c) { + gScreenTransition.field_0x39 = 0x3c; + sub_08035050(this); + return; + } + break; + case 1: + if (this->currentHealth < 0x1e) { + gScreenTransition.field_0x39 = 0x1e; + sub_08035050(this); + return; + } + break; + default: + if (this->currentHealth == 0) { + sub_0807BA8C(COORD_TO_TILE(this), this->collisionLayer); + } + break; + } + gScreenTransition.field_0x39 = this->currentHealth; +} + +void sub_08035050(Entity* this) { + Entity* entity; + + this->flags = this->flags & 0x7f; + this->currentHealth = 0; + entity = CreateEnemy(0x4b, 0); + if (entity != NULL) { + entity->type2 = 1; + entity->collisionLayer = 3; + entity->parent = NULL; + UpdateSpriteForCollisionLayer(entity); + } +} + +u32 sub_08035084(Entity* this) { + u32 vulnPillar; + Entity* entity; + u32 i; + const u8* coords; + + if (this->type == 0) { + if (0x42 < gEntCount) { + return 0; + } + do { + vulnPillar = (s32)Random() % 6; + } while (vulnPillar == gScreenTransition.field_0x38 >> 4); + gScreenTransition.field_0x38 = (gScreenTransition.field_0x38 & 0xf) | (vulnPillar << 4); + for (i = 0, coords = gUnk_080CEECC; i < 6; i++, coords += 2) { + if (i == vulnPillar) { + entity = this; + } else { + entity = CreateEnemy(0x37, 1); + } + entity->x.HALF.HI = gRoomControls.roomOriginX + *coords; + entity->y.HALF.HI = gRoomControls.roomOriginY + *(coords + 1); + entity->collisionLayer = 1; + UpdateSpriteForCollisionLayer(entity); + } + } + return 1; +} + +void sub_08035120(Entity* this) { + s32 tile; + u32 i; + + tile = COORD_TO_TILE(this); + for (i = 0; i < 0x18; i++) { + sub_0807B600(tile + gUnk_080CEED8[i]); + } +}