mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 13:47:12 -05:00
9667 lines
165 KiB
ArmAsm
9667 lines
165 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start FieldEffectStart
|
|
FieldEffectStart: @ 8083444
|
|
push {r4,r5,lr}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl FieldEffectActiveListAdd
|
|
ldr r0, _08083484 @ =gUnknown_81D96AC
|
|
lsls r4, 2
|
|
adds r4, r0
|
|
ldr r0, [r4]
|
|
str r0, [sp]
|
|
add r4, sp, 0x4
|
|
ldr r5, _08083488 @ =gUnknown_83CBE30
|
|
_08083462:
|
|
ldr r0, [sp]
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r2, [r0]
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl _call_via_r2
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08083462
|
|
ldr r0, [sp, 0x4]
|
|
add sp, 0x8
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08083484: .4byte gUnknown_81D96AC
|
|
_08083488: .4byte gUnknown_83CBE30
|
|
thumb_func_end FieldEffectStart
|
|
|
|
thumb_func_start FieldEffectCmd_loadtiles
|
|
FieldEffectCmd_loadtiles: @ 808348C
|
|
push {lr}
|
|
ldr r1, [r0]
|
|
adds r1, 0x1
|
|
str r1, [r0]
|
|
bl FieldEffectScript_LoadTiles
|
|
movs r0, 0x1
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FieldEffectCmd_loadtiles
|
|
|
|
thumb_func_start FieldEffectCmd_loadfadedpal
|
|
FieldEffectCmd_loadfadedpal: @ 80834A0
|
|
push {lr}
|
|
ldr r1, [r0]
|
|
adds r1, 0x1
|
|
str r1, [r0]
|
|
bl sub_8083614
|
|
movs r0, 0x1
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FieldEffectCmd_loadfadedpal
|
|
|
|
thumb_func_start FieldEffectCmd_loadpal
|
|
FieldEffectCmd_loadpal: @ 80834B4
|
|
push {lr}
|
|
ldr r1, [r0]
|
|
adds r1, 0x1
|
|
str r1, [r0]
|
|
bl sub_808365C
|
|
movs r0, 0x1
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FieldEffectCmd_loadpal
|
|
|
|
thumb_func_start FieldEffectCmd_callnative
|
|
FieldEffectCmd_callnative: @ 80834C8
|
|
push {lr}
|
|
ldr r2, [r0]
|
|
adds r2, 0x1
|
|
str r2, [r0]
|
|
bl FieldEffectScript_CallNative
|
|
movs r0, 0x1
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FieldEffectCmd_callnative
|
|
|
|
thumb_func_start sub_80834DC
|
|
sub_80834DC: @ 80834DC
|
|
movs r0, 0
|
|
bx lr
|
|
thumb_func_end sub_80834DC
|
|
|
|
thumb_func_start FieldEffectCmd_loadgfx_callnative
|
|
FieldEffectCmd_loadgfx_callnative: @ 80834E0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
ldr r0, [r4]
|
|
adds r0, 0x1
|
|
str r0, [r4]
|
|
adds r0, r4, 0
|
|
bl FieldEffectScript_LoadTiles
|
|
adds r0, r4, 0
|
|
bl sub_8083614
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl FieldEffectScript_CallNative
|
|
movs r0, 0x1
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FieldEffectCmd_loadgfx_callnative
|
|
|
|
thumb_func_start FieldEffectCmd_loadtiles_callnative
|
|
FieldEffectCmd_loadtiles_callnative: @ 8083508
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
ldr r0, [r4]
|
|
adds r0, 0x1
|
|
str r0, [r4]
|
|
adds r0, r4, 0
|
|
bl FieldEffectScript_LoadTiles
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl FieldEffectScript_CallNative
|
|
movs r0, 0x1
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FieldEffectCmd_loadtiles_callnative
|
|
|
|
thumb_func_start FieldEffectCmd_loadfadedpal_callnative
|
|
FieldEffectCmd_loadfadedpal_callnative: @ 808352C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
ldr r0, [r4]
|
|
adds r0, 0x1
|
|
str r0, [r4]
|
|
adds r0, r4, 0
|
|
bl sub_8083614
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl FieldEffectScript_CallNative
|
|
movs r0, 0x1
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FieldEffectCmd_loadfadedpal_callnative
|
|
|
|
thumb_func_start FieldEffectScript_ReadWord
|
|
FieldEffectScript_ReadWord: @ 8083550
|
|
ldr r2, [r0]
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r2, 0x1]
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0x2]
|
|
lsls r1, 16
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0x3]
|
|
lsls r1, 24
|
|
adds r0, r1
|
|
bx lr
|
|
thumb_func_end FieldEffectScript_ReadWord
|
|
|
|
thumb_func_start FieldEffectScript_LoadTiles
|
|
FieldEffectScript_LoadTiles: @ 8083568
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
bl FieldEffectScript_ReadWord
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x6]
|
|
bl GetSpriteTileStartByTag
|
|
lsls r0, 16
|
|
ldr r1, _08083594 @ =0xffff0000
|
|
cmp r0, r1
|
|
bne _08083586
|
|
adds r0, r5, 0
|
|
bl LoadSpriteSheet
|
|
_08083586:
|
|
ldr r0, [r4]
|
|
adds r0, 0x4
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083594: .4byte 0xffff0000
|
|
thumb_func_end FieldEffectScript_LoadTiles
|
|
|
|
thumb_func_start sub_8083598
|
|
sub_8083598: @ 8083598
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _080835B4 @ =gUnknown_2036E28
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _080835B8
|
|
cmp r0, 0x1
|
|
ble _08083606
|
|
cmp r0, 0x2
|
|
beq _080835CC
|
|
cmp r0, 0x3
|
|
beq _080835E0
|
|
b _08083606
|
|
.align 2, 0
|
|
_080835B4: .4byte gUnknown_2036E28
|
|
_080835B8:
|
|
adds r4, 0x10
|
|
lsls r0, r4, 5
|
|
ldr r1, _080835C8 @ =gPlttBufferUnfaded
|
|
adds r0, r1
|
|
movs r1, 0x10
|
|
bl TintPalette_GrayScale
|
|
b _080835F6
|
|
.align 2, 0
|
|
_080835C8: .4byte gPlttBufferUnfaded
|
|
_080835CC:
|
|
adds r4, 0x10
|
|
lsls r0, r4, 5
|
|
ldr r1, _080835DC @ =gPlttBufferUnfaded
|
|
adds r0, r1
|
|
movs r1, 0x10
|
|
bl TintPalette_SepiaTone
|
|
b _080835F6
|
|
.align 2, 0
|
|
_080835DC: .4byte gPlttBufferUnfaded
|
|
_080835E0:
|
|
adds r4, 0x10
|
|
lsls r0, r4, 4
|
|
movs r1, 0x10
|
|
bl sub_8111F38
|
|
lsls r0, r4, 5
|
|
ldr r1, _0808360C @ =gPlttBufferUnfaded
|
|
adds r0, r1
|
|
movs r1, 0x10
|
|
bl TintPalette_GrayScale
|
|
_080835F6:
|
|
lsls r1, r4, 5
|
|
ldr r0, _0808360C @ =gPlttBufferUnfaded
|
|
adds r0, r1, r0
|
|
ldr r2, _08083610 @ =gPlttBufferFaded
|
|
adds r1, r2
|
|
movs r2, 0x8
|
|
bl CpuFastSet
|
|
_08083606:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808360C: .4byte gPlttBufferUnfaded
|
|
_08083610: .4byte gPlttBufferFaded
|
|
thumb_func_end sub_8083598
|
|
|
|
thumb_func_start sub_8083614
|
|
sub_8083614: @ 8083614
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
bl FieldEffectScript_ReadWord
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
bl LoadSpritePalette
|
|
cmp r4, 0xFF
|
|
bne _08083642
|
|
ldrh r0, [r5, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8083598
|
|
_08083642:
|
|
ldrh r0, [r5, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_807AA8C
|
|
ldr r0, [r6]
|
|
adds r0, 0x4
|
|
str r0, [r6]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8083614
|
|
|
|
thumb_func_start sub_808365C
|
|
sub_808365C: @ 808365C
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
bl FieldEffectScript_ReadWord
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
bl LoadSpritePalette
|
|
cmp r4, 0xFF
|
|
beq _0808368A
|
|
ldrh r0, [r5, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8083598
|
|
_0808368A:
|
|
ldr r0, [r6]
|
|
adds r0, 0x4
|
|
str r0, [r6]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_808365C
|
|
|
|
thumb_func_start FieldEffectScript_CallNative
|
|
FieldEffectScript_CallNative: @ 8083698
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
bl FieldEffectScript_ReadWord
|
|
bl _call_via_r0
|
|
str r0, [r5]
|
|
ldr r0, [r4]
|
|
adds r0, 0x4
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end FieldEffectScript_CallNative
|
|
|
|
thumb_func_start FieldEffectFreeGraphicsResources
|
|
FieldEffectFreeGraphicsResources: @ 80836B4
|
|
push {r4,r5,lr}
|
|
adds r1, r0, 0
|
|
adds r1, 0x40
|
|
ldrh r5, [r1]
|
|
ldrb r4, [r0, 0x5]
|
|
lsrs r4, 4
|
|
bl DestroySprite
|
|
adds r0, r5, 0
|
|
bl FieldEffectFreeTilesIfUnused
|
|
adds r0, r4, 0
|
|
bl FieldEffectFreePaletteIfUnused
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end FieldEffectFreeGraphicsResources
|
|
|
|
thumb_func_start FieldEffectStop
|
|
FieldEffectStop: @ 80836D8
|
|
push {r4,lr}
|
|
lsls r4, r1, 24
|
|
lsrs r4, 24
|
|
bl FieldEffectFreeGraphicsResources
|
|
adds r0, r4, 0
|
|
bl FieldEffectActiveListRemove
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end FieldEffectStop
|
|
|
|
thumb_func_start FieldEffectFreeTilesIfUnused
|
|
FieldEffectFreeTilesIfUnused: @ 80836F0
|
|
push {r4,r5,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r0, r4, 0
|
|
bl GetSpriteTileTagByTileStart
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
ldr r0, _0808374C @ =0x0000ffff
|
|
cmp r3, r0
|
|
beq _08083744
|
|
movs r2, 0
|
|
ldr r5, _08083750 @ =gSprites
|
|
_0808370A:
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0, r5
|
|
adds r0, r1, 0
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _08083734
|
|
adds r0, r1, 0
|
|
adds r0, 0x3F
|
|
ldrb r0, [r0]
|
|
lsls r0, 25
|
|
cmp r0, 0
|
|
bge _08083734
|
|
adds r0, r1, 0
|
|
adds r0, 0x40
|
|
ldrh r0, [r0]
|
|
cmp r4, r0
|
|
beq _08083744
|
|
_08083734:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x3F
|
|
bls _0808370A
|
|
adds r0, r3, 0
|
|
bl FreeSpriteTilesByTag
|
|
_08083744:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808374C: .4byte 0x0000ffff
|
|
_08083750: .4byte gSprites
|
|
thumb_func_end FieldEffectFreeTilesIfUnused
|
|
|
|
thumb_func_start FieldEffectFreePaletteIfUnused
|
|
FieldEffectFreePaletteIfUnused: @ 8083754
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl GetSpritePaletteTagByPaletteNum
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
ldr r0, _080837A4 @ =0x0000ffff
|
|
cmp r5, r0
|
|
beq _0808379C
|
|
movs r2, 0
|
|
ldr r6, _080837A8 @ =gSprites
|
|
adds r3, r4, 0
|
|
_08083770:
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0, r6
|
|
adds r0, r1, 0
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _0808378C
|
|
ldrb r0, [r1, 0x5]
|
|
lsrs r0, 4
|
|
cmp r0, r3
|
|
beq _0808379C
|
|
_0808378C:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x3F
|
|
bls _08083770
|
|
adds r0, r5, 0
|
|
bl FreeSpritePaletteByTag
|
|
_0808379C:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080837A4: .4byte 0x0000ffff
|
|
_080837A8: .4byte gSprites
|
|
thumb_func_end FieldEffectFreePaletteIfUnused
|
|
|
|
thumb_func_start FieldEffectActiveListClear
|
|
FieldEffectActiveListClear: @ 80837AC
|
|
push {r4,lr}
|
|
movs r2, 0
|
|
ldr r4, _080837CC @ =gUnknown_3000FC8
|
|
movs r3, 0xFF
|
|
_080837B4:
|
|
adds r0, r2, r4
|
|
ldrb r1, [r0]
|
|
orrs r1, r3
|
|
strb r1, [r0]
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x1F
|
|
bls _080837B4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080837CC: .4byte gUnknown_3000FC8
|
|
thumb_func_end FieldEffectActiveListClear
|
|
|
|
thumb_func_start FieldEffectActiveListAdd
|
|
FieldEffectActiveListAdd: @ 80837D0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
movs r2, 0
|
|
ldr r4, _080837E8 @ =gUnknown_3000FC8
|
|
_080837DA:
|
|
adds r1, r2, r4
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xFF
|
|
bne _080837EC
|
|
strb r3, [r1]
|
|
b _080837F6
|
|
.align 2, 0
|
|
_080837E8: .4byte gUnknown_3000FC8
|
|
_080837EC:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x1F
|
|
bls _080837DA
|
|
_080837F6:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end FieldEffectActiveListAdd
|
|
|
|
thumb_func_start FieldEffectActiveListRemove
|
|
FieldEffectActiveListRemove: @ 80837FC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
movs r2, 0
|
|
ldr r4, _08083818 @ =gUnknown_3000FC8
|
|
movs r5, 0xFF
|
|
_08083808:
|
|
adds r1, r2, r4
|
|
ldrb r0, [r1]
|
|
cmp r0, r3
|
|
bne _0808381C
|
|
orrs r0, r5
|
|
strb r0, [r1]
|
|
b _08083826
|
|
.align 2, 0
|
|
_08083818: .4byte gUnknown_3000FC8
|
|
_0808381C:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x1F
|
|
bls _08083808
|
|
_08083826:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end FieldEffectActiveListRemove
|
|
|
|
thumb_func_start FieldEffectActiveListContains
|
|
FieldEffectActiveListContains: @ 808382C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
movs r1, 0
|
|
ldr r3, _08083844 @ =gUnknown_3000FC8
|
|
_08083836:
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _08083848
|
|
movs r0, 0x1
|
|
b _08083854
|
|
.align 2, 0
|
|
_08083844: .4byte gUnknown_3000FC8
|
|
_08083848:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x1F
|
|
bls _08083836
|
|
movs r0, 0
|
|
_08083854:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FieldEffectActiveListContains
|
|
|
|
thumb_func_start CreateTrainerSprite
|
|
CreateTrainerSprite: @ 8083858
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x18
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
mov r9, r3
|
|
ldr r7, [sp, 0x34]
|
|
lsls r4, 24
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
mov r0, r9
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
lsrs r4, 21
|
|
ldr r3, _080838E0 @ =gTrainerFrontPicPaletteTable
|
|
mov r8, r3
|
|
add r8, r4
|
|
mov r0, r8
|
|
adds r1, r7, 0
|
|
bl LoadCompressedSpritePaletteOverrideBuffer
|
|
ldr r0, _080838E4 @ =gTrainerFrontPicTable
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
bl LoadCompressedSpriteSheetOverrideBuffer
|
|
mov r1, sp
|
|
ldrh r0, [r4, 0x6]
|
|
movs r2, 0
|
|
strh r0, [r1]
|
|
mov r3, r8
|
|
ldrh r0, [r3, 0x4]
|
|
strh r0, [r1, 0x2]
|
|
ldr r0, _080838E8 @ =gUnknown_83CBE50
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _080838EC @ =gDummySpriteAnimTable
|
|
str r0, [sp, 0x8]
|
|
str r2, [sp, 0xC]
|
|
ldr r0, _080838F0 @ =gDummySpriteAffineAnimTable
|
|
str r0, [sp, 0x10]
|
|
ldr r0, _080838F4 @ =SpriteCallbackDummy
|
|
str r0, [sp, 0x14]
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
lsls r6, 16
|
|
asrs r6, 16
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
adds r2, r6, 0
|
|
mov r3, r9
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
add sp, 0x18
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080838E0: .4byte gTrainerFrontPicPaletteTable
|
|
_080838E4: .4byte gTrainerFrontPicTable
|
|
_080838E8: .4byte gUnknown_83CBE50
|
|
_080838EC: .4byte gDummySpriteAnimTable
|
|
_080838F0: .4byte gDummySpriteAffineAnimTable
|
|
_080838F4: .4byte SpriteCallbackDummy
|
|
thumb_func_end CreateTrainerSprite
|
|
|
|
thumb_func_start LoadTrainerGfx_TrainerCard
|
|
LoadTrainerGfx_TrainerCard: @ 80838F8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r1, r2, 0
|
|
lsls r4, 24
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
ldr r0, _08083928 @ =gTrainerFrontPicTable
|
|
lsrs r4, 21
|
|
adds r0, r4, r0
|
|
ldr r0, [r0]
|
|
bl LZDecompressVram
|
|
ldr r0, _0808392C @ =gTrainerFrontPicPaletteTable
|
|
adds r4, r0
|
|
ldr r0, [r4]
|
|
adds r1, r5, 0
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083928: .4byte gTrainerFrontPicTable
|
|
_0808392C: .4byte gTrainerFrontPicPaletteTable
|
|
thumb_func_end LoadTrainerGfx_TrainerCard
|
|
|
|
thumb_func_start AddNewGameBirchObject
|
|
AddNewGameBirchObject: @ 8083930
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
ldr r0, _08083968 @ =gUnknown_83CBE70
|
|
bl LoadSpritePalette
|
|
ldr r0, _0808396C @ =gUnknown_83CBE84
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
adds r3, r6, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08083968: .4byte gUnknown_83CBE70
|
|
_0808396C: .4byte gUnknown_83CBE84
|
|
thumb_func_end AddNewGameBirchObject
|
|
|
|
thumb_func_start sub_8083970
|
|
sub_8083970: @ 8083970
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r3, 0x80
|
|
lsls r3, 8
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
str r1, [sp]
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
str r2, [sp, 0x4]
|
|
movs r1, 0
|
|
str r1, [sp, 0x8]
|
|
ldr r1, _080839C0 @ =gMonPaletteTable
|
|
lsls r4, r0, 3
|
|
adds r4, r1
|
|
ldrh r1, [r4, 0x4]
|
|
str r1, [sp, 0xC]
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
movs r3, 0x1
|
|
bl CreateMonPicSprite_HandleDeoxys
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
ldrh r0, [r4, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
adds r0, 0x10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_807B084
|
|
ldr r0, _080839C4 @ =0x0000ffff
|
|
cmp r5, r0
|
|
beq _080839C8
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
b _080839CA
|
|
.align 2, 0
|
|
_080839C0: .4byte gMonPaletteTable
|
|
_080839C4: .4byte 0x0000ffff
|
|
_080839C8:
|
|
movs r0, 0x40
|
|
_080839CA:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8083970
|
|
|
|
thumb_func_start sub_80839D4
|
|
sub_80839D4: @ 80839D4
|
|
push {r4-r6,lr}
|
|
mov r6, r10
|
|
mov r5, r9
|
|
mov r4, r8
|
|
push {r4-r6}
|
|
sub sp, 0x10
|
|
adds r6, r0, 0
|
|
mov r9, r1
|
|
mov r10, r2
|
|
adds r4, r3, 0
|
|
ldr r5, [sp, 0x2C]
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
adds r0, r6, 0
|
|
bl GetMonSpritePalStructFromOtIdPersonality
|
|
mov r8, r0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
str r4, [sp]
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
str r5, [sp, 0x4]
|
|
movs r0, 0
|
|
str r0, [sp, 0x8]
|
|
mov r1, r8
|
|
ldrh r0, [r1, 0x4]
|
|
str r0, [sp, 0xC]
|
|
adds r0, r6, 0
|
|
mov r1, r9
|
|
mov r2, r10
|
|
movs r3, 0x1
|
|
bl CreateMonPicSprite_HandleDeoxys
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
mov r1, r8
|
|
ldrh r0, [r1, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
adds r0, 0x10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_807B084
|
|
ldr r0, _08083A44 @ =0x0000ffff
|
|
cmp r4, r0
|
|
beq _08083A48
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
b _08083A4A
|
|
.align 2, 0
|
|
_08083A44: .4byte 0x0000ffff
|
|
_08083A48:
|
|
movs r0, 0x40
|
|
_08083A4A:
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80839D4
|
|
|
|
thumb_func_start sub_8083A5C
|
|
sub_8083A5C: @ 8083A5C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
bl sub_807B0B4
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 30
|
|
cmp r0, 0
|
|
beq _08083A7A
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
_08083A7A:
|
|
adds r0, r5, 0
|
|
bl FreeAndDestroyMonPicSprite
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8083A5C
|
|
|
|
thumb_func_start MultiplyInvertedPaletteRGBComponents
|
|
MultiplyInvertedPaletteRGBComponents: @ 8083A88
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 16
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldr r4, _08083B0C @ =gPlttBufferUnfaded
|
|
lsrs r0, 15
|
|
adds r4, r0, r4
|
|
ldrh r4, [r4]
|
|
movs r5, 0x1F
|
|
mov r9, r5
|
|
mov r8, r4
|
|
mov r6, r8
|
|
ands r6, r5
|
|
mov r8, r6
|
|
movs r6, 0xF8
|
|
lsls r6, 2
|
|
ands r6, r4
|
|
lsrs r6, 5
|
|
movs r5, 0xF8
|
|
lsls r5, 7
|
|
ands r4, r5
|
|
lsrs r4, 10
|
|
mov r7, r9
|
|
mov r5, r8
|
|
subs r7, r5
|
|
mov r12, r7
|
|
mov r7, r12
|
|
muls r7, r1
|
|
adds r1, r7, 0
|
|
asrs r1, 4
|
|
add r8, r1
|
|
mov r5, r9
|
|
subs r1, r5, r6
|
|
muls r1, r2
|
|
asrs r1, 4
|
|
adds r6, r1
|
|
subs r5, r4
|
|
mov r9, r5
|
|
mov r1, r9
|
|
muls r1, r3
|
|
asrs r1, 4
|
|
adds r4, r1
|
|
mov r7, r8
|
|
lsls r7, 16
|
|
lsls r6, 21
|
|
orrs r6, r7
|
|
lsls r4, 26
|
|
orrs r4, r6
|
|
lsrs r4, 16
|
|
ldr r1, _08083B10 @ =gPlttBufferFaded
|
|
adds r0, r1
|
|
strh r4, [r0]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083B0C: .4byte gPlttBufferUnfaded
|
|
_08083B10: .4byte gPlttBufferFaded
|
|
thumb_func_end MultiplyInvertedPaletteRGBComponents
|
|
|
|
thumb_func_start MultiplyPaletteRGBComponents
|
|
MultiplyPaletteRGBComponents: @ 8083B14
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
lsls r0, 16
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldr r4, _08083B84 @ =gPlttBufferUnfaded
|
|
lsrs r0, 15
|
|
adds r4, r0, r4
|
|
ldrh r4, [r4]
|
|
movs r5, 0x1F
|
|
mov r8, r5
|
|
mov r6, r8
|
|
ands r6, r4
|
|
mov r8, r6
|
|
movs r5, 0xF8
|
|
lsls r5, 2
|
|
ands r5, r4
|
|
lsrs r5, 5
|
|
movs r6, 0xF8
|
|
lsls r6, 7
|
|
ands r4, r6
|
|
lsrs r4, 10
|
|
mov r6, r8
|
|
muls r6, r1
|
|
adds r1, r6, 0
|
|
asrs r1, 4
|
|
mov r6, r8
|
|
subs r6, r1
|
|
adds r1, r5, 0
|
|
muls r1, r2
|
|
asrs r1, 4
|
|
subs r5, r1
|
|
adds r1, r4, 0
|
|
muls r1, r3
|
|
asrs r1, 4
|
|
subs r4, r1
|
|
lsls r6, 16
|
|
lsls r5, 21
|
|
orrs r5, r6
|
|
lsls r4, 26
|
|
orrs r4, r5
|
|
lsrs r4, 16
|
|
ldr r1, _08083B88 @ =gPlttBufferFaded
|
|
adds r0, r1
|
|
strh r4, [r0]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083B84: .4byte gPlttBufferUnfaded
|
|
_08083B88: .4byte gPlttBufferFaded
|
|
thumb_func_end MultiplyPaletteRGBComponents
|
|
|
|
thumb_func_start sub_8083B8C
|
|
sub_8083B8C: @ 8083B8C
|
|
push {r4,lr}
|
|
bl CalculatePlayerPartyCount
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08083BC8 @ =sub_8083BD0
|
|
movs r1, 0xFF
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08083BCC @ =gTasks
|
|
adds r1, r0
|
|
strh r4, [r1, 0xA]
|
|
movs r0, 0x5D
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x24
|
|
strh r0, [r1, 0xE]
|
|
movs r0, 0x80
|
|
strh r0, [r1, 0x10]
|
|
movs r0, 0x18
|
|
strh r0, [r1, 0x12]
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08083BC8: .4byte sub_8083BD0
|
|
_08083BCC: .4byte gTasks
|
|
thumb_func_end sub_8083B8C
|
|
|
|
thumb_func_start sub_8083BD0
|
|
sub_8083BD0: @ 8083BD0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08083BF8 @ =gTasks
|
|
adds r1, r0
|
|
ldr r2, _08083BFC @ =gUnknown_83CBFD0
|
|
movs r3, 0x8
|
|
ldrsh r0, [r1, r3]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r2, [r0]
|
|
adds r0, r1, 0
|
|
bl _call_via_r2
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083BF8: .4byte gTasks
|
|
_08083BFC: .4byte gUnknown_83CBFD0
|
|
thumb_func_end sub_8083BD0
|
|
|
|
thumb_func_start PokecenterHealEffect_0
|
|
PokecenterHealEffect_0: @ 8083C00
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0xC
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0xE
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, 0x1
|
|
bl sub_8083E14
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x14]
|
|
movs r1, 0x10
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x12
|
|
ldrsh r1, [r4, r2]
|
|
bl PokecenterHealEffectHelper
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x16]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end PokecenterHealEffect_0
|
|
|
|
thumb_func_start PokecenterHealEffect_1
|
|
PokecenterHealEffect_1: @ 8083C3C
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
ldr r3, _08083C74 @ =gSprites
|
|
movs r1, 0x14
|
|
ldrsh r0, [r2, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
movs r4, 0x2E
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, 0x1
|
|
ble _08083C6E
|
|
movs r0, 0x16
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r1, [r0, 0x2E]
|
|
adds r1, 0x1
|
|
strh r1, [r0, 0x2E]
|
|
ldrh r0, [r2, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x8]
|
|
_08083C6E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083C74: .4byte gSprites
|
|
thumb_func_end PokecenterHealEffect_1
|
|
|
|
thumb_func_start sub_8083C78
|
|
sub_8083C78: @ 8083C78
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldr r2, _08083C9C @ =gSprites
|
|
movs r0, 0x14
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x4
|
|
ble _08083C98
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
_08083C98:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083C9C: .4byte gSprites
|
|
thumb_func_end sub_8083C78
|
|
|
|
thumb_func_start PokecenterHealEffect_3
|
|
PokecenterHealEffect_3: @ 8083CA0
|
|
push {lr}
|
|
ldr r2, _08083CD8 @ =gSprites
|
|
movs r3, 0x14
|
|
ldrsh r1, [r0, r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r0, r2
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x6
|
|
ble _08083CD2
|
|
adds r0, r1, 0
|
|
bl DestroySprite
|
|
movs r0, 0x19
|
|
bl FieldEffectActiveListRemove
|
|
ldr r0, _08083CDC @ =sub_8083BD0
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_08083CD2:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083CD8: .4byte gSprites
|
|
_08083CDC: .4byte sub_8083BD0
|
|
thumb_func_end PokecenterHealEffect_3
|
|
|
|
thumb_func_start sub_8083CE0
|
|
sub_8083CE0: @ 8083CE0
|
|
push {r4,lr}
|
|
bl CalculatePlayerPartyCount
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08083D14 @ =sub_8083D1C
|
|
movs r1, 0xFF
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08083D18 @ =gTasks
|
|
adds r1, r0
|
|
strh r4, [r1, 0xA]
|
|
movs r0, 0x75
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x3C
|
|
strh r0, [r1, 0xE]
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08083D14: .4byte sub_8083D1C
|
|
_08083D18: .4byte gTasks
|
|
thumb_func_end sub_8083CE0
|
|
|
|
thumb_func_start sub_8083D1C
|
|
sub_8083D1C: @ 8083D1C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08083D44 @ =gTasks
|
|
adds r1, r0
|
|
ldr r2, _08083D48 @ =gUnknown_83CBFE0
|
|
movs r3, 0x8
|
|
ldrsh r0, [r1, r3]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r2, [r0]
|
|
adds r0, r1, 0
|
|
bl _call_via_r2
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083D44: .4byte gTasks
|
|
_08083D48: .4byte gUnknown_83CBFE0
|
|
thumb_func_end sub_8083D1C
|
|
|
|
thumb_func_start HallOfFameRecordEffect_0
|
|
HallOfFameRecordEffect_0: @ 8083D4C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0xC
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0xE
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, 0
|
|
bl sub_8083E14
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x14]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end HallOfFameRecordEffect_0
|
|
|
|
thumb_func_start sub_8083D74
|
|
sub_8083D74: @ 8083D74
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r2, _08083DA8 @ =gSprites
|
|
movs r0, 0x14
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x1
|
|
ble _08083DA2
|
|
movs r0, 0x78
|
|
movs r1, 0x19
|
|
bl sub_808428C
|
|
ldrh r0, [r4, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08083DA2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083DA8: .4byte gSprites
|
|
thumb_func_end sub_8083D74
|
|
|
|
thumb_func_start sub_8083DAC
|
|
sub_8083DAC: @ 8083DAC
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldr r2, _08083DD0 @ =gSprites
|
|
movs r0, 0x14
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x4
|
|
ble _08083DCC
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
_08083DCC:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083DD0: .4byte gSprites
|
|
thumb_func_end sub_8083DAC
|
|
|
|
thumb_func_start sub_8083DD4
|
|
sub_8083DD4: @ 8083DD4
|
|
push {lr}
|
|
ldr r2, _08083E0C @ =gSprites
|
|
movs r3, 0x14
|
|
ldrsh r1, [r0, r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r0, r2
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x6
|
|
ble _08083E06
|
|
adds r0, r1, 0
|
|
bl DestroySprite
|
|
movs r0, 0x3E
|
|
bl FieldEffectActiveListRemove
|
|
ldr r0, _08083E10 @ =sub_8083D1C
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_08083E06:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083E0C: .4byte gSprites
|
|
_08083E10: .4byte sub_8083D1C
|
|
thumb_func_end sub_8083DD4
|
|
|
|
thumb_func_start sub_8083E14
|
|
sub_8083E14: @ 8083E14
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
mov r8, r0
|
|
adds r4, r1, 0
|
|
adds r5, r2, 0
|
|
adds r6, r3, 0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
ldr r0, _08083E68 @ =sub_8083E70
|
|
bl CreateInvisibleSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r2, _08083E6C @ =gSprites
|
|
adds r1, r2
|
|
strh r4, [r1, 0x24]
|
|
strh r5, [r1, 0x26]
|
|
adds r3, r1, 0
|
|
adds r3, 0x43
|
|
movs r2, 0xFF
|
|
strb r2, [r3]
|
|
strh r6, [r1, 0x38]
|
|
mov r2, r8
|
|
strh r2, [r1, 0x3A]
|
|
strh r0, [r1, 0x3C]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08083E68: .4byte sub_8083E70
|
|
_08083E6C: .4byte gSprites
|
|
thumb_func_end sub_8083E14
|
|
|
|
thumb_func_start sub_8083E70
|
|
sub_8083E70: @ 8083E70
|
|
push {lr}
|
|
ldr r2, _08083E88 @ =gUnknown_83CBFF0
|
|
movs r3, 0x2E
|
|
ldrsh r1, [r0, r3]
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083E88: .4byte gUnknown_83CBFF0
|
|
thumb_func_end sub_8083E70
|
|
|
|
thumb_func_start PokeballGlowEffect_0
|
|
PokeballGlowEffect_0: @ 8083E8C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x30]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _08083EA4
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08083F00
|
|
_08083EA4:
|
|
movs r0, 0x19
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, _08083F18 @ =gUnknown_83CBF88
|
|
ldr r1, _08083F1C @ =gUnknown_83CC010
|
|
movs r2, 0x32
|
|
ldrsh r3, [r4, r2]
|
|
lsls r3, 2
|
|
adds r3, r1
|
|
ldrh r1, [r4, 0x24]
|
|
ldrh r2, [r3]
|
|
adds r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
ldrh r2, [r4, 0x26]
|
|
ldrh r3, [r3, 0x2]
|
|
adds r2, r3
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
movs r3, 0xFF
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08083F20 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
movs r2, 0x8
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
ldrh r0, [r4, 0x3C]
|
|
strh r0, [r1, 0x2E]
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x3A]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x3A]
|
|
movs r0, 0x17
|
|
bl PlaySE
|
|
_08083F00:
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08083F12
|
|
movs r0, 0x20
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
_08083F12:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08083F18: .4byte gUnknown_83CBF88
|
|
_08083F1C: .4byte gUnknown_83CC010
|
|
_08083F20: .4byte gSprites
|
|
thumb_func_end PokeballGlowEffect_0
|
|
|
|
thumb_func_start PokeballGlowEffect_1
|
|
PokeballGlowEffect_1: @ 8083F24
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
cmp r2, 0
|
|
bne _08083F54
|
|
ldrh r0, [r1, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
movs r0, 0x8
|
|
strh r0, [r1, 0x30]
|
|
strh r2, [r1, 0x32]
|
|
strh r2, [r1, 0x34]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
beq _08083F54
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
bl PlayFanfare
|
|
_08083F54:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end PokeballGlowEffect_1
|
|
|
|
thumb_func_start PokeballGlowEffect_2
|
|
PokeballGlowEffect_2: @ 8083F58
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
adds r7, r0, 0
|
|
ldrh r0, [r7, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r7, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08083F88
|
|
movs r0, 0x8
|
|
strh r0, [r7, 0x30]
|
|
ldrh r0, [r7, 0x32]
|
|
adds r0, 0x1
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
strh r0, [r7, 0x32]
|
|
cmp r0, 0
|
|
bne _08083F88
|
|
ldrh r0, [r7, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r7, 0x34]
|
|
_08083F88:
|
|
ldrh r4, [r7, 0x32]
|
|
adds r4, 0x3
|
|
movs r0, 0x3
|
|
mov r8, r0
|
|
mov r1, r8
|
|
ands r4, r1
|
|
ldr r3, _08084080 @ =0x00001007
|
|
mov r10, r3
|
|
mov r0, r10
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
movs r1, 0x84
|
|
lsls r1, 17
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
ldr r6, _08084084 @ =gUnknown_83CC028
|
|
adds r1, r4, r6
|
|
ldrb r1, [r1]
|
|
ldr r5, _08084088 @ =gUnknown_83CC02C
|
|
adds r2, r4, r5
|
|
ldrb r2, [r2]
|
|
ldr r3, _0808408C @ =gUnknown_83CC030
|
|
mov r9, r3
|
|
add r4, r9
|
|
ldrb r3, [r4]
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
ldrh r4, [r7, 0x32]
|
|
adds r4, 0x2
|
|
mov r0, r8
|
|
ands r4, r0
|
|
mov r0, r10
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
movs r1, 0x83
|
|
lsls r1, 17
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
adds r1, r4, r6
|
|
ldrb r1, [r1]
|
|
adds r2, r4, r5
|
|
ldrb r2, [r2]
|
|
add r4, r9
|
|
ldrb r3, [r4]
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
ldrh r4, [r7, 0x32]
|
|
adds r4, 0x1
|
|
mov r3, r8
|
|
ands r4, r3
|
|
mov r0, r10
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
movs r1, 0x81
|
|
lsls r1, 17
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
adds r1, r4, r6
|
|
ldrb r1, [r1]
|
|
adds r2, r4, r5
|
|
ldrb r2, [r2]
|
|
add r4, r9
|
|
ldrb r3, [r4]
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
ldrh r4, [r7, 0x32]
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r0, r10
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
ldr r3, _08084090 @ =0x01050000
|
|
adds r0, r3
|
|
lsrs r0, 16
|
|
adds r6, r4, r6
|
|
ldrb r6, [r6]
|
|
adds r5, r4, r5
|
|
ldrb r5, [r5]
|
|
add r4, r9
|
|
ldrb r4, [r4]
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
mov r0, r10
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
ldr r1, _08084094 @ =0x01030000
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
movs r3, 0x34
|
|
ldrsh r0, [r7, r3]
|
|
cmp r0, 0x2
|
|
ble _08084072
|
|
ldrh r0, [r7, 0x2E]
|
|
adds r0, 0x1
|
|
movs r1, 0
|
|
strh r0, [r7, 0x2E]
|
|
movs r0, 0x8
|
|
strh r0, [r7, 0x30]
|
|
strh r1, [r7, 0x32]
|
|
_08084072:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084080: .4byte 0x00001007
|
|
_08084084: .4byte gUnknown_83CC028
|
|
_08084088: .4byte gUnknown_83CC02C
|
|
_0808408C: .4byte gUnknown_83CC030
|
|
_08084090: .4byte 0x01050000
|
|
_08084094: .4byte 0x01030000
|
|
thumb_func_end PokeballGlowEffect_2
|
|
|
|
thumb_func_start PokeballGlowEffect_3
|
|
PokeballGlowEffect_3: @ 8084098
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080840C8
|
|
movs r0, 0x8
|
|
strh r0, [r2, 0x30]
|
|
ldrh r0, [r2, 0x32]
|
|
adds r0, 0x1
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
strh r0, [r2, 0x32]
|
|
cmp r0, 0x3
|
|
bne _080840C8
|
|
ldrh r0, [r2, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
movs r0, 0x1E
|
|
strh r0, [r2, 0x30]
|
|
_080840C8:
|
|
ldrh r4, [r2, 0x32]
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08084174 @ =0x00001007
|
|
mov r8, r0
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
movs r1, 0x84
|
|
lsls r1, 17
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
ldr r1, _08084178 @ =gUnknown_83CC028
|
|
adds r1, r4, r1
|
|
ldrb r6, [r1]
|
|
ldr r1, _0808417C @ =gUnknown_83CC02C
|
|
adds r1, r4, r1
|
|
ldrb r5, [r1]
|
|
ldr r1, _08084180 @ =gUnknown_83CC030
|
|
adds r4, r1
|
|
ldrb r4, [r4]
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
mov r0, r8
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
movs r1, 0x83
|
|
lsls r1, 17
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
mov r0, r8
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
movs r1, 0x81
|
|
lsls r1, 17
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
mov r0, r8
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
ldr r1, _08084184 @ =0x01050000
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
mov r0, r8
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 4
|
|
ldr r1, _08084188 @ =0x01030000
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl MultiplyInvertedPaletteRGBComponents
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084174: .4byte 0x00001007
|
|
_08084178: .4byte gUnknown_83CC028
|
|
_0808417C: .4byte gUnknown_83CC02C
|
|
_08084180: .4byte gUnknown_83CC030
|
|
_08084184: .4byte 0x01050000
|
|
_08084188: .4byte 0x01030000
|
|
thumb_func_end PokeballGlowEffect_3
|
|
|
|
thumb_func_start PokeballGlowEffect_4
|
|
PokeballGlowEffect_4: @ 808418C
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080841A2
|
|
ldrh r0, [r1, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
_080841A2:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end PokeballGlowEffect_4
|
|
|
|
thumb_func_start PokeballGlowEffect_5
|
|
PokeballGlowEffect_5: @ 80841A8
|
|
ldrh r1, [r0, 0x2E]
|
|
adds r1, 0x1
|
|
strh r1, [r0, 0x2E]
|
|
bx lr
|
|
thumb_func_end PokeballGlowEffect_5
|
|
|
|
thumb_func_start PokeballGlowEffect_6
|
|
PokeballGlowEffect_6: @ 80841B0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080841C6
|
|
bl IsFanfareTaskInactive
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080841CC
|
|
_080841C6:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
_080841CC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end PokeballGlowEffect_6
|
|
|
|
thumb_func_start nullsub_50
|
|
nullsub_50: @ 80841D4
|
|
bx lr
|
|
thumb_func_end nullsub_50
|
|
|
|
thumb_func_start SpriteCB_PokeballGlow
|
|
SpriteCB_PokeballGlow: @ 80841D8
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldr r2, _080841FC @ =gSprites
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x4
|
|
ble _080841F8
|
|
adds r0, r3, 0
|
|
bl FieldEffectFreeGraphicsResources
|
|
_080841F8:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080841FC: .4byte gSprites
|
|
thumb_func_end SpriteCB_PokeballGlow
|
|
|
|
thumb_func_start PokecenterHealEffectHelper
|
|
PokecenterHealEffectHelper: @ 8084200
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
adds r2, r1, 0
|
|
ldr r0, _08084244 @ =gUnknown_83CBFA0
|
|
lsls r3, 16
|
|
asrs r3, 16
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
adds r1, r3, 0
|
|
movs r3, 0
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r1, _08084248 @ =gSprites
|
|
adds r2, r1
|
|
ldrb r3, [r2, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r3
|
|
movs r3, 0x8
|
|
orrs r1, r3
|
|
strb r1, [r2, 0x5]
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r3, 0x4
|
|
orrs r1, r3
|
|
strb r1, [r2]
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084244: .4byte gUnknown_83CBFA0
|
|
_08084248: .4byte gSprites
|
|
thumb_func_end PokecenterHealEffectHelper
|
|
|
|
thumb_func_start sub_808424C
|
|
sub_808424C: @ 808424C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08084270
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
subs r0, 0x5
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
_08084270:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08084284
|
|
adds r0, r4, 0
|
|
bl FieldEffectFreeGraphicsResources
|
|
_08084284:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_808424C
|
|
|
|
thumb_func_start sub_808428C
|
|
sub_808428C: @ 808428C
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
adds r2, r1, 0
|
|
ldr r0, _080842A8 @ =gUnknown_83CBFB8
|
|
lsls r3, 16
|
|
asrs r3, 16
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
adds r1, r3, 0
|
|
movs r3, 0
|
|
bl CreateSpriteAtEnd
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080842A8: .4byte gUnknown_83CBFB8
|
|
thumb_func_end sub_808428C
|
|
|
|
thumb_func_start sub_80842AC
|
|
sub_80842AC: @ 80842AC
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080842C2
|
|
adds r0, r2, 0
|
|
bl FieldEffectFreeGraphicsResources
|
|
_080842C2:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80842AC
|
|
|
|
thumb_func_start sub_80842C8
|
|
sub_80842C8: @ 80842C8
|
|
push {lr}
|
|
ldr r0, _080842DC @ =CB2_ReturnToField
|
|
bl SetMainCallback2
|
|
ldr r1, _080842E0 @ =gFieldCallback
|
|
ldr r0, _080842E4 @ =mapldr_080842E8
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080842DC: .4byte CB2_ReturnToField
|
|
_080842E0: .4byte gFieldCallback
|
|
_080842E4: .4byte mapldr_080842E8
|
|
thumb_func_end sub_80842C8
|
|
|
|
thumb_func_start mapldr_080842E8
|
|
mapldr_080842E8: @ 80842E8
|
|
push {lr}
|
|
bl sub_807DC00
|
|
ldr r0, _08084308 @ =task00_8084310
|
|
movs r1, 0
|
|
bl CreateTask
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r1, _0808430C @ =gFieldCallback
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084308: .4byte task00_8084310
|
|
_0808430C: .4byte gFieldCallback
|
|
thumb_func_end mapldr_080842E8
|
|
|
|
thumb_func_start task00_8084310
|
|
task00_8084310: @ 8084310
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0808437C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r6, [r4, r0]
|
|
cmp r6, 0
|
|
bne _08084350
|
|
bl field_weather_is_fade_finished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08084376
|
|
bl GetCursorSelectionMonId
|
|
ldr r1, _08084380 @ =gFieldEffectArguments
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [r1]
|
|
cmp r0, 0x5
|
|
ble _08084344
|
|
str r6, [r1]
|
|
_08084344:
|
|
movs r0, 0x1F
|
|
bl FieldEffectStart
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08084350:
|
|
movs r0, 0x1F
|
|
bl FieldEffectActiveListContains
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084376
|
|
bl sub_8054CA0
|
|
bl WarpIntoMap
|
|
ldr r0, _08084384 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
ldr r1, _08084388 @ =gFieldCallback
|
|
ldr r0, _0808438C @ =mapldr_08084390
|
|
str r0, [r1]
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_08084376:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808437C: .4byte gTasks
|
|
_08084380: .4byte gFieldEffectArguments
|
|
_08084384: .4byte CB2_LoadMap
|
|
_08084388: .4byte gFieldCallback
|
|
_0808438C: .4byte mapldr_08084390
|
|
thumb_func_end task00_8084310
|
|
|
|
thumb_func_start mapldr_08084390
|
|
mapldr_08084390: @ 8084390
|
|
push {r4,lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl sub_807DC00
|
|
ldr r0, _080843E8 @ =c3_080843F8
|
|
movs r1, 0
|
|
bl CreateTask
|
|
ldr r4, _080843EC @ =gMapObjects
|
|
ldr r3, _080843F0 @ =gPlayerAvatar
|
|
ldrb r1, [r3, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r1, [r0, 0x1]
|
|
movs r2, 0x20
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x1]
|
|
ldrb r1, [r3]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080843D2
|
|
ldrb r1, [r3, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
movs r1, 0x3
|
|
bl FieldObjectTurn
|
|
_080843D2:
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r1, _080843F4 @ =gFieldCallback
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080843E8: .4byte c3_080843F8
|
|
_080843EC: .4byte gMapObjects
|
|
_080843F0: .4byte gPlayerAvatar
|
|
_080843F4: .4byte gFieldCallback
|
|
thumb_func_end mapldr_08084390
|
|
|
|
thumb_func_start c3_080843F8
|
|
c3_080843F8: @ 80843F8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0808444C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _0808442A
|
|
ldr r0, _08084450 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08084444
|
|
movs r0, 0x20
|
|
bl FieldEffectStart
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_0808442A:
|
|
movs r0, 0x20
|
|
bl FieldEffectActiveListContains
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084444
|
|
bl ScriptContext2_Disable
|
|
bl UnfreezeMapObjects
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_08084444:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808444C: .4byte gTasks
|
|
_08084450: .4byte gPaletteFade
|
|
thumb_func_end c3_080843F8
|
|
|
|
thumb_func_start sub_8084454
|
|
sub_8084454: @ 8084454
|
|
push {lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl pal_fill_for_maplights
|
|
bl sub_8111CF0
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r0, _0808447C @ =sub_8084484
|
|
movs r1, 0
|
|
bl CreateTask
|
|
ldr r1, _08084480 @ =gFieldCallback
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808447C: .4byte sub_8084484
|
|
_08084480: .4byte gFieldCallback
|
|
thumb_func_end sub_8084454
|
|
|
|
thumb_func_start sub_8084484
|
|
sub_8084484: @ 8084484
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080844B4 @ =gTasks
|
|
adds r4, r1, r0
|
|
ldr r5, _080844B8 @ =gUnknown_83CC034
|
|
_08084496:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r1, [r0]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084496
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080844B4: .4byte gTasks
|
|
_080844B8: .4byte gUnknown_83CC034
|
|
thumb_func_end sub_8084484
|
|
|
|
thumb_func_start sub_80844BC
|
|
sub_80844BC: @ 80844BC
|
|
push {r4-r6,lr}
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5,r6}
|
|
mov r9, r0
|
|
ldr r6, _08084558 @ =gPlayerAvatar
|
|
ldrb r0, [r6, 0x5]
|
|
lsls r5, r0, 3
|
|
adds r5, r0
|
|
lsls r5, 2
|
|
ldr r0, _0808455C @ =gMapObjects
|
|
mov r8, r0
|
|
add r5, r8
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08084560 @ =gSprites
|
|
adds r4, r0
|
|
bl CameraObjectReset2
|
|
ldrb r1, [r6, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r8
|
|
ldrb r1, [r0, 0x1]
|
|
movs r2, 0x20
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x1]
|
|
movs r0, 0x1
|
|
strb r0, [r6, 0x6]
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8063EB8
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl FieldObjectSetHeldMovement
|
|
adds r3, r4, 0
|
|
adds r3, 0x42
|
|
ldrb r0, [r3]
|
|
lsrs r0, 6
|
|
mov r1, r9
|
|
strh r0, [r1, 0x10]
|
|
ldrb r0, [r5, 0x3]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r5, 0x3]
|
|
ldrb r1, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, 0x5]
|
|
ldrb r1, [r3]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
mov r1, r9
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x1
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084558: .4byte gPlayerAvatar
|
|
_0808455C: .4byte gMapObjects
|
|
_08084560: .4byte gSprites
|
|
thumb_func_end sub_80844BC
|
|
|
|
thumb_func_start sub_8084564
|
|
sub_8084564: @ 8084564
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl field_weather_is_fade_finished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08084578
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08084578:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8084564
|
|
|
|
thumb_func_start sub_8084580
|
|
sub_8084580: @ 8084580
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080845E4 @ =gPlayerAvatar
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, _080845E8 @ =gSprites
|
|
adds r2, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x29
|
|
movs r4, 0
|
|
ldrsb r4, [r0, r4]
|
|
lsls r0, r4, 17
|
|
negs r0, r0
|
|
ldrh r1, [r2, 0x22]
|
|
ldr r3, _080845EC @ =gSpriteCoordOffsetY
|
|
adds r1, r4
|
|
ldrh r3, [r3]
|
|
adds r1, r3
|
|
asrs r0, 16
|
|
adds r0, r1
|
|
negs r0, r0
|
|
movs r1, 0
|
|
strh r0, [r2, 0x26]
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0xA]
|
|
strh r1, [r5, 0xC]
|
|
ldr r2, _080845F0 @ =gMapObjects
|
|
ldrb r0, [r6, 0x5]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r2, [r1, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x25
|
|
bl PlaySE
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080845E4: .4byte gPlayerAvatar
|
|
_080845E8: .4byte gSprites
|
|
_080845EC: .4byte gSpriteCoordOffsetY
|
|
_080845F0: .4byte gMapObjects
|
|
thumb_func_end sub_8084580
|
|
|
|
thumb_func_start sub_80845F4
|
|
sub_80845F4: @ 80845F4
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldr r2, _080846A0 @ =gPlayerAvatar
|
|
ldrb r1, [r2, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080846A4 @ =gMapObjects
|
|
adds r6, r0, r1
|
|
ldrb r1, [r2, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080846A8 @ =gSprites
|
|
adds r5, r0, r1
|
|
ldrh r0, [r4, 0xA]
|
|
ldrh r1, [r5, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x26]
|
|
ldrh r2, [r4, 0xA]
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x7
|
|
bgt _08084636
|
|
ldrh r1, [r4, 0xC]
|
|
adds r0, r2, r1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08084636
|
|
lsls r0, r2, 1
|
|
strh r0, [r4, 0xA]
|
|
_08084636:
|
|
ldrh r2, [r4, 0xE]
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08084674
|
|
movs r0, 0x26
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
blt _08084674
|
|
adds r0, r2, 0x1
|
|
strh r0, [r4, 0xE]
|
|
ldrb r1, [r6, 0x3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r6, 0x3]
|
|
ldrb r1, [r4, 0x10]
|
|
adds r3, r5, 0
|
|
adds r3, 0x42
|
|
lsls r1, 6
|
|
ldrb r2, [r3]
|
|
movs r0, 0x3F
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
ldrb r0, [r6]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r6]
|
|
_08084674:
|
|
movs r1, 0x26
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
blt _08084698
|
|
movs r0, 0xCF
|
|
bl PlaySE
|
|
ldrb r0, [r6]
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
movs r1, 0x20
|
|
orrs r0, r1
|
|
strb r0, [r6]
|
|
movs r0, 0
|
|
strh r0, [r5, 0x26]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08084698:
|
|
movs r0, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080846A0: .4byte gPlayerAvatar
|
|
_080846A4: .4byte gMapObjects
|
|
_080846A8: .4byte gSprites
|
|
thumb_func_end sub_80845F4
|
|
|
|
thumb_func_start sub_80846AC
|
|
sub_80846AC: @ 80846AC
|
|
push {lr}
|
|
ldrh r1, [r0, 0x8]
|
|
adds r1, 0x1
|
|
movs r2, 0
|
|
strh r1, [r0, 0x8]
|
|
movs r1, 0x4
|
|
strh r1, [r0, 0xA]
|
|
strh r2, [r0, 0xC]
|
|
movs r0, 0
|
|
bl SetCameraPanningCallback
|
|
movs r0, 0x1
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80846AC
|
|
|
|
thumb_func_start sub_80846C8
|
|
sub_80846C8: @ 80846C8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0
|
|
bl SetCameraPanning
|
|
ldrh r0, [r4, 0xA]
|
|
negs r2, r0
|
|
strh r2, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080846F0
|
|
lsls r0, r2, 16
|
|
asrs r0, 17
|
|
strh r0, [r4, 0xA]
|
|
_080846F0:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080846FE
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080846FE:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80846C8
|
|
|
|
thumb_func_start sub_8084708
|
|
sub_8084708: @ 8084708
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r1, _08084778 @ =gPlayerAvatar
|
|
movs r0, 0
|
|
strb r0, [r1, 0x6]
|
|
bl ScriptContext2_Disable
|
|
bl CameraObjectReset1
|
|
bl UnfreezeMapObjects
|
|
bl InstallCameraPanAheadCallback
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl PlayerGetDestCoords
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl sub_8055B38
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08084760
|
|
ldr r0, _0808477C @ =0x00004001
|
|
movs r1, 0x1
|
|
bl VarSet
|
|
movs r0, 0x8
|
|
bl SetPlayerAvatarTransitionFlags
|
|
movs r0, 0x16
|
|
bl HelpSystem_SetSomeVariable2
|
|
_08084760:
|
|
ldr r0, _08084780 @ =sub_8084484
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
movs r0, 0
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084778: .4byte gPlayerAvatar
|
|
_0808477C: .4byte 0x00004001
|
|
_08084780: .4byte sub_8084484
|
|
thumb_func_end sub_8084708
|
|
|
|
thumb_func_start sub_8084784
|
|
sub_8084784: @ 8084784
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r0, _080847B8 @ =sub_80847C0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080847BC @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r0, 0
|
|
strh r0, [r1, 0xA]
|
|
cmp r4, 0x6A
|
|
bne _080847B0
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0xA]
|
|
_080847B0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080847B8: .4byte sub_80847C0
|
|
_080847BC: .4byte gTasks
|
|
thumb_func_end sub_8084784
|
|
|
|
thumb_func_start sub_80847C0
|
|
sub_80847C0: @ 80847C0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080847F0 @ =gTasks
|
|
adds r4, r1, r0
|
|
ldr r5, _080847F4 @ =gUnknown_83CC050
|
|
_080847D2:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r1, [r0]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080847D2
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080847F0: .4byte gTasks
|
|
_080847F4: .4byte gUnknown_83CC050
|
|
thumb_func_end sub_80847C0
|
|
|
|
thumb_func_start sub_80847F8
|
|
sub_80847F8: @ 80847F8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl player_bitmagic
|
|
bl CameraObjectReset2
|
|
ldrb r0, [r4, 0xA]
|
|
bl sub_809C448
|
|
movs r0, 0x1
|
|
bl sub_81128BC
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80847F8
|
|
|
|
thumb_func_start sub_8084820
|
|
sub_8084820: @ 8084820
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _08084888 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0808488C @ =gMapObjects
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl FieldObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0808484A
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0808487E
|
|
_0808484A:
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8063EB8
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
movs r1, 0
|
|
strh r0, [r5, 0x8]
|
|
strh r1, [r5, 0xC]
|
|
strh r1, [r5, 0xE]
|
|
ldrb r0, [r5, 0xA]
|
|
cmp r0, 0
|
|
bne _08084878
|
|
movs r0, 0x4
|
|
strh r0, [r5, 0x8]
|
|
_08084878:
|
|
movs r0, 0x49
|
|
bl PlaySE
|
|
_0808487E:
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084888: .4byte gPlayerAvatar
|
|
_0808488C: .4byte gMapObjects
|
|
thumb_func_end sub_8084820
|
|
|
|
thumb_func_start sub_8084890
|
|
sub_8084890: @ 8084890
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80848F8
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x3
|
|
ble _080848AA
|
|
bl sub_8084990
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080848AA:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8084890
|
|
|
|
thumb_func_start sub_80848B4
|
|
sub_80848B4: @ 80848B4
|
|
push {lr}
|
|
bl sub_80848F8
|
|
bl sub_80849A0
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80848B4
|
|
|
|
thumb_func_start sub_80848C4
|
|
sub_80848C4: @ 80848C4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8084944
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x3
|
|
ble _080848DE
|
|
bl sub_8084990
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080848DE:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80848C4
|
|
|
|
thumb_func_start sub_80848E8
|
|
sub_80848E8: @ 80848E8
|
|
push {lr}
|
|
bl sub_8084944
|
|
bl sub_80849A0
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80848E8
|
|
|
|
thumb_func_start sub_80848F8
|
|
sub_80848F8: @ 80848F8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _0808493C @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x4]
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08084940 @ =gSprites
|
|
adds r4, r0
|
|
movs r0, 0xC
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x84
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0xC
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x94
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r5, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xE]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08084936
|
|
ldrh r0, [r5, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xC]
|
|
_08084936:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808493C: .4byte gPlayerAvatar
|
|
_08084940: .4byte gSprites
|
|
thumb_func_end sub_80848F8
|
|
|
|
thumb_func_start sub_8084944
|
|
sub_8084944: @ 8084944
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _08084988 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x4]
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0808498C @ =gSprites
|
|
adds r4, r0
|
|
movs r0, 0xC
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x7C
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0xC
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x76
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r5, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xE]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08084982
|
|
ldrh r0, [r5, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xC]
|
|
_08084982:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084988: .4byte gPlayerAvatar
|
|
_0808498C: .4byte gSprites
|
|
thumb_func_end sub_8084944
|
|
|
|
thumb_func_start sub_8084990
|
|
sub_8084990: @ 8084990
|
|
push {lr}
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8084990
|
|
|
|
thumb_func_start sub_80849A0
|
|
sub_80849A0: @ 80849A0
|
|
push {lr}
|
|
ldr r0, _080849E0 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080849DC
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080849DC
|
|
bl sub_809C460
|
|
bl WarpIntoMap
|
|
ldr r1, _080849E4 @ =gFieldCallback
|
|
ldr r0, _080849E8 @ =sub_80849F4
|
|
str r0, [r1]
|
|
ldr r0, _080849EC @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
ldr r0, _080849F0 @ =sub_80847C0
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_080849DC:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080849E0: .4byte gPaletteFade
|
|
_080849E4: .4byte gFieldCallback
|
|
_080849E8: .4byte sub_80849F4
|
|
_080849EC: .4byte CB2_LoadMap
|
|
_080849F0: .4byte sub_80847C0
|
|
thumb_func_end sub_80849A0
|
|
|
|
thumb_func_start sub_80849F4
|
|
sub_80849F4: @ 80849F4
|
|
push {lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl pal_fill_for_maplights
|
|
bl sub_8111CF0
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r0, _08084A1C @ =sub_8084A24
|
|
movs r1, 0
|
|
bl CreateTask
|
|
ldr r1, _08084A20 @ =gFieldCallback
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084A1C: .4byte sub_8084A24
|
|
_08084A20: .4byte gFieldCallback
|
|
thumb_func_end sub_80849F4
|
|
|
|
thumb_func_start sub_8084A24
|
|
sub_8084A24: @ 8084A24
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08084A54 @ =gTasks
|
|
adds r4, r1, r0
|
|
ldr r5, _08084A58 @ =gUnknown_83CC068
|
|
_08084A36:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r1, [r0]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084A36
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084A54: .4byte gTasks
|
|
_08084A58: .4byte gUnknown_83CC068
|
|
thumb_func_end sub_8084A24
|
|
|
|
thumb_func_start sub_8084A5C
|
|
sub_8084A5C: @ 8084A5C
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
bl CameraObjectReset2
|
|
ldr r0, _08084ABC @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08084AC0 @ =gMapObjects
|
|
adds r4, r0
|
|
movs r0, 0x4
|
|
bl sub_8063EB8
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl PlayerGetDestCoords
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0xA]
|
|
cmp r1, 0x6B
|
|
bne _08084AC4
|
|
movs r1, 0x1
|
|
movs r0, 0x3
|
|
strh r0, [r5, 0x8]
|
|
b _08084AC6
|
|
.align 2, 0
|
|
_08084ABC: .4byte gPlayerAvatar
|
|
_08084AC0: .4byte gMapObjects
|
|
_08084AC4:
|
|
movs r1, 0
|
|
_08084AC6:
|
|
adds r0, r1, 0
|
|
bl sub_809C448
|
|
movs r0, 0x1
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8084A5C
|
|
|
|
thumb_func_start sub_8084AD8
|
|
sub_8084AD8: @ 8084AD8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _08084B10 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x4]
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08084B14 @ =gSprites
|
|
adds r4, r0
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x84
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x94
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084B10: .4byte gPlayerAvatar
|
|
_08084B14: .4byte gSprites
|
|
thumb_func_end sub_8084AD8
|
|
|
|
thumb_func_start sub_8084B18
|
|
sub_8084B18: @ 8084B18
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08084B70 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08084B74 @ =gSprites
|
|
adds r5, r0, r1
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x84
|
|
bl Cos
|
|
strh r0, [r5, 0x24]
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x94
|
|
bl Sin
|
|
strh r0, [r5, 0x26]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08084B56
|
|
ldrh r0, [r4, 0xA]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
_08084B56:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08084B66
|
|
strh r0, [r5, 0x24]
|
|
strh r0, [r5, 0x26]
|
|
movs r0, 0x5
|
|
strh r0, [r4, 0x8]
|
|
_08084B66:
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084B70: .4byte gPlayerAvatar
|
|
_08084B74: .4byte gSprites
|
|
thumb_func_end sub_8084B18
|
|
|
|
thumb_func_start sub_8084B78
|
|
sub_8084B78: @ 8084B78
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _08084BB0 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x4]
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08084BB4 @ =gSprites
|
|
adds r4, r0
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x7C
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x76
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084BB0: .4byte gPlayerAvatar
|
|
_08084BB4: .4byte gSprites
|
|
thumb_func_end sub_8084B78
|
|
|
|
thumb_func_start sub_8084BB8
|
|
sub_8084BB8: @ 8084BB8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08084C10 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08084C14 @ =gSprites
|
|
adds r5, r0, r1
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x7C
|
|
bl Cos
|
|
strh r0, [r5, 0x24]
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x76
|
|
bl Sin
|
|
strh r0, [r5, 0x26]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08084BF6
|
|
ldrh r0, [r4, 0xA]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
_08084BF6:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08084C08
|
|
strh r0, [r5, 0x24]
|
|
strh r0, [r5, 0x26]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08084C08:
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084C10: .4byte gPlayerAvatar
|
|
_08084C14: .4byte gSprites
|
|
thumb_func_end sub_8084BB8
|
|
|
|
thumb_func_start sub_8084C18
|
|
sub_8084C18: @ 8084C18
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_809C474
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084C34
|
|
bl sub_809C460
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x1
|
|
b _08084C36
|
|
_08084C34:
|
|
movs r0, 0
|
|
_08084C36:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8084C18
|
|
|
|
thumb_func_start sub_8084C3C
|
|
sub_8084C3C: @ 8084C3C
|
|
push {r4,lr}
|
|
ldr r0, _08084C94 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08084C98 @ =gMapObjects
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08084C8A
|
|
bl CameraObjectReset1
|
|
bl ScriptContext2_Disable
|
|
bl UnfreezeMapObjects
|
|
movs r0, 0x4
|
|
bl sub_8063F84
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
ldr r0, _08084C9C @ =sub_8084A24
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
movs r0, 0x2
|
|
bl sub_81128BC
|
|
_08084C8A:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084C94: .4byte gPlayerAvatar
|
|
_08084C98: .4byte gMapObjects
|
|
_08084C9C: .4byte sub_8084A24
|
|
thumb_func_end sub_8084C3C
|
|
|
|
thumb_func_start oei_waterfall
|
|
oei_waterfall: @ 8084CA0
|
|
push {r4,lr}
|
|
ldr r4, _08084CCC @ =sub_8084CD8
|
|
adds r0, r4, 0
|
|
movs r1, 0xFF
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08084CD0 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r2, _08084CD4 @ =gFieldEffectArguments
|
|
ldr r2, [r2]
|
|
strh r2, [r1, 0xA]
|
|
bl _call_via_r4
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084CCC: .4byte sub_8084CD8
|
|
_08084CD0: .4byte gTasks
|
|
_08084CD4: .4byte gFieldEffectArguments
|
|
thumb_func_end oei_waterfall
|
|
|
|
thumb_func_start sub_8084CD8
|
|
sub_8084CD8: @ 8084CD8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r5, _08084D14 @ =gUnknown_83CC084
|
|
ldr r2, _08084D18 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r4, r1, r2
|
|
_08084CEA:
|
|
movs r0, 0x8
|
|
ldrsh r2, [r4, r0]
|
|
lsls r2, 2
|
|
adds r2, r5
|
|
ldr r0, _08084D1C @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _08084D20 @ =gMapObjects
|
|
adds r1, r0
|
|
ldr r2, [r2]
|
|
adds r0, r4, 0
|
|
bl _call_via_r2
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084CEA
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084D14: .4byte gUnknown_83CC084
|
|
_08084D18: .4byte gTasks
|
|
_08084D1C: .4byte gPlayerAvatar
|
|
_08084D20: .4byte gMapObjects
|
|
thumb_func_end sub_8084CD8
|
|
|
|
thumb_func_start sub_8084D24
|
|
sub_8084D24: @ 8084D24
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl ScriptContext2_Enable
|
|
ldr r1, _08084D40 @ =gPlayerAvatar
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x6]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084D40: .4byte gPlayerAvatar
|
|
thumb_func_end sub_8084D24
|
|
|
|
thumb_func_start waterfall_1_do_anim_probably
|
|
waterfall_1_do_anim_probably: @ 8084D44
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
bl ScriptContext2_Enable
|
|
adds r0, r5, 0
|
|
bl FieldObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084D74
|
|
adds r0, r5, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
ldr r1, _08084D7C @ =gFieldEffectArguments
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
str r0, [r1]
|
|
movs r0, 0x3B
|
|
bl FieldEffectStart
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08084D74:
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084D7C: .4byte gFieldEffectArguments
|
|
thumb_func_end waterfall_1_do_anim_probably
|
|
|
|
thumb_func_start waterfall_2_wait_anim_finish_probably
|
|
waterfall_2_wait_anim_finish_probably: @ 8084D80
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x6
|
|
bl FieldEffectActiveListContains
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084D9A
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x1
|
|
b _08084D9C
|
|
_08084D9A:
|
|
movs r0, 0
|
|
_08084D9C:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end waterfall_2_wait_anim_finish_probably
|
|
|
|
thumb_func_start sub_8084DA4
|
|
sub_8084DA4: @ 8084DA4
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
movs r0, 0x2
|
|
bl sub_8063F2C
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8084DA4
|
|
|
|
thumb_func_start sub_8084DCC
|
|
sub_8084DCC: @ 8084DCC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084DE2
|
|
movs r0, 0
|
|
b _08084E1E
|
|
_08084DE2:
|
|
ldrb r0, [r4, 0x1E]
|
|
bl MetatileBehavior_IsWaterfall
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
bne _08084E18
|
|
bl ScriptContext2_Disable
|
|
ldr r0, _08084E10 @ =gPlayerAvatar
|
|
strb r4, [r0, 0x6]
|
|
ldr r0, _08084E14 @ =sub_8084CD8
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
movs r0, 0x2B
|
|
bl FieldEffectActiveListRemove
|
|
movs r0, 0
|
|
b _08084E1E
|
|
.align 2, 0
|
|
_08084E10: .4byte gPlayerAvatar
|
|
_08084E14: .4byte sub_8084CD8
|
|
_08084E18:
|
|
movs r0, 0x3
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0x1
|
|
_08084E1E:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8084DCC
|
|
|
|
thumb_func_start FldEff_UseDive
|
|
FldEff_UseDive: @ 8084E24
|
|
push {r4,lr}
|
|
ldr r4, _08084E54 @ =sub_8084E60
|
|
adds r0, r4, 0
|
|
movs r1, 0xFF
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08084E58 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r3, _08084E5C @ =gFieldEffectArguments
|
|
ldr r2, [r3]
|
|
strh r2, [r1, 0x26]
|
|
ldr r2, [r3, 0x4]
|
|
strh r2, [r1, 0x24]
|
|
bl _call_via_r4
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084E54: .4byte sub_8084E60
|
|
_08084E58: .4byte gTasks
|
|
_08084E5C: .4byte gFieldEffectArguments
|
|
thumb_func_end FldEff_UseDive
|
|
|
|
thumb_func_start sub_8084E60
|
|
sub_8084E60: @ 8084E60
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r5, _08084E90 @ =gUnknown_83CC098
|
|
ldr r2, _08084E94 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r4, r1, r2
|
|
_08084E72:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r1, [r0]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084E72
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084E90: .4byte gUnknown_83CC098
|
|
_08084E94: .4byte gTasks
|
|
thumb_func_end sub_8084E60
|
|
|
|
thumb_func_start dive_1_lock
|
|
dive_1_lock: @ 8084E98
|
|
ldr r2, _08084EA8 @ =gPlayerAvatar
|
|
movs r1, 0x1
|
|
strb r1, [r2, 0x6]
|
|
ldrh r1, [r0, 0x8]
|
|
adds r1, 0x1
|
|
strh r1, [r0, 0x8]
|
|
movs r0, 0
|
|
bx lr
|
|
.align 2, 0
|
|
_08084EA8: .4byte gPlayerAvatar
|
|
thumb_func_end dive_1_lock
|
|
|
|
thumb_func_start dive_2_unknown
|
|
dive_2_unknown: @ 8084EAC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl ScriptContext2_Enable
|
|
ldr r1, _08084ED0 @ =gFieldEffectArguments
|
|
movs r2, 0x26
|
|
ldrsh r0, [r4, r2]
|
|
str r0, [r1]
|
|
movs r0, 0x3B
|
|
bl FieldEffectStart
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084ED0: .4byte gFieldEffectArguments
|
|
thumb_func_end dive_2_unknown
|
|
|
|
thumb_func_start dive_3_unknown
|
|
dive_3_unknown: @ 8084ED4
|
|
push {lr}
|
|
sub sp, 0x8
|
|
mov r1, sp
|
|
adds r1, 0x2
|
|
mov r0, sp
|
|
bl PlayerGetDestCoords
|
|
movs r0, 0x6
|
|
bl FieldEffectActiveListContains
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084F18
|
|
ldr r2, _08084F20 @ =gMapObjects
|
|
ldr r0, _08084F24 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0, 0x1E]
|
|
mov r0, sp
|
|
bl dive_warp
|
|
ldr r0, _08084F28 @ =sub_8084E60
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
movs r0, 0x2C
|
|
bl FieldEffectActiveListRemove
|
|
_08084F18:
|
|
movs r0, 0
|
|
add sp, 0x8
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084F20: .4byte gMapObjects
|
|
_08084F24: .4byte gPlayerAvatar
|
|
_08084F28: .4byte sub_8084E60
|
|
thumb_func_end dive_3_unknown
|
|
|
|
thumb_func_start sub_8084F2C
|
|
sub_8084F2C: @ 8084F2C
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r0, _08084F40 @ =sub_8084F44
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084F40: .4byte sub_8084F44
|
|
thumb_func_end sub_8084F2C
|
|
|
|
thumb_func_start sub_8084F44
|
|
sub_8084F44: @ 8084F44
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r6, _08084F8C @ =gUnknown_83CC0A4
|
|
ldr r2, _08084F90 @ =gTasks
|
|
ldr r5, _08084F94 @ =gPlayerAvatar
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r4, r1, r2
|
|
_08084F58:
|
|
movs r0, 0x8
|
|
ldrsh r3, [r4, r0]
|
|
lsls r3, 2
|
|
adds r3, r6
|
|
ldrb r0, [r5, 0x5]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _08084F98 @ =gMapObjects
|
|
adds r1, r0
|
|
ldrb r0, [r5, 0x4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, _08084F9C @ =gSprites
|
|
adds r2, r0
|
|
ldr r3, [r3]
|
|
adds r0, r4, 0
|
|
bl _call_via_r3
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08084F58
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08084F8C: .4byte gUnknown_83CC0A4
|
|
_08084F90: .4byte gTasks
|
|
_08084F94: .4byte gPlayerAvatar
|
|
_08084F98: .4byte gMapObjects
|
|
_08084F9C: .4byte gSprites
|
|
thumb_func_end sub_8084F44
|
|
|
|
thumb_func_start sub_8084FA0
|
|
sub_8084FA0: @ 8084FA0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
bl player_bitmagic
|
|
bl CameraObjectReset2
|
|
movs r0, 0
|
|
bl SetCameraPanningCallback
|
|
ldr r0, _08084FD4 @ =gPlayerAvatar
|
|
movs r2, 0x1
|
|
strb r2, [r0, 0x6]
|
|
ldrb r0, [r5, 0x3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x3]
|
|
strh r2, [r4, 0xA]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x1
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08084FD4: .4byte gPlayerAvatar
|
|
thumb_func_end sub_8084FA0
|
|
|
|
thumb_func_start sub_8084FD8
|
|
sub_8084FD8: @ 8084FD8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0
|
|
bl SetCameraPanning
|
|
ldrh r0, [r4, 0xA]
|
|
negs r0, r0
|
|
strh r0, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7
|
|
ble _08085004
|
|
movs r0, 0
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08085004:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8084FD8
|
|
|
|
thumb_func_start sub_808500C
|
|
sub_808500C: @ 808500C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0
|
|
strh r0, [r2, 0x26]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
ldr r3, _08085054 @ =gFieldEffectArguments
|
|
movs r5, 0x10
|
|
ldrsh r0, [r1, r5]
|
|
str r0, [r3]
|
|
movs r5, 0x12
|
|
ldrsh r0, [r1, r5]
|
|
str r0, [r3, 0x4]
|
|
adds r0, r2, 0
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
str r0, [r3, 0x8]
|
|
ldrb r0, [r2, 0x5]
|
|
lsls r0, 28
|
|
lsrs r0, 30
|
|
str r0, [r3, 0xC]
|
|
movs r0, 0x32
|
|
bl FieldEffectStart
|
|
movs r0, 0xAB
|
|
bl PlaySE
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x1
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08085054: .4byte gFieldEffectArguments
|
|
thumb_func_end sub_808500C
|
|
|
|
thumb_func_start sub_8085058
|
|
sub_8085058: @ 8085058
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
adds r6, r1, 0
|
|
adds r5, r2, 0
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0
|
|
bl SetCameraPanning
|
|
ldrh r0, [r4, 0xA]
|
|
negs r2, r0
|
|
strh r2, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r4, 0xC]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x11
|
|
bgt _08085092
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _080850A4
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
bgt _080850A4
|
|
lsls r0, r2, 1
|
|
b _080850A2
|
|
_08085092:
|
|
movs r0, 0x4
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _080850A4
|
|
lsls r0, r2, 16
|
|
cmp r0, 0
|
|
ble _080850A4
|
|
asrs r0, 17
|
|
_080850A2:
|
|
strh r0, [r4, 0xA]
|
|
_080850A4:
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x6
|
|
ble _080850F0
|
|
adds r0, r5, 0
|
|
adds r0, 0x29
|
|
movs r1, 0
|
|
ldrsb r1, [r0, r1]
|
|
lsls r2, r1, 17
|
|
negs r2, r2
|
|
movs r7, 0x26
|
|
ldrsh r3, [r5, r7]
|
|
movs r7, 0x22
|
|
ldrsh r0, [r5, r7]
|
|
adds r0, r1
|
|
ldr r1, _080850E8 @ =gSpriteCoordOffsetY
|
|
movs r7, 0
|
|
ldrsh r1, [r1, r7]
|
|
adds r0, r1
|
|
asrs r2, 16
|
|
adds r0, r2
|
|
cmn r3, r0
|
|
ble _080850EC
|
|
ldrh r0, [r5, 0x26]
|
|
ldrh r1, [r4, 0xE]
|
|
subs r0, r1
|
|
strh r0, [r5, 0x26]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7
|
|
bgt _080850F0
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0xE]
|
|
b _080850F0
|
|
.align 2, 0
|
|
_080850E8: .4byte gSpriteCoordOffsetY
|
|
_080850EC:
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
_080850F0:
|
|
ldrh r2, [r4, 0x12]
|
|
movs r1, 0x12
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _0808512E
|
|
movs r7, 0x26
|
|
ldrsh r1, [r5, r7]
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _0808512E
|
|
adds r0, r2, 0x1
|
|
strh r0, [r4, 0x12]
|
|
ldrb r0, [r6, 0x3]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r6, 0x3]
|
|
ldrb r1, [r5, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r5, 0x5]
|
|
adds r2, r5, 0
|
|
adds r2, 0x42
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_0808512E:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08085144
|
|
movs r7, 0x10
|
|
ldrsh r0, [r4, r7]
|
|
cmp r0, 0
|
|
beq _08085144
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08085144:
|
|
movs r0, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8085058
|
|
|
|
thumb_func_start sub_808514C
|
|
sub_808514C: @ 808514C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_808514C
|
|
|
|
thumb_func_start sub_8085168
|
|
sub_8085168: @ 8085168
|
|
push {lr}
|
|
ldr r0, _080851A8 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080851A0
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080851A0
|
|
bl WarpIntoMap
|
|
ldr r1, _080851AC @ =gFieldCallback
|
|
ldr r0, _080851B0 @ =mapldr_080851BC
|
|
str r0, [r1]
|
|
ldr r0, _080851B4 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
ldr r0, _080851B8 @ =sub_8084F44
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_080851A0:
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080851A8: .4byte gPaletteFade
|
|
_080851AC: .4byte gFieldCallback
|
|
_080851B0: .4byte mapldr_080851BC
|
|
_080851B4: .4byte CB2_LoadMap
|
|
_080851B8: .4byte sub_8084F44
|
|
thumb_func_end sub_8085168
|
|
|
|
thumb_func_start mapldr_080851BC
|
|
mapldr_080851BC: @ 80851BC
|
|
push {lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl pal_fill_for_maplights
|
|
bl sub_8111CF0
|
|
bl ScriptContext2_Enable
|
|
ldr r0, _080851E0 @ =gFieldCallback
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
ldr r0, _080851E4 @ =sub_80851E8
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080851E0: .4byte gFieldCallback
|
|
_080851E4: .4byte sub_80851E8
|
|
thumb_func_end mapldr_080851BC
|
|
|
|
thumb_func_start sub_80851E8
|
|
sub_80851E8: @ 80851E8
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r6, _08085230 @ =gUnknown_83CC0BC
|
|
ldr r2, _08085234 @ =gTasks
|
|
ldr r5, _08085238 @ =gPlayerAvatar
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r4, r1, r2
|
|
_080851FC:
|
|
movs r0, 0x8
|
|
ldrsh r3, [r4, r0]
|
|
lsls r3, 2
|
|
adds r3, r6
|
|
ldrb r0, [r5, 0x5]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _0808523C @ =gMapObjects
|
|
adds r1, r0
|
|
ldrb r0, [r5, 0x4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, _08085240 @ =gSprites
|
|
adds r2, r0
|
|
ldr r3, [r3]
|
|
adds r0, r4, 0
|
|
bl _call_via_r3
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080851FC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085230: .4byte gUnknown_83CC0BC
|
|
_08085234: .4byte gTasks
|
|
_08085238: .4byte gPlayerAvatar
|
|
_0808523C: .4byte gMapObjects
|
|
_08085240: .4byte gSprites
|
|
thumb_func_end sub_80851E8
|
|
|
|
thumb_func_start sub_8085244
|
|
sub_8085244: @ 8085244
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
bl CameraObjectReset2
|
|
bl player_bitmagic
|
|
ldr r1, _08085270 @ =gPlayerAvatar
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x6]
|
|
ldrb r0, [r4, 0x1]
|
|
movs r1, 0x20
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08085270: .4byte gPlayerAvatar
|
|
thumb_func_end sub_8085244
|
|
|
|
thumb_func_start sub_8085274
|
|
sub_8085274: @ 8085274
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
bl field_weather_is_fade_finished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080852B4
|
|
ldr r1, _080852BC @ =gFieldEffectArguments
|
|
movs r2, 0x10
|
|
ldrsh r0, [r5, r2]
|
|
str r0, [r1]
|
|
movs r2, 0x12
|
|
ldrsh r0, [r5, r2]
|
|
str r0, [r1, 0x4]
|
|
adds r0, r6, 0
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
str r0, [r1, 0x8]
|
|
ldrb r0, [r6, 0x5]
|
|
lsls r0, 28
|
|
lsrs r0, 30
|
|
str r0, [r1, 0xC]
|
|
movs r0, 0x31
|
|
bl FieldEffectStart
|
|
strh r0, [r4, 0xA]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080852B4:
|
|
movs r0, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080852BC: .4byte gFieldEffectArguments
|
|
thumb_func_end sub_8085274
|
|
|
|
thumb_func_start sub_80852C0
|
|
sub_80852C0: @ 80852C0
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
adds r4, r1, 0
|
|
movs r0, 0xA
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08085310 @ =gSprites
|
|
adds r0, r1
|
|
adds r0, 0x2B
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bls _08085308
|
|
ldrh r0, [r2, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x8]
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
bl CameraObjectReset1
|
|
movs r0, 0xA8
|
|
bl PlaySE
|
|
movs r0, 0x4
|
|
bl sub_8064194
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
_08085308:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08085310: .4byte gSprites
|
|
thumb_func_end sub_80852C0
|
|
|
|
thumb_func_start sub_8085314
|
|
sub_8085314: @ 8085314
|
|
push {lr}
|
|
adds r0, r1, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0808533E
|
|
ldr r1, _08085344 @ =gPlayerAvatar
|
|
movs r0, 0
|
|
strb r0, [r1, 0x6]
|
|
bl ScriptContext2_Disable
|
|
bl UnfreezeMapObjects
|
|
ldr r0, _08085348 @ =sub_80851E8
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_0808533E:
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08085344: .4byte gPlayerAvatar
|
|
_08085348: .4byte sub_80851E8
|
|
thumb_func_end sub_8085314
|
|
|
|
thumb_func_start FldEff_LavaridgeGymWarp
|
|
FldEff_LavaridgeGymWarp: @ 808534C
|
|
push {r4,lr}
|
|
ldr r4, _080853A4 @ =gFieldEffectArguments
|
|
adds r1, r4, 0x4
|
|
adds r0, r4, 0
|
|
movs r2, 0x8
|
|
movs r3, 0x8
|
|
bl sub_8063BC4
|
|
ldr r0, _080853A8 @ =gUnknown_83A0010
|
|
adds r0, 0x84
|
|
ldr r0, [r0]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x4
|
|
ldrsh r2, [r4, r3]
|
|
ldrb r3, [r4, 0x8]
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080853AC @ =gSprites
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r1
|
|
movs r1, 0x3
|
|
ldrb r3, [r4, 0xC]
|
|
ands r3, r1
|
|
lsls r3, 2
|
|
ldrb r4, [r2, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r4
|
|
orrs r1, r3
|
|
strb r1, [r2, 0x5]
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r3, 0x2
|
|
orrs r1, r3
|
|
strb r1, [r2]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080853A4: .4byte gFieldEffectArguments
|
|
_080853A8: .4byte gUnknown_83A0010
|
|
_080853AC: .4byte gSprites
|
|
thumb_func_end FldEff_LavaridgeGymWarp
|
|
|
|
thumb_func_start sub_80853B0
|
|
sub_80853B0: @ 80853B0
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080853C8
|
|
adds r0, r2, 0
|
|
movs r1, 0x32
|
|
bl FieldEffectStop
|
|
_080853C8:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80853B0
|
|
|
|
thumb_func_start sub_80853CC
|
|
sub_80853CC: @ 80853CC
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r0, _080853E0 @ =sub_80853E4
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080853E0: .4byte sub_80853E4
|
|
thumb_func_end sub_80853CC
|
|
|
|
thumb_func_start sub_80853E4
|
|
sub_80853E4: @ 80853E4
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r6, _0808542C @ =gUnknown_83CC0CC
|
|
ldr r2, _08085430 @ =gTasks
|
|
ldr r5, _08085434 @ =gPlayerAvatar
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r4, r1, r2
|
|
_080853F8:
|
|
movs r0, 0x8
|
|
ldrsh r3, [r4, r0]
|
|
lsls r3, 2
|
|
adds r3, r6
|
|
ldrb r0, [r5, 0x5]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _08085438 @ =gMapObjects
|
|
adds r1, r0
|
|
ldrb r0, [r5, 0x4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, _0808543C @ =gSprites
|
|
adds r2, r0
|
|
ldr r3, [r3]
|
|
adds r0, r4, 0
|
|
bl _call_via_r3
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080853F8
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808542C: .4byte gUnknown_83CC0CC
|
|
_08085430: .4byte gTasks
|
|
_08085434: .4byte gPlayerAvatar
|
|
_08085438: .4byte gMapObjects
|
|
_0808543C: .4byte gSprites
|
|
thumb_func_end sub_80853E4
|
|
|
|
thumb_func_start sub_8085440
|
|
sub_8085440: @ 8085440
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
bl player_bitmagic
|
|
bl CameraObjectReset2
|
|
ldr r1, _0808546C @ =gPlayerAvatar
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x6]
|
|
ldrb r0, [r4, 0x3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x3]
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0808546C: .4byte gPlayerAvatar
|
|
thumb_func_end sub_8085440
|
|
|
|
thumb_func_start sub_8085470
|
|
sub_8085470: @ 8085470
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
adds r6, r2, 0
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080854E4
|
|
ldrh r1, [r5, 0xA]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0x3
|
|
ble _080854C4
|
|
ldr r1, _080854C0 @ =gFieldEffectArguments
|
|
movs r2, 0x10
|
|
ldrsh r0, [r4, r2]
|
|
str r0, [r1]
|
|
movs r2, 0x12
|
|
ldrsh r0, [r4, r2]
|
|
str r0, [r1, 0x4]
|
|
adds r0, r6, 0
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
str r0, [r1, 0x8]
|
|
ldrb r0, [r6, 0x5]
|
|
lsls r0, 28
|
|
lsrs r0, 30
|
|
str r0, [r1, 0xC]
|
|
movs r0, 0x31
|
|
bl FieldEffectStart
|
|
strh r0, [r5, 0xA]
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
b _080854E4
|
|
.align 2, 0
|
|
_080854C0: .4byte gFieldEffectArguments
|
|
_080854C4:
|
|
adds r0, r1, 0x1
|
|
strh r0, [r5, 0xA]
|
|
ldrb r0, [r4, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
bl GetStepInPlaceDelay4AnimId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
movs r0, 0x21
|
|
bl PlaySE
|
|
_080854E4:
|
|
movs r0, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8085470
|
|
|
|
thumb_func_start sub_80854EC
|
|
sub_80854EC: @ 80854EC
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
adds r4, r1, 0
|
|
ldr r2, _08085520 @ =gSprites
|
|
movs r0, 0xA
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x2B
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
bne _08085516
|
|
ldrb r0, [r4, 0x1]
|
|
movs r1, 0x20
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
_08085516:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08085520: .4byte gSprites
|
|
thumb_func_end sub_80854EC
|
|
|
|
thumb_func_start sub_8085524
|
|
sub_8085524: @ 8085524
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x31
|
|
bl FieldEffectActiveListContains
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08085542
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08085542:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8085524
|
|
|
|
thumb_func_start sub_808554C
|
|
sub_808554C: @ 808554C
|
|
push {lr}
|
|
ldr r0, _0808558C @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08085584
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08085584
|
|
bl WarpIntoMap
|
|
ldr r1, _08085590 @ =gFieldCallback
|
|
ldr r0, _08085594 @ =sub_8084454
|
|
str r0, [r1]
|
|
ldr r0, _08085598 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
ldr r0, _0808559C @ =sub_80853E4
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_08085584:
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0808558C: .4byte gPaletteFade
|
|
_08085590: .4byte gFieldCallback
|
|
_08085594: .4byte sub_8084454
|
|
_08085598: .4byte CB2_LoadMap
|
|
_0808559C: .4byte sub_80853E4
|
|
thumb_func_end sub_808554C
|
|
|
|
thumb_func_start FldEff_PopOutOfAsh
|
|
FldEff_PopOutOfAsh: @ 80855A0
|
|
push {r4,lr}
|
|
ldr r4, _080855F8 @ =gFieldEffectArguments
|
|
adds r1, r4, 0x4
|
|
adds r0, r4, 0
|
|
movs r2, 0x8
|
|
movs r3, 0x8
|
|
bl sub_8063BC4
|
|
ldr r0, _080855FC @ =gUnknown_83A0010
|
|
adds r0, 0x80
|
|
ldr r0, [r0]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x4
|
|
ldrsh r2, [r4, r3]
|
|
ldrb r3, [r4, 0x8]
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _08085600 @ =gSprites
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r1
|
|
movs r1, 0x3
|
|
ldrb r3, [r4, 0xC]
|
|
ands r3, r1
|
|
lsls r3, 2
|
|
ldrb r4, [r2, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r4
|
|
orrs r1, r3
|
|
strb r1, [r2, 0x5]
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r3, 0x2
|
|
orrs r1, r3
|
|
strb r1, [r2]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080855F8: .4byte gFieldEffectArguments
|
|
_080855FC: .4byte gUnknown_83A0010
|
|
_08085600: .4byte gSprites
|
|
thumb_func_end FldEff_PopOutOfAsh
|
|
|
|
thumb_func_start sub_8085604
|
|
sub_8085604: @ 8085604
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0808561C
|
|
adds r0, r2, 0
|
|
movs r1, 0x31
|
|
bl FieldEffectStop
|
|
_0808561C:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8085604
|
|
|
|
thumb_func_start sub_8085620
|
|
sub_8085620: @ 8085620
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r0, _08085638 @ =sub_808563C
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085638: .4byte sub_808563C
|
|
thumb_func_end sub_8085620
|
|
|
|
thumb_func_start sub_808563C
|
|
sub_808563C: @ 808563C
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08085664 @ =gUnknown_83CC0E0
|
|
ldr r2, _08085668 @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085664: .4byte gUnknown_83CC0E0
|
|
_08085668: .4byte gTasks
|
|
thumb_func_end sub_808563C
|
|
|
|
thumb_func_start sub_808566C
|
|
sub_808566C: @ 808566C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
movs r5, 0
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x40
|
|
strh r0, [r4, 0x22]
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
strh r5, [r4, 0x26]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_808566C
|
|
|
|
thumb_func_start sub_8085690
|
|
sub_8085690: @ 8085690
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080856D4 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080856D8 @ =gMapObjects
|
|
adds r6, r0, r1
|
|
adds r4, r5, 0
|
|
adds r4, 0x8
|
|
adds r1, r5, 0
|
|
adds r1, 0xA
|
|
adds r2, r5, 0
|
|
adds r2, 0xC
|
|
adds r0, r6, 0
|
|
bl sub_808576C
|
|
ldrh r1, [r4, 0x6]
|
|
movs r2, 0x6
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x3B
|
|
bgt _080856DC
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x6]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
bne _08085702
|
|
movs r0, 0x27
|
|
bl PlaySE
|
|
b _08085702
|
|
.align 2, 0
|
|
_080856D4: .4byte gPlayerAvatar
|
|
_080856D8: .4byte gMapObjects
|
|
_080856DC:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08085702
|
|
adds r1, r5, 0
|
|
adds r1, 0x12
|
|
adds r2, r5, 0
|
|
adds r2, 0x14
|
|
adds r0, r6, 0
|
|
bl sub_80857F0
|
|
cmp r0, 0
|
|
bne _08085702
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08085702:
|
|
movs r2, 0x8
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x1
|
|
bne _08085750
|
|
ldr r0, _08085758 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08085750
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08085750
|
|
ldrh r1, [r5, 0x26]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r6, 0
|
|
bl FieldObjectSetDirection
|
|
bl sub_80555E0
|
|
bl WarpIntoMap
|
|
ldr r1, _0808575C @ =gFieldCallback
|
|
ldr r0, _08085760 @ =sub_80859D4
|
|
str r0, [r1]
|
|
ldr r0, _08085764 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
ldr r0, _08085768 @ =sub_808563C
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_08085750:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085758: .4byte gPaletteFade
|
|
_0808575C: .4byte gFieldCallback
|
|
_08085760: .4byte sub_80859D4
|
|
_08085764: .4byte CB2_LoadMap
|
|
_08085768: .4byte sub_808563C
|
|
thumb_func_end sub_8085690
|
|
|
|
thumb_func_start sub_808576C
|
|
sub_808576C: @ 808576C
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
adds r6, r1, 0
|
|
adds r5, r2, 0
|
|
bl FieldObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0808578A
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080857E4
|
|
_0808578A:
|
|
ldrh r1, [r6]
|
|
movs r2, 0
|
|
ldrsh r0, [r6, r2]
|
|
cmp r0, 0
|
|
beq _0808579E
|
|
subs r0, r1, 0x1
|
|
strh r0, [r6]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080857E4
|
|
_0808579E:
|
|
ldr r7, _080857E0 @ =gUnknown_83CC0E8
|
|
ldrb r0, [r4, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
adds r0, r7
|
|
ldrb r0, [r0]
|
|
bl sub_8063EB8
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
ldrh r1, [r5]
|
|
movs r2, 0
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0xB
|
|
bgt _080857C8
|
|
adds r0, r1, 0x1
|
|
strh r0, [r5]
|
|
_080857C8:
|
|
movs r0, 0
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0xC
|
|
asrs r0, r1
|
|
strh r0, [r6]
|
|
ldrb r0, [r4, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
adds r0, r7
|
|
ldrb r0, [r0]
|
|
b _080857EA
|
|
.align 2, 0
|
|
_080857E0: .4byte gUnknown_83CC0E8
|
|
_080857E4:
|
|
ldrb r0, [r4, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
_080857EA:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_808576C
|
|
|
|
thumb_func_start sub_80857F0
|
|
sub_80857F0: @ 80857F0
|
|
push {r4-r7,lr}
|
|
adds r7, r0, 0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
ldrb r0, [r7, 0x4]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _08085818 @ =gSprites
|
|
adds r4, r1, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _08085830
|
|
cmp r0, 0x1
|
|
bgt _0808581C
|
|
cmp r0, 0
|
|
beq _08085826
|
|
b _0808589A
|
|
.align 2, 0
|
|
_08085818: .4byte gSprites
|
|
_0808581C:
|
|
cmp r0, 0x2
|
|
beq _08085878
|
|
cmp r0, 0x3
|
|
beq _08085896
|
|
b _0808589A
|
|
_08085826:
|
|
bl CameraObjectReset2
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
_08085830:
|
|
ldrh r0, [r4, 0x26]
|
|
subs r0, 0x8
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r6]
|
|
subs r0, 0x8
|
|
strh r0, [r6]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x10
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bgt _0808589A
|
|
ldrb r0, [r7, 0x3]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r7, 0x3]
|
|
ldrb r1, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, 0x5]
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
adds r2, r4, 0
|
|
adds r2, 0x42
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
b _0808589A
|
|
_08085878:
|
|
ldrh r0, [r4, 0x26]
|
|
subs r0, 0x8
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r6]
|
|
subs r0, 0x8
|
|
strh r0, [r6]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x58
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bgt _0808589A
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
_08085896:
|
|
movs r0, 0
|
|
b _0808589C
|
|
_0808589A:
|
|
movs r0, 0x1
|
|
_0808589C:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80857F0
|
|
|
|
thumb_func_start sub_80858A4
|
|
sub_80858A4: @ 80858A4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
adds r6, r0, 0
|
|
adds r5, r1, 0
|
|
adds r7, r2, 0
|
|
mov r9, r3
|
|
ldr r0, [sp, 0x20]
|
|
mov r10, r0
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _080858D8 @ =gSprites
|
|
adds r4, r1, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _08085948
|
|
cmp r0, 0x1
|
|
bgt _080858DC
|
|
cmp r0, 0
|
|
beq _080858E6
|
|
b _080859C2
|
|
.align 2, 0
|
|
_080858D8: .4byte gSprites
|
|
_080858DC:
|
|
cmp r0, 0x2
|
|
beq _0808599C
|
|
cmp r0, 0x3
|
|
beq _080859BE
|
|
b _080859C2
|
|
_080858E6:
|
|
bl CameraObjectReset2
|
|
movs r2, 0x58
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
strh r0, [r7]
|
|
ldrh r0, [r4, 0x26]
|
|
subs r0, 0x58
|
|
movs r3, 0
|
|
strh r0, [r4, 0x26]
|
|
ldrb r0, [r4, 0x5]
|
|
lsls r0, 28
|
|
lsrs r0, 30
|
|
mov r1, r9
|
|
strh r0, [r1]
|
|
movs r2, 0x43
|
|
adds r2, r4
|
|
mov r8, r2
|
|
ldrb r0, [r2]
|
|
mov r1, r10
|
|
strh r0, [r1]
|
|
movs r2, 0x42
|
|
adds r2, r4
|
|
mov r12, r2
|
|
ldrb r0, [r2]
|
|
lsrs r0, 6
|
|
ldr r1, [sp, 0x24]
|
|
strh r0, [r1]
|
|
ldrb r0, [r6, 0x3]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r6, 0x3]
|
|
ldrb r1, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, 0x5]
|
|
mov r2, r8
|
|
strb r3, [r2]
|
|
mov r0, r12
|
|
ldrb r1, [r0]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
_08085948:
|
|
ldrh r0, [r4, 0x26]
|
|
adds r0, 0x4
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r7]
|
|
adds r0, 0x4
|
|
strh r0, [r7]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x10
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
blt _080859C2
|
|
movs r0, 0x3
|
|
mov r2, r9
|
|
ldrb r1, [r2]
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
mov r1, r10
|
|
ldrh r0, [r1]
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
ldr r2, [sp, 0x24]
|
|
ldrb r1, [r2]
|
|
adds r3, r4, 0
|
|
adds r3, 0x42
|
|
lsls r1, 6
|
|
ldrb r2, [r3]
|
|
movs r0, 0x3F
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
b _080859C2
|
|
_0808599C:
|
|
ldrh r0, [r4, 0x26]
|
|
adds r0, 0x4
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r7]
|
|
adds r0, 0x4
|
|
strh r0, [r7]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
blt _080859C2
|
|
movs r0, 0x1E
|
|
bl PlaySE
|
|
bl CameraObjectReset1
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
_080859BE:
|
|
movs r0, 0
|
|
b _080859C4
|
|
_080859C2:
|
|
movs r0, 0x1
|
|
_080859C4:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80858A4
|
|
|
|
thumb_func_start sub_80859D4
|
|
sub_80859D4: @ 80859D4
|
|
push {lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl pal_fill_for_maplights
|
|
bl sub_8111CF0
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r1, _08085A14 @ =gFieldCallback
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
ldr r2, _08085A18 @ =gMapObjects
|
|
ldr r0, _08085A1C @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0, 0x1]
|
|
movs r2, 0x20
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x1]
|
|
ldr r0, _08085A20 @ =sub_8085A24
|
|
movs r1, 0
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085A14: .4byte gFieldCallback
|
|
_08085A18: .4byte gMapObjects
|
|
_08085A1C: .4byte gPlayerAvatar
|
|
_08085A20: .4byte sub_8085A24
|
|
thumb_func_end sub_80859D4
|
|
|
|
thumb_func_start sub_8085A24
|
|
sub_8085A24: @ 8085A24
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08085A4C @ =gUnknown_83CC0F0
|
|
ldr r2, _08085A50 @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085A4C: .4byte gUnknown_83CC0F0
|
|
_08085A50: .4byte gTasks
|
|
thumb_func_end sub_8085A24
|
|
|
|
thumb_func_start sub_8085A54
|
|
sub_8085A54: @ 8085A54
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl field_weather_is_fade_finished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08085A78
|
|
movs r0, 0x28
|
|
bl PlaySE
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08085A78:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8085A54
|
|
|
|
thumb_func_start sub_8085A80
|
|
sub_8085A80: @ 8085A80
|
|
push {r4-r7,lr}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
adds r5, r4, 0
|
|
adds r5, 0x8
|
|
ldr r0, _08085AD4 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08085AD8 @ =gMapObjects
|
|
adds r6, r0, r1
|
|
adds r1, r4, 0
|
|
adds r1, 0xA
|
|
adds r2, r4, 0
|
|
adds r2, 0xC
|
|
adds r3, r4, 0
|
|
adds r3, 0xE
|
|
adds r0, r5, 0
|
|
adds r0, 0x8
|
|
str r0, [sp]
|
|
adds r0, r4, 0
|
|
adds r0, 0x12
|
|
str r0, [sp, 0x4]
|
|
adds r0, r6, 0
|
|
bl sub_80858A4
|
|
adds r7, r0, 0
|
|
ldrb r1, [r6, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r6, 0x1]
|
|
ldrh r1, [r5, 0xC]
|
|
movs r2, 0xC
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0x7
|
|
bgt _08085ADC
|
|
adds r0, r1, 0x1
|
|
strh r0, [r5, 0xC]
|
|
b _08085B10
|
|
.align 2, 0
|
|
_08085AD4: .4byte gPlayerAvatar
|
|
_08085AD8: .4byte gMapObjects
|
|
_08085ADC:
|
|
movs r2, 0xE
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0
|
|
bne _08085B10
|
|
adds r0, r1, 0x1
|
|
strh r0, [r5, 0xC]
|
|
adds r1, r4, 0
|
|
adds r1, 0x1A
|
|
adds r2, r4, 0
|
|
adds r2, 0x1C
|
|
adds r0, r6, 0
|
|
bl sub_808576C
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
strh r1, [r5, 0x10]
|
|
movs r2, 0xC
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0x31
|
|
ble _08085B10
|
|
movs r2, 0x1E
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bne _08085B10
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0xE]
|
|
_08085B10:
|
|
cmp r7, 0
|
|
bne _08085B58
|
|
movs r0, 0x10
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0x1E
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bne _08085B58
|
|
adds r0, r6, 0
|
|
bl FieldObjectCheckHeldMovementStatus
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08085B58
|
|
ldrb r1, [r6, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r6, 0x1]
|
|
ldrb r1, [r6, 0x3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r6, 0x3]
|
|
bl ScriptContext2_Disable
|
|
bl UnfreezeMapObjects
|
|
ldr r0, _08085B60 @ =sub_8085A24
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_08085B58:
|
|
add sp, 0x8
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085B60: .4byte sub_8085A24
|
|
thumb_func_end sub_8085A80
|
|
|
|
thumb_func_start CreateTeleportFieldEffectTask
|
|
CreateTeleportFieldEffectTask: @ 8085B64
|
|
push {lr}
|
|
ldr r0, _08085B74 @ =sub_8085B78
|
|
movs r1, 0
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085B74: .4byte sub_8085B78
|
|
thumb_func_end CreateTeleportFieldEffectTask
|
|
|
|
thumb_func_start sub_8085B78
|
|
sub_8085B78: @ 8085B78
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08085BA0 @ =gUnknown_83CC0F8
|
|
ldr r2, _08085BA4 @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085BA0: .4byte gUnknown_83CC0F8
|
|
_08085BA4: .4byte gTasks
|
|
thumb_func_end sub_8085B78
|
|
|
|
thumb_func_start sub_8085BA8
|
|
sub_8085BA8: @ 8085BA8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
bl CameraObjectReset2
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8085BA8
|
|
|
|
thumb_func_start sub_8085BD0
|
|
sub_8085BD0: @ 8085BD0
|
|
push {r4,r5,lr}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
ldr r1, _08085C54 @ =gUnknown_83CC108
|
|
mov r0, sp
|
|
movs r2, 0x5
|
|
bl memcpy
|
|
ldr r0, _08085C58 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08085C5C @ =gMapObjects
|
|
adds r5, r0, r1
|
|
ldrh r1, [r4, 0xA]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _08085C02
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08085C1C
|
|
_08085C02:
|
|
ldrb r0, [r5, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
add r0, sp
|
|
ldrb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl FieldObjectTurn
|
|
movs r0, 0x8
|
|
strh r0, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
_08085C1C:
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x7
|
|
ble _08085C4A
|
|
movs r2, 0x26
|
|
ldrsh r1, [r4, r2]
|
|
ldrb r0, [r5, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
cmp r1, r0
|
|
bne _08085C4A
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0xA]
|
|
movs r0, 0x8
|
|
strh r0, [r4, 0xC]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
movs r0, 0x27
|
|
bl PlaySE
|
|
_08085C4A:
|
|
add sp, 0x8
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085C54: .4byte gUnknown_83CC108
|
|
_08085C58: .4byte gPlayerAvatar
|
|
_08085C5C: .4byte gMapObjects
|
|
thumb_func_end sub_8085BD0
|
|
|
|
thumb_func_start sub_8085C60
|
|
sub_8085C60: @ 8085C60
|
|
push {r4,r5,lr}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
ldr r1, _08085D24 @ =gUnknown_83CC108
|
|
mov r0, sp
|
|
movs r2, 0x5
|
|
bl memcpy
|
|
ldr r2, _08085D28 @ =gPlayerAvatar
|
|
ldrb r1, [r2, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08085D2C @ =gMapObjects
|
|
adds r3, r0, r1
|
|
ldrb r1, [r2, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08085D30 @ =gSprites
|
|
adds r5, r0, r1
|
|
ldrh r0, [r4, 0xA]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _08085CAA
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0xA]
|
|
ldrb r0, [r3, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
add r0, sp
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
bl FieldObjectTurn
|
|
_08085CAA:
|
|
ldrh r0, [r5, 0x22]
|
|
ldrh r1, [r4, 0xE]
|
|
subs r0, r1
|
|
strh r0, [r5, 0x22]
|
|
ldrh r1, [r4, 0xE]
|
|
ldrh r2, [r4, 0x10]
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x10]
|
|
ldrh r0, [r4, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _08085CD6
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7
|
|
bgt _08085CD6
|
|
lsls r0, r1, 1
|
|
strh r0, [r4, 0xE]
|
|
_08085CD6:
|
|
movs r1, 0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x8
|
|
ble _08085D04
|
|
ldrb r1, [r5, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
adds r2, r5, 0
|
|
adds r2, 0x42
|
|
ldrb r1, [r2]
|
|
movs r0, 0xC0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08085D04
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08085D04:
|
|
movs r2, 0x10
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xA7
|
|
ble _08085D1A
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
_08085D1A:
|
|
add sp, 0x8
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085D24: .4byte gUnknown_83CC108
|
|
_08085D28: .4byte gPlayerAvatar
|
|
_08085D2C: .4byte gMapObjects
|
|
_08085D30: .4byte gSprites
|
|
thumb_func_end sub_8085C60
|
|
|
|
thumb_func_start sub_8085D34
|
|
sub_8085D34: @ 8085D34
|
|
push {lr}
|
|
ldr r0, _08085D74 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08085D70
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08085D70
|
|
bl copy_saved_warp3_bank_and_enter_x_to_warp1
|
|
bl WarpIntoMap
|
|
ldr r0, _08085D78 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
ldr r1, _08085D7C @ =gFieldCallback
|
|
ldr r0, _08085D80 @ =mapldr_08085D88
|
|
str r0, [r1]
|
|
ldr r0, _08085D84 @ =sub_8085B78
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_08085D70:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085D74: .4byte gPaletteFade
|
|
_08085D78: .4byte CB2_LoadMap
|
|
_08085D7C: .4byte gFieldCallback
|
|
_08085D80: .4byte mapldr_08085D88
|
|
_08085D84: .4byte sub_8085B78
|
|
thumb_func_end sub_8085D34
|
|
|
|
thumb_func_start mapldr_08085D88
|
|
mapldr_08085D88: @ 8085D88
|
|
push {lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl pal_fill_for_maplights
|
|
bl sub_8111CF0
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r1, _08085DCC @ =gFieldCallback
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
ldr r2, _08085DD0 @ =gMapObjects
|
|
ldr r0, _08085DD4 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0, 0x1]
|
|
movs r2, 0x20
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x1]
|
|
bl CameraObjectReset2
|
|
ldr r0, _08085DD8 @ =sub_8085DDC
|
|
movs r1, 0
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085DCC: .4byte gFieldCallback
|
|
_08085DD0: .4byte gMapObjects
|
|
_08085DD4: .4byte gPlayerAvatar
|
|
_08085DD8: .4byte sub_8085DDC
|
|
thumb_func_end mapldr_08085D88
|
|
|
|
thumb_func_start sub_8085DDC
|
|
sub_8085DDC: @ 8085DDC
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08085E04 @ =gUnknown_83CC110
|
|
ldr r2, _08085E08 @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085E04: .4byte gUnknown_83CC110
|
|
_08085E08: .4byte gTasks
|
|
thumb_func_end sub_8085DDC
|
|
|
|
thumb_func_start sub_8085E0C
|
|
sub_8085E0C: @ 8085E0C
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
bl field_weather_is_fade_finished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08085E82
|
|
ldr r5, _08085E88 @ =gPlayerAvatar
|
|
ldrb r0, [r5, 0x4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, _08085E8C @ =gSprites
|
|
adds r2, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x29
|
|
movs r4, 0
|
|
ldrsb r4, [r0, r4]
|
|
lsls r0, r4, 17
|
|
negs r0, r0
|
|
ldrh r1, [r2, 0x22]
|
|
ldr r3, _08085E90 @ =gSpriteCoordOffsetY
|
|
adds r1, r4
|
|
ldrh r3, [r3]
|
|
adds r1, r3
|
|
asrs r0, 16
|
|
adds r0, r1
|
|
negs r0, r0
|
|
strh r0, [r2, 0x26]
|
|
ldr r3, _08085E94 @ =gMapObjects
|
|
ldrb r0, [r5, 0x5]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrb r3, [r1, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r0, r3
|
|
strb r0, [r1, 0x1]
|
|
ldrh r0, [r6, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x8]
|
|
movs r0, 0x8
|
|
strh r0, [r6, 0xA]
|
|
movs r0, 0x1
|
|
strh r0, [r6, 0xC]
|
|
adds r2, 0x42
|
|
ldrb r0, [r2]
|
|
lsrs r0, 6
|
|
strh r0, [r6, 0x24]
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x26]
|
|
movs r0, 0x27
|
|
bl PlaySE
|
|
_08085E82:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08085E88: .4byte gPlayerAvatar
|
|
_08085E8C: .4byte gSprites
|
|
_08085E90: .4byte gSpriteCoordOffsetY
|
|
_08085E94: .4byte gMapObjects
|
|
thumb_func_end sub_8085E0C
|
|
|
|
thumb_func_start sub_8085E98
|
|
sub_8085E98: @ 8085E98
|
|
push {r4-r7,lr}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
ldr r1, _08085F00 @ =gUnknown_83CC108
|
|
mov r0, sp
|
|
movs r2, 0x5
|
|
bl memcpy
|
|
ldr r2, _08085F04 @ =gPlayerAvatar
|
|
ldrb r1, [r2, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08085F08 @ =gMapObjects
|
|
adds r6, r0, r1
|
|
ldrb r1, [r2, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08085F0C @ =gSprites
|
|
adds r5, r0, r1
|
|
ldrh r0, [r4, 0xA]
|
|
ldrh r1, [r5, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x26]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x8
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
blt _08085F10
|
|
ldrh r1, [r4, 0x22]
|
|
movs r2, 0x22
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _08085F36
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x22]
|
|
ldrb r0, [r6]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r6]
|
|
ldrh r1, [r4, 0x24]
|
|
adds r3, r5, 0
|
|
adds r3, 0x42
|
|
lsls r1, 6
|
|
ldrb r2, [r3]
|
|
movs r0, 0x3F
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
b _08085F36
|
|
.align 2, 0
|
|
_08085F00: .4byte gUnknown_83CC108
|
|
_08085F04: .4byte gPlayerAvatar
|
|
_08085F08: .4byte gMapObjects
|
|
_08085F0C: .4byte gSprites
|
|
_08085F10:
|
|
ldrb r1, [r5, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
adds r2, r5, 0
|
|
adds r2, 0x42
|
|
ldrb r1, [r2]
|
|
movs r0, 0xC0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08085F36
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08085F36:
|
|
ldrh r2, [r5, 0x26]
|
|
movs r3, 0x26
|
|
ldrsh r1, [r5, r3]
|
|
movs r0, 0x30
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
blt _08085F5A
|
|
ldrh r1, [r4, 0xA]
|
|
movs r3, 0xA
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0x1
|
|
ble _08085F5A
|
|
movs r0, 0x1
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08085F5A
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0xA]
|
|
_08085F5A:
|
|
ldrh r0, [r4, 0xC]
|
|
subs r0, 0x1
|
|
movs r7, 0
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08085F7C
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0xC]
|
|
ldrb r0, [r6, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
add r0, sp
|
|
ldrb r1, [r0]
|
|
adds r0, r6, 0
|
|
bl FieldObjectTurn
|
|
_08085F7C:
|
|
movs r1, 0x26
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
blt _08085F92
|
|
strh r7, [r5, 0x26]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
strh r7, [r4, 0xC]
|
|
_08085F92:
|
|
add sp, 0x8
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8085E98
|
|
|
|
thumb_func_start sub_8085F9C
|
|
sub_8085F9C: @ 8085F9C
|
|
push {r4,r5,lr}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
ldr r1, _08086018 @ =gUnknown_83CC108
|
|
mov r0, sp
|
|
movs r2, 0x5
|
|
bl memcpy
|
|
ldr r0, _0808601C @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086020 @ =gMapObjects
|
|
adds r5, r0, r1
|
|
ldrh r0, [r4, 0xA]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08086010
|
|
ldrb r0, [r5, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
add r0, sp
|
|
ldrb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl FieldObjectTurn
|
|
movs r0, 0x8
|
|
strh r0, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
ble _08086010
|
|
movs r0, 0x24
|
|
ldrsh r1, [r4, r0]
|
|
ldrb r0, [r5, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
cmp r1, r0
|
|
bne _08086010
|
|
bl ScriptContext2_Disable
|
|
bl CameraObjectReset1
|
|
bl UnfreezeMapObjects
|
|
ldr r0, _08086024 @ =sub_8085DDC
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_08086010:
|
|
add sp, 0x8
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086018: .4byte gUnknown_83CC108
|
|
_0808601C: .4byte gPlayerAvatar
|
|
_08086020: .4byte gMapObjects
|
|
_08086024: .4byte sub_8085DDC
|
|
thumb_func_end sub_8085F9C
|
|
|
|
thumb_func_start FldEff_FieldMoveShowMon
|
|
FldEff_FieldMoveShowMon: @ 8086028
|
|
push {r4,lr}
|
|
bl GetCurrentMapType
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl is_light_level_1_2_3_5_or_6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08086048
|
|
ldr r0, _08086044 @ =sub_80860E0
|
|
b _0808604A
|
|
.align 2, 0
|
|
_08086044: .4byte sub_80860E0
|
|
_08086048:
|
|
ldr r0, _08086078 @ =sub_8086468
|
|
_0808604A:
|
|
movs r1, 0xFF
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r2, _0808607C @ =gFieldEffectArguments
|
|
ldr r0, [r2]
|
|
ldr r1, [r2, 0x4]
|
|
ldr r2, [r2, 0x8]
|
|
bl sub_8086860
|
|
ldr r2, _08086080 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r1, 0x26]
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08086078: .4byte sub_8086468
|
|
_0808607C: .4byte gFieldEffectArguments
|
|
_08086080: .4byte gTasks
|
|
thumb_func_end FldEff_FieldMoveShowMon
|
|
|
|
thumb_func_start FldEff_FieldMoveShowMonInit
|
|
FldEff_FieldMoveShowMonInit: @ 8086084
|
|
push {r4-r6,lr}
|
|
ldr r5, _080860D8 @ =gFieldEffectArguments
|
|
ldr r0, [r5]
|
|
movs r6, 0x80
|
|
lsls r6, 24
|
|
ands r6, r0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x64
|
|
adds r4, r0, 0
|
|
muls r4, r1
|
|
ldr r0, _080860DC @ =gPlayerParty
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
str r0, [r5]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl GetMonData
|
|
str r0, [r5, 0x4]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl GetMonData
|
|
str r0, [r5, 0x8]
|
|
ldr r0, [r5]
|
|
orrs r0, r6
|
|
str r0, [r5]
|
|
movs r0, 0x6
|
|
bl FieldEffectStart
|
|
movs r0, 0x3B
|
|
bl FieldEffectActiveListRemove
|
|
movs r0, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080860D8: .4byte gFieldEffectArguments
|
|
_080860DC: .4byte gPlayerParty
|
|
thumb_func_end FldEff_FieldMoveShowMonInit
|
|
|
|
thumb_func_start sub_80860E0
|
|
sub_80860E0: @ 80860E0
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08086108 @ =gUnknown_83CC11C
|
|
ldr r2, _0808610C @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086108: .4byte gUnknown_83CC11C
|
|
_0808610C: .4byte gTasks
|
|
thumb_func_end sub_80860E0
|
|
|
|
thumb_func_start sub_8086110
|
|
sub_8086110: @ 8086110
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x48
|
|
bl GetGpuReg
|
|
strh r0, [r4, 0x1E]
|
|
movs r0, 0x4A
|
|
bl GetGpuReg
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r4, 0
|
|
adds r0, 0x22
|
|
ldr r1, _08086170 @ =gMain
|
|
ldr r1, [r1, 0xC]
|
|
bl StoreWordInTwoHalfwords
|
|
ldr r1, _08086174 @ =0x0000f0f1
|
|
strh r1, [r4, 0xA]
|
|
ldr r0, _08086178 @ =0x00005051
|
|
strh r0, [r4, 0xC]
|
|
movs r0, 0x3F
|
|
strh r0, [r4, 0xE]
|
|
movs r0, 0x3E
|
|
strh r0, [r4, 0x10]
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0xC]
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0xE]
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x10]
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
ldr r0, _0808617C @ =sub_80863C0
|
|
bl SetVBlankCallback
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086170: .4byte gMain
|
|
_08086174: .4byte 0x0000f0f1
|
|
_08086178: .4byte 0x00005051
|
|
_0808617C: .4byte sub_80863C0
|
|
thumb_func_end sub_8086110
|
|
|
|
thumb_func_start sub_8086180
|
|
sub_8086180: @ 8086180
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
sub sp, 0x4
|
|
mov r8, r0
|
|
movs r0, 0x8
|
|
bl GetGpuReg
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 18
|
|
lsls r4, 30
|
|
lsrs r4, 16
|
|
movs r0, 0x8
|
|
bl GetGpuReg
|
|
adds r5, r0, 0
|
|
lsls r5, 16
|
|
lsrs r5, 24
|
|
lsls r5, 27
|
|
lsrs r5, 16
|
|
ldr r0, _080861F0 @ =gUnknown_83CB5F0
|
|
movs r6, 0xC0
|
|
lsls r6, 19
|
|
adds r4, r6
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r1, r4, 0
|
|
bl CpuSet
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
adds r6, r5, r6
|
|
ldr r2, _080861F4 @ =0x05000200
|
|
mov r0, sp
|
|
adds r1, r6, 0
|
|
bl CpuSet
|
|
ldr r0, _080861F8 @ =gUnknown_83CB7F0
|
|
movs r1, 0xF0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
adds r0, r5, 0
|
|
bl sub_8086428
|
|
mov r1, r8
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080861F0: .4byte gUnknown_83CB5F0
|
|
_080861F4: .4byte 0x05000200
|
|
_080861F8: .4byte gUnknown_83CB7F0
|
|
thumb_func_end sub_8086180
|
|
|
|
thumb_func_start sub_80861FC
|
|
sub_80861FC: @ 80861FC
|
|
push {r4-r7,lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x12]
|
|
subs r0, 0x10
|
|
strh r0, [r3, 0x12]
|
|
ldrh r6, [r3, 0xA]
|
|
ldrh r2, [r3, 0xC]
|
|
movs r7, 0xFF
|
|
lsrs r1, r6, 8
|
|
subs r1, 0x10
|
|
lsls r1, 16
|
|
lsrs r0, r2, 8
|
|
subs r0, 0x2
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r0, r7, 0
|
|
ands r0, r2
|
|
adds r5, r0, 0x2
|
|
lsrs r2, r1, 16
|
|
cmp r1, 0
|
|
bge _08086228
|
|
movs r2, 0
|
|
_08086228:
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x27
|
|
bgt _08086232
|
|
movs r4, 0x28
|
|
_08086232:
|
|
cmp r5, 0x78
|
|
ble _08086238
|
|
movs r5, 0x78
|
|
_08086238:
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
lsls r1, r2, 8
|
|
adds r0, r7, 0
|
|
ands r0, r6
|
|
orrs r1, r0
|
|
strh r1, [r3, 0xA]
|
|
lsls r0, r4, 16
|
|
asrs r4, r0, 16
|
|
lsls r0, r4, 8
|
|
adds r1, r5, 0
|
|
orrs r0, r1
|
|
strh r0, [r3, 0xC]
|
|
cmp r2, 0
|
|
bne _08086278
|
|
cmp r4, 0x28
|
|
bne _08086278
|
|
cmp r1, 0x78
|
|
bne _08086278
|
|
ldr r2, _08086280 @ =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, 0x1C
|
|
adds r0, r2
|
|
ldr r1, _08086284 @ =sub_80868C0
|
|
str r1, [r0]
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
_08086278:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086280: .4byte gSprites
|
|
_08086284: .4byte sub_80868C0
|
|
thumb_func_end sub_80861FC
|
|
|
|
thumb_func_start sub_8086288
|
|
sub_8086288: @ 8086288
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x12]
|
|
subs r0, 0x10
|
|
strh r0, [r3, 0x12]
|
|
ldr r2, _080862B4 @ =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _080862AE
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
_080862AE:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080862B4: .4byte gSprites
|
|
thumb_func_end sub_8086288
|
|
|
|
thumb_func_start sub_80862B8
|
|
sub_80862B8: @ 80862B8
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x12]
|
|
subs r0, 0x10
|
|
strh r0, [r3, 0x12]
|
|
ldrh r2, [r3, 0xC]
|
|
lsls r1, r2, 16
|
|
movs r0, 0xFF
|
|
asrs r1, 24
|
|
adds r1, 0x6
|
|
lsls r1, 16
|
|
ands r0, r2
|
|
subs r0, 0x6
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
lsrs r4, r1, 16
|
|
asrs r1, 16
|
|
cmp r1, 0x50
|
|
ble _080862E0
|
|
movs r4, 0x50
|
|
_080862E0:
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x50
|
|
bgt _080862EA
|
|
movs r2, 0x51
|
|
_080862EA:
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
lsls r1, r0, 8
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
orrs r1, r2
|
|
strh r1, [r3, 0xC]
|
|
cmp r0, 0x50
|
|
bne _08086306
|
|
cmp r2, 0x51
|
|
bne _08086306
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
_08086306:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80862B8
|
|
|
|
thumb_func_start sub_808630C
|
|
sub_808630C: @ 808630C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
movs r0, 0x8
|
|
bl GetGpuReg
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 24
|
|
lsls r1, 27
|
|
lsrs r1, 16
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xC0
|
|
lsls r0, 19
|
|
adds r1, r0
|
|
ldr r2, _08086354 @ =0x05000200
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0xF1
|
|
strh r0, [r4, 0xA]
|
|
movs r0, 0xA1
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x1E]
|
|
strh r0, [r4, 0xE]
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x10]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086354: .4byte 0x05000200
|
|
thumb_func_end sub_808630C
|
|
|
|
thumb_func_start sub_8086358
|
|
sub_8086358: @ 8086358
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
adds r0, 0x22
|
|
mov r1, sp
|
|
bl LoadWordFromTwoHalfwords
|
|
ldr r0, [sp]
|
|
bl SetVBlankCallback
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl ChangeBgX
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl ChangeBgY
|
|
bl Menu_LoadStdPal
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080863B8 @ =gSprites
|
|
adds r0, r1
|
|
ldrh r1, [r4, 0x26]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl sub_8083A5C
|
|
movs r0, 0x6
|
|
bl FieldEffectActiveListRemove
|
|
ldr r0, _080863BC @ =sub_80860E0
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080863B8: .4byte gSprites
|
|
_080863BC: .4byte sub_80860E0
|
|
thumb_func_end sub_8086358
|
|
|
|
thumb_func_start sub_80863C0
|
|
sub_80863C0: @ 80863C0
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r0, _08086420 @ =sub_80860E0
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _08086424 @ =gTasks
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
adds r0, 0x22
|
|
mov r1, sp
|
|
bl LoadWordFromTwoHalfwords
|
|
ldr r0, [sp]
|
|
bl _call_via_r0
|
|
ldrh r1, [r4, 0xA]
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0xC]
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0xE]
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x10]
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x12]
|
|
movs r0, 0x10
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x14]
|
|
movs r0, 0x12
|
|
bl SetGpuReg
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086420: .4byte sub_80860E0
|
|
_08086424: .4byte gTasks
|
|
thumb_func_end sub_80863C0
|
|
|
|
thumb_func_start sub_8086428
|
|
sub_8086428: @ 8086428
|
|
push {r4,r5,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, _0808645C @ =0x06000140
|
|
adds r2, r0, r1
|
|
movs r1, 0
|
|
ldr r5, _08086460 @ =gUnknown_83CB810
|
|
movs r0, 0xF0
|
|
lsls r0, 8
|
|
adds r4, r0, 0
|
|
ldr r3, _08086464 @ =0x0000013f
|
|
_0808643E:
|
|
lsls r0, r1, 1
|
|
adds r0, r5
|
|
ldrh r0, [r0]
|
|
orrs r0, r4
|
|
strh r0, [r2]
|
|
adds r0, r1, 0x1
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
adds r2, 0x2
|
|
cmp r1, r3
|
|
bls _0808643E
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808645C: .4byte 0x06000140
|
|
_08086460: .4byte gUnknown_83CB810
|
|
_08086464: .4byte 0x0000013f
|
|
thumb_func_end sub_8086428
|
|
|
|
thumb_func_start sub_8086468
|
|
sub_8086468: @ 8086468
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08086490 @ =gUnknown_83CC138
|
|
ldr r2, _08086494 @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086490: .4byte gUnknown_83CC138
|
|
_08086494: .4byte gTasks
|
|
thumb_func_end sub_8086468
|
|
|
|
thumb_func_start sub_8086498
|
|
sub_8086498: @ 8086498
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0xA]
|
|
movs r0, 0x10
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0xC]
|
|
movs r0, 0x12
|
|
bl SetGpuReg
|
|
adds r0, r4, 0
|
|
adds r0, 0x22
|
|
ldr r1, _080864CC @ =gMain
|
|
ldr r1, [r1, 0xC]
|
|
bl StoreWordInTwoHalfwords
|
|
ldr r0, _080864D0 @ =sub_80866E0
|
|
bl SetVBlankCallback
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080864CC: .4byte gMain
|
|
_080864D0: .4byte sub_80866E0
|
|
thumb_func_end sub_8086498
|
|
|
|
thumb_func_start sub_80864D4
|
|
sub_80864D4: @ 80864D4
|
|
push {r4-r6,lr}
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5,r6}
|
|
sub sp, 0x4
|
|
mov r9, r0
|
|
movs r0, 0x8
|
|
bl GetGpuReg
|
|
adds r5, r0, 0
|
|
lsls r5, 16
|
|
lsrs r5, 18
|
|
lsls r5, 30
|
|
lsrs r5, 16
|
|
movs r0, 0x8
|
|
bl GetGpuReg
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 24
|
|
lsls r4, 27
|
|
lsrs r4, 16
|
|
movs r0, 0
|
|
mov r8, r0
|
|
mov r1, r9
|
|
strh r4, [r1, 0x20]
|
|
ldr r0, _08086548 @ =gUnknown_83CBA90
|
|
movs r6, 0xC0
|
|
lsls r6, 19
|
|
adds r5, r6
|
|
adds r1, r5, 0
|
|
movs r2, 0x40
|
|
bl CpuSet
|
|
mov r0, r8
|
|
str r0, [sp]
|
|
adds r4, r6
|
|
ldr r2, _0808654C @ =0x05000200
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl CpuSet
|
|
ldr r0, _08086550 @ =gUnknown_83CBB10
|
|
movs r1, 0xF0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
mov r1, r9
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
add sp, 0x4
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086548: .4byte gUnknown_83CBA90
|
|
_0808654C: .4byte 0x05000200
|
|
_08086550: .4byte gUnknown_83CBB10
|
|
thumb_func_end sub_80864D4
|
|
|
|
thumb_func_start sub_8086554
|
|
sub_8086554: @ 8086554
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8086738
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080865A6
|
|
movs r0, 0x48
|
|
bl GetGpuReg
|
|
strh r0, [r4, 0x12]
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
movs r2, 0x88
|
|
lsls r2, 5
|
|
adds r0, r2, 0
|
|
orrs r1, r0
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
movs r0, 0x42
|
|
movs r1, 0xF0
|
|
bl SetGpuReg
|
|
ldr r1, _080865B4 @ =0x00002878
|
|
movs r0, 0x46
|
|
bl SetGpuReg
|
|
ldr r2, _080865B8 @ =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, 0x1C
|
|
adds r0, r2
|
|
ldr r1, _080865BC @ =sub_80868C0
|
|
str r1, [r0]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080865A6:
|
|
adds r0, r4, 0
|
|
bl sub_8086728
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080865B4: .4byte 0x00002878
|
|
_080865B8: .4byte gSprites
|
|
_080865BC: .4byte sub_80868C0
|
|
thumb_func_end sub_8086554
|
|
|
|
thumb_func_start sub_80865C0
|
|
sub_80865C0: @ 80865C0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8086728
|
|
ldr r2, _080865EC @ =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _080865E4
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080865E4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080865EC: .4byte gSprites
|
|
thumb_func_end sub_80865C0
|
|
|
|
thumb_func_start sub_80865F0
|
|
sub_80865F0: @ 80865F0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8086728
|
|
ldrh r1, [r4, 0xA]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
movs r1, 0
|
|
strh r0, [r4, 0xE]
|
|
strh r1, [r4, 0x10]
|
|
ldr r5, _0808662C @ =0x0000ffff
|
|
movs r0, 0x42
|
|
adds r1, r5, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x46
|
|
adds r1, r5, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x12]
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808662C: .4byte 0x0000ffff
|
|
thumb_func_end sub_80865F0
|
|
|
|
thumb_func_start sub_8086630
|
|
sub_8086630: @ 8086630
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8086728
|
|
adds r0, r4, 0
|
|
bl sub_80867F0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0808664A
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_0808664A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8086630
|
|
|
|
thumb_func_start sub_8086650
|
|
sub_8086650: @ 8086650
|
|
push {r4,lr}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
movs r0, 0x8
|
|
bl GetGpuReg
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 24
|
|
lsls r1, 27
|
|
lsrs r1, 16
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xC0
|
|
lsls r0, 19
|
|
adds r1, r0
|
|
ldr r2, _080866D4 @ =0x05000200
|
|
mov r0, sp
|
|
bl CpuSet
|
|
adds r0, r4, 0
|
|
adds r0, 0x22
|
|
add r1, sp, 0x4
|
|
bl LoadWordFromTwoHalfwords
|
|
ldr r0, [sp, 0x4]
|
|
bl SetVBlankCallback
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl ChangeBgX
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl ChangeBgY
|
|
bl Menu_LoadStdPal
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080866D8 @ =gSprites
|
|
adds r0, r1
|
|
ldrh r1, [r4, 0x26]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl sub_8083A5C
|
|
movs r0, 0x6
|
|
bl FieldEffectActiveListRemove
|
|
ldr r0, _080866DC @ =sub_8086468
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
add sp, 0x8
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080866D4: .4byte 0x05000200
|
|
_080866D8: .4byte gSprites
|
|
_080866DC: .4byte sub_8086468
|
|
thumb_func_end sub_8086650
|
|
|
|
thumb_func_start sub_80866E0
|
|
sub_80866E0: @ 80866E0
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r0, _08086720 @ =sub_8086468
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _08086724 @ =gTasks
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
adds r0, 0x22
|
|
mov r1, sp
|
|
bl LoadWordFromTwoHalfwords
|
|
ldr r0, [sp]
|
|
bl _call_via_r0
|
|
ldrh r1, [r4, 0xA]
|
|
movs r0, 0x10
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0xC]
|
|
movs r0, 0x12
|
|
bl SetGpuReg
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086720: .4byte sub_8086468
|
|
_08086724: .4byte gTasks
|
|
thumb_func_end sub_80866E0
|
|
|
|
thumb_func_start sub_8086728
|
|
sub_8086728: @ 8086728
|
|
ldrh r1, [r0, 0xA]
|
|
subs r1, 0x10
|
|
strh r1, [r0, 0xA]
|
|
ldrh r1, [r0, 0xE]
|
|
adds r1, 0x10
|
|
strh r1, [r0, 0xE]
|
|
bx lr
|
|
thumb_func_end sub_8086728
|
|
|
|
thumb_func_start sub_8086738
|
|
sub_8086738: @ 8086738
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
ldrh r2, [r5, 0x10]
|
|
movs r1, 0x10
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1F
|
|
ble _08086754
|
|
movs r0, 0x1
|
|
b _080867D8
|
|
_08086754:
|
|
ldrh r0, [r5, 0xE]
|
|
lsls r0, 16
|
|
asrs r3, r0, 19
|
|
movs r1, 0x1F
|
|
ands r3, r1
|
|
movs r4, 0x10
|
|
ldrsh r0, [r5, r4]
|
|
cmp r3, r0
|
|
blt _080867D6
|
|
movs r0, 0x20
|
|
subs r3, r0, r3
|
|
ands r3, r1
|
|
subs r0, r2
|
|
mov r12, r0
|
|
mov r7, r12
|
|
ands r7, r1
|
|
mov r12, r7
|
|
ldrh r0, [r5, 0x20]
|
|
ldr r1, _080867E8 @ =0x06000140
|
|
adds r1, r0
|
|
mov r8, r1
|
|
movs r4, 0
|
|
ldr r7, _080867EC @ =gUnknown_83CBB30
|
|
mov r10, r7
|
|
movs r0, 0xF0
|
|
lsls r0, 8
|
|
mov r9, r0
|
|
adds r1, r3, 0x1
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
str r1, [sp]
|
|
mov r6, r12
|
|
adds r6, 0x1
|
|
ands r6, r0
|
|
_08086798:
|
|
lsls r1, r4, 5
|
|
adds r2, r1, r3
|
|
lsls r2, 1
|
|
add r2, r8
|
|
mov r7, r12
|
|
adds r0, r7, r1
|
|
lsls r0, 1
|
|
add r0, r10
|
|
ldrh r0, [r0]
|
|
mov r7, r9
|
|
orrs r0, r7
|
|
strh r0, [r2]
|
|
ldr r0, [sp]
|
|
adds r2, r1, r0
|
|
lsls r2, 1
|
|
add r2, r8
|
|
adds r1, r6, r1
|
|
lsls r1, 1
|
|
add r1, r10
|
|
ldrh r0, [r1]
|
|
mov r1, r9
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
adds r0, r4, 0x1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0x9
|
|
bls _08086798
|
|
ldrh r0, [r5, 0x10]
|
|
adds r0, 0x2
|
|
strh r0, [r5, 0x10]
|
|
_080867D6:
|
|
movs r0, 0
|
|
_080867D8:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080867E8: .4byte 0x06000140
|
|
_080867EC: .4byte gUnknown_83CBB30
|
|
thumb_func_end sub_8086738
|
|
|
|
thumb_func_start sub_80867F0
|
|
sub_80867F0: @ 80867F0
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x10
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1F
|
|
ble _08086800
|
|
movs r0, 0x1
|
|
b _08086854
|
|
_08086800:
|
|
ldrh r0, [r5, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
movs r1, 0x10
|
|
ldrsh r0, [r5, r1]
|
|
cmp r2, r0
|
|
blt _08086852
|
|
ldrh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
asrs r2, r0, 19
|
|
movs r0, 0x1F
|
|
ands r2, r0
|
|
ldrh r0, [r5, 0x20]
|
|
ldr r1, _0808685C @ =0x06000140
|
|
adds r6, r0, r1
|
|
movs r3, 0
|
|
movs r0, 0xF0
|
|
lsls r0, 8
|
|
adds r7, r0, 0
|
|
adds r4, r2, 0x1
|
|
movs r0, 0x1F
|
|
ands r4, r0
|
|
_08086830:
|
|
lsls r0, r3, 5
|
|
adds r1, r0, r2
|
|
lsls r1, 1
|
|
adds r1, r6
|
|
strh r7, [r1]
|
|
adds r0, r4
|
|
lsls r0, 1
|
|
adds r0, r6
|
|
strh r7, [r0]
|
|
adds r0, r3, 0x1
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
cmp r3, 0x9
|
|
bls _08086830
|
|
ldrh r0, [r5, 0x10]
|
|
adds r0, 0x2
|
|
strh r0, [r5, 0x10]
|
|
_08086852:
|
|
movs r0, 0
|
|
_08086854:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0808685C: .4byte 0x06000140
|
|
thumb_func_end sub_80867F0
|
|
|
|
thumb_func_start sub_8086860
|
|
sub_8086860: @ 8086860
|
|
push {r4-r6,lr}
|
|
sub sp, 0x8
|
|
adds r6, r0, 0
|
|
movs r5, 0x80
|
|
lsls r5, 24
|
|
ands r5, r6
|
|
lsrs r5, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
ldr r0, _080868B4 @ =0x7fffffff
|
|
ands r6, r0
|
|
lsls r0, r6, 16
|
|
lsrs r0, 16
|
|
movs r3, 0xA0
|
|
lsls r3, 1
|
|
movs r4, 0x50
|
|
str r4, [sp]
|
|
movs r4, 0
|
|
str r4, [sp, 0x4]
|
|
bl sub_80839D4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r1, _080868B8 @ =gSprites
|
|
adds r2, r1
|
|
ldr r1, _080868BC @ =SpriteCallbackDummy
|
|
str r1, [r2, 0x1C]
|
|
ldrb r3, [r2, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r3
|
|
strb r1, [r2, 0x5]
|
|
strh r6, [r2, 0x2E]
|
|
strh r5, [r2, 0x3A]
|
|
add sp, 0x8
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080868B4: .4byte 0x7fffffff
|
|
_080868B8: .4byte gSprites
|
|
_080868BC: .4byte SpriteCallbackDummy
|
|
thumb_func_end sub_8086860
|
|
|
|
thumb_func_start sub_80868C0
|
|
sub_80868C0: @ 80868C0
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1, 0x20]
|
|
subs r0, 0x14
|
|
strh r0, [r1, 0x20]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x78
|
|
bgt _08086900
|
|
movs r0, 0x78
|
|
strh r0, [r1, 0x20]
|
|
movs r0, 0x1E
|
|
strh r0, [r1, 0x30]
|
|
ldr r0, _080868F4 @ =sub_8086904
|
|
str r0, [r1, 0x1C]
|
|
movs r2, 0x3A
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
beq _080868F8
|
|
ldrh r0, [r1, 0x2E]
|
|
movs r1, 0
|
|
movs r2, 0x7D
|
|
movs r3, 0xA
|
|
bl PlayCry2
|
|
b _08086900
|
|
.align 2, 0
|
|
_080868F4: .4byte sub_8086904
|
|
_080868F8:
|
|
ldrh r0, [r1, 0x2E]
|
|
movs r1, 0
|
|
bl PlayCry1
|
|
_08086900:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80868C0
|
|
|
|
thumb_func_start sub_8086904
|
|
sub_8086904: @ 8086904
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08086918
|
|
ldr r0, _0808691C @ =sub_8086920
|
|
str r0, [r1, 0x1C]
|
|
_08086918:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808691C: .4byte sub_8086920
|
|
thumb_func_end sub_8086904
|
|
|
|
thumb_func_start sub_8086920
|
|
sub_8086920: @ 8086920
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r3, [r2, 0x20]
|
|
movs r0, 0x20
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x40
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _08086938
|
|
movs r0, 0x1
|
|
strh r0, [r2, 0x3C]
|
|
b _0808693E
|
|
_08086938:
|
|
adds r0, r3, 0
|
|
subs r0, 0x14
|
|
strh r0, [r2, 0x20]
|
|
_0808693E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8086920
|
|
|
|
thumb_func_start sub_8086944
|
|
sub_8086944: @ 8086944
|
|
push {r4,lr}
|
|
ldr r0, _08086980 @ =sub_8086990
|
|
movs r1, 0xFF
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08086984 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r0, _08086988 @ =gFieldEffectArguments
|
|
ldr r0, [r0]
|
|
strh r0, [r1, 0x26]
|
|
bl sav1_reset_battle_music_maybe
|
|
ldr r4, _0808698C @ =0x00000131
|
|
adds r0, r4, 0
|
|
bl sub_8056124
|
|
cmp r0, 0
|
|
beq _08086978
|
|
adds r0, r4, 0
|
|
bl Overworld_ChangeMusicTo
|
|
_08086978:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08086980: .4byte sub_8086990
|
|
_08086984: .4byte gTasks
|
|
_08086988: .4byte gFieldEffectArguments
|
|
_0808698C: .4byte 0x00000131
|
|
thumb_func_end sub_8086944
|
|
|
|
thumb_func_start sub_8086990
|
|
sub_8086990: @ 8086990
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _080869B8 @ =gUnknown_83CC154
|
|
ldr r2, _080869BC @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080869B8: .4byte gUnknown_83CC154
|
|
_080869BC: .4byte gTasks
|
|
thumb_func_end sub_8086990
|
|
|
|
thumb_func_start sub_80869C0
|
|
sub_80869C0: @ 80869C0
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
adds r4, r0, 0
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r5, _08086A18 @ =gPlayerAvatar
|
|
movs r0, 0x1
|
|
strb r0, [r5, 0x6]
|
|
movs r0, 0x8
|
|
bl SetPlayerAvatarStateMask
|
|
adds r6, r4, 0
|
|
adds r6, 0xA
|
|
movs r0, 0xC
|
|
adds r0, r4
|
|
mov r8, r0
|
|
adds r0, r6, 0
|
|
mov r1, r8
|
|
bl PlayerGetDestCoords
|
|
ldr r2, _08086A1C @ =gMapObjects
|
|
ldrb r1, [r5, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x18]
|
|
lsrs r0, 4
|
|
adds r1, r6, 0
|
|
mov r2, r8
|
|
bl MoveCoords
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086A18: .4byte gPlayerAvatar
|
|
_08086A1C: .4byte gMapObjects
|
|
thumb_func_end sub_80869C0
|
|
|
|
thumb_func_start sub_8086A20
|
|
sub_8086A20: @ 8086A20
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _08086A64 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086A68 @ =gMapObjects
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl FieldObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086A4A
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086A5C
|
|
_08086A4A:
|
|
bl sub_805CB70
|
|
adds r0, r4, 0
|
|
movs r1, 0x45
|
|
bl FieldObjectSetHeldMovement
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
_08086A5C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086A64: .4byte gPlayerAvatar
|
|
_08086A68: .4byte gMapObjects
|
|
thumb_func_end sub_8086A20
|
|
|
|
thumb_func_start sub_8086A6C
|
|
sub_8086A6C: @ 8086A6C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08086AA8 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086AAC @ =gMapObjects
|
|
adds r0, r1
|
|
bl FieldObjectCheckHeldMovementStatus
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086AA2
|
|
ldr r2, _08086AB0 @ =gFieldEffectArguments
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x80
|
|
lsls r1, 24
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0x3B
|
|
bl FieldEffectStart
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08086AA2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086AA8: .4byte gPlayerAvatar
|
|
_08086AAC: .4byte gMapObjects
|
|
_08086AB0: .4byte gFieldEffectArguments
|
|
thumb_func_end sub_8086A6C
|
|
|
|
thumb_func_start sub_8086AB4
|
|
sub_8086AB4: @ 8086AB4
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
movs r0, 0x6
|
|
bl FieldEffectActiveListContains
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08086B1E
|
|
ldr r5, _08086B24 @ =gPlayerAvatar
|
|
ldrb r0, [r5, 0x5]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08086B28 @ =gMapObjects
|
|
adds r4, r0
|
|
movs r0, 0x2
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl EventObjectSetGraphicsId
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
ldrb r0, [r4, 0x18]
|
|
lsrs r0, 4
|
|
bl sub_80641C0
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
ldr r1, _08086B2C @ =gFieldEffectArguments
|
|
movs r2, 0xA
|
|
ldrsh r0, [r6, r2]
|
|
str r0, [r1]
|
|
movs r2, 0xC
|
|
ldrsh r0, [r6, r2]
|
|
str r0, [r1, 0x4]
|
|
ldrb r0, [r5, 0x5]
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x8
|
|
bl FieldEffectStart
|
|
strb r0, [r4, 0x1A]
|
|
ldrh r0, [r6, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x8]
|
|
_08086B1E:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086B24: .4byte gPlayerAvatar
|
|
_08086B28: .4byte gMapObjects
|
|
_08086B2C: .4byte gFieldEffectArguments
|
|
thumb_func_end sub_8086AB4
|
|
|
|
thumb_func_start sub_8086B30
|
|
sub_8086B30: @ 8086B30
|
|
push {r4,r5,lr}
|
|
ldr r5, _08086B9C @ =gPlayerAvatar
|
|
ldrb r1, [r5, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086BA0 @ =gMapObjects
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086B96
|
|
movs r0, 0
|
|
strb r0, [r5, 0x6]
|
|
ldrb r1, [r5]
|
|
movs r0, 0xDF
|
|
ands r0, r1
|
|
strb r0, [r5]
|
|
ldrb r0, [r4, 0x18]
|
|
lsrs r0, 4
|
|
bl sub_8063EB8
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
ldrb r0, [r4, 0x1A]
|
|
movs r1, 0x1
|
|
bl sub_80DC44C
|
|
bl UnfreezeMapObjects
|
|
bl ScriptContext2_Disable
|
|
movs r0, 0x9
|
|
bl FieldEffectActiveListRemove
|
|
ldr r0, _08086BA4 @ =sub_8086990
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
movs r0, 0x16
|
|
bl HelpSystem_SetSomeVariable2
|
|
_08086B96:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086B9C: .4byte gPlayerAvatar
|
|
_08086BA0: .4byte gMapObjects
|
|
_08086BA4: .4byte sub_8086990
|
|
thumb_func_end sub_8086B30
|
|
|
|
thumb_func_start sub_8086BA8
|
|
sub_8086BA8: @ 8086BA8
|
|
push {lr}
|
|
ldr r0, _08086BC8 @ =gUnknown_203ADFA
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _08086BBA
|
|
movs r0, 0x8
|
|
movs r1, 0x59
|
|
bl sub_811278C
|
|
_08086BBA:
|
|
ldr r0, _08086BCC @ =sub_8086BD0
|
|
movs r1, 0xFF
|
|
bl CreateTask
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08086BC8: .4byte gUnknown_203ADFA
|
|
_08086BCC: .4byte sub_8086BD0
|
|
thumb_func_end sub_8086BA8
|
|
|
|
thumb_func_start sub_8086BD0
|
|
sub_8086BD0: @ 8086BD0
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08086BF8 @ =gUnknown_83CC168
|
|
ldr r2, _08086BFC @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086BF8: .4byte gUnknown_83CC168
|
|
_08086BFC: .4byte gTasks
|
|
thumb_func_end sub_8086BD0
|
|
|
|
thumb_func_start sub_8086C00
|
|
sub_8086C00: @ 8086C00
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
ldr r1, _08086C20 @ =gPlayerAvatar
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x6]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086C20: .4byte gPlayerAvatar
|
|
thumb_func_end sub_8086C00
|
|
|
|
thumb_func_start sub_8086C24
|
|
sub_8086C24: @ 8086C24
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _08086C68 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086C6C @ =gMapObjects
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl FieldObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086C4E
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086C60
|
|
_08086C4E:
|
|
bl sub_805CBE8
|
|
adds r0, r4, 0
|
|
movs r1, 0x45
|
|
bl FieldObjectSetHeldMovement
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
_08086C60:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086C68: .4byte gPlayerAvatar
|
|
_08086C6C: .4byte gMapObjects
|
|
thumb_func_end sub_8086C24
|
|
|
|
thumb_func_start sub_8086C70
|
|
sub_8086C70: @ 8086C70
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
ldr r5, _08086C9C @ =gPlayerAvatar
|
|
ldrb r1, [r5, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086CA0 @ =gMapObjects
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086CEE
|
|
ldrb r1, [r5]
|
|
movs r0, 0x6
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08086CA4
|
|
movs r0, 0x1
|
|
b _08086CAE
|
|
.align 2, 0
|
|
_08086C9C: .4byte gPlayerAvatar
|
|
_08086CA0: .4byte gMapObjects
|
|
_08086CA4:
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08086CC0
|
|
movs r0, 0x2
|
|
_08086CAE:
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl EventObjectSetGraphicsId
|
|
b _08086CD2
|
|
_08086CC0:
|
|
movs r0, 0
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl EventObjectSetGraphicsId
|
|
_08086CD2:
|
|
ldrb r0, [r4, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
bl sub_8063EB8
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectForceSetSpecialAnim
|
|
ldrh r0, [r6, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x8]
|
|
_08086CEE:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8086C70
|
|
|
|
thumb_func_start sub_8086CF4
|
|
sub_8086CF4: @ 8086CF4
|
|
push {r4,lr}
|
|
ldr r4, _08086D2C @ =gPlayerAvatar
|
|
ldrb r1, [r4, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086D30 @ =gMapObjects
|
|
adds r0, r1
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086D26
|
|
movs r0, 0
|
|
strb r0, [r4, 0x6]
|
|
movs r0, 0x41
|
|
bl FieldEffectActiveListRemove
|
|
ldr r0, _08086D34 @ =sub_8086BD0
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_08086D26:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086D2C: .4byte gPlayerAvatar
|
|
_08086D30: .4byte gMapObjects
|
|
_08086D34: .4byte sub_8086BD0
|
|
thumb_func_end sub_8086CF4
|
|
|
|
thumb_func_start sub_8086D38
|
|
sub_8086D38: @ 8086D38
|
|
push {r4,lr}
|
|
ldr r0, _08086D84 @ =gUnknown_83A0010
|
|
ldr r0, [r0, 0x68]
|
|
movs r1, 0x78
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl CreateSprite
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r2, r4, 4
|
|
adds r2, r4
|
|
lsls r2, 2
|
|
ldr r0, _08086D88 @ =gSprites
|
|
adds r2, r0
|
|
ldrb r1, [r2, 0x5]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x5]
|
|
ldr r0, _08086D8C @ =sub_8086D94
|
|
str r0, [r2, 0x1C]
|
|
ldr r0, _08086D90 @ =gFieldEffectArguments
|
|
ldr r0, [r0]
|
|
strh r0, [r2, 0x30]
|
|
movs r0, 0x97
|
|
bl PlaySE
|
|
adds r0, r4, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08086D84: .4byte gUnknown_83A0010
|
|
_08086D88: .4byte gSprites
|
|
_08086D8C: .4byte sub_8086D94
|
|
_08086D90: .4byte gFieldEffectArguments
|
|
thumb_func_end sub_8086D38
|
|
|
|
thumb_func_start sub_8086D94
|
|
sub_8086D94: @ 8086D94
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x8C
|
|
bl Cos
|
|
movs r5, 0
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
movs r1, 0x48
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x4
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x32]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08086DF6
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _08086E0C @ =gSprites
|
|
adds r1, r0
|
|
adds r3, r1, 0
|
|
adds r3, 0x3E
|
|
ldrb r2, [r3]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r3]
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
subs r0, 0x8
|
|
strh r0, [r1, 0x22]
|
|
strh r5, [r1, 0x24]
|
|
strh r5, [r1, 0x26]
|
|
_08086DF6:
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x7F
|
|
ble _08086E06
|
|
adds r0, r4, 0
|
|
movs r1, 0x1E
|
|
bl FieldEffectStop
|
|
_08086E06:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086E0C: .4byte gSprites
|
|
thumb_func_end sub_8086D94
|
|
|
|
thumb_func_start FldEff_UseFly
|
|
FldEff_UseFly: @ 8086E10
|
|
push {lr}
|
|
ldr r0, _08086E34 @ =sub_8086E40
|
|
movs r1, 0xFE
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08086E38 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r0, _08086E3C @ =gFieldEffectArguments
|
|
ldr r0, [r0]
|
|
strh r0, [r1, 0xA]
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08086E34: .4byte sub_8086E40
|
|
_08086E38: .4byte gTasks
|
|
_08086E3C: .4byte gFieldEffectArguments
|
|
thumb_func_end FldEff_UseFly
|
|
|
|
thumb_func_start sub_8086E40
|
|
sub_8086E40: @ 8086E40
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08086E68 @ =gUnknown_83CC178
|
|
ldr r2, _08086E6C @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086E68: .4byte gUnknown_83CC178
|
|
_08086E6C: .4byte gTasks
|
|
thumb_func_end sub_8086E40
|
|
|
|
thumb_func_start sub_8086E70
|
|
sub_8086E70: @ 8086E70
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _08086EC0 @ =gPlayerAvatar
|
|
ldrb r1, [r6, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086EC4 @ =gMapObjects
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl FieldObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086E9A
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086EB8
|
|
_08086E9A:
|
|
ldrb r0, [r6]
|
|
strh r0, [r5, 0x26]
|
|
movs r0, 0x1
|
|
strb r0, [r6, 0x6]
|
|
bl SetPlayerAvatarStateMask
|
|
bl sub_805CB70
|
|
adds r0, r4, 0
|
|
movs r1, 0x45
|
|
bl FieldObjectSetHeldMovement
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
_08086EB8:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086EC0: .4byte gPlayerAvatar
|
|
_08086EC4: .4byte gMapObjects
|
|
thumb_func_end sub_8086E70
|
|
|
|
thumb_func_start sub_8086EC8
|
|
sub_8086EC8: @ 8086EC8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08086F00 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086F04 @ =gMapObjects
|
|
adds r0, r1
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086EF8
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
ldr r1, _08086F08 @ =gFieldEffectArguments
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
str r0, [r1]
|
|
movs r0, 0x3B
|
|
bl FieldEffectStart
|
|
_08086EF8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086F00: .4byte gPlayerAvatar
|
|
_08086F04: .4byte gMapObjects
|
|
_08086F08: .4byte gFieldEffectArguments
|
|
thumb_func_end sub_8086EC8
|
|
|
|
thumb_func_start sub_8086F0C
|
|
sub_8086F0C: @ 8086F0C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x6
|
|
bl FieldEffectActiveListContains
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08086F54
|
|
ldr r0, _08086F5C @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086F60 @ =gMapObjects
|
|
adds r5, r0, r1
|
|
ldrh r1, [r4, 0x26]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08086F44
|
|
ldrb r0, [r5, 0x1A]
|
|
movs r1, 0x2
|
|
bl sub_80DC44C
|
|
ldrb r0, [r5, 0x1A]
|
|
movs r1, 0
|
|
bl sub_80DC478
|
|
_08086F44:
|
|
bl sub_8087168
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0xA]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08086F54:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086F5C: .4byte gPlayerAvatar
|
|
_08086F60: .4byte gMapObjects
|
|
thumb_func_end sub_8086F0C
|
|
|
|
thumb_func_start sub_8086F64
|
|
sub_8086F64: @ 8086F64
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrb r0, [r4, 0xA]
|
|
bl sub_80871AC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086F98
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0xC]
|
|
movs r0, 0x1
|
|
bl SetPlayerAvatarTransitionFlags
|
|
ldr r0, _08086FA0 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086FA4 @ =gMapObjects
|
|
adds r0, r1
|
|
movs r1, 0x2
|
|
bl FieldObjectSetHeldMovement
|
|
_08086F98:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086FA0: .4byte gPlayerAvatar
|
|
_08086FA4: .4byte gMapObjects
|
|
thumb_func_end sub_8086F64
|
|
|
|
thumb_func_start sub_8086FA8
|
|
sub_8086FA8: @ 8086FA8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08086FF4 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08086FF8 @ =gMapObjects
|
|
adds r2, r0, r1
|
|
ldrh r1, [r4, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0
|
|
beq _08086FCE
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08086FEC
|
|
_08086FCE:
|
|
adds r0, r2, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08086FEC
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x97
|
|
bl PlaySE
|
|
ldrb r0, [r4, 0xA]
|
|
bl sub_80871C8
|
|
_08086FEC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08086FF4: .4byte gPlayerAvatar
|
|
_08086FF8: .4byte gMapObjects
|
|
thumb_func_end sub_8086FA8
|
|
|
|
thumb_func_start sub_8086FFC
|
|
sub_8086FFC: @ 8086FFC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7
|
|
ble _0808705A
|
|
ldr r0, _08087060 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08087064 @ =gMapObjects
|
|
adds r4, r0
|
|
movs r0, 0x2
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl EventObjectSetGraphicsId
|
|
ldrb r1, [r4, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08087068 @ =gSprites
|
|
adds r0, r1
|
|
movs r1, 0x16
|
|
bl StartSpriteAnim
|
|
ldrb r0, [r4, 0x1]
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
adds r0, r4, 0
|
|
movs r1, 0x54
|
|
bl FieldObjectSetHeldMovement
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0
|
|
strh r0, [r5, 0xC]
|
|
_0808705A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087060: .4byte gPlayerAvatar
|
|
_08087064: .4byte gMapObjects
|
|
_08087068: .4byte gSprites
|
|
thumb_func_end sub_8086FFC
|
|
|
|
thumb_func_start sub_808706C
|
|
sub_808706C: @ 808706C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x9
|
|
ble _080870FC
|
|
ldr r0, _08087104 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08087108 @ =gMapObjects
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
bl FieldObjectClearAnimIfSpecialAnimActive
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldrb r1, [r4, 0x2]
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x2]
|
|
ldrb r0, [r5, 0xA]
|
|
ldrb r1, [r4, 0x4]
|
|
bl sub_8087204
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _0808710C @ =gSprites
|
|
adds r0, r4
|
|
ldr r1, _08087110 @ =gSaveBlock2Ptr
|
|
ldr r1, [r1]
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 1
|
|
adds r1, 0x1
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl StartSpriteAnim
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
movs r1, 0
|
|
bl sub_80877FC
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r4, 0x1C
|
|
adds r0, r4
|
|
ldr r1, _08087114 @ =sub_8087828
|
|
str r1, [r0]
|
|
bl CameraObjectReset2
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
_080870FC:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087104: .4byte gPlayerAvatar
|
|
_08087108: .4byte gMapObjects
|
|
_0808710C: .4byte gSprites
|
|
_08087110: .4byte gSaveBlock2Ptr
|
|
_08087114: .4byte sub_8087828
|
|
thumb_func_end sub_808706C
|
|
|
|
thumb_func_start sub_8087118
|
|
sub_8087118: @ 8087118
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrb r0, [r4, 0xA]
|
|
bl sub_80871AC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08087132
|
|
bl sub_807DC18
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08087132:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8087118
|
|
|
|
thumb_func_start sub_8087138
|
|
sub_8087138: @ 8087138
|
|
push {lr}
|
|
ldr r0, _08087160 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0808715A
|
|
movs r0, 0x1F
|
|
bl FieldEffectActiveListRemove
|
|
ldr r0, _08087164 @ =sub_8086E40
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_0808715A:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087160: .4byte gPaletteFade
|
|
_08087164: .4byte sub_8086E40
|
|
thumb_func_end sub_8087138
|
|
|
|
thumb_func_start sub_8087168
|
|
sub_8087168: @ 8087168
|
|
push {lr}
|
|
ldr r0, _080871A0 @ =gUnknown_83A0010
|
|
ldr r0, [r0, 0x68]
|
|
movs r1, 0xFF
|
|
movs r2, 0xB4
|
|
movs r3, 0x1
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r1, _080871A4 @ =gSprites
|
|
adds r2, r1
|
|
ldrb r3, [r2, 0x5]
|
|
movs r1, 0xF
|
|
ands r1, r3
|
|
movs r3, 0xD
|
|
negs r3, r3
|
|
ands r1, r3
|
|
movs r3, 0x4
|
|
orrs r1, r3
|
|
strb r1, [r2, 0x5]
|
|
ldr r1, _080871A8 @ =sub_8087220
|
|
str r1, [r2, 0x1C]
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080871A0: .4byte gUnknown_83A0010
|
|
_080871A4: .4byte gSprites
|
|
_080871A8: .4byte sub_8087220
|
|
thumb_func_end sub_8087168
|
|
|
|
thumb_func_start sub_80871AC
|
|
sub_80871AC: @ 80871AC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080871C4 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r1, 0x3C]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bx lr
|
|
.align 2, 0
|
|
_080871C4: .4byte gSprites
|
|
thumb_func_end sub_80871AC
|
|
|
|
thumb_func_start sub_80871C8
|
|
sub_80871C8: @ 80871C8
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _080871FC @ =gSprites
|
|
adds r4, r0
|
|
ldr r0, _08087200 @ =sub_80872F0
|
|
str r0, [r4, 0x1C]
|
|
movs r1, 0
|
|
movs r0, 0x78
|
|
strh r0, [r4, 0x20]
|
|
strh r1, [r4, 0x22]
|
|
strh r1, [r4, 0x24]
|
|
strh r1, [r4, 0x26]
|
|
adds r0, r4, 0
|
|
adds r0, 0x2E
|
|
movs r2, 0x10
|
|
bl memset
|
|
movs r0, 0x40
|
|
strh r0, [r4, 0x3A]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080871FC: .4byte gSprites
|
|
_08087200: .4byte sub_80872F0
|
|
thumb_func_end sub_80871C8
|
|
|
|
thumb_func_start sub_8087204
|
|
sub_8087204: @ 8087204
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _0808721C @ =gSprites
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
strh r1, [r2, 0x3A]
|
|
bx lr
|
|
.align 2, 0
|
|
_0808721C: .4byte gSprites
|
|
thumb_func_end sub_8087204
|
|
|
|
thumb_func_start sub_8087220
|
|
sub_8087220: @ 8087220
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080872E2
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _0808727A
|
|
ldrb r0, [r4, 0x1]
|
|
movs r1, 0x3
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldr r0, _0808725C @ =gUnknown_83CC1CC
|
|
str r0, [r4, 0x10]
|
|
adds r0, r4, 0
|
|
bl InitSpriteAffineAnim
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, _08087260 @ =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
cmp r0, 0
|
|
bne _08087264
|
|
movs r0, 0x80
|
|
b _08087266
|
|
.align 2, 0
|
|
_0808725C: .4byte gUnknown_83CC1CC
|
|
_08087260: .4byte gSaveBlock2Ptr
|
|
_08087264:
|
|
movs r0, 0x76
|
|
_08087266:
|
|
strh r0, [r4, 0x20]
|
|
ldr r0, _080872E8 @ =0x0000ffd0
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
movs r0, 0x40
|
|
strh r0, [r4, 0x30]
|
|
adds r0, 0xC0
|
|
strh r0, [r4, 0x32]
|
|
_0808727A:
|
|
ldrh r0, [r4, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
ldrh r1, [r4, 0x30]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x30]
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x78
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x78
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x32]
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
ldr r0, _080872EC @ =0x000007ff
|
|
cmp r1, r0
|
|
bgt _080872B0
|
|
adds r0, r2, 0
|
|
adds r0, 0x60
|
|
strh r0, [r4, 0x32]
|
|
_080872B0:
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x81
|
|
ble _080872E2
|
|
ldrh r0, [r4, 0x3C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x3C]
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
ldrb r1, [r4, 0x1]
|
|
lsrs r1, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
adds r0, r4, 0
|
|
movs r3, 0
|
|
bl CalcCenterToCornerVec
|
|
_080872E2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080872E8: .4byte 0x0000ffd0
|
|
_080872EC: .4byte 0x000007ff
|
|
thumb_func_end sub_8087220
|
|
|
|
thumb_func_start sub_80872F0
|
|
sub_80872F0: @ 80872F0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x8C
|
|
bl Cos
|
|
movs r5, 0
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
movs r1, 0x48
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x4
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x32]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x40
|
|
beq _0808734E
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _08087360 @ =gSprites
|
|
adds r1, r0
|
|
adds r3, r1, 0
|
|
adds r3, 0x3E
|
|
ldrb r2, [r3]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r3]
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
subs r0, 0x8
|
|
strh r0, [r1, 0x22]
|
|
strh r5, [r1, 0x24]
|
|
strh r5, [r1, 0x26]
|
|
_0808734E:
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x7F
|
|
ble _0808735A
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x3C]
|
|
_0808735A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087360: .4byte gSprites
|
|
thumb_func_end sub_80872F0
|
|
|
|
thumb_func_start sub_8087364
|
|
sub_8087364: @ 8087364
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _0808744E
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080873C4
|
|
ldrb r0, [r4, 0x1]
|
|
movs r1, 0x3
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldr r0, _080873A0 @ =gUnknown_83CC1CC
|
|
str r0, [r4, 0x10]
|
|
adds r0, r4, 0
|
|
bl InitSpriteAffineAnim
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, _080873A4 @ =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
cmp r0, 0
|
|
bne _080873A8
|
|
movs r0, 0x70
|
|
b _080873AA
|
|
.align 2, 0
|
|
_080873A0: .4byte gUnknown_83CC1CC
|
|
_080873A4: .4byte gSaveBlock2Ptr
|
|
_080873A8:
|
|
movs r0, 0x64
|
|
_080873AA:
|
|
strh r0, [r4, 0x20]
|
|
ldr r0, _08087454 @ =0x0000ffe0
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
movs r0, 0xF0
|
|
strh r0, [r4, 0x30]
|
|
movs r0, 0x80
|
|
lsls r0, 4
|
|
strh r0, [r4, 0x32]
|
|
movs r0, 0x80
|
|
strh r0, [r4, 0x36]
|
|
_080873C4:
|
|
ldrh r1, [r4, 0x32]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
ldrh r2, [r4, 0x30]
|
|
adds r2, r1
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
movs r0, 0xFF
|
|
ands r2, r0
|
|
strh r2, [r4, 0x30]
|
|
movs r3, 0x30
|
|
ldrsh r0, [r4, r3]
|
|
movs r1, 0x20
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x78
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x32]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
cmp r0, r2
|
|
ble _08087406
|
|
ldrh r0, [r4, 0x36]
|
|
subs r0, r1, r0
|
|
strh r0, [r4, 0x32]
|
|
_08087406:
|
|
ldrh r1, [r4, 0x36]
|
|
movs r3, 0x36
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0xFF
|
|
bgt _08087416
|
|
adds r0, r1, 0
|
|
adds r0, 0x18
|
|
strh r0, [r4, 0x36]
|
|
_08087416:
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0xFF
|
|
bgt _08087420
|
|
strh r2, [r4, 0x32]
|
|
_08087420:
|
|
movs r2, 0x34
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x3B
|
|
ble _0808744E
|
|
ldrh r0, [r4, 0x3C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x3C]
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_0808744E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087454: .4byte 0x0000ffe0
|
|
thumb_func_end sub_8087364
|
|
|
|
thumb_func_start sub_8087458
|
|
sub_8087458: @ 8087458
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl sub_80871C8
|
|
ldr r1, _0808747C @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r1, 0x1C
|
|
adds r0, r1
|
|
ldr r1, _08087480 @ =sub_8087364
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808747C: .4byte gSprites
|
|
_08087480: .4byte sub_8087364
|
|
thumb_func_end sub_8087458
|
|
|
|
thumb_func_start FldEff_FlyIn
|
|
FldEff_FlyIn: @ 8087484
|
|
push {lr}
|
|
ldr r0, _08087494 @ =sub_8087498
|
|
movs r1, 0xFE
|
|
bl CreateTask
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08087494: .4byte sub_8087498
|
|
thumb_func_end FldEff_FlyIn
|
|
|
|
thumb_func_start sub_8087498
|
|
sub_8087498: @ 8087498
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _080874C0 @ =gUnknown_83CC1D4
|
|
ldr r2, _080874C4 @ =gTasks
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r2, 0x8
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080874C0: .4byte gUnknown_83CC1D4
|
|
_080874C4: .4byte gTasks
|
|
thumb_func_end sub_8087498
|
|
|
|
thumb_func_start sub_80874C8
|
|
sub_80874C8: @ 80874C8
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
ldr r4, _080875B4 @ =gPlayerAvatar
|
|
ldrb r1, [r4, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080875B8 @ =gMapObjects
|
|
adds r5, r0, r1
|
|
adds r0, r5, 0
|
|
bl FieldObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080874F2
|
|
adds r0, r5, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080875AE
|
|
_080874F2:
|
|
ldrh r0, [r6, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x8]
|
|
movs r0, 0x21
|
|
strh r0, [r6, 0xC]
|
|
ldrb r0, [r4]
|
|
strh r0, [r6, 0x26]
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0x6]
|
|
bl SetPlayerAvatarStateMask
|
|
ldrh r1, [r6, 0x26]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0808751A
|
|
ldrb r0, [r5, 0x1A]
|
|
movs r1, 0
|
|
bl sub_80DC44C
|
|
_0808751A:
|
|
movs r0, 0x2
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl EventObjectSetGraphicsId
|
|
bl CameraObjectReset2
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl FieldObjectTurn
|
|
ldrb r1, [r5, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _080875BC @ =gSprites
|
|
adds r0, r4
|
|
movs r1, 0x16
|
|
bl StartSpriteAnim
|
|
ldrb r1, [r5, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r5, 0x1]
|
|
bl sub_8087168
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0xA]
|
|
bl sub_80871C8
|
|
ldrb r0, [r6, 0xA]
|
|
ldrb r1, [r5, 0x4]
|
|
bl sub_8087204
|
|
movs r0, 0xA
|
|
ldrsh r1, [r6, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldr r1, _080875C0 @ =gSaveBlock2Ptr
|
|
ldr r1, [r1]
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 25
|
|
movs r2, 0x80
|
|
lsls r2, 18
|
|
adds r1, r2
|
|
lsrs r1, 24
|
|
bl StartSpriteAnim
|
|
movs r0, 0xA
|
|
ldrsh r1, [r6, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
movs r1, 0x1
|
|
bl sub_80877FC
|
|
movs r2, 0xA
|
|
ldrsh r1, [r6, r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r4, 0x1C
|
|
adds r0, r4
|
|
ldr r1, _080875C4 @ =sub_8087828
|
|
str r1, [r0]
|
|
_080875AE:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080875B4: .4byte gPlayerAvatar
|
|
_080875B8: .4byte gMapObjects
|
|
_080875BC: .4byte gSprites
|
|
_080875C0: .4byte gSaveBlock2Ptr
|
|
_080875C4: .4byte sub_8087828
|
|
thumb_func_end sub_80874C8
|
|
|
|
thumb_func_start sub_80875C8
|
|
sub_80875C8: @ 80875C8
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r6, _08087638 @ =gSprites
|
|
adds r0, r6
|
|
bl sub_80878C0
|
|
ldrh r1, [r5, 0xC]
|
|
movs r2, 0xC
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0
|
|
beq _080875F2
|
|
subs r0, r1, 0x1
|
|
strh r0, [r5, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08087630
|
|
_080875F2:
|
|
ldr r0, _0808763C @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08087640 @ =gMapObjects
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x4]
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
adds r4, r6
|
|
ldrb r0, [r5, 0xA]
|
|
movs r1, 0x40
|
|
bl sub_8087204
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
strh r1, [r4, 0x24]
|
|
strh r1, [r4, 0x26]
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
strh r1, [r5, 0xC]
|
|
_08087630:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087638: .4byte gSprites
|
|
_0808763C: .4byte gPlayerAvatar
|
|
_08087640: .4byte gMapObjects
|
|
thumb_func_end sub_80875C8
|
|
|
|
thumb_func_start sub_8087644
|
|
sub_8087644: @ 8087644
|
|
push {r4,lr}
|
|
sub sp, 0x24
|
|
adds r4, r0, 0
|
|
ldr r1, _0808768C @ =gUnknown_83CC1F0
|
|
mov r0, sp
|
|
movs r2, 0x24
|
|
bl memcpy
|
|
ldr r0, _08087690 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x4]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _08087694 @ =gSprites
|
|
adds r1, r0
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
add r0, sp
|
|
ldrh r0, [r0]
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x11
|
|
ble _08087682
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_08087682:
|
|
add sp, 0x24
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808768C: .4byte gUnknown_83CC1F0
|
|
_08087690: .4byte gPlayerAvatar
|
|
_08087694: .4byte gSprites
|
|
thumb_func_end sub_8087644
|
|
|
|
thumb_func_start sub_8087698
|
|
sub_8087698: @ 8087698
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
ldrb r0, [r6, 0xA]
|
|
bl sub_80871AC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080876FC
|
|
ldr r0, _08087704 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r5, r0, 3
|
|
adds r5, r0
|
|
lsls r5, 2
|
|
ldr r0, _08087708 @ =gMapObjects
|
|
adds r5, r0
|
|
ldrb r0, [r5, 0x4]
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0808770C @ =gSprites
|
|
adds r4, r0
|
|
ldrb r1, [r5, 0x1]
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x10
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x12
|
|
ldrsh r2, [r5, r0]
|
|
adds r0, r5, 0
|
|
bl sub_805F724
|
|
movs r0, 0
|
|
strh r0, [r4, 0x24]
|
|
strh r0, [r4, 0x26]
|
|
adds r4, 0x3E
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
bl sub_805CB70
|
|
adds r0, r5, 0
|
|
movs r1, 0x45
|
|
bl FieldObjectSetHeldMovement
|
|
ldrh r0, [r6, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x8]
|
|
_080876FC:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087704: .4byte gPlayerAvatar
|
|
_08087708: .4byte gMapObjects
|
|
_0808770C: .4byte gSprites
|
|
thumb_func_end sub_8087698
|
|
|
|
thumb_func_start sub_8087710
|
|
sub_8087710: @ 8087710
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08087740 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08087744 @ =gMapObjects
|
|
adds r0, r1
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08087738
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
ldrb r0, [r4, 0xA]
|
|
bl sub_8087458
|
|
_08087738:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087740: .4byte gPlayerAvatar
|
|
_08087744: .4byte gMapObjects
|
|
thumb_func_end sub_8087710
|
|
|
|
thumb_func_start sub_8087748
|
|
sub_8087748: @ 8087748
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrb r0, [r4, 0xA]
|
|
bl sub_80871AC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08087774
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0808777C @ =gSprites
|
|
adds r0, r1
|
|
bl DestroySprite
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0xA]
|
|
_08087774:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808777C: .4byte gSprites
|
|
thumb_func_end sub_8087748
|
|
|
|
thumb_func_start fishE
|
|
fishE: @ 8087780
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0xA]
|
|
subs r0, 0x1
|
|
strh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080877EA
|
|
ldr r6, _080877F0 @ =gPlayerAvatar
|
|
ldrb r1, [r6, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080877F4 @ =gMapObjects
|
|
adds r4, r0, r1
|
|
movs r7, 0
|
|
ldrh r1, [r5, 0x26]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080877B4
|
|
movs r7, 0x2
|
|
ldrb r0, [r4, 0x1A]
|
|
movs r1, 0x1
|
|
bl sub_80DC44C
|
|
_080877B4:
|
|
adds r0, r7, 0
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl EventObjectSetGraphicsId
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl FieldObjectTurn
|
|
ldrh r0, [r5, 0x26]
|
|
strb r0, [r6]
|
|
movs r0, 0
|
|
strb r0, [r6, 0x6]
|
|
movs r0, 0x20
|
|
bl FieldEffectActiveListRemove
|
|
ldr r0, _080877F8 @ =sub_8087498
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
_080877EA:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080877F0: .4byte gPlayerAvatar
|
|
_080877F4: .4byte gMapObjects
|
|
_080877F8: .4byte sub_8087498
|
|
thumb_func_end fishE
|
|
|
|
thumb_func_start sub_80877FC
|
|
sub_80877FC: @ 80877FC
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r5, r1, 24
|
|
lsrs r5, 24
|
|
ldrb r0, [r4, 0x1]
|
|
movs r1, 0x3
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldr r0, _08087824 @ =gUnknown_83CC23C
|
|
str r0, [r4, 0x10]
|
|
adds r0, r4, 0
|
|
bl InitSpriteAffineAnim
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl StartSpriteAffineAnim
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087824: .4byte gUnknown_83CC23C
|
|
thumb_func_end sub_80877FC
|
|
|
|
thumb_func_start sub_8087828
|
|
sub_8087828: @ 8087828
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xB4
|
|
bl Cos
|
|
movs r5, 0
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
movs r1, 0x48
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x2
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x32]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x40
|
|
beq _08087886
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _080878BC @ =gSprites
|
|
adds r1, r0
|
|
adds r3, r1, 0
|
|
adds r3, 0x3E
|
|
ldrb r2, [r3]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r3]
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
subs r0, 0x8
|
|
strh r0, [r1, 0x22]
|
|
strh r5, [r1, 0x24]
|
|
strh r5, [r1, 0x26]
|
|
_08087886:
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x7F
|
|
ble _080878B4
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x3C]
|
|
ldrb r1, [r4, 0x1]
|
|
subs r0, 0x5
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
ldrb r1, [r4, 0x1]
|
|
lsrs r1, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
adds r0, r4, 0
|
|
movs r3, 0
|
|
bl CalcCenterToCornerVec
|
|
_080878B4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080878BC: .4byte gSprites
|
|
thumb_func_end sub_8087828
|
|
|
|
thumb_func_start sub_80878C0
|
|
sub_80878C0: @ 80878C0
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldrb r5, [r4, 0x1]
|
|
lsls r0, r5, 30
|
|
cmp r0, 0
|
|
beq _08087916
|
|
ldr r1, _0808791C @ =gOamMatrices
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r3, r0, 27
|
|
lsls r0, r3, 3
|
|
adds r1, r0, r1
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
cmp r0, r2
|
|
beq _080878EC
|
|
movs r6, 0x6
|
|
ldrsh r0, [r1, r6]
|
|
cmp r0, r2
|
|
bne _08087916
|
|
_080878EC:
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r5
|
|
strb r0, [r4, 0x1]
|
|
adds r0, r3, 0
|
|
bl FreeOamMatrix
|
|
ldrb r1, [r4, 0x1]
|
|
lsrs r1, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
adds r0, r4, 0
|
|
movs r3, 0
|
|
bl CalcCenterToCornerVec
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl StartSpriteAnim
|
|
ldr r0, _08087920 @ =sub_80872F0
|
|
str r0, [r4, 0x1C]
|
|
_08087916:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0808791C: .4byte gOamMatrices
|
|
_08087920: .4byte sub_80872F0
|
|
thumb_func_end sub_80878C0
|
|
|
|
thumb_func_start sub_8087924
|
|
sub_8087924: @ 8087924
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
ldr r7, _080879C4 @ =gFieldEffectArguments
|
|
ldrb r0, [r7]
|
|
ldrb r1, [r7, 0x4]
|
|
ldrb r2, [r7, 0x8]
|
|
mov r3, sp
|
|
bl TryGetFieldObjectIdByLocalIdAndMap
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080879BA
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _080879C8 @ =gMapObjects
|
|
adds r4, r0
|
|
movs r0, 0x10
|
|
ldrsh r5, [r4, r0]
|
|
subs r5, 0x7
|
|
movs r0, 0x12
|
|
ldrsh r6, [r4, r0]
|
|
subs r6, 0x7
|
|
ldr r1, [r7, 0xC]
|
|
subs r5, r1, r5
|
|
lsls r5, 4
|
|
ldr r2, [r7, 0x10]
|
|
subs r6, r2, r6
|
|
lsls r6, 4
|
|
adds r1, 0x7
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r2, 0x7
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
adds r0, r4, 0
|
|
bl npc_coords_shift
|
|
ldr r0, _080879CC @ =sub_80879D8
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080879D0 @ =gTasks
|
|
lsls r2, r0, 2
|
|
adds r2, r0
|
|
lsls r2, 3
|
|
adds r2, r1
|
|
ldrb r0, [r4, 0x4]
|
|
strh r0, [r2, 0xA]
|
|
ldr r3, _080879D4 @ =gSprites
|
|
ldrb r1, [r4, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x20]
|
|
adds r0, r5
|
|
strh r0, [r2, 0xC]
|
|
ldrb r1, [r4, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x22]
|
|
adds r0, r6
|
|
strh r0, [r2, 0xE]
|
|
ldr r0, [r7, 0x14]
|
|
strh r0, [r2, 0x18]
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
strh r0, [r2, 0x1A]
|
|
_080879BA:
|
|
movs r0, 0
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080879C4: .4byte gFieldEffectArguments
|
|
_080879C8: .4byte gMapObjects
|
|
_080879CC: .4byte sub_80879D8
|
|
_080879D0: .4byte gTasks
|
|
_080879D4: .4byte gSprites
|
|
thumb_func_end sub_8087924
|
|
|
|
thumb_func_start sub_80879D8
|
|
sub_80879D8: @ 80879D8
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
ldr r1, _08087A04 @ =gTasks+0x8
|
|
adds r5, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08087A08 @ =gSprites
|
|
adds r6, r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _08087A0C
|
|
cmp r0, 0x1
|
|
beq _08087A4A
|
|
b _08087AA8
|
|
.align 2, 0
|
|
_08087A04: .4byte gTasks+0x8
|
|
_08087A08: .4byte gSprites
|
|
_08087A0C:
|
|
ldrh r0, [r6, 0x20]
|
|
lsls r0, 4
|
|
strh r0, [r5, 0x8]
|
|
ldrh r0, [r6, 0x22]
|
|
lsls r0, 4
|
|
strh r0, [r5, 0xA]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r5, r2]
|
|
lsls r0, 4
|
|
movs r2, 0x8
|
|
ldrsh r1, [r5, r2]
|
|
subs r0, r1
|
|
movs r2, 0x10
|
|
ldrsh r1, [r5, r2]
|
|
bl __divsi3
|
|
strh r0, [r5, 0xC]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r5, r1]
|
|
lsls r0, 4
|
|
movs r2, 0xA
|
|
ldrsh r1, [r5, r2]
|
|
subs r0, r1
|
|
movs r2, 0x10
|
|
ldrsh r1, [r5, r2]
|
|
bl __divsi3
|
|
strh r0, [r5, 0xE]
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
_08087A4A:
|
|
ldrh r1, [r5, 0x10]
|
|
movs r2, 0x10
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0
|
|
beq _08087A78
|
|
subs r0, r1, 0x1
|
|
strh r0, [r5, 0x10]
|
|
ldrh r1, [r5, 0xC]
|
|
ldrh r0, [r5, 0x8]
|
|
adds r1, r0
|
|
strh r1, [r5, 0x8]
|
|
ldrh r0, [r5, 0xE]
|
|
ldrh r2, [r5, 0xA]
|
|
adds r0, r2
|
|
strh r0, [r5, 0xA]
|
|
lsls r1, 16
|
|
asrs r1, 20
|
|
strh r1, [r6, 0x20]
|
|
ldrh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 20
|
|
strh r0, [r6, 0x22]
|
|
b _08087AA8
|
|
_08087A78:
|
|
movs r1, 0x12
|
|
ldrsh r0, [r5, r1]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08087AB0 @ =gMapObjects
|
|
adds r4, r0
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r6, 0x20]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r6, 0x22]
|
|
adds r0, r4, 0
|
|
bl npc_coords_shift_still
|
|
ldrb r0, [r4]
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
movs r0, 0x43
|
|
bl FieldEffectActiveListRemove
|
|
adds r0, r7, 0
|
|
bl DestroyTask
|
|
_08087AA8:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087AB0: .4byte gMapObjects
|
|
thumb_func_end sub_80879D8
|
|
|
|
thumb_func_start sub_8087AB4
|
|
sub_8087AB4: @ 8087AB4
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r4, _08087AF8 @ =gFieldEffectArguments
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, 0x4]
|
|
ldrb r2, [r4, 0x8]
|
|
mov r3, sp
|
|
bl TryGetFieldObjectIdByLocalIdAndMap
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08087B04
|
|
ldr r0, _08087AFC @ =sub_8087BC0
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08087B00 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
strh r0, [r1, 0xC]
|
|
ldr r0, [r4]
|
|
strh r0, [r1, 0x14]
|
|
ldr r0, [r4, 0x4]
|
|
strh r0, [r1, 0x16]
|
|
ldr r0, [r4, 0x8]
|
|
strh r0, [r1, 0x18]
|
|
b _08087B0A
|
|
.align 2, 0
|
|
_08087AF8: .4byte gFieldEffectArguments
|
|
_08087AFC: .4byte sub_8087BC0
|
|
_08087B00: .4byte gTasks
|
|
_08087B04:
|
|
movs r0, 0x44
|
|
bl FieldEffectActiveListRemove
|
|
_08087B0A:
|
|
movs r0, 0
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8087AB4
|
|
|
|
thumb_func_start sub_8087B14
|
|
sub_8087B14: @ 8087B14
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _08087B4C @ =gTasks+0x8
|
|
adds r4, r0, r1
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08087B50
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
ble _08087B54
|
|
movs r0, 0
|
|
strh r0, [r4, 0xC]
|
|
ldrh r1, [r4, 0xA]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _08087B54
|
|
subs r0, r1, 0x1
|
|
b _08087B52
|
|
.align 2, 0
|
|
_08087B4C: .4byte gTasks+0x8
|
|
_08087B50:
|
|
movs r0, 0x4
|
|
_08087B52:
|
|
strh r0, [r4, 0xA]
|
|
_08087B54:
|
|
ldrh r0, [r4]
|
|
adds r0, 0x1
|
|
strh r0, [r4]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _08087B8E
|
|
movs r0, 0
|
|
strh r0, [r4]
|
|
ldrh r0, [r4, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08087B84
|
|
ldrh r1, [r4, 0xA]
|
|
negs r1, r1
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
movs r0, 0
|
|
bl SetCameraPanning
|
|
b _08087B8E
|
|
_08087B84:
|
|
movs r0, 0xA
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0
|
|
bl SetCameraPanning
|
|
_08087B8E:
|
|
bl UpdateCameraPanning
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08087BA0
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_08087BA0:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8087B14
|
|
|
|
thumb_func_start sub_8087BA8
|
|
sub_8087BA8: @ 8087BA8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08087BBC @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0x16]
|
|
bx lr
|
|
.align 2, 0
|
|
_08087BBC: .4byte gTasks
|
|
thumb_func_end sub_8087BA8
|
|
|
|
thumb_func_start sub_8087BC0
|
|
sub_8087BC0: @ 8087BC0
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
lsls r4, r5, 2
|
|
adds r4, r5
|
|
lsls r4, 3
|
|
ldr r0, _08087BF8 @ =gTasks+0x8
|
|
adds r4, r0
|
|
bl InstallCameraPanAheadCallback
|
|
movs r0, 0
|
|
bl SetCameraPanningCallback
|
|
ldr r1, _08087BFC @ =gUnknown_83CC244
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r2, [r0]
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl _call_via_r2
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087BF8: .4byte gTasks+0x8
|
|
_08087BFC: .4byte gUnknown_83CC244
|
|
thumb_func_end sub_8087BC0
|
|
|
|
thumb_func_start sub_8087C00
|
|
sub_8087C00: @ 8087C00
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _08087C28 @ =sub_8087B14
|
|
movs r1, 0x5A
|
|
bl CreateTask
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x51
|
|
bl PlaySE
|
|
strh r4, [r5, 0xA]
|
|
ldrh r0, [r5, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087C28: .4byte sub_8087B14
|
|
thumb_func_end sub_8087C00
|
|
|
|
thumb_func_start sub_8087C2C
|
|
sub_8087C2C: @ 8087C2C
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r7, r0, 0
|
|
ldrh r0, [r7, 0x6]
|
|
adds r0, 0x1
|
|
strh r0, [r7, 0x6]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x78
|
|
ble _08087C9A
|
|
ldr r2, _08087CA4 @ =gMapObjects
|
|
movs r1, 0x4
|
|
ldrsh r0, [r7, r1]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r0, [r1, 0x4]
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08087CA8 @ =gSprites
|
|
adds r4, r0
|
|
ldrb r0, [r1, 0x1]
|
|
movs r2, 0x20
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x1]
|
|
ldr r6, _08087CAC @ =0x0000ffff
|
|
ldr r5, _08087CB0 @ =0x00007fff
|
|
adds r0, r6, 0
|
|
movs r1, 0x10
|
|
adds r2, r5, 0
|
|
bl BlendPalettes
|
|
str r5, [sp]
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
movs r2, 0x10
|
|
movs r3, 0
|
|
bl BeginNormalPaletteFade
|
|
adds r0, r4, 0
|
|
bl sub_8087CFC
|
|
movs r0, 0x50
|
|
bl PlaySE
|
|
ldrb r0, [r7, 0xA]
|
|
bl sub_8087BA8
|
|
movs r0, 0
|
|
strh r0, [r7, 0x6]
|
|
ldrh r0, [r7, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r7, 0x2]
|
|
_08087C9A:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087CA4: .4byte gMapObjects
|
|
_08087CA8: .4byte gSprites
|
|
_08087CAC: .4byte 0x0000ffff
|
|
_08087CB0: .4byte 0x00007fff
|
|
thumb_func_end sub_8087C2C
|
|
|
|
thumb_func_start sub_8087CB4
|
|
sub_8087CB4: @ 8087CB4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
ldr r0, _08087CF4 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08087CEE
|
|
ldr r0, _08087CF8 @ =sub_8087B14
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08087CEE
|
|
bl InstallCameraPanAheadCallback
|
|
ldrb r0, [r4, 0xC]
|
|
ldrb r1, [r4, 0xE]
|
|
ldrb r2, [r4, 0x10]
|
|
bl RemoveFieldObjectByLocalIdAndMap
|
|
movs r0, 0x44
|
|
bl FieldEffectActiveListRemove
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_08087CEE:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087CF4: .4byte gPaletteFade
|
|
_08087CF8: .4byte sub_8087B14
|
|
thumb_func_end sub_8087CB4
|
|
|
|
thumb_func_start sub_8087CFC
|
|
sub_8087CFC: @ 8087CFC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r0, 0
|
|
ldr r0, _08087D80 @ =gUnknown_300506C
|
|
movs r1, 0
|
|
ldrsh r2, [r0, r1]
|
|
movs r3, 0x20
|
|
ldrsh r0, [r6, r3]
|
|
adds r2, r0
|
|
movs r1, 0x24
|
|
ldrsh r0, [r6, r1]
|
|
adds r2, r0
|
|
ldr r0, _08087D84 @ =gUnknown_3005068
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
movs r3, 0x22
|
|
ldrsh r1, [r6, r3]
|
|
adds r0, r1
|
|
movs r3, 0x26
|
|
ldrsh r1, [r6, r3]
|
|
adds r0, r1
|
|
subs r0, 0x4
|
|
movs r5, 0
|
|
lsls r2, 16
|
|
mov r8, r2
|
|
lsls r7, r0, 16
|
|
_08087D32:
|
|
ldr r0, _08087D88 @ =gUnknown_83CC2A0
|
|
mov r2, r8
|
|
asrs r1, r2, 16
|
|
asrs r2, r7, 16
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x40
|
|
beq _08087D6E
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08087D8C @ =gSprites
|
|
adds r4, r0
|
|
lsls r1, r5, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
strh r5, [r4, 0x2E]
|
|
ldrb r1, [r6, 0x5]
|
|
lsrs r1, 4
|
|
lsls r1, 4
|
|
ldrb r2, [r4, 0x5]
|
|
movs r0, 0xF
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
_08087D6E:
|
|
adds r5, 0x1
|
|
cmp r5, 0x3
|
|
ble _08087D32
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087D80: .4byte gUnknown_300506C
|
|
_08087D84: .4byte gUnknown_3005068
|
|
_08087D88: .4byte gUnknown_83CC2A0
|
|
_08087D8C: .4byte gSprites
|
|
thumb_func_end sub_8087CFC
|
|
|
|
thumb_func_start sub_8087D90
|
|
sub_8087D90: @ 8087D90
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x1
|
|
beq _08087DBC
|
|
cmp r0, 0x1
|
|
bgt _08087DA6
|
|
cmp r0, 0
|
|
beq _08087DB0
|
|
b _08087DDA
|
|
_08087DA6:
|
|
cmp r0, 0x2
|
|
beq _08087DC8
|
|
cmp r0, 0x3
|
|
beq _08087DCE
|
|
b _08087DDA
|
|
_08087DB0:
|
|
ldrh r0, [r1, 0x20]
|
|
subs r0, 0x10
|
|
strh r0, [r1, 0x20]
|
|
ldrh r0, [r1, 0x22]
|
|
subs r0, 0xC
|
|
b _08087DD8
|
|
_08087DBC:
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x10
|
|
strh r0, [r1, 0x20]
|
|
ldrh r0, [r1, 0x22]
|
|
subs r0, 0xC
|
|
b _08087DD8
|
|
_08087DC8:
|
|
ldrh r0, [r1, 0x20]
|
|
subs r0, 0x10
|
|
b _08087DD2
|
|
_08087DCE:
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x10
|
|
_08087DD2:
|
|
strh r0, [r1, 0x20]
|
|
ldrh r0, [r1, 0x22]
|
|
adds r0, 0xC
|
|
_08087DD8:
|
|
strh r0, [r1, 0x22]
|
|
_08087DDA:
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x4
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xF8
|
|
bhi _08087DF6
|
|
movs r0, 0x22
|
|
ldrsh r2, [r1, r0]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
cmp r2, r0
|
|
blt _08087DF6
|
|
cmp r2, 0xA4
|
|
ble _08087DFC
|
|
_08087DF6:
|
|
adds r0, r1, 0
|
|
bl DestroySprite
|
|
_08087DFC:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8087D90
|
|
|
|
thumb_func_start sub_8087E00
|
|
sub_8087E00: @ 8087E00
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _08087E24 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08087E1E
|
|
movs r0, 0x45
|
|
bl FieldEffectActiveListRemove
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_08087E1E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087E24: .4byte gPaletteFade
|
|
thumb_func_end sub_8087E00
|
|
|
|
thumb_func_start sub_8087E28
|
|
sub_8087E28: @ 8087E28
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
ldr r5, _08087E5C @ =0x00007fff
|
|
adds r0, r4, 0
|
|
movs r1, 0x10
|
|
adds r2, r5, 0
|
|
bl BlendPalettes
|
|
str r5, [sp]
|
|
adds r0, r4, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0xF
|
|
movs r3, 0
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, _08087E60 @ =sub_8087E00
|
|
movs r1, 0x5A
|
|
bl CreateTask
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08087E5C: .4byte 0x00007fff
|
|
_08087E60: .4byte sub_8087E00
|
|
thumb_func_end sub_8087E28
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|