summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-02-01 21:39:02 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2020-02-01 21:39:02 -0500
commit708fa70823f81cb9b2dffd93bf5f00842ddb4d72 (patch)
tree70c0627dd0a048fa55929877dd50e990f99537f9
parentfc3d571ab9ab060840b50410b0fe279fb5908a0e (diff)
event_object_80688E4
-rw-r--r--asm/event_object_80688E4.s1503
-rw-r--r--asm/event_object_movement.s10
-rw-r--r--asm/field_effect_helpers.s26
-rw-r--r--asm/overworld.s2
-rw-r--r--data/event_object_80688E4.s97
-rw-r--r--include/event_object_80688E4.h4
-rw-r--r--include/event_object_movement.h3
-rw-r--r--include/field_effect.h2
-rw-r--r--include/global.fieldmap.h2
-rw-r--r--ld_script.txt4
-rw-r--r--src/event_object_80688E4.c603
-rw-r--r--src/rfu_union_tool.c2
-rw-r--r--src/scrcmd.c2
13 files changed, 632 insertions, 1628 deletions
diff --git a/asm/event_object_80688E4.s b/asm/event_object_80688E4.s
deleted file mode 100644
index 93309a80d..000000000
--- a/asm/event_object_80688E4.s
+++ /dev/null
@@ -1,1503 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start FreezeObjectEvent
-FreezeObjectEvent: @ 80688E4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5]
- movs r0, 0xA0
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- bne _0806896C
- ldrb r0, [r5, 0x1]
- movs r4, 0x1
- orrs r0, r4
- strb r0, [r5, 0x1]
- ldr r3, _08068968 @ =gSprites
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x2C
- ldrb r1, [r0]
- lsls r1, 25
- lsrs r1, 31
- lsls r1, 7
- ldrb r2, [r5, 0x2]
- movs r0, 0x7F
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x2]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x2C
- ldrb r1, [r0]
- lsrs r1, 7
- ands r1, r4
- ldrb r2, [r5, 0x3]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x3]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0
- b _0806896E
- .align 2, 0
-_08068968: .4byte gSprites
-_0806896C:
- movs r0, 0x1
-_0806896E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FreezeObjectEvent
-
- thumb_func_start FreezeObjectEvents
-FreezeObjectEvents: @ 8068974
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _080689A8 @ =gObjectEvents
-_0806897A:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _08068998
- ldr r0, _080689AC @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- beq _08068998
- adds r0, r1, 0
- bl FreezeObjectEvent
-_08068998:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _0806897A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080689A8: .4byte gObjectEvents
-_080689AC: .4byte gPlayerAvatar
- thumb_func_end FreezeObjectEvents
-
- thumb_func_start FreezeObjectEventsExceptOne
-FreezeObjectEventsExceptOne: @ 80689B0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r6, _080689EC @ =gObjectEvents
-_080689BA:
- cmp r4, r5
- beq _080689DC
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, r0, r6
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _080689DC
- ldr r0, _080689F0 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- beq _080689DC
- adds r0, r1, 0
- bl FreezeObjectEvent
-_080689DC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080689BA
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080689EC: .4byte gObjectEvents
-_080689F0: .4byte gPlayerAvatar
- thumb_func_end FreezeObjectEventsExceptOne
-
- thumb_func_start UnfreezeObjectEvent
-UnfreezeObjectEvent: @ 80689F4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r2, [r5]
- ldr r1, _08068A54 @ =0x00000101
- adds r0, r1, 0
- ands r0, r2
- cmp r0, r1
- bne _08068A4C
- ldrb r1, [r5, 0x1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r5, 0x1]
- ldr r4, _08068A58 @ =gSprites
- ldrb r0, [r5, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r5, 0x2]
- adds r1, 0x2C
- lsrs r2, 7
- lsls r2, 6
- ldrb r3, [r1]
- movs r0, 0x41
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1]
- ldrb r0, [r5, 0x4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldrb r1, [r5, 0x3]
- lsls r1, 31
- lsrs r1, 31
- adds r2, 0x2C
- lsls r1, 7
- ldrb r3, [r2]
- movs r0, 0x7F
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_08068A4C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08068A54: .4byte 0x00000101
-_08068A58: .4byte gSprites
- thumb_func_end UnfreezeObjectEvent
-
- thumb_func_start UnfreezeObjectEvents
-UnfreezeObjectEvents: @ 8068A5C
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _08068A88 @ =gObjectEvents
-_08068A62:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _08068A78
- adds r0, r1, 0
- bl UnfreezeObjectEvent
-_08068A78:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _08068A62
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08068A88: .4byte gObjectEvents
- thumb_func_end UnfreezeObjectEvents
-
- thumb_func_start little_step
-little_step: @ 8068A8C
- lsls r1, 24
- ldr r2, _08068AA8 @ =gUnknown_83A64C8
- lsrs r1, 22
- adds r1, r2
- ldrh r2, [r1]
- ldrh r3, [r0, 0x20]
- adds r2, r3
- strh r2, [r0, 0x20]
- ldrh r1, [r1, 0x2]
- ldrh r2, [r0, 0x22]
- adds r1, r2
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_08068AA8: .4byte gUnknown_83A64C8
- thumb_func_end little_step
-
- thumb_func_start double_little_steps
-double_little_steps: @ 8068AAC
- lsls r1, 24
- ldr r2, _08068ACC @ =gUnknown_83A64C8
- lsrs r1, 22
- adds r1, r2
- ldrh r2, [r1]
- lsls r2, 1
- ldrh r3, [r0, 0x20]
- adds r2, r3
- strh r2, [r0, 0x20]
- ldrh r1, [r1, 0x2]
- lsls r1, 1
- ldrh r2, [r0, 0x22]
- adds r1, r2
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_08068ACC: .4byte gUnknown_83A64C8
- thumb_func_end double_little_steps
-
- thumb_func_start triple_little_steps
-triple_little_steps: @ 8068AD0
- lsls r1, 24
- ldr r2, _08068AF4 @ =gUnknown_83A64C8
- lsrs r1, 22
- adds r1, r2
- ldrh r2, [r1]
- lsls r3, r2, 1
- adds r2, r3
- ldrh r3, [r0, 0x20]
- adds r2, r3
- strh r2, [r0, 0x20]
- ldrh r1, [r1, 0x2]
- lsls r2, r1, 1
- adds r1, r2
- ldrh r2, [r0, 0x22]
- adds r1, r2
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_08068AF4: .4byte gUnknown_83A64C8
- thumb_func_end triple_little_steps
-
- thumb_func_start quad_little_steps
-quad_little_steps: @ 8068AF8
- lsls r1, 24
- ldr r2, _08068B18 @ =gUnknown_83A64C8
- lsrs r1, 22
- adds r1, r2
- ldrh r2, [r1]
- lsls r2, 2
- ldrh r3, [r0, 0x20]
- adds r2, r3
- strh r2, [r0, 0x20]
- ldrh r1, [r1, 0x2]
- lsls r1, 2
- ldrh r2, [r0, 0x22]
- adds r1, r2
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_08068B18: .4byte gUnknown_83A64C8
- thumb_func_end quad_little_steps
-
- thumb_func_start oct_little_steps
-oct_little_steps: @ 8068B1C
- lsls r1, 24
- ldr r2, _08068B3C @ =gUnknown_83A64C8
- lsrs r1, 22
- adds r1, r2
- ldrh r2, [r1]
- lsls r2, 3
- ldrh r3, [r0, 0x20]
- adds r2, r3
- strh r2, [r0, 0x20]
- ldrh r1, [r1, 0x2]
- lsls r1, 3
- ldrh r2, [r0, 0x22]
- adds r1, r2
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_08068B3C: .4byte gUnknown_83A64C8
- thumb_func_end oct_little_steps
-
- thumb_func_start oamt_npc_ministep_reset
-oamt_npc_ministep_reset: @ 8068B40
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0
- strh r1, [r0, 0x34]
- strh r2, [r0, 0x36]
- strh r3, [r0, 0x38]
- bx lr
- thumb_func_end oamt_npc_ministep_reset
-
- thumb_func_start obj_npc_ministep
-obj_npc_ministep: @ 8068B54
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _08068BAC @ =gUnknown_83A71B0
- movs r0, 0x36
- ldrsh r2, [r4, r0]
- lsls r0, r2, 1
- adds r0, r5
- movs r3, 0x38
- ldrsh r1, [r4, r3]
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r1, r0
- bge _08068BB4
- ldr r1, _08068BB0 @ =gUnknown_83A719C
- lsls r0, r2, 2
- adds r0, r1
- movs r1, 0x38
- ldrsh r2, [r4, r1]
- ldr r0, [r0]
- lsls r2, 2
- adds r2, r0
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, [r2]
- adds r0, r4, 0
- bl _call_via_r2
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- lsls r1, 1
- adds r1, r5
- lsls r0, 16
- asrs r0, 16
- movs r3, 0
- ldrsh r1, [r1, r3]
- cmp r0, r1
- blt _08068BB4
- movs r0, 0x1
- b _08068BB6
- .align 2, 0
-_08068BAC: .4byte gUnknown_83A71B0
-_08068BB0: .4byte gUnknown_83A719C
-_08068BB4:
- movs r0, 0
-_08068BB6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end obj_npc_ministep
-
- thumb_func_start sub_8068BBC
-sub_8068BBC: @ 8068BBC
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- strh r1, [r0, 0x34]
- strh r2, [r0, 0x36]
- strh r2, [r0, 0x38]
- bx lr
- thumb_func_end sub_8068BBC
-
- thumb_func_start sub_8068BCC
-sub_8068BCC: @ 8068BCC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x36]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08068BEC
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl little_step
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
-_08068BEC:
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bgt _08068BFE
- movs r0, 0
- b _08068C00
-_08068BFE:
- movs r0, 0x1
-_08068C00:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8068BCC
-
- thumb_func_start sub_8068C08
-sub_8068C08: @ 8068C08
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- strh r1, [r0, 0x34]
- strh r2, [r0, 0x36]
- strh r2, [r0, 0x38]
- bx lr
- thumb_func_end sub_8068C08
-
- thumb_func_start sub_8068C18
-sub_8068C18: @ 8068C18
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bgt _08068C3E
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl little_step
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _08068C42
-_08068C3E:
- movs r0, 0
- strh r0, [r4, 0x36]
-_08068C42:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bgt _08068C4E
- movs r0, 0
- b _08068C50
-_08068C4E:
- movs r0, 0x1
-_08068C50:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8068C18
-
- thumb_func_start sub_8068C58
-sub_8068C58: @ 8068C58
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- strh r1, [r0, 0x34]
- strh r2, [r0, 0x36]
- strh r2, [r0, 0x38]
- bx lr
- thumb_func_end sub_8068C58
-
- thumb_func_start sub_8068C68
-sub_8068C68: @ 8068C68
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _08068C90
- movs r0, 0
- strh r0, [r4, 0x36]
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl little_step
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
-_08068C90:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bgt _08068C9C
- movs r0, 0
- b _08068C9E
-_08068C9C:
- movs r0, 0x1
-_08068C9E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8068C68
-
- thumb_func_start sub_8068CA4
-sub_8068CA4: @ 8068CA4
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- strh r1, [r0, 0x34]
- strh r2, [r0, 0x36]
- strh r2, [r0, 0x38]
- bx lr
- thumb_func_end sub_8068CA4
-
- thumb_func_start sub_8068CB4
-sub_8068CB4: @ 8068CB4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08068CD8
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl little_step
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- b _08068CE8
-_08068CD8:
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl double_little_steps
- ldrh r0, [r4, 0x38]
- adds r0, 0x2
-_08068CE8:
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bgt _08068CF6
- movs r0, 0
- b _08068CF8
-_08068CF6:
- movs r0, 0x1
-_08068CF8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8068CB4
-
- thumb_func_start sub_8068D00
-sub_8068D00: @ 8068D00
- lsls r1, 24
- ldr r2, _08068D18 @ =gUnknown_83A71EC
- lsrs r1, 22
- adds r1, r2
- lsls r0, 16
- asrs r0, 16
- ldr r1, [r1]
- adds r1, r0
- movs r0, 0
- ldrsb r0, [r1, r0]
- bx lr
- .align 2, 0
-_08068D18: .4byte gUnknown_83A71EC
- thumb_func_end sub_8068D00
-
- thumb_func_start sub_8068D1C
-sub_8068D1C: @ 8068D1C
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- movs r4, 0
- strh r1, [r0, 0x34]
- strh r2, [r0, 0x36]
- strh r3, [r0, 0x38]
- strh r4, [r0, 0x3A]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8068D1C
-
- thumb_func_start sub_8068D3C
-sub_8068D3C: @ 8068D3C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r1, _08068DBC @ =gUnknown_83A71F8
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- add r5, sp, 0x8
- ldr r1, _08068DC0 @ =gUnknown_83A71FE
- adds r0, r5, 0
- movs r2, 0x3
- bl memcpy
- movs r6, 0
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08068D6E
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl little_step
-_08068D6E:
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- adds r1, r5, r1
- ldrb r1, [r1]
- asrs r0, r1
- ldrh r1, [r4, 0x38]
- lsls r1, 24
- lsrs r1, 24
- bl sub_8068D00
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x3A]
- adds r1, 0x1
- strh r1, [r4, 0x3A]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- lsls r0, 16
- asrs r2, r0, 16
- lsls r1, 16
- asrs r1, 16
- asrs r0, 17
- cmp r1, r0
- bne _08068DA8
- movs r6, 0x1
-_08068DA8:
- cmp r1, r2
- blt _08068DB2
- movs r0, 0
- strh r0, [r4, 0x26]
- movs r6, 0xFF
-_08068DB2:
- adds r0, r6, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08068DBC: .4byte gUnknown_83A71F8
-_08068DC0: .4byte gUnknown_83A71FE
- thumb_func_end sub_8068D3C
-
- thumb_func_start sub_8068DC4
-sub_8068DC4: @ 8068DC4
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- ldr r1, _08068E50 @ =gUnknown_83A7202
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- add r4, sp, 0x8
- ldr r1, _08068E54 @ =gUnknown_83A7208
- adds r0, r4, 0
- movs r2, 0x3
- bl memcpy
- movs r6, 0
- movs r1, 0x36
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08068E00
- ldrh r1, [r5, 0x3A]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08068E00
- ldrh r1, [r5, 0x34]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl little_step
-_08068E00:
- movs r2, 0x3A
- ldrsh r0, [r5, r2]
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- adds r1, r4, r1
- ldrb r1, [r1]
- asrs r0, r1
- ldrh r1, [r5, 0x38]
- lsls r1, 24
- lsrs r1, 24
- bl sub_8068D00
- strh r0, [r5, 0x26]
- ldrh r1, [r5, 0x3A]
- adds r1, 0x1
- strh r1, [r5, 0x3A]
- movs r2, 0x36
- ldrsh r0, [r5, r2]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- lsls r0, 16
- asrs r2, r0, 16
- lsls r1, 16
- asrs r1, 16
- asrs r0, 17
- cmp r1, r0
- bne _08068E3A
- movs r6, 0x1
-_08068E3A:
- cmp r1, r2
- blt _08068E44
- movs r0, 0
- strh r0, [r5, 0x26]
- movs r6, 0xFF
-_08068E44:
- adds r0, r6, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08068E50: .4byte gUnknown_83A7202
-_08068E54: .4byte gUnknown_83A7208
- thumb_func_end sub_8068DC4
-
- thumb_func_start SetObjectEventStepTimer
-SetObjectEventStepTimer: @ 8068E58
- strh r1, [r0, 0x34]
- bx lr
- thumb_func_end SetObjectEventStepTimer
-
- thumb_func_start RunObjectEventStepTimer
-RunObjectEventStepTimer: @ 8068E5C
- push {lr}
- ldrh r1, [r0, 0x34]
- subs r1, 0x1
- strh r1, [r0, 0x34]
- lsls r1, 16
- cmp r1, 0
- beq _08068E6E
- movs r0, 0
- b _08068E70
-_08068E6E:
- movs r0, 0x1
-_08068E70:
- pop {r1}
- bx r1
- thumb_func_end RunObjectEventStepTimer
-
- thumb_func_start obj_anim_image_set_and_seek
-obj_anim_image_set_and_seek: @ 8068E74
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- adds r3, r0, 0
- adds r3, 0x2A
- strb r1, [r3]
- adds r4, r0, 0
- adds r4, 0x2C
- ldrb r3, [r4]
- movs r1, 0x41
- negs r1, r1
- ands r1, r3
- strb r1, [r4]
- adds r1, r2, 0
- bl SeekSpriteAnim
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end obj_anim_image_set_and_seek
-
- thumb_func_start sub_8068E9C
-sub_8068E9C: @ 8068E9C
- push {lr}
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08068EAE
- movs r0, 0
- b _08068EB0
-_08068EAE:
- movs r0, 0x1
-_08068EB0:
- pop {r1}
- bx r1
- thumb_func_end sub_8068E9C
-
- thumb_func_start sub_8068EB4
-sub_8068EB4: @ 8068EB4
- push {r4-r6,lr}
- mov r12, r0
- lsls r1, 24
- lsrs r1, 24
- mov r3, r12
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08068F1C
- mov r0, r12
- ldrh r1, [r0, 0x24]
- ldrh r2, [r0, 0x20]
- adds r1, r2
- mov r4, r12
- adds r4, 0x28
- movs r0, 0
- ldrsb r0, [r4, r0]
- ldr r2, _08068F14 @ =gSpriteCoordOffsetX
- adds r0, r1
- ldrh r2, [r2]
- adds r0, r2
- lsls r0, 16
- lsrs r6, r0, 16
- mov r0, r12
- ldrh r1, [r0, 0x26]
- ldrh r2, [r0, 0x22]
- adds r1, r2
- subs r3, 0x15
- movs r0, 0
- ldrsb r0, [r3, r0]
- ldr r2, _08068F18 @ =gSpriteCoordOffsetY
- adds r0, r1
- ldrh r2, [r2]
- adds r0, r2
- lsls r0, 16
- lsrs r5, r0, 16
- adds r2, r3, 0
- b _08068F4A
- .align 2, 0
-_08068F14: .4byte gSpriteCoordOffsetX
-_08068F18: .4byte gSpriteCoordOffsetY
-_08068F1C:
- mov r0, r12
- ldrh r1, [r0, 0x24]
- ldrh r2, [r0, 0x20]
- adds r1, r2
- mov r3, r12
- adds r3, 0x28
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- mov r0, r12
- ldrh r1, [r0, 0x26]
- ldrh r2, [r0, 0x22]
- adds r1, r2
- mov r2, r12
- adds r2, 0x29
- movs r0, 0
- ldrsb r0, [r2, r0]
- adds r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, r3, 0
-_08068F4A:
- ldrb r0, [r4]
- lsls r0, 24
- asrs r0, 25
- subs r0, r6, r0
- lsls r0, 16
- lsrs r3, r0, 16
- ldrb r0, [r2]
- lsls r0, 24
- asrs r0, 25
- subs r0, r5, r0
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r0, r6, 16
- asrs r0, 16
- cmp r0, 0xFF
- bgt _08068F76
- lsls r0, r3, 16
- asrs r0, 16
- movs r1, 0x10
- negs r1, r1
- cmp r0, r1
- bge _08068F82
-_08068F76:
- mov r4, r12
- adds r4, 0x3E
- ldrb r0, [r4]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
-_08068F82:
- lsls r0, r5, 16
- asrs r0, 16
- cmp r0, 0xAF
- bgt _08068F96
- lsls r0, r2, 16
- asrs r0, 16
- movs r1, 0x10
- negs r1, r1
- cmp r0, r1
- bge _08068FA2
-_08068F96:
- mov r0, r12
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_08068FA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8068EB4
-
- thumb_func_start sub_8068FA8
-sub_8068FA8: @ 8068FA8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8069248
- ldrh r0, [r4, 0x30]
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- movs r2, 0x1
- bl SetObjectSubpriorityByZCoord
- ldrh r1, [r4, 0x32]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8068EB4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8068FA8
-
- thumb_func_start sub_8068FD0
-sub_8068FD0: @ 8068FD0
- push {r4,r5,lr}
- movs r5, 0
- movs r4, 0x3F
-_08068FD6:
- ldr r0, _08069004 @ =gSprites
- adds r2, r5, r0
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08068FF6
- ldr r1, [r2, 0x1C]
- ldr r0, _08069008 @ =sub_8068FA8
- cmp r1, r0
- bne _08068FF6
- adds r0, r2, 0
- bl DestroySprite
-_08068FF6:
- adds r5, 0x44
- subs r4, 0x1
- cmp r4, 0
- bge _08068FD6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08069004: .4byte gSprites
-_08069008: .4byte sub_8068FA8
- thumb_func_end sub_8068FD0
-
- thumb_func_start sub_806900C
-sub_806900C: @ 806900C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- ldr r6, _08069040 @ =gSprites
- movs r4, 0
-_08069018:
- adds r2, r4, r6
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08069048
- ldr r1, [r2, 0x1C]
- ldr r0, _08069044 @ =sub_8068FA8
- cmp r1, r0
- bne _08069048
- ldrh r0, [r2, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- bne _08069048
- adds r0, r3, 0
- b _08069052
- .align 2, 0
-_08069040: .4byte gSprites
-_08069044: .4byte sub_8068FA8
-_08069048:
- adds r4, 0x44
- adds r3, 0x1
- cmp r3, 0x3F
- ble _08069018
- movs r0, 0x40
-_08069052:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_806900C
-
- thumb_func_start sub_8069058
-sub_8069058: @ 8069058
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- bl sub_806900C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0806908A
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _08069090 @ =gSprites
- adds r4, r0
- adds r0, r5, 0
- bl ObjectEventDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_0806908A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08069090: .4byte gSprites
- thumb_func_end sub_8069058
-
- thumb_func_start sub_8069094
-sub_8069094: @ 8069094
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- bl sub_806900C
- adds r1, r0, 0
- cmp r1, 0x40
- beq _0806911E
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080690F8 @ =gSprites
- adds r4, r0, r1
- adds r0, r5, 0
- bl GetObjectEventGraphicsInfo
- ldrh r3, [r4, 0x4]
- lsls r3, 22
- ldr r1, [r0, 0x10]
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [r4]
- str r2, [r4, 0x4]
- lsrs r3, 22
- ldrh r2, [r4, 0x4]
- ldr r1, _080690FC @ =0xfffffc00
- ands r1, r2
- orrs r1, r3
- strh r1, [r4, 0x4]
- ldrb r2, [r0, 0xC]
- lsls r2, 28
- lsrs r2, 24
- ldrb r3, [r4, 0x5]
- movs r1, 0xF
- ands r1, r3
- orrs r1, r2
- strb r1, [r4, 0x5]
- ldr r1, [r0, 0x1C]
- str r1, [r4, 0xC]
- ldr r1, [r0, 0x14]
- cmp r1, 0
- bne _08069100
- str r1, [r4, 0x18]
- adds r0, r4, 0
- adds r0, 0x42
- strb r1, [r0]
- b _08069116
- .align 2, 0
-_080690F8: .4byte gSprites
-_080690FC: .4byte 0xfffffc00
-_08069100:
- adds r0, r4, 0
- bl SetSubspriteTables
- adds r2, r4, 0
- adds r2, 0x42
- ldrb r0, [r2]
- movs r1, 0x3F
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- strb r1, [r2]
-_08069116:
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_0806911E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8069094
-
- thumb_func_start sub_8069124
-sub_8069124: @ 8069124
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- bl sub_806900C
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- cmp r2, 0x40
- beq _08069160
- cmp r4, 0
- beq _08069154
- ldr r0, _08069150 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x32]
- b _08069160
- .align 2, 0
-_08069150: .4byte gSprites
-_08069154:
- ldr r1, _08069168 @ =gSprites
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- strh r4, [r0, 0x32]
-_08069160:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08069168: .4byte gSprites
- thumb_func_end sub_8069124
-
- thumb_func_start sub_806916C
-sub_806916C: @ 806916C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_806900C
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- bne _08069182
- movs r0, 0
- b _0806919A
-_08069182:
- movs r3, 0
- ldr r0, _080691A0 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- movs r2, 0x32
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- bne _08069198
- movs r3, 0x1
-_08069198:
- adds r0, r3, 0
-_0806919A:
- pop {r1}
- bx r1
- .align 2, 0
-_080691A0: .4byte gSprites
- thumb_func_end sub_806916C
-
- thumb_func_start sub_80691A4
-sub_80691A4: @ 80691A4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- bl sub_806900C
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080691CA
- ldr r0, _080691D0 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r4, [r1, 0x34]
- strh r0, [r1, 0x36]
-_080691CA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080691D0: .4byte gSprites
- thumb_func_end sub_80691A4
-
- thumb_func_start sub_80691D4
-sub_80691D4: @ 80691D4
- push {lr}
- adds r2, r0, 0
- movs r1, 0x36
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _080691E6
- cmp r0, 0x1
- beq _080691EE
- b _0806920C
-_080691E6:
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x36]
- adds r0, 0x1
- strh r0, [r2, 0x36]
-_080691EE:
- ldrh r0, [r2, 0x26]
- subs r0, 0x8
- movs r3, 0
- strh r0, [r2, 0x26]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xA0
- negs r1, r1
- cmp r0, r1
- bne _0806920C
- strh r3, [r2, 0x26]
- movs r0, 0x1
- strh r0, [r2, 0x32]
- strh r3, [r2, 0x34]
- strh r3, [r2, 0x36]
-_0806920C:
- pop {r0}
- bx r0
- thumb_func_end sub_80691D4
-
- thumb_func_start sub_8069210
-sub_8069210: @ 8069210
- push {lr}
- adds r1, r0, 0
- movs r2, 0x36
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _08069222
- cmp r0, 0x1
- beq _0806922C
- b _0806923E
-_08069222:
- ldr r0, _08069244 @ =0x0000ff60
- strh r0, [r1, 0x26]
- ldrh r0, [r1, 0x36]
- adds r0, 0x1
- strh r0, [r1, 0x36]
-_0806922C:
- ldrh r0, [r1, 0x26]
- adds r0, 0x8
- strh r0, [r1, 0x26]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _0806923E
- strh r0, [r1, 0x34]
- strh r0, [r1, 0x36]
-_0806923E:
- pop {r0}
- bx r0
- .align 2, 0
-_08069244: .4byte 0x0000ff60
- thumb_func_end sub_8069210
-
- thumb_func_start sub_8069248
-sub_8069248: @ 8069248
- push {lr}
- adds r1, r0, 0
- movs r2, 0x34
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _08069264
- cmp r0, 0x1
- bgt _0806925E
- cmp r0, 0
- beq _08069284
- b _08069274
-_0806925E:
- cmp r0, 0x2
- beq _0806926C
- b _08069274
-_08069264:
- adds r0, r1, 0
- bl sub_8069210
- b _08069284
-_0806926C:
- adds r0, r1, 0
- bl sub_80691D4
- b _08069284
-_08069274:
- movs r0, 0
- strh r0, [r1, 0x34]
- ldr r0, _08069288 @ =gUnknown_83A720C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/evobjmv.c"
- ldr r1, _0806928C @ =0x00003413
- ldr r2, _08069290 @ =gUnknown_83A7240 "0"
- movs r3, 0x1
- bl AGBAssert
-_08069284:
- pop {r0}
- bx r0
- .align 2, 0
-_08069288: .4byte gUnknown_83A720C
-_0806928C: .4byte 0x00003413
-_08069290: .4byte gUnknown_83A7240
- thumb_func_end sub_8069248
-
- thumb_func_start sub_8069294
-sub_8069294: @ 8069294
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_806900C
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080692B8
- ldr r0, _080692BC @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- movs r2, 0x34
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080692C0
-_080692B8:
- movs r0, 0
- b _080692C2
- .align 2, 0
-_080692BC: .4byte gSprites
-_080692C0:
- movs r0, 0x1
-_080692C2:
- pop {r1}
- bx r1
- thumb_func_end sub_8069294
-
- thumb_func_start oe_exec_and_other_stuff
-oe_exec_and_other_stuff: @ 80692C8
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080692EC @ =gFieldEffectArguments
- adds r2, r1, 0x4
- adds r3, r1, 0
- adds r3, 0x8
- bl ObjectEventGetLocalIdAndMap
- adds r0, r4, 0
- bl FieldEffectStart
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080692EC: .4byte gFieldEffectArguments
- thumb_func_end oe_exec_and_other_stuff
-
- thumb_func_start DoShadowFieldEffect
-DoShadowFieldEffect: @ 80692F0
- push {lr}
- adds r1, r0, 0
- ldrb r2, [r1, 0x2]
- lsls r0, r2, 25
- cmp r0, 0
- blt _08069308
- movs r0, 0x40
- orrs r0, r2
- strb r0, [r1, 0x2]
- movs r0, 0x3
- bl oe_exec_and_other_stuff
-_08069308:
- pop {r0}
- bx r0
- thumb_func_end DoShadowFieldEffect
-
- thumb_func_start DoRippleFieldEffect
-DoRippleFieldEffect: @ 806930C
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r0, 0x5]
- bl GetObjectEventGraphicsInfo
- ldr r2, _08069344 @ =gFieldEffectArguments
- movs r3, 0x20
- ldrsh r1, [r4, r3]
- str r1, [r2]
- movs r3, 0x22
- ldrsh r1, [r4, r3]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- adds r1, r0
- subs r1, 0x2
- str r1, [r2, 0x4]
- movs r0, 0x97
- str r0, [r2, 0x8]
- movs r0, 0x3
- str r0, [r2, 0xC]
- movs r0, 0x5
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08069344: .4byte gFieldEffectArguments
- thumb_func_end DoRippleFieldEffect
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s
index 30af8949b..339482795 100644
--- a/asm/event_object_movement.s
+++ b/asm/event_object_movement.s
@@ -1645,7 +1645,7 @@ sprite_new: @ 805E9F8
adds r0, r5, 0
bl GetObjectEventGraphicsInfo
adds r4, r0, 0
- ldr r1, _0805EB38 @ =sub_8068FA8
+ ldr r1, _0805EB38 @ =UpdateEventObjectSpriteSubpriorityAndVisibility
add r3, sp, 0x1C
adds r0, r5, 0
mov r2, sp
@@ -1769,7 +1769,7 @@ _0805EB24:
pop {r1}
bx r1
.align 2, 0
-_0805EB38: .4byte sub_8068FA8
+_0805EB38: .4byte UpdateEventObjectSpriteSubpriorityAndVisibility
_0805EB3C: .4byte 0x0000ffff
_0805EB40: .4byte gSprites
thumb_func_end sprite_new
@@ -18285,7 +18285,7 @@ sub_8066108: @ 8066108
push {r4,lr}
adds r4, r1, 0
adds r0, r4, 0
- bl sub_8068E9C
+ bl SpriteAnimEnded
lsls r0, 24
cmp r0, 0
bne _0806611C
@@ -19637,7 +19637,7 @@ sub_8066A54: @ 8066A54
push {r4,lr}
adds r4, r1, 0
adds r0, r4, 0
- bl sub_8068E9C
+ bl SpriteAnimEnded
lsls r0, 24
cmp r0, 0
beq _08066A70
@@ -19707,7 +19707,7 @@ sub_8066AD0: @ 8066AD0
push {r4,lr}
adds r4, r1, 0
adds r0, r4, 0
- bl sub_8068E9C
+ bl SpriteAnimEnded
lsls r0, 24
cmp r0, 0
beq _08066AEC
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index 2797accf4..c9494ba1d 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -951,7 +951,7 @@ _080DB4C0:
_080DB4CE:
adds r0, r5, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
ldrh r1, [r5, 0x2E]
lsls r1, 24
lsrs r1, 24
@@ -1294,7 +1294,7 @@ _080DB750:
_080DB770:
adds r0, r5, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
ldrh r1, [r5, 0x2E]
lsls r1, 24
lsrs r1, 24
@@ -1564,7 +1564,7 @@ _080DB94E:
lsls r1, 29
lsrs r1, 31
adds r0, r4, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
_080DB98E:
add sp, 0x4
pop {r3}
@@ -1781,7 +1781,7 @@ sub_80DBB18: @ 80DBB18
_080DBB2E:
adds r0, r1, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
pop {r0}
bx r0
thumb_func_end sub_80DBB18
@@ -1810,7 +1810,7 @@ sub_80DBB3C: @ 80DBB3C
lsls r1, 29
lsrs r1, 31
adds r0, r4, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x38
@@ -1966,7 +1966,7 @@ _080DBC66:
strh r0, [r4, 0x22]
adds r0, r4, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
_080DBCA6:
add sp, 0x4
pop {r4}
@@ -2233,7 +2233,7 @@ _080DBE98:
strb r0, [r1]
adds r0, r4, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
ldr r1, [r5, 0x10]
ldr r0, [r4, 0x34]
cmp r1, r0
@@ -2461,7 +2461,7 @@ _080DC03C:
strb r0, [r1]
adds r0, r4, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
_080DC080:
add sp, 0x4
pop {r4,r5}
@@ -2889,7 +2889,7 @@ sub_80DC3A8: @ 80DC3A8
push {r4,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
@@ -3627,7 +3627,7 @@ _080DC8F6:
strb r0, [r1]
adds r0, r4, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
_080DC926:
add sp, 0x4
pop {r4-r6}
@@ -3706,7 +3706,7 @@ sub_80DC99C: @ 80DC99C
strh r1, [r4, 0x22]
adds r0, r4, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
ldrh r1, [r4, 0x3E]
ldr r0, _080DC9D8 @ =0x00001004
ands r0, r1
@@ -4163,7 +4163,7 @@ sub_80DCCE0: @ 80DCCE0
_080DCCFE:
adds r0, r4, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
@@ -4195,7 +4195,7 @@ sub_80DCD1C: @ 80DCD1C
_080DCD3A:
adds r0, r2, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
_080DCD42:
pop {r0}
bx r0
diff --git a/asm/overworld.s b/asm/overworld.s
index 5c904c607..b3c3d6a22 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -7979,7 +7979,7 @@ _08058978:
_0805898A:
adds r0, r5, 0
movs r1, 0
- bl sub_8068EB4
+ bl UpdateEventObjectSpriteVisibility
ldrb r0, [r6]
lsls r0, 29
cmp r0, 0
diff --git a/data/event_object_80688E4.s b/data/event_object_80688E4.s
deleted file mode 100644
index 8d1917825..000000000
--- a/data/event_object_80688E4.s
+++ /dev/null
@@ -1,97 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .section .rodata
- .align 2
-
-gUnknown_83A710C::
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
- .4byte little_step
-
-gUnknown_83A714C::
- .4byte double_little_steps
- .4byte double_little_steps
- .4byte double_little_steps
- .4byte double_little_steps
- .4byte double_little_steps
- .4byte double_little_steps
- .4byte double_little_steps
- .4byte double_little_steps
-
-gUnknown_83A716C::
- .4byte double_little_steps
- .4byte triple_little_steps
- .4byte triple_little_steps
- .4byte double_little_steps
- .4byte triple_little_steps
- .4byte triple_little_steps
-
-gUnknown_83A7184::
- .4byte quad_little_steps
- .4byte quad_little_steps
- .4byte quad_little_steps
- .4byte quad_little_steps
-
-gUnknown_83A7194::
- .4byte oct_little_steps
- .4byte oct_little_steps
-
-gUnknown_83A719C:: @ 83A719C
- .4byte gUnknown_83A710C
- .4byte gUnknown_83A714C
- .4byte gUnknown_83A716C
- .4byte gUnknown_83A7184
- .4byte gUnknown_83A7194
-
-gUnknown_83A71B0:: @ 83A71B0
- .2byte 0x0010, 0x0008, 0x0006, 0x0004, 0x0002
-
-gUnknown_83A71BA::
- .byte 0xfc, 0xfa, 0xf8, 0xf6, 0xf5, 0xf4, 0xf4, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xfa, 0xfc, 0x00, 0x00
-
-gUnknown_83A71CA::
- .byte 0x00, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, 0x00, 0x00
-
-gUnknown_83A71DA::
- .byte 0xfe, 0xfc, 0xfa, 0xf8, 0xf7, 0xf6, 0xf6, 0xf6, 0xf7, 0xf8, 0xfa, 0xfb, 0xfd, 0xfe, 0x00, 0x00
-
- .align 2
-gUnknown_83A71EC:: @ 83A71EC
- .4byte gUnknown_83A71BA
- .4byte gUnknown_83A71CA
- .4byte gUnknown_83A71DA
-
- .align 1
-gUnknown_83A71F8:: @ 83A71F8
- .2byte 0x10, 0x10, 0x20
-
-gUnknown_83A71FE:: @ 83A71FE
- .byte 0, 0, 1
-
- .align 1
-gUnknown_83A7202:: @ 83A7202
- .2byte 0x20, 0x20, 0x40
-
-gUnknown_83A7208:: @ 83A7208
- .byte 1, 1, 2
-
- .align 2
-gUnknown_83A720C:: @ 83A720C
- abspath "evobjmv.c"
-
- .align 2
-gUnknown_83A7240:: @ 83A7240
- .asciz "0"
diff --git a/include/event_object_80688E4.h b/include/event_object_80688E4.h
index 36040e0a5..c5dadc672 100644
--- a/include/event_object_80688E4.h
+++ b/include/event_object_80688E4.h
@@ -4,9 +4,9 @@
#include "global.h"
void FreezeObjectEvents(void);
-void FreezeObjectEvent(struct ObjectEvent *);
+bool8 FreezeObjectEvent(struct ObjectEvent *);
void FreezeObjectEventsExceptOne(u8 objEventId);
-void sub_8069124(u8 a0, bool8 a1);
+void sub_8069124(u8 a0, bool32 a1);
u32 sub_806916C(u8 a0);
void sub_80691A4(u8 a0, u8 a1);
void sub_8069094(u8 a0, u8 a1);
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index f2e7bd325..89cdd0cff 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -97,7 +97,7 @@ u8 sub_8063F84(u8 direction);
u8 GetTrainerFacingDirectionMovementType(u8 direction);
void CameraObjectSetFollowedObjectId(u8 spriteId);
void UnfreezeObjectEvents(void);
-void sub_8069058(u8, u8);
+void TurnEventObject(u8, u8);
// Exported data declarations
@@ -105,5 +105,6 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
extern const struct SpritePalette gUnknown_83A5348;
extern const struct SpriteTemplate * const gFieldEffectObjectTemplatePointers[];
extern const struct OamData gObjectEventBaseOam_32x32;
+extern const struct UCoords16 gUnknown_83A64C8[];
#endif // GUARD_EVENT_OBJECT_MOVEMENT_H
diff --git a/include/field_effect.h b/include/field_effect.h
index c2d14d43c..3e30fa897 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -8,7 +8,7 @@ extern u32 gFieldEffectArguments[8];
extern void (*gPostMenuFieldCallback)(void);
extern bool8 (*gFieldCallback2)(void);
-u8 FieldEffectStart(u8);
+u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
void sub_80B69DC(void);
void CreateTeleportFieldEffectTask(void);
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 01cd992ec..b7f28d8a0 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -190,7 +190,7 @@ struct ObjectEvent
u32 mapobj_bit_19:1;
u32 mapobj_bit_20:1;
u32 mapobj_bit_21:1;
- u32 mapobj_bit_22:1;
+ u32 hasShadow:1;
u32 mapobj_bit_23:1;
/*0x03*/ u32 mapobj_bit_24:1;
u32 mapobj_bit_25:1;
diff --git a/ld_script.txt b/ld_script.txt
index 021686fcb..b4f624bc9 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -95,7 +95,7 @@ SECTIONS {
asm/field_player_avatar.o(.text);
asm/event_object_movement.o(.text);
asm/field_ground_effect.o(.text);
- asm/event_object_80688E4.o(.text);
+ src/event_object_80688E4.o(.text);
asm/field_message_box.o(.text);
src/event_object_lock.o(.text);
src/text_window_graphics.o(.text);
@@ -422,7 +422,7 @@ SECTIONS {
data/field_player_avatar.o(.rodata);
data/event_object_movement.o(.rodata);
data/field_ground_effect.o(.rodata);
- data/event_object_80688E4.o(.rodata);
+ src/event_object_80688E4.o(.rodata);
src/scrcmd.o(.rodata);
src/coord_event_weather.o(.rodata);
src/field_tasks.o(.rodata);
diff --git a/src/event_object_80688E4.c b/src/event_object_80688E4.c
new file mode 100644
index 000000000..7b9090679
--- /dev/null
+++ b/src/event_object_80688E4.c
@@ -0,0 +1,603 @@
+#include "global.h"
+#include "event_object_80688E4.h"
+#include "event_object_movement.h"
+#include "field_effect.h"
+#include "field_ground_effect.h"
+
+void sub_8069248(struct Sprite * sprite);
+
+bool8 FreezeObjectEvent(struct ObjectEvent * objectEvent)
+{
+ if (objectEvent->mapobj_bit_6 || objectEvent->mapobj_bit_8)
+ return TRUE;
+ objectEvent->mapobj_bit_8 = TRUE;
+ objectEvent->mapobj_bit_23 = gSprites[objectEvent->spriteId].animPaused;
+ objectEvent->mapobj_bit_24 = gSprites[objectEvent->spriteId].affineAnimPaused;
+ gSprites[objectEvent->spriteId].animPaused = TRUE;
+ gSprites[objectEvent->spriteId].affineAnimPaused = TRUE;
+ return FALSE;
+}
+
+void FreezeObjectEvents(void)
+{
+ u8 i;
+ for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
+ {
+ if (gObjectEvents[i].active && i != gPlayerAvatar.objectEventId)
+ FreezeObjectEvent(&gObjectEvents[i]);
+ }
+}
+
+void FreezeObjectEventsExceptOne(u8 noFreeze)
+{
+ u8 i;
+ for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
+ {
+ if (i != noFreeze && gObjectEvents[i].active && i != gPlayerAvatar.objectEventId)
+ FreezeObjectEvent(&gObjectEvents[i]);
+ }
+}
+
+void UnfreezeObjectEvent(struct ObjectEvent * objectEvent)
+{
+ if (objectEvent->active && objectEvent->mapobj_bit_8)
+ {
+ objectEvent->mapobj_bit_8 = FALSE;
+ gSprites[objectEvent->spriteId].animPaused = objectEvent->mapobj_bit_23;
+ gSprites[objectEvent->spriteId].affineAnimPaused = objectEvent->mapobj_bit_24;
+ }
+}
+
+void UnfreezeObjectEvents(void)
+{
+ u8 i;
+ for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
+ {
+ if (gObjectEvents[i].active)
+ UnfreezeObjectEvent(&gObjectEvents[i]);
+ }
+}
+
+void little_step(struct Sprite * sprite, u8 direction)
+{
+ sprite->pos1.x += gUnknown_83A64C8[direction].x;
+ sprite->pos1.y += gUnknown_83A64C8[direction].y;
+}
+
+void double_little_steps(struct Sprite * sprite, u8 direction)
+{
+ sprite->pos1.x += 2 * gUnknown_83A64C8[direction].x;
+ sprite->pos1.y += 2 * gUnknown_83A64C8[direction].y;
+}
+
+void triple_little_steps(struct Sprite * sprite, u8 direction)
+{
+ sprite->pos1.x += 2 * gUnknown_83A64C8[direction].x + gUnknown_83A64C8[direction].x;
+ sprite->pos1.y += 2 * gUnknown_83A64C8[direction].y + gUnknown_83A64C8[direction].y;
+}
+
+void quad_little_steps(struct Sprite * sprite, u8 direction)
+{
+ sprite->pos1.x += 4 * gUnknown_83A64C8[direction].x;
+ sprite->pos1.y += 4 * gUnknown_83A64C8[direction].y;
+}
+
+void oct_little_steps(struct Sprite * sprite, u8 direction)
+{
+ sprite->pos1.x += 8 * gUnknown_83A64C8[direction].x;
+ sprite->pos1.y += 8 * gUnknown_83A64C8[direction].y;
+}
+
+void oamt_npc_ministep_reset(struct Sprite * sprite, u8 direction, u8 speed)
+{
+ sprite->data[3] = direction;
+ sprite->data[4] = speed;
+ sprite->data[5] = 0;
+}
+
+
+typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 direction);
+
+static const SpriteStepFunc gUnknown_83A710C[] = {
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step,
+ little_step
+};
+
+static const SpriteStepFunc gUnknown_83A714C[] = {
+ double_little_steps,
+ double_little_steps,
+ double_little_steps,
+ double_little_steps,
+ double_little_steps,
+ double_little_steps,
+ double_little_steps,
+ double_little_steps
+};
+
+static const SpriteStepFunc gUnknown_83A716C[] = {
+ double_little_steps,
+ triple_little_steps,
+ triple_little_steps,
+ double_little_steps,
+ triple_little_steps,
+ triple_little_steps
+};
+
+static const SpriteStepFunc gUnknown_83A7184[] = {
+ quad_little_steps,
+ quad_little_steps,
+ quad_little_steps,
+ quad_little_steps
+};
+
+static const SpriteStepFunc gUnknown_83A7194[] = {
+ oct_little_steps,
+ oct_little_steps
+};
+
+static const SpriteStepFunc *const gUnknown_83A719C[] = {
+ gUnknown_83A710C,
+ gUnknown_83A714C,
+ gUnknown_83A716C,
+ gUnknown_83A7184,
+ gUnknown_83A7194
+};
+
+static const s16 gUnknown_83A71B0[] = {
+ 16, 8, 6, 4, 2
+};
+
+bool8 obj_npc_ministep(struct Sprite *sprite)
+{
+ if (sprite->data[5] >= gUnknown_83A71B0[sprite->data[4]])
+ return FALSE;
+
+ gUnknown_83A719C[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]);
+
+ sprite->data[5]++;
+
+ if (sprite->data[5] < gUnknown_83A71B0[sprite->data[4]])
+ return FALSE;
+
+ return TRUE;
+}
+
+void sub_8068BBC(struct Sprite *sprite, u8 direction)
+{
+ sprite->data[3] = direction;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+bool8 sub_8068BCC(struct Sprite *sprite)
+{
+ if (!(sprite->data[4] & 1))
+ {
+ little_step(sprite, sprite->data[3]);
+ sprite->data[5]++;
+ }
+
+ sprite->data[4]++;
+
+ if (sprite->data[5] > 15)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_8068C08(struct Sprite *sprite, u8 direction)
+{
+ sprite->data[3] = direction;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+bool8 sub_8068C18(struct Sprite *sprite)
+{
+ if (++sprite->data[4] < 3)
+ {
+ little_step(sprite, sprite->data[3]);
+ sprite->data[5]++;
+ }
+ else
+ sprite->data[4] = 0;
+
+ if (sprite->data[5] > 15)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_8068C58(struct Sprite *sprite, u8 direction)
+{
+ sprite->data[3] = direction;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+bool8 sub_8068C68(struct Sprite *sprite)
+{
+ if (++sprite->data[4] > 9)
+ {
+ sprite->data[4] = 0;
+ little_step(sprite, sprite->data[3]);
+ sprite->data[5]++;
+ }
+
+ if (sprite->data[5] > 15)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_8068CA4(struct Sprite *sprite, u8 direction)
+{
+ sprite->data[3] = direction;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+bool8 sub_8068CB4(struct Sprite *sprite)
+{
+ if ((++sprite->data[4]) & 1)
+ {
+ little_step(sprite, sprite->data[3]);
+ sprite->data[5]++;
+ }
+ else
+ {
+ double_little_steps(sprite, sprite->data[3]);
+ sprite->data[5] += 2;
+ }
+
+ if (sprite->data[5] > 15)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static const s8 gUnknown_83A71BA[] = {
+ -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
+};
+
+static const s8 gUnknown_83A71CA[] = {
+ 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
+};
+
+static const s8 gUnknown_83A71DA[] = {
+ -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
+};
+
+static const s8 *const gUnknown_83A71EC[] = {
+ gUnknown_83A71BA,
+ gUnknown_83A71CA,
+ gUnknown_83A71DA
+};
+
+s16 sub_8068D00(s16 a1, u8 a2)
+{
+ return gUnknown_83A71EC[a2][a1];
+}
+
+void sub_8068D1C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
+{
+ sprite->data[3] = a2;
+ sprite->data[4] = a3;
+ sprite->data[5] = a4;
+ sprite->data[6] = 0;
+}
+
+u8 sub_8068D3C(struct Sprite *sprite)
+{
+ s16 v5[3] = {0x10, 0x10, 0x20};
+ u8 v6[3] = {0, 0, 1};
+ u8 v2 = 0;
+
+ if (sprite->data[4])
+ little_step(sprite, sprite->data[3]);
+
+ sprite->pos2.y = sub_8068D00(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+
+ sprite->data[6]++;
+
+ if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
+ v2 = 1;
+
+ if (sprite->data[6] >= v5[sprite->data[4]])
+ {
+ sprite->pos2.y = 0;
+ v2 = -1;
+ }
+
+ return v2;
+}
+
+u8 sub_8068DC4(struct Sprite *sprite)
+{
+ s16 v5[3] = {0x20, 0x20, 0x40};
+ u8 v6[3] = {1, 1, 2};
+ u8 v2 = 0;
+
+ if (sprite->data[4] && !(sprite->data[6] & 1))
+ little_step(sprite, sprite->data[3]);
+
+ sprite->pos2.y = sub_8068D00(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+
+ sprite->data[6]++;
+
+ if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
+ v2 = 1;
+
+ if (sprite->data[6] >= v5[sprite->data[4]])
+ {
+ sprite->pos2.y = 0;
+ v2 = -1;
+ }
+
+ return v2;
+}
+
+void SetObjectEventStepTimer(struct Sprite *sprite, s16 delay)
+{
+ sprite->data[3] = delay;
+}
+
+bool8 RunObjectEventStepTimer(struct Sprite *sprite)
+{
+ sprite->data[3]--;
+
+ if (sprite->data[3] == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 animNum, u8 animCmdIndex)
+{
+ sprite->animNum = animNum;
+ sprite->animPaused = FALSE;
+ SeekSpriteAnim(sprite, animCmdIndex);
+}
+
+bool8 SpriteAnimEnded(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void UpdateEventObjectSpriteVisibility(struct Sprite *sprite, bool8 invisible)
+{
+ u16 x, y;
+ s16 x2, y2;
+
+ sprite->invisible = invisible;
+
+ if (sprite->coordOffsetEnabled)
+ {
+ x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ }
+ else
+ {
+ x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ }
+
+ x2 = x - (sprite->centerToCornerVecX >> 1);
+ y2 = y - (sprite->centerToCornerVecY >> 1);
+
+ if ((s16)x > 255 || x2 < -16)
+ sprite->invisible = TRUE;
+ if ((s16)y > 175 || y2 < -16)
+ sprite->invisible = TRUE;
+}
+
+void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *sprite)
+{
+ sub_8069248(sprite);
+ SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
+ UpdateEventObjectSpriteVisibility(sprite, sprite->data[2]);
+}
+
+void sub_8068FD0(void)
+{
+ s32 i;
+ for (i = 0; i < MAX_SPRITES; i++)
+ {
+ struct Sprite *sprite = &gSprites[i];
+ if (sprite->inUse && sprite->callback == UpdateEventObjectSpriteSubpriorityAndVisibility)
+ {
+ DestroySprite(sprite);
+ }
+ }
+}
+
+s32 sub_806900C(u8 objectEventId)
+{
+ s32 i;
+ for (i = 0; i < MAX_SPRITES; i++)
+ {
+ struct Sprite *sprite = &gSprites[i];
+ if (sprite->inUse && sprite->callback == UpdateEventObjectSpriteSubpriorityAndVisibility && (u8)sprite->data[0] == objectEventId)
+ {
+ return i;
+ }
+ }
+ return MAX_SPRITES;
+}
+
+void TurnEventObject(u8 objectEventId, u8 direction)
+{
+ u8 animNum;
+ u8 spriteId = sub_806900C(objectEventId);
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ StartSpriteAnim(sprite, ObjectEventDirectionToImageAnimId(direction));
+ }
+}
+
+void sub_8069094(u8 objectEventId, u8 direction)
+{
+ u8 animNum;
+ s32 spriteId = sub_806900C(objectEventId);
+ u16 baseBlock;
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ const struct ObjectEventGraphicsInfo * info = GetObjectEventGraphicsInfo(direction);
+ baseBlock = sprite->oam.tileNum;
+ sprite->oam = *info->oam;
+ sprite->oam.tileNum = baseBlock;
+ sprite->oam.paletteNum = info->paletteSlot;
+ sprite->images = info->images;
+ if (info->subspriteTables == NULL)
+ {
+ sprite->subspriteTables = NULL;
+ sprite->subspriteTableNum = 0;
+ sprite->subspriteMode = 0;
+ }
+ else
+ {
+ SetSubspriteTables(sprite, info->subspriteTables);
+ sprite->subspriteMode = 2;
+ }
+ StartSpriteAnim(sprite, 0);
+ }
+}
+
+void sub_8069124(u8 objectEventId, bool32 arg1)
+{
+ u8 spriteId = sub_806900C(objectEventId);
+ if (spriteId != MAX_SPRITES)
+ {
+ if (arg1)
+ gSprites[spriteId].data[2] = TRUE;
+ else
+ gSprites[spriteId].data[2] = FALSE;
+ }
+}
+
+bool32 sub_806916C(u8 objectEventId)
+{
+ u8 spriteId = sub_806900C(objectEventId);
+ if (spriteId == MAX_SPRITES)
+ return FALSE;
+ return gSprites[spriteId].data[2] == TRUE;
+}
+
+void sub_80691A4(u8 objectEventId, u8 direction)
+{
+ u8 spriteId = sub_806900C(objectEventId);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[3] = direction;
+ gSprites[spriteId].data[4] = 0;
+ }
+}
+
+void sub_80691D4(struct Sprite * sprite)
+{
+ switch (sprite->data[4])
+ {
+ case 0:
+ sprite->pos2.y = 0;
+ sprite->data[4]++;
+ // fallthrough
+ case 1:
+ if ((sprite->pos2.y -= 8) == -160)
+ {
+ sprite->pos2.y = 0;
+ sprite->data[2] = 1;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ }
+ }
+}
+
+void sub_8069210(struct Sprite * sprite)
+{
+ switch (sprite->data[4])
+ {
+ case 0:
+ sprite->pos2.y = -160;
+ sprite->data[4]++;
+ // fallthrough
+ case 1:
+ if ((sprite->pos2.y += 8) == 0)
+ {
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ }
+ }
+}
+
+void sub_8069248(struct Sprite * sprite)
+{
+ switch (sprite->data[3])
+ {
+ case 0:
+ break;
+ case 1:
+ sub_8069210(sprite);
+ break;
+ case 2:
+ sub_80691D4(sprite);
+ break;
+ default:
+ sprite->data[3] = 0;
+ AGB_ASSERT_EX(0, ABSPATH("evobjmv.c"), 13331);
+ }
+}
+
+bool32 sub_8069294(u8 objectEventId)
+{
+ u8 spriteId = sub_806900C(objectEventId);
+ if (spriteId == MAX_SPRITES)
+ return FALSE;
+ if (gSprites[spriteId].data[3])
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct ObjectEvent * objectEvent)
+{
+ ObjectEventGetLocalIdAndMap(objectEvent, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ return FieldEffectStart(fieldEffectId);
+}
+
+void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
+{
+ if (!objectEvent->hasShadow)
+ {
+ objectEvent->hasShadow = 1;
+ oe_exec_and_other_stuff(FLDEFF_SHADOW, objectEvent);
+ }
+}
+
+void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+{
+ const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
+ gFieldEffectArguments[0] = sprite->pos1.x;
+ gFieldEffectArguments[1] = sprite->pos1.y + (graphicsInfo->height >> 1) - 2;
+ gFieldEffectArguments[2] = 151;
+ gFieldEffectArguments[3] = 3;
+ FieldEffectStart(FLDEFF_RIPPLE);
+}
diff --git a/src/rfu_union_tool.c b/src/rfu_union_tool.c
index 20b29de9b..818aa3b0f 100644
--- a/src/rfu_union_tool.c
+++ b/src/rfu_union_tool.c
@@ -654,7 +654,7 @@ bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
static void sub_811C008(s32 arg0, s32 arg1, u8 arg2)
{
- sub_8069058(5 * arg1 - 0x38 + arg0, arg2);
+ TurnEventObject(5 * arg1 - 0x38 + arg0, arg2);
}
void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
diff --git a/src/scrcmd.c b/src/scrcmd.c
index c2c422a0a..9fe9d6976 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1193,7 +1193,7 @@ bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
u8 v1 = ScriptReadByte(ctx);
u8 direction = ScriptReadByte(ctx);
- sub_8069058(v1, direction);
+ TurnEventObject(v1, direction);
return FALSE;
}