From 1133fcb21b311f9864d6d3fbe2fa93b8bcd7c3e8 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Fri, 19 Feb 2021 03:34:52 +0100 Subject: [PATCH] named ScriptExecutionContext globals and functions --- asm/code_080732D0.s | 8 +++---- asm/manager16.s | 2 +- linker.ld | 4 ++-- src/code_0807CC3C.c | 55 +++++++++++++++++++++------------------------ 4 files changed, 33 insertions(+), 36 deletions(-) diff --git a/asm/code_080732D0.s b/asm/code_080732D0.s index 2aff08e1..ee7de176 100644 --- a/asm/code_080732D0.s +++ b/asm/code_080732D0.s @@ -3437,7 +3437,7 @@ sub_08074C68: @ 0x08074C68 adds r0, r4, #0 adds r0, #0x84 ldr r1, [r0] - ldr r0, _08074CA4 @ =gUnk_02022750 + ldr r0, _08074CA4 @ =gPlayerScriptExecutionContext cmp r1, r0 bne _08074CF2 movs r0, #1 @@ -3449,7 +3449,7 @@ sub_08074C68: @ 0x08074C68 b _08074CF2 .align 2, 0 _08074CA0: .4byte gPlayerState -_08074CA4: .4byte gUnk_02022750 +_08074CA4: .4byte gPlayerScriptExecutionContext _08074CA8: ldrb r1, [r4, #0x18] movs r0, #4 @@ -4195,7 +4195,7 @@ sub_080751E8: @ 0x080751E8 adds r7, r0, #0 adds r5, r1, #0 adds r6, r2, #0 - ldr r4, _08075230 @ =gUnk_02022750 + ldr r4, _08075230 @ =gPlayerScriptExecutionContext adds r0, r4, #0 movs r1, #0x24 bl _DmaZero @@ -4226,7 +4226,7 @@ sub_080751E8: @ 0x080751E8 ldr r6, _0807523C @ =gUnk_08009ECC b _08075244 .align 2, 0 -_08075230: .4byte gUnk_02022750 +_08075230: .4byte gPlayerScriptExecutionContext _08075234: .4byte gPlayerEntity _08075238: .4byte gPlayerState _0807523C: .4byte gUnk_08009ECC diff --git a/asm/manager16.s b/asm/manager16.s index 518f9e4e..25cd6698 100644 --- a/asm/manager16.s +++ b/asm/manager16.s @@ -126,7 +126,7 @@ _0805AC1A: ldr r0, [r4, #8] cmp r0, #0 beq _0805AC48 - bl sub_0807DAA0 + bl CreateScriptExecutionContext mov sb, r0 cmp r0, #0 beq _0805ACA6 diff --git a/linker.ld b/linker.ld index 8ac8a325..e4141fdc 100644 --- a/linker.ld +++ b/linker.ld @@ -84,7 +84,7 @@ SECTIONS { . = 0x00022130; gUnk_02022130 = .; . = 0x00022730; gUnk_02022730 = .; . = 0x00022740; gUnk_02022740 = .; - . = 0x00022750; gUnk_02022750 = .; + . = 0x00022750; gPlayerScriptExecutionContext = .; . = 0x00022780; gUnk_02022780 = .; . = 0x000227DC; gUnk_020227DC = .; . = 0x000227E8; gUnk_020227E8 = .; @@ -144,7 +144,7 @@ SECTIONS { . = 0x00035540; gUnk_02035540 = .; . = 0x00035542; gUnk_02035542 = .; . = 0x00036540; gUnk_02036540 = .; - . = 0x00036570; gUnk_02036570 = .; + . = 0x00036570; gScriptExecutionContextArray = .; . = 0x000369F0; gUnk_020369F0 = .; . = 0x00036A38; gUnk_02036A38 = .; . = 0x00036A40; gUnk_02036A40 = .; diff --git a/src/code_0807CC3C.c b/src/code_0807CC3C.c index 484fe575..e895a5bf 100644 --- a/src/code_0807CC3C.c +++ b/src/code_0807CC3C.c @@ -9,17 +9,14 @@ extern u8 gUnk_0811E514[]; extern u8 gUnk_0811E510[]; extern u8 gUnk_0811E4BC[]; extern const char gUnk_0811E4B4[8]; -// the type is just a guess based on size and the fact that these are around a lot in this file -extern ScriptExecutionContext gUnk_02022750; -// might be ScriptExecutionContext[0x20] -extern u32 gUnk_02036570; +extern ScriptExecutionContext gPlayerScriptExecutionContext; +extern ScriptExecutionContext gScriptExecutionContextArray[0x20]; extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32); extern void CreateSpeechBubbleQuestionMark(Entity*, u32, u32); extern void DeleteThisEntity(void); extern u32 sub_080B180C(u32, const char*); extern void sub_0801C4A0(u32); -extern void sub_0807DB98(Entity*, ScriptExecutionContext*); extern s32 __divsi3(s32, s32); extern void _call_via_r6(Entity*, ScriptExecutionContext*); extern u16 sub_080B18DC(u16, const char*); @@ -31,6 +28,9 @@ u32 sub_0807D128(u16* unk_1); u16 sub_0807D1A4(u16* unk_1, u32 unk_2); u32 sub_0807D0A0(u16* unk_1, u16* unk_2, u32 unk_3); u32 sub_0807D0EC(u32 unk_1, const char* unk_2); +void sub_0807DF38(void); +void sub_0807DE80(Entity* entity); +void sub_0807DB98(Entity*, ScriptExecutionContext*); NONMATCH("asm/non_matching/code_0807CC3C/sub_0807CF88.inc", u32 sub_0807CF88(u32 arg0, u8* arg1)) { u32 signature; @@ -246,32 +246,32 @@ END_NONMATCH void sub_0807DA70(void) { _DmaZero(&gUnk_02033280, 0xc); - _DmaZero(&gUnk_02036570, 0x480); - _DmaZero(&gUnk_02022750, 0x24); + _DmaZero(&gScriptExecutionContextArray, sizeof(gScriptExecutionContextArray)); + _DmaZero(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext)); gUnk_02033280.unk_08 = 8; } -u32* sub_0807DAA0(void) { - u32* puVar1; +ScriptExecutionContext* CreateScriptExecutionContext(void) { + ScriptExecutionContext* puVar1; - puVar1 = &gUnk_02036570; + puVar1 = gScriptExecutionContextArray; do { - if (*puVar1 == 0) { + if (puVar1->unk_00 == 0) { return puVar1; } - puVar1 = puVar1 + 9; - } while (puVar1 < &gUnk_02036570 + 0x480 / 4); + puVar1++; + } while (puVar1 < gScriptExecutionContextArray + ARRAY_COUNT(gScriptExecutionContextArray)); return NULL; } -void sub_0807DAC4(ScriptExecutionContext* context) { - _DmaZero(context, 0x24); +void DestroyScriptExecutionContext(ScriptExecutionContext* context) { + _DmaZero(context, sizeof(ScriptExecutionContext)); } u32* StartCutscene(Entity* param_1, u8* param_2) { ScriptExecutionContext* puVar1; - puVar1 = (ScriptExecutionContext*)sub_0807DAA0(); + puVar1 = CreateScriptExecutionContext(); if (puVar1) { sub_0807DAF0(param_1, puVar1, (u32)param_2); } @@ -287,7 +287,7 @@ void sub_0807DAF0(Entity* entity, ScriptExecutionContext* context, u32 unk1) { void UnloadCutsceneData(Entity* entity) { if ((entity->flags & 2)) { entity->flags = entity->flags & 0xfd; - sub_0807DAC4(*(ScriptExecutionContext**)&entity->cutsceneBeh); + DestroyScriptExecutionContext(*(ScriptExecutionContext**)&entity->cutsceneBeh); *(ScriptExecutionContext**)&entity->cutsceneBeh = NULL; } } @@ -295,24 +295,24 @@ void UnloadCutsceneData(Entity* entity) { void StartPlayerScript(u32 unk1) { Entity* player; - _DmaZero(&gUnk_02022750, 0x24); - gUnk_02022750.unk_00 = (u16*)unk1; + _DmaZero(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext)); + gPlayerScriptExecutionContext.unk_00 = (u16*)unk1; player = &gPlayerEntity; - *(ScriptExecutionContext**)&player->cutsceneBeh = &gUnk_02022750; + *(ScriptExecutionContext**)&player->cutsceneBeh = &gPlayerScriptExecutionContext; gPlayerState.playerAction = 0x1c; gPlayerState.field_0x3a = 0; gPlayerState.field_0x39 = 0; gPlayerState.field_0x38 = 0; } -u32* sub_0807DB68(Entity* entity, u32 unk1) { - u32* puVar1; +ScriptExecutionContext* sub_0807DB68(Entity* entity, u16* unk1) { + ScriptExecutionContext* puVar1; - puVar1 = sub_0807DAA0(); + puVar1 = CreateScriptExecutionContext(); if (puVar1) { entity->flags |= 2; - *(u32**)&entity->field_0x3c = puVar1; - *puVar1 = unk1; + *(ScriptExecutionContext**)&entity->field_0x3c = puVar1; + puVar1->unk_00 = unk1; } return puVar1; } @@ -347,7 +347,7 @@ void sub_0807DB98(Entity* entity, ScriptExecutionContext* context) { CreateSpeechBubbleQuestionMark(entity, 8, -0x18); break; case 0x40: - sub_0807DAC4(context); + DestroyScriptExecutionContext(context); DeleteThisEntity(); case 0x80: entity->spriteSettings.b.draw = 1; @@ -396,9 +396,6 @@ void sub_0807DB98(Entity* entity, ScriptExecutionContext* context) { } } -void sub_0807DF38(void); -void sub_0807DE80(Entity* entity); - void sub_0807DD50(Entity* entity) { sub_0807DD64(entity); sub_0807DD94(entity, 0);