From 8703c1edc9d324ef8fb0e939299d08e86cbe734b Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Mon, 17 Oct 2016 18:55:49 -0700 Subject: rename rom_803BA2C.s to calculate_base_damage.s --- Makefile | 2 +- asm/calculate_base_damage.s | 1165 +++++++++++++++++++++++++++++++++++++++++++ asm/rom3.s | 12 +- asm/rom_803BA2C.s | 1165 ------------------------------------------- ld_script.txt | 2 +- 5 files changed, 1173 insertions(+), 1173 deletions(-) create mode 100644 asm/calculate_base_damage.s delete mode 100644 asm/rom_803BA2C.s diff --git a/Makefile b/Makefile index c38f0b0f6..80ecf8dac 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ C_OBJS := $(C_SRCS:%.c=%.o) ASM_OBJS := asm/crt0.o asm/rom3.o asm/rom_8040EB4.o asm/rom4.o asm/rom_8074BAC.o asm/rom5.o asm/rom5_part2.o asm/rom6.o\ asm/libgcnmultiboot.o asm/m4a_1.o asm/m4a_3.o asm/libagbsyscall.o \ -asm/tileset.o asm/rom_8065394.o asm/rom_803D1FC.o asm/rom_803BA2C.o \ +asm/tileset.o asm/rom_8065394.o asm/rom_803D1FC.o asm/calculate_base_damage.o \ asm/rom_813BA94.o asm/rom_81258BC.o asm/mystery_event_script.o \ asm/field_effect_helpers.o asm/contest_ai.o asm/berry.o asm/rom_80B5054.o \ asm/party_menu.o asm/rom_806D7F8.o diff --git a/asm/calculate_base_damage.s b/asm/calculate_base_damage.s new file mode 100644 index 000000000..06d2871bd --- /dev/null +++ b/asm/calculate_base_damage.s @@ -0,0 +1,1165 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start CalculateBaseDamage +CalculateBaseDamage: @ 803BA2C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + adds r7, r0, 0 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + ldr r0, [sp, 0x4C] + ldr r1, [sp, 0x50] + ldr r2, [sp, 0x54] + ldr r4, [sp, 0x58] + lsls r3, 16 + lsrs r3, 16 + str r3, [sp, 0xC] + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x10] + lsls r4, 24 + lsrs r4, 24 + movs r5, 0 + cmp r3, 0 + bne _0803BA80 + ldr r2, _0803BA78 + ldr r1, _0803BA7C + ldr r3, [sp, 0x8] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x1] + strh r0, [r2] + b _0803BA84 + .align 2, 0 +_0803BA78: .4byte gBattleMovePower +_0803BA7C: .4byte gBattleMoves +_0803BA80: + ldr r0, _0803BA9C + strh r3, [r0] +_0803BA84: + cmp r6, 0 + bne _0803BAA4 + ldr r1, _0803BAA0 + ldr r6, [sp, 0x8] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x2] + mov r9, r0 + b _0803BAAE + .align 2, 0 +_0803BA9C: .4byte gBattleMovePower +_0803BAA0: .4byte gBattleMoves +_0803BAA4: + movs r0, 0x3F + mov r9, r0 + mov r1, r9 + ands r1, r6 + mov r9, r1 +_0803BAAE: + ldrh r6, [r7, 0x2] + ldr r2, [sp, 0x4] + ldrh r2, [r2, 0x4] + str r2, [sp, 0x14] + ldrh r3, [r7, 0x8] + mov r8, r3 + ldr r0, [sp, 0x4] + ldrh r0, [r0, 0xA] + str r0, [sp, 0x18] + ldrh r0, [r7, 0x2E] + cmp r0, 0xAF + bne _0803BAE0 + ldr r1, _0803BADC + ldr r2, [sp, 0x10] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r3, [r0, 0x7] + mov r10, r3 + ldrb r0, [r0, 0x1A] + b _0803BAF6 + .align 2, 0 +_0803BADC: .4byte gEnigmaBerries +_0803BAE0: + ldrh r0, [r7, 0x2E] + bl itemid_get_x12 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldrh r0, [r7, 0x2E] + bl itemid_get_quality + lsls r0, 24 + lsrs r0, 24 +_0803BAF6: + str r0, [sp, 0x20] + ldr r1, [sp, 0x4] + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0803BB26 + ldr r1, _0803BB10 + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x7] + str r0, [sp, 0x1C] + b _0803BB3C + .align 2, 0 +_0803BB10: .4byte gEnigmaBerries +_0803BB14: + ldr r0, [sp, 0x20] + adds r0, 0x64 + muls r0, r6 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + b _0803BCDC +_0803BB26: + ldr r2, [sp, 0x4] + ldrh r0, [r2, 0x2E] + bl itemid_get_x12 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x1C] + ldr r3, [sp, 0x4] + ldrh r0, [r3, 0x2E] + bl itemid_get_quality +_0803BB3C: + adds r0, r7, 0 + adds r0, 0x20 + ldrb r1, [r0] + str r0, [sp, 0x24] + cmp r1, 0x25 + beq _0803BB4C + cmp r1, 0x4A + bne _0803BB50 +_0803BB4C: + lsls r0, r6, 17 + lsrs r6, r0, 16 +_0803BB50: + ldr r0, _0803BCB8 + ldrh r1, [r0] + ldr r0, _0803BCBC + ands r0, r1 + cmp r0, 0 + beq _0803BB5E + b _0803BC78 +_0803BB5E: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0803BB98 + ldr r0, _0803BCC0 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0803BB98 + ldr r0, _0803BCC4 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0803BB98 + ldr r0, [sp, 0x10] + bl battle_side_get_owner + lsls r0, 24 + cmp r0, 0 + bne _0803BB98 + movs r0, 0x6E + muls r0, r6 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 +_0803BB98: + ldr r0, _0803BCB8 + ldrh r1, [r0] + ldr r0, _0803BCBC + ands r0, r1 + cmp r0, 0 + bne _0803BC78 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0803BBE2 + ldr r0, _0803BCC0 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0803BBE2 + ldr r0, _0803BCC8 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0803BBE2 + adds r0, r4, 0 + bl battle_side_get_owner + lsls r0, 24 + cmp r0, 0 + bne _0803BBE2 + movs r0, 0x6E + ldr r1, [sp, 0x14] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x14] +_0803BBE2: + ldr r0, _0803BCB8 + ldrh r1, [r0] + ldr r0, _0803BCBC + ands r0, r1 + cmp r0, 0 + bne _0803BC78 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0803BC2E + ldr r0, _0803BCC0 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0803BC2E + ldr r0, _0803BCCC + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0803BC2E + ldr r0, [sp, 0x10] + bl battle_side_get_owner + lsls r0, 24 + cmp r0, 0 + bne _0803BC2E + movs r0, 0x6E + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0803BC2E: + ldr r0, _0803BCB8 + ldrh r1, [r0] + ldr r0, _0803BCBC + ands r0, r1 + cmp r0, 0 + bne _0803BC78 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0803BC78 + ldr r0, _0803BCC0 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0803BC78 + ldr r0, _0803BCCC + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0803BC78 + adds r0, r4, 0 + bl battle_side_get_owner + lsls r0, 24 + cmp r0, 0 + bne _0803BC78 + movs r0, 0x6E + ldr r3, [sp, 0x18] + muls r0, r3 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x18] +_0803BC78: + movs r2, 0 + ldr r4, _0803BCD0 + ldr r0, [sp, 0x4] + adds r0, 0x20 + str r0, [sp, 0x28] + adds r3, r4, 0 +_0803BC84: + lsls r1, r2, 1 + ldrb r0, [r3] + cmp r10, r0 + bne _0803BCD4 + adds r0, r4, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r9, r0 + bne _0803BCD4 + mov r1, r9 + cmp r1, 0x8 + bhi _0803BC9E + b _0803BB14 +_0803BC9E: + ldr r0, [sp, 0x20] + adds r0, 0x64 + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + b _0803BCDC + .align 2, 0 +_0803BCB8: .4byte gUnknown_020239F8 +_0803BCBC: .4byte 0x00000902 +_0803BCC0: .4byte word_202FF5E +_0803BCC4: .4byte 0x00000807 +_0803BCC8: .4byte 0x0000080b +_0803BCCC: .4byte 0x0000080d +_0803BCD0: .4byte gHoldEffectToType +_0803BCD4: + adds r3, 0x2 + adds r2, 0x1 + cmp r2, 0x10 + bls _0803BC84 +_0803BCDC: + mov r3, r10 + cmp r3, 0x1D + bne _0803BCF0 + movs r0, 0x96 + muls r0, r6 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 +_0803BCF0: + mov r0, r10 + cmp r0, 0x22 + bne _0803BD28 + ldr r0, _0803BFDC + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + bne _0803BD28 + ldr r1, _0803BFE0 + adds r0, r1, 0 + ldrh r2, [r7] + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0803BD28 + movs r0, 0x96 + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0803BD28: + ldr r0, [sp, 0x1C] + cmp r0, 0x22 + bne _0803BD60 + ldr r0, _0803BFDC + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + bne _0803BD60 + ldr r1, _0803BFE0 + adds r0, r1, 0 + ldr r2, [sp, 0x4] + ldrh r2, [r2] + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0803BD60 + movs r0, 0x96 + ldr r3, [sp, 0x18] + muls r0, r3 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x18] +_0803BD60: + mov r0, r10 + cmp r0, 0x23 + bne _0803BD76 + ldrh r1, [r7] + ldr r0, _0803BFE4 + cmp r1, r0 + bne _0803BD76 + mov r1, r8 + lsls r0, r1, 17 + lsrs r0, 16 + mov r8, r0 +_0803BD76: + ldr r2, [sp, 0x1C] + cmp r2, 0x24 + bne _0803BD8E + ldr r3, [sp, 0x4] + ldrh r1, [r3] + ldr r0, _0803BFE4 + cmp r1, r0 + bne _0803BD8E + ldr r1, [sp, 0x18] + lsls r0, r1, 17 + lsrs r0, 16 + str r0, [sp, 0x18] +_0803BD8E: + mov r2, r10 + cmp r2, 0x2D + bne _0803BDA2 + ldrh r0, [r7] + cmp r0, 0x19 + bne _0803BDA2 + mov r3, r8 + lsls r0, r3, 17 + lsrs r0, 16 + mov r8, r0 +_0803BDA2: + ldr r0, [sp, 0x1C] + cmp r0, 0x40 + bne _0803BDB8 + ldr r1, [sp, 0x4] + ldrh r0, [r1] + cmp r0, 0x84 + bne _0803BDB8 + ldr r2, [sp, 0x14] + lsls r0, r2, 17 + lsrs r0, 16 + str r0, [sp, 0x14] +_0803BDB8: + mov r3, r10 + cmp r3, 0x41 + bne _0803BDCE + ldrh r0, [r7] + subs r0, 0x68 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0803BDCE + lsls r0, r6, 17 + lsrs r6, r0, 16 +_0803BDCE: + ldr r1, [sp, 0x28] + ldrb r0, [r1] + cmp r0, 0x2F + bne _0803BDE6 + mov r2, r9 + cmp r2, 0xA + beq _0803BDE0 + cmp r2, 0xF + bne _0803BDE6 +_0803BDE0: + mov r3, r8 + lsrs r3, 1 + mov r8, r3 +_0803BDE6: + ldr r0, [sp, 0x24] + ldrb r4, [r0] + cmp r4, 0x37 + bne _0803BDFC + movs r0, 0x96 + muls r0, r6 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 +_0803BDFC: + cmp r4, 0x39 + bne _0803BE2A + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0x3A + movs r3, 0 + bl sub_8018324 + lsls r0, 24 + cmp r0, 0 + beq _0803BE2A + movs r0, 0x96 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0803BE2A: + ldr r2, [sp, 0x24] + ldrb r0, [r2] + cmp r0, 0x3A + bne _0803BE5C + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0x39 + movs r3, 0 + bl sub_8018324 + lsls r0, 24 + cmp r0, 0 + beq _0803BE5C + movs r0, 0x96 + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 +_0803BE5C: + ldr r1, [sp, 0x24] + ldrb r0, [r1] + cmp r0, 0x3E + bne _0803BE78 + ldr r0, [r7, 0x4C] + cmp r0, 0 + beq _0803BE78 + movs r0, 0x96 + muls r0, r6 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 +_0803BE78: + ldr r2, [sp, 0x28] + ldrb r0, [r2] + cmp r0, 0x3F + bne _0803BE9A + ldr r3, [sp, 0x4] + ldr r0, [r3, 0x4C] + cmp r0, 0 + beq _0803BE9A + movs r0, 0x96 + ldr r1, [sp, 0x14] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x14] +_0803BE9A: + mov r2, r9 + cmp r2, 0xD + bne _0803BEBE + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0 + movs r3, 0xFD + bl sub_8018324 + lsls r0, 24 + cmp r0, 0 + beq _0803BEBE + ldr r1, _0803BFE8 + ldrh r0, [r1] + lsrs r0, 1 + strh r0, [r1] +_0803BEBE: + mov r3, r9 + cmp r3, 0xA + bne _0803BEE2 + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0 + movs r3, 0xFE + bl sub_8018324 + lsls r0, 24 + cmp r0, 0 + beq _0803BEE2 + ldr r1, _0803BFE8 + ldrh r0, [r1] + lsrs r0, 1 + strh r0, [r1] +_0803BEE2: + mov r0, r9 + cmp r0, 0xC + bne _0803BF12 + ldr r1, [sp, 0x24] + ldrb r0, [r1] + cmp r0, 0x41 + bne _0803BF12 + ldrh r0, [r7, 0x2C] + movs r1, 0x3 + bl __udivsi3 + ldrh r1, [r7, 0x28] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0803BF12 + ldr r4, _0803BFE8 + ldrh r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4] +_0803BF12: + mov r2, r9 + cmp r2, 0xA + bne _0803BF42 + ldr r3, [sp, 0x24] + ldrb r0, [r3] + cmp r0, 0x42 + bne _0803BF42 + ldrh r0, [r7, 0x2C] + movs r1, 0x3 + bl __udivsi3 + ldrh r1, [r7, 0x28] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0803BF42 + ldr r4, _0803BFE8 + ldrh r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4] +_0803BF42: + mov r0, r9 + cmp r0, 0xB + bne _0803BF72 + ldr r1, [sp, 0x24] + ldrb r0, [r1] + cmp r0, 0x43 + bne _0803BF72 + ldrh r0, [r7, 0x2C] + movs r1, 0x3 + bl __udivsi3 + ldrh r1, [r7, 0x28] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0803BF72 + ldr r4, _0803BFE8 + ldrh r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4] +_0803BF72: + mov r2, r9 + cmp r2, 0x6 + bne _0803BFA2 + ldr r3, [sp, 0x24] + ldrb r0, [r3] + cmp r0, 0x44 + bne _0803BFA2 + ldrh r0, [r7, 0x2C] + movs r1, 0x3 + bl __udivsi3 + ldrh r1, [r7, 0x28] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bhi _0803BFA2 + ldr r4, _0803BFE8 + ldrh r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4] +_0803BFA2: + ldr r2, _0803BFEC + ldr r0, _0803BFF0 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x7 + bne _0803BFBC + ldr r0, [sp, 0x14] + lsrs r0, 1 + str r0, [sp, 0x14] +_0803BFBC: + mov r1, r9 + cmp r1, 0x8 + bls _0803BFC4 + b _0803C122 +_0803BFC4: + ldr r0, _0803BFF4 + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x2 + bne _0803C000 + movs r0, 0x19 + ldrsb r0, [r7, r0] + cmp r0, 0x6 + ble _0803BFFC + ldr r2, _0803BFF8 + b _0803C006 + .align 2, 0 +_0803BFDC: .4byte gUnknown_020239F8 +_0803BFE0: .4byte 0xfffffe69 +_0803BFE4: .4byte 0x00000175 +_0803BFE8: .4byte gBattleMovePower +_0803BFEC: .4byte gBattleMoves +_0803BFF0: .4byte gUnknown_02024BE6 +_0803BFF4: .4byte gCritMultiplier +_0803BFF8: .4byte gStatStageRatios +_0803BFFC: + adds r5, r6, 0 + b _0803C01E +_0803C000: + ldr r2, _0803C050 + movs r0, 0x19 + ldrsb r0, [r7, r0] +_0803C006: + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + adds r5, r6, 0 + muls r5, r1 + adds r2, 0x1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r5, 0 + bl __divsi3 + adds r5, r0, 0 +_0803C01E: + ldr r0, _0803C054 + ldrh r0, [r0] + muls r5, r0 + adds r0, r7, 0 + adds r0, 0x2A + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x5 + bl __divsi3 + adds r0, 0x2 + muls r5, r0 + ldrb r0, [r4] + cmp r0, 0x2 + bne _0803C05C + ldr r2, [sp, 0x4] + movs r0, 0x1A + ldrsb r0, [r2, r0] + cmp r0, 0x5 + bgt _0803C058 + ldr r2, _0803C050 + ldr r3, [sp, 0x4] + movs r0, 0x1A + ldrsb r0, [r3, r0] + b _0803C064 + .align 2, 0 +_0803C050: .4byte gStatStageRatios +_0803C054: .4byte gBattleMovePower +_0803C058: + ldr r3, [sp, 0x14] + b _0803C07E +_0803C05C: + ldr r2, _0803C0DC + ldr r1, [sp, 0x4] + movs r0, 0x1A + ldrsb r0, [r1, r0] +_0803C064: + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r6, [sp, 0x14] + adds r3, r6, 0 + muls r3, r1 + adds r2, 0x1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r3, 0 + bl __divsi3 + adds r3, r0, 0 +_0803C07E: + adds r0, r5, 0 + adds r1, r3, 0 + bl __divsi3 + adds r5, r0, 0 + movs r1, 0x32 + bl __divsi3 + adds r5, r0, 0 + ldr r0, [r7, 0x4C] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0803C0A8 + ldr r1, [sp, 0x24] + ldrb r0, [r1] + cmp r0, 0x3E + beq _0803C0A8 + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803C0A8: + movs r0, 0x1 + ldr r2, [sp, 0xC] + ands r0, r2 + cmp r0, 0 + beq _0803C0EA + ldrb r1, [r4] + cmp r1, 0x1 + bne _0803C0EA + ldr r0, _0803C0E0 + ldrh r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0803C0E4 + movs r0, 0x2 + bl sub_803C348 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0803C0E4 + adds r0, r5, 0 + movs r1, 0x3 + bl __divsi3 + lsls r5, r0, 1 + b _0803C0EA + .align 2, 0 +_0803C0DC: .4byte gStatStageRatios +_0803C0E0: .4byte gUnknown_020239F8 +_0803C0E4: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803C0EA: + ldr r0, _0803C148 + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803C11C + ldr r0, _0803C14C + ldr r3, [sp, 0x8] + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x6] + cmp r0, 0x8 + bne _0803C11C + movs r0, 0x2 + bl sub_803C348 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0803C11C + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803C11C: + cmp r5, 0 + bne _0803C122 + movs r5, 0x1 +_0803C122: + mov r6, r9 + cmp r6, 0x9 + bne _0803C12A + movs r5, 0 +_0803C12A: + mov r0, r9 + cmp r0, 0x9 + bhi _0803C132 + b _0803C330 +_0803C132: + ldr r0, _0803C150 + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x2 + bne _0803C15C + movs r0, 0x1C + ldrsb r0, [r7, r0] + cmp r0, 0x6 + ble _0803C158 + ldr r2, _0803C154 + b _0803C162 + .align 2, 0 +_0803C148: .4byte gUnknown_020239F8 +_0803C14C: .4byte gBattleMoves +_0803C150: .4byte gCritMultiplier +_0803C154: .4byte gStatStageRatios +_0803C158: + mov r5, r8 + b _0803C17A +_0803C15C: + ldr r2, _0803C1A8 + movs r0, 0x1C + ldrsb r0, [r7, r0] +_0803C162: + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + mov r5, r8 + muls r5, r1 + adds r2, 0x1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r5, 0 + bl __divsi3 + adds r5, r0, 0 +_0803C17A: + ldr r0, _0803C1AC + ldrh r0, [r0] + muls r5, r0 + adds r0, r7, 0 + adds r0, 0x2A + ldrb r0, [r0] + lsls r0, 1 + movs r1, 0x5 + bl __divsi3 + adds r0, 0x2 + muls r5, r0 + ldrb r0, [r4] + cmp r0, 0x2 + bne _0803C1B4 + ldr r1, [sp, 0x4] + movs r0, 0x1D + ldrsb r0, [r1, r0] + cmp r0, 0x5 + bgt _0803C1B0 + ldr r2, _0803C1A8 + b _0803C1BC + .align 2, 0 +_0803C1A8: .4byte gStatStageRatios +_0803C1AC: .4byte gBattleMovePower +_0803C1B0: + ldr r3, [sp, 0x18] + b _0803C1D6 +_0803C1B4: + ldr r2, _0803C21C + ldr r1, [sp, 0x4] + movs r0, 0x1D + ldrsb r0, [r1, r0] +_0803C1BC: + lsls r0, 1 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r6, [sp, 0x18] + adds r3, r6, 0 + muls r3, r1 + adds r2, 0x1 + adds r0, r2 + ldrb r1, [r0] + adds r0, r3, 0 + bl __divsi3 + adds r3, r0, 0 +_0803C1D6: + adds r0, r5, 0 + adds r1, r3, 0 + bl __divsi3 + adds r5, r0, 0 + movs r1, 0x32 + bl __divsi3 + adds r5, r0, 0 + movs r0, 0x2 + ldr r1, [sp, 0xC] + ands r0, r1 + cmp r0, 0 + beq _0803C22A + ldrb r1, [r4] + cmp r1, 0x1 + bne _0803C22A + ldr r0, _0803C220 + ldrh r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0803C224 + movs r0, 0x2 + bl sub_803C348 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0803C224 + adds r0, r5, 0 + movs r1, 0x3 + bl __divsi3 + lsls r5, r0, 1 + b _0803C22A + .align 2, 0 +_0803C21C: .4byte gStatStageRatios +_0803C220: .4byte gUnknown_020239F8 +_0803C224: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803C22A: + ldr r0, _0803C2A4 + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803C25C + ldr r0, _0803C2A8 + ldr r2, [sp, 0x8] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x6] + cmp r0, 0x8 + bne _0803C25C + movs r0, 0x2 + bl sub_803C348 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0803C25C + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803C25C: + movs r0, 0 + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl sub_8018324 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0803C30C + str r0, [sp] + movs r0, 0xE + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl sub_8018324 + lsls r0, 24 + cmp r0, 0 + bne _0803C30C + ldr r2, _0803C2AC + ldrh r1, [r2] + movs r0, 0x1 + ands r0, r1 + adds r4, r2, 0 + cmp r0, 0 + beq _0803C2C4 + mov r3, r9 + cmp r3, 0xA + beq _0803C2B0 + cmp r3, 0xB + beq _0803C2B8 + b _0803C2C4 + .align 2, 0 +_0803C2A4: .4byte gUnknown_020239F8 +_0803C2A8: .4byte gBattleMoves +_0803C2AC: .4byte word_2024DB8 +_0803C2B0: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 + b _0803C2C4 +_0803C2B8: + lsls r0, r5, 4 + subs r0, r5 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 +_0803C2C4: + ldrh r1, [r4] + movs r0, 0x9F + ands r0, r1 + cmp r0, 0 + beq _0803C2DC + ldr r0, _0803C2F4 + ldrh r0, [r0] + cmp r0, 0x4C + bne _0803C2DC + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803C2DC: + ldrh r1, [r4] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0803C30C + mov r6, r9 + cmp r6, 0xA + beq _0803C2F8 + cmp r6, 0xB + beq _0803C306 + b _0803C30C + .align 2, 0 +_0803C2F4: .4byte gUnknown_02024BE6 +_0803C2F8: + lsls r0, r5, 4 + subs r0, r5 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 + b _0803C30C +_0803C306: + lsrs r0, r5, 31 + adds r0, r5, r0 + asrs r5, r0, 1 +_0803C30C: + ldr r1, _0803C344 + ldr r2, [sp, 0x10] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0803C330 + mov r3, r9 + cmp r3, 0xA + bne _0803C330 + lsls r0, r5, 4 + subs r0, r5 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 +_0803C330: + adds r0, r5, 0x2 + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0803C344: .4byte 0x02017100 + thumb_func_end CalculateBaseDamage + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom3.s b/asm/rom3.s index cced0538f..c00ae23e2 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -24358,7 +24358,7 @@ _08017CB8: adds r0, r1, 0 movs r2, 0x1 movs r3, 0 - bl sub_803BA2C + bl CalculateBaseDamage ldr r1, _08017D10 str r0, [r1] ldr r0, _08017D14 @@ -31846,7 +31846,7 @@ _0801BBE0: adds r0, r1, 0 movs r2, 0x1 movs r3, 0 - bl sub_803BA2C + bl CalculateBaseDamage ldr r1, _0801BC3C str r0, [r1] ldr r1, _0801BC40 @@ -33607,7 +33607,7 @@ atk05_cmd5: @ 801C9EC str r4, [sp, 0x8] ldrb r4, [r6] str r4, [sp, 0xC] - bl sub_803BA2C + bl CalculateBaseDamage ldr r4, _0801CADC ldr r1, _0801CAE0 ldrb r1, [r1] @@ -33727,7 +33727,7 @@ sub_801CAF8: @ 801CAF8 str r4, [sp, 0x4] str r7, [sp, 0x8] str r5, [sp, 0xC] - bl sub_803BA2C + bl CalculateBaseDamage ldr r4, _0801CBD4 movs r1, 0 mov r2, r8 @@ -51767,7 +51767,7 @@ _08025C1C: str r4, [sp, 0x8] ldrb r4, [r5] str r4, [sp, 0xC] - bl sub_803BA2C + bl CalculateBaseDamage ldrb r2, [r6] lsls r1, r2, 3 subs r1, r2 @@ -59477,7 +59477,7 @@ _08029964: str r4, [sp, 0x8] ldrb r4, [r7] str r4, [sp, 0xC] - bl sub_803BA2C + bl CalculateBaseDamage ldrb r1, [r7] lsls r1, 2 mov r2, r8 diff --git a/asm/rom_803BA2C.s b/asm/rom_803BA2C.s deleted file mode 100644 index 68c57f8a3..000000000 --- a/asm/rom_803BA2C.s +++ /dev/null @@ -1,1165 +0,0 @@ - .include "constants/gba_constants.s" - .include "constants/species_constants.s" - .include "asm/macros.s" - - .syntax unified - - .text - - thumb_func_start sub_803BA2C -sub_803BA2C: @ 803BA2C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - adds r7, r0, 0 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - ldr r0, [sp, 0x4C] - ldr r1, [sp, 0x50] - ldr r2, [sp, 0x54] - ldr r4, [sp, 0x58] - lsls r3, 16 - lsrs r3, 16 - str r3, [sp, 0xC] - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r4, 24 - lsrs r4, 24 - movs r5, 0 - cmp r3, 0 - bne _0803BA80 - ldr r2, _0803BA78 - ldr r1, _0803BA7C - ldr r3, [sp, 0x8] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x1] - strh r0, [r2] - b _0803BA84 - .align 2, 0 -_0803BA78: .4byte gBattleMovePower -_0803BA7C: .4byte gBattleMoves -_0803BA80: - ldr r0, _0803BA9C - strh r3, [r0] -_0803BA84: - cmp r6, 0 - bne _0803BAA4 - ldr r1, _0803BAA0 - ldr r6, [sp, 0x8] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - mov r9, r0 - b _0803BAAE - .align 2, 0 -_0803BA9C: .4byte gBattleMovePower -_0803BAA0: .4byte gBattleMoves -_0803BAA4: - movs r0, 0x3F - mov r9, r0 - mov r1, r9 - ands r1, r6 - mov r9, r1 -_0803BAAE: - ldrh r6, [r7, 0x2] - ldr r2, [sp, 0x4] - ldrh r2, [r2, 0x4] - str r2, [sp, 0x14] - ldrh r3, [r7, 0x8] - mov r8, r3 - ldr r0, [sp, 0x4] - ldrh r0, [r0, 0xA] - str r0, [sp, 0x18] - ldrh r0, [r7, 0x2E] - cmp r0, 0xAF - bne _0803BAE0 - ldr r1, _0803BADC - ldr r2, [sp, 0x10] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r3, [r0, 0x7] - mov r10, r3 - ldrb r0, [r0, 0x1A] - b _0803BAF6 - .align 2, 0 -_0803BADC: .4byte gEnigmaBerries -_0803BAE0: - ldrh r0, [r7, 0x2E] - bl itemid_get_x12 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldrh r0, [r7, 0x2E] - bl itemid_get_quality - lsls r0, 24 - lsrs r0, 24 -_0803BAF6: - str r0, [sp, 0x20] - ldr r1, [sp, 0x4] - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0803BB26 - ldr r1, _0803BB10 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x7] - str r0, [sp, 0x1C] - b _0803BB3C - .align 2, 0 -_0803BB10: .4byte gEnigmaBerries -_0803BB14: - ldr r0, [sp, 0x20] - adds r0, 0x64 - muls r0, r6 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - b _0803BCDC -_0803BB26: - ldr r2, [sp, 0x4] - ldrh r0, [r2, 0x2E] - bl itemid_get_x12 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x1C] - ldr r3, [sp, 0x4] - ldrh r0, [r3, 0x2E] - bl itemid_get_quality -_0803BB3C: - adds r0, r7, 0 - adds r0, 0x20 - ldrb r1, [r0] - str r0, [sp, 0x24] - cmp r1, 0x25 - beq _0803BB4C - cmp r1, 0x4A - bne _0803BB50 -_0803BB4C: - lsls r0, r6, 17 - lsrs r6, r0, 16 -_0803BB50: - ldr r0, _0803BCB8 - ldrh r1, [r0] - ldr r0, _0803BCBC - ands r0, r1 - cmp r0, 0 - beq _0803BB5E - b _0803BC78 -_0803BB5E: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0803BB98 - ldr r0, _0803BCC0 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0803BB98 - ldr r0, _0803BCC4 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0803BB98 - ldr r0, [sp, 0x10] - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _0803BB98 - movs r0, 0x6E - muls r0, r6 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 -_0803BB98: - ldr r0, _0803BCB8 - ldrh r1, [r0] - ldr r0, _0803BCBC - ands r0, r1 - cmp r0, 0 - bne _0803BC78 - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0803BBE2 - ldr r0, _0803BCC0 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0803BBE2 - ldr r0, _0803BCC8 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0803BBE2 - adds r0, r4, 0 - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _0803BBE2 - movs r0, 0x6E - ldr r1, [sp, 0x14] - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x14] -_0803BBE2: - ldr r0, _0803BCB8 - ldrh r1, [r0] - ldr r0, _0803BCBC - ands r0, r1 - cmp r0, 0 - bne _0803BC78 - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0803BC2E - ldr r0, _0803BCC0 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0803BC2E - ldr r0, _0803BCCC - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0803BC2E - ldr r0, [sp, 0x10] - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _0803BC2E - movs r0, 0x6E - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 -_0803BC2E: - ldr r0, _0803BCB8 - ldrh r1, [r0] - ldr r0, _0803BCBC - ands r0, r1 - cmp r0, 0 - bne _0803BC78 - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0803BC78 - ldr r0, _0803BCC0 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0803BC78 - ldr r0, _0803BCCC - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0803BC78 - adds r0, r4, 0 - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _0803BC78 - movs r0, 0x6E - ldr r3, [sp, 0x18] - muls r0, r3 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x18] -_0803BC78: - movs r2, 0 - ldr r4, _0803BCD0 - ldr r0, [sp, 0x4] - adds r0, 0x20 - str r0, [sp, 0x28] - adds r3, r4, 0 -_0803BC84: - lsls r1, r2, 1 - ldrb r0, [r3] - cmp r10, r0 - bne _0803BCD4 - adds r0, r4, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r9, r0 - bne _0803BCD4 - mov r1, r9 - cmp r1, 0x8 - bhi _0803BC9E - b _0803BB14 -_0803BC9E: - ldr r0, [sp, 0x20] - adds r0, 0x64 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - b _0803BCDC - .align 2, 0 -_0803BCB8: .4byte gUnknown_020239F8 -_0803BCBC: .4byte 0x00000902 -_0803BCC0: .4byte word_202FF5E -_0803BCC4: .4byte 0x00000807 -_0803BCC8: .4byte 0x0000080b -_0803BCCC: .4byte 0x0000080d -_0803BCD0: .4byte gHoldEffectToType -_0803BCD4: - adds r3, 0x2 - adds r2, 0x1 - cmp r2, 0x10 - bls _0803BC84 -_0803BCDC: - mov r3, r10 - cmp r3, 0x1D - bne _0803BCF0 - movs r0, 0x96 - muls r0, r6 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 -_0803BCF0: - mov r0, r10 - cmp r0, 0x22 - bne _0803BD28 - ldr r0, _0803BFDC - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - bne _0803BD28 - ldr r1, _0803BFE0 - adds r0, r1, 0 - ldrh r2, [r7] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0803BD28 - movs r0, 0x96 - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 -_0803BD28: - ldr r0, [sp, 0x1C] - cmp r0, 0x22 - bne _0803BD60 - ldr r0, _0803BFDC - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - bne _0803BD60 - ldr r1, _0803BFE0 - adds r0, r1, 0 - ldr r2, [sp, 0x4] - ldrh r2, [r2] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0803BD60 - movs r0, 0x96 - ldr r3, [sp, 0x18] - muls r0, r3 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x18] -_0803BD60: - mov r0, r10 - cmp r0, 0x23 - bne _0803BD76 - ldrh r1, [r7] - ldr r0, _0803BFE4 - cmp r1, r0 - bne _0803BD76 - mov r1, r8 - lsls r0, r1, 17 - lsrs r0, 16 - mov r8, r0 -_0803BD76: - ldr r2, [sp, 0x1C] - cmp r2, 0x24 - bne _0803BD8E - ldr r3, [sp, 0x4] - ldrh r1, [r3] - ldr r0, _0803BFE4 - cmp r1, r0 - bne _0803BD8E - ldr r1, [sp, 0x18] - lsls r0, r1, 17 - lsrs r0, 16 - str r0, [sp, 0x18] -_0803BD8E: - mov r2, r10 - cmp r2, 0x2D - bne _0803BDA2 - ldrh r0, [r7] - cmp r0, 0x19 - bne _0803BDA2 - mov r3, r8 - lsls r0, r3, 17 - lsrs r0, 16 - mov r8, r0 -_0803BDA2: - ldr r0, [sp, 0x1C] - cmp r0, 0x40 - bne _0803BDB8 - ldr r1, [sp, 0x4] - ldrh r0, [r1] - cmp r0, 0x84 - bne _0803BDB8 - ldr r2, [sp, 0x14] - lsls r0, r2, 17 - lsrs r0, 16 - str r0, [sp, 0x14] -_0803BDB8: - mov r3, r10 - cmp r3, 0x41 - bne _0803BDCE - ldrh r0, [r7] - subs r0, 0x68 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0803BDCE - lsls r0, r6, 17 - lsrs r6, r0, 16 -_0803BDCE: - ldr r1, [sp, 0x28] - ldrb r0, [r1] - cmp r0, 0x2F - bne _0803BDE6 - mov r2, r9 - cmp r2, 0xA - beq _0803BDE0 - cmp r2, 0xF - bne _0803BDE6 -_0803BDE0: - mov r3, r8 - lsrs r3, 1 - mov r8, r3 -_0803BDE6: - ldr r0, [sp, 0x24] - ldrb r4, [r0] - cmp r4, 0x37 - bne _0803BDFC - movs r0, 0x96 - muls r0, r6 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 -_0803BDFC: - cmp r4, 0x39 - bne _0803BE2A - movs r0, 0 - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0x3A - movs r3, 0 - bl sub_8018324 - lsls r0, 24 - cmp r0, 0 - beq _0803BE2A - movs r0, 0x96 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 -_0803BE2A: - ldr r2, [sp, 0x24] - ldrb r0, [r2] - cmp r0, 0x3A - bne _0803BE5C - movs r0, 0 - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0x39 - movs r3, 0 - bl sub_8018324 - lsls r0, 24 - cmp r0, 0 - beq _0803BE5C - movs r0, 0x96 - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 -_0803BE5C: - ldr r1, [sp, 0x24] - ldrb r0, [r1] - cmp r0, 0x3E - bne _0803BE78 - ldr r0, [r7, 0x4C] - cmp r0, 0 - beq _0803BE78 - movs r0, 0x96 - muls r0, r6 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 -_0803BE78: - ldr r2, [sp, 0x28] - ldrb r0, [r2] - cmp r0, 0x3F - bne _0803BE9A - ldr r3, [sp, 0x4] - ldr r0, [r3, 0x4C] - cmp r0, 0 - beq _0803BE9A - movs r0, 0x96 - ldr r1, [sp, 0x14] - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x14] -_0803BE9A: - mov r2, r9 - cmp r2, 0xD - bne _0803BEBE - movs r0, 0 - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0 - movs r3, 0xFD - bl sub_8018324 - lsls r0, 24 - cmp r0, 0 - beq _0803BEBE - ldr r1, _0803BFE8 - ldrh r0, [r1] - lsrs r0, 1 - strh r0, [r1] -_0803BEBE: - mov r3, r9 - cmp r3, 0xA - bne _0803BEE2 - movs r0, 0 - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0 - movs r3, 0xFE - bl sub_8018324 - lsls r0, 24 - cmp r0, 0 - beq _0803BEE2 - ldr r1, _0803BFE8 - ldrh r0, [r1] - lsrs r0, 1 - strh r0, [r1] -_0803BEE2: - mov r0, r9 - cmp r0, 0xC - bne _0803BF12 - ldr r1, [sp, 0x24] - ldrb r0, [r1] - cmp r0, 0x41 - bne _0803BF12 - ldrh r0, [r7, 0x2C] - movs r1, 0x3 - bl __udivsi3 - ldrh r1, [r7, 0x28] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bhi _0803BF12 - ldr r4, _0803BFE8 - ldrh r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - strh r0, [r4] -_0803BF12: - mov r2, r9 - cmp r2, 0xA - bne _0803BF42 - ldr r3, [sp, 0x24] - ldrb r0, [r3] - cmp r0, 0x42 - bne _0803BF42 - ldrh r0, [r7, 0x2C] - movs r1, 0x3 - bl __udivsi3 - ldrh r1, [r7, 0x28] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bhi _0803BF42 - ldr r4, _0803BFE8 - ldrh r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - strh r0, [r4] -_0803BF42: - mov r0, r9 - cmp r0, 0xB - bne _0803BF72 - ldr r1, [sp, 0x24] - ldrb r0, [r1] - cmp r0, 0x43 - bne _0803BF72 - ldrh r0, [r7, 0x2C] - movs r1, 0x3 - bl __udivsi3 - ldrh r1, [r7, 0x28] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bhi _0803BF72 - ldr r4, _0803BFE8 - ldrh r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - strh r0, [r4] -_0803BF72: - mov r2, r9 - cmp r2, 0x6 - bne _0803BFA2 - ldr r3, [sp, 0x24] - ldrb r0, [r3] - cmp r0, 0x44 - bne _0803BFA2 - ldrh r0, [r7, 0x2C] - movs r1, 0x3 - bl __udivsi3 - ldrh r1, [r7, 0x28] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bhi _0803BFA2 - ldr r4, _0803BFE8 - ldrh r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - strh r0, [r4] -_0803BFA2: - ldr r2, _0803BFEC - ldr r0, _0803BFF0 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x7 - bne _0803BFBC - ldr r0, [sp, 0x14] - lsrs r0, 1 - str r0, [sp, 0x14] -_0803BFBC: - mov r1, r9 - cmp r1, 0x8 - bls _0803BFC4 - b _0803C122 -_0803BFC4: - ldr r0, _0803BFF4 - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x2 - bne _0803C000 - movs r0, 0x19 - ldrsb r0, [r7, r0] - cmp r0, 0x6 - ble _0803BFFC - ldr r2, _0803BFF8 - b _0803C006 - .align 2, 0 -_0803BFDC: .4byte gUnknown_020239F8 -_0803BFE0: .4byte 0xfffffe69 -_0803BFE4: .4byte 0x00000175 -_0803BFE8: .4byte gBattleMovePower -_0803BFEC: .4byte gBattleMoves -_0803BFF0: .4byte gUnknown_02024BE6 -_0803BFF4: .4byte gCritMultiplier -_0803BFF8: .4byte gStatStageRatios -_0803BFFC: - adds r5, r6, 0 - b _0803C01E -_0803C000: - ldr r2, _0803C050 - movs r0, 0x19 - ldrsb r0, [r7, r0] -_0803C006: - lsls r0, 1 - adds r1, r0, r2 - ldrb r1, [r1] - adds r5, r6, 0 - muls r5, r1 - adds r2, 0x1 - adds r0, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl __divsi3 - adds r5, r0, 0 -_0803C01E: - ldr r0, _0803C054 - ldrh r0, [r0] - muls r5, r0 - adds r0, r7, 0 - adds r0, 0x2A - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x5 - bl __divsi3 - adds r0, 0x2 - muls r5, r0 - ldrb r0, [r4] - cmp r0, 0x2 - bne _0803C05C - ldr r2, [sp, 0x4] - movs r0, 0x1A - ldrsb r0, [r2, r0] - cmp r0, 0x5 - bgt _0803C058 - ldr r2, _0803C050 - ldr r3, [sp, 0x4] - movs r0, 0x1A - ldrsb r0, [r3, r0] - b _0803C064 - .align 2, 0 -_0803C050: .4byte gStatStageRatios -_0803C054: .4byte gBattleMovePower -_0803C058: - ldr r3, [sp, 0x14] - b _0803C07E -_0803C05C: - ldr r2, _0803C0DC - ldr r1, [sp, 0x4] - movs r0, 0x1A - ldrsb r0, [r1, r0] -_0803C064: - lsls r0, 1 - adds r1, r0, r2 - ldrb r1, [r1] - ldr r6, [sp, 0x14] - adds r3, r6, 0 - muls r3, r1 - adds r2, 0x1 - adds r0, r2 - ldrb r1, [r0] - adds r0, r3, 0 - bl __divsi3 - adds r3, r0, 0 -_0803C07E: - adds r0, r5, 0 - adds r1, r3, 0 - bl __divsi3 - adds r5, r0, 0 - movs r1, 0x32 - bl __divsi3 - adds r5, r0, 0 - ldr r0, [r7, 0x4C] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0803C0A8 - ldr r1, [sp, 0x24] - ldrb r0, [r1] - cmp r0, 0x3E - beq _0803C0A8 - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 -_0803C0A8: - movs r0, 0x1 - ldr r2, [sp, 0xC] - ands r0, r2 - cmp r0, 0 - beq _0803C0EA - ldrb r1, [r4] - cmp r1, 0x1 - bne _0803C0EA - ldr r0, _0803C0E0 - ldrh r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803C0E4 - movs r0, 0x2 - bl sub_803C348 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0803C0E4 - adds r0, r5, 0 - movs r1, 0x3 - bl __divsi3 - lsls r5, r0, 1 - b _0803C0EA - .align 2, 0 -_0803C0DC: .4byte gStatStageRatios -_0803C0E0: .4byte gUnknown_020239F8 -_0803C0E4: - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 -_0803C0EA: - ldr r0, _0803C148 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803C11C - ldr r0, _0803C14C - ldr r3, [sp, 0x8] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x6] - cmp r0, 0x8 - bne _0803C11C - movs r0, 0x2 - bl sub_803C348 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0803C11C - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 -_0803C11C: - cmp r5, 0 - bne _0803C122 - movs r5, 0x1 -_0803C122: - mov r6, r9 - cmp r6, 0x9 - bne _0803C12A - movs r5, 0 -_0803C12A: - mov r0, r9 - cmp r0, 0x9 - bhi _0803C132 - b _0803C330 -_0803C132: - ldr r0, _0803C150 - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x2 - bne _0803C15C - movs r0, 0x1C - ldrsb r0, [r7, r0] - cmp r0, 0x6 - ble _0803C158 - ldr r2, _0803C154 - b _0803C162 - .align 2, 0 -_0803C148: .4byte gUnknown_020239F8 -_0803C14C: .4byte gBattleMoves -_0803C150: .4byte gCritMultiplier -_0803C154: .4byte gStatStageRatios -_0803C158: - mov r5, r8 - b _0803C17A -_0803C15C: - ldr r2, _0803C1A8 - movs r0, 0x1C - ldrsb r0, [r7, r0] -_0803C162: - lsls r0, 1 - adds r1, r0, r2 - ldrb r1, [r1] - mov r5, r8 - muls r5, r1 - adds r2, 0x1 - adds r0, r2 - ldrb r1, [r0] - adds r0, r5, 0 - bl __divsi3 - adds r5, r0, 0 -_0803C17A: - ldr r0, _0803C1AC - ldrh r0, [r0] - muls r5, r0 - adds r0, r7, 0 - adds r0, 0x2A - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x5 - bl __divsi3 - adds r0, 0x2 - muls r5, r0 - ldrb r0, [r4] - cmp r0, 0x2 - bne _0803C1B4 - ldr r1, [sp, 0x4] - movs r0, 0x1D - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _0803C1B0 - ldr r2, _0803C1A8 - b _0803C1BC - .align 2, 0 -_0803C1A8: .4byte gStatStageRatios -_0803C1AC: .4byte gBattleMovePower -_0803C1B0: - ldr r3, [sp, 0x18] - b _0803C1D6 -_0803C1B4: - ldr r2, _0803C21C - ldr r1, [sp, 0x4] - movs r0, 0x1D - ldrsb r0, [r1, r0] -_0803C1BC: - lsls r0, 1 - adds r1, r0, r2 - ldrb r1, [r1] - ldr r6, [sp, 0x18] - adds r3, r6, 0 - muls r3, r1 - adds r2, 0x1 - adds r0, r2 - ldrb r1, [r0] - adds r0, r3, 0 - bl __divsi3 - adds r3, r0, 0 -_0803C1D6: - adds r0, r5, 0 - adds r1, r3, 0 - bl __divsi3 - adds r5, r0, 0 - movs r1, 0x32 - bl __divsi3 - adds r5, r0, 0 - movs r0, 0x2 - ldr r1, [sp, 0xC] - ands r0, r1 - cmp r0, 0 - beq _0803C22A - ldrb r1, [r4] - cmp r1, 0x1 - bne _0803C22A - ldr r0, _0803C220 - ldrh r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803C224 - movs r0, 0x2 - bl sub_803C348 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0803C224 - adds r0, r5, 0 - movs r1, 0x3 - bl __divsi3 - lsls r5, r0, 1 - b _0803C22A - .align 2, 0 -_0803C21C: .4byte gStatStageRatios -_0803C220: .4byte gUnknown_020239F8 -_0803C224: - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 -_0803C22A: - ldr r0, _0803C2A4 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803C25C - ldr r0, _0803C2A8 - ldr r2, [sp, 0x8] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x6] - cmp r0, 0x8 - bne _0803C25C - movs r0, 0x2 - bl sub_803C348 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0803C25C - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 -_0803C25C: - movs r0, 0 - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl sub_8018324 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0803C30C - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl sub_8018324 - lsls r0, 24 - cmp r0, 0 - bne _0803C30C - ldr r2, _0803C2AC - ldrh r1, [r2] - movs r0, 0x1 - ands r0, r1 - adds r4, r2, 0 - cmp r0, 0 - beq _0803C2C4 - mov r3, r9 - cmp r3, 0xA - beq _0803C2B0 - cmp r3, 0xB - beq _0803C2B8 - b _0803C2C4 - .align 2, 0 -_0803C2A4: .4byte gUnknown_020239F8 -_0803C2A8: .4byte gBattleMoves -_0803C2AC: .4byte word_2024DB8 -_0803C2B0: - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 - b _0803C2C4 -_0803C2B8: - lsls r0, r5, 4 - subs r0, r5 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 -_0803C2C4: - ldrh r1, [r4] - movs r0, 0x9F - ands r0, r1 - cmp r0, 0 - beq _0803C2DC - ldr r0, _0803C2F4 - ldrh r0, [r0] - cmp r0, 0x4C - bne _0803C2DC - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 -_0803C2DC: - ldrh r1, [r4] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0803C30C - mov r6, r9 - cmp r6, 0xA - beq _0803C2F8 - cmp r6, 0xB - beq _0803C306 - b _0803C30C - .align 2, 0 -_0803C2F4: .4byte gUnknown_02024BE6 -_0803C2F8: - lsls r0, r5, 4 - subs r0, r5 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - b _0803C30C -_0803C306: - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 -_0803C30C: - ldr r1, _0803C344 - ldr r2, [sp, 0x10] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803C330 - mov r3, r9 - cmp r3, 0xA - bne _0803C330 - lsls r0, r5, 4 - subs r0, r5 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 -_0803C330: - adds r0, r5, 0x2 - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0803C344: .4byte 0x02017100 - thumb_func_end sub_803BA2C - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 9cbed71a7..9fb8f8118 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -48,7 +48,7 @@ SECTIONS { src/main_menu.o(.text); asm/rom3.o(.text); src/pokemon_1.o(.text); - asm/rom_803BA2C.o(.text); + asm/calculate_base_damage.o(.text); src/pokemon_2.o(.text); asm/rom_803D1FC.o(.text); src/trig.o(.text); -- cgit v1.2.3