diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index c24b46a34..ec9bddc58 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -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 diff --git a/arm9/asm/map_object_s.s b/arm9/asm/map_object_s.s deleted file mode 100644 index db84d747d..000000000 --- a/arm9/asm/map_object_s.s +++ /dev/null @@ -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 diff --git a/arm9/asm/unk_02036FA4.s b/arm9/asm/unk_02036FA4.s index fa0e6ce33..3f7d121de 100644 --- a/arm9/asm/unk_02036FA4.s +++ b/arm9/asm/unk_02036FA4.s @@ -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 diff --git a/arm9/asm/unk_02037024.s b/arm9/asm/unk_02037024.s index 37343c690..19f57eb2e 100644 --- a/arm9/asm/unk_02037024.s +++ b/arm9/asm/unk_02037024.s @@ -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} diff --git a/arm9/asm/unk_0204B34C.s b/arm9/asm/unk_0204B34C.s index ccf9c4378..383177c8b 100644 --- a/arm9/asm/unk_0204B34C.s +++ b/arm9/asm/unk_0204B34C.s @@ -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 diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s index 3c92d6197..1f62ce053 100644 --- a/arm9/asm/unk_0204CB20.s +++ b/arm9/asm/unk_0204CB20.s @@ -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 diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s index 538ba99e9..0cce0c148 100644 --- a/arm9/asm/unk_02052EE8.s +++ b/arm9/asm/unk_02052EE8.s @@ -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 diff --git a/arm9/asm/unk_02055068.s b/arm9/asm/unk_02055068.s index fca2ccbbc..36b7c4fdf 100644 --- a/arm9/asm/unk_02055068.s +++ b/arm9/asm/unk_02055068.s @@ -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} diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index cdb3588d8..4d110d6d3 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -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] diff --git a/arm9/asm/unk_02058EE8.s b/arm9/asm/unk_02058EE8.s index 8a90533ed..6226e0f5e 100644 --- a/arm9/asm/unk_02058EE8.s +++ b/arm9/asm/unk_02058EE8.s @@ -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 diff --git a/arm9/asm/unk_02059F04.s b/arm9/asm/unk_02059F04.s index bd5a5f3f2..674b2befc 100644 --- a/arm9/asm/unk_02059F04.s +++ b/arm9/asm/unk_02059F04.s @@ -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 diff --git a/arm9/asm/unk_0205AD98.s b/arm9/asm/unk_0205AD98.s index 7f8820ba8..21f098ac0 100644 --- a/arm9/asm/unk_0205AD98.s +++ b/arm9/asm/unk_0205AD98.s @@ -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 diff --git a/arm9/asm/unk_0205E4EC.s b/arm9/asm/unk_0205E4EC.s index 739290c4b..30a47e4c8 100644 --- a/arm9/asm/unk_0205E4EC.s +++ b/arm9/asm/unk_0205E4EC.s @@ -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} diff --git a/arm9/global.inc b/arm9/global.inc index b48420453..fb743e3d7 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021E55BC.s b/arm9/overlays/05/asm/ov05_021E55BC.s index 658f2acae..8642808e1 100644 --- a/arm9/overlays/05/asm/ov05_021E55BC.s +++ b/arm9/overlays/05/asm/ov05_021E55BC.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021E577C.s b/arm9/overlays/05/asm/ov05_021E577C.s index 29b3bcd79..11da65c2e 100644 --- a/arm9/overlays/05/asm/ov05_021E577C.s +++ b/arm9/overlays/05/asm/ov05_021E577C.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021E5918.s b/arm9/overlays/05/asm/ov05_021E5918.s index 14b91f1bf..9b55c75e6 100644 --- a/arm9/overlays/05/asm/ov05_021E5918.s +++ b/arm9/overlays/05/asm/ov05_021E5918.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021E5E10.s b/arm9/overlays/05/asm/ov05_021E5E10.s index 21078aa6c..d6200650a 100644 --- a/arm9/overlays/05/asm/ov05_021E5E10.s +++ b/arm9/overlays/05/asm/ov05_021E5E10.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021E5FD8.s b/arm9/overlays/05/asm/ov05_021E5FD8.s index ee12bd4ec..d305fbb78 100644 --- a/arm9/overlays/05/asm/ov05_021E5FD8.s +++ b/arm9/overlays/05/asm/ov05_021E5FD8.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021E779C.s b/arm9/overlays/05/asm/ov05_021E779C.s index ac49fa9d2..baa7f059b 100644 --- a/arm9/overlays/05/asm/ov05_021E779C.s +++ b/arm9/overlays/05/asm/ov05_021E779C.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021ED9C0.s b/arm9/overlays/05/asm/ov05_021ED9C0.s index 1310f0abf..91568a89e 100644 --- a/arm9/overlays/05/asm/ov05_021ED9C0.s +++ b/arm9/overlays/05/asm/ov05_021ED9C0.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021EDB70.s b/arm9/overlays/05/asm/ov05_021EDB70.s index 0f364937a..678b2167c 100644 --- a/arm9/overlays/05/asm/ov05_021EDB70.s +++ b/arm9/overlays/05/asm/ov05_021EDB70.s @@ -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] diff --git a/arm9/overlays/05/asm/ov05_021F0514.s b/arm9/overlays/05/asm/ov05_021F0514.s index 5ea6d2056..4566a2a32 100644 --- a/arm9/overlays/05/asm/ov05_021F0514.s +++ b/arm9/overlays/05/asm/ov05_021F0514.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021F1CB8.s b/arm9/overlays/05/asm/ov05_021F1CB8.s index ed2f2c2c7..eb47dcf34 100644 --- a/arm9/overlays/05/asm/ov05_021F1CB8.s +++ b/arm9/overlays/05/asm/ov05_021F1CB8.s @@ -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 diff --git a/arm9/overlays/05/asm/ov05_021F1F04.s b/arm9/overlays/05/asm/ov05_021F1F04.s index 0e4eb2a5e..234eee981 100644 --- a/arm9/overlays/05/asm/ov05_021F1F04.s +++ b/arm9/overlays/05/asm/ov05_021F1F04.s @@ -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] diff --git a/arm9/overlays/06/asm/overlay_06.s b/arm9/overlays/06/asm/overlay_06.s index 15ee6a4be..dd3fcbcff 100644 --- a/arm9/overlays/06/asm/overlay_06.s +++ b/arm9/overlays/06/asm/overlay_06.s @@ -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 diff --git a/arm9/src/map_object.c b/arm9/src/map_object.c index ccc65e89c..3997251df 100644 --- a/arm9/src/map_object.c +++ b/arm9/src/map_object.c @@ -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) { +} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index e9815a7ad..9b3db7e3f 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -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; } diff --git a/include/field_types_def.h b/include/field_types_def.h index e8f412c26..ce8944082 100644 --- a/include/field_types_def.h +++ b/include/field_types_def.h @@ -3,5 +3,6 @@ typedef struct LocalMapObject LocalMapObject; typedef struct MapObjectManager MapObjectManager; +typedef struct ObjectEvent ObjectEvent; #endif // POKEDIAMOND_FIELD_TYPES_DEF_H diff --git a/include/map_object.h b/include/map_object.h index 56fd27c8c..e2a510a37 100644 --- a/include/map_object.h +++ b/include/map_object.h @@ -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