diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 61b54e73e..0e6426550 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -14,37 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start ScrCmd_Unk0067 -ScrCmd_Unk0067: ; 0x0203B500 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xb - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl FUN_02057654 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xff - ldr r0, [r0, #0x34] - bl FUN_02058060 - bl FUN_02058B7C - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - add r4, r0, #0x0 - ldr r1, [r1, #0x24] - bl MOD05_021EF5E0 - add r5, #0x80 - ldr r1, [r5, #0x0] - add r0, r4, #0x0 - ldr r1, [r1, #0x20] - bl Camera_SetFixedTarget - mov r0, #0x0 - pop {r3-r5, pc} - thumb_func_start ScrCmd_Unk0068 ScrCmd_Unk0068: ; 0x0203B544 push {r3-r5, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index e83d3e193..6d8be6608 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -252,7 +252,7 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_AddOverworldEvent .word ScrCmd_RemoveOverworldEvent .word ScrCmd_LockCamera - .word ScrCmd_Unk0067 + .word ScrCmd_ReleaseCamera .word ScrCmd_Unk0068 .word ScrCmd_Unk0069 .word ScrCmd_Unk006A diff --git a/arm9/global.inc b/arm9/global.inc index 6b4bd21b7..c693d88a8 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2797,7 +2797,7 @@ .extern ScrCmd_AddOverworldEvent .extern ScrCmd_RemoveOverworldEvent .extern ScrCmd_LockCamera -.extern ScrCmd_Unk0067 +.extern ScrCmd_ReleaseCamera .extern ScrCmd_Unk0068 .extern ScrCmd_Unk0069 .extern ScrCmd_Unk006A diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 1eb8fd53f..005febbb7 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -76,6 +76,7 @@ extern struct Vecx32 *FUN_0205889C(struct Vecx32 *target, u32 param1); extern struct Vecx32 *FUN_020588B8(struct Vecx32 *target, u32 param1); extern struct Vecx32 *FUN_02058B7C(struct Vecx32 *target); extern void MOD05_021EF5E0(struct Vecx32 *target, u32 param1); +extern void FUN_02057654(struct Vecx32 *target); extern u8 UNK_021C5A0C[4]; @@ -1641,3 +1642,13 @@ THUMB_FUNC BOOL ScrCmd_LockCamera(struct ScriptContext *ctx) //0066 Camera_SetFixedTarget(modifiedTarget, ctx->unk80->cameraWork); return FALSE; } + +THUMB_FUNC BOOL git (struct ScriptContext *ctx) //0067 +{ + struct Vecx32 **targetPtr = FUN_02039438(ctx->unk80, 0xb); + FUN_02057654(*targetPtr); + struct Vecx32 *modifiedTarget = FUN_02058B7C(FUN_02058060(ctx->unk80->unk34, 0xff)); + MOD05_021EF5E0(modifiedTarget, ctx->unk80->unk24); + Camera_SetFixedTarget(modifiedTarget, ctx->unk80->cameraWork); + return FALSE; +} diff --git a/include/scrcmd.h b/include/scrcmd.h index cd74af405..457be5f9f 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -124,6 +124,7 @@ BOOL ScrCmd_ReleaseEvent(struct ScriptContext *ctx); BOOL ScrCmd_AddOverworldEvent(struct ScriptContext *ctx); BOOL ScrCmd_RemoveOverworldEvent(struct ScriptContext *ctx); BOOL ScrCmd_LockCamera(struct ScriptContext *ctx); +BOOL ScrCmd_ReleaseCamera(struct ScriptContext *ctx); // scrcmd_mart.c BOOL ScrCmd_NormalMart(struct ScriptContext * ctx);