start working on battle 7

This commit is contained in:
DizzyEggg
2017-11-02 18:19:49 +01:00
parent 63210c0789
commit 5243285ab2
6 changed files with 298 additions and 828 deletions
-827
View File
@@ -5,834 +5,7 @@
.text
thumb_func_start AllocateBattleSpritesData
AllocateBattleSpritesData: @ 805D118
push {r4,lr}
ldr r4, =gBattleSpritesDataPtr
movs r0, 0x10
bl AllocZeroed
str r0, [r4]
movs r0, 0x10
bl AllocZeroed
ldr r1, [r4]
str r0, [r1]
movs r0, 0x30
bl AllocZeroed
ldr r1, [r4]
str r0, [r1, 0x4]
movs r0, 0x10
bl AllocZeroed
ldr r1, [r4]
str r0, [r1, 0x8]
movs r0, 0x50
bl AllocZeroed
ldr r1, [r4]
str r0, [r1, 0xC]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end AllocateBattleSpritesData
thumb_func_start FreeBattleSpritesData
FreeBattleSpritesData: @ 805D158
push {r4,r5,lr}
ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
cmp r0, 0
beq _0805D192
ldr r0, [r0, 0xC]
bl Free
ldr r0, [r5]
movs r4, 0
str r4, [r0, 0xC]
ldr r0, [r0, 0x8]
bl Free
ldr r0, [r5]
str r4, [r0, 0x8]
ldr r0, [r0, 0x4]
bl Free
ldr r0, [r5]
str r4, [r0, 0x4]
ldr r0, [r0]
bl Free
ldr r0, [r5]
str r4, [r0]
bl Free
str r4, [r5]
_0805D192:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end FreeBattleSpritesData
thumb_func_start ChooseMoveAndTargetInBattlePalace
ChooseMoveAndTargetInBattlePalace: @ 805D19C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
movs r0, 0x1
negs r0, r0
mov r9, r0
ldr r4, =gActiveBank
ldrb r0, [r4]
lsls r2, r0, 9
ldr r1, =gBattleBufferA + 4
adds r2, r1
mov r10, r2
movs r1, 0
movs r2, 0xFF
bl CheckMoveLimitations
lsls r0, 24
lsrs r0, 24
mov r8, r0
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r7, r0, 16
ldr r0, =gBattleStruct
ldr r0, [r0]
adds r0, 0x92
ldrb r1, [r0]
ldr r2, =gBitTable
ldrb r0, [r4]
lsls r0, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
negs r0, r1
orrs r0, r1
asrs r4, r0, 31
movs r0, 0x2
ands r4, r0
adds r6, r4, 0
adds r5, r4, 0x2
b _0805D20E
.pool
_0805D20C:
adds r4, 0x1
_0805D20E:
cmp r4, r5
bge _0805D234
ldr r0, =gActiveBank
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
ldr r1, =gBattleMons + 0x48
adds r0, r1
ldr r0, [r0]
bl GetNatureFromPersonality
lsls r0, 24
lsrs r0, 22
adds r0, r4, r0
ldr r2, =gUnknown_0831C494
adds r0, r2
ldrb r0, [r0]
cmp r0, r7
ble _0805D20C
_0805D234:
subs r7, r4, r6
cmp r4, r5
bne _0805D23C
movs r7, 0x2
_0805D23C:
movs r6, 0
movs r4, 0
mov r1, r10
ldrh r0, [r1]
cmp r0, 0
beq _0805D27C
mov r5, r10
_0805D24A:
ldrh r0, [r5]
bl sub_805D4A8
lsls r0, 24
lsrs r0, 24
cmp r7, r0
bne _0805D26E
mov r0, r10
adds r0, 0x8
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
beq _0805D26E
ldr r0, =gBitTable
lsls r1, r4, 2
adds r1, r0
ldr r0, [r1]
orrs r6, r0
_0805D26E:
adds r5, 0x2
adds r4, 0x1
cmp r4, 0x3
bgt _0805D27C
ldrh r0, [r5]
cmp r0, 0
bne _0805D24A
_0805D27C:
cmp r6, 0
beq _0805D2AC
ldr r3, =gBattleStruct
ldr r1, [r3]
adds r1, 0x92
ldrb r2, [r1]
movs r0, 0xF
ands r0, r2
strb r0, [r1]
ldr r1, [r3]
adds r1, 0x92
lsls r0, r6, 4
ldrb r2, [r1]
orrs r0, r2
strb r0, [r1]
lsls r0, r6, 24
lsrs r0, 24
bl BattleAI_SetupAIData
bl BattleAI_ChooseMoveOrAction
lsls r0, 24
lsrs r0, 24
mov r9, r0
_0805D2AC:
movs r0, 0x1
negs r0, r0
cmp r9, r0
beq _0805D2B6
b _0805D40C
_0805D2B6:
mov r2, r8
cmp r2, 0xF
bne _0805D2BE
b _0805D3EA
_0805D2BE:
movs r5, 0
movs r6, 0
ldr r7, =gBitTable
mov r4, r10
_0805D2C6:
ldrh r0, [r4]
bl sub_805D4A8
lsls r0, 24
cmp r0, 0
bne _0805D2DE
ldr r0, [r7]
mov r1, r8
ands r0, r1
cmp r0, 0
bne _0805D2DE
adds r5, 0x1
_0805D2DE:
ldrh r0, [r4]
bl sub_805D4A8
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0805D2F8
ldr r0, [r7]
mov r2, r8
ands r0, r2
cmp r0, 0
bne _0805D2F8
adds r5, 0x10
_0805D2F8:
ldrh r0, [r4]
bl sub_805D4A8
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _0805D316
ldr r0, [r7]
mov r1, r8
ands r0, r1
cmp r0, 0
bne _0805D316
movs r2, 0x80
lsls r2, 1
adds r5, r2
_0805D316:
adds r7, 0x4
adds r4, 0x2
ldr r0, =gBitTable
adds r0, 0xC
cmp r7, r0
ble _0805D2C6
movs r1, 0xF
ands r1, r5
cmp r1, 0x1
ble _0805D32C
adds r6, 0x1
_0805D32C:
movs r0, 0xF0
ands r0, r5
cmp r0, 0x1F
ble _0805D336
adds r6, 0x1
_0805D336:
ldr r2, =0x000001ff
cmp r0, r2
ble _0805D33E
adds r6, 0x1
_0805D33E:
cmp r6, 0x1
bgt _0805D346
cmp r6, 0
bne _0805D388
_0805D346:
ldr r5, =gBitTable
_0805D348:
bl Random
lsls r0, 16
movs r1, 0xC0
lsls r1, 10
ands r1, r0
lsrs r4, r1, 16
lsls r0, r4, 2
adds r0, r5
ldr r0, [r0]
mov r1, r8
ands r0, r1
cmp r0, 0
bne _0805D366
mov r9, r4
_0805D366:
movs r0, 0x1
negs r0, r0
cmp r9, r0
beq _0805D348
b _0805D3D4
.pool
_0805D388:
cmp r1, 0x1
ble _0805D38E
movs r6, 0
_0805D38E:
cmp r0, 0x1F
ble _0805D394
movs r6, 0x1
_0805D394:
cmp r0, r2
ble _0805D39A
movs r6, 0x2
_0805D39A:
bl Random
lsls r0, 16
movs r1, 0xC0
lsls r1, 10
ands r1, r0
lsrs r4, r1, 16
ldr r1, =gBitTable
lsls r0, r4, 2
adds r0, r1
ldr r0, [r0]
mov r2, r8
ands r0, r2
cmp r0, 0
bne _0805D3CC
lsls r0, r4, 1
add r0, r10
ldrh r0, [r0]
bl sub_805D4A8
lsls r0, 24
lsrs r0, 24
cmp r6, r0
bne _0805D3CC
mov r9, r4
_0805D3CC:
movs r0, 0x1
negs r0, r0
cmp r9, r0
beq _0805D39A
_0805D3D4:
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r0, 16
cmp r0, 0x31
bls _0805D40C
_0805D3EA:
ldr r2, =gProtectStructs
ldr r0, =gActiveBank
ldrb r1, [r0]
lsls r1, 4
adds r1, r2
ldrb r0, [r1, 0x2]
movs r2, 0x10
orrs r0, r2
strb r0, [r1, 0x2]
movs r0, 0
b _0805D496
.pool
_0805D40C:
mov r1, r9
lsls r0, r1, 1
mov r2, r10
adds r1, r2, r0
ldrh r0, [r1]
cmp r0, 0xAE
bne _0805D434
ldrb r0, [r2, 0x12]
movs r5, 0
cmp r0, 0x7
beq _0805D442
ldrb r1, [r2, 0x13]
movs r0, 0x7
eors r1, r0
negs r0, r1
orrs r0, r1
asrs r5, r0, 31
movs r0, 0x10
ands r5, r0
b _0805D442
_0805D434:
ldr r2, =gBattleMoves
ldrh r1, [r1]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r5, [r0, 0x6]
_0805D442:
movs r0, 0x10
ands r0, r5
cmp r0, 0
beq _0805D45C
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 8
b _0805D48A
.pool
_0805D45C:
cmp r5, 0
bne _0805D470
bl sub_805D5F4
lsls r0, 16
lsrs r0, 16
mov r2, r9
orrs r2, r0
mov r9, r2
b _0805D490
_0805D470:
ldr r0, =gActiveBank
ldrb r0, [r0]
bl GetBankIdentity
adds r1, r0, 0
movs r2, 0x1
movs r0, 0x1
ands r0, r1
eors r0, r2
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 16
_0805D48A:
mov r1, r9
orrs r1, r0
mov r9, r1
_0805D490:
mov r2, r9
lsls r0, r2, 16
lsrs r0, 16
_0805D496:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end ChooseMoveAndTargetInBattlePalace
thumb_func_start sub_805D4A8
sub_805D4A8: @ 805D4A8
push {lr}
lsls r0, 16
lsrs r2, r0, 16
ldr r1, =gBattleMoves
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x6]
adds r3, r1, 0
cmp r0, 0x40
bls _0805D4C2
b _0805D5EE
_0805D4C2:
lsls r0, 2
ldr r1, =_0805D4D4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0805D4D4:
.4byte _0805D5D8
.4byte _0805D5E6
.4byte _0805D5D8
.4byte _0805D5EE
.4byte _0805D5D8
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5D8
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EA
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5D8
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5EE
.4byte _0805D5E6
_0805D5D8:
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r3
ldrb r0, [r0, 0x1]
cmp r0, 0
bne _0805D5EE
_0805D5E6:
movs r0, 0x2
b _0805D5F0
_0805D5EA:
movs r0, 0x1
b _0805D5F0
_0805D5EE:
movs r0, 0
_0805D5F0:
pop {r1}
bx r1
thumb_func_end sub_805D4A8
thumb_func_start sub_805D5F4
sub_805D5F4: @ 805D5F4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0805D6FA
ldr r0, =gActiveBank
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
cmp r0, 0
bne _0805D630
movs r0, 0x1
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
mov r8, r0
movs r0, 0x3
b _0805D63E
.pool
_0805D630:
movs r0, 0
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
mov r8, r0
movs r0, 0x2
_0805D63E:
bl GetBankByIdentity
lsls r0, 24
lsrs r7, r0, 24
ldr r1, =gBattleMons
movs r2, 0x58
mov r0, r8
muls r0, r2
adds r5, r0, r1
adds r0, r7, 0
muls r0, r2
adds r6, r0, r1
ldrh r0, [r5, 0x28]
ldrh r3, [r6, 0x28]
cmp r0, r3
bne _0805D680
bl Random
adds r3, r0, 0
ldr r0, =gActiveBank
ldrb r1, [r0]
movs r2, 0x1
movs r0, 0x1
ands r0, r1
eors r0, r2
movs r1, 0x2
ands r1, r3
adds r0, r1
b _0805D702
.pool
_0805D680:
ldr r4, =gUnknown_0831C604
ldr r0, =gActiveBank
mov r9, r0
ldrb r0, [r0]
muls r0, r2
adds r1, 0x48
adds r0, r1
ldr r0, [r0]
bl GetNatureFromPersonality
lsls r0, 24
lsrs r0, 24
adds r0, r4
ldrb r4, [r0]
cmp r4, 0x1
beq _0805D6CC
cmp r4, 0x1
bgt _0805D6B4
cmp r4, 0
beq _0805D6BA
b _0805D6FA
.pool
_0805D6B4:
cmp r4, 0x2
beq _0805D6DE
b _0805D6FA
_0805D6BA:
ldrh r0, [r5, 0x28]
ldrh r6, [r6, 0x28]
cmp r0, r6
bls _0805D6C8
mov r1, r8
lsls r0, r1, 8
b _0805D704
_0805D6C8:
lsls r0, r7, 8
b _0805D704
_0805D6CC:
ldrh r0, [r5, 0x28]
ldrh r6, [r6, 0x28]
cmp r0, r6
bcs _0805D6DA
mov r3, r8
lsls r0, r3, 8
b _0805D704
_0805D6DA:
lsls r0, r7, 8
b _0805D704
_0805D6DE:
bl Random
adds r3, r0, 0
mov r0, r9
ldrb r1, [r0]
movs r2, 0x1
movs r0, 0x1
ands r0, r1
eors r0, r2
ands r4, r3
adds r0, r4
lsls r0, 24
lsrs r0, 16
b _0805D704
_0805D6FA:
ldr r0, =gActiveBank
ldrb r1, [r0]
movs r0, 0x1
eors r0, r1
_0805D702:
lsls r0, 8
_0805D704:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end sub_805D5F4
thumb_func_start sub_805D714
sub_805D714: @ 805D714
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
ldr r2, =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
adds r0, r1, 0
adds r0, 0x3F
ldrb r3, [r0]
lsls r0, r3, 26
cmp r0, 0
bge _0805D766
adds r0, r1, 0
adds r0, 0x3E
ldrb r0, [r0]
lsls r0, 29
cmp r0, 0
blt _0805D766
adds r2, r1, 0
adds r2, 0x2C
ldrb r1, [r2]
lsls r0, r1, 25
cmp r0, 0
bge _0805D75C
movs r0, 0x41
negs r0, r0
ands r0, r1
strb r0, [r2]
b _0805D766
.pool
_0805D75C:
lsls r0, r3, 27
cmp r0, 0
bge _0805D766
ldr r0, =SpriteCallbackDummy
str r0, [r4, 0x1C]
_0805D766:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_805D714
thumb_func_start sub_805D770
sub_805D770: @ 805D770
push {r4,lr}
adds r4, r0, 0
lsls r1, 24
adds r3, r4, 0
adds r3, 0x2C
ldrb r0, [r3]
movs r2, 0x40
orrs r0, r2
strb r0, [r3]
ldr r0, =SpriteCallbackDummy
str r0, [r4, 0x1C]
cmp r1, 0
bne _0805D798
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
b _0805D7A0
.pool
_0805D798:
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
_0805D7A0:
adds r0, r4, 0
bl AnimateSprite
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_805D770
thumb_func_start sub_805D7AC
sub_805D7AC: @ 805D7AC
push {lr}
adds r2, r0, 0
ldr r0, =gUnknown_020243FC
ldrh r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0805D7E4
ldrh r0, [r2, 0x2E]
ldrh r1, [r2, 0x24]
adds r0, r1
strh r0, [r2, 0x24]
lsls r0, 16
cmp r0, 0
bne _0805D7E4
movs r1, 0x26
ldrsh r0, [r2, r1]
cmp r0, 0
beq _0805D7E0
ldr r0, =sub_805D7EC
b _0805D7E2
.pool
_0805D7E0:
ldr r0, =SpriteCallbackDummy
_0805D7E2:
str r0, [r2, 0x1C]
_0805D7E4:
pop {r0}
bx r0
.pool
thumb_func_end sub_805D7AC
thumb_func_start sub_805D7EC
sub_805D7EC: @ 805D7EC
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x26]
subs r0, 0x2
strh r0, [r1, 0x26]
lsls r0, 16
cmp r0, 0
bne _0805D800
ldr r0, =SpriteCallbackDummy
str r0, [r1, 0x1C]
_0805D800:
pop {r0}
bx r0
.pool
thumb_func_end sub_805D7EC
thumb_func_start DoStatusAnimation
DoStatusAnimation: @ 805D808