diff --git a/asm/enemy5A.s b/asm/enemy5A.s deleted file mode 100644 index fedd8dc6..00000000 --- a/asm/enemy5A.s +++ /dev/null @@ -1,652 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Enemy5A -Enemy5A: @ 0x080456D8 - push {lr} - ldr r1, _080456E4 @ =gUnk_080D1888 - bl EnemyFunctionHandler - pop {pc} - .align 2, 0 -_080456E4: .4byte gUnk_080D1888 - - thumb_func_start sub_080456E8 -sub_080456E8: @ 0x080456E8 - push {lr} - ldr r2, _080456FC @ =gUnk_080D18A0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080456FC: .4byte gUnk_080D18A0 - - thumb_func_start sub_08045700 -sub_08045700: @ 0x08045700 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xa] - cmp r0, #0 - beq _080457D0 - ldr r0, [r5, #0x50] - ldr r3, [r0, #0x50] - adds r0, r5, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080457D0 - movs r0, #0x3f - ands r0, r1 - cmp r0, #0xe - beq _08045728 - cmp r0, #0x15 - bne _08045778 -_08045728: - adds r1, r5, #0 - adds r1, #0x81 - ldrb r0, [r1] - cmp r0, #0 - bne _0804575C - movs r0, #3 - strb r0, [r5, #0xc] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldrb r1, [r5, #0xa] - lsls r1, r1, #3 - ldrb r0, [r5, #0xe] - adds r0, #2 - orrs r1, r0 - adds r0, r5, #0 - bl InitializeAnimation - ldr r0, [r5, #0x50] - ldrb r1, [r0, #0xa] - lsls r1, r1, #3 - ldrb r2, [r5, #0xe] - adds r2, #2 - orrs r1, r2 - bl InitializeAnimation -_0804575C: - ldrb r0, [r5, #0xe] - cmp r0, #0 - beq _0804576C - movs r0, #0xbd - lsls r0, r0, #1 - bl SoundReq - b _080457D0 -_0804576C: - ldr r0, _08045774 @ =0x00000119 - bl SoundReq - b _080457D0 - .align 2, 0 -_08045774: .4byte 0x00000119 -_08045778: - adds r2, r5, #0 - adds r2, #0x45 - ldrb r1, [r2] - adds r0, r1, #0 - cmp r0, #0xff - beq _080457D0 - movs r0, #0xff - strb r0, [r2] - ldrb r0, [r5, #0xe] - cmp r0, #0 - beq _080457D0 - adds r0, r3, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _080457D0 - adds r0, r3, #0 - adds r0, #0x76 - movs r1, #1 - ldrb r2, [r5, #0xb] - lsls r1, r2 - ldrb r2, [r0] - orrs r1, r2 - strb r1, [r0] - adds r1, r5, #0 - adds r1, #0x85 - ldrb r0, [r1] - cmp r0, #0 - bne _080457D0 - adds r0, #1 - strb r0, [r1] - ldrb r1, [r5, #0xa] - lsls r1, r1, #3 - movs r4, #6 - orrs r1, r4 - adds r0, r5, #0 - bl InitializeAnimation - ldr r0, [r5, #0x50] - ldrb r1, [r0, #0xa] - lsls r1, r1, #3 - orrs r1, r4 - bl InitializeAnimation -_080457D0: - ldr r1, _080457DC @ =gUnk_080D1888 - adds r0, r5, #0 - bl sub_0804AA30 - pop {r4, r5, pc} - .align 2, 0 -_080457DC: .4byte gUnk_080D1888 - - thumb_func_start nullsub_173 -nullsub_173: @ 0x080457E0 - bx lr - .align 2, 0 - - thumb_func_start sub_080457E4 -sub_080457E4: @ 0x080457E4 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _08045850 @ =gTextBox - ldrb r0, [r0] - movs r2, #0x7f - ands r2, r0 - cmp r2, #0 - bne _08045868 - movs r3, #1 - strb r3, [r4, #0xc] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - adds r0, #0x80 - strb r2, [r0] - adds r0, #1 - strb r2, [r0] - adds r0, #4 - strb r2, [r0] - strb r2, [r4, #0xf] - adds r1, r4, #0 - adds r1, #0x82 - movs r0, #0x30 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x83 - strb r2, [r0] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _08045854 - adds r0, r4, #0 - bl sub_08045A00 - movs r0, #0x5a - movs r1, #1 - bl CreateEnemy - adds r1, r0, #0 - cmp r1, #0 - beq _0804585A - str r4, [r1, #0x50] - str r1, [r4, #0x54] - ldrb r0, [r4, #0xe] - strb r0, [r1, #0xe] - ldrb r0, [r4, #0xb] - strb r0, [r1, #0xb] - adds r0, r4, #0 - bl CopyPosition - b _0804585A - .align 2, 0 -_08045850: .4byte gTextBox -_08045854: - adds r0, r4, #0 - adds r0, #0x63 - strb r3, [r0] -_0804585A: - ldrb r1, [r4, #0xa] - lsls r1, r1, #3 - movs r0, #1 - orrs r1, r0 - adds r0, r4, #0 - bl InitializeAnimation -_08045868: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0804586C -sub_0804586C: @ 0x0804586C - push {r4, lr} - adds r4, r0, #0 - bl sub_08045A28 - adds r1, r4, #0 - adds r1, #0x82 - ldrb r0, [r1] - cmp r0, #0 - bne _080458AA - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080458C2 - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _0804589A - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] -_0804589A: - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0xa] - lsls r1, r1, #3 - adds r0, r4, #0 - bl InitializeAnimation - b _080458C2 -_080458AA: - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080458C2 - ldrb r0, [r4, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r4, #0x18] -_080458C2: - pop {r4, pc} - - thumb_func_start sub_080458C4 -sub_080458C4: @ 0x080458C4 - push {r4, r5, lr} - adds r5, r0, #0 - bl sub_08045A28 - ldr r1, [r5, #0x50] - ldrb r2, [r5, #0xa] - cmp r2, #0 - beq _080458D6 - ldr r1, [r1, #0x50] -_080458D6: - ldrb r0, [r1, #0xc] - cmp r0, #3 - bne _08045934 - adds r0, r1, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #1 - bne _08045934 - movs r0, #0 - movs r4, #4 - strb r4, [r5, #0xc] - strb r0, [r5, #0xf] - cmp r2, #0 - beq _08045934 - ldrb r0, [r5, #0x10] - movs r1, #0x7f - ands r1, r0 - strb r1, [r5, #0x10] - ldrb r0, [r5, #0xe] - cmp r0, #0 - beq _0804591C - ldrb r1, [r5, #0xa] - lsls r1, r1, #3 - movs r4, #5 - orrs r1, r4 - adds r0, r5, #0 - bl InitializeAnimation - ldr r0, [r5, #0x50] - ldrb r1, [r0, #0xa] - lsls r1, r1, #3 - orrs r1, r4 - bl InitializeAnimation - b _08045934 -_0804591C: - ldrb r1, [r5, #0xa] - lsls r1, r1, #3 - orrs r1, r4 - adds r0, r5, #0 - bl InitializeAnimation - ldr r0, [r5, #0x50] - ldrb r1, [r0, #0xa] - lsls r1, r1, #3 - orrs r1, r4 - bl InitializeAnimation -_08045934: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08045938 -sub_08045938: @ 0x08045938 - push {r4, lr} - adds r4, r0, #0 - bl sub_08045A28 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08045980 - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _08045980 - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _08045966 - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x32 - b _0804597E -_08045966: - ldr r0, [r4, #0x50] - ldr r2, [r0, #0x50] - adds r2, #0x76 - movs r0, #1 - ldrb r1, [r4, #0xb] - lsls r0, r1 - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x31 -_0804597E: - strb r0, [r1] -_08045980: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08045984 -sub_08045984: @ 0x08045984 - push {r4, lr} - adds r4, r0, #0 - bl sub_08045A28 - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _080459A6 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080459FE - movs r0, #0x20 - strb r0, [r4, #0xf] - b _080459FE -_080459A6: - ldr r2, [r4, #0x50] - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _080459B0 - ldr r2, [r2, #0x50] -_080459B0: - ldrb r0, [r2, #0x14] - cmp r0, #2 - bhi _080459FE - ldrb r0, [r2, #0xc] - cmp r0, #3 - beq _080459FE - movs r0, #0 - movs r3, #1 - strb r3, [r4, #0xc] - strb r0, [r4, #0xf] - adds r1, r4, #0 - adds r1, #0x81 - strb r0, [r1] - adds r1, #4 - strb r0, [r1] - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _080459DA - subs r1, #0x46 - movs r0, #0x33 - strb r0, [r1] -_080459DA: - adds r0, r2, #0 - adds r0, #0x75 - ldrb r0, [r0] - ldrb r1, [r4, #0xb] - asrs r0, r1 - ands r0, r3 - cmp r0, #0 - beq _080459EE - strb r3, [r4, #0xe] - b _080459F0 -_080459EE: - strb r0, [r4, #0xe] -_080459F0: - ldrb r1, [r4, #0xa] - lsls r1, r1, #3 - movs r0, #1 - orrs r1, r0 - adds r0, r4, #0 - bl InitializeAnimation -_080459FE: - pop {r4, pc} - - thumb_func_start sub_08045A00 -sub_08045A00: @ 0x08045A00 - push {lr} - adds r1, r0, #0 - ldrb r3, [r1, #0xb] - lsls r3, r3, #1 - ldr r0, _08045A24 @ =gUnk_080D18B4 - adds r3, r3, r0 - ldr r0, [r1, #0x50] - movs r2, #0 - ldrsb r2, [r3, r2] - lsls r2, r2, #0x10 - ldrb r3, [r3, #1] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - adds r3, #3 - lsls r3, r3, #0x10 - bl PositionRelative - pop {pc} - .align 2, 0 -_08045A24: .4byte gUnk_080D18B4 - - thumb_func_start sub_08045A28 -sub_08045A28: @ 0x08045A28 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - bne _08045A3E - adds r0, r5, #0 - bl GetNextFrame -_08045A3E: - adds r6, r5, #0 - adds r6, #0x5a - ldrb r0, [r6] - movs r1, #0x70 - mov r8, r1 - mov r4, r8 - ands r4, r0 - ldrb r7, [r5, #0xa] - cmp r7, #0 - bne _08045AF8 - adds r0, r5, #0 - bl sub_08045A00 - adds r1, r5, #0 - adds r1, #0x83 - ldrb r0, [r1] - adds r2, r1, #0 - cmp r0, #1 - beq _08045AA4 - cmp r0, #1 - bgt _08045A6E - cmp r0, #0 - beq _08045A78 - b _08045B7C -_08045A6E: - cmp r0, #2 - beq _08045ABC - cmp r0, #3 - beq _08045AE8 - b _08045B7C -_08045A78: - cmp r4, #0x20 - beq _08045A8C - cmp r4, #0x20 - bhi _08045A86 - cmp r4, #0 - beq _08045A96 - b _08045B7C -_08045A86: - cmp r4, #0x40 - beq _08045A96 - b _08045B7C -_08045A8C: - movs r0, #1 - strb r0, [r1] - movs r1, #0x9f - lsls r1, r1, #1 - b _08045B5A -_08045A96: - movs r0, #2 - strb r0, [r2] - ldr r1, _08045AA0 @ =0x0000013F - b _08045B5A - .align 2, 0 -_08045AA0: .4byte 0x0000013F -_08045AA4: - cmp r4, #0 - beq _08045AB0 - cmp r4, #0x10 - bne _08045B7C - strb r7, [r1] - b _08045B58 -_08045AB0: - movs r0, #2 - strb r0, [r1] - ldr r1, _08045AB8 @ =0x0000013F - b _08045B5A - .align 2, 0 -_08045AB8: .4byte 0x0000013F -_08045ABC: - cmp r4, #0x20 - beq _08045AD0 - cmp r4, #0x20 - bhi _08045ACA - cmp r4, #0x10 - beq _08045ADA - b _08045B7C -_08045ACA: - cmp r4, #0x40 - beq _08045ADE - b _08045B7C -_08045AD0: - movs r0, #1 - strb r0, [r1] - movs r1, #0x9f - lsls r1, r1, #1 - b _08045B5A -_08045ADA: - strb r7, [r1] - b _08045B58 -_08045ADE: - strb r0, [r1] - ldr r1, _08045AE4 @ =0x0000013F - b _08045B5A - .align 2, 0 -_08045AE4: .4byte 0x0000013F -_08045AE8: - cmp r4, #0 - bne _08045B7C - movs r0, #2 - strb r0, [r1] - ldr r1, _08045AF4 @ =0x0000013F - b _08045B5A - .align 2, 0 -_08045AF4: .4byte 0x0000013F -_08045AF8: - ldr r0, [r5, #0x50] - ldr r3, _08045B18 @ =0xFFFF0000 - adds r1, r5, #0 - movs r2, #0 - bl PositionRelative - adds r2, r5, #0 - adds r2, #0x83 - ldrb r0, [r2] - cmp r0, #1 - beq _08045B3A - cmp r0, #1 - bgt _08045B1C - cmp r0, #0 - beq _08045B22 - b _08045B7C - .align 2, 0 -_08045B18: .4byte 0xFFFF0000 -_08045B1C: - cmp r0, #2 - beq _08045B68 - b _08045B7C -_08045B22: - ldrb r0, [r6] - mov r1, r8 - ands r1, r0 - cmp r1, #0x10 - beq _08045B54 - cmp r1, #0x20 - bne _08045B7C - movs r0, #1 - strb r0, [r2] - movs r1, #0x9f - lsls r1, r1, #1 - b _08045B5A -_08045B3A: - ldrb r0, [r6] - mov r1, r8 - ands r1, r0 - cmp r1, #0 - beq _08045B4A - cmp r1, #0x10 - beq _08045B54 - b _08045B7C -_08045B4A: - strb r1, [r2] - ldr r1, _08045B50 @ =0x0000013F - b _08045B5A - .align 2, 0 -_08045B50: .4byte 0x0000013F -_08045B54: - movs r0, #2 - strb r0, [r2] -_08045B58: - ldr r1, _08045B64 @ =0x0000013B -_08045B5A: - adds r0, r5, #0 - bl sub_0801D2B4 - b _08045B7C - .align 2, 0 -_08045B64: .4byte 0x0000013B -_08045B68: - ldrb r0, [r6] - mov r1, r8 - ands r1, r0 - cmp r1, #0 - bne _08045B7C - strb r1, [r2] - ldr r1, _08045B84 @ =0x0000013F - adds r0, r5, #0 - bl sub_0801D2B4 -_08045B7C: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08045B84: .4byte 0x0000013F diff --git a/asm/vaatiTransfigured.s b/asm/vaatiTransfigured.s deleted file mode 100644 index 246058b5..00000000 --- a/asm/vaatiTransfigured.s +++ /dev/null @@ -1,2644 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start VaatiTransfigured -VaatiTransfigured: @ 0x0803F770 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #5 - bhi _0803F810 - lsls r0, r0, #2 - ldr r1, _0803F784 @ =_0803F788 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803F784: .4byte _0803F788 -_0803F788: @ jump table - .4byte _0803F7A0 @ case 0 - .4byte _0803F7D0 @ case 1 - .4byte _0803F7D8 @ case 2 - .4byte _0803F7E0 @ case 3 - .4byte _0803F7E8 @ case 4 - .4byte _0803F800 @ case 5 -_0803F7A0: - ldrb r0, [r4, #0xc] - cmp r0, #0 - beq _0803F7C8 - adds r1, r4, #0 - adds r1, #0x78 - ldrh r0, [r1] - adds r2, r4, #0 - adds r2, #0x7a - strh r0, [r2] - ldrh r0, [r4, #0x2e] - strh r0, [r1] - adds r1, #4 - ldrh r0, [r1] - adds r2, #4 - strh r0, [r2] - ldrh r0, [r4, #0x32] - strh r0, [r1] - adds r0, r4, #0 - bl sub_080409B0 -_0803F7C8: - ldr r0, _0803F7CC @ =gUnk_080D0AC8 - b _0803F7EA - .align 2, 0 -_0803F7CC: .4byte gUnk_080D0AC8 -_0803F7D0: - ldr r0, _0803F7D4 @ =gUnk_080D0AE8 - b _0803F7EA - .align 2, 0 -_0803F7D4: .4byte gUnk_080D0AE8 -_0803F7D8: - ldr r0, _0803F7DC @ =gUnk_080D0AF0 - b _0803F7EA - .align 2, 0 -_0803F7DC: .4byte gUnk_080D0AF0 -_0803F7E0: - ldr r0, _0803F7E4 @ =gUnk_080D0AFC - b _0803F7EA - .align 2, 0 -_0803F7E4: .4byte gUnk_080D0AFC -_0803F7E8: - ldr r0, _0803F7FC @ =gUnk_080D0B04 -_0803F7EA: - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - b _0803F810 - .align 2, 0 -_0803F7FC: .4byte gUnk_080D0B04 -_0803F800: - ldr r0, _0803F814 @ =gUnk_080D0B0C - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 -_0803F810: - pop {r4, pc} - .align 2, 0 -_0803F814: .4byte gUnk_080D0B0C - - thumb_func_start sub_0803F818 -sub_0803F818: @ 0x0803F818 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - bl sub_0804A720 - movs r0, #0 - bl CheckRoomFlag - cmp r0, #0 - beq _0803F910 - ldr r0, _0803F8FC @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x50 - bhi _0803F910 - movs r4, #0 - movs r2, #1 - movs r0, #1 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, #0x18] - adds r3, r5, #0 - adds r3, #0x29 - ldrb r1, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #5 - orrs r0, r1 - strb r0, [r3] - adds r1, r5, #0 - adds r1, #0x6d - ldrb r0, [r1] - orrs r2, r0 - strb r2, [r1] - bl Random - movs r1, #0x17 - ands r0, r1 - adds r0, #4 - strb r0, [r5, #0x15] - movs r0, #0x30 - strb r0, [r5, #0xe] - movs r0, #0xc - strb r0, [r5, #0xf] - adds r1, r5, #0 - adds r1, #0x82 - movs r0, #4 - strb r0, [r1] - subs r1, #2 - movs r0, #0xff - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x74 - strb r4, [r0] - adds r0, #3 - strb r4, [r0] - adds r1, #4 - movs r0, #9 - strb r0, [r1] - strb r4, [r5, #0x14] - adds r0, r5, #0 - adds r0, #0x86 - strb r4, [r0] - adds r0, #1 - strb r4, [r0] - ldrh r1, [r5, #0x2e] - subs r0, #0xf - strh r1, [r0] - ldrh r0, [r5, #0x2e] - adds r1, r5, #0 - adds r1, #0x7a - strh r0, [r1] - ldrh r1, [r5, #0x32] - adds r0, r5, #0 - adds r0, #0x7c - strh r1, [r0] - ldrh r0, [r5, #0x32] - adds r1, r5, #0 - adds r1, #0x7e - strh r0, [r1] - movs r4, #1 - adds r7, r5, #0 - adds r7, #0x75 -_0803F8C2: - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0 - bl sub_08040648 - adds r4, #1 - cmp r4, #5 - bls _0803F8C2 - bl Random - adds r0, r5, #0 - bl sub_080408EC - movs r4, #0 - movs r6, #1 -_0803F8E0: - movs r0, #0x5a - movs r1, #0 - bl CreateEnemy - str r5, [r0, #0x50] - strb r4, [r0, #0xb] - ldrb r1, [r7] - asrs r1, r4 - ands r1, r6 - cmp r1, #0 - beq _0803F900 - strb r6, [r0, #0xe] - b _0803F902 - .align 2, 0 -_0803F8FC: .4byte gEntCount -_0803F900: - strb r1, [r0, #0xe] -_0803F902: - adds r4, #1 - cmp r4, #7 - bls _0803F8E0 - adds r0, r5, #0 - movs r1, #0 - bl InitAnimationForceUpdate -_0803F910: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_0803F914 -sub_0803F914: @ 0x0803F914 - push {r4, r5, r6, r7, lr} - sub sp, #4 - adds r7, r0, #0 - adds r4, r7, #0 - adds r4, #0x80 - ldrb r0, [r4] - cmp r0, #2 - beq _0803F998 - cmp r0, #2 - bgt _0803F932 - cmp r0, #0 - beq _0803F95A - cmp r0, #1 - beq _0803F97A - b _0803FA40 -_0803F932: - cmp r0, #4 - bne _0803F938 - b _0803FA3A -_0803F938: - cmp r0, #4 - blt _0803F9CE - adds r3, r4, #0 - cmp r0, #0xff - beq _0803F944 - b _0803FA42 -_0803F944: - ldrb r0, [r7, #0xe] - subs r0, #1 - strb r0, [r7, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - bne _0803FA42 - strb r0, [r3] - movs r0, #0xb - strb r0, [r7, #0xe] - b _0803FA42 -_0803F95A: - ldrb r0, [r7, #0xe] - subs r0, #1 - strb r0, [r7, #0xe] - lsls r0, r0, #0x18 - adds r3, r4, #0 - cmp r0, #0 - bne _0803FA42 - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r7, #0x24] - movs r0, #0x14 - strb r0, [r7, #0xe] - b _0803FA42 -_0803F97A: - ldrb r0, [r7, #0xe] - subs r0, #1 - strb r0, [r7, #0xe] - lsls r0, r0, #0x18 - adds r3, r4, #0 - cmp r0, #0 - bne _0803FA42 - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - movs r0, #0xc0 - strh r0, [r7, #0x24] - movs r0, #0xc - strb r0, [r7, #0xe] - b _0803FA42 -_0803F998: - ldrb r0, [r7, #0xe] - subs r0, #1 - strb r0, [r7, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - adds r3, r4, #0 - cmp r1, #0 - bne _0803FA42 - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - strh r1, [r7, #0x24] - ldrb r0, [r7, #0x14] - cmp r0, #1 - bhi _0803F9C8 - str r3, [sp] - bl Random - movs r1, #0x7f - ands r0, r1 - adds r0, #0x40 - strb r0, [r7, #0xe] - ldr r3, [sp] - b _0803FA42 -_0803F9C8: - movs r0, #8 - strb r0, [r7, #0xe] - b _0803FA42 -_0803F9CE: - ldrb r0, [r7, #0xe] - subs r0, #1 - strb r0, [r7, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0803FA32 - movs r0, #0 - strh r1, [r7, #0x36] - strb r0, [r4] - ldr r1, _0803FA04 @ =gUnk_080D0ABF - ldrb r0, [r7, #0x14] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r7, #0xe] - adds r0, r7, #0 - bl sub_08040934 - adds r1, r0, #0 - cmp r1, #2 - beq _0803FA1A - cmp r1, #2 - bhi _0803FA08 - cmp r1, #1 - beq _0803FA0E - b _0803FA26 - .align 2, 0 -_0803FA04: .4byte gUnk_080D0ABF -_0803FA08: - cmp r1, #3 - beq _0803FA20 - b _0803FA26 -_0803FA0E: - movs r0, #4 - strb r0, [r7, #0xc] - adds r0, r7, #0 - adds r0, #0x74 - strb r1, [r0] - b _0803FA40 -_0803FA1A: - movs r0, #5 - strb r0, [r7, #0xc] - b _0803FA40 -_0803FA20: - movs r0, #6 - strb r0, [r7, #0xc] - b _0803FA40 -_0803FA26: - adds r1, r7, #0 - adds r1, #0x80 - movs r0, #4 - strb r0, [r1] - adds r3, r1, #0 - b _0803FA42 -_0803FA32: - adds r0, r7, #0 - bl sub_08040AD4 - b _0803FA40 -_0803FA3A: - adds r0, r7, #0 - bl sub_08040670 -_0803FA40: - adds r3, r4, #0 -_0803FA42: - adds r1, r7, #0 - adds r1, #0x82 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803FAAC - movs r0, #4 - strb r0, [r1] - ldrb r2, [r7, #0x15] - adds r2, #0x12 - movs r0, #0x1c - ands r2, r0 - asrs r2, r2, #2 - movs r0, #0x9b - movs r1, #0 - str r3, [sp] - bl CreateObject - adds r6, r0, #0 - ldr r3, [sp] - cmp r6, #0 - beq _0803FAAC - str r7, [r6, #0x50] - str r3, [sp] - bl Random - movs r5, #0xf - ands r0, r5 - ldr r1, _0803FAC4 @ =0x0000FFF9 - adds r4, r1, #0 - adds r0, r4, r0 - ldrh r1, [r6, #0x2e] - adds r0, r0, r1 - strh r0, [r6, #0x2e] - bl Random - ands r0, r5 - adds r4, r4, r0 - ldrh r0, [r6, #0x32] - adds r4, r4, r0 - strh r4, [r6, #0x32] - adds r2, r6, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r2] - ldr r3, [sp] -_0803FAAC: - ldrb r0, [r3] - cmp r0, #0xff - beq _0803FAB8 - adds r0, r7, #0 - bl ProcessMovement -_0803FAB8: - adds r0, r7, #0 - bl UpdateAnimationSingleFrame - add sp, #4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0803FAC4: .4byte 0x0000FFF9 - - thumb_func_start sub_0803FAC8 -sub_0803FAC8: @ 0x0803FAC8 - push {lr} - bl UpdateAnimationSingleFrame - pop {pc} - - thumb_func_start sub_0803FAD0 -sub_0803FAD0: @ 0x0803FAD0 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #5 - bls _0803FADE - b _0803FD32 -_0803FADE: - lsls r0, r0, #2 - ldr r1, _0803FAE8 @ =_0803FAEC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803FAE8: .4byte _0803FAEC -_0803FAEC: @ jump table - .4byte _0803FB04 @ case 0 - .4byte _0803FB34 @ case 1 - .4byte _0803FBB8 @ case 2 - .4byte _0803FBE2 @ case 3 - .4byte _0803FC80 @ case 4 - .4byte _0803FD0C @ case 5 -_0803FB04: - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r7, #0 - bl sub_080044EC - adds r1, r0, #0 - cmp r1, #1 - beq _0803FB16 - b _0803FD32 -_0803FB16: - adds r0, r7, #0 - adds r0, #0x80 - strb r1, [r0] - movs r0, #0xc0 - strb r0, [r7, #0xe] - ldrb r1, [r7, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r7, #0x10] - movs r0, #0xa6 - lsls r0, r0, #1 - bl SoundReq - movs r0, #0x14 - b _0803FC4A -_0803FB34: - ldrb r0, [r7, #0xe] - subs r0, #1 - strb r0, [r7, #0xe] - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - adds r3, r7, #0 - adds r3, #0x80 - cmp r2, #0 - bne _0803FB58 - movs r0, #2 - strb r0, [r3] - adds r1, r7, #0 - adds r1, #0x3f - movs r0, #0x35 - strb r0, [r1] - adds r0, r7, #0 - adds r0, #0x62 - strb r2, [r0] -_0803FB58: - adds r2, r7, #0 - adds r2, #0x45 - ldr r0, _0803FB70 @ =gUnk_080D0ABC - ldrb r1, [r7, #0x14] - adds r1, r1, r0 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bhs _0803FB74 - movs r0, #1 - strb r0, [r7, #0xe] - b _0803FB76 - .align 2, 0 -_0803FB70: .4byte gUnk_080D0ABC -_0803FB74: - movs r0, #0 -_0803FB76: - cmp r0, #0 - bne _0803FB7C - b _0803FD32 -_0803FB7C: - movs r1, #0 - movs r0, #2 - strb r0, [r3] - adds r2, r7, #0 - adds r2, #0x3f - movs r0, #0x35 - strb r0, [r2] - adds r0, r7, #0 - adds r0, #0x62 - strb r1, [r0] - ldrb r0, [r7, #0x14] - adds r0, #1 - strb r0, [r7, #0x14] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #2 - bhi _0803FBA0 - b _0803FD32 -_0803FBA0: - movs r0, #7 - strb r0, [r7, #0xc] - movs r0, #0xe0 - strb r0, [r7, #0xe] - bl sub_0807A108 - ldr r0, _0803FBB4 @ =0x00000127 - bl SoundReq - b _0803FD4E - .align 2, 0 -_0803FBB4: .4byte 0x00000127 -_0803FBB8: - ldr r0, [r7, #0x54] - adds r0, #0x74 - movs r1, #0x10 - strb r1, [r0] - ldrb r0, [r7, #0xe] - cmp r0, #0 - beq _0803FBD4 - adds r0, r7, #0 - adds r0, #0x80 - movs r1, #3 - strb r1, [r0] - movs r0, #0x40 - strb r0, [r7, #0xe] - b _0803FD32 -_0803FBD4: - adds r0, r7, #0 - adds r0, #0x80 - movs r1, #4 - strb r1, [r0] - movs r0, #0x50 - strb r0, [r7, #0xe] - b _0803FD32 -_0803FBE2: - ldrb r0, [r7, #0xe] - cmp r0, #0 - beq _0803FC08 - subs r0, #1 - strb r0, [r7, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - beq _0803FBF4 - b _0803FD32 -_0803FBF4: - ldrb r1, [r7, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r7, #0x10] - movs r0, #0xe0 - lsls r0, r0, #0xa - str r0, [r7, #0x20] - movs r0, #0x10 - strb r0, [r7, #0xf] - b _0803FD32 -_0803FC08: - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r7, #0 - bl sub_08003FC4 - adds r2, r0, #0 - cmp r2, #0 - bne _0803FC52 - adds r1, r7, #0 - adds r1, #0x80 - movs r0, #5 - strb r0, [r1] - movs r0, #0x10 - strb r0, [r7, #0xe] - ldrb r1, [r7, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r7, #0x10] - adds r1, r7, #0 - adds r1, #0x45 - movs r0, #0xff - strb r0, [r1] - adds r0, r7, #0 - adds r0, #0x86 - strb r2, [r0] - adds r0, r7, #0 - bl sub_080408EC - movs r0, #0xa6 - lsls r0, r0, #1 - bl SoundReq - movs r0, #0x1e -_0803FC4A: - movs r1, #4 - bl sub_08080964 - b _0803FD32 -_0803FC52: - ldrb r0, [r7, #0xf] - cmp r0, #0 - beq _0803FD32 - subs r1, r0, #1 - strb r1, [r7, #0xf] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _0803FC6C - movs r0, #0xd8 - lsls r0, r0, #1 - bl SoundReq - b _0803FD32 -_0803FC6C: - movs r0, #7 - ands r1, r0 - cmp r1, #0 - bne _0803FD32 - ldr r0, _0803FC7C @ =0x00000149 - bl SoundReq - b _0803FD32 - .align 2, 0 -_0803FC7C: .4byte 0x00000149 -_0803FC80: - ldrb r0, [r7, #0xe] - subs r1, r0, #1 - strb r1, [r7, #0xe] - lsls r0, r1, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - bne _0803FCA8 - adds r0, r7, #0 - adds r0, #0x80 - movs r1, #5 - strb r1, [r0] - movs r0, #0x10 - strb r0, [r7, #0xe] - adds r0, r7, #0 - adds r0, #0x86 - strb r2, [r0] - adds r0, r7, #0 - bl sub_080408EC - b _0803FD32 -_0803FCA8: - movs r0, #1 - ands r1, r0 - cmp r1, #0 - beq _0803FD32 - movs r0, #0x9b - movs r1, #1 - movs r2, #0xff - bl CreateObject - adds r6, r0, #0 - cmp r6, #0 - beq _0803FD32 - str r7, [r6, #0x50] - adds r0, r7, #0 - adds r1, r6, #0 - bl CopyPosition - bl Random - movs r5, #0xf - ands r0, r5 - ldr r1, _0803FD08 @ =0x0000FFF9 - adds r4, r1, #0 - adds r0, r4, r0 - ldrh r1, [r6, #0x2e] - adds r0, r0, r1 - strh r0, [r6, #0x2e] - bl Random - ands r0, r5 - adds r4, r4, r0 - ldrh r0, [r6, #0x32] - adds r4, r4, r0 - strh r4, [r6, #0x32] - adds r2, r6, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - movs r0, #0x92 - lsls r0, r0, #1 - bl SoundReq - b _0803FD32 - .align 2, 0 -_0803FD08: .4byte 0x0000FFF9 -_0803FD0C: - ldrb r0, [r7, #0xe] - subs r0, #1 - strb r0, [r7, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0803FD32 - movs r0, #1 - strb r0, [r7, #0xc] - adds r0, r7, #0 - adds r0, #0x80 - strb r1, [r0] - adds r0, #1 - strb r1, [r0] - subs r0, #0xb - strb r1, [r0] - adds r0, r7, #0 - bl sub_08040670 -_0803FD32: - adds r0, r7, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #2 - bls _0803FD48 - ldrb r1, [r7, #0xe] - movs r0, #1 - ands r0, r1 - adds r1, r7, #0 - adds r1, #0x62 - strb r0, [r1] -_0803FD48: - adds r0, r7, #0 - bl UpdateAnimationSingleFrame -_0803FD4E: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0803FD50 -sub_0803FD50: @ 0x0803FD50 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r4, #0 - adds r5, #0x80 - ldrb r0, [r5] - cmp r0, #1 - beq _0803FDA8 - cmp r0, #1 - bgt _0803FD68 - cmp r0, #0 - beq _0803FD72 - b _0803FE86 -_0803FD68: - cmp r0, #2 - beq _0803FE0C - cmp r0, #3 - beq _0803FE62 - b _0803FE86 -_0803FD72: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - beq _0803FD82 - b _0803FE86 -_0803FD82: - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - adds r0, r4, #0 - adds r0, #0x74 - strb r1, [r0] - movs r0, #0x80 - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - movs r0, #0x90 - lsls r0, r0, #0xa - str r0, [r4, #0x20] - ldr r0, _0803FDA4 @ =0x0000012B - bl SoundReq - b _0803FE86 - .align 2, 0 -_0803FDA4: .4byte 0x0000012B -_0803FDA8: - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _0803FE86 - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - adds r0, r4, #0 - adds r0, #0x84 - ldrb r0, [r0] - cmp r0, #1 - beq _0803FDD8 - cmp r0, #1 - bgt _0803FDD0 - cmp r0, #0 - beq _0803FDDE - b _0803FDE4 -_0803FDD0: - cmp r0, #2 - beq _0803FDDE - cmp r0, #3 - bne _0803FDE4 -_0803FDD8: - movs r0, #1 - strb r0, [r4, #0xf] - b _0803FDF0 -_0803FDDE: - movs r0, #0 - strb r0, [r4, #0xf] - b _0803FDF0 -_0803FDE4: - bl Random - movs r1, #0x20 - ands r1, r0 - lsrs r1, r1, #5 - strb r1, [r4, #0xf] -_0803FDF0: - ldrb r0, [r4, #0x14] - cmp r0, #1 - bls _0803FDFA - movs r0, #1 - strb r0, [r4, #0xf] -_0803FDFA: - movs r0, #0xa6 - lsls r0, r0, #1 - bl SoundReq - movs r0, #0x1e - movs r1, #4 - bl sub_08080964 - b _0803FE86 -_0803FE0C: - ldrb r0, [r4, #0xe] - subs r1, r0, #1 - strb r1, [r4, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _0803FE34 - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - ldr r2, _0803FE30 @ =gUnk_080D0ABF - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - movs r1, #1 - orrs r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - strb r0, [r4, #0xe] - b _0803FE86 - .align 2, 0 -_0803FE30: .4byte gUnk_080D0ABF -_0803FE34: - movs r0, #7 - ands r1, r0 - cmp r1, #0 - bne _0803FE46 - ldrb r2, [r4, #0xf] - adds r0, r4, #0 - movs r1, #0x1f - bl sub_0804A98C -_0803FE46: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0803FE86 - ldrb r0, [r4, #0x14] - cmp r0, #1 - bls _0803FE86 - ldrb r0, [r4, #0xe] - cmp r0, #5 - bhi _0803FE86 - movs r0, #0x80 - strb r0, [r4, #0xe] - movs r0, #0 - strb r0, [r4, #0xf] - b _0803FE86 -_0803FE62: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0803FE80 - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r5] - strh r1, [r4, #0x36] - adds r0, r4, #0 - bl sub_08040670 - b _0803FE86 -_0803FE80: - adds r0, r4, #0 - bl sub_08040AD4 -_0803FE86: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0803FE90 -sub_0803FE90: @ 0x0803FE90 - push {r4, r5, lr} - adds r4, r0, #0 - adds r3, r4, #0 - adds r3, #0x80 - ldrb r2, [r3] - cmp r2, #1 - beq _0803FED4 - cmp r2, #1 - bgt _0803FEA8 - cmp r2, #0 - beq _0803FEAE - b _0803FF74 -_0803FEA8: - cmp r2, #2 - beq _0803FF52 - b _0803FF74 -_0803FEAE: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0803FF74 - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - movs r0, #0x40 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0x14] - cmp r0, #1 - bls _0803FF74 - movs r0, #0x80 - strb r0, [r4, #0xe] - movs r0, #1 - strb r0, [r4, #0xf] - b _0803FF74 -_0803FED4: - ldrb r0, [r4, #0xe] - subs r1, r0, #1 - strb r1, [r4, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _0803FEFC - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - ldr r1, _0803FEF8 @ =gUnk_080D0ABF - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - orrs r0, r2 - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r4, #0xe] - b _0803FF74 - .align 2, 0 -_0803FEF8: .4byte gUnk_080D0ABF -_0803FEFC: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0803FF24 - movs r0, #7 - ands r1, r0 - cmp r1, #0 - bne _0803FF14 - ldrb r2, [r4, #0xf] - adds r0, r4, #0 - movs r1, #0x1f - bl sub_0804A98C -_0803FF14: - ldrb r0, [r4, #0xe] - cmp r0, #5 - bhi _0803FF74 - movs r0, #0x40 - strb r0, [r4, #0xe] - movs r0, #0 - strb r0, [r4, #0xf] - b _0803FF74 -_0803FF24: - movs r5, #0xf - ands r5, r1 - cmp r5, #0 - bne _0803FF74 - adds r0, r4, #0 - movs r1, #0x1f - movs r2, #2 - bl sub_0804A98C - adds r1, r0, #0 - cmp r1, #0 - beq _0803FF74 - strb r5, [r1, #0xb] - adds r0, r4, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _0803FF74 - ldrh r0, [r1, #0x24] - lsls r0, r0, #0x10 - asrs r0, r0, #0x11 - strh r0, [r1, #0x24] - b _0803FF74 -_0803FF52: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0803FF6E - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r3] - adds r0, r4, #0 - bl sub_08040670 - b _0803FF74 -_0803FF6E: - adds r0, r4, #0 - bl sub_08040AD4 -_0803FF74: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, r5, pc} - - thumb_func_start sub_0803FF7C -sub_0803FF7C: @ 0x0803FF7C - push {r4, r5, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x80 - ldrb r5, [r2] - cmp r5, #1 - beq _0803FFBC - cmp r5, #1 - bgt _0803FF94 - cmp r5, #0 - beq _0803FF9A - b _08040062 -_0803FF94: - cmp r5, #2 - beq _08040040 - b _08040062 -_0803FF9A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08040062 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - movs r0, #0x80 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0x14] - cmp r0, #1 - bls _08040062 - movs r0, #1 - strb r0, [r4, #0xf] - b _08040062 -_0803FFBC: - ldrb r0, [r4, #0xe] - subs r1, r0, #1 - strb r1, [r4, #0xe] - lsls r0, r1, #0x18 - cmp r0, #0 - bne _0803FFE4 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - ldr r1, _0803FFE0 @ =gUnk_080D0ABF - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - orrs r0, r5 - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r4, #0xe] - b _08040062 - .align 2, 0 -_0803FFE0: .4byte gUnk_080D0ABF -_0803FFE4: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0804000C - movs r0, #7 - ands r1, r0 - cmp r1, #0 - bne _0803FFFC - ldrb r2, [r4, #0xf] - adds r0, r4, #0 - movs r1, #0x1f - bl sub_0804A98C -_0803FFFC: - ldrb r0, [r4, #0xe] - cmp r0, #5 - bhi _08040062 - movs r0, #0x80 - strb r0, [r4, #0xe] - movs r0, #0 - strb r0, [r4, #0xf] - b _08040062 -_0804000C: - movs r0, #0x1f - ands r1, r0 - cmp r1, #0 - bne _08040062 - adds r0, r4, #0 - movs r1, #0x1f - movs r2, #2 - bl sub_0804A98C - adds r1, r0, #0 - cmp r1, #0 - beq _08040062 - strb r5, [r1, #0xb] - ldrh r0, [r1, #0x32] - subs r0, #0x20 - strh r0, [r1, #0x32] - adds r0, r4, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _08040062 - ldrh r0, [r1, #0x24] - lsls r0, r0, #0x10 - asrs r0, r0, #0x11 - strh r0, [r1, #0x24] - b _08040062 -_08040040: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0804005C - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r2] - adds r0, r4, #0 - bl sub_08040670 - b _08040062 -_0804005C: - adds r0, r4, #0 - bl sub_08040AD4 -_08040062: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0804006C -sub_0804006C: @ 0x0804006C - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_08078B48 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _08040090 - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080400C2 - movs r0, #2 - bl SetRoomFlag - movs r0, #8 - strb r0, [r4, #0xf] - b _080400BA -_08040090: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _080400B4 - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - bne _080400BA - adds r1, r4, #0 - adds r1, #0x45 - strb r0, [r1] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - b _080400BA -_080400B4: - adds r0, r4, #0 - bl sub_0804A7D4 -_080400BA: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - b _08040126 -_080400C2: - ldrb r0, [r4, #0xf] - adds r0, #1 - movs r1, #7 - ands r0, r1 - strb r0, [r4, #0xf] - cmp r0, #0 - bne _08040120 - adds r0, r4, #0 - movs r1, #0x55 - movs r2, #0 - bl CreateFx - adds r5, r0, #0 - cmp r5, #0 - beq _08040120 - bl Random - ldr r1, _08040128 @ =0x00003F3F - ands r0, r1 - movs r3, #0xff - adds r1, r0, #0 - ands r1, r3 - ldr r6, _0804012C @ =0x0000FFE0 - adds r2, r6, #0 - adds r1, r2, r1 - ldrh r6, [r5, #0x2e] - adds r1, r1, r6 - strh r1, [r5, #0x2e] - lsrs r0, r0, #8 - ands r0, r3 - adds r2, r2, r0 - ldrh r0, [r5, #0x32] - adds r2, r2, r0 - strh r2, [r5, #0x32] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r2] - movs r0, #0xb7 - lsls r0, r0, #1 - bl SoundReq -_08040120: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_08040126: - pop {r4, r5, r6, pc} - .align 2, 0 -_08040128: .4byte 0x00003F3F -_0804012C: .4byte 0x0000FFE0 - - thumb_func_start sub_08040130 -sub_08040130: @ 0x08040130 - push {lr} - movs r2, #0 - movs r1, #1 - strb r1, [r0, #0xc] - strb r2, [r0, #0xe] - adds r1, r0, #0 - adds r1, #0x80 - strb r2, [r1] - adds r3, r0, #0 - adds r3, #0x29 - ldrb r2, [r3] - movs r1, #8 - rsbs r1, r1, #0 - ands r1, r2 - movs r2, #6 - orrs r1, r2 - strb r1, [r3] - ldrb r1, [r0, #0xe] - bl InitAnimationForceUpdate - pop {pc} - .align 2, 0 - - thumb_func_start sub_0804015C -sub_0804015C: @ 0x0804015C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - adds r0, r5, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _0804017C - adds r2, r4, #0 - adds r2, #0x6d - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - bl DeleteThisEntity -_0804017C: - adds r0, r5, #0 - adds r0, #0x7a - ldrh r0, [r0] - strh r0, [r4, #0x2e] - adds r0, r5, #0 - adds r0, #0x7e - ldrh r0, [r0] - strh r0, [r4, #0x32] - adds r0, r5, #0 - adds r0, #0x74 - ldrb r0, [r0] - cmp r0, #0 - bne _0804019E - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - b _080401A6 -_0804019E: - adds r0, r4, #0 - movs r1, #2 - bl sub_080042BA -_080401A6: - ldrb r0, [r5, #0xc] - cmp r0, #4 - bls _080401C0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _080401D2 - movs r0, #1 - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #1 - bl InitAnimationForceUpdate - b _080401D2 -_080401C0: - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _080401D2 - movs r0, #0 - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #0 - bl InitAnimationForceUpdate -_080401D2: - ldrb r0, [r5, #0xc] - cmp r0, #3 - beq _080401DC - ldrh r0, [r5, #0x36] - strh r0, [r4, #0x36] -_080401DC: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080401E0 -sub_080401E0: @ 0x080401E0 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xb] - adds r5, r1, #0 - cmp r5, #0 - beq _08040212 - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, #1 - adds r3, r4, #0 - adds r3, #0x29 - movs r0, #7 - ands r1, r0 - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrb r1, [r4, #0xb] - adds r1, #4 - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _08040260 -_08040212: - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _08040264 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x45 - bhi _08040260 - adds r0, r4, #0 - movs r1, #2 - movs r2, #1 - bl sub_08040648 - adds r0, r4, #0 - movs r1, #2 - movs r2, #2 - bl sub_08040648 - movs r0, #1 - strb r0, [r4, #0xc] - strb r5, [r4, #0xe] - bl Random - movs r1, #0x7f - ands r0, r1 - adds r0, #0x17 - strb r0, [r4, #0xf] - adds r0, r4, #0 - adds r0, #0x74 - strb r5, [r0] - adds r0, r4, #0 - movs r1, #0 - bl InitAnimationForceUpdate -_08040260: - pop {r4, r5, pc} - .align 2, 0 -_08040264: .4byte gEntCount - - thumb_func_start sub_08040268 -sub_08040268: @ 0x08040268 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _08040286 - adds r2, r4, #0 - adds r2, #0x6d - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - bl DeleteThisEntity -_08040286: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - ldrb r2, [r4, #0xb] - cmp r2, #1 - beq _080402C6 - cmp r2, #1 - bgt _0804029E - cmp r2, #0 - beq _080402E4 - b _08040382 -_0804029E: - cmp r2, #2 - bne _08040382 - ldr r1, _080402DC @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - lsls r0, r0, #1 - ldr r1, _080402E0 @ =gUnk_080D0B18 - adds r0, r0, r1 - movs r1, #0 - ldrsb r1, [r0, r1] - ldrh r2, [r4, #0x2e] - adds r1, r1, r2 - strh r1, [r4, #0x2e] - ldrb r0, [r0, #1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] -_080402C6: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0x1e] - cmp r0, #2 - beq _08040382 - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #6 - ands r0, r1 - strb r0, [r4, #0x18] - b _08040382 - .align 2, 0 -_080402DC: .4byte gPlayerEntity -_080402E0: .4byte gUnk_080D0B18 -_080402E4: - adds r5, r4, #0 - adds r5, #0x74 - ldrb r0, [r5] - cmp r0, #1 - beq _0804032E - cmp r0, #1 - bgt _080402F8 - cmp r0, #0 - beq _08040302 - b _08040382 -_080402F8: - cmp r0, #0x10 - beq _08040354 - cmp r0, #0x11 - beq _08040366 - b _08040382 -_08040302: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08040382 - bl Random - movs r1, #0x7f - ands r0, r1 - adds r0, #0x27 - strb r0, [r4, #0xf] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - beq _08040382 - strb r1, [r5] - adds r0, r4, #0 - movs r1, #8 - bl InitAnimationForceUpdate - b _08040382 -_0804032E: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08040382 - strb r2, [r5] - bl Random - movs r1, #0x7f - ands r0, r1 - adds r0, #0x17 - strb r0, [r4, #0xf] - adds r0, r4, #0 - movs r1, #0 - bl InitAnimationForceUpdate - b _08040382 -_08040354: - adds r0, r4, #0 - movs r1, #7 - bl InitAnimationForceUpdate - movs r0, #0x11 - strb r0, [r5] - movs r0, #0x50 - strb r0, [r4, #0xf] - b _08040382 -_08040366: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08040382 - movs r0, #1 - strb r0, [r5] - movs r0, #0x30 - strb r0, [r4, #0xf] - adds r0, r4, #0 - movs r1, #8 - bl InitAnimationForceUpdate -_08040382: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0804038C -sub_0804038C: @ 0x0804038C - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _080403AA - adds r2, r4, #0 - adds r2, #0x6d - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - bl DeleteThisEntity -_080403AA: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0x1e] - cmp r0, #2 - bne _080403CA - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] -_080403CA: - pop {r4, pc} - - thumb_func_start sub_080403CC -sub_080403CC: @ 0x080403CC - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - adds r3, r0, #0 - adds r3, #0x29 - ldrb r2, [r3] - subs r1, #9 - ands r1, r2 - movs r2, #4 - orrs r1, r2 - strb r1, [r3] - movs r1, #0 - bl InitAnimationForceUpdate - pop {pc} - .align 2, 0 - - thumb_func_start sub_080403EC -sub_080403EC: @ 0x080403EC - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _0804040A - adds r2, r4, #0 - adds r2, #0x6d - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - bl DeleteThisEntity -_0804040A: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0804041C -sub_0804041C: @ 0x0804041C - push {lr} - movs r2, #0 - movs r1, #1 - strb r1, [r0, #0xc] - adds r1, r0, #0 - adds r1, #0x80 - strb r2, [r1] - movs r1, #0xa - strb r1, [r0, #0xe] - ldrb r2, [r0, #0x18] - subs r1, #0xe - ands r1, r2 - strb r1, [r0, #0x18] - adds r3, r0, #0 - adds r3, #0x29 - ldrb r1, [r3] - movs r2, #7 - orrs r1, r2 - strb r1, [r3] - movs r1, #0 - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_0804044C -sub_0804044C: @ 0x0804044C - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _0804046A - adds r2, r4, #0 - adds r2, #0x6d - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - bl DeleteThisEntity -_0804046A: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #5 - beq _0804048A - adds r1, r4, #0 - adds r1, #0x80 - ldrb r0, [r1] - cmp r0, #0 - beq _080404BC - movs r0, #0 - strb r0, [r1] - ldrb r1, [r4, #0x18] - subs r0, #4 - ands r0, r1 - strb r0, [r4, #0x18] - b _080404BC -_0804048A: - adds r1, r4, #0 - adds r1, #0x80 - ldrb r0, [r1] - cmp r0, #0 - bne _080404A6 - adds r0, #1 - strb r0, [r1] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] -_080404A6: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080404BC - movs r0, #0xa - strb r0, [r4, #0xe] - ldr r0, _080404CC @ =0x00000149 - bl SoundReq -_080404BC: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 -_080404CC: .4byte 0x00000149 - - thumb_func_start sub_080404D0 -sub_080404D0: @ 0x080404D0 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xb] - cmp r0, #0 - beq _080404FC - movs r0, #2 - strb r0, [r2, #0xc] - movs r0, #0xa - strb r0, [r2, #0xe] - adds r3, r2, #0 - adds r3, #0x29 - ldrb r1, [r3] - subs r0, #0x12 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r3] - adds r0, r2, #0 - movs r1, #2 - bl InitializeAnimation - b _08040518 -_080404FC: - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x18] - subs r0, #5 - ands r0, r1 - strb r0, [r2, #0x18] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] -_08040518: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0804051C -sub_0804051C: @ 0x0804051C - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _0804053A - adds r2, r4, #0 - adds r2, #0x6d - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - bl DeleteThisEntity -_0804053A: - adds r1, r4, #0 - adds r1, #0x80 - ldrb r0, [r1] - cmp r0, #0 - beq _0804054A - cmp r0, #1 - beq _0804056C - b _080405C4 -_0804054A: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #6 - bne _080405CC - movs r0, #1 - movs r2, #1 - strb r0, [r1] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation - b _080405C4 -_0804056C: - ldr r0, [r4, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #6 - beq _08040582 - movs r0, #0 - strb r0, [r1] - ldrb r1, [r4, #0x18] - subs r0, #4 - ands r0, r1 - strb r0, [r4, #0x18] - b _080405C4 -_08040582: - adds r2, r4, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080405A8 - movs r0, #0x7f - ands r0, r1 - strb r0, [r2] - ldr r0, _080405D0 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x46 - bhi _080405A8 - ldrb r1, [r4, #0xa] - adds r0, r4, #0 - movs r2, #1 - bl sub_08040648 -_080405A8: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080405BE - movs r0, #0xa - strb r0, [r4, #0xe] - ldr r0, _080405D4 @ =0x00000149 - bl SoundReq -_080405BE: - adds r0, r4, #0 - bl GetNextFrame -_080405C4: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition -_080405CC: - pop {r4, pc} - .align 2, 0 -_080405D0: .4byte gEntCount -_080405D4: .4byte 0x00000149 - - thumb_func_start sub_080405D8 -sub_080405D8: @ 0x080405D8 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x50] - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _080405F6 - adds r2, r4, #0 - adds r2, #0x6d - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - bl DeleteThisEntity -_080405F6: - adds r3, r4, #0 - adds r3, #0x80 - ldrb r2, [r3] - cmp r2, #0 - bne _08040626 - ldr r0, [r4, #0x50] - ldr r0, [r0, #0x50] - ldrb r0, [r0, #0xc] - cmp r0, #6 - beq _08040638 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08040638 - adds r0, r2, #1 - strb r0, [r3] - adds r0, r4, #0 - movs r1, #3 - bl InitializeAnimation - b _08040638 -_08040626: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08040638 - bl DeleteThisEntity -_08040638: - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_08040648 -sub_08040648: @ 0x08040648 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - adds r4, r1, #0 - adds r7, r2, #0 - movs r0, #0x4f - bl CreateEnemy - adds r5, r0, #0 - strb r7, [r5, #0xb] - str r6, [r5, #0x50] - adds r0, r6, #0 - adds r1, r5, #0 - bl CopyPosition - cmp r4, #2 - bne _0804066E - cmp r7, #0 - bne _0804066E - str r5, [r6, #0x54] -_0804066E: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08040670 -sub_08040670: @ 0x08040670 - push {lr} - adds r2, r0, #0 - movs r1, #0 - movs r0, #1 - strb r0, [r2, #0xc] - adds r0, r2, #0 - adds r0, #0x80 - strb r1, [r0] - movs r0, #0x80 - lsls r0, r0, #1 - strh r0, [r2, #0x24] - movs r0, #0xc - strb r0, [r2, #0xe] - ldrb r0, [r2, #0x14] - cmp r0, #0 - bne _08040698 - adds r0, r2, #0 - bl sub_080406A0 - b _0804069E -_08040698: - adds r0, r2, #0 - bl sub_08040770 -_0804069E: - pop {pc} - - thumb_func_start sub_080406A0 -sub_080406A0: @ 0x080406A0 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - bl Random - mov r8, r0 - movs r0, #0x30 - mov r1, r8 - ands r1, r0 - mov r8, r1 - adds r0, r5, #0 - adds r0, #0x86 - ldrb r6, [r0] - ldr r2, _080406F0 @ =gRoomControls - ldrh r3, [r2, #6] - ldr r4, _080406F4 @ =gUnk_080D0B58 - lsls r1, r6, #1 - lsls r0, r6, #2 - adds r0, r0, r4 - ldrh r0, [r0] - adds r7, r3, r0 - ldrh r2, [r2, #8] - adds r1, #1 - lsls r1, r1, #1 - adds r1, r1, r4 - ldrh r0, [r1] - adds r4, r2, r0 - adds r0, r5, #0 - adds r1, r7, #0 - adds r2, r4, #0 - movs r3, #0x1c - bl sub_0806FCB8 - cmp r0, #0 - beq _0804071E - cmp r6, #0 - beq _080406F8 - movs r6, #0 - b _08040702 - .align 2, 0 -_080406F0: .4byte gRoomControls -_080406F4: .4byte gUnk_080D0B58 -_080406F8: - bl Random - movs r1, #1 - ands r1, r0 - adds r6, r1, #1 -_08040702: - ldr r2, _0804074C @ =gRoomControls - ldrh r3, [r2, #6] - ldr r4, _08040750 @ =gUnk_080D0B58 - lsls r1, r6, #1 - lsls r0, r6, #2 - adds r0, r0, r4 - ldrh r0, [r0] - adds r7, r3, r0 - ldrh r2, [r2, #8] - adds r1, #1 - lsls r1, r1, #1 - adds r1, r1, r4 - ldrh r0, [r1] - adds r4, r2, r0 -_0804071E: - movs r2, #0x2e - ldrsh r0, [r5, r2] - movs r2, #0x32 - ldrsh r1, [r5, r2] - adds r2, r7, #0 - adds r3, r4, #0 - bl sub_080045D4 - strb r0, [r5, #0x15] - movs r0, #0x20 - mov r1, r8 - ands r0, r1 - cmp r0, #0 - beq _0804075A - ldrb r1, [r5, #0x15] - movs r0, #0x10 - mov r2, r8 - ands r2, r0 - cmp r2, #0 - beq _08040754 - adds r0, r1, #1 - b _08040758 - .align 2, 0 -_0804074C: .4byte gRoomControls -_08040750: .4byte gUnk_080D0B58 -_08040754: - adds r0, r1, #0 - adds r0, #0x1f -_08040758: - strb r0, [r5, #0x15] -_0804075A: - ldrb r0, [r5, #0x15] - movs r1, #0x1f - ands r1, r0 - strb r1, [r5, #0x15] - adds r0, r5, #0 - adds r0, #0x86 - strb r6, [r0] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08040770 -sub_08040770: @ 0x08040770 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r7, r0, #0 - bl Random - mov r8, r0 - movs r0, #0x38 - mov r1, r8 - ands r1, r0 - mov r8, r1 - adds r0, r7, #0 - adds r0, #0x86 - ldrb r5, [r0] - ldr r2, _080407CC @ =gRoomControls - ldrh r3, [r2, #6] - ldr r4, _080407D0 @ =gUnk_080D0B64 - lsls r1, r5, #1 - lsls r0, r5, #2 - adds r0, r0, r4 - ldrh r0, [r0] - adds r6, r3, r0 - ldrh r2, [r2, #8] - adds r1, #1 - lsls r1, r1, #1 - adds r1, r1, r4 - ldrh r0, [r1] - adds r4, r2, r0 - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - movs r3, #0x1c - bl sub_0806FCB8 - cmp r0, #0 - beq _0804089A - ldrb r0, [r7, #0x14] - cmp r0, #2 - beq _08040822 - movs r0, #8 - mov r2, r8 - ands r0, r2 - cmp r0, #0 - beq _080407D4 - adds r5, #1 - b _080407D6 - .align 2, 0 -_080407CC: .4byte gRoomControls -_080407D0: .4byte gUnk_080D0B64 -_080407D4: - adds r5, #3 -_080407D6: - movs r0, #3 - ands r5, r0 - adds r0, r7, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _0804087E - adds r0, r7, #0 - adds r0, #0x75 - ldrb r0, [r0] - cmp r0, #0x3c - beq _0804080A - cmp r0, #0x3c - bgt _080407F8 - cmp r0, #0xf - beq _08040802 - b _0804087E -_080407F8: - cmp r0, #0xc3 - beq _0804081A - cmp r0, #0xf0 - beq _08040812 - b _0804087E -_08040802: - cmp r5, #0 - bne _0804087E - movs r5, #2 - b _0804087E -_0804080A: - cmp r5, #1 - bne _0804087E - movs r5, #3 - b _0804087E -_08040812: - cmp r5, #2 - bne _0804087E - movs r5, #0 - b _0804087E -_0804081A: - cmp r5, #3 - bne _0804087E - movs r5, #1 - b _0804087E -_08040822: - adds r1, r7, #0 - adds r1, #0x87 - ldrb r2, [r1] - movs r0, #0x7f - ands r0, r2 - adds r4, r1, #0 - cmp r0, #0 - beq _08040848 - movs r0, #0x80 - ands r0, r2 - cmp r0, #0 - beq _0804083E - adds r5, #1 - b _08040840 -_0804083E: - adds r5, #3 -_08040840: - ldrb r0, [r4] - subs r0, #1 - strb r0, [r4] - b _0804087A -_08040848: - bl Random - movs r1, #7 - ands r0, r1 - adds r0, #4 - strb r0, [r4] - ldrb r6, [r4] - bl Random - movs r1, #0x20 - ands r1, r0 - cmp r1, #0 - bne _08040868 - movs r1, #0x80 - orrs r1, r6 - b _0804086A -_08040868: - adds r1, r6, #0 -_0804086A: - strb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08040878 - adds r5, #1 - b _0804087A -_08040878: - adds r5, #3 -_0804087A: - movs r0, #3 - ands r5, r0 -_0804087E: - ldr r2, _080408C8 @ =gRoomControls - ldrh r3, [r2, #6] - ldr r4, _080408CC @ =gUnk_080D0B64 - lsls r1, r5, #1 - lsls r0, r5, #2 - adds r0, r0, r4 - ldrh r0, [r0] - adds r6, r3, r0 - ldrh r2, [r2, #8] - adds r1, #1 - lsls r1, r1, #1 - adds r1, r1, r4 - ldrh r0, [r1] - adds r4, r2, r0 -_0804089A: - movs r1, #0x2e - ldrsh r0, [r7, r1] - movs r2, #0x32 - ldrsh r1, [r7, r2] - adds r2, r6, #0 - adds r3, r4, #0 - bl sub_080045D4 - strb r0, [r7, #0x15] - movs r0, #0x20 - mov r1, r8 - ands r0, r1 - cmp r0, #0 - beq _080408D6 - ldrb r1, [r7, #0x15] - movs r0, #0x10 - mov r2, r8 - ands r2, r0 - cmp r2, #0 - beq _080408D0 - adds r0, r1, #1 - b _080408D4 - .align 2, 0 -_080408C8: .4byte gRoomControls -_080408CC: .4byte gUnk_080D0B64 -_080408D0: - adds r0, r1, #0 - adds r0, #0x1f -_080408D4: - strb r0, [r7, #0x15] -_080408D6: - ldrb r0, [r7, #0x15] - movs r1, #0x1f - ands r1, r0 - strb r1, [r7, #0x15] - adds r0, r7, #0 - adds r0, #0x86 - strb r5, [r0] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_080408EC -sub_080408EC: @ 0x080408EC - push {r4, r5, r6, r7, lr} - adds r2, r0, #0 - ldrb r0, [r2, #0x14] - cmp r0, #0 - bne _08040902 - movs r1, #0xf0 - adds r4, r2, #0 - adds r4, #0x75 - adds r5, r2, #0 - adds r5, #0x76 - b _08040926 -_08040902: - adds r4, r2, #0 - adds r4, #0x75 - adds r5, r2, #0 - adds r5, #0x76 - ldr r7, _08040930 @ =gUnk_080D0B74 - movs r6, #0x3c -_0804090E: - bl Random - ands r0, r6 - lsrs r0, r0, #2 - adds r0, r0, r7 - ldrb r1, [r0] - ldrb r0, [r4] - cmp r1, r0 - bne _08040922 - movs r1, #0xff -_08040922: - cmp r1, #0xff - beq _0804090E -_08040926: - movs r0, #0 - strb r1, [r4] - strb r0, [r5] - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08040930: .4byte gUnk_080D0B74 - - thumb_func_start sub_08040934 -sub_08040934: @ 0x08040934 - push {r4, lr} - adds r4, r0, #0 - bl Random - movs r1, #0x3e - ands r1, r0 - movs r2, #0 - cmp r1, #0x2e - bhi _08040948 - movs r2, #1 -_08040948: - adds r0, r4, #0 - adds r0, #0x87 - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - beq _08040958 - movs r2, #0 -_08040958: - adds r4, #0x84 - ldrb r0, [r4] - cmp r0, #9 - beq _080409A4 - cmp r2, #0 - beq _080409AA - adds r0, #1 - movs r1, #5 - bl __modsi3 - strb r0, [r4] - bl Random - movs r1, #0xf8 - ands r1, r0 - lsrs r1, r1, #3 - ldr r0, _08040998 @ =gUnk_080D0B84 - adds r0, r1, r0 - ldrb r2, [r0] - ldrb r0, [r4] - cmp r0, #1 - beq _0804099C - cmp r0, #1 - blt _080409AA - cmp r0, #4 - bgt _080409AA - cmp r0, #3 - blt _080409AA - cmp r2, #0 - bne _080409AA - b _080409A8 - .align 2, 0 -_08040998: .4byte gUnk_080D0B84 -_0804099C: - cmp r2, #0 - beq _080409A8 - movs r2, #3 - b _080409AA -_080409A4: - movs r0, #0 - strb r0, [r4] -_080409A8: - movs r2, #1 -_080409AA: - adds r0, r2, #0 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080409B0 -sub_080409B0: @ 0x080409B0 - push {r4, r5, lr} - adds r4, r0, #0 - movs r0, #0x81 - adds r0, r0, r4 - mov ip, r0 - ldrb r1, [r0] - cmp r1, #1 - beq _080409EA - cmp r1, #1 - bgt _080409CA - cmp r1, #0 - beq _080409D0 - b _08040A68 -_080409CA: - cmp r1, #2 - beq _08040A04 - b _08040A68 -_080409D0: - adds r0, r4, #0 - adds r0, #0x75 - adds r2, r4, #0 - adds r2, #0x76 - ldrb r0, [r0] - ldrb r3, [r2] - cmp r0, r3 - bne _08040A68 - movs r0, #1 - mov r3, ip - strb r0, [r3] - strb r1, [r2] - b _08040A68 -_080409EA: - adds r0, r4, #0 - adds r0, #0x76 - ldrb r0, [r0] - cmp r0, #0 - beq _08040A68 - movs r0, #2 - mov r1, ip - strb r0, [r1] - adds r1, r4, #0 - adds r1, #0x77 - movs r0, #0x10 - strb r0, [r1] - b _08040A68 -_08040A04: - adds r1, r4, #0 - adds r1, #0x77 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - bne _08040A68 - adds r0, r4, #0 - adds r0, #0x75 - adds r3, r4, #0 - adds r3, #0x76 - ldrb r1, [r0] - ldrb r0, [r3] - ands r0, r1 - cmp r1, r0 - beq _08040A3C - movs r0, #1 - mov r1, ip - strb r0, [r1] - strb r2, [r3] - ldr r0, _08040A38 @ =0x00000155 - bl SoundReq - b _08040A68 - .align 2, 0 -_08040A38: .4byte 0x00000155 -_08040A3C: - movs r1, #3 - strb r1, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x80 - strb r2, [r0] - mov r3, ip - strb r1, [r3] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x36 - strb r0, [r1] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - movs r0, #0xb2 - lsls r0, r0, #1 - bl SoundReq -_08040A68: - adds r0, r4, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #2 - bhi _08040A84 - adds r0, r4, #0 - adds r0, #0x42 - ldrb r0, [r0] - cmp r0, #0 - beq _08040AC8 - adds r0, r4, #0 - bl sub_080AF18C - b _08040AC8 -_08040A84: - adds r2, r4, #0 - adds r2, #0x41 - ldrb r1, [r2] - movs r0, #0x80 - ands r0, r1 - adds r5, r2, #0 - cmp r0, #0 - beq _08040AB0 - adds r0, r4, #0 - adds r0, #0x3d - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - ble _08040AB0 - movs r0, #0xc - movs r1, #1 - bl sub_08080964 - ldr r0, _08040ACC @ =0x00000127 - bl SoundReq -_08040AB0: - ldrb r0, [r5] - cmp r0, #0x8a - bne _08040AC8 - ldr r0, _08040AD0 @ =gPlayerState - adds r0, #0xa0 - ldrb r0, [r0] - cmp r0, #5 - bne _08040AC8 - adds r1, r4, #0 - adds r1, #0x45 - movs r0, #0xc0 - strb r0, [r1] -_08040AC8: - pop {r4, r5, pc} - .align 2, 0 -_08040ACC: .4byte 0x00000127 -_08040AD0: .4byte gPlayerState - - thumb_func_start sub_08040AD4 -sub_08040AD4: @ 0x08040AD4 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xe] - movs r1, #0x3f - ands r1, r0 - lsls r6, r1, #0x18 - lsrs r4, r6, #0x18 - movs r0, #0x1f - ands r0, r4 - cmp r0, #0 - bne _08040AF0 - ldr r0, _08040B0C @ =0x000001A9 - bl SoundReq -_08040AF0: - movs r0, #3 - ands r4, r0 - cmp r4, #0 - bne _08040B2A - lsrs r4, r6, #0x1a - movs r0, #0x2e - ldrsh r2, [r5, r0] - adds r0, r4, #4 - movs r1, #8 - ands r0, r1 - cmp r0, #0 - beq _08040B10 - subs r0, r2, #1 - b _08040B12 - .align 2, 0 -_08040B0C: .4byte 0x000001A9 -_08040B10: - adds r0, r2, #1 -_08040B12: - strh r0, [r5, #0x2e] - movs r0, #0x32 - ldrsh r2, [r5, r0] - adds r0, r4, #2 - movs r1, #4 - ands r0, r1 - cmp r0, #0 - beq _08040B26 - subs r0, r2, #1 - b _08040B28 -_08040B26: - adds r0, r2, #1 -_08040B28: - strh r0, [r5, #0x32] -_08040B2A: - pop {r4, r5, r6, pc} diff --git a/data/const/enemy/enemy5A.s b/data/const/enemy/enemy5A.s deleted file mode 100644 index 4ed7b471..00000000 --- a/data/const/enemy/enemy5A.s +++ /dev/null @@ -1,24 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - - -gUnk_080D1888:: @ 080D1888 - .4byte sub_080456E8 - .4byte sub_08045700 - .4byte sub_080456E8 - .4byte sub_0804A7D4 - .4byte sub_08001242 - .4byte nullsub_173 - -gUnk_080D18A0:: @ 080D18A0 - .4byte sub_080457E4 - .4byte sub_0804586C - .4byte sub_080458C4 - .4byte sub_08045938 - .4byte sub_08045984 - -gUnk_080D18B4:: @ 080D18B4 - .incbin "baserom.gba", 0x0D18B4, 0x0000010 diff --git a/linker.ld b/linker.ld index 60daec93..0709b6d6 100644 --- a/linker.ld +++ b/linker.ld @@ -433,7 +433,7 @@ SECTIONS { src/enemy/miniSlime.o(.text); src/enemy/fireballGuy.o(.text); src/enemy/miniFireballGuy.o(.text); - asm/enemy5A.o(.text); + src/enemy/enemy5A.o(.text); asm/businessScrubPrologue.o(.text); asm/gyorgFemale.o(.text); src/enemy/gyorgMale.o(.text); @@ -1145,7 +1145,7 @@ SECTIONS { data/const/enemy/fireballGuy.o(.rodata); data/animations/enemy/fireballGuy.o(.rodata); data/const/enemy/miniFireballGuy.o(.rodata); - data/const/enemy/enemy5A.o(.rodata); + src/enemy/enemy5A.o(.rodata); data/animations/enemy/enemy5A.o(.rodata); data/const/enemy/businessScrubPrologue.o(.rodata); data/const/enemy/gyorgFemale.o(.rodata); diff --git a/src/enemy/enemy5A.c b/src/enemy/enemy5A.c new file mode 100644 index 00000000..058f6afb --- /dev/null +++ b/src/enemy/enemy5A.c @@ -0,0 +1,327 @@ +#include "entity.h" +#include "enemy.h" +#include "audio.h" +#include "textbox.h" +#include "coord.h" +#include "functions.h" + +void sub_08045A00(Entity*); +void sub_08045A28(Entity*); + +void sub_080456E8(Entity*); +void sub_08045700(Entity*); +void nullsub_173(Entity*); +void sub_080457E4(Entity*); +void sub_0804586C(Entity*); +void sub_080458C4(Entity*); +void sub_08045938(Entity*); +void sub_08045984(Entity*); + +void (*const gUnk_080D1888[])(Entity*) = { + sub_080456E8, sub_08045700, sub_080456E8, sub_0804A7D4, sub_08001242, nullsub_173, +}; + +void (*const gUnk_080D18A0[])(Entity*) = { + sub_080457E4, sub_0804586C, sub_080458C4, sub_08045938, sub_08045984, +}; + +struct xy { + s8 x; + s8 y; +} PACKED; + +const struct xy gUnk_080D18B4[] = { { 0xe8, 0xf6 }, { 0xf6, 0xe8 }, { 0x0a, 0xe8 }, { 0x18, 0xf6 }, + { 0x18, 0x0a }, { 0x0a, 0x18 }, { 0xf6, 0x18 }, { 0xe8, 0x0a } }; + +void Enemy5A(Entity* this) { + EnemyFunctionHandler(this, gUnk_080D1888); +} + +void sub_080456E8(Entity* this) { + gUnk_080D18A0[this->action](this); +} + +void sub_08045700(Entity* this) { + u8 bVar1; + Entity* pEVar4; + + if (this->type != 0) { + pEVar4 = this->parent->parent; + if ((this->bitfield & 0x80) != 0) { + bVar1 = this->bitfield & 0x3f; + if ((bVar1 == 0xe) || (bVar1 == 0x15)) { + + if (this->field_0x80.HALF.HI == 0) { + this->action = 3; + this->field_0x80.HALF.HI += 1; + InitializeAnimation(this, (this->type << 3) | (this->actionDelay + 2)); + InitializeAnimation(this->parent, (this->parent->type << 3) | (this->actionDelay + 2)); + } + if (this->actionDelay != 0) { + SoundReq(SFX_17A); + } else { + SoundReq(SFX_ITEM_GLOVES_KNOCKBACK); + } + } else { + if (this->currentHealth != 0xff) { + this->currentHealth = 0xff; + if (this->actionDelay != 0 && (pEVar4->field_0x80.HALF.HI != 0)) { + pEVar4->field_0x76.HALF.LO |= (1 << this->type2); + if (this->cutsceneBeh.HALF.HI == 0) { + this->cutsceneBeh.HALF.HI += 1; + InitializeAnimation(this, this->type << 3 | 6); + InitializeAnimation(this->parent, this->parent->type << 3 | 6); + } + } + } + } + } + } + sub_0804AA30(this, gUnk_080D1888); +} + +void nullsub_173(Entity* this) { +} + +void sub_080457E4(Entity* this) { + Entity* child; + u8 bVar2; + + bVar2 = gTextBox.doTextBox & 0x7f; + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->action = 1; + this->spriteSettings.b.draw = 0; + this->field_0x80.HALF.LO = bVar2; + this->field_0x80.HALF.HI = bVar2; + this->cutsceneBeh.HALF.HI = bVar2; + this->field_0xf = bVar2; + this->field_0x82.HALF.LO = 0x30; + this->field_0x82.HALF.HI = bVar2; + if (this->type == 0) { + sub_08045A00(this); + child = CreateEnemy(ENEMY_5A, 1); + if (child != NULL) { + child->parent = this; + this->attachedEntity = child; + child->actionDelay = this->actionDelay; + child->type2 = this->type2; + CopyPosition(this, child); + } + } else { + this->spriteOffsetY = 1; + } + InitializeAnimation(this, (u32)this->type << 3 | 1); + } +} + +void sub_0804586C(Entity* this) { + sub_08045A28(this); + if (this->field_0x82.HALF.LO == 0) { + if ((this->frames.all & 0x80) != 0) { + if (this->type != 0) { + this->flags |= 0x80; + } + this->action = 2; + InitializeAnimation(this, (u32)this->type << 3); + } + } else { + if (--this->field_0x82.HALF.LO == 0) { + this->spriteSettings.b.draw = 1; + } + } +} + +void sub_080458C4(Entity* this) { + Entity* parent; + + sub_08045A28(this); + parent = this->parent; + if (this->type != 0) { + parent = parent->parent; + } + if ((parent->action == 3) && (parent->field_0x80.HALF.LO == 1)) { + this->action = 4; + this->field_0xf = 0; + if (this->type != 0) { + this->flags &= 0x7f; + if (this->actionDelay != 0) { + InitializeAnimation(this, this->type << 3 | 5); + InitializeAnimation(this->parent, this->parent->type << 3 | 5); + } else { + InitializeAnimation(this, this->type << 3 | 4); + InitializeAnimation(this->parent, this->parent->type << 3 | 4); + } + } + } +} + +void sub_08045938(Entity* this) { + sub_08045A28(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 2; + if (this->type != 0) { + if (this->actionDelay == 0) { + this->damageType = 0x32; + } else { + this->parent->parent->field_0x76.HALF.LO |= (1 << this->type2); + this->damageType = 0x31; + } + } + } +} + +void sub_08045984(Entity* this) { + Entity* parent; + + sub_08045A28(this); + if (this->field_0xf == 0) { + if ((this->frames.all & 0x80) != 0) { + this->field_0xf = 0x20; + } + } else { + parent = this->parent; + if (this->type != 0) { + parent = parent->parent; + } + if ((parent->animationState < 3) && (parent->action != 3)) { + this->action = 1; + this->field_0xf = 0; + this->field_0x80.HALF.HI = 0; + this->cutsceneBeh.HALF.HI = 0; + if (this->type != 0) { + this->damageType = 0x33; + } + if ((parent->field_0x74.HALF.HI >> this->type2 & 1U) != 0) { + this->actionDelay = 1; + } else { + this->actionDelay = 0; + } + InitializeAnimation(this, this->type << 3 | 1); + } + } +} + +void sub_08045A00(Entity* this) { + const struct xy* t = &gUnk_080D18B4[this->type2]; + PositionRelative(this->parent, this, t->x << 0x10, (t->y + 3) * 0x10000); +} + +void sub_08045A28(Entity* this) { + u32 frames; + u32 type; + + if (this->field_0x82.HALF.LO == 0) { + GetNextFrame(this); + } + frames = this->frames.all & 0x70; + type = this->type; + if (type == 0) { + sub_08045A00(this); + switch (this->field_0x82.HALF.HI) { + case 0: + switch (frames) { + case 0x20: + this->field_0x82.HALF.HI = 1; + sub_0801D2B4(this, 0x13e); + break; + case 0x00: + case 0x40: + this->field_0x82.HALF.HI = 2; + sub_0801D2B4(this, 0x13f); + break; + default: + break; + } + break; + case 1: + switch (frames) { + case 0x10: + this->field_0x82.HALF.HI = type; + sub_0801D2B4(this, 0x13b); + break; + case 0: + this->field_0x82.HALF.HI = 2; + sub_0801D2B4(this, 0x13f); + break; + default: + break; + } + break; + case 2: + switch (frames) { + case 0x20: + this->field_0x82.HALF.HI = 1; + sub_0801D2B4(this, 0x13e); + break; + case 0x10: + this->field_0x82.HALF.HI = 0; + sub_0801D2B4(this, 0x13b); + break; + case 0x40: + this->field_0x82.HALF.HI = 2; + sub_0801D2B4(this, 0x13f); + break; + default: + break; + } + break; + case 3: + switch (frames) { + case 0: + this->field_0x82.HALF.HI = 2; + sub_0801D2B4(this, 0x13f); + break; + default: + break; + } + break; + default: + break; + } + } else { + PositionRelative(this->parent, this, 0, -0x10000); + switch (this->field_0x82.HALF.HI) { + case 0: + switch (this->frames.all & 0x70) { + case 0x10: + this->field_0x82.HALF.HI = 2; + sub_0801D2B4(this, 0x13b); + break; + case 0x20: + this->field_0x82.HALF.HI = 1; + sub_0801D2B4(this, 0x13e); + break; + default: + break; + } + break; + case 1: { + u32 temp = this->frames.all & 0x70; + switch (temp) { + case 0: + this->field_0x82.HALF.HI = temp; + sub_0801D2B4(this, 0x13f); + break; + case 0x10: + this->field_0x82.HALF.HI = 2; + sub_0801D2B4(this, 0x13b); + break; + default: + break; + } + } break; + case 2: + switch (this->frames.all & 0x70) { + case 0: + this->field_0x82.HALF.HI = this->frames.all & 0x70; + sub_0801D2B4(this, 0x13f); + break; + default: + break; + } + break; + default: + break; + } + } +}