mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-04 16:34:58 -05:00
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.
1562 lines
23 KiB
ArmAsm
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
|