finish decomp of map_object

This commit is contained in:
red031000
2024-11-09 18:34:41 +02:00
parent ddbc74f0e1
commit 5eb2cbd76f
30 changed files with 576 additions and 835 deletions

View File

@@ -216,7 +216,6 @@ Static arm9
Object unk_02055068.o
Object unk_020557F4.o
Object map_object.o
Object map_object_s.o
Object unk_02058EE8.o
Object unk_02059F04.o
Object unk_0205AD98.o

View File

@@ -1,630 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.extern UNK_020F6364
.extern sub_02057EE0
.extern sub_0205815C
.extern MapObjectManager_GetObjectCount
.extern MapObjectManager_GetObjects
.extern MapObject_SetMovement
.extern sub_02058660
.text
thumb_func_start MapObject_GetPositionVec
MapObject_GetPositionVec: ; 0x02058B5C
add r2, r0, #0x0
add r2, #0x70
add r3, r1, #0x0
ldmia r2!, {r0-r1}
stmia r3!, {r0-r1}
ldr r0, [r2, #0x0]
str r0, [r3, #0x0]
bx lr
thumb_func_start MapObject_SetPositionVec
MapObject_SetPositionVec: ; 0x02058B6C
add r3, r1, #0x0
add r2, r0, #0x0
ldmia r3!, {r0-r1}
add r2, #0x70
stmia r2!, {r0-r1}
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
bx lr
thumb_func_start sub_02058B7C
sub_02058B7C: ; 0x02058B7C
add r0, #0x70
bx lr
thumb_func_start MapObject_GetPosVecYCoord
MapObject_GetPosVecYCoord: ; 0x02058B80
ldr r0, [r0, #0x74]
bx lr
thumb_func_start sub_02058B84
sub_02058B84: ; 0x02058B84
add r2, r0, #0x0
add r2, #0x7c
add r3, r1, #0x0
ldmia r2!, {r0-r1}
stmia r3!, {r0-r1}
ldr r0, [r2, #0x0]
str r0, [r3, #0x0]
bx lr
thumb_func_start sub_02058B94
sub_02058B94: ; 0x02058B94
add r3, r1, #0x0
add r2, r0, #0x0
ldmia r3!, {r0-r1}
add r2, #0x7c
stmia r2!, {r0-r1}
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
bx lr
thumb_func_start sub_02058BA4
sub_02058BA4: ; 0x02058BA4
add r2, r0, #0x0
add r2, #0x88
add r3, r1, #0x0
ldmia r2!, {r0-r1}
stmia r3!, {r0-r1}
ldr r0, [r2, #0x0]
str r0, [r3, #0x0]
bx lr
thumb_func_start sub_02058BB4
sub_02058BB4: ; 0x02058BB4
add r3, r1, #0x0
add r2, r0, #0x0
ldmia r3!, {r0-r1}
add r2, #0x88
stmia r2!, {r0-r1}
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
bx lr
thumb_func_start sub_02058BC4
sub_02058BC4: ; 0x02058BC4
add r2, r0, #0x0
add r2, #0x94
add r3, r1, #0x0
ldmia r2!, {r0-r1}
stmia r3!, {r0-r1}
ldr r0, [r2, #0x0]
str r0, [r3, #0x0]
bx lr
thumb_func_start sub_02058BD4
sub_02058BD4: ; 0x02058BD4
add r3, r1, #0x0
add r2, r0, #0x0
ldmia r3!, {r0-r1}
add r2, #0x94
stmia r2!, {r0-r1}
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
bx lr
thumb_func_start sub_02058BE4
sub_02058BE4: ; 0x02058BE4
push {r3, lr}
bl MapObject_GetPosVecYCoord
asr r1, r0, #0x3
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
pop {r3, pc}
.balign 4
thumb_func_start ObjectEvent_SetId
ObjectEvent_SetId: ; 0x02058BF8
strh r1, [r0, #0x0]
bx lr
thumb_func_start ObjectEvent_GetID
ObjectEvent_GetID: ; 0x02058BFC
ldrh r0, [r0, #0x0]
bx lr
thumb_func_start ObjectEvent_SetSprite
ObjectEvent_SetSprite: ; 0x02058C00
strh r1, [r0, #0x2]
bx lr
thumb_func_start ObjectEvent_GetSpriteID
ObjectEvent_GetSpriteID: ; 0x02058C04
ldrh r0, [r0, #0x2]
bx lr
thumb_func_start ObjectEvent_SetMovement
ObjectEvent_SetMovement: ; 0x02058C08
strh r1, [r0, #0x4]
bx lr
thumb_func_start ObjectEvent_GetMovement
ObjectEvent_GetMovement: ; 0x02058C0C
ldrh r0, [r0, #0x4]
bx lr
thumb_func_start ObjectEvent_SetType
ObjectEvent_SetType: ; 0x02058C10
strh r1, [r0, #0x6]
bx lr
thumb_func_start ObjectEvent_GetType
ObjectEvent_GetType: ; 0x02058C14
ldrh r0, [r0, #0x6]
bx lr
thumb_func_start ObjectEvent_SetFlagId
ObjectEvent_SetFlagId: ; 0x02058C18
strh r1, [r0, #0x8]
bx lr
thumb_func_start ObjectEvent_GetFlagID
ObjectEvent_GetFlagID: ; 0x02058C1C
ldrh r0, [r0, #0x8]
bx lr
thumb_func_start ObjectEvent_SetScript
ObjectEvent_SetScript: ; 0x02058C20
strh r1, [r0, #0xa]
bx lr
thumb_func_start ObjectEvent_GetScriptID
ObjectEvent_GetScriptID: ; 0x02058C24
ldrh r0, [r0, #0xa]
bx lr
thumb_func_start ObjectEvent_SetFacing
ObjectEvent_SetFacing: ; 0x02058C28
strh r1, [r0, #0xc]
bx lr
thumb_func_start ObjectEvent_GetInitialFacingDirection
ObjectEvent_GetInitialFacingDirection: ; 0x02058C2C
mov r1, #0xc
ldrsh r0, [r0, r1]
bx lr
.balign 4
thumb_func_start ObjectEvent_SetParam
ObjectEvent_SetParam: ; 0x02058C34
push {r3, lr}
cmp r2, #0x0
beq _02058C44
cmp r2, #0x1
beq _02058C48
cmp r2, #0x2
beq _02058C4C
b _02058C50
_02058C44:
strh r1, [r0, #0xe]
pop {r3, pc}
_02058C48:
strh r1, [r0, #0x10]
pop {r3, pc}
_02058C4C:
strh r1, [r0, #0x12]
pop {r3, pc}
_02058C50:
bl GF_AssertFail
pop {r3, pc}
.balign 4
thumb_func_start ObjectEvent_GetParam
ObjectEvent_GetParam: ; 0x02058C58
push {r3, lr}
cmp r1, #0x0
beq _02058C68
cmp r1, #0x1
beq _02058C6C
cmp r1, #0x2
beq _02058C70
b _02058C74
_02058C68:
ldrh r0, [r0, #0xe]
pop {r3, pc}
_02058C6C:
ldrh r0, [r0, #0x10]
pop {r3, pc}
_02058C70:
ldrh r0, [r0, #0x12]
pop {r3, pc}
_02058C74:
bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
thumb_func_start ObjectEvent_SetXRange
ObjectEvent_SetXRange: ; 0x02058C7C
strh r1, [r0, #0x14]
bx lr
thumb_func_start ObjectEvent_GetXRange
ObjectEvent_GetXRange: ; 0x02058C80
mov r1, #0x14
ldrsh r0, [r0, r1]
bx lr
.balign 4
thumb_func_start ObjectEvent_SetYRange
ObjectEvent_SetYRange: ; 0x02058C88
strh r1, [r0, #0x16]
bx lr
thumb_func_start ObjectEvent_GetYRange
ObjectEvent_GetYRange: ; 0x02058C8C
mov r1, #0x16
ldrsh r0, [r0, r1]
bx lr
.balign 4
thumb_func_start ObjectEvent_SetXCoord
ObjectEvent_SetXCoord: ; 0x02058C94
strh r1, [r0, #0x18]
bx lr
thumb_func_start ObjectEvent_GetXCoord
ObjectEvent_GetXCoord: ; 0x02058C98
ldrh r0, [r0, #0x18]
bx lr
thumb_func_start ObjectEvent_SetHeight
ObjectEvent_SetHeight: ; 0x02058C9C
str r1, [r0, #0x1c]
bx lr
thumb_func_start ObjectEvent_GetHeight
ObjectEvent_GetHeight: ; 0x02058CA0
ldr r0, [r0, #0x1c]
bx lr
thumb_func_start ObjectEvent_SetYCoord
ObjectEvent_SetYCoord: ; 0x02058CA4
strh r1, [r0, #0x1a]
bx lr
thumb_func_start ObjectEvent_GetYCoord
ObjectEvent_GetYCoord: ; 0x02058CA8
ldrh r0, [r0, #0x1a]
bx lr
thumb_func_start ObjectEvent_GetById
ObjectEvent_GetById: ; 0x02058CAC
push {r3-r7, lr}
add r6, r0, #0x0
add r7, r1, #0x0
str r2, [sp, #0x0]
mov r4, #0x0
add r5, r2, #0x0
_02058CB8:
add r0, r5, #0x0
bl ObjectEvent_ScriptIDIsUnset
cmp r0, #0x0
bne _02058CD4
add r0, r5, #0x0
bl ObjectEvent_GetID
cmp r6, r0
bne _02058CD4
ldr r0, [sp, #0x0]
lsl r1, r4, #0x5
add r0, r0, r1
pop {r3-r7, pc}
_02058CD4:
add r4, r4, #0x1
add r5, #0x20
cmp r4, r7
blt _02058CB8
mov r0, #0x0
pop {r3-r7, pc}
thumb_func_start ObjectEvent_ScriptIDIsUnset
ObjectEvent_ScriptIDIsUnset: ; 0x02058CE0
push {r3, lr}
bl ObjectEvent_GetScriptID
lsl r0, r0, #0x10
lsr r1, r0, #0x10
ldr r0, _02058CF8 ; =0x0000FFFF
cmp r1, r0
bne _02058CF4
mov r0, #0x1
pop {r3, pc}
_02058CF4:
mov r0, #0x0
pop {r3, pc}
.balign 4
_02058CF8: .word 0x0000FFFF
thumb_func_start ObjectEvent_GetFlagID_AssertScriptIDIsUnset
ObjectEvent_GetFlagID_AssertScriptIDIsUnset: ; 0x02058CFC
push {r4, lr}
add r4, r0, #0x0
bl ObjectEvent_ScriptIDIsUnset
cmp r0, #0x1
beq _02058D0C
bl GF_AssertFail
_02058D0C:
add r0, r4, #0x0
bl ObjectEvent_GetFlagID
pop {r4, pc}
thumb_func_start sub_02058D14
sub_02058D14: ; 0x02058D14
push {r4, lr}
add r4, r0, #0x0
cmp r4, #0x37
blo _02058D20
bl GF_AssertFail
_02058D20:
ldr r0, _02058D28 ; =UNK_020F6364
lsl r1, r4, #0x2
ldr r0, [r0, r1]
pop {r4, pc}
.balign 4
_02058D28: .word UNK_020F6364
thumb_func_start sub_02058D2C
sub_02058D2C: ; 0x02058D2C
ldr r0, [r0, #0x4]
bx lr
thumb_func_start sub_02058D30
sub_02058D30: ; 0x02058D30
ldr r0, [r0, #0x8]
bx lr
thumb_func_start sub_02058D34
sub_02058D34: ; 0x02058D34
ldr r0, [r0, #0xc]
bx lr
thumb_func_start sub_02058D38
sub_02058D38: ; 0x02058D38
ldr r0, [r0, #0x0]
bx lr
thumb_func_start sub_02058D3C
sub_02058D3C: ; 0x02058D3C
ldr r0, [r0, #0x4]
bx lr
thumb_func_start sub_02058D40
sub_02058D40: ; 0x02058D40
ldr r0, [r0, #0x8]
bx lr
thumb_func_start sub_02058D44
sub_02058D44: ; 0x02058D44
ldr r0, [r0, #0xc]
bx lr
thumb_func_start sub_02058D48
sub_02058D48: ; 0x02058D48
ldr r0, [r0, #0x10]
bx lr
thumb_func_start sub_02058D4C
sub_02058D4C: ; 0x02058D4C
push {r3, lr}
ldr r3, _02058D6C ; =ov05_021F9494
ldr r1, _02058D70 ; =0x0000FFFF
_02058D52:
ldr r2, [r3, #0x0]
cmp r2, r0
bne _02058D5C
ldr r0, [r3, #0x4]
pop {r3, pc}
_02058D5C:
add r3, #0x8
ldr r2, [r3, #0x0]
cmp r2, r1
bne _02058D52
bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
.balign 4
_02058D6C: .word ov05_021F9494
_02058D70: .word 0x0000FFFF
thumb_func_start sub_02058D74
sub_02058D74: ; 0x02058D74
push {r3-r7, lr}
add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
bl MapObjectManager_GetObjectCount
add r4, r0, #0x0
add r0, r5, #0x0
bl MapObjectManager_GetObjects
add r5, r0, #0x0
_02058D8A:
add r0, r5, #0x0
mov r1, #0x1
bl MapObject_GetFlagsBitsMask
cmp r0, #0x0
beq _02058DAE
add r0, r5, #0x0
bl MapObject_GetCurrentX
cmp r6, r0
bne _02058DAE
add r0, r5, #0x0
bl MapObject_GetCurrentZ
cmp r7, r0
bne _02058DAE
add r0, r5, #0x0
pop {r3-r7, pc}
_02058DAE:
mov r0, #0x4a
lsl r0, r0, #0x2
add r5, r5, r0
sub r4, r4, #0x1
bne _02058D8A
mov r0, #0x0
pop {r3-r7, pc}
thumb_func_start sub_02058DBC
sub_02058DBC: ; 0x02058DBC
push {r4-r6, lr}
add r4, r1, #0x0
ldr r1, [r4, #0x0]
add r6, r2, #0x0
asr r2, r1, #0x4
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
asr r1, r1, #0xc
add r5, r0, #0x0
bl MapObject_SetCurrentX
ldr r1, [r4, #0x4]
add r0, r5, #0x0
asr r2, r1, #0x3
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
asr r1, r1, #0xc
bl MapObject_SetCurrentY
ldr r1, [r4, #0x8]
add r0, r5, #0x0
asr r2, r1, #0x4
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
asr r1, r1, #0xc
bl MapObject_SetCurrentZ
add r0, r5, #0x0
add r1, r4, #0x0
bl MapObject_SetPositionVec
add r0, r5, #0x0
bl sub_02059C60
add r0, r5, #0x0
add r1, r6, #0x0
bl MapObject_SetFacingDirectionDirect
add r0, r5, #0x0
bl MapObject_ClearHeldMovement
add r0, r5, #0x0
mov r1, #0x4
bl MapObject_SetFlagsBits
add r0, r5, #0x0
mov r1, #0xa
bl MapObject_ClearFlagsBits
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_02058E28
sub_02058E28: ; 0x02058E28
push {r3-r6, lr}
sub sp, #0xc
add r4, r2, #0x0
mov r2, #0x2
add r6, r3, #0x0
lsl r3, r1, #0x10
lsl r2, r2, #0xe
add r2, r3, r2
add r5, r0, #0x0
str r2, [sp, #0x0]
bl MapObject_SetCurrentX
lsl r0, r4, #0xf
str r0, [sp, #0x4]
add r0, r5, #0x0
add r1, r4, #0x0
bl MapObject_SetCurrentY
mov r0, #0x2
lsl r1, r6, #0x10
lsl r0, r0, #0xe
add r0, r1, r0
str r0, [sp, #0x8]
add r0, r5, #0x0
add r1, r6, #0x0
bl MapObject_SetCurrentZ
add r0, r5, #0x0
add r1, sp, #0x0
bl MapObject_SetPositionVec
add r0, r5, #0x0
bl sub_02059C60
ldr r1, [sp, #0x20]
add r0, r5, #0x0
bl MapObject_SetFacingDirectionDirect
add r0, r5, #0x0
mov r1, #0x4
bl MapObject_SetFlagsBits
add r0, r5, #0x0
mov r1, #0xa
bl MapObject_ClearFlagsBits
add r0, r5, #0x0
bl MapObject_ClearHeldMovement
add sp, #0xc
pop {r3-r6, pc}
.balign 4
thumb_func_start sub_02058E90
sub_02058E90: ; 0x02058E90
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
bl sub_02058660
add r0, r5, #0x0
add r1, r4, #0x0
bl MapObject_SetMovement
add r0, r5, #0x0
bl sub_02057EE0
add r0, r5, #0x0
bl sub_02058EE8
pop {r3-r5, pc}
thumb_func_start sub_02058EB0
sub_02058EB0: ; 0x02058EB0
push {r4, lr}
add r4, r0, #0x0
bl MapObject_SetID
add r0, r4, #0x0
bl MapObject_SetFlag2
add r0, r4, #0x0
bl sub_0205815C
pop {r4, pc}
.balign 4
thumb_func_start sub_02058EC8
sub_02058EC8: ; 0x02058EC8
bx lr
.balign 4
thumb_func_start sub_02058ECC
sub_02058ECC: ; 0x02058ECC
bx lr
.balign 4
thumb_func_start sub_02058ED0
sub_02058ED0: ; 0x02058ED0
bx lr
.balign 4
thumb_func_start sub_02058ED4
sub_02058ED4: ; 0x02058ED4
bx lr
.balign 4
thumb_func_start sub_02058ED8
sub_02058ED8: ; 0x02058ED8
bx lr
.balign 4
thumb_func_start sub_02058EDC
sub_02058EDC: ; 0x02058EDC
bx lr
.balign 4
thumb_func_start sub_02058EE0
sub_02058EE0: ; 0x02058EE0
bx lr
.balign 4
thumb_func_start sub_02058EE4
sub_02058EE4: ; 0x02058EE4
bx lr
.balign 4

View File

@@ -60,10 +60,10 @@ sub_02037000: ; 0x02037000
push {r3-r5, lr}
add r5, r1, #0x0
bl PlayerAvatar_GetMapObject
bl sub_02058BE4
bl MapObject_GetPositionVectorYCoordUInt
add r4, r0, #0x0
add r0, r5, #0x0
bl sub_02058BE4
bl MapObject_GetPositionVectorYCoordUInt
cmp r4, r0
bne _0203701C
mov r0, #0x1

View File

@@ -56,7 +56,7 @@ _0203707E:
ldr r0, [r5, #0x34]
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x0]
bl sub_02058D74
bl MapObjectManager_GetFirstObjectWithXAndZ
str r0, [r6, #0x0]
add sp, #0x8
pop {r4-r6, pc}

View File

@@ -222,7 +222,7 @@ _0204B4B6:
cmp r0, #0x1
bne _0204B4E8
ldr r0, [sp, #0x0]
bl sub_02058B7C
bl MapObject_GetPositionVector
add r1, r0, #0x0
add r0, r5, #0x0
bl sub_0204B450
@@ -546,7 +546,7 @@ _0204B758:
ldr r0, [r7, #0x34]
add r1, r6, #0x0
add r2, r4, #0x0
bl sub_02058D74
bl MapObjectManager_GetFirstObjectWithXAndZ
cmp r0, #0x0
beq _0204B76A
mov r0, #0x1
@@ -579,7 +579,7 @@ _0204B794:
ldr r0, [r5, #0x34]
add r1, r4, #0x0
sub r2, r2, #0x1
bl sub_02058D74
bl MapObjectManager_GetFirstObjectWithXAndZ
pop {r4-r6, pc}
thumb_func_start sub_0204B7A0
@@ -609,7 +609,7 @@ _0204B7CC:
ldr r0, [r5, #0x34]
add r1, r7, #0x0
add r2, r4, #0x0
bl sub_02058D74
bl MapObjectManager_GetFirstObjectWithXAndZ
pop {r3-r7, pc}
thumb_func_start sub_0204B7D8

View File

@@ -5977,7 +5977,7 @@ _0204F89E:
ldr r0, [sp, #0xc]
mov r2, #0x0
add r3, r7, #0x0
bl sub_02058E28
bl MapObject_SetPositionFromXYZAndDirection
_0204F8F8:
add r6, r6, #0x1
add r4, r4, #0x4

View File

@@ -659,7 +659,7 @@ _020533CC:
add r0, r4, #0x0
add r1, r7, #0x0
add r3, r6, #0x0
bl sub_02058E28
bl MapObject_SetPositionFromXYZAndDirection
add r0, r4, #0x0
mov r1, #0x1
bl MapObject_SetFacingDirectionDirect

View File

@@ -363,14 +363,14 @@ sub_02055350: ; 0x02055350
add r4, r1, #0x0
bl PlayerAvatar_GetMapObject
add r1, r4, #0x0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
pop {r4, pc}
thumb_func_start sub_02055360
sub_02055360: ; 0x02055360
push {r3, lr}
bl sub_020553A4
bl sub_02058B7C
bl MapObject_GetPositionVector
pop {r3, pc}
thumb_func_start sub_0205536C
@@ -699,7 +699,7 @@ sub_020554EC: ; 0x020554EC
bl PlayerAvatar_GetMapObject
add r1, r4, #0x0
add r2, r6, #0x0
bl sub_02058DBC
bl LocalMapObject_SetPositionFromVectorAndDirection
add r0, r5, #0x0
mov r1, #0x0
bl sub_0205536C
@@ -721,7 +721,7 @@ sub_02055514: ; 0x02055514
mov r2, #0x0
add r3, r7, #0x0
str r4, [sp, #0x0]
bl sub_02058E28
bl MapObject_SetPositionFromXYZAndDirection
add r0, r5, #0x0
mov r1, #0x0
bl sub_0205536C
@@ -738,11 +738,11 @@ sub_02055540: ; 0x02055540
bl PlayerAvatar_GetMapObject
add r4, r0, #0x0
add r1, sp, #0x0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r4, #0x0
add r1, sp, #0x0
str r5, [sp, #0x4]
bl MapObject_SetPositionVec
bl MapObject_SetPositionVector
add sp, #0xc
pop {r4-r5, pc}

View File

@@ -1013,7 +1013,7 @@ sub_02056040: ; 0x02056040
add r6, r0, #0x0
add r0, r4, #0x0
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r4, sp, #0xc
add r3, sp, #0x0
ldmia r4!, {r0-r1}
@@ -2531,7 +2531,7 @@ sub_02056C0C: ; 0x02056C0C
str r0, [sp, #0x10]
add r0, r5, #0x0
add r1, sp, #0x1c
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r1, [sp, #0x14]
ldr r6, [sp, #0xc]
ldr r3, [sp, #0x10]

View File

@@ -2427,7 +2427,7 @@ sub_020598F0: ; 0x020598F0
add r5, r0, #0x0
add r7, r2, #0x0
add r4, r3, #0x0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r0, [sp, #0x28]
str r4, [sp, #0x0]
str r0, [sp, #0x4]
@@ -2922,7 +2922,7 @@ sub_02059CC8: ; 0x02059CC8
add r1, sp, #0x0
add r6, r0, #0x0
add r4, r2, #0x0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
cmp r5, #0x3
bhi _02059D0E
add r0, r5, r5
@@ -2958,7 +2958,7 @@ _02059D08:
_02059D0E:
add r0, r6, #0x0
add r1, sp, #0x0
bl MapObject_SetPositionVec
bl MapObject_SetPositionVector
add sp, #0xc
pop {r3-r6, pc}
.balign 4
@@ -2969,7 +2969,7 @@ sub_02059D1C: ; 0x02059D1C
sub sp, #0x18
add r1, sp, #0xc
add r5, r0, #0x0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r3, sp, #0xc
ldmia r3!, {r0-r1}
add r2, sp, #0x0
@@ -3003,7 +3003,7 @@ _02059D4E:
add r1, sp, #0xc
str r0, [sp, #0x10]
add r0, r5, #0x0
bl MapObject_SetPositionVec
bl MapObject_SetPositionVector
add r0, r5, #0x0
bl MapObject_GetCurrentY
add r1, r0, #0x0

View File

@@ -1725,10 +1725,10 @@ _0205AB68:
_0205AB72:
add r0, r6, #0x0
bl PlayerAvatar_GetMapObject
bl sub_02058BE4
bl MapObject_GetPositionVectorYCoordUInt
add r4, r0, #0x0
add r0, r5, #0x0
bl sub_02058BE4
bl MapObject_GetPositionVectorYCoordUInt
cmp r4, r0
beq _0205AB8E
mov r0, #0x0

View File

@@ -1302,7 +1302,7 @@ _0205B680:
str r1, [sp, #0x14]
add r0, r5, #0x0
add r1, sp, #0xc
bl sub_02058B94
bl MapObject_SetFacingVector
mov r0, #0xd
ldrsb r1, [r4, r0]
sub r1, r1, #0x1
@@ -1320,7 +1320,7 @@ _0205B6B8:
str r0, [r1, #0x4]
str r0, [r1, #0x8]
add r0, r5, #0x0
bl sub_02058B94
bl MapObject_SetFacingVector
ldr r1, _0205B6FC ; =0x00020028
add r0, r5, #0x0
bl MapObject_SetFlagsBits
@@ -1839,7 +1839,7 @@ sub_0205BA4C: ; 0x0205BA4C
ldr r0, [r4, #0x0]
str r0, [sp, #0x4]
add r0, r5, #0x0
bl sub_02058B94
bl MapObject_SetFacingVector
ldr r1, [r4, #0x0]
asr r0, r1, #0xe
lsr r0, r0, #0x11
@@ -1901,7 +1901,7 @@ _0205BADA:
ldr r0, [r4, #0x0]
str r0, [sp, #0x4]
add r0, r5, #0x0
bl sub_02058B94
bl MapObject_SetFacingVector
ldr r0, [r4, #0x0]
cmp r0, #0x0
ble _0205BAFA
@@ -2337,7 +2337,7 @@ _0205BDFE:
str r0, [r1, #0x4]
str r0, [r1, #0x8]
add r0, r4, #0x0
bl sub_02058B94
bl MapObject_SetFacingVector
add r0, r4, #0x0
bl ov06_0224D2E0
ldr r1, _0205BE34 ; =0x00010004
@@ -2374,7 +2374,7 @@ sub_0205BE38: ; 0x0205BE38
ldr r0, [r2, r0]
str r0, [sp, #0x4]
add r0, r5, #0x0
bl sub_02058B94
bl MapObject_SetFacingVector
ldr r0, [r4, #0x0]
add r0, r0, #0x2
str r0, [r4, #0x0]
@@ -2388,7 +2388,7 @@ _0205BE70:
str r0, [sp, #0x4]
add r0, r5, #0x0
add r1, sp, #0x0
bl sub_02058B94
bl MapObject_SetFacingVector
ldr r1, _0205BE9C ; =0x00020028
add r0, r5, #0x0
bl MapObject_SetFlagsBits

View File

@@ -680,7 +680,7 @@ sub_0205E9C8: ; 0x0205E9C8
add r1, r2, #0x0
str r0, [r3, #0x0]
add r0, r4, #0x0
bl sub_02058B94
bl MapObject_SetFacingVector
add sp, #0xc
pop {r4-r5, pc}
nop
@@ -771,7 +771,7 @@ sub_0205EA74: ; 0x0205EA74
add r1, r2, #0x0
str r0, [r3, #0x0]
add r0, r4, #0x0
bl sub_02058B94
bl MapObject_SetFacingVector
_0205EAA6:
add sp, #0xc
pop {r4-r5, pc}

View File

@@ -4131,20 +4131,20 @@
.extern MapObject_GetCurrentZ
.extern MapObject_SetCurrentZ
.extern MapObject_AddCurrentZ
.extern MapObject_GetPositionVec
.extern MapObject_SetPositionVec
.extern sub_02058B7C
.extern MapObject_GetPosVecYCoord
.extern sub_02058B84
.extern sub_02058B94
.extern MapObject_CopyPositionVector
.extern MapObject_SetPositionVector
.extern MapObject_GetPositionVector
.extern MapObject_GetPositionVectorYCoord
.extern MapObject_CopyFacingVector
.extern MapObject_SetFacingVector
.extern sub_02058BA4
.extern sub_02058BB4
.extern sub_02058BC4
.extern sub_02058BD4
.extern sub_02058BE4
.extern sub_02058D74
.extern sub_02058DBC
.extern sub_02058E28
.extern MapObject_GetPositionVectorYCoordUInt
.extern MapObjectManager_GetFirstObjectWithXAndZ
.extern LocalMapObject_SetPositionFromVectorAndDirection
.extern MapObject_SetPositionFromXYZAndDirection
.extern sub_02058E90
.extern sub_02058EB0
.extern sub_02058EC8

View File

@@ -67,7 +67,7 @@ ov05_021E5614: ; 0x021E5614
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x1c]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, sp, #0x14
str r0, [sp]
mov r0, #0xff
@@ -107,7 +107,7 @@ ov05_021E5650: ; 0x021E5650
str r0, [r4, #0x28]
ldr r0, [r4, #0x38]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_0206476C
@@ -147,7 +147,7 @@ _021E56B8:
_021E56C8:
add r0, r6, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
mov r0, #0xa
ldr r1, [sp, #8]
lsl r0, r0, #0xc

View File

@@ -67,7 +67,7 @@ ov05_021E57D4: ; 0x021E57D4
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x1c]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, sp, #0x14
str r0, [sp]
mov r0, #0xff
@@ -107,7 +107,7 @@ ov05_021E5810: ; 0x021E5810
str r0, [r4, #0x28]
ldr r0, [r4, #0x38]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_0206476C
@@ -138,7 +138,7 @@ ov05_021E585C: ; 0x021E585C
_021E5878:
add r0, r5, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
mov r0, #0xa
ldr r1, [sp, #8]
lsl r0, r0, #0xc

View File

@@ -67,7 +67,7 @@ ov05_021E5970: ; 0x021E5970
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x1c]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, sp, #0x14
str r0, [sp]
mov r0, #0xff
@@ -107,7 +107,7 @@ ov05_021E59AC: ; 0x021E59AC
str r0, [r4, #0x28]
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_0206476C
@@ -141,7 +141,7 @@ _021E5A0E:
_021E5A16:
ldr r0, [r1, #0x3c]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
mov r0, #0xa
ldr r1, [sp, #8]
lsl r0, r0, #0xc

View File

@@ -80,7 +80,7 @@ ov05_021E5E8C: ; 0x021E5E8C
str r0, [sp, #0xc]
add r0, r4, #0
add r1, sp, #0x10
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r4, #0
bl MapObject_GetFacingDirection
cmp r0, #3

View File

@@ -1680,7 +1680,7 @@ ov05_021E6CC4: ; 0x021E6CC4
str r6, [r5, #0x14]
ldr r0, [r5, #0x3c]
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r1, [sp, #0x14]
ldr r0, [r5, #0x30]
cmp r1, r0
@@ -1737,7 +1737,7 @@ ov05_021E6D80: ; 0x021E6D80
add r4, r0, #0
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r1, [sp, #4]
ldr r0, [r4, #0x20]
add r1, r1, r0
@@ -1749,7 +1749,7 @@ ov05_021E6D80: ; 0x021E6D80
_021E6D9E:
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_SetPositionVec
bl MapObject_SetPositionVector
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
@@ -1772,7 +1772,7 @@ ov05_021E6DC0: ; 0x021E6DC0
add r4, r0, #0
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r1, [sp, #4]
ldr r0, [r4, #0x20]
add r1, r1, r0
@@ -1793,7 +1793,7 @@ _021E6DDE:
_021E6DEE:
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_SetPositionVec
bl MapObject_SetPositionVector
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
@@ -1913,7 +1913,7 @@ ov05_021E6E90: ; 0x021E6E90
str r6, [r5, #0x14]
ldr r0, [r5, #0x3c]
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r1, [sp, #0x14]
ldr r0, [r5, #0x30]
cmp r1, r0
@@ -1970,7 +1970,7 @@ ov05_021E6F50: ; 0x021E6F50
add r4, r0, #0
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r1, [sp, #8]
ldr r0, [r4, #0x24]
add r1, r1, r0
@@ -1988,7 +1988,7 @@ _021E6F70:
_021E6F78:
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_SetPositionVec
bl MapObject_SetPositionVector
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
@@ -2012,7 +2012,7 @@ ov05_021E6F9C: ; 0x021E6F9C
add r4, r0, #0
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r1, [sp, #4]
ldr r0, [r4, #0x20]
add r1, r1, r0
@@ -2039,7 +2039,7 @@ _021E6FCC:
_021E6FD4:
ldr r0, [r4, #0x3c]
add r1, sp, #0
bl MapObject_SetPositionVec
bl MapObject_SetPositionVector
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
@@ -2384,7 +2384,7 @@ ov05_021E727C: ; 0x021E727C
ldr r2, [sp]
add r1, r6, r7
add r2, r2, r5
bl sub_02058D74
bl MapObjectManager_GetFirstObjectWithXAndZ
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0

View File

@@ -464,7 +464,7 @@ ov05_021E7AC0: ; 0x021E7AC0
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x20]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
bl MapObject_GetPriority
add r1, r0, #1

View File

@@ -192,10 +192,10 @@ ov05_021EDB10: ; 0x021EDB10
_021EDB32:
add r0, r4, #0
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r4, #0
add r1, sp, #0
bl sub_02058B84
bl MapObject_CopyFacingVector
ldr r1, [sp, #0xc]
ldr r0, [sp]
add r0, r1, r0

View File

@@ -191,7 +191,7 @@ _021EDCB8:
bl sub_02059E60
add r0, r6, #0
add r1, sp, #0x18
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r0, [sp, #0x1c]
add r1, sp, #0xc
str r0, [sp, #0x10]

View File

@@ -1043,7 +1043,7 @@ ov05_021F0D18: ; 0x021F0D18
bl ov05_021F2060
add r0, r4, #0
add r1, sp, #0
bl sub_02058B94
bl MapObject_SetFacingVector
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
@@ -2251,7 +2251,7 @@ _021F16B8:
_021F16BE:
add r0, r5, #0
add r1, sp, #0
bl sub_02058B94
bl MapObject_SetFacingVector
add sp, #0xc
pop {r4, r5, pc}
nop

View File

@@ -219,10 +219,10 @@ ov05_021F1E64: ; 0x021F1E64
add r4, r1, #0
add r5, r0, #0
add r1, sp, #0x24
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0x18
bl sub_02058B84
bl MapObject_CopyFacingVector
add r0, r5, #0
add r1, sp, #0xc
bl sub_02058BA4

View File

@@ -3124,7 +3124,7 @@ _021F35EC:
_021F3658:
add r0, r7, #0
add r1, sp, #0x1c
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r7, #0
bl ov05_021E4C24
ldr r1, [sp, #0xc]

View File

@@ -3000,7 +3000,7 @@ ov06_0223ACD8: ; 0x0223ACD8
bl ov06_0223ADB4
ldr r0, [r4, #8]
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
mov r0, #1
ldr r1, [sp, #8]
lsl r0, r0, #0x10
@@ -4674,7 +4674,7 @@ ov06_0223B8EC: ; 0x0223B8EC
ldr r0, [r0, #0x34]
bl MapObjectManager_GetFirstActiveObjectByID
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r1, [sp]
ldr r2, [sp, #4]
ldr r3, [sp, #8]
@@ -32663,7 +32663,7 @@ ov06_02249508: ; 0x02249508
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x1c]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
mov r1, #2
bl MapObject_GetPriorityPlusValue
@@ -32764,7 +32764,7 @@ _022495D6:
_022495EE:
add r0, r6, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_0206476C
@@ -32838,7 +32838,7 @@ ov06_02249668: ; 0x02249668
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x1c]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
mov r1, #2
bl MapObject_GetPriorityPlusValue
@@ -32888,7 +32888,7 @@ _022496D0:
_022496E8:
add r0, r6, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_0206476C
@@ -33039,7 +33039,7 @@ ov06_022497E8: ; 0x022497E8
add r0, r5, #0
add r1, sp, #0x18
str r5, [sp, #0x14]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
mov r1, #2
bl MapObject_GetPriorityPlusValue
@@ -33289,13 +33289,13 @@ ov06_02249A00: ; 0x02249A00
str r1, [sp, #4]
ldr r0, [sp]
add r1, r4, #0
bl sub_02058B84
bl MapObject_CopyFacingVector
ldr r0, [r4, #8]
add r1, r4, #0
neg r6, r0
ldr r0, [sp]
ldr r7, [r4]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
ldr r0, [r5, #0x14]
add r1, r4, #0
bl sub_02059E9C
@@ -33899,7 +33899,7 @@ ov06_02249E9C: ; 0x02249E9C
bl MapObject_GetPreviousZ
str r0, [sp, #0x10]
add r0, r5, #0
bl MapObject_GetPosVecYCoord
bl MapObject_GetPositionVectorYCoord
add r6, r0, #0
add r0, r5, #0
bl MapObject_GetFacingDirection
@@ -34351,10 +34351,10 @@ ov06_0224A1DC: ; 0x0224A1DC
_0224A1FE:
add r0, r5, #0
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_02058B84
bl MapObject_CopyFacingVector
ldr r1, [sp, #0xc]
ldr r0, [sp]
ldr r2, [sp, #0x14]
@@ -34506,7 +34506,7 @@ ov06_0224A310: ; 0x0224A310
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x1c]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
bl MapObject_GetPriority
add r1, r0, #1
@@ -34595,7 +34595,7 @@ _0224A3D0:
str r0, [r5, #0xc]
add r0, r4, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r6, #0
add r1, sp, #0
bl sub_0206476C
@@ -35073,10 +35073,10 @@ ov06_0224A710: ; 0x0224A710
ldr r5, [r5, #0x18]
add r1, sp, #0xc
add r0, r5, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_02058B84
bl MapObject_CopyFacingVector
ldr r1, [sp, #0xc]
ldr r0, [sp]
add r0, r1, r0
@@ -35158,10 +35158,10 @@ _0224A828:
bne _0224A86C
add r0, r6, #0
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r6, #0
add r1, sp, #0
bl sub_02058B84
bl MapObject_CopyFacingVector
ldr r1, [sp, #0xc]
ldr r0, [sp]
add r0, r1, r0
@@ -35326,10 +35326,10 @@ ov06_0224A948: ; 0x0224A948
_0224A96A:
add r0, r5, #0
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_02058B84
bl MapObject_CopyFacingVector
ldr r1, [sp, #0xc]
ldr r0, [sp]
add r0, r1, r0
@@ -35516,10 +35516,10 @@ ov06_0224AAB4: ; 0x0224AAB4
_0224AAD6:
add r0, r5, #0
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_02058B84
bl MapObject_CopyFacingVector
ldr r1, [sp, #0xc]
ldr r0, [sp]
add r0, r1, r0
@@ -35670,7 +35670,7 @@ _0224ABF6:
add r1, sp, #0x14
str r0, [r2]
add r0, r5, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #8
bl sub_02058BB4
@@ -35814,7 +35814,7 @@ _0224AD06:
bl sub_02058BB4
add r0, r4, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
mov r0, #1
ldr r1, [r5, #0x1c]
lsl r0, r0, #0xc
@@ -36108,7 +36108,7 @@ ov06_0224AEE8: ; 0x0224AEE8
_0224AF3E:
add r0, r5, #0
add r1, sp, #0xc
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
_0224AF46:
add r0, r5, #0
mov r1, #2
@@ -36192,7 +36192,7 @@ ov06_0224AFC4: ; 0x0224AFC4
bl sub_02058BB4
add r0, r4, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
add r1, sp, #0
bl sub_0206476C
@@ -36906,7 +36906,7 @@ ov06_0224B568: ; 0x0224B568
add r0, r5, #0
add r1, sp, #0x24
str r5, [sp, #0x20]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
mov r1, #2
bl MapObject_GetPriorityPlusValue
@@ -36957,7 +36957,7 @@ ov06_0224B5D0: ; 0x0224B5D0
lsl r0, r0, #0x10
str r0, [sp, #8]
ldr r0, [r4, #0x30]
bl MapObject_GetPosVecYCoord
bl MapObject_GetPositionVectorYCoord
str r0, [sp, #4]
ldr r0, [r4, #0x24]
add r1, sp, #0
@@ -37621,7 +37621,7 @@ ov06_0224BB0C: ; 0x0224BB0C
_0224BB30:
add r0, r6, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
mov r0, #2
ldr r1, [sp, #8]
lsl r0, r0, #0xe
@@ -37729,7 +37729,7 @@ ov06_0224BBEC: ; 0x0224BBEC
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x20]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
bl MapObject_GetCurrentX
add r6, r0, #0
@@ -37944,7 +37944,7 @@ ov06_0224BD90: ; 0x0224BD90
add r0, r5, #0
add r1, sp, #0x24
str r5, [sp, #0x20]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
mov r1, #2
bl MapObject_GetPriorityPlusValue
@@ -37995,7 +37995,7 @@ ov06_0224BDF8: ; 0x0224BDF8
lsl r0, r0, #0x10
str r0, [sp, #8]
ldr r0, [r4, #0x30]
bl MapObject_GetPosVecYCoord
bl MapObject_GetPositionVectorYCoord
str r0, [sp, #4]
ldr r0, [r4, #0x24]
add r1, sp, #0
@@ -38271,7 +38271,7 @@ ov06_0224C038: ; 0x0224C038
add r0, r5, #0
add r1, sp, #0x24
str r5, [sp, #0x20]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
mov r1, #2
bl MapObject_GetPriorityPlusValue
@@ -38322,7 +38322,7 @@ ov06_0224C0A0: ; 0x0224C0A0
lsl r0, r0, #0x10
str r0, [sp, #8]
ldr r0, [r4, #0x30]
bl MapObject_GetPosVecYCoord
bl MapObject_GetPositionVectorYCoord
str r0, [sp, #4]
ldr r0, [r4, #0x24]
add r1, sp, #0
@@ -40661,7 +40661,7 @@ ov06_0224D2E0: ; 0x0224D2E0
add r0, r5, #0
add r1, sp, #8
str r5, [sp, #0x20]
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r5, #0
bl MapObject_GetCurrentX
add r6, r0, #0
@@ -43301,7 +43301,7 @@ ov06_0224E858: ; 0x0224E858
bl MapObjectManager_GetFirstActiveObjectByID
add r6, r0, #0
add r1, sp, #0
bl MapObject_GetPositionVec
bl MapObject_CopyPositionVector
add r0, r6, #0
bl MapObject_GetCurrentX
add r5, r0, #0

View File

@@ -7,6 +7,9 @@
#include "field_system.h"
#include "heap.h"
extern UnkLMOCallbackStruct *UNK_020F6364[55];
extern UnkLMOCallbackStruct3 ov05_021F9494[210];
static MapObjectManager *MapObjectManager_New(u32 objectCount);
static LocalMapObject *MapObject_CreateFromObjectEvent(MapObjectManager *manager, ObjectEvent *objectEvent, u32 mapNo);
static void SavedMapObject_InitFromLocalMapObject(FieldSystem *fieldSystem, LocalMapObject *object, SavedMapObject *savedObject);
@@ -19,13 +22,13 @@ static LocalMapObject *MapObjectManager_GetFirstInactiveObject(MapObjectManager
static LocalMapObject *sub_02057C98(MapObjectManager *manager, u32 id, u32 mapNo);
static void sub_02057CF0(MapObjectManager *manager, LocalMapObject *object);
static void MapObject_InitFromObjectEvent(LocalMapObject *object, ObjectEvent *objectEvent, FieldSystem *fieldSystem);
static void MapObject_SetPositionVecFromObjectEvent(LocalMapObject *object, ObjectEvent *objectEvent);
static void MapObject_SetPositionVectorFromObjectEvent(LocalMapObject *object, ObjectEvent *objectEvent);
static void sub_02057E90(LocalMapObject *object, MapObjectManager *manager);
/*static*/ void sub_02057EE0(LocalMapObject *object);
static void sub_02057F18(LocalMapObject *object);
static void MapObject_Clear(LocalMapObject *object);
static u32 sub_02057F90(LocalMapObject *object, u32 mapId, u32 objectEventCount, ObjectEvent *objectEvents);
static LocalMapObject *MapObjectManager_GetFirstObjectWithIDAndMap(MapObjectManager *manager, u32 mapId, u32 flagId);
static LocalMapObject *MapObjectManager_GetFirstObjectWithIDAndMap(MapObjectManager *manager, u32 objectId, u32 mapId);
static void sub_02058148(LocalMapObject *object);
/*static*/ void sub_0205815C(LocalMapObject *object);
static void MapObject_NoOp(LocalMapObject *object);
@@ -46,20 +49,20 @@ static void MapObjectManager_SetPriority(MapObjectManager *manager, u32 priority
static void MapObjectManager_SetObjects(MapObjectManager *manager, LocalMapObject *objects);
static LocalMapObject *MapObjectManager_GetObjects3(MapObjectManager *manager);
static void MapObjectManager_SetFieldSystem(MapObjectManager *manager, FieldSystem *fieldSystem);
/*static*/ FieldSystem *MapObjectManager_GetFieldSystem(MapObjectManager *manager);
static FieldSystem *MapObjectManager_GetFieldSystem(MapObjectManager *manager);
static void MapObject_SetFlags(LocalMapObject *object, u32 flags);
static u32 MapObject_GetFlags(LocalMapObject *object);
static void MapObject_SetFlags2(LocalMapObject *object, u32 flags);
static u32 MapObject_GetFlags2(LocalMapObject *object);
static void MapObject_SetMapID(LocalMapObject *object, u32 mapId);
/*static*/ void MapObject_SetMovement(LocalMapObject *object, u32 movement);
/*static*/ u32 MapObject_GetEventFlag(LocalMapObject *object);
static u32 MapObject_GetEventFlag(LocalMapObject *object);
static void MapObject_SetInitialFacingDirection(LocalMapObject *object, u32 initialFacing);
static void sub_02058554(LocalMapObject *object, SysTask *sysTask);
static SysTask *sub_0205855C(LocalMapObject *object);
static void sub_02058564(LocalMapObject *object);
static void MapObject_SetManager(LocalMapObject *object, MapObjectManager *manager);
/*static*/ MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object);
static MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object);
static void sub_02058630(LocalMapObject *object, LocalMapObject_UnkCallback callback);
static void sub_02058644(LocalMapObject *object, LocalMapObject_UnkCallback callback);
static void sub_02058658(LocalMapObject *object, LocalMapObject_UnkCallback callback);
@@ -78,27 +81,49 @@ static void MapObject_SetFlag25(LocalMapObject *object, BOOL set);
static void MapObject_SetInitialX(LocalMapObject *object, u32 initialX);
static void MapObject_SetInitialY(LocalMapObject *object, u32 initialY);
static void MapObject_SetInitialZ(LocalMapObject *object, u32 initialZ);
static void ObjectEvent_SetID(ObjectEvent *objectEvent, u16 id);
static u16 ObjectEvent_GetID(ObjectEvent *objectEvent);
static void ObjectEvent_SetSpriteID(ObjectEvent *objectEvent, u32 spriteId);
static u16 ObjectEvent_GetSpriteID(ObjectEvent *objectEvent);
static void ObjectEvent_SetMovement(ObjectEvent *objectEvent, u32 movement);
static u16 ObjectEvent_GetMovement(ObjectEvent *objectEvent);
static void ObjectEvent_SetType(ObjectEvent *objectEvent, u16 type);
static u16 ObjectEvent_GetType(ObjectEvent *objectEvent);
static void ObjectEvent_SetEventFlag(ObjectEvent *objectEvent, u16 eventFlag);
static u16 ObjectEvent_GetEventFlag(ObjectEvent *objectEvent);
static void ObjectEvent_SetScriptID(ObjectEvent *objectEvent, u16 scriptId);
static u16 ObjectEvent_GetScriptID(ObjectEvent *objectEvent);
static void ObjectEvent_SetFacingDirection(ObjectEvent *objectEvent, u32 facingDirection);
static s16 ObjectEvent_GetFacingDirection(ObjectEvent *objectEvent);
static void ObjectEvent_SetParam(ObjectEvent *objectEvent, s32 value, u32 param);
static u16 ObjectEvent_GetParam(ObjectEvent *objectEvent, u32 param);
static void ObjectEvent_SetXRange(ObjectEvent *objectEvent, s16 xRange);
static s16 ObjectEvent_GetXRange(ObjectEvent *objectEvent);
static void ObjectEvent_SetYRange(ObjectEvent *objectEvent, s16 yRange);
static s16 ObjectEvent_GetYRange(ObjectEvent *objectEvent);
static void ObjectEvent_SetXCoord(ObjectEvent *objectEvent, u32 x);
static u16 ObjectEvent_GetXCoord(ObjectEvent *template);
static void ObjectEvent_SetYCoord(ObjectEvent *objectEvent, u32 y);
static u32 ObjectEvent_GetYCoord(ObjectEvent *objectEvent);
static void ObjectEvent_SetZCoord(ObjectEvent *objectEvent, u32 z);
static u16 ObjectEvent_GetZCoord(ObjectEvent *objectEvent);
static ObjectEvent *ObjectEvent_GetByID(u16 id, s32 objectEventCount, ObjectEvent *objectEvents);
static BOOL ObjectEvent_ScriptIDIsUnset(ObjectEvent *objectEvent);
static u16 ObjectEvent_GetEventFlag_AssertScriptIDIsUnset(ObjectEvent *template);
static UnkLMOCallbackStruct *sub_02058D14(u32 movement);
static LocalMapObject_UnkCallback sub_02058D2C(UnkLMOCallbackStruct *callbackStruct);
static LocalMapObject_UnkCallback sub_02058D30(UnkLMOCallbackStruct *callbackStruct);
static LocalMapObject_UnkCallback sub_02058D34(UnkLMOCallbackStruct *callbackStruct);
static LocalMapObject_UnkCallback sub_02058D38(UnkLMOCallbackStruct2 *callbackStruct);
static LocalMapObject_UnkCallback sub_02058D3C(UnkLMOCallbackStruct2 *callbackStruct);
static LocalMapObject_UnkCallback sub_02058D40(UnkLMOCallbackStruct2 *callbackStruct);
static LocalMapObject_UnkCallback sub_02058D44(UnkLMOCallbackStruct2 *callbackStruct);
static LocalMapObject_UnkCallback sub_02058D48(UnkLMOCallbackStruct2 *callbackStruct);
static UnkLMOCallbackStruct2 *sub_02058D4C(u32 spriteId);
extern void ov05_021F2AF4(MapObjectManager *manager, void *param0);
extern u32 ObjectEvent_GetID(ObjectEvent *objectEvent);
extern BOOL ObjectEvent_ScriptIDIsUnset(ObjectEvent *objectEvent);
extern u16 ObjectEvent_GetFlagID_AssertScriptIDIsUnset(ObjectEvent *objectEvent);
extern void sub_02057E90(LocalMapObject *object, MapObjectManager *manager);
extern void ObjectEvent_SetId(ObjectEvent *objectEvent, u32 id);
extern void ObjectEvent_SetSprite(ObjectEvent *objectEvent, u32 sprite);
extern void ObjectEvent_SetMovement(ObjectEvent *objectEvent, u32 movement);
extern void ObjectEvent_SetType(ObjectEvent *objectEvent, u32 type);
extern void ObjectEvent_SetFlagId(ObjectEvent *objectEvent, u32 flagId);
extern void ObjectEvent_SetScript(ObjectEvent *objectEvent, u32 script);
extern void ObjectEvent_SetFacing(ObjectEvent *objectEvent, u32 direction);
extern void ObjectEvent_SetParam(ObjectEvent *objectEvent, u32 value, u32 param);
extern void ObjectEvent_SetXRange(ObjectEvent *objectEvent, u32 xRange);
extern void ObjectEvent_SetYRange(ObjectEvent *objectEvent, u32 yRange);
extern void ObjectEvent_SetXCoord(ObjectEvent *objectEvent, u32 xCoord);
extern void ObjectEvent_SetYCoord(ObjectEvent *objectEvent, u32 yCoord);
extern void ObjectEvent_SetHeight(ObjectEvent *objectEvent, u32 height);
extern u32 ObjectEvent_GetFlagID(ObjectEvent *objectEvent);
extern ObjectEvent *ObjectEvent_GetById(u32 id, u32 objectEventCount, ObjectEvent *events);
extern u8 FieldSystem_FlagCheck(FieldSystem *fieldSystem, u16 flag);
extern MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object);
extern void FieldSystem_FlagSet(FieldSystem *fieldSystem, u16 flag);
@@ -108,33 +133,8 @@ extern void sub_02058EE0(LocalMapObject *object);
extern void sub_02058EE4(LocalMapObject *object);
extern void sub_02057AEC(MapObjectManager *manager, LocalMapObject *object);
extern void sub_02059E60(s32 x, s32 y, VecFx32 *vector);
extern u32 MapObject_GetPosVecYCoord(LocalMapObject *object);
extern BOOL sub_02059EC8(FieldSystem *fieldSystem, VecFx32 *vector, BOOL flag);
extern void MapObject_SetPositionVec(LocalMapObject *object, VecFx32 *coords);
extern void MapObject_ClearHeldMovement(LocalMapObject *object);
extern void MapObject_GetPositionVec(LocalMapObject *object, VecFx32 *position);
extern void MapObject_CreateFromInitArgs(MapObjectInitArgs *args);
extern u16 ObjectEvent_GetSpriteID(ObjectEvent *objectEvent);
extern u16 ObjectEvent_GetMovement(ObjectEvent *objectEvent);
extern u16 ObjectEvent_GetType(ObjectEvent *objectEvent);
extern u16 ObjectEvent_GetScriptID(ObjectEvent *objectEvent);
extern u16 ObjectEvent_GetInitialFacingDirection(ObjectEvent *objectEvent);
extern u32 ObjectEvent_GetParam(ObjectEvent *objectEvent, u32 param);
extern u32 ObjectEvent_GetXRange(ObjectEvent *objectEvent);
extern u32 ObjectEvent_GetYRange(ObjectEvent *objectEvent);
extern u16 ObjectEvent_GetXCoord(ObjectEvent *objectEvent);
extern u16 ObjectEvent_GetYCoord(ObjectEvent *objectEvent);
extern u32 ObjectEvent_GetHeight(ObjectEvent *objectEvent);
extern UnkLMOCallbackStruct *sub_02058D14(u32 movement);
extern LocalMapObject_UnkCallback sub_02058D2C(UnkLMOCallbackStruct *callbackStruct);
extern LocalMapObject_UnkCallback sub_02058D30(UnkLMOCallbackStruct *callbackStruct);
extern LocalMapObject_UnkCallback sub_02058D34(UnkLMOCallbackStruct *callbackStruct);
extern UnkLMOCallbackStruct2 *sub_02058D4C(u32 spriteId);
extern LocalMapObject_UnkCallback sub_02058D38(UnkLMOCallbackStruct2 *callbackStruct);
extern LocalMapObject_UnkCallback sub_02058D3C(UnkLMOCallbackStruct2 *callbackStruct);
extern LocalMapObject_UnkCallback sub_02058D40(UnkLMOCallbackStruct2 *callbackStruct);
extern LocalMapObject_UnkCallback sub_02058D44(UnkLMOCallbackStruct2 *callbackStruct);
extern LocalMapObject_UnkCallback sub_02058D48(UnkLMOCallbackStruct2 *callbackStruct);
extern u16 FieldSystem_VarGetObjectEventGraphicsId(FieldSystem *fieldSystem, u16 spriteId);
extern u32 sub_02059D1C(LocalMapObject *object);
extern void sub_02058EE8(LocalMapObject *object);
@@ -143,6 +143,7 @@ extern void sub_02058EF8(LocalMapObject *object);
extern void ov05_021F1D8C(LocalMapObject *object);
extern BOOL sub_0205C334(void);
extern u32 sub_0205C340(LocalMapObject *object);
extern void sub_02059C60(LocalMapObject *object);
MapObjectManager *MapObjectManager_Init(FieldSystem *fieldSystem, u32 objectCount, u32 priority) {
MapObjectManager *ret = MapObjectManager_New(objectCount);
@@ -208,7 +209,7 @@ static LocalMapObject *MapObject_CreateFromObjectEvent(MapObjectManager *manager
return ret;
}
} else {
ret = MapObjectManager_GetFirstObjectWithIDAndMap(manager, objectId, ObjectEvent_GetFlagID_AssertScriptIDIsUnset(objectEvent));
ret = MapObjectManager_GetFirstObjectWithIDAndMap(manager, objectId, ObjectEvent_GetEventFlag_AssertScriptIDIsUnset(objectEvent));
if (ret != NULL) {
sub_02058258(ret, mapNo, objectEvent);
return ret;
@@ -233,32 +234,33 @@ static LocalMapObject *MapObject_CreateFromObjectEvent(MapObjectManager *manager
LocalMapObject *MapObject_Create(MapObjectManager *manager, u32 x, u32 y, u32 direction, u32 sprite, u32 movement, u32 mapNo) {
ObjectEvent objectEvent;
ObjectEvent_SetId(&objectEvent, 0);
ObjectEvent_SetSprite(&objectEvent, sprite);
ObjectEvent_SetID(&objectEvent, 0);
ObjectEvent_SetSpriteID(&objectEvent, sprite);
ObjectEvent_SetMovement(&objectEvent, movement);
ObjectEvent_SetType(&objectEvent, 0);
ObjectEvent_SetFlagId(&objectEvent, 0);
ObjectEvent_SetScript(&objectEvent, 0);
ObjectEvent_SetFacing(&objectEvent, direction);
ObjectEvent_SetEventFlag(&objectEvent, 0);
ObjectEvent_SetScriptID(&objectEvent, 0);
ObjectEvent_SetFacingDirection(&objectEvent, direction);
ObjectEvent_SetParam(&objectEvent, 0, 0);
ObjectEvent_SetParam(&objectEvent, 0, 1);
ObjectEvent_SetParam(&objectEvent, 0, 2);
ObjectEvent_SetXRange(&objectEvent, 0);
ObjectEvent_SetYRange(&objectEvent, 0);
ObjectEvent_SetXCoord(&objectEvent, x);
ObjectEvent_SetYCoord(&objectEvent, y);
ObjectEvent_SetHeight(&objectEvent, 0);
ObjectEvent_SetZCoord(&objectEvent, y);
ObjectEvent_SetYCoord(&objectEvent, 0);
return MapObject_CreateFromObjectEvent(manager, &objectEvent, mapNo);
}
LocalMapObject *MapObject_CreateFromObjectEventWithId(MapObjectManager *manager, u16 id, u32 objectEventCount, u32 mapNo, const ObjectEvent *events) {
LocalMapObject *ret = NULL;
ObjectEvent *objectEvent = ObjectEvent_GetById(id, objectEventCount, (ObjectEvent *)events);
ObjectEvent *objectEvent = ObjectEvent_GetByID(id, objectEventCount, (ObjectEvent *)events);
if (objectEvent != NULL) {
u32 flagId = ObjectEvent_GetFlagID(objectEvent);
// casts and typing required to match
u32 eventFlag = ObjectEvent_GetEventFlag(objectEvent);
FieldSystem *fieldSystem = MapObjectManager_GetFieldSystem(manager);
if (FieldSystem_FlagCheck(fieldSystem, (u16)flagId) == FALSE) {
if (FieldSystem_FlagCheck(fieldSystem, (u16)eventFlag) == FALSE) {
ret = MapObject_CreateFromObjectEvent(manager, objectEvent, mapNo);
}
}
@@ -427,10 +429,10 @@ static void SavedMapObject_InitFromLocalMapObject(FieldSystem *fieldSystem, Loca
VecFx32 coords;
sub_02059E60(savedObject->currentX, savedObject->currentZ, &coords); // some kind of x y vec copy with convertion between int and fx32
coords.y = MapObject_GetPosVecYCoord(localObject);
coords.y = MapObject_GetPositionVectorYCoord(localObject);
if (!sub_02059EC8(fieldSystem, &coords, MapObject_CheckFlag29(localObject))) {
savedObject->vecY = MapObject_GetPosVecYCoord(localObject);
savedObject->vecY = MapObject_GetPositionVectorYCoord(localObject);
} else {
savedObject->vecY = coords.y;
}
@@ -466,7 +468,7 @@ static void LocalMapObject_InitFromSavedMapObject(LocalMapObject *localObject, S
VecFx32 coords = {};
coords.y = savedObject->vecY;
MapObject_SetPositionVec(localObject, &coords);
MapObject_SetPositionVector(localObject, &coords);
memcpy(sub_020585B0(localObject), savedObject->unk30, 16);
memcpy(sub_020585D8(localObject), savedObject->unk40, 16);
@@ -492,7 +494,7 @@ static void sub_02057B34(LocalMapObject *object) {
static void MapObject_ConvertXZToPositionVec(LocalMapObject *object) {
VecFx32 position;
MapObject_GetPositionVec(object, &position);
MapObject_CopyPositionVector(object, &position);
u32 x = MapObject_GetCurrentX(object);
position.x = x * FX32_CONST(16) + FX32_CONST(8);
@@ -504,7 +506,7 @@ static void MapObject_ConvertXZToPositionVec(LocalMapObject *object) {
position.z = z * FX32_CONST(16) + FX32_CONST(8);
MapObject_SetPreviousZ(object, z);
MapObject_SetPositionVec(object, &position);
MapObject_SetPositionVector(object, &position);
}
void MapObject_CreateFromMultipleObjectEvents(MapObjectManager *manager, u32 mapNo, u32 objectEventCount, ObjectEvent *objectEvents) {
@@ -529,8 +531,8 @@ static void MapObject_CreateFromInitArgs(MapObjectInitArgs *args) {
FieldSystem *fieldSystem = MapObjectManager_GetFieldSystem(args->manager);
ObjectEvent *objectEvents = args->objectEvents;
do { // must be do while due to initial check
GF_ASSERT((ObjectEvent_ScriptIDIsUnset(objectEvents) != TRUE && FieldSystem_FlagCheck(fieldSystem, objectEvents->flag) != FALSE) || MapObject_CreateFromObjectEvent(args->manager, objectEvents, args->mapNo) != NULL); // this is dumb, but is required to match
do { // must be do while due to initial check
GF_ASSERT((ObjectEvent_ScriptIDIsUnset(objectEvents) != TRUE && FieldSystem_FlagCheck(fieldSystem, objectEvents->eventFlag) != FALSE) || MapObject_CreateFromObjectEvent(args->manager, objectEvents, args->mapNo) != NULL); // this is dumb, but is required to match
objectEvents++;
args->index++;
@@ -588,19 +590,19 @@ static void MapObject_InitFromObjectEvent(LocalMapObject *object, ObjectEvent *o
MapObject_SetSpriteID(object, FieldSystem_ResolveObjectSpriteID(fieldSystem, ObjectEvent_GetSpriteID(objectEvent)));
MapObject_SetMovement(object, ObjectEvent_GetMovement(objectEvent));
MapObject_SetType(object, ObjectEvent_GetType(objectEvent));
MapObject_SetEventFlag(object, ObjectEvent_GetFlagID(objectEvent));
MapObject_SetEventFlag(object, ObjectEvent_GetEventFlag(objectEvent));
MapObject_SetScriptID(object, ObjectEvent_GetScriptID(objectEvent));
MapObject_SetInitialFacingDirection(object, ObjectEvent_GetInitialFacingDirection(objectEvent));
MapObject_SetInitialFacingDirection(object, ObjectEvent_GetFacingDirection(objectEvent));
MapObject_SetParam(object, ObjectEvent_GetParam(objectEvent, 0), 0);
MapObject_SetParam(object, ObjectEvent_GetParam(objectEvent, 1), 1);
MapObject_SetParam(object, ObjectEvent_GetParam(objectEvent, 2), 2);
MapObject_SetXRange(object, ObjectEvent_GetXRange(objectEvent));
MapObject_SetYRange(object, ObjectEvent_GetYRange(objectEvent));
MapObject_SetPositionVecFromObjectEvent(object, objectEvent);
MapObject_SetPositionVectorFromObjectEvent(object, objectEvent);
}
static void MapObject_SetPositionVecFromObjectEvent(LocalMapObject *object, ObjectEvent *objectEvent) {
static void MapObject_SetPositionVectorFromObjectEvent(LocalMapObject *object, ObjectEvent *objectEvent) {
VecFx32 coords;
u16 x = ObjectEvent_GetXCoord(objectEvent);
@@ -609,19 +611,19 @@ static void MapObject_SetPositionVecFromObjectEvent(LocalMapObject *object, Obje
MapObject_SetPreviousX(object, x);
MapObject_SetCurrentX(object, x);
coords.y = ObjectEvent_GetHeight(objectEvent);
coords.y = ObjectEvent_GetYCoord(objectEvent);
u32 y = (coords.y >> 3) / FX32_ONE;
MapObject_SetInitialY(object, y);
MapObject_SetPreviousY(object, y);
MapObject_SetCurrentY(object, y);
u16 z = ObjectEvent_GetYCoord(objectEvent);
u16 z = ObjectEvent_GetZCoord(objectEvent);
coords.z = z * FX32_CONST(16) + FX32_CONST(8);
MapObject_SetInitialZ(object, z);
MapObject_SetPreviousZ(object, z);
MapObject_SetCurrentZ(object, z);
MapObject_SetPositionVec(object, &coords);
MapObject_SetPositionVector(object, &coords);
}
static void sub_02057E90(LocalMapObject *object, MapObjectManager *manager) { // setup facing and flags? also sets manager?
@@ -666,14 +668,14 @@ static u32 sub_02057F90(LocalMapObject *object, u32 mapId, u32 objectEventCount,
}
if (ObjectEvent_ScriptIDIsUnset(objectEvents) == TRUE) {
u16 flagId = ObjectEvent_GetFlagID_AssertScriptIDIsUnset(objectEvents);
u16 eventFlag = ObjectEvent_GetEventFlag_AssertScriptIDIsUnset(objectEvents);
if (MapObject_CheckFlag25(object) == TRUE) { // this and the one below cannot be combined as it doesn't match
if (sub_02058750(object) == flagId) {
if (sub_02058750(object) == eventFlag) {
return 1;
}
// I'm assume that sometimes the ObjectEvent flags equals the mapId to signify that
// this is a map-wide event etc.
} else if (MapObject_GetMapID(object) == flagId) {
} else if (MapObject_GetMapID(object) == eventFlag) {
return 2;
}
// this is indeed a weird comparsion, but I checked, it's correct
@@ -812,7 +814,7 @@ static void sub_02058214(LocalMapObject *object, ObjectEvent *objectEvent, u32 m
MapObject_SetFlag25(object, FALSE);
MapObject_SetMapID(object, mapNo);
MapObject_SetScriptID(object, ObjectEvent_GetScriptID(objectEvent));
MapObject_SetEventFlag(object, ObjectEvent_GetFlagID(objectEvent));
MapObject_SetEventFlag(object, ObjectEvent_GetEventFlag(objectEvent));
}
static void sub_02058258(LocalMapObject *object, u32 mapNo, ObjectEvent *objectEvent) {
@@ -820,7 +822,7 @@ static void sub_02058258(LocalMapObject *object, u32 mapNo, ObjectEvent *objectE
MapObject_SetFlag25(object, TRUE);
MapObject_SetScriptID(object, ObjectEvent_GetScriptID(objectEvent));
MapObject_SetEventFlag(object, ObjectEvent_GetFlagID_AssertScriptIDIsUnset(objectEvent));
MapObject_SetEventFlag(object, ObjectEvent_GetEventFlag_AssertScriptIDIsUnset(objectEvent));
MapObject_SetMapID(object, mapNo);
}
@@ -958,7 +960,7 @@ static void MapObjectManager_SetFieldSystem(MapObjectManager *manager, FieldSyst
manager->fieldSystem = fieldSystem;
}
/*static*/ FieldSystem *MapObjectManager_GetFieldSystem(MapObjectManager *manager) {
static FieldSystem *MapObjectManager_GetFieldSystem(MapObjectManager *manager) {
return manager->fieldSystem;
}
@@ -1055,7 +1057,7 @@ void MapObject_SetEventFlag(LocalMapObject *object, u32 eventFlag) {
object->eventFlag = eventFlag;
}
/*static*/ u32 MapObject_GetEventFlag(LocalMapObject *object) {
static u32 MapObject_GetEventFlag(LocalMapObject *object) {
return object->eventFlag;
}
@@ -1184,7 +1186,7 @@ MapObjectManager *MapObject_GetManager(LocalMapObject *object) {
return object->manager;
}
/*static*/ MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object) {
static MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object) {
return MapObjectManager_Get(object->manager);
}
@@ -1675,3 +1677,335 @@ void MapObject_SetCurrentZ(LocalMapObject *object, u32 currentZ) {
void MapObject_AddCurrentZ(LocalMapObject *object, u32 currentZ) {
object->currentZ += currentZ;
}
void MapObject_CopyPositionVector(LocalMapObject *object, VecFx32 *positionVector) {
*positionVector = object->positionVector;
}
void MapObject_SetPositionVector(LocalMapObject *object, VecFx32 *positionVector) {
object->positionVector = *positionVector;
}
VecFx32 *MapObject_GetPositionVector(LocalMapObject *object) {
return &object->positionVector;
}
fx32 MapObject_GetPositionVectorYCoord(LocalMapObject *object) {
return object->positionVector.y;
}
void MapObject_CopyFacingVector(LocalMapObject *object, VecFx32 *facingVector) {
*facingVector = object->facingVector;
}
void MapObject_SetFacingVector(LocalMapObject *object, VecFx32 *facingVector) {
object->facingVector = *facingVector;
}
void sub_02058BA4(LocalMapObject *object, VecFx32 *vector) {
*vector = object->unk88;
}
void sub_02058BB4(LocalMapObject *object, VecFx32 *vector) {
object->unk88 = *vector;
}
void sub_02058BC4(LocalMapObject *object, VecFx32 *vector) {
*vector = object->unk94;
}
void sub_02058BD4(LocalMapObject *object, VecFx32 *vector) {
object->unk94 = *vector;
}
u32 MapObject_GetPositionVectorYCoordUInt(LocalMapObject *object) {
fx32 y = MapObject_GetPositionVectorYCoord(object);
return (y >> 3) / FX32_ONE;
}
static void ObjectEvent_SetID(ObjectEvent *objectEvent, u16 id) {
objectEvent->id = id;
}
static u16 ObjectEvent_GetID(ObjectEvent *objectEvent) {
return objectEvent->id;
}
static void ObjectEvent_SetSpriteID(ObjectEvent *objectEvent, u32 spriteId) {
objectEvent->spriteId = spriteId;
}
static u16 ObjectEvent_GetSpriteID(ObjectEvent *objectEvent) {
return objectEvent->spriteId;
}
static void ObjectEvent_SetMovement(ObjectEvent *objectEvent, u32 movement) {
objectEvent->movement = movement;
}
static u16 ObjectEvent_GetMovement(ObjectEvent *objectEvent) {
return objectEvent->movement;
}
static void ObjectEvent_SetType(ObjectEvent *objectEvent, u16 type) {
objectEvent->type = type;
}
static u16 ObjectEvent_GetType(ObjectEvent *objectEvent) {
return objectEvent->type;
}
static void ObjectEvent_SetEventFlag(ObjectEvent *objectEvent, u16 eventFlag) {
objectEvent->eventFlag = eventFlag;
}
static u16 ObjectEvent_GetEventFlag(ObjectEvent *objectEvent) {
return objectEvent->eventFlag;
}
static void ObjectEvent_SetScriptID(ObjectEvent *objectEvent, u16 scriptId) {
objectEvent->scriptId = scriptId;
}
static u16 ObjectEvent_GetScriptID(ObjectEvent *objectEvent) {
return objectEvent->scriptId;
}
static void ObjectEvent_SetFacingDirection(ObjectEvent *objectEvent, u32 facingDirection) {
objectEvent->facingDirection = facingDirection;
}
static s16 ObjectEvent_GetFacingDirection(ObjectEvent *objectEvent) {
return objectEvent->facingDirection;
}
static void ObjectEvent_SetParam(ObjectEvent *objectEvent, s32 value, u32 param) {
switch (param) {
case 0:
objectEvent->param[0] = value;
return;
case 1:
objectEvent->param[1] = value;
return;
case 2:
objectEvent->param[2] = value;
return;
default:
GF_ASSERT(FALSE);
return;
}
}
static u16 ObjectEvent_GetParam(ObjectEvent *objectEvent, u32 param) {
switch (param) {
case 0:
return objectEvent->param[0];
case 1:
return objectEvent->param[1];
case 2:
return objectEvent->param[2];
default:
GF_ASSERT(FALSE);
return 0;
}
}
static void ObjectEvent_SetXRange(ObjectEvent *objectEvent, s16 xRange) {
objectEvent->xRange = xRange;
}
static s16 ObjectEvent_GetXRange(ObjectEvent *objectEvent) {
return objectEvent->xRange;
}
static void ObjectEvent_SetYRange(ObjectEvent *objectEvent, s16 yRange) {
objectEvent->yRange = yRange;
}
static s16 ObjectEvent_GetYRange(ObjectEvent *objectEvent) {
return objectEvent->yRange;
}
static void ObjectEvent_SetXCoord(ObjectEvent *objectEvent, u32 x) {
objectEvent->x = x;
}
static u16 ObjectEvent_GetXCoord(ObjectEvent *objectEvent) {
return objectEvent->x;
}
static void ObjectEvent_SetYCoord(ObjectEvent *objectEvent, u32 y) {
objectEvent->y = y;
}
static u32 ObjectEvent_GetYCoord(ObjectEvent *objectEvent) {
return objectEvent->y;
}
static void ObjectEvent_SetZCoord(ObjectEvent *objectEvent, u32 z) {
objectEvent->z = z;
}
static u16 ObjectEvent_GetZCoord(ObjectEvent *objectEvent) {
return objectEvent->z;
}
static ObjectEvent *ObjectEvent_GetByID(u16 id, s32 objectEventCount, ObjectEvent *objectEvents) {
s32 i = 0;
ObjectEvent *objectEvent = objectEvents;
do {
if (!ObjectEvent_ScriptIDIsUnset(objectEvent) && id == ObjectEvent_GetID(objectEvent)) {
return objectEvents + i;
}
i++;
objectEvent++;
} while (i < objectEventCount);
return NULL;
}
static BOOL ObjectEvent_ScriptIDIsUnset(ObjectEvent *objectEvent) {
// casts required to match
u16 script = (u16)(u32)ObjectEvent_GetScriptID(objectEvent);
return script == 0xFFFF;
}
static u16 ObjectEvent_GetEventFlag_AssertScriptIDIsUnset(ObjectEvent *template) {
GF_ASSERT(ObjectEvent_ScriptIDIsUnset(template) == TRUE);
return ObjectEvent_GetEventFlag(template);
}
static UnkLMOCallbackStruct *sub_02058D14(u32 movement) {
GF_ASSERT(movement < NELEMS(UNK_020F6364));
return UNK_020F6364[movement];
}
static LocalMapObject_UnkCallback sub_02058D2C(UnkLMOCallbackStruct *callbackStruct) {
return callbackStruct->unk4;
}
static LocalMapObject_UnkCallback sub_02058D30(UnkLMOCallbackStruct *callbackStruct) {
return callbackStruct->unk8;
}
static LocalMapObject_UnkCallback sub_02058D34(UnkLMOCallbackStruct *callbackStruct) {
return callbackStruct->unkC;
}
static LocalMapObject_UnkCallback sub_02058D38(UnkLMOCallbackStruct2 *callbackStruct) {
return callbackStruct->unk0;
}
static LocalMapObject_UnkCallback sub_02058D3C(UnkLMOCallbackStruct2 *callbackStruct) {
return callbackStruct->unk4;
}
static LocalMapObject_UnkCallback sub_02058D40(UnkLMOCallbackStruct2 *callbackStruct) {
return callbackStruct->unk8;
}
static LocalMapObject_UnkCallback sub_02058D44(UnkLMOCallbackStruct2 *callbackStruct) {
return callbackStruct->unkC;
}
static LocalMapObject_UnkCallback sub_02058D48(UnkLMOCallbackStruct2 *callbackStruct) {
return callbackStruct->unk10;
}
static UnkLMOCallbackStruct2 *sub_02058D4C(u32 spriteId) {
UnkLMOCallbackStruct3 *array = ov05_021F9494;
do {
if (array[0].spriteId == spriteId) {
return array[0].callbackStruct;
}
array++;
} while (array[0].spriteId != 0xFFFF);
GF_ASSERT(FALSE);
return NULL;
}
LocalMapObject *MapObjectManager_GetFirstObjectWithXAndZ(MapObjectManager *manager, u32 x, u32 z) {
u32 count = MapObjectManager_GetObjectCount(manager);
LocalMapObject *objects = MapObjectManager_GetObjects(manager);
do {
if (MapObject_GetFlagsBitsMask(objects, MAPOBJECTFLAG_ACTIVE) != 0) {
if (x == MapObject_GetCurrentX(objects) && z == MapObject_GetCurrentZ(objects)) {
return objects;
}
}
objects++;
count--;
} while (count > 0);
return NULL;
}
void LocalMapObject_SetPositionFromVectorAndDirection(LocalMapObject *object, VecFx32 *positionVector, u32 direction) {
MapObject_SetCurrentX(object, (positionVector->x >> 4) / FX32_ONE);
MapObject_SetCurrentY(object, (positionVector->y >> 3) / FX32_ONE);
MapObject_SetCurrentZ(object, (positionVector->z >> 4) / FX32_ONE);
MapObject_SetPositionVector(object, positionVector);
sub_02059C60(object);
MapObject_SetFacingDirectionDirect(object, direction);
MapObject_ClearHeldMovement(object);
MapObject_SetFlagsBits(object, MAPOBJECTFLAG_UNK2);
MapObject_ClearFlagsBits(object, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK3 | MAPOBJECTFLAG_SINGLE_MOVEMENT));
}
void MapObject_SetPositionFromXYZAndDirection(LocalMapObject *object, u32 x, u32 y, u32 z, u32 direction) {
VecFx32 positionVector;
positionVector.x = x * (16 * FX32_ONE) + (8 * FX32_ONE);
MapObject_SetCurrentX(object, x);
positionVector.y = y * (8 * FX32_ONE);
MapObject_SetCurrentY(object, y);
positionVector.z = z * (16 * FX32_ONE) + (8 * FX32_ONE);
MapObject_SetCurrentZ(object, z);
MapObject_SetPositionVector(object, &positionVector);
sub_02059C60(object);
MapObject_SetFacingDirectionDirect(object, direction);
MapObject_SetFlagsBits(object, MAPOBJECTFLAG_UNK2);
MapObject_ClearFlagsBits(object, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK3 | MAPOBJECTFLAG_SINGLE_MOVEMENT));
MapObject_ClearHeldMovement(object);
}
void sub_02058E90(LocalMapObject *object, u32 movement) {
sub_02058660(object);
MapObject_SetMovement(object, movement);
sub_02057EE0(object);
sub_02058EE8(object);
}
void sub_02058EB0(LocalMapObject *object, u32 id) {
MapObject_SetID(object, id);
MapObject_SetFlag2(object);
sub_0205815C(object);
}
void sub_02058EC8(LocalMapObject *object) {
}
void sub_02058ECC(LocalMapObject *object) {
}
void sub_02058ED0(LocalMapObject *object) {
}
void sub_02058ED4(LocalMapObject *object) {
}
void sub_02058ED8(LocalMapObject *object) {
}
void sub_02058EDC(LocalMapObject *object) {
}
void sub_02058EE0(LocalMapObject *object) {
}
void sub_02058EE4(LocalMapObject *object) {
}

View File

@@ -97,16 +97,13 @@ extern LocalMapObject *sub_0205E7C4(LocalMapObject *event);
extern u32 sub_02034B64(FieldSystem *fieldSystem);
extern const ObjectEvent *sub_02034B6C(FieldSystem *fieldSystem);
extern u32 sub_02059D1C(LocalMapObject *target);
extern VecFx32 *sub_02058B7C(LocalMapObject *target);
extern VecFx32 *MapObject_GetPositionVector(LocalMapObject *target);
extern void ov05_021EF5E0(VecFx32 *target, u32 param1);
extern u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *playerAvatar);
extern u32 sub_02059E74(u32 direction);
extern void ov05_021F1EC0(LocalMapObject *event, u32 param1);
extern u16 GetPlayerXCoord(PlayerAvatar *playerAvatar);
extern u16 GetPlayerYCoord(PlayerAvatar *playerAvatar);
extern void sub_02058BB4(LocalMapObject *event, VecFx32 *param1);
extern void sub_02058E90(LocalMapObject *event, u16 movement);
extern void sub_02058EB0(LocalMapObject *event, u32 param1);
extern u16 sub_02029E0C(SealCase *sealCase);
extern u16 SealCase_CountSealOccurrenceAnywhere(SealCase *sealCase, u16 sealId);
extern void sub_02029D44(SealCase *sealCase, u16 sealId, s16 amount);
@@ -243,7 +240,6 @@ extern void sub_02050048(void);
extern void sub_0204FF5C(FieldSystem *fieldSystem);
extern void sub_0204F6DC(u16 param0);
extern void SetEventDefaultXYPos(FieldSystem *fieldSystem, u16 objectId, u16 x, u16 y);
extern void sub_02058E28(LocalMapObject *object, u16 x, u16 z, u16 y, u16 direction);
extern void SetEventDefaultDirection(FieldSystem *fieldSystem, u16 objectId, u16 direction);
extern void SetWarpXYPos(FieldSystem *fieldSystem, u16 warpId, u16 x, u16 y);
extern void SetBgEventXYPos(FieldSystem *fieldSystem, u16 bgEventId, u16 x, u16 y);
@@ -1770,7 +1766,7 @@ BOOL ScrCmd_LockCamera(ScriptContext *ctx) { // 0066
sub_02059D1C(*targetPtr);
MapObject_SetVisible(*targetPtr, TRUE);
MapObject_ClearFlag18(*targetPtr, FALSE);
VecFx32 *position = sub_02058B7C(*targetPtr);
VecFx32 *position = MapObject_GetPositionVector(*targetPtr);
ov05_021EF5E0(position, ctx->fieldSystem->unk24);
Camera_SetFixedTarget(position, ctx->fieldSystem->camera);
return FALSE;
@@ -1779,7 +1775,7 @@ BOOL ScrCmd_LockCamera(ScriptContext *ctx) { // 0066
BOOL ScrCmd_ReleaseCamera(ScriptContext *ctx) { // 0067
LocalMapObject **targetPtr = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_CAMERA_TARGET);
MapObject_Remove(*targetPtr);
VecFx32 *position = sub_02058B7C(MapObjectManager_GetFirstActiveObjectByID(ctx->fieldSystem->mapObjectManager, 0xff));
VecFx32 *position = MapObject_GetPositionVector(MapObjectManager_GetFirstActiveObjectByID(ctx->fieldSystem->mapObjectManager, 0xff));
ov05_021EF5E0(position, ctx->fieldSystem->unk24);
Camera_SetFixedTarget(position, ctx->fieldSystem->camera);
return FALSE;
@@ -3255,7 +3251,7 @@ BOOL ScrCmd_SetEventPosition(ScriptContext *ctx) { // 0187
u16 y = ScriptGetVar(ctx);
u16 direction = ScriptGetVar(ctx);
LocalMapObject *object = MapObjectManager_GetFirstActiveObjectByID(ctx->fieldSystem->mapObjectManager, eventId);
sub_02058E28(object, x, z, y, direction);
MapObject_SetPositionFromXYZAndDirection(object, x, z, y, direction);
sub_02059D1C(object);
return FALSE;
}

View File

@@ -3,5 +3,6 @@
typedef struct LocalMapObject LocalMapObject;
typedef struct MapObjectManager MapObjectManager;
typedef struct ObjectEvent ObjectEvent;
#endif // POKEDIAMOND_FIELD_TYPES_DEF_H

View File

@@ -79,7 +79,10 @@ struct LocalMapObject {
u32 currentX;
s32 currentY;
u32 currentZ;
u8 padding[0x30];
VecFx32 positionVector;
VecFx32 facingVector;
VecFx32 unk88;
VecFx32 unk94;
u32 unkA0;
u32 movementCmd;
u32 movementStep;
@@ -101,13 +104,22 @@ struct LocalMapObject {
u8 unk108[0x20];
};
typedef struct ObjectEvent {
u8 padding[0x8];
u16 flag;
u8 padding2[0x16];
// todo fill out
struct ObjectEvent {
u16 id;
u16 spriteId;
u16 movement;
u16 type;
u16 eventFlag;
u16 scriptId;
s16 facingDirection;
u16 param[3];
s16 xRange;
s16 yRange;
u16 x;
u16 z;
s32 y;
// todo this should be in map_events_internal.h
} ObjectEvent;
};
typedef enum MapObjectFlagBits {
MAPOBJECTFLAG_ACTIVE = (1 << 0),
@@ -179,6 +191,11 @@ typedef struct UnkLMOCallbackStruct2 {
LocalMapObject_UnkCallback unk10;
} UnkLMOCallbackStruct2;
typedef struct UnkLMOCallbackStruct3 {
u32 spriteId;
UnkLMOCallbackStruct2 *callbackStruct;
} UnkLMOCallbackStruct3;
MapObjectManager *MapObjectManager_Init(FieldSystem *fieldSystem, u32 objectCount, u32 priority);
void MapObjectManager_Delete(MapObjectManager *manager);
void sub_020573C8(MapObjectManager *manager, u32 unused, u32 mapId, u32 objectCount, ObjectEvent *objectEvents);
@@ -328,5 +345,29 @@ void MapObject_AddCurrentY(LocalMapObject *object, s32 currentY);
u32 MapObject_GetCurrentZ(LocalMapObject *object);
void MapObject_SetCurrentZ(LocalMapObject *object, u32 currentZ);
void MapObject_AddCurrentZ(LocalMapObject *object, u32 currentZ);
void MapObject_CopyPositionVector(LocalMapObject *object, VecFx32 *positionVector);
void MapObject_SetPositionVector(LocalMapObject *object, VecFx32 *positionVector);
VecFx32 *MapObject_GetPositionVector(LocalMapObject *object);
fx32 MapObject_GetPositionVectorYCoord(LocalMapObject *object);
void MapObject_CopyFacingVector(LocalMapObject *object, VecFx32 *facingVector);
void MapObject_SetFacingVector(LocalMapObject *object, VecFx32 *facingVector);
void sub_02058BA4(LocalMapObject *object, VecFx32 *vector);
void sub_02058BB4(LocalMapObject *object, VecFx32 *vector);
void sub_02058BC4(LocalMapObject *object, VecFx32 *vector);
void sub_02058BD4(LocalMapObject *object, VecFx32 *vector);
u32 MapObject_GetPositionVectorYCoordUInt(LocalMapObject *object);
LocalMapObject *MapObjectManager_GetFirstObjectWithXAndZ(MapObjectManager *manager, u32 x, u32 z);
void LocalMapObject_SetPositionFromVectorAndDirection(LocalMapObject *object, VecFx32 *positionVector, u32 direction);
void MapObject_SetPositionFromXYZAndDirection(LocalMapObject *object, u32 x, u32 y, u32 z, u32 direction);
void sub_02058E90(LocalMapObject *object, u32 movement);
void sub_02058EB0(LocalMapObject *object, u32 id);
void sub_02058EC8(LocalMapObject *object);
void sub_02058ECC(LocalMapObject *object);
void sub_02058ED0(LocalMapObject *object);
void sub_02058ED4(LocalMapObject *object);
void sub_02058ED8(LocalMapObject *object);
void sub_02058EDC(LocalMapObject *object);
void sub_02058EE0(LocalMapObject *object);
void sub_02058EE4(LocalMapObject *object);
#endif // POKEDIAMOND_MAP_OBJECT_H