diff --git a/asm/non_matching/figurineDevice/sub_08087F94.inc b/asm/non_matching/figurineDevice/sub_08087F94.inc deleted file mode 100644 index 2581864d..00000000 --- a/asm/non_matching/figurineDevice/sub_08087F94.inc +++ /dev/null @@ -1,265 +0,0 @@ - .syntax unified -.ifdef JP - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r4, r1, #0 - movs r0, #0x5f - bl CheckLocalFlag - cmp r0, #0 - bne _08087E3E - adds r0, r5, #0 - adds r0, #0x83 - movs r7, #0 - ldrsb r7, [r0, r7] - adds r3, r7, r4 - mov ip, r0 - cmp r4, #0 - bge _08087E0A - adds r2, r5, #0 - adds r2, #0x82 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r3, r0 - bge _08087DF4 - mov r0, ip - movs r1, #0 - ldrsb r1, [r0, r1] - ldrb r3, [r2] - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r1, r0 - beq _08087E3E - mov r2, ip - strb r3, [r2] - adds r1, r5, #0 - adds r1, #0x81 - movs r0, #1 - b _08087E00 -_08087DF4: - mov r0, ip - strb r3, [r0] - adds r1, r5, #0 - adds r1, #0x81 - ldrb r0, [r1] - adds r0, r0, r4 -_08087E00: - strb r0, [r1] - movs r0, #0x69 - bl SoundReq - b _08087E58 -_08087E0A: - adds r1, r5, #0 - adds r1, #0x81 - ldrb r6, [r1] - adds r2, r6, r4 - ldr r0, _08087E2C @ =0x02002A40 - adds r0, #0xc2 - ldrh r0, [r0] - cmp r2, r0 - ble _08087E30 - cmp r0, r6 - beq _08087E3E - adds r2, r0, #0 - subs r4, r2, r6 - adds r3, r7, r4 - cmp r3, #0x64 - ble _08087E4C - b _08087E46 - .align 2, 0 -_08087E2C: .4byte 0x02002A40 -_08087E30: - cmp r3, #0x64 - ble _08087E4C - mov r2, ip - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0x64 - bne _08087E46 -_08087E3E: - adds r0, r5, #0 - bl sub_08088034 - b _08087E58 -_08087E46: - movs r3, #0x64 - subs r4, r3, r7 - adds r2, r6, r4 -_08087E4C: - mov r0, ip - strb r3, [r0] - strb r2, [r1] - movs r0, #0x69 - bl SoundReq -_08087E58: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -.else -.ifdef EU - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r6, r1, #0 - adds r7, r5, #0 - adds r7, #0x83 - ldrb r0, [r7] - adds r4, r0, r6 - movs r0, #0x5f - bl CheckLocalFlag - cmp r0, #0 - bne _080879CE - cmp r6, #0 - bge _0808799E - adds r0, r5, #0 - adds r0, #0x82 - ldrb r1, [r0] - cmp r4, r1 - bhs _0808798A - ldrb r0, [r7] - cmp r0, r1 - beq _080879CE - strb r1, [r7] - adds r1, r5, #0 - adds r1, #0x81 - movs r0, #1 - b _08087994 -_0808798A: - strb r4, [r7] - adds r1, r5, #0 - adds r1, #0x81 - ldrb r0, [r1] - adds r0, r0, r6 -_08087994: - strb r0, [r1] - movs r0, #0x69 - bl SoundReq - b _080879EC -_0808799E: - adds r1, r5, #0 - adds r1, #0x81 - ldrb r3, [r1] - adds r2, r3, r6 - ldr r0, _080879C0 @ =gSave - adds r0, #0xc2 - ldrh r0, [r0] - cmp r2, r0 - bls _080879C4 - cmp r0, r3 - beq _080879CE - adds r2, r0, #0 - subs r0, r2, r3 - ldrb r7, [r7] - adds r4, r0, r7 - b _080879DE - .align 2, 0 -_080879C0: .4byte gSave -_080879C4: - cmp r4, #0x64 - bls _080879DE - ldrb r0, [r7] - cmp r0, #0x64 - bne _080879D6 -_080879CE: - adds r0, r5, #0 - bl sub_08088034 - b _080879EC -_080879D6: - movs r4, #0x64 - ldrb r0, [r7] - subs r6, r4, r0 - adds r2, r3, r6 -_080879DE: - adds r0, r5, #0 - adds r0, #0x83 - strb r4, [r0] - strb r2, [r1] - movs r0, #0x69 - bl SoundReq -_080879EC: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -.else - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r4, r1, #0 - movs r0, #0x5f - bl CheckLocalFlag - cmp r0, #0 - bne _08088014 - adds r0, r5, #0 - adds r0, #0x83 - movs r1, #0 - ldrsb r1, [r0, r1] - mov ip, r1 - adds r3, r1, r4 - adds r7, r0, #0 - cmp r4, #0 - bge _08087FEA - adds r2, r5, #0 - adds r2, #0x82 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r3, r0 - bge _08087FD6 - movs r1, #0 - ldrsb r1, [r7, r1] - ldrb r3, [r2] - cmp r1, r0 - beq _08088014 - strb r3, [r7] - adds r1, r5, #0 - adds r1, #0x81 - movs r0, #1 - b _08087FE0 -_08087FD6: - strb r3, [r7] - adds r1, r5, #0 - adds r1, #0x81 - ldrb r0, [r1] - adds r0, r0, r4 -_08087FE0: - strb r0, [r1] - movs r0, #0x69 - bl SoundReq - b _08088032 -_08087FEA: - adds r1, r5, #0 - adds r1, #0x81 - ldrb r6, [r1] - adds r2, r6, r4 - ldr r0, _0808801C @ =gSave - adds r0, #0xc2 - ldrh r0, [r0] - cmp r2, r0 - ble _08088008 - cmp r0, r6 - beq _08088014 - adds r2, r0, #0 - subs r4, r2, r6 - mov r0, ip - adds r3, r0, r4 -_08088008: - cmp r3, #0x64 - ble _08088028 - movs r0, #0 - ldrsb r0, [r7, r0] - cmp r0, #0x64 - bne _08088020 -_08088014: - adds r0, r5, #0 - bl sub_08088034 - b _08088032 - .align 2, 0 -_0808801C: .4byte gSave -_08088020: - movs r3, #0x64 - mov r0, ip - subs r4, r3, r0 - adds r2, r6, r4 -_08088028: - strb r3, [r7] - strb r2, [r1] - movs r0, #0x69 - bl SoundReq -_08088032: - pop {r4, r5, r6, r7, pc} -.endif -.endif - .syntax divided diff --git a/asm/non_matching/madderpillar/sub_08029E0C.inc b/asm/non_matching/madderpillar/sub_08029E0C.inc deleted file mode 100644 index 246103ee..00000000 --- a/asm/non_matching/madderpillar/sub_08029E0C.inc +++ /dev/null @@ -1,115 +0,0 @@ - - .syntax unified - - .text - - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - adds r5, r0, #0 - ldrb r0, [r5, #0x15] - lsrs r0, r0, #3 - lsls r1, r0, #1 - adds r1, r1, r0 - ldr r0, _08029EE0 @ =gUnk_080CCDC8 - adds r1, r1, r0 - str r1, [sp] - bl Random - movs r1, #1 - ands r1, r0 - lsls r1, r1, #1 - subs r1, #1 - mov sl, r1 - bl Random - adds r1, r0, #0 - movs r0, #0xf - ands r0, r1 - movs r1, #3 - bl __modsi3 - mov sb, r0 - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r3, _08029EE4 @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - mov r8, r0 - movs r2, #0x3f - ands r0, r2 - mov r8, r0 - movs r1, #0x32 - ldrsh r0, [r5, r1] - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - mov r1, r8 - orrs r1, r0 - mov r8, r1 - movs r7, #0 -_08029E72: - ldr r0, [sp] - add r0, sb - ldrb r4, [r0] - lsrs r0, r4, #3 - lsls r0, r0, #1 - ldr r1, _08029EE8 @ =gUnk_080B4488 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - add r0, r8 - adds r1, r5, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl sub_080B1B44 - adds r6, r5, #0 - adds r6, #0x74 - cmp r0, #0 - bne _08029EA6 - str r4, [sp, #4] - ldrb r1, [r5, #0x15] - ldrb r0, [r6] - subs r0, r1, r0 - subs r1, r4, r1 - cmp r0, r1 - bne _08029EBA -_08029EA6: - mov r0, sb - add r0, sl - adds r0, #3 - movs r1, #3 - bl __modsi3 - mov sb, r0 - adds r7, #1 - cmp r7, #2 - bls _08029E72 -_08029EBA: - cmp r7, #3 - bne _08029EC0 - ldr r4, [sp, #4] -_08029EC0: - ldrb r1, [r5, #0x15] - ldrb r0, [r6] - cmp r0, r1 - beq _08029ECA - strb r1, [r6] -_08029ECA: - strb r4, [r5, #0x15] - adds r0, r5, #0 - bl sub_08029F0C - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08029EE0: .4byte gUnk_080CCDC8 -_08029EE4: .4byte gRoomControls -_08029EE8: .4byte gUnk_080B4488 - - .syntax divided diff --git a/asm/non_matching/mulldozer/sub_08033364.inc b/asm/non_matching/mulldozer/sub_08033364.inc deleted file mode 100644 index 8667fa00..00000000 --- a/asm/non_matching/mulldozer/sub_08033364.inc +++ /dev/null @@ -1,44 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r1, r0, #0 - cmp r1, #0 - beq _080333B4 - ldrb r0, [r4, #0xa] - movs r3, #0x38 - cmp r0, #0 - beq _0803337E - movs r3, #0x48 -_0803337E: - adds r0, r4, #0 - adds r2, r3, #0 - bl EntityInRectRadius - cmp r0, #0 - beq _080333B4 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080333AA - ldr r0, _080333B0 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - bl GetFacingDirection - adds r1, r0, #0 - adds r1, #2 - movs r0, #0x1c - ands r1, r0 - lsrs r1, r1, #2 - ldrb r0, [r4, #0x14] - cmp r0, r1 - bne _080333B4 -_080333AA: - movs r0, #1 - b _080333B6 - .align 2, 0 -_080333B0: .4byte gUnk_020000B0 -_080333B4: - movs r0, #0 -_080333B6: - pop {r4, pc} - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_080797EC.inc b/asm/non_matching/playerUtils/sub_080797EC.inc deleted file mode 100644 index 6dd3af5e..00000000 --- a/asm/non_matching/playerUtils/sub_080797EC.inc +++ /dev/null @@ -1,178 +0,0 @@ - .syntax unified - push {r4, r5, lr} - ldr r4, _08079804 @ =gPlayerState - ldr r1, [r4, #0x30] - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _0807985C - ldrb r0, [r4, #5] - cmp r0, #0 - beq _0807980C - ldr r5, _08079808 @ =0x00000934 - b _0807991E - .align 2, 0 -_08079804: .4byte gPlayerState -_08079808: .4byte 0x00000934 -_0807980C: - ldrb r0, [r4, #3] - cmp r0, #0 - beq _08079818 - movs r5, #0x82 - lsls r5, r5, #3 - b _0807991E -_08079818: - adds r0, r4, #0 - adds r0, #0x21 - ldrb r0, [r0] - cmp r0, #0 - bne _080798A0 - adds r0, r4, #0 - adds r0, #0x26 - ldrb r0, [r0] - movs r5, #0xa4 - lsls r5, r5, #2 - cmp r0, #0 - bne _0807991E - movs r5, #0xb6 - lsls r5, r5, #1 - ldrb r1, [r4, #0x1b] - movs r0, #0x48 - ands r0, r1 - cmp r0, #0 - bne _080798C2 - lsls r0, r1, #0x18 - cmp r0, #0 - bne _080798CE - adds r1, r4, #0 - adds r1, #0xa8 - ldrb r0, [r1] - cmp r0, #0 - bne _08079852 - movs r0, #1 - strb r0, [r1] -_08079852: - ldr r5, _08079858 @ =0x00000404 - b _0807991E - .align 2, 0 -_08079858: .4byte 0x00000404 -_0807985C: - ldrb r0, [r4, #0x1c] - cmp r0, #0 - bne _0807992E - ldrb r0, [r4, #5] - cmp r0, #0 - beq _0807986E - movs r5, #0xd2 - lsls r5, r5, #2 - b _0807991E -_0807986E: - ldrb r0, [r4, #0x1e] - cmp r0, #0 - beq _0807987A - movs r5, #0xa6 - lsls r5, r5, #2 - b _0807991E -_0807987A: - movs r0, #0x80 - lsls r0, r0, #5 - ands r1, r0 - cmp r1, #0 - beq _0807988A - movs r5, #0xe2 - lsls r5, r5, #3 - b _0807991E -_0807988A: - ldrb r0, [r4, #3] - cmp r0, #0 - beq _08079896 - movs r5, #0xb0 - lsls r5, r5, #1 - b _0807991E -_08079896: - adds r0, r4, #0 - adds r0, #0x21 - ldrb r0, [r0] - cmp r0, #0 - beq _080798A6 -_080798A0: - movs r5, #0xa1 - lsls r5, r5, #2 - b _0807991E -_080798A6: - adds r0, r4, #0 - adds r0, #0x26 - ldrb r0, [r0] - movs r5, #0xa4 - lsls r5, r5, #2 - cmp r0, #0 - bne _0807991E - movs r5, #0xb6 - lsls r5, r5, #1 - ldrb r1, [r4, #0x1b] - movs r0, #0x48 - ands r0, r1 - cmp r0, #0 - beq _080798C8 -_080798C2: - movs r0, #0x6c - strb r0, [r4] - b _0807992E -_080798C8: - lsls r0, r1, #0x18 - cmp r0, #0 - beq _080798FC -_080798CE: - movs r0, #0 - bl sub_080793E4 - cmp r0, #0 - beq _0807991E - bl GetPlayerTilePos - ldr r1, _080798F8 @ =gPlayerEntity - adds r1, #0x38 - ldrb r1, [r1] - bl sub_080B1B44 - cmp r0, #0xff - beq _0807991E - ldrb r1, [r4, #0x1b] - movs r0, #0xf7 - ands r0, r1 - strb r0, [r4, #0x1b] - movs r5, #0xb8 - lsls r5, r5, #1 - b _0807991E - .align 2, 0 -_080798F8: .4byte gPlayerEntity -_080798FC: - adds r1, r4, #0 - adds r1, #0xa8 - ldrb r0, [r1] - cmp r0, #0 - bne _0807990A - movs r0, #1 - strb r0, [r1] -_0807990A: - ldr r0, [r4, #0x30] - movs r1, #0x80 - lsls r1, r1, #0x10 - ands r0, r1 - movs r5, #0x82 - lsls r5, r5, #1 - cmp r0, #0 - beq _0807991E - movs r5, #0xc1 - lsls r5, r5, #3 -_0807991E: - ldr r0, _08079930 @ =gPlayerState - strh r5, [r0, #8] - ldrb r0, [r0, #3] - cmp r0, #0 - bne _0807992E - ldr r0, _08079934 @ =gPlayerEntity - bl UpdateAnimationSingleFrame -_0807992E: - pop {r4, r5, pc} - .align 2, 0 -_08079930: .4byte gPlayerState -_08079934: .4byte gPlayerEntity - .syntax divided diff --git a/asm/non_matching/spearMoblin/sub_08028604.inc b/asm/non_matching/spearMoblin/sub_08028604.inc deleted file mode 100644 index 61faa58b..00000000 --- a/asm/non_matching/spearMoblin/sub_08028604.inc +++ /dev/null @@ -1,104 +0,0 @@ - - .syntax unified - - .text - - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r1, #0 - strb r1, [r4, #0xf] - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #1 - bne _080286B0 - bl Random - ldr r2, _08028650 @ =gUnk_080CC7BC - movs r1, #3 - ands r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4, #0xe] - movs r0, #0x80 - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - beq _08028658 - bl Random - ldr r2, _08028654 @ =gUnk_080CC7D0 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r0, #0x18 - ldrb r1, [r4, #0x15] - adds r0, r0, r1 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - b _080286B8 - .align 2, 0 -_08028650: .4byte gUnk_080CC7BC -_08028654: .4byte gUnk_080CC7D0 -_08028658: - adds r0, r4, #0 - bl sub_08049EE4 - adds r5, r0, #0 - adds r6, r4, #0 - adds r6, #0x83 - ldrb r0, [r6] - cmp r0, #0 - bne _08028684 - bl Random - ldr r2, _08028680 @ =gUnk_080CC7C0 - movs r1, #0xf - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r5, r5, r0 - b _080286A2 - .align 2, 0 -_08028680: .4byte gUnk_080CC7C0 -_08028684: - bl Random - ldr r2, _080286AC @ =gUnk_080CC7C0 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - adds r5, r5, r0 - ldrb r0, [r4, #0xe] - adds r0, #0x10 - strb r0, [r4, #0xe] - ldrb r0, [r6] - subs r0, #1 - strb r0, [r6] -_080286A2: - adds r0, r5, #4 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - b _080286B8 - .align 2, 0 -_080286AC: .4byte gUnk_080CC7C0 -_080286B0: - movs r0, #0xc - strb r0, [r4, #0xe] - strh r1, [r4, #0x24] - ldrb r0, [r4, #0x15] -_080286B8: - lsrs r5, r0, #2 - ldrb r0, [r4, #0x14] - cmp r5, r0 - beq _080286C8 - strb r5, [r4, #0x14] - adds r0, r4, #0 - bl sub_080287E0 -_080286C8: - pop {r4, r5, r6, pc} - .align 2, 0 - - .syntax divided diff --git a/asm/non_matching/ui/DrawChargeBar.inc b/asm/non_matching/ui/DrawChargeBar.inc deleted file mode 100644 index 252ab19d..00000000 --- a/asm/non_matching/ui/DrawChargeBar.inc +++ /dev/null @@ -1,155 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - movs r2, #0 - ldr r5, _0801C884 @ =gUnk_0200AF00 - ldrb r1, [r5, #1] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - bne _0801C878 - ldr r0, _0801C888 @ =gPlayerState - adds r0, #0xa0 - ldrb r1, [r0] - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r2, r0, #0x1f -_0801C878: - cmp r2, #0 - bne _0801C88C - bl sub_0801C824 - b _0801C984 - .align 2, 0 -_0801C884: .4byte gUnk_0200AF00 -_0801C888: .4byte gPlayerState -_0801C88C: - ldrb r0, [r5, #4] - ldr r4, _0801C92C @ =gUnk_02034D30 - cmp r0, #0x28 - bls _0801C896 - adds r4, #0x40 -_0801C896: - ldr r0, _0801C930 @ =gPlayerState - adds r0, #0xa4 - movs r1, #0 - ldrsh r0, [r0, r1] - adds r0, #0x13 - movs r1, #0x14 - bl Div - adds r1, r0, #0 - cmp r1, #0x28 - bls _0801C8AE - movs r1, #0x28 -_0801C8AE: - ldrb r0, [r5, #6] - cmp r0, #0 - beq _0801C8BA - ldrb r0, [r5, #7] - cmp r0, r1 - beq _0801C910 -_0801C8BA: - movs r6, #1 - strb r6, [r5, #6] - strb r1, [r5, #7] - adds r0, r1, #0 - movs r1, #4 - bl Div - adds r3, r0, #0 - adds r5, r1, #0 - ldr r1, _0801C934 @ =0x0000F016 - adds r0, r1, #0 - strh r0, [r4] - ldr r1, _0801C938 @ =0x0000F416 - adds r0, r1, #0 - strh r0, [r4, #0x16] - ldr r2, _0801C93C @ =0x040000D4 - movs r0, #0xa - subs r0, r0, r3 - lsls r0, r0, #1 - ldr r1, _0801C940 @ =gUnk_080C8F54 - adds r0, r0, r1 - str r0, [r2] - adds r0, r4, #2 - str r0, [r2, #4] - ldr r0, _0801C944 @ =0x8000000A - str r0, [r2, #8] - ldr r0, [r2, #8] - cmp r5, #0 - beq _0801C90C - lsls r2, r3, #1 - adds r2, r2, r4 - adds r0, r5, #0 - adds r0, #0x17 - ldr r3, _0801C948 @ =0x000003FF - adds r1, r3, #0 - ands r0, r1 - movs r3, #0xf0 - lsls r3, r3, #8 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2, #2] -_0801C90C: - ldr r0, _0801C94C @ =gScreen - strh r6, [r0, #0xe] -_0801C910: - ldr r0, _0801C930 @ =gPlayerState - adds r0, #0xa0 - ldrb r0, [r0] - cmp r0, #5 - bgt _0801C962 - cmp r0, #4 - blt _0801C962 - ldr r2, _0801C950 @ =gUnk_0200AF00 - ldrb r1, [r2, #9] - adds r4, r2, #0 - cmp r0, #4 - bne _0801C954 - adds r0, r1, #2 - b _0801C956 - .align 2, 0 -_0801C92C: .4byte gUnk_02034D30 -_0801C930: .4byte gPlayerState -_0801C934: .4byte 0x0000F016 -_0801C938: .4byte 0x0000F416 -_0801C93C: .4byte 0x040000D4 -_0801C940: .4byte gUnk_080C8F54 -_0801C944: .4byte 0x8000000A -_0801C948: .4byte 0x000003FF -_0801C94C: .4byte gScreen -_0801C950: .4byte gUnk_0200AF00 -_0801C954: - adds r0, r1, #1 -_0801C956: - strb r0, [r2, #9] - ldrb r0, [r4, #9] - lsrs r3, r0, #4 - movs r0, #3 - ands r3, r0 - b _0801C966 -_0801C962: - movs r3, #0 - ldr r4, _0801C988 @ =gUnk_0200AF00 -_0801C966: - ldrb r0, [r4, #8] - cmp r3, r0 - beq _0801C984 - strb r3, [r4, #8] - ldr r4, _0801C98C @ =0x0600C2C0 - ldr r1, _0801C990 @ =0x040000D4 - ldr r2, _0801C994 @ =gUnk_080C8F7C - lsls r0, r3, #2 - adds r0, r0, r2 - ldr r0, [r0] - str r0, [r1] - str r4, [r1, #4] - ldr r0, _0801C998 @ =0x84000030 - str r0, [r1, #8] - ldr r0, [r1, #8] -_0801C984: - pop {r4, r5, r6, pc} - .align 2, 0 -_0801C988: .4byte gUnk_0200AF00 -_0801C98C: .4byte 0x0600C2C0 -_0801C990: .4byte 0x040000D4 -_0801C994: .4byte gUnk_080C8F7C -_0801C998: .4byte 0x84000030 - .syntax divided diff --git a/asm/non_matching/vaati/sub_080432A8.inc b/asm/non_matching/vaati/sub_080432A8.inc deleted file mode 100644 index d075d6a5..00000000 --- a/asm/non_matching/vaati/sub_080432A8.inc +++ /dev/null @@ -1,89 +0,0 @@ - - .syntax unified - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - movs r3, #3 - movs r2, #0 - ldr r0, [r4, #0x64] - adds r1, r0, #0 - adds r1, #0x48 - ldrb r0, [r1, #0xc] - cmp r0, #2 - bls _080432C2 - subs r0, #1 - strb r0, [r1, #0xc] - movs r2, #1 -_080432C2: - subs r3, #1 - cmp r3, #0 - blt _080432E0 - lsls r0, r3, #4 - adds r0, #0x18 - ldr r1, [r4, #0x64] - adds r1, r1, r0 - ldrb r0, [r1, #0xc] - cmp r0, #2 - bls _080432C2 - subs r0, #1 - strb r0, [r1, #0xc] - adds r2, #1 - cmp r2, #1 - ble _080432C2 -_080432E0: - ldr r0, [r4, #0x64] - adds r1, r0, #0 - adds r1, #0x18 - ldrb r0, [r1, #5] - subs r0, #2 - strb r0, [r1, #5] - movs r3, #0 - movs r6, #0x80 - movs r7, #4 - rsbs r7, r7, #0 - movs r5, #1 -_080432F6: - ldr r0, [r4, #0x64] - lsls r1, r3, #2 - adds r0, r0, r1 - ldr r2, [r0] - movs r1, #0x36 - ldrsh r0, [r2, r1] - cmp r0, #3 - bgt _08043316 - ldrb r0, [r2, #0x10] - orrs r0, r6 - strb r0, [r2, #0x10] - ldrb r1, [r2, #0x18] - adds r0, r7, #0 - ands r0, r1 - orrs r0, r5 - strb r0, [r2, #0x18] -_08043316: - adds r3, #1 - cmp r3, #3 - ble _080432F6 - ldr r1, [r4, #0x64] - ldr r0, [r1] - ldrb r0, [r0, #0x18] - lsls r0, r0, #0x1e - lsrs r2, r0, #0x1e - cmp r2, #1 - bne _08043348 - adds r0, r1, #0 - adds r0, #0x34 - ldrb r0, [r0] - cmp r0, #2 - bhi _08043348 - strb r2, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r0, #0x80 - lsls r0, r0, #7 - strh r0, [r1, #0x1c] - ldr r0, [r4, #0x64] - ldr r0, [r0, #0x10] - bl sub_0804AA1C -_08043348: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/vaati/sub_0804393C.inc b/asm/non_matching/vaati/sub_0804393C.inc deleted file mode 100644 index 1cd40fbe..00000000 --- a/asm/non_matching/vaati/sub_0804393C.inc +++ /dev/null @@ -1,109 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - ldr r0, [r5, #0x64] - ldr r1, [r0] - adds r0, r1, #0 - adds r0, #0x7c - ldrb r0, [r0] - lsls r2, r0, #0x18 - cmp r2, #0 - beq _0804397C - adds r0, r1, #0 - adds r0, #0x7d - ldrb r0, [r0] - ldrb r1, [r5, #0xa] - cmp r0, r1 - bhi _0804397C - ldr r4, _08043978 @ =gUnk_080D1362 - ldrb r3, [r5, #0xa] - lsls r1, r3, #4 - lsrs r0, r2, #0x1b - movs r2, #0xf - ands r0, r2 - adds r1, r1, r0 - adds r1, r1, r4 - ldrb r4, [r1] - adds r6, r3, #0 - b _08043980 - .align 2, 0 -_08043978: .4byte gUnk_080D1362 -_0804397C: - movs r4, #0 - ldrb r6, [r5, #0xa] -_08043980: - lsls r0, r6, #4 - adds r0, #0x18 - ldr r2, [r5, #0x64] - mov ip, r2 - adds r2, r2, r0 - ldrb r0, [r2, #0xc] - adds r0, r4, r0 - lsls r4, r0, #8 - ldr r3, _08043A0C @ =gSineTable - ldrb r1, [r2, #5] - adds r0, r1, #0 - adds r0, #0x40 - lsls r0, r0, #1 - adds r0, r0, r3 - movs r7, #0 - ldrsh r0, [r0, r7] - rsbs r0, r0, #0 - adds r7, r0, #0 - muls r7, r4, r7 - mov r8, r7 - movs r0, #0x7f - ands r1, r0 - lsls r1, r1, #1 - adds r1, r1, r3 - movs r7, #0 - ldrsh r0, [r1, r7] - muls r0, r4, r0 - cmp r0, #0 - bge _080439BC - adds r0, #0xff -_080439BC: - asrs r4, r0, #8 - ldrb r1, [r2, #1] - lsls r0, r1, #1 - adds r0, r0, r3 - movs r2, #0 - ldrsh r0, [r0, r2] - adds r2, r0, #0 - muls r2, r4, r2 - adds r1, #0x40 - lsls r1, r1, #1 - adds r1, r1, r3 - movs r3, #0 - ldrsh r0, [r1, r3] - rsbs r0, r0, #0 - adds r3, r0, #0 - muls r3, r4, r3 - adds r0, r6, #1 - lsls r0, r0, #2 - add r0, ip - ldr r0, [r0] - adds r1, r5, #0 - bl PositionRelative - ldr r0, [r5, #0x34] - add r0, r8 - str r0, [r5, #0x34] - ldr r1, [r5, #0x64] - ldrb r0, [r5, #0xa] - adds r0, #1 - lsls r0, r0, #2 - adds r1, r1, r0 - ldr r0, [r1] - adds r0, #0x63 - ldrb r1, [r0] - adds r0, r5, #0 - adds r0, #0x63 - strb r1, [r0] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08043A0C: .4byte gSineTable - .syntax divided diff --git a/src/enemy/madderpillar.c b/src/enemy/madderpillar.c index 46f0d2ef..ad81c2d4 100644 --- a/src/enemy/madderpillar.c +++ b/src/enemy/madderpillar.c @@ -19,6 +19,9 @@ void sub_0802A18C(Entity*); bool32 sub_08029FE4(Entity*); void sub_08029FB4(Entity*, u32, u32); void sub_0802A0F8(Entity*); +void sub_08029F0C(Entity*); + +extern s16 gUnk_080B4488[]; extern void (*const gUnk_080CCD44[])(Entity*); extern void (*const Madderpillar_Functions[])(Entity*); @@ -320,7 +323,41 @@ void sub_08029DE4(Entity* this) { } } -ASM_FUNC("asm/non_matching/madderpillar/sub_08029E0C.inc", void sub_08029E0C(Entity* this)) +void sub_08029E0C(Entity* this) { + u32 tile; + s32 uVar4; + s32 iVar3; + u32 i; + u32 uVar2; + const u8* ptr; + u32 local_24; + u32 dir; + + uVar2 = (this->direction >> 3) * 3; + ptr = &gUnk_080CCDC8[uVar2]; + uVar4 = (Random() & 1) * 2 - 1; + iVar3 = ((s32)Random() & 0xf) % 3; + tile = COORD_TO_TILE(this); + for (i = 0; i < 3; i++) { + dir = ptr[iVar3]; + if (sub_080B1B44(gUnk_080B4488[dir >> 3] + tile, this->collisionLayer) == 0) { + local_24 = dir; + if (this->direction - this->field_0x74.HALF.LO != dir - this->direction) + break; + } + iVar3 = (iVar3 + uVar4 + 3) % 3; + } + + if (i == 3) { + dir = local_24; + } + + if (this->field_0x74.HALF.LO != this->direction) { + this->field_0x74.HALF.LO = this->direction; + } + this->direction = dir; + sub_08029F0C(this); +} void sub_08029EEC(Entity* this) { u32 uVar1 = (this->direction >> 3) + this->field_0x74.HALF.HI; diff --git a/src/enemy/mulldozer.c b/src/enemy/mulldozer.c index fbb376e0..854235de 100644 --- a/src/enemy/mulldozer.c +++ b/src/enemy/mulldozer.c @@ -436,7 +436,7 @@ void sub_08033320(MulldozerEntity* this) { } } -NONMATCH("asm/non_matching/mulldozer/sub_08033364.inc", bool32 sub_08033364(MulldozerEntity* this)) { +bool32 sub_08033364(MulldozerEntity* this) { Entity* entity; u32 radius; u32 tmp; @@ -452,14 +452,16 @@ NONMATCH("asm/non_matching/mulldozer/sub_08033364.inc", bool32 sub_08033364(Mull if (super->type != 0) { return TRUE; } - if (((GetFacingDirection(super, gUnk_020000B0) + 2) & 0x1c) >> 2 == super->animationState) { + tmp = GetFacingDirection(super, gUnk_020000B0); + tmp = Direction8RoundUp(tmp); + tmp = Direction8ToAnimationState(tmp); + if (super->animationState == tmp) { return TRUE; } } } return FALSE; } -END_NONMATCH void (*const Mulldozer_Functions[])(MulldozerEntity*) = { Mulldozer_OnInit, diff --git a/src/enemy/spearMoblin.c b/src/enemy/spearMoblin.c index 6a2874e9..29c2584f 100644 --- a/src/enemy/spearMoblin.c +++ b/src/enemy/spearMoblin.c @@ -24,7 +24,7 @@ extern void (*const SpearMoblin_Functions[])(Entity*); extern void (*const gUnk_080CC7A8[])(Entity*); extern const u8 gUnk_080CC7BC[]; extern const s8 gUnk_080CC7C0[]; -extern const u8 gUnk_080CC7D0[]; +extern const s8 gUnk_080CC7D0[]; extern const u16 gUnk_080CC7D8[]; extern const Hitbox* const gUnk_080CC944[]; @@ -242,7 +242,8 @@ void sub_08028528(Entity* this) { } } -NONMATCH("asm/non_matching/spearMoblin/sub_08028604.inc", void sub_08028604(Entity* this)) { +void sub_08028604(Entity* this) { + u32 iVar3; this->subtimer = 0; if (this->field_0x82.HALF.LO == 1) { this->timer = gUnk_080CC7BC[Random() & 3]; @@ -251,12 +252,10 @@ NONMATCH("asm/non_matching/spearMoblin/sub_08028604.inc", void sub_08028604(Enti u32 rand = Random(); u32 tmp; tmp = gUnk_080CC7D0[rand & 7] + 0x18; - tmp += this->direction; - tmp &= 0x18; - this->direction = tmp; + this->direction = DirectionRound(tmp + this->direction); + iVar3 = Direction8ToAnimationState(this->direction); } else { - u32 iVar3 = sub_08049EE4(this); - s8 uVar1; + iVar3 = sub_08049EE4(this); if (this->field_0x82.HALF.HI == 0) { u32 rand = Random(); iVar3 += gUnk_080CC7C0[rand & 0xf]; @@ -267,18 +266,19 @@ NONMATCH("asm/non_matching/spearMoblin/sub_08028604.inc", void sub_08028604(Enti this->field_0x82.HALF.HI--; } this->direction = (iVar3 + 4U) & 0x18; + iVar3 = Direction8ToAnimationState(this->direction); } } else { - this->timer = 0xc; + this->timer = 12; this->speed = 0; + iVar3 = Direction8ToAnimationState(this->direction); } - if (this->direction >> 2 != this->animationState) { - this->animationState = this->direction >> 2; + if (iVar3 != this->animationState) { + this->animationState = iVar3; sub_080287E0(this); } } -END_NONMATCH bool32 sub_080286CC(Entity* this) { if (this->field_0x80.HALF.HI == 0) { @@ -429,7 +429,7 @@ const s8 gUnk_080CC7C0[] = { 0x00, 0xFE, }; -const u8 gUnk_080CC7D0[] = { +const s8 gUnk_080CC7D0[] = { 0x08, 0x10, 0x08, 0x00, 0x10, 0x08, diff --git a/src/enemy/vaatiArm.c b/src/enemy/vaatiArm.c index 1e78d133..a6f87b9d 100644 --- a/src/enemy/vaatiArm.c +++ b/src/enemy/vaatiArm.c @@ -858,9 +858,45 @@ static void sub_0804325C(Entity* this) { } } -static ASM_FUNC("asm/non_matching/vaati/sub_080432A8.inc", void sub_080432A8(Entity* this)) +void sub_080432A8(Entity* this) { + s32 iVar3; + s32 i; + VaatiArm_HeapStruct1* hs; + Entity* ent; + i = 3; + iVar3 = 0; - static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Entity* this)) { + for (; i >= 0; i--) { + hs = &((VaatiArm_HeapStruct*)this->myHeap)->s1[i]; + if (hs->unk0c > 2) { + hs->unk0c--; + if (++iVar3 > 1) { + break; + } + } + } + + hs = &((VaatiArm_HeapStruct*)this->myHeap)->s1[0]; + hs->unk04.HALF.HI -= 2; + + for (i = 0; i < 4; i++) { + ent = ((VaatiArm_HeapStruct*)this->myHeap)->entities[i]; + if (ent->z.HALF.HI < 4) { + COLLISION_ON(ent); + ent->spriteSettings.draw = 1; + } + } + + if ((((VaatiArm_HeapStruct*)this->myHeap)->entities[0]->spriteSettings.draw == 1) && + (((VaatiArm_HeapStruct*)this->myHeap)->s1[1].unk0c < 3)) { + this->subAction = 1; + this->timer = 0x1e; + ((VaatiArm_HeapStruct*)this->myHeap)->s1[0].unk04.HWORD = 0x4000; + sub_0804AA1C(((VaatiArm_HeapStruct*)this->myHeap)->entities[4]); + } +} + +static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Entity* this)) { int bVar1; Entity* entity; VaatiArm_HeapStruct1* s; @@ -1162,9 +1198,32 @@ static u32 sub_080437DC(Entity* this) { return 1; } -static ASM_FUNC("asm/non_matching/vaati/sub_0804393C.inc", void sub_0804393C(Entity* this)) +void sub_0804393C(Entity* this) { + s32 uVar1; + s32 uVar2; + s32 uVar6; + s32 iVar7; + VaatiArm_HeapStruct1* hs; + Entity* ent; - static void sub_08043A10(Entity* this) { + ent = ((VaatiArm_HeapStruct*)this->myHeap)->entities[0]; + if (ent->field_0x7c.BYTES.byte0 != 0 && ent->field_0x7c.BYTES.byte1 <= this->type) { + uVar2 = gUnk_080D1362[this->type * 16 + ((ent->field_0x7c.BYTES.byte0 >> 3) & 0xf)]; + } else { + uVar2 = 0; + } + hs = &((VaatiArm_HeapStruct*)this->myHeap)->s1[this->type]; + uVar2 = (uVar2 + hs->unk0c) << 8; + uVar1 = -gSineTable[hs->unk04.HALF.HI + 0x40] * uVar2; + uVar2 = (gSineTable[hs->unk04.HALF.HI & 0x7f] * uVar2) / 0x100; + uVar6 = gSineTable[hs->unk00.HALF.HI] * uVar2; + iVar7 = -gSineTable[hs->unk00.HALF.HI + 0x40] * uVar2; + PositionRelative(((VaatiArm_HeapStruct*)this->myHeap)->entities[this->type + 1], this, uVar6, iVar7); + this->z.WORD += uVar1; + this->spriteOffsetY = ((VaatiArm_HeapStruct*)this->myHeap)->entities[this->type + 1]->spriteOffsetY; +} + +static void sub_08043A10(Entity* this) { sub_08043B7C(this); sub_0804393C(((VaatiArm_HeapStruct*)this->myHeap)->entities[4]); ((VaatiArm_HeapStruct*)this->myHeap)->entities[4]->y.HALF.HI -= 8; diff --git a/src/object/figurineDevice.c b/src/object/figurineDevice.c index e01a1304..75d626f3 100644 --- a/src/object/figurineDevice.c +++ b/src/object/figurineDevice.c @@ -32,10 +32,11 @@ typedef struct { /*0x80*/ u8 unk_80; #endif /*0x81*/ u8 unk_81; - /*0x82*/ s8 unk_82; #ifdef EU + /*0x82*/ u8 unk_82; /*0x83*/ u8 unk_83; #else + /*0x82*/ s8 unk_82; /*0x83*/ s8 unk_83; #endif } FigurineDeviceEntity; @@ -319,7 +320,122 @@ void sub_08087F58(FigurineDeviceEntity* this) { } } -ASM_FUNC("asm/non_matching/figurineDevice/sub_08087F94.inc", void sub_08087F94(FigurineDeviceEntity* this, s32 param_2)) +void sub_08087F94(FigurineDeviceEntity* this, s32 param_2) { +#ifdef EU + u32 uVar8; + u32 iVar9; + + iVar9 = this->unk_83 + param_2; + if (CheckLocalFlag(SHOP07_COMPLETE)) { + sub_08088034(this); + return; + } + + if (param_2 < 0) { + if (iVar9 < this->unk_82) { + if (this->unk_83 != this->unk_82) { + this->unk_83 = this->unk_82; + this->unk_81 = 1; + SoundReq(SFX_TEXTBOX_CHOICE); + } else { + sub_08088034(this); + } + } else { + this->unk_83 = iVar9; + this->unk_81 += param_2; + SoundReq(SFX_TEXTBOX_CHOICE); + } + return; + } + uVar8 = this->unk_81 + param_2; + if (uVar8 > (s32)gSave.stats.shells) { + if (gSave.stats.shells != this->unk_81) { + uVar8 = gSave.stats.shells; + param_2 = (gSave.stats.shells - this->unk_81); + iVar9 = this->unk_83 + param_2; + } else { + sub_08088034(this); + return; + } + } else if (iVar9 > 100) { + if (this->unk_83 == 100) { + sub_08088034(this); + return; + } else { + iVar9 = 100; + param_2 = (iVar9 - this->unk_83); + uVar8 = this->unk_81 + param_2; + } + } + +#else + s32 uVar8; + s32 iVar9; + s32 t1, t2; + + if (CheckLocalFlag(SHOP07_COMPLETE)) { + sub_08088034(this); + return; + } + + // This could probably be done without t1 and t2 + t1 = this->unk_83; + iVar9 = t1 + param_2; + if (param_2 < 0) { + if (iVar9 < this->unk_82) { + if (this->unk_83 != this->unk_82) { + this->unk_83 = this->unk_82; + this->unk_81 = 1; + SoundReq(SFX_TEXTBOX_CHOICE); + } else { + sub_08088034(this); + } + } else { + this->unk_83 = iVar9; + this->unk_81 += param_2; + SoundReq(SFX_TEXTBOX_CHOICE); + } + return; + } + t2 = this->unk_81; + uVar8 = t2 + param_2; + if (uVar8 > gSave.stats.shells) { + if (gSave.stats.shells != this->unk_81) { + uVar8 = gSave.stats.shells; + param_2 = (gSave.stats.shells - this->unk_81); + iVar9 = t1 + param_2; +#ifdef JP + if (iVar9 > 100) { + iVar9 = 100; + param_2 = (iVar9 - t1); + uVar8 = t2 + param_2; + } +#endif + } else { + sub_08088034(this); + return; + } + } +#ifdef JP + else if (iVar9 > 100) { +#else + if (iVar9 > 100) { +#endif + if (this->unk_83 == 100) { + sub_08088034(this); + return; + } else { + iVar9 = 100; + param_2 = (iVar9 - t1); + uVar8 = t2 + param_2; + } + } +#endif + + this->unk_83 = iVar9; + this->unk_81 = uVar8; + SoundReq(SFX_TEXTBOX_CHOICE); +} void sub_08088034(FigurineDeviceEntity* this) { if (super->timer == 0) { diff --git a/src/playerUtils.c b/src/playerUtils.c index f8d2225c..3e23404a 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1618,7 +1618,88 @@ u32 sub_080797C4(void) { return tmp == (gPlayerEntity.collisions & tmp); } -ASM_FUNC("asm/non_matching/playerUtils/sub_080797EC.inc", void sub_080797EC()) +void sub_080797EC(void) { + u32 animation; + + if ((gPlayerState.flags & PL_NO_CAP) != 0) { + if (gPlayerState.heldObject != 0) { + animation = 0x934; + } else if (gPlayerState.shield_status != 0) { + animation = 0x410; + } else if (gPlayerState.field_0x1f[2] == 0) { + if (gPlayerState.swim_state != 0) { + animation = 0x290; + } else { + animation = 0x16c; + if ((gPlayerState.sword_state & 0x48) != 0) { + gPlayerState.prevAnim = 0x6c; + return; + } else if (gPlayerState.sword_state == 0) { + if (gPlayerState.framestate == 0) { + gPlayerState.framestate = 1; + } + animation = 0x404; + } else { + animation = 0x16c; + if (sub_080793E4(0)) { + if (sub_080B1B44(GetPlayerTilePos(), gPlayerEntity.collisionLayer) != 0xff) { + gPlayerState.sword_state &= ~8; + animation = 0x170; + } + } + } + } + } else { + animation = 0x284; + } + } else { + if (gPlayerState.field_0x1c != 0) { + return; + } else if (gPlayerState.heldObject != 0) { + animation = 0x348; + } else if (gPlayerState.dash_state != 0) { + animation = 0x298; + } else if ((gPlayerState.flags & PL_IN_MINECART) != 0) { + animation = 0x710; + } else if (gPlayerState.shield_status != 0) { + animation = 0x160; + } else if (gPlayerState.field_0x1f[2] != 0) { + animation = 0x284; + } else { + if (gPlayerState.swim_state != 0) { + animation = 0x290; + } else { + animation = 0x16c; + if ((gPlayerState.sword_state & 0x48) != 0) { + gPlayerState.prevAnim = 0x6c; + return; + } else if (gPlayerState.sword_state != 0) { + animation = 0x16c; + if (sub_080793E4(0)) { + if (sub_080B1B44(GetPlayerTilePos(), (u32)gPlayerEntity.collisionLayer) != 0xff) { + gPlayerState.sword_state &= ~8; + animation = 0x170; + } + } + } else { + if (gPlayerState.framestate == 0) { + gPlayerState.framestate = 1; + } + if ((gPlayerState.flags & PL_USE_LANTERN) != 0) { + animation = 0x608; + } else { + animation = 0x104; + } + } + } + } + } + gPlayerState.animation = animation; + + if (gPlayerState.shield_status == 0) { + UpdateAnimationSingleFrame(&gPlayerEntity); + } +} void ResolvePlayerAnimation(void) { u32 index; diff --git a/src/ui.c b/src/ui.c index 47f3599b..613afa2e 100644 --- a/src/ui.c +++ b/src/ui.c @@ -63,6 +63,8 @@ extern struct_020350E2 gUnk_020350E2; extern const u16 gUnk_080C8F2C[]; extern u32 gUnk_085C4620[]; extern Frame* gSpriteAnimations_322[]; +extern u16 gUnk_080C8F54[]; +extern u32 gUnk_080C8F7C[]; typedef struct { u16 unk_0; // -> gOamCmd._4 @@ -491,7 +493,59 @@ void sub_0801C824(void) { } } -ASM_FUNC("asm/non_matching/ui/DrawChargeBar.inc", void DrawChargeBar()) +void DrawChargeBar(void) { + bool32 tmp1; + u16* ptr1; + u32 tmp2; + u32 tmp3; + register u32 rem asm("r1"); + u32 tmp5; + + tmp1 = FALSE; + if ((gUnk_0200AF00.unk_1 & 0x20) == 0) { + tmp1 = gPlayerState.chargeState.action != 0; + } + + if (!tmp1) + return sub_0801C824(); + + ptr1 = (gUnk_0200AF00.maxHealth > 0x28) ? (u16*)((u8*)(&gUnk_02034D30) + 0x40) : (u16*)&gUnk_02034D30.unk_0; + + tmp2 = Div(gPlayerState.chargeState.chargeTimer + 19, 20); + if (tmp2 > 40) { + tmp2 = 40; + } + if (gUnk_0200AF00.unk_6 == 0 || gUnk_0200AF00.unk_7 != tmp2) { + gUnk_0200AF00.unk_6 = 1; + gUnk_0200AF00.unk_7 = tmp2; + tmp3 = Div(tmp2, 4); + tmp5 = rem; + ptr1[0] = 0xf016; + ptr1[11] = 0xf416; + DmaSet(3, gUnk_080C8F54 + (10 - tmp3), ptr1 + 1, 0x8000000a); + if (tmp5 != 0) { + ptr1[tmp3 + 1] = ((tmp5 + 0x17U) & 0x3ff) | 0xf000; + } + gScreen.bg0.updated = 1; + } + + switch (gPlayerState.chargeState.action) { + case 4: + case 5: + gUnk_0200AF00.unk_9 += (gPlayerState.chargeState.action == 4) ? 2 : 1; + tmp3 = gUnk_0200AF00.unk_9 >> 4 & 3; + break; + default: + tmp3 = 0; + break; + } + + if (tmp3 != gUnk_0200AF00.unk_8) { + gUnk_0200AF00.unk_8 = tmp3; + ptr1 = (u16*)0x600c2c0; + DmaSet(3, gUnk_080C8F7C[tmp3], ptr1, 0x84000030); + } +} void DrawKeys(void) { s32 iVar1;