pokefirered/asm/fldeff_cut.s
2019-06-29 10:03:06 +08:00

536 lines
9.3 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_8097874
sub_8097874: @ 8097874
push {lr}
lsls r0, 16
asrs r0, 16
lsls r1, 16
asrs r1, 16
movs r2, 0x1
bl sub_8058F48
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
bl sub_805A2BC
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_8097874
thumb_func_start sub_8097898
sub_8097898: @ 8097898
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
ldr r4, _080978CC @ =gUnknown_2039874
movs r0, 0
strb r0, [r4]
bl sub_80CCD84
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _080978E0
movs r0, 0x5F
bl CheckObjectGraphicsInFrontOfPlayer
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08097904
ldr r1, _080978D0 @ =gFieldCallback2
ldr r0, _080978D4 @ =FieldCallback_PrepareFadeInFromMenu
str r0, [r1]
ldr r1, _080978D8 @ =gPostMenuFieldCallback
ldr r0, _080978DC @ =sub_80979D0
b _080978EC
.align 2, 0
_080978CC: .4byte gUnknown_2039874
_080978D0: .4byte gFieldCallback2
_080978D4: .4byte FieldCallback_PrepareFadeInFromMenu
_080978D8: .4byte gPostMenuFieldCallback
_080978DC: .4byte sub_80979D0
_080978E0:
strb r0, [r4]
_080978E2:
ldr r1, _080978F4 @ =gFieldCallback2
ldr r0, _080978F8 @ =FieldCallback_PrepareFadeInFromMenu
str r0, [r1]
ldr r1, _080978FC @ =gPostMenuFieldCallback
ldr r0, _08097900 @ =sub_8097984
_080978EC:
str r0, [r1]
movs r0, 0x1
b _08097970
.align 2, 0
_080978F4: .4byte gFieldCallback2
_080978F8: .4byte FieldCallback_PrepareFadeInFromMenu
_080978FC: .4byte gPostMenuFieldCallback
_08097900: .4byte sub_8097984
_08097904:
ldr r4, _0809797C @ =gPlayerFacingPosition
adds r1, r4, 0x2
adds r0, r4, 0
bl PlayerGetDestCoords
movs r7, 0
adds r2, r4, 0
ldr r0, _08097980 @ =0x0000ffff
mov r8, r0
_08097916:
mov r1, r8
adds r0, r1, r7
ldrh r1, [r2, 0x2]
adds r0, r1
movs r6, 0
lsls r0, 16
asrs r5, r0, 16
_08097924:
mov r1, r8
adds r0, r1, r6
ldrh r1, [r2]
adds r0, r1
lsls r0, 16
asrs r4, r0, 16
adds r0, r4, 0
adds r1, r5, 0
str r2, [sp]
bl MapGridGetZCoordAt
lsls r0, 24
lsrs r0, 24
ldr r2, [sp]
movs r1, 0x4
ldrsb r1, [r2, r1]
cmp r0, r1
bne _0809795A
adds r0, r4, 0
adds r1, r5, 0
bl sub_8097874
lsls r0, 24
lsrs r0, 24
ldr r2, [sp]
cmp r0, 0x1
beq _080978E2
_0809795A:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x2
bls _08097924
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0x2
bls _08097916
movs r0, 0
_08097970:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0809797C: .4byte gPlayerFacingPosition
_08097980: .4byte 0x0000ffff
thumb_func_end sub_8097898
thumb_func_start sub_8097984
sub_8097984: @ 8097984
push {lr}
movs r0, 0x1
bl FieldEffectStart
bl GetCursorSelectionMonId
ldr r1, _0809799C @ =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0809799C: .4byte gFieldEffectArguments
thumb_func_end sub_8097984
thumb_func_start sub_80979A0
sub_80979A0: @ 80979A0
push {lr}
bl oei_task_add
lsls r0, 24
lsrs r0, 24
ldr r2, _080979C8 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r2, _080979CC @ =sub_8097A20
lsrs r0, r2, 16
strh r0, [r1, 0x18]
strh r2, [r1, 0x1A]
movs r0, 0x12
bl IncrementGameStat
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_080979C8: .4byte gTasks
_080979CC: .4byte sub_8097A20
thumb_func_end sub_80979A0
thumb_func_start sub_80979D0
sub_80979D0: @ 80979D0
push {lr}
bl GetCursorSelectionMonId
ldr r1, _080979E8 @ =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
ldr r0, _080979EC @ =gUnknown_81BDF6B
bl ScriptContext1_SetupScript
pop {r0}
bx r0
.align 2, 0
_080979E8: .4byte gFieldEffectArguments
_080979EC: .4byte gUnknown_81BDF6B
thumb_func_end sub_80979D0
thumb_func_start sub_80979F0
sub_80979F0: @ 80979F0
push {lr}
bl oei_task_add
lsls r0, 24
lsrs r0, 24
ldr r2, _08097A18 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r2, _08097A1C @ =sub_8097C6C
lsrs r0, r2, 16
strh r0, [r1, 0x18]
strh r2, [r1, 0x1A]
movs r0, 0x12
bl IncrementGameStat
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08097A18: .4byte gTasks
_08097A1C: .4byte sub_8097C6C
thumb_func_end sub_80979F0
thumb_func_start sub_8097A20
sub_8097A20: @ 8097A20
push {lr}
movs r0, 0x1
bl FieldEffectActiveListRemove
ldr r0, _08097A38 @ =gUnknown_2039874
ldrb r0, [r0]
cmp r0, 0x1
bne _08097A3C
bl sub_80CCDD0
b _08097A42
.align 2, 0
_08097A38: .4byte gUnknown_2039874
_08097A3C:
movs r0, 0x3A
bl FieldEffectStart
_08097A42:
pop {r0}
bx r0
thumb_func_end sub_8097A20
thumb_func_start sub_8097A48
sub_8097A48: @ 8097A48
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r7, 0
movs r0, 0x79
bl PlaySE
ldr r4, _08097B38 @ =gPlayerFacingPosition
adds r1, r4, 0x2
adds r0, r4, 0
bl PlayerGetDestCoords
mov r8, r4
ldr r0, _08097B3C @ =0x0000ffff
mov r9, r0
_08097A68:
mov r1, r9
adds r0, r1, r7
mov r2, r8
ldrh r2, [r2, 0x2]
adds r0, r2
movs r6, 0
lsls r0, 16
asrs r5, r0, 16
_08097A78:
mov r1, r9
adds r0, r1, r6
mov r2, r8
ldrh r2, [r2]
adds r0, r2
lsls r0, 16
asrs r4, r0, 16
adds r0, r4, 0
adds r1, r5, 0
bl MapGridGetZCoordAt
lsls r0, 24
lsrs r0, 24
mov r2, r8
movs r1, 0x4
ldrsb r1, [r2, r1]
cmp r0, r1
bne _08097ABC
adds r0, r4, 0
adds r1, r5, 0
bl sub_8097874
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08097ABC
adds r0, r4, 0
adds r1, r5, 0
bl sub_8097B50
adds r0, r4, 0
adds r1, r5, 0
bl sub_805F378
_08097ABC:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x2
bls _08097A78
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0x2
bls _08097A68
bl DrawWholeMapView
ldr r4, _08097B40 @ =gUnknown_2039870
movs r0, 0x8
bl Alloc
str r0, [r4]
movs r7, 0
ldr r5, _08097B44 @ =gSprites
_08097AE2:
ldr r0, _08097B48 @ =gPlayerAvatar
ldrb r1, [r0, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrh r1, [r0, 0x2]
lsls r1, 23
lsrs r1, 7
movs r2, 0x80
lsls r2, 12
adds r1, r2
asrs r1, 16
ldrb r2, [r0]
adds r2, 0x14
ldr r0, _08097B4C @ =gUnknown_83D414C
movs r3, 0
bl CreateSprite
ldr r1, [r4]
adds r1, r7
strb r0, [r1]
ldr r0, [r4]
adds r0, r7
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
lsls r1, r7, 5
strh r1, [r0, 0x32]
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0x7
bls _08097AE2
movs r0, 0
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08097B38: .4byte gPlayerFacingPosition
_08097B3C: .4byte 0x0000ffff
_08097B40: .4byte gUnknown_2039870
_08097B44: .4byte gSprites
_08097B48: .4byte gPlayerAvatar
_08097B4C: .4byte gUnknown_83D414C
thumb_func_end sub_8097A48
thumb_func_start sub_8097B50
sub_8097B50: @ 8097B50
push {r4-r7,lr}
lsls r0, 16
lsls r1, 16
movs r4, 0
lsrs r6, r0, 16
asrs r0, 16
lsrs r7, r1, 16
asrs r1, 16
bl MapGridGetMetatileIdAt
lsls r0, 16
lsrs r2, r0, 16
ldr r1, _08097B84 @ =gUnknown_83D4100
ldr r5, _08097B88 @ =0x0000ffff
mov r12, r1
_08097B6E:
lsls r3, r4, 2
adds r0, r3, r1
ldrh r0, [r0]
cmp r0, r5
beq _08097BA0
cmp r0, r2
beq _08097B8C
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
b _08097B6E
.align 2, 0
_08097B84: .4byte gUnknown_83D4100
_08097B88: .4byte 0x0000ffff
_08097B8C:
lsls r0, r6, 16
asrs r0, 16
lsls r1, r7, 16
asrs r1, 16
mov r2, r12
adds r2, 0x2
adds r2, r3, r2
ldrh r2, [r2]
bl MapGridSetMetatileIdAt
_08097BA0:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8097B50
thumb_func_start objc_8097BA8
objc_8097BA8: @ 8097BA8
movs r2, 0
movs r1, 0x8
strh r1, [r0, 0x2E]
strh r2, [r0, 0x30]
strh r2, [r0, 0x34]
ldr r1, _08097BB8 @ =objc_8097BBC
str r1, [r0, 0x1C]
bx lr
.align 2, 0
_08097BB8: .4byte objc_8097BBC
thumb_func_end objc_8097BA8
thumb_func_start objc_8097BBC
objc_8097BBC: @ 8097BBC
push {r4,lr}
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r2, 0x2E
ldrsh r1, [r4, r2]
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r2, 0x2E
ldrsh r1, [r4, r2]
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
adds r0, 0x8
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x32]
ldrh r1, [r4, 0x2E]
adds r1, 0x1
ldrh r2, [r4, 0x34]
lsls r0, r2, 16
asrs r0, 18
adds r1, r0
strh r1, [r4, 0x2E]
adds r2, 0x1
strh r2, [r4, 0x34]
ldrh r1, [r4, 0x30]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r0, 0x1C
beq _08097C08
adds r0, r1, 0x1
strh r0, [r4, 0x30]
b _08097C0C
_08097C08:
ldr r0, _08097C14 @ =sub_8097C18
str r0, [r4, 0x1C]
_08097C0C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08097C14: .4byte sub_8097C18
thumb_func_end objc_8097BBC
thumb_func_start sub_8097C18
sub_8097C18: @ 8097C18
push {r4-r6,lr}
movs r4, 0x1
_08097C1C:
ldr r6, _08097C64 @ =gUnknown_2039870
ldr r0, [r6]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r5, _08097C68 @ =gSprites
adds r0, r5
bl DestroySprite
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x7
bls _08097C1C
ldr r0, [r6]
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
movs r1, 0x3A
bl FieldEffectStop
ldr r0, [r6]
bl Free
bl sub_80696C0
bl ScriptContext2_Disable
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08097C64: .4byte gUnknown_2039870
_08097C68: .4byte gSprites
thumb_func_end sub_8097C18
thumb_func_start sub_8097C6C
sub_8097C6C: @ 8097C6C
push {lr}
movs r0, 0x79
bl PlaySE
movs r0, 0x2
bl FieldEffectActiveListRemove
bl EnableBothScriptContexts
pop {r0}
bx r0
thumb_func_end sub_8097C6C
.align 2, 0 @ Don't pad with nop.