Decomped IsMoveIndexUsable

This commit is contained in:
AnonymousRandomPerson 2022-03-09 21:50:15 -05:00
parent 26a7012be1
commit 951b01114a
9 changed files with 690 additions and 699 deletions

View File

@ -7204,7 +7204,7 @@ _08056136:
adds r0, r5, 0
adds r1, r7, 0
movs r2, 0x1
bl IsMoveUsable_2
bl IsMoveUsable
_08056142:
lsls r0, 24
lsrs r4, r0, 24

View File

@ -285,693 +285,4 @@ _08057340:
bx r1
thumb_func_end sub_8057308
thumb_func_start IsMoveUsable_1
IsMoveUsable_1:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r7, r0, 0
lsls r2, 24
lsrs r2, 24
mov r8, r2
ldr r6, [r7, 0x70]
lsls r1, 3
movs r0, 0x8C
lsls r0, 1
adds r1, r0
adds r4, r6, r1
ldrb r1, [r4]
movs r2, 0x1
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _080573BE
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _080573BE
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _080573BE
ldrb r1, [r4, 0x1]
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _0805738E
b _080573BE
_0805738A:
movs r0, 0x1
b _080573C0
_0805738E:
movs r5, 0
b _08057394
_08057392:
adds r5, 0x1
_08057394:
cmp r5, 0x3
bgt _080573BE
adds r0, r7, 0
adds r1, r4, 0
mov r2, r8
bl IsMoveUsable_2
lsls r0, 24
cmp r0, 0
bne _0805738A
adds r4, 0x8
movs r1, 0x9C
lsls r1, 1
adds r0, r6, r1
cmp r4, r0
bcs _080573BE
ldrb r1, [r4]
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _08057392
_080573BE:
movs r0, 0
_080573C0:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end IsMoveUsable_1
thumb_func_start IsMoveUsable_2
IsMoveUsable_2:
push {r4-r6,lr}
adds r4, r1, 0
lsls r2, 24
lsrs r2, 24
ldr r6, [r0, 0x70]
ldrh r1, [r4, 0x2]
ldr r0, _08057430
cmp r1, r0
beq _08057442
ldrb r1, [r4]
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _0805743E
ldrb r1, [r4, 0x1]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0805743E
cmp r2, 0
beq _08057442
ldrb r0, [r4, 0x4]
cmp r0, 0
beq _0805743E
adds r0, r6, 0
adds r0, 0xBC
ldrb r1, [r0]
adds r5, r0, 0
cmp r1, 0x5
bne _08057414
adds r0, r4, 0
bl MoveDealsDirectDamage
lsls r0, 24
cmp r0, 0
beq _0805743E
_08057414:
ldrb r0, [r5]
cmp r0, 0x6
bne _08057442
ldrh r1, [r4, 0x2]
movs r0, 0xB0
lsls r0, 1
cmp r1, r0
bne _08057434
movs r1, 0x9C
lsls r1, 1
adds r0, r6, r1
ldrb r1, [r0]
b _08057436
.align 2, 0
_08057430: .4byte 0x00000163
_08057434:
ldrb r1, [r4]
_08057436:
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08057442
_0805743E:
movs r0, 0
b _08057444
_08057442:
movs r0, 0x1
_08057444:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end IsMoveUsable_2
thumb_func_start sub_805744C
sub_805744C:
push {r4-r6,lr}
adds r4, r1, 0
lsls r2, 24
lsrs r2, 24
ldr r6, [r0, 0x70]
ldrh r1, [r4, 0x2]
ldr r0, _080574A8
cmp r1, r0
beq _080574BA
ldrb r1, [r4]
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _080574B6
ldrb r1, [r4, 0x1]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080574B6
cmp r2, 0
beq _080574BA
adds r0, r6, 0
adds r0, 0xBC
ldrb r1, [r0]
adds r5, r0, 0
cmp r1, 0x5
bne _0805748E
adds r0, r4, 0
bl MoveDealsDirectDamage
lsls r0, 24
cmp r0, 0
beq _080574B6
_0805748E:
ldrb r0, [r5]
cmp r0, 0x6
bne _080574BA
ldrh r1, [r4, 0x2]
movs r0, 0xB0
lsls r0, 1
cmp r1, r0
bne _080574AC
movs r1, 0x9C
lsls r1, 1
adds r0, r6, r1
ldrb r1, [r0]
b _080574AE
.align 2, 0
_080574A8: .4byte 0x00000163
_080574AC:
ldrb r1, [r4]
_080574AE:
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080574BA
_080574B6:
movs r0, 0
b _080574BC
_080574BA:
movs r0, 0x1
_080574BC:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_805744C
thumb_func_start sub_80574C4
sub_80574C4:
push {r4-r6,lr}
sub sp, 0x104
adds r4, r0, 0
adds r5, r1, 0
movs r3, 0
movs r2, 0
ldr r0, [r4]
cmp r0, 0
beq _08057502
cmp r0, r5
beq _080574EA
_080574DA:
lsls r0, r3, 2
mov r6, sp
adds r1, r6, r0
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
str r0, [r1]
adds r3, 0x1
_080574EA:
adds r2, 0x1
cmp r2, 0x40
bgt _08057502
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
cmp r0, 0
beq _08057502
cmp r0, r5
beq _080574EA
cmp r3, 0x3F
ble _080574DA
_08057502:
movs r2, 0
ldr r0, [r4]
b _08057524
_08057508:
lsls r0, r3, 2
mov r6, sp
adds r1, r6, r0
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
str r0, [r1]
adds r3, 0x1
_08057518:
adds r2, 0x1
cmp r2, 0x40
bgt _08057530
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
_08057524:
cmp r0, 0
beq _08057530
cmp r0, r5
bne _08057518
cmp r3, 0x3F
ble _08057508
_08057530:
cmp r3, 0x40
bgt _08057542
movs r1, 0
lsls r0, r3, 2
add r0, sp
_0805753A:
stm r0!, {r1}
adds r3, 0x1
cmp r3, 0x40
ble _0805753A
_08057542:
mov r3, sp
adds r1, r4, 0
movs r2, 0x40
_08057548:
ldm r3!, {r0}
stm r1!, {r0}
subs r2, 0x1
cmp r2, 0
bge _08057548
add sp, 0x104
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80574C4
thumb_func_start sub_805755C
sub_805755C:
push {r4,lr}
lsls r1, 16
lsrs r4, r1, 16
cmp r4, 0x97
bne _08057576
bl GetWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08057576
movs r0, 0
b _08057580
_08057576:
adds r0, r4, 0
bl DoesMoveCharge
lsls r0, 24
lsrs r0, 24
_08057580:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_805755C
thumb_func_start sub_8057588
sub_8057588:
push {r4-r6,lr}
adds r4, r0, 0
lsls r1, 24
lsrs r6, r1, 24
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _080575F8
ldr r5, [r4, 0x70]
movs r3, 0
_0805759E:
lsls r0, r3, 3
movs r1, 0x8C
lsls r1, 1
adds r0, r1
adds r2, r5, r0
ldrb r1, [r2]
movs r0, 0x1
ands r0, r1
adds r4, r3, 0x1
cmp r0, 0
beq _080575F2
movs r3, 0x1
ldrb r1, [r2, 0x1]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080575C8
movs r0, 0xEF
ands r0, r1
strb r0, [r2, 0x1]
movs r3, 0x2
_080575C8:
ldrb r1, [r2, 0x1]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _080575F2
movs r0, 0xF7
ands r0, r1
strb r0, [r2, 0x1]
cmp r6, 0
beq _080575F2
cmp r3, 0
beq _080575F2
adds r1, r3, 0
_080575E2:
ldrb r0, [r2, 0x4]
cmp r0, 0
beq _080575EC
subs r0, 0x1
strb r0, [r2, 0x4]
_080575EC:
subs r1, 0x1
cmp r1, 0
bne _080575E2
_080575F2:
adds r3, r4, 0
cmp r3, 0x3
ble _0805759E
_080575F8:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8057588
thumb_func_start sub_8057600
sub_8057600:
push {r4,lr}
ldrh r4, [r0, 0x2]
adds r0, r1, 0
bl sub_8057620
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_8094828
lsls r0, 16
asrs r0, 16
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8057600
thumb_func_start sub_8057620
sub_8057620:
push {lr}
cmp r0, 0
beq _0805762C
lsls r0, 24
lsrs r0, 24
b _0805762E
_0805762C:
movs r0, 0
_0805762E:
pop {r1}
bx r1
thumb_func_end sub_8057620
thumb_func_start sub_8057634
sub_8057634:
push {r4-r7,lr}
sub sp, 0x8
adds r5, r0, 0
adds r6, r1, 0
movs r7, 0
movs r4, 0x80
lsls r4, 1
str r3, [sp]
adds r3, r4, 0
bl sub_8055640
cmp r0, 0
beq _08057678
movs r7, 0x1
ldr r0, _08057684
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r5, 0
adds r1, r6, 0
bl sub_805727C
lsls r0, 24
cmp r0, 0
beq _08057678
ldr r0, _08057688
ldr r2, [r0]
str r7, [sp]
movs r0, 0
str r0, [sp, 0x4]
adds r0, r5, 0
adds r1, r6, 0
movs r3, 0x1
bl sub_8076F80
_08057678:
adds r0, r7, 0
add sp, 0x8
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08057684: .4byte gUnknown_80F4DB4
_08057688: .4byte gUnknown_8106A4C
thumb_func_end sub_8057634
thumb_func_start sub_805768C
sub_805768C:
push {r4-r6,lr}
sub sp, 0x4
adds r5, r3, 0
movs r6, 0
ldr r4, _080576B8
ldr r3, [r4]
adds r3, 0x1
str r3, [r4]
ldr r4, _080576BC
lsls r3, 2
adds r3, r4
ldr r3, [r3]
str r5, [sp]
bl sub_8055640
cmp r0, 0
bne _080576C4
ldr r1, _080576C0
movs r0, 0x1
strb r0, [r1]
b _080576C6
.align 2, 0
_080576B8: .4byte gUnknown_202F21C
_080576BC: .4byte gUnknown_8106A54
_080576C0: .4byte gUnknown_202F220
_080576C4:
movs r6, 0x1
_080576C6:
adds r0, r6, 0
add sp, 0x4
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_805768C
thumb_func_start sub_80576D0
sub_80576D0:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _080576F4
adds r0, r4, 0
movs r2, 0x1
bl sub_808417C
adds r2, r0, 0
adds r2, 0x1
adds r0, r5, 0
adds r1, r4, 0
bl sub_8075F34
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080576F4: .4byte gUnknown_80F4F28
thumb_func_end sub_80576D0
thumb_func_start sub_80576F8
sub_80576F8:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _0805771C
adds r0, r4, 0
movs r2, 0x1
bl sub_808417C
adds r2, r0, 0
adds r0, r5, 0
adds r1, r4, 0
movs r3, 0x1
bl sub_8075C58
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0805771C: .4byte gUnknown_80F4E74
thumb_func_end sub_80576F8
thumb_func_start sub_8057720
sub_8057720:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _08057744
adds r0, r4, 0
movs r2, 0x1
bl sub_808417C
adds r2, r0, 0
adds r0, r5, 0
adds r1, r4, 0
bl sub_8075DBC
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08057744: .4byte gUnknown_80F4E78
thumb_func_end sub_8057720
thumb_func_start sub_8057748
sub_8057748:
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
adds r6, r1, 0
ldr r4, _08057778
bl GetWeather
lsls r0, 24
lsrs r0, 23
adds r0, r4
movs r1, 0
ldrsh r2, [r0, r1]
movs r0, 0x1
str r0, [sp]
adds r0, r5, 0
adds r1, r6, 0
movs r3, 0
bl HealTargetHP
movs r0, 0x1
add sp, 0x4
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08057778: .4byte gUnknown_80F502A
thumb_func_end sub_8057748
thumb_func_start sub_805777C
sub_805777C:
push {lr}
bl sub_8079DB8
movs r0, 0x1
pop {r1}
bx r1
thumb_func_end sub_805777C
thumb_func_start sub_8057788
sub_8057788:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
adds r4, r0, 0
adds r7, r1, 0
adds r6, r2, 0
mov r8, r3
movs r0, 0
mov r9, r0
adds r0, r4, 0
bl GetMapTileForDungeonEntity_2
adds r5, r0, 0
bl IsTileGround
lsls r0, 24
cmp r0, 0
beq _080577BA
ldrh r1, [r5]
movs r0, 0x3
ands r0, r1
cmp r0, 0x1
beq _080577CC
_080577BA:
ldr r0, _080577C8
ldr r2, [r0]
adds r0, r4, 0
adds r1, r7, 0
bl sub_80522F4
b _0805780E
.align 2, 0
_080577C8: .4byte gUnknown_80FD14C
_080577CC:
adds r0, r4, 0
adds r1, r6, 0
bl MoveMatchesChargingStatus
lsls r0, 24
cmp r0, 0
beq _080577F8
ldr r0, _080577F4
ldr r3, [r0]
mov r0, r8
str r0, [sp]
adds r0, r4, 0
adds r1, r7, 0
adds r2, r6, 0
bl sub_8055640
adds r0, r4, 0
bl sub_8079764
b _0805780A
.align 2, 0
_080577F4: .4byte gUnknown_80F4F68
_080577F8:
ldr r0, _08057820
ldr r0, [r0]
str r0, [sp]
adds r0, r4, 0
adds r1, r4, 0
movs r2, 0xA
adds r3, r6, 0
bl sub_8079618
_0805780A:
movs r0, 0x1
mov r9, r0
_0805780E:
mov r0, r9
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08057820: .4byte gUnknown_80FAD4C
thumb_func_end sub_8057788
.align 2,0 @ Don't pad with nop

623
asm/code_80573CC.s Normal file
View File

@ -0,0 +1,623 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start IsMoveUsable
IsMoveUsable:
push {r4-r6,lr}
adds r4, r1, 0
lsls r2, 24
lsrs r2, 24
ldr r6, [r0, 0x70]
ldrh r1, [r4, 0x2]
ldr r0, _08057430
cmp r1, r0
beq _08057442
ldrb r1, [r4]
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _0805743E
ldrb r1, [r4, 0x1]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0805743E
cmp r2, 0
beq _08057442
ldrb r0, [r4, 0x4]
cmp r0, 0
beq _0805743E
adds r0, r6, 0
adds r0, 0xBC
ldrb r1, [r0]
adds r5, r0, 0
cmp r1, 0x5
bne _08057414
adds r0, r4, 0
bl MoveDealsDirectDamage
lsls r0, 24
cmp r0, 0
beq _0805743E
_08057414:
ldrb r0, [r5]
cmp r0, 0x6
bne _08057442
ldrh r1, [r4, 0x2]
movs r0, 0xB0
lsls r0, 1
cmp r1, r0
bne _08057434
movs r1, 0x9C
lsls r1, 1
adds r0, r6, r1
ldrb r1, [r0]
b _08057436
.align 2, 0
_08057430: .4byte 0x00000163
_08057434:
ldrb r1, [r4]
_08057436:
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08057442
_0805743E:
movs r0, 0
b _08057444
_08057442:
movs r0, 0x1
_08057444:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end IsMoveUsable
thumb_func_start sub_805744C
sub_805744C:
push {r4-r6,lr}
adds r4, r1, 0
lsls r2, 24
lsrs r2, 24
ldr r6, [r0, 0x70]
ldrh r1, [r4, 0x2]
ldr r0, _080574A8
cmp r1, r0
beq _080574BA
ldrb r1, [r4]
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _080574B6
ldrb r1, [r4, 0x1]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080574B6
cmp r2, 0
beq _080574BA
adds r0, r6, 0
adds r0, 0xBC
ldrb r1, [r0]
adds r5, r0, 0
cmp r1, 0x5
bne _0805748E
adds r0, r4, 0
bl MoveDealsDirectDamage
lsls r0, 24
cmp r0, 0
beq _080574B6
_0805748E:
ldrb r0, [r5]
cmp r0, 0x6
bne _080574BA
ldrh r1, [r4, 0x2]
movs r0, 0xB0
lsls r0, 1
cmp r1, r0
bne _080574AC
movs r1, 0x9C
lsls r1, 1
adds r0, r6, r1
ldrb r1, [r0]
b _080574AE
.align 2, 0
_080574A8: .4byte 0x00000163
_080574AC:
ldrb r1, [r4]
_080574AE:
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080574BA
_080574B6:
movs r0, 0
b _080574BC
_080574BA:
movs r0, 0x1
_080574BC:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_805744C
thumb_func_start sub_80574C4
sub_80574C4:
push {r4-r6,lr}
sub sp, 0x104
adds r4, r0, 0
adds r5, r1, 0
movs r3, 0
movs r2, 0
ldr r0, [r4]
cmp r0, 0
beq _08057502
cmp r0, r5
beq _080574EA
_080574DA:
lsls r0, r3, 2
mov r6, sp
adds r1, r6, r0
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
str r0, [r1]
adds r3, 0x1
_080574EA:
adds r2, 0x1
cmp r2, 0x40
bgt _08057502
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
cmp r0, 0
beq _08057502
cmp r0, r5
beq _080574EA
cmp r3, 0x3F
ble _080574DA
_08057502:
movs r2, 0
ldr r0, [r4]
b _08057524
_08057508:
lsls r0, r3, 2
mov r6, sp
adds r1, r6, r0
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
str r0, [r1]
adds r3, 0x1
_08057518:
adds r2, 0x1
cmp r2, 0x40
bgt _08057530
lsls r0, r2, 2
adds r0, r4
ldr r0, [r0]
_08057524:
cmp r0, 0
beq _08057530
cmp r0, r5
bne _08057518
cmp r3, 0x3F
ble _08057508
_08057530:
cmp r3, 0x40
bgt _08057542
movs r1, 0
lsls r0, r3, 2
add r0, sp
_0805753A:
stm r0!, {r1}
adds r3, 0x1
cmp r3, 0x40
ble _0805753A
_08057542:
mov r3, sp
adds r1, r4, 0
movs r2, 0x40
_08057548:
ldm r3!, {r0}
stm r1!, {r0}
subs r2, 0x1
cmp r2, 0
bge _08057548
add sp, 0x104
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80574C4
thumb_func_start sub_805755C
sub_805755C:
push {r4,lr}
lsls r1, 16
lsrs r4, r1, 16
cmp r4, 0x97
bne _08057576
bl GetWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08057576
movs r0, 0
b _08057580
_08057576:
adds r0, r4, 0
bl DoesMoveCharge
lsls r0, 24
lsrs r0, 24
_08057580:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_805755C
thumb_func_start sub_8057588
sub_8057588:
push {r4-r6,lr}
adds r4, r0, 0
lsls r1, 24
lsrs r6, r1, 24
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _080575F8
ldr r5, [r4, 0x70]
movs r3, 0
_0805759E:
lsls r0, r3, 3
movs r1, 0x8C
lsls r1, 1
adds r0, r1
adds r2, r5, r0
ldrb r1, [r2]
movs r0, 0x1
ands r0, r1
adds r4, r3, 0x1
cmp r0, 0
beq _080575F2
movs r3, 0x1
ldrb r1, [r2, 0x1]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080575C8
movs r0, 0xEF
ands r0, r1
strb r0, [r2, 0x1]
movs r3, 0x2
_080575C8:
ldrb r1, [r2, 0x1]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _080575F2
movs r0, 0xF7
ands r0, r1
strb r0, [r2, 0x1]
cmp r6, 0
beq _080575F2
cmp r3, 0
beq _080575F2
adds r1, r3, 0
_080575E2:
ldrb r0, [r2, 0x4]
cmp r0, 0
beq _080575EC
subs r0, 0x1
strb r0, [r2, 0x4]
_080575EC:
subs r1, 0x1
cmp r1, 0
bne _080575E2
_080575F2:
adds r3, r4, 0
cmp r3, 0x3
ble _0805759E
_080575F8:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8057588
thumb_func_start sub_8057600
sub_8057600:
push {r4,lr}
ldrh r4, [r0, 0x2]
adds r0, r1, 0
bl sub_8057620
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_8094828
lsls r0, 16
asrs r0, 16
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8057600
thumb_func_start sub_8057620
sub_8057620:
push {lr}
cmp r0, 0
beq _0805762C
lsls r0, 24
lsrs r0, 24
b _0805762E
_0805762C:
movs r0, 0
_0805762E:
pop {r1}
bx r1
thumb_func_end sub_8057620
thumb_func_start sub_8057634
sub_8057634:
push {r4-r7,lr}
sub sp, 0x8
adds r5, r0, 0
adds r6, r1, 0
movs r7, 0
movs r4, 0x80
lsls r4, 1
str r3, [sp]
adds r3, r4, 0
bl sub_8055640
cmp r0, 0
beq _08057678
movs r7, 0x1
ldr r0, _08057684
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r5, 0
adds r1, r6, 0
bl sub_805727C
lsls r0, 24
cmp r0, 0
beq _08057678
ldr r0, _08057688
ldr r2, [r0]
str r7, [sp]
movs r0, 0
str r0, [sp, 0x4]
adds r0, r5, 0
adds r1, r6, 0
movs r3, 0x1
bl sub_8076F80
_08057678:
adds r0, r7, 0
add sp, 0x8
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08057684: .4byte gUnknown_80F4DB4
_08057688: .4byte gUnknown_8106A4C
thumb_func_end sub_8057634
thumb_func_start sub_805768C
sub_805768C:
push {r4-r6,lr}
sub sp, 0x4
adds r5, r3, 0
movs r6, 0
ldr r4, _080576B8
ldr r3, [r4]
adds r3, 0x1
str r3, [r4]
ldr r4, _080576BC
lsls r3, 2
adds r3, r4
ldr r3, [r3]
str r5, [sp]
bl sub_8055640
cmp r0, 0
bne _080576C4
ldr r1, _080576C0
movs r0, 0x1
strb r0, [r1]
b _080576C6
.align 2, 0
_080576B8: .4byte gUnknown_202F21C
_080576BC: .4byte gUnknown_8106A54
_080576C0: .4byte gUnknown_202F220
_080576C4:
movs r6, 0x1
_080576C6:
adds r0, r6, 0
add sp, 0x4
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_805768C
thumb_func_start sub_80576D0
sub_80576D0:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _080576F4
adds r0, r4, 0
movs r2, 0x1
bl sub_808417C
adds r2, r0, 0
adds r2, 0x1
adds r0, r5, 0
adds r1, r4, 0
bl sub_8075F34
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080576F4: .4byte gUnknown_80F4F28
thumb_func_end sub_80576D0
thumb_func_start sub_80576F8
sub_80576F8:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _0805771C
adds r0, r4, 0
movs r2, 0x1
bl sub_808417C
adds r2, r0, 0
adds r0, r5, 0
adds r1, r4, 0
movs r3, 0x1
bl sub_8075C58
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0805771C: .4byte gUnknown_80F4E74
thumb_func_end sub_80576F8
thumb_func_start sub_8057720
sub_8057720:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _08057744
adds r0, r4, 0
movs r2, 0x1
bl sub_808417C
adds r2, r0, 0
adds r0, r5, 0
adds r1, r4, 0
bl sub_8075DBC
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08057744: .4byte gUnknown_80F4E78
thumb_func_end sub_8057720
thumb_func_start sub_8057748
sub_8057748:
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
adds r6, r1, 0
ldr r4, _08057778
bl GetWeather
lsls r0, 24
lsrs r0, 23
adds r0, r4
movs r1, 0
ldrsh r2, [r0, r1]
movs r0, 0x1
str r0, [sp]
adds r0, r5, 0
adds r1, r6, 0
movs r3, 0
bl HealTargetHP
movs r0, 0x1
add sp, 0x4
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08057778: .4byte gUnknown_80F502A
thumb_func_end sub_8057748
thumb_func_start sub_805777C
sub_805777C:
push {lr}
bl sub_8079DB8
movs r0, 0x1
pop {r1}
bx r1
thumb_func_end sub_805777C
thumb_func_start sub_8057788
sub_8057788:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
adds r4, r0, 0
adds r7, r1, 0
adds r6, r2, 0
mov r8, r3
movs r0, 0
mov r9, r0
adds r0, r4, 0
bl GetMapTileForDungeonEntity_2
adds r5, r0, 0
bl IsTileGround
lsls r0, 24
cmp r0, 0
beq _080577BA
ldrh r1, [r5]
movs r0, 0x3
ands r0, r1
cmp r0, 0x1
beq _080577CC
_080577BA:
ldr r0, _080577C8
ldr r2, [r0]
adds r0, r4, 0
adds r1, r7, 0
bl sub_80522F4
b _0805780E
.align 2, 0
_080577C8: .4byte gUnknown_80FD14C
_080577CC:
adds r0, r4, 0
adds r1, r6, 0
bl MoveMatchesChargingStatus
lsls r0, 24
cmp r0, 0
beq _080577F8
ldr r0, _080577F4
ldr r3, [r0]
mov r0, r8
str r0, [sp]
adds r0, r4, 0
adds r1, r7, 0
adds r2, r6, 0
bl sub_8055640
adds r0, r4, 0
bl sub_8079764
b _0805780A
.align 2, 0
_080577F4: .4byte gUnknown_80F4F68
_080577F8:
ldr r0, _08057820
ldr r0, [r0]
str r0, [sp]
adds r0, r4, 0
adds r1, r4, 0
movs r2, 0xA
adds r3, r6, 0
bl sub_8079618
_0805780A:
movs r0, 0x1
mov r9, r0
_0805780E:
mov r0, r9
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08057820: .4byte gUnknown_80FAD4C
thumb_func_end sub_8057788
.align 2,0 @ Don't pad with nop

View File

@ -10308,7 +10308,7 @@ _08062C24:
mov r0, r10
adds r1, r5, 0
movs r2, 0x1
bl IsMoveUsable_2
bl IsMoveUsable
add r1, sp, 0x4
movs r2, 0
lsls r0, 24
@ -11542,7 +11542,7 @@ _08063606:
ldr r0, [sp, 0x14]
adds r1, r5, 0
movs r2, 0x1
bl IsMoveUsable_2
bl IsMoveUsable
add r1, sp, 0x4
movs r2, 0
lsls r0, 24
@ -11719,7 +11719,7 @@ _0806376A:
bgt _08063788
mov r0, r8
movs r2, 0x1
bl IsMoveUsable_1
bl IsMoveIndexUsable
lsls r0, 24
lsrs r0, 24
negs r1, r0

View File

@ -3173,7 +3173,7 @@ _080733DE:
mov r0, r8
adds r1, r5, 0
movs r2, 0x1
bl IsMoveUsable_2
bl IsMoveUsable
lsls r0, 24
cmp r0, 0
bne _08073440
@ -3384,7 +3384,7 @@ _0807357A:
adds r1, r5, 0
movs r2, 0x1
str r3, [sp, 0x14]
bl IsMoveUsable_2
bl IsMoveUsable
lsls r0, 24
ldr r3, [sp, 0x14]
cmp r0, 0

8
include/move_util.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef GUARD_MOVE_UTIL_H
#define GUARD_MOVE_UTIL_H
#include "dungeon_entity.h"
bool8 IsMoveIndexUsable(struct DungeonEntity *pokemon, s32 moveIndex, bool8 hasPPChecker);
#endif

View File

@ -208,6 +208,8 @@ SECTIONS {
asm/code_80521D0.o(.text);
src/charge_move.o(.text);
asm/code_8057144.o(.text);
src/move_util.o(.text);
asm/code_80573CC.o(.text);
src/code_8057824.o(.text);
asm/code_8057824.o(.text);
src/status_checker.o(.text);

View File

@ -23,6 +23,7 @@
#include "dungeon_random_1.h"
#include "dungeon_util.h"
#include "dungeon_visibility.h"
#include "move_util.h"
#include "moves.h"
#include "position_util.h"
#include "status_checker.h"
@ -42,7 +43,6 @@ extern s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS];
extern u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS];
extern struct DungeonEntity *gPotentialTargets[NUM_DIRECTIONS];
extern bool8 IsMoveUsable_1(struct DungeonEntity*, s32, bool8);
extern bool8 TargetRegularAttack(struct DungeonEntity*, u32*, bool8);
void DecideAttack(struct DungeonEntity *pokemon)
@ -182,7 +182,7 @@ void DecideAttack(struct DungeonEntity *pokemon)
move = &pokemonData->moves[i];
if (move->moveFlags & MOVE_FLAG_EXISTS &&
willNotUnlinkMove[i] &&
IsMoveUsable_1(pokemon, i, hasPPChecker) &&
IsMoveIndexUsable(pokemon, i, hasPPChecker) &&
move->moveFlags & MOVE_FLAG_ENABLED)
{
moveTargetResults[i].moveUsable = TRUE;

47
src/move_util.c Normal file
View File

@ -0,0 +1,47 @@
#include "global.h"
#include "move_util.h"
extern bool8 IsMoveUsable(struct DungeonEntity *pokemon, struct PokemonMove *move, bool8 hasPPChecker);
bool8 IsMoveIndexUsable(struct DungeonEntity *pokemon, s32 moveIndex, bool8 hasPPChecker)
{
struct DungeonEntityData *pokemonData = pokemon->entityData;
struct PokemonMove *move = &pokemonData->moves[moveIndex];
s32 i;
if (!(move->moveFlags & MOVE_FLAG_EXISTS))
{
return FALSE;
}
if (move->moveFlags & MOVE_FLAG_LINKED)
{
return FALSE;
}
if (move->moveFlags & MOVE_FLAG_DISABLED ||
move->moveFlags2 & MOVE_FLAG_SEALED)
{
return FALSE;
}
goto initMoveIndex;
returnTrue:
return TRUE;
initMoveIndex:
i = 0;
goto checkMoveUsable;
incMoveIndex:
i++;
checkMoveUsable:
if (i >= MAX_MON_MOVES)
{
return FALSE;
}
if (IsMoveUsable(pokemon, move, hasPPChecker))
{
goto returnTrue;
}
move++;
if ((u32) move >= (u32) &pokemonData->struggleMoveFlags || !(move->moveFlags & MOVE_FLAG_LINKED))
{
return FALSE;
}
goto incMoveIndex;
}