pmd-red/asm/code_807001C.s
mid-kid 99a038284b Translate all .include to #include
This decision was made to reduce the complexity of using .include whilst
juggling with tools/scaninc and tools/preproc:
- tools/scaninc doesn't apply the proper search rules for .include (it
  assumes #include behavior). In particular, it doesn't consider paths
  starting from $PWD, and doesn't scan the included files as a result.
- .include had to be processed before #include by preproc in many cases,
  as code was being included that had to be preprocessed by CPP (think
  of #define). This contradicts standard GCC behavior.

To make include paths consistent across the asm/ data/ and src/
directories, the following files were moved:
- constants/ → include/asm/constants/
- asm/macros/ → include/asm/macros/
- asm/macros.inc → include/asm/macros.inc
- include/macros/m4a.inc → include/asm/macros/m4a.inc

As part of the necessary changes for this to work, the scaninc method in
the makefile was improved to generate .d files that don't choke when
files are missing.
2021-12-20 16:29:12 +01:00

1562 lines
23 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start HasStatusAffectingActions
HasStatusAffectingActions:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, [r5, 0x70]
ldr r0, _08070050
adds r1, r5, 0
movs r2, 0
bl SetMessageArgument
adds r0, r4, 0
adds r0, 0x44
movs r1, 0x1
bl SetAction
adds r0, r4, 0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x3
bne _08070042
b _0807019C
_08070042:
cmp r0, 0x3
bgt _08070054
cmp r0, 0x1
bne _0807004C
b _0807019C
_0807004C:
b _0807005A
.align 2, 0
_08070050: .4byte gAvailablePokemonNames
_08070054:
cmp r0, 0x5
bne _0807005A
b _0807019C
_0807005A:
adds r0, r4, 0
adds r0, 0xB0
ldrb r0, [r0]
cmp r0, 0x3
beq _0807008C
cmp r0, 0x3
bgt _0807006E
cmp r0, 0x1
beq _0807007A
b _080700AC
_0807006E:
cmp r0, 0x4
beq _0807009C
cmp r0, 0x6
bne _08070078
b _0807019C
_08070078:
b _080700AC
_0807007A:
ldr r0, _08070088
ldr r1, [r0]
adds r0, r5, 0
bl SendMessage
b _0807019C
.align 2, 0
_08070088: .4byte gFrozenMessage
_0807008C:
ldr r0, _08070098
ldr r1, [r0]
adds r0, r5, 0
bl SendMessage
b _0807019C
.align 2, 0
_08070098: .4byte gWrappedAroundMessage
_0807009C:
ldr r0, _080700A8
ldr r1, [r0]
adds r0, r5, 0
bl SendMessage
b _0807019C
.align 2, 0
_080700A8: .4byte gWrappedByMessage
_080700AC:
adds r0, r4, 0
adds r0, 0xBC
ldrb r0, [r0]
cmp r0, 0x3
beq _080700D4
cmp r0, 0x7
beq _080700E4
adds r0, r4, 0
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0x1
bne _080700F4
ldr r0, _080700D0
ldr r1, [r0]
adds r0, r5, 0
bl SendMessage
b _0807019C
.align 2, 0
_080700D0: .4byte gBideMessage
_080700D4:
ldr r0, _080700E0
ldr r1, [r0]
adds r0, r5, 0
bl SendMessage
b _0807019C
.align 2, 0
_080700E0: .4byte gPausedMessage
_080700E4:
ldr r0, _080700F0
ldr r1, [r0]
adds r0, r5, 0
bl SendMessage
b _0807019C
.align 2, 0
_080700F0: .4byte gInfatuatedMessage
_080700F4:
adds r0, r4, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x2
bne _0807012E
adds r0, r4, 0
adds r0, 0x44
movs r2, 0x2
ldrsh r1, [r4, r2]
bl SetWalkAction
movs r0, 0x8
bl DungeonRandomCapped
adds r1, r4, 0
adds r1, 0x46
strb r0, [r1]
ldrh r1, [r5, 0x4]
movs r2, 0xB6
lsls r2, 1
adds r0, r4, r2
strh r1, [r0]
ldrh r0, [r5, 0x6]
subs r0, 0x1
movs r1, 0xB7
lsls r1, 1
adds r2, r4, r1
strh r0, [r2]
b _0807019C
_0807012E:
ldrb r0, [r4, 0x8]
cmp r0, 0x1
beq _0807019C
adds r0, r4, 0
adds r0, 0xE8
ldrb r0, [r0]
cmp r0, 0x1
bne _0807017C
adds r6, r4, 0
adds r6, 0x46
ldrb r1, [r6]
adds r0, r5, 0
bl CannotMoveForward
lsls r0, 24
cmp r0, 0
bne _08070166
movs r0, 0x2
bl DungeonRandomCapped
cmp r0, 0
beq _08070174
movs r0, 0x8
bl DungeonRandomCapped
movs r1, 0x7
ands r1, r0
strb r1, [r6]
_08070166:
adds r0, r4, 0
adds r0, 0x44
movs r2, 0x2
ldrsh r1, [r4, r2]
bl SetWalkAction
b _0807019C
_08070174:
adds r0, r5, 0
bl DecideAttack
b _0807019C
_0807017C:
cmp r0, 0x2
beq _08070184
movs r0, 0
b _0807019E
_08070184:
adds r0, r4, 0
adds r0, 0x44
movs r2, 0x2
ldrsh r1, [r4, r2]
bl SetWalkAction
movs r0, 0x8
bl DungeonRandomCapped
adds r1, r4, 0
adds r1, 0x46
strb r0, [r1]
_0807019C:
movs r0, 0x1
_0807019E:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end HasStatusAffectingActions
thumb_func_start sub_80701A4
sub_80701A4:
push {r4-r7,lr}
adds r7, r0, 0
ldr r6, [r7, 0x70]
movs r4, 0
ldr r0, _080701D4
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
adds r0, r6, 0
adds r0, 0x44
movs r1, 0x1
bl SetAction
adds r0, r6, 0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x3
beq _080701DC
cmp r0, 0x3
bgt _080701D8
cmp r0, 0x1
beq _080701DC
b _080701E4
.align 2, 0
_080701D4: .4byte gAvailablePokemonNames
_080701D8:
cmp r0, 0x5
bne _080701E4
_080701DC:
ldr r0, _080701E0
b _08070278
.align 2, 0
_080701E0: .4byte gUnknown_80F95EC
_080701E4:
adds r0, r6, 0
adds r0, 0xB0
ldrb r0, [r0]
cmp r0, 0x3
beq _0807020C
cmp r0, 0x3
bgt _080701F8
cmp r0, 0x1
beq _08070202
b _0807021C
_080701F8:
cmp r0, 0x4
beq _08070214
cmp r0, 0x6
beq _08070280
b _0807021C
_08070202:
ldr r0, _08070208
b _08070278
.align 2, 0
_08070208: .4byte gFrozenMessage
_0807020C:
ldr r0, _08070210
b _08070278
.align 2, 0
_08070210: .4byte gWrappedAroundMessage
_08070214:
ldr r0, _08070218
b _08070278
.align 2, 0
_08070218: .4byte gWrappedByMessage
_0807021C:
adds r0, r6, 0
adds r0, 0xBC
ldrb r0, [r0]
cmp r0, 0x8
bhi _0807026C
lsls r0, 2
ldr r1, _08070230
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08070230: .4byte _08070234
.align 2, 0
_08070234:
.4byte _0807026C
.4byte _0807026C
.4byte _08070258
.4byte _0807025C
.4byte _0807026C
.4byte _0807026C
.4byte _0807026C
.4byte _08070264
.4byte _0807026C
_08070258:
movs r4, 0x1
b _0807026C
_0807025C:
ldr r0, _08070260
b _08070278
.align 2, 0
_08070260: .4byte gPausedMessage
_08070264:
ldr r0, _08070268
b _08070278
.align 2, 0
_08070268: .4byte gInfatuatedMessage
_0807026C:
adds r0, r6, 0
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0x1
bne _08070288
ldr r0, _08070284
_08070278:
ldr r1, [r0]
adds r0, r7, 0
bl SendMessage
_08070280:
movs r0, 0x1
b _08070322
.align 2, 0
_08070284: .4byte gBideMessage
_08070288:
cmp r0, 0
beq _08070320
cmp r0, 0xB
beq _08070320
cmp r0, 0xC
beq _08070320
cmp r4, 0
beq _080702A8
ldr r0, _080702A4
ldr r1, [r0]
adds r0, r7, 0
bl SendMessage
b _0807031A
.align 2, 0
_080702A4: .4byte gPtrMoveInterruptedMessage
_080702A8:
movs r5, 0
movs r0, 0x8C
lsls r0, 1
adds r4, r6, r0
_080702B0:
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08070312
adds r0, r7, 0
adds r1, r4, 0
bl sub_80570AC
lsls r0, 24
cmp r0, 0
beq _08070312
adds r0, r6, 0
adds r0, 0xC2
ldrb r0, [r0]
cmp r0, r5
bne _08070312
adds r0, r6, 0
adds r0, 0x44
movs r1, 0x14
bl SetAction
adds r3, r5, 0
adds r7, r6, 0
adds r7, 0x50
cmp r5, 0
ble _0807030E
ldrb r1, [r4]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0807030E
movs r4, 0x2
lsls r0, r5, 3
movs r1, 0x8C
lsls r1, 1
adds r0, r1
adds r2, r0, r6
_080702FC:
subs r2, 0x8
subs r3, 0x1
cmp r3, 0
ble _0807030E
ldrb r1, [r2]
adds r0, r4, 0
ands r0, r1
cmp r0, 0
bne _080702FC
_0807030E:
strb r3, [r7]
b _08070280
_08070312:
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x3
ble _080702B0
_0807031A:
adds r0, r7, 0
bl sub_8079764
_08070320:
movs r0, 0
_08070322:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80701A4
thumb_func_start GetCrossableTerrain
GetCrossableTerrain:
push {lr}
lsls r0, 16
asrs r0, 16
bl GetWalkableTiles
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x3
bhi _0807033E
adds r0, r1, 0
b _08070344
_0807033E:
ldr r0, _08070348
adds r0, r1, r0
ldrb r0, [r0]
_08070344:
pop {r1}
bx r1
.align 2, 0
_08070348: .4byte gUnknown_202F314
thumb_func_end GetCrossableTerrain
thumb_func_start sub_807034C
sub_807034C:
push {r4,lr}
adds r4, r1, 0
lsls r0, 16
asrs r2, r0, 16
ldr r0, [r4, 0x10]
cmp r0, 0
bne _08070398
ldrh r1, [r4]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08070398
adds r0, r2, 0
bl GetCrossableTerrain
lsls r0, 24
lsrs r2, r0, 24
ldrh r0, [r4]
movs r1, 0x3
ands r1, r0
cmp r2, 0x1
beq _08070388
cmp r2, 0x1
bgt _08070382
cmp r2, 0
beq _0807038C
b _08070390
_08070382:
cmp r2, 0x2
beq _08070394
b _08070390
_08070388:
cmp r1, 0x2
beq _08070390
_0807038C:
cmp r1, 0x1
bne _08070398
_08070390:
movs r0, 0
b _0807039A
_08070394:
cmp r1, 0
bne _08070390
_08070398:
movs r0, 0x1
_0807039A:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_807034C
thumb_func_start sub_80703A0
sub_80703A0:
push {r4-r7,lr}
adds r6, r0, 0
adds r4, r1, 0
ldr r7, [r6, 0x70]
movs r1, 0
ldrsh r0, [r4, r1]
movs r2, 0x2
ldrsh r1, [r4, r2]
bl GetMapTileAtPosition
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
blt _08070456
movs r2, 0x2
ldrsh r1, [r4, r2]
cmp r1, 0
blt _08070456
cmp r0, 0x37
bgt _08070456
cmp r1, 0x1F
bgt _08070456
ldr r0, [r5, 0x10]
cmp r0, 0
bne _08070456
ldrh r1, [r5]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08070456
bl IsFixedDungeon
lsls r0, 24
cmp r0, 0
bne _08070400
adds r0, r7, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x3
beq _0807044E
adds r0, r6, 0
movs r1, 0x9
bl HasItem
lsls r0, 24
cmp r0, 0
bne _0807044E
_08070400:
movs r1, 0x2
ldrsh r0, [r7, r1]
bl GetCrossableTerrain
lsls r0, 24
lsrs r4, r0, 24
ldrh r0, [r5]
movs r5, 0x3
ands r5, r0
adds r0, r6, 0
movs r1, 0xC
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _08070422
movs r4, 0x2
_08070422:
adds r0, r6, 0
movs r1, 0xD
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _08070432
movs r4, 0x3
_08070432:
cmp r4, 0x1
beq _08070446
cmp r4, 0x1
bgt _08070440
cmp r4, 0
beq _0807044A
b _0807044E
_08070440:
cmp r4, 0x2
beq _08070452
b _0807044E
_08070446:
cmp r5, 0x2
beq _0807044E
_0807044A:
cmp r5, 0x1
bne _08070456
_0807044E:
movs r0, 0
b _08070458
_08070452:
cmp r5, 0
bne _0807044E
_08070456:
movs r0, 0x1
_08070458:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80703A0
thumb_func_start CanCrossWalls
CanCrossWalls:
push {r4,lr}
adds r1, r0, 0
ldr r0, [r1, 0x70]
adds r4, r0, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x3
beq _08070492
adds r0, r1, 0
movs r1, 0x9
bl HasItem
lsls r0, 24
cmp r0, 0
bne _08070492
movs r1, 0x2
ldrsh r0, [r4, r1]
bl GetCrossableTerrain
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _08070492
movs r0, 0
b _08070494
_08070492:
movs r0, 0x1
_08070494:
pop {r4}
pop {r1}
bx r1
thumb_func_end CanCrossWalls
thumb_func_start sub_807049C
sub_807049C:
push {r4-r7,lr}
adds r6, r0, 0
adds r4, r1, 0
ldr r7, [r6, 0x70]
movs r1, 0
ldrsh r0, [r4, r1]
movs r2, 0x2
ldrsh r1, [r4, r2]
bl GetMapTileAtPosition
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
blt _0807055A
movs r2, 0x2
ldrsh r1, [r4, r2]
cmp r1, 0
blt _0807055A
cmp r0, 0x37
bgt _0807055A
cmp r1, 0x1F
bgt _0807055A
ldrh r1, [r5]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _0807055A
ldr r0, [r5, 0x10]
cmp r0, 0
beq _080704E2
bl GetEntityType
cmp r0, 0x1
bne _0807055A
_080704E2:
bl IsFixedDungeon
lsls r0, 24
cmp r0, 0
bne _08070504
adds r0, r7, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x3
beq _08070552
adds r0, r6, 0
movs r1, 0x9
bl HasItem
lsls r0, 24
cmp r0, 0
bne _08070552
_08070504:
movs r1, 0x2
ldrsh r0, [r7, r1]
bl GetCrossableTerrain
lsls r0, 24
lsrs r4, r0, 24
ldrh r0, [r5]
movs r5, 0x3
ands r5, r0
adds r0, r6, 0
movs r1, 0xC
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _08070526
movs r4, 0x2
_08070526:
adds r0, r6, 0
movs r1, 0xD
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _08070536
movs r4, 0x3
_08070536:
cmp r4, 0x1
beq _0807054A
cmp r4, 0x1
bgt _08070544
cmp r4, 0
beq _0807054E
b _08070552
_08070544:
cmp r4, 0x2
beq _08070556
b _08070552
_0807054A:
cmp r5, 0x2
beq _08070552
_0807054E:
cmp r5, 0x1
bne _0807055A
_08070552:
movs r0, 0
b _0807055C
_08070556:
cmp r5, 0
bne _08070552
_0807055A:
movs r0, 0x1
_0807055C:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_807049C
thumb_func_start sub_8070564
sub_8070564:
push {r4-r6,lr}
adds r4, r1, 0
ldr r6, [r0, 0x70]
movs r1, 0
ldrsh r0, [r4, r1]
movs r2, 0x2
ldrsh r1, [r4, r2]
bl GetMapTileAtPosition
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
blt _080705E6
movs r2, 0x2
ldrsh r1, [r4, r2]
cmp r1, 0
blt _080705E6
cmp r0, 0x37
bgt _080705E6
cmp r1, 0x1F
bgt _080705E6
ldrh r1, [r5]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080705E6
ldr r0, [r5, 0x10]
cmp r0, 0
beq _080705A8
bl GetEntityType
cmp r0, 0x1
bne _080705E6
_080705A8:
movs r1, 0x2
ldrsh r0, [r6, r1]
bl GetCrossableTerrain
lsls r0, 24
lsrs r2, r0, 24
adds r3, r2, 0
ldrh r0, [r5]
movs r1, 0x3
ands r1, r0
adds r0, r1, 0
cmp r2, 0x1
beq _080705DE
cmp r2, 0x1
bgt _080705CC
cmp r2, 0
beq _080705D8
b _080705D4
_080705CC:
cmp r3, 0x3
bgt _080705D4
cmp r1, 0
beq _080705E6
_080705D4:
movs r0, 0
b _080705E8
_080705D8:
cmp r1, 0x1
bne _080705E6
b _080705D4
_080705DE:
cmp r1, 0x2
beq _080705D4
cmp r0, 0x1
beq _080705D4
_080705E6:
movs r0, 0x1
_080705E8:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8070564
thumb_func_start sub_80705F0
sub_80705F0:
push {r4-r7,lr}
adds r6, r0, 0
adds r4, r1, 0
ldr r7, [r6, 0x70]
movs r1, 0
ldrsh r0, [r4, r1]
movs r2, 0x2
ldrsh r1, [r4, r2]
bl GetMapTileAtPosition
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
blt _0807069A
movs r2, 0x2
ldrsh r1, [r4, r2]
cmp r1, 0
blt _0807069A
cmp r0, 0x37
bgt _0807069A
cmp r1, 0x1F
bgt _0807069A
ldrh r1, [r5]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _0807069A
ldr r0, [r5, 0x10]
cmp r0, 0
beq _08070636
bl GetEntityType
cmp r0, 0x1
bne _0807069A
_08070636:
bl IsFixedDungeon
lsls r0, 24
cmp r0, 0
bne _08070658
adds r0, r7, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x3
beq _08070696
adds r0, r6, 0
movs r1, 0x9
bl HasItem
lsls r0, 24
cmp r0, 0
bne _08070696
_08070658:
movs r1, 0x2
ldrsh r0, [r7, r1]
bl GetCrossableTerrain
lsls r0, 24
lsrs r4, r0, 24
ldrh r0, [r5]
movs r5, 0x3
ands r5, r0
adds r0, r6, 0
movs r1, 0xC
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _0807067A
movs r4, 0x2
_0807067A:
adds r0, r6, 0
movs r1, 0xD
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _0807068A
movs r4, 0x3
_0807068A:
cmp r4, 0
blt _08070696
cmp r4, 0x2
bgt _08070696
cmp r5, 0
beq _0807069A
_08070696:
movs r0, 0
b _0807069C
_0807069A:
movs r0, 0x1
_0807069C:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80705F0
thumb_func_start sub_80706A4
sub_80706A4:
push {r4-r7,lr}
adds r7, r0, 0
adds r4, r1, 0
ldr r6, [r7, 0x70]
movs r1, 0
ldrsh r0, [r4, r1]
movs r2, 0x2
ldrsh r1, [r4, r2]
bl GetMapTileAtPosition
adds r5, r0, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
blt _0807076A
movs r2, 0x2
ldrsh r1, [r4, r2]
cmp r1, 0
blt _0807076A
cmp r0, 0x37
bgt _0807076A
cmp r1, 0x1F
bgt _0807076A
ldrh r1, [r5]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _0807076A
ldr r0, [r5, 0x10]
cmp r0, 0
beq _080706F2
bl GetEntityType
cmp r0, 0x1
bne _0807076A
ldr r0, [r5, 0x10]
ldr r0, [r0, 0x70]
cmp r0, r6
bne _0807076A
_080706F2:
bl IsFixedDungeon
lsls r0, 24
cmp r0, 0
bne _08070714
adds r0, r6, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x3
beq _08070762
adds r0, r7, 0
movs r1, 0x9
bl HasItem
lsls r0, 24
cmp r0, 0
bne _08070762
_08070714:
movs r1, 0x2
ldrsh r0, [r6, r1]
bl GetCrossableTerrain
lsls r0, 24
lsrs r4, r0, 24
ldrh r0, [r5]
movs r5, 0x3
ands r5, r0
adds r0, r7, 0
movs r1, 0xC
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _08070736
movs r4, 0x2
_08070736:
adds r0, r7, 0
movs r1, 0xD
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _08070746
movs r4, 0x3
_08070746:
cmp r4, 0x1
beq _0807075A
cmp r4, 0x1
bgt _08070754
cmp r4, 0
beq _0807075E
b _08070762
_08070754:
cmp r4, 0x2
beq _08070766
b _08070762
_0807075A:
cmp r5, 0x2
beq _08070762
_0807075E:
cmp r5, 0x1
bne _0807076A
_08070762:
movs r0, 0
b _0807076C
_08070766:
cmp r5, 0
bne _08070762
_0807076A:
movs r0, 0x1
_0807076C:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80706A4
thumb_func_start GetMovementSpeed
GetMovementSpeed:
push {r4-r6,lr}
adds r6, r0, 0
ldr r5, [r6, 0x70]
movs r4, 0
movs r0, 0x84
lsls r0, 1
adds r1, r5, r0
movs r2, 0x4
_08070784:
ldrb r0, [r1, 0x5]
cmp r0, 0
beq _0807078C
subs r4, 0x1
_0807078C:
ldrb r0, [r1]
cmp r0, 0
beq _08070794
adds r4, 0x1
_08070794:
adds r1, 0x1
subs r2, 0x1
cmp r2, 0
bge _08070784
adds r0, r5, 0
adds r0, 0xAC
ldrb r0, [r0]
cmp r0, 0x4
bne _080707A8
subs r4, 0x1
_080707A8:
movs r1, 0x2
ldrsh r0, [r5, r1]
bl GetMoveSpeed
adds r4, r0
adds r0, r6, 0
movs r1, 0x6
bl HasType
lsls r0, 24
cmp r0, 0
beq _080707D0
adds r0, r6, 0
bl GetWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x7
bne _080707D0
adds r4, 0x1
_080707D0:
movs r0, 0x4
ldrsh r1, [r5, r0]
ldr r0, _0807081C
cmp r1, r0
bne _080707DC
adds r4, 0x1
_080707DC:
movs r0, 0x2
ldrsh r1, [r5, r0]
movs r0, 0xBE
lsls r0, 1
cmp r1, r0
bne _080707FE
ldrb r0, [r5, 0x6]
cmp r0, 0
beq _080707FE
ldr r0, _08070820
ldr r0, [r0]
ldr r1, _08070824
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _080707FE
adds r4, 0x1
_080707FE:
cmp r4, 0
bge _08070804
movs r4, 0
_08070804:
cmp r4, 0x4
ble _0807080A
movs r4, 0x4
_0807080A:
movs r1, 0x82
lsls r1, 1
adds r0, r5, r1
str r4, [r0]
adds r0, r4, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_0807081C: .4byte 0x000001a3
_08070820: .4byte gDungeonGlobalData
_08070824: .4byte 0x0000066e
thumb_func_end GetMovementSpeed
thumb_func_start sub_8070828
sub_8070828:
push {r4-r6,lr}
adds r4, r0, 0
lsls r1, 24
lsrs r6, r1, 24
movs r5, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08070840
movs r0, 0
b _080708AE
_08070840:
adds r0, r4, 0
movs r1, 0x1B
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0807085E
adds r0, r4, 0
bl GetWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bne _0807085E
movs r5, 0x1
_0807085E:
adds r0, r4, 0
movs r1, 0x4A
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0807087C
adds r0, r4, 0
bl GetWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0807087C
movs r5, 0x1
_0807087C:
cmp r6, 0
beq _080708A0
ldr r0, [r4, 0x70]
movs r1, 0x40
adds r2, r5, 0
bl SetVisualFlags
lsls r0, 24
cmp r0, 0
beq _080708A0
adds r0, r4, 0
bl sub_80429B4
ldr r0, _080708A8
ldr r1, [r0]
adds r0, r4, 0
bl SendMessage
_080708A0:
cmp r5, 0
bne _080708AC
movs r0, 0x1
b _080708AE
.align 2, 0
_080708A8: .4byte gUnknown_80FEE80
_080708AC:
movs r0, 0x2
_080708AE:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8070828
thumb_func_start SetMessageArgument_2
SetMessageArgument_2:
push {r4,r5,lr}
adds r3, r0, 0
adds r4, r2, 0
ldr r0, _080708E8
ldr r2, [r0]
ldr r5, _080708EC
adds r0, r2, r5
ldrb r0, [r0]
cmp r0, 0
bne _080708DC
adds r5, 0x6
adds r0, r2, r5
ldrb r0, [r0]
cmp r0, 0
bne _080708DC
adds r0, r1, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x1
bne _080708F4
_080708DC:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _080708F4
ldr r0, _080708F0
b _08070900
.align 2, 0
_080708E8: .4byte gDungeonGlobalData
_080708EC: .4byte 0x0001820a
_080708F0: .4byte gUnknown_80F8988
_080708F4:
adds r0, r1, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x2
bne _08070910
ldr r0, _0807090C
_08070900:
ldr r1, [r0]
adds r0, r3, 0
bl strcpy
b _0807095A
.align 2, 0
_0807090C: .4byte gUnknown_80F8968
_08070910:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _08070942
adds r0, r1, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _0807092A
adds r0, r1, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _08070936
_0807092A:
movs r0, 0x4
ldrsh r1, [r1, r0]
adds r0, r3, 0
bl CopyYellowSpeciesNametoBuffer
b _0807095A
_08070936:
movs r5, 0x4
ldrsh r1, [r1, r5]
adds r0, r3, 0
bl CopyCyanSpeciesNametoBuffer
b _0807095A
_08070942:
ldr r2, _08070960
ldrb r1, [r1, 0xA]
movs r0, 0x64
muls r0, r1
ldr r1, _08070964
adds r0, r1
ldr r1, [r2]
adds r1, r0
adds r0, r3, 0
adds r2, r4, 0
bl sub_808D9DC
_0807095A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08070960: .4byte gRecruitedPokemonRef
_08070964: .4byte 0x00008df8
thumb_func_end SetMessageArgument_2
thumb_func_start sub_8070968
sub_8070968:
push {r4,lr}
adds r4, r0, 0
adds r3, r2, 0
adds r0, r1, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x2
bne _08070990
ldr r1, _08070988
adds r2, 0x30
ldr r0, _0807098C
ldr r3, [r0]
adds r0, r4, 0
bl ExpandPlaceholdersBuffer
b _080709BA
.align 2, 0
_08070988: .4byte gUnknown_8106FA4
_0807098C: .4byte gUnknown_80F8974
_08070990:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _080709A2
movs r0, 0x4
ldrsh r1, [r1, r0]
adds r0, r4, 0
bl CopyCyanSpeciesNametoBuffer
b _080709BA
_080709A2:
ldr r2, _080709C0
ldrb r1, [r1, 0xA]
movs r0, 0x64
muls r0, r1
ldr r1, _080709C4
adds r0, r1
ldr r1, [r2]
adds r1, r0
adds r0, r4, 0
adds r2, r3, 0
bl sub_808D9DC
_080709BA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080709C0: .4byte gRecruitedPokemonRef
_080709C4: .4byte 0x00008df8
thumb_func_end sub_8070968
thumb_func_start sub_80709C8
sub_80709C8:
push {r4,lr}
adds r3, r0, 0
ldr r0, _080709F8
ldr r2, [r0]
ldr r4, _080709FC
adds r0, r2, r4
ldrb r0, [r0]
cmp r0, 0
bne _080709EE
adds r4, 0x6
adds r0, r2, r4
ldrb r0, [r0]
cmp r0, 0
bne _080709EE
adds r0, r1, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x1
bne _08070A04
_080709EE:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _08070A04
ldr r0, _08070A00
b _08070A10
.align 2, 0
_080709F8: .4byte gDungeonGlobalData
_080709FC: .4byte 0x0001820a
_08070A00: .4byte gUnknown_80F8994
_08070A04:
adds r0, r1, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x2
bne _08070A20
ldr r0, _08070A1C
_08070A10:
ldr r1, [r0]
adds r0, r3, 0
bl strcpy
b _08070A48
.align 2, 0
_08070A1C: .4byte gUnknown_80F8974
_08070A20:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _08070A32
movs r0, 0x4
ldrsh r1, [r1, r0]
adds r0, r3, 0
bl CopySpeciesNametoBuffer
b _08070A48
_08070A32:
ldr r2, _08070A50
ldrb r1, [r1, 0xA]
movs r0, 0x64
muls r0, r1
ldr r1, _08070A54
adds r0, r1
ldr r1, [r2]
adds r1, r0
adds r0, r3, 0
bl sub_808DA0C
_08070A48:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08070A50: .4byte gRecruitedPokemonRef
_08070A54: .4byte 0x00008df8
thumb_func_end sub_80709C8
thumb_func_start HasNegativeStatus
HasNegativeStatus:
push {r4,lr}
ldr r0, [r0, 0x70]
mov r12, r0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x1
beq _08070ADE
cmp r0, 0x3
beq _08070ADE
cmp r0, 0x4
beq _08070ADE
mov r0, r12
adds r0, 0xAC
ldrb r0, [r0]
cmp r0, 0
bne _08070ADE
mov r0, r12
adds r0, 0xB0
ldrb r0, [r0]
cmp r0, 0x5
beq _08070A86
cmp r0, 0
bne _08070ADE
_08070A86:
mov r0, r12
adds r0, 0xBC
ldrb r0, [r0]
cmp r0, 0
bne _08070ADE
mov r0, r12
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x1
beq _08070ADE
cmp r0, 0x2
beq _08070ADE
mov r0, r12
adds r0, 0xD0
ldrb r0, [r0]
cmp r0, 0x1
beq _08070ADE
mov r0, r12
adds r0, 0xDC
ldrb r0, [r0]
cmp r0, 0x2
beq _08070ADE
mov r0, r12
adds r0, 0xE8
ldrb r0, [r0]
cmp r0, 0x1
beq _08070ADE
cmp r0, 0x2
beq _08070ADE
mov r0, r12
adds r0, 0xEC
ldrb r0, [r0]
cmp r0, 0x1
beq _08070ADE
mov r0, r12
adds r0, 0xF5
ldrb r0, [r0]
cmp r0, 0
bne _08070ADE
mov r0, r12
adds r0, 0xFD
ldrb r0, [r0]
cmp r0, 0
beq _08070AE2
_08070ADE:
movs r0, 0x1
b _08070B1E
_08070AE2:
movs r3, 0
movs r4, 0x1
movs r2, 0x8C
lsls r2, 1
add r2, r12
_08070AEC:
ldrb r1, [r2]
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _08070B00
ldrb r1, [r2, 0x1]
adds r0, r4, 0
ands r0, r1
cmp r0, 0
bne _08070ADE
_08070B00:
adds r2, 0x8
adds r3, 0x1
cmp r3, 0x3
ble _08070AEC
movs r3, 0
ldr r1, _08070B24
add r1, r12
_08070B0E:
adds r0, r1, r3
ldrb r0, [r0]
cmp r0, 0
bne _08070ADE
adds r3, 0x1
cmp r3, 0x4
ble _08070B0E
movs r0, 0
_08070B1E:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08070B24: .4byte 0x0000010d
thumb_func_end HasNegativeStatus
thumb_func_start IsSleeping
IsSleeping:
push {lr}
ldr r0, [r0, 0x70]
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x1
beq _08070B40
cmp r0, 0x5
beq _08070B40
cmp r0, 0x3
beq _08070B40
movs r0, 0
b _08070B42
_08070B40:
movs r0, 0x1
_08070B42:
pop {r1}
bx r1
thumb_func_end IsSleeping
thumb_func_start HasQuarterHPOrLess
HasQuarterHPOrLess:
push {lr}
ldr r0, [r0, 0x70]
adds r1, r0, 0
movs r2, 0x10
ldrsh r0, [r1, r2]
cmp r0, 0
bge _08070B58
adds r0, 0x3
_08070B58:
movs r2, 0xE
ldrsh r1, [r1, r2]
asrs r0, 2
cmp r1, r0
ble _08070B66
movs r0, 0
b _08070B68
_08070B66:
movs r0, 0x1
_08070B68:
pop {r1}
bx r1
thumb_func_end HasQuarterHPOrLess
.align 2, 0