diff --git a/asm/armos.s b/asm/armos.s index 29b4f36b..10ead871 100644 --- a/asm/armos.s +++ b/asm/armos.s @@ -1013,7 +1013,7 @@ _0803088E: orrs r0, r1 strb r0, [r2] ldr r0, [r5, #0x7c] - bl sub_08080840 + bl DoExitTransition ldr r0, _08030938 @ =gUnk_030010A0 adds r1, r5, #0 adds r1, #0x80 diff --git a/asm/code_08056418.s b/asm/code_08056418.s index 9535ec10..89b58c35 100644 --- a/asm/code_08056418.s +++ b/asm/code_08056418.s @@ -3266,7 +3266,7 @@ _08057D18: bne _08057D3A ldrb r0, [r4, #6] bl sub_0804B128 - bl sub_08080840 + bl DoExitTransition _08057D3A: adds r4, #8 ldrh r0, [r4] @@ -15569,7 +15569,7 @@ sub_0805DC70: @ 0x0805DC70 push {lr} bl sub_0805E5A8 ldr r0, _0805DC80 @ =gUnk_0813AC48 - bl sub_08080840 + bl DoExitTransition pop {pc} .align 2, 0 _0805DC80: .4byte gUnk_0813AC48 diff --git a/asm/code_08070698.s b/asm/code_08070698.s index cfe246e3..924dd878 100644 --- a/asm/code_08070698.s +++ b/asm/code_08070698.s @@ -2205,7 +2205,7 @@ _080717B0: cmp r0, #6 bne _080717C0 ldr r0, _080717BC @ =gUnk_0813AB58 - bl sub_08080840 + bl DoExitTransition b _080717CA .align 2, 0 _080717BC: .4byte gUnk_0813AB58 diff --git a/asm/code_080732D0.s b/asm/code_080732D0.s index 0492f487..9bd2c3e9 100644 --- a/asm/code_080732D0.s +++ b/asm/code_080732D0.s @@ -806,7 +806,7 @@ _080738A2: lsls r0, r0, #2 ldr r1, _080738E8 @ =gUnk_0813AD88 adds r0, r0, r1 - bl sub_08080840 + bl DoExitTransition b _080738F0 .align 2, 0 _080738DC: .4byte gUnk_030010A0 diff --git a/asm/code_08077B98.s b/asm/code_08077B98.s index 99a5bc34..335ad265 100644 --- a/asm/code_08077B98.s +++ b/asm/code_08077B98.s @@ -7386,7 +7386,7 @@ sub_0807B2B8: @ 0x0807B2B8 lsls r0, r0, #2 ldr r1, _0807B2F4 @ =gUnk_0813AD88 adds r0, r0, r1 - bl sub_08080840 + bl DoExitTransition _0807B2EC: pop {r4, pc} .align 2, 0 diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s index 07b9dc4a..5d579f3e 100644 --- a/asm/code_0807CC3C.s +++ b/asm/code_0807CC3C.s @@ -7988,7 +7988,7 @@ _080806E2: cmp r0, #0 beq _08080720 adds r0, r5, #0 - bl sub_08080840 + bl DoExitTransition movs r0, #1 b _0808072A .align 2, 0 @@ -8161,8 +8161,8 @@ _0808083C: _0808083E: pop {r4, r5, pc} - thumb_func_start sub_08080840 -sub_08080840: @ 0x08080840 + thumb_func_start DoExitTransition +DoExitTransition: @ 0x08080840 push {r4, lr} adds r4, r0, #0 ldr r0, _0808085C @ =gUnk_030010A0 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index f53c9429..b2099ae3 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -3643,7 +3643,7 @@ sub_080A71F4: @ 0x080A71F4 push {lr} cmp r0, #0 beq _080A71FE - bl sub_08080840 + bl DoExitTransition _080A71FE: bl sub_0805E89C bl sub_0805E974 diff --git a/asm/mazaalHead.s b/asm/mazaalHead.s index ab086909..7210acb9 100644 --- a/asm/mazaalHead.s +++ b/asm/mazaalHead.s @@ -1837,7 +1837,7 @@ sub_08034C00: @ 0x08034C00 cmp r0, #0x3c bls _08034C54 ldr r0, _08034C50 @ =gUnk_080CED88 - bl sub_08080840 + bl DoExitTransition b _08034C5A .align 2, 0 _08034C44: .4byte gLinkState @@ -1846,7 +1846,7 @@ _08034C4C: .4byte gUnk_030010A0 _08034C50: .4byte gUnk_080CED88 _08034C54: ldr r0, _08034C5C @ =gUnk_080CED9C - bl sub_08080840 + bl DoExitTransition _08034C5A: pop {r4, pc} .align 2, 0 diff --git a/asm/mazaalMacro.s b/asm/mazaalMacro.s index 296d6752..1951c225 100644 --- a/asm/mazaalMacro.s +++ b/asm/mazaalMacro.s @@ -400,7 +400,7 @@ sub_08034F58: @ 0x08034F58 push {r4, lr} adds r4, r0, #0 ldr r0, _08034F6C @ =gUnk_0813ABA8 - bl sub_08080840 + bl DoExitTransition adds r0, r4, #0 bl DeleteEntity pop {r4, pc} diff --git a/asm/minishSizedEntrance.s b/asm/minishSizedEntrance.s index 6604eabd..c6c4a2dd 100644 --- a/asm/minishSizedEntrance.s +++ b/asm/minishSizedEntrance.s @@ -100,7 +100,7 @@ _08090F1C: beq _08090F62 ldrb r0, [r4, #0xe] bl sub_0804B128 - bl sub_08080840 + bl DoExitTransition _08090F62: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/picolyteBottles.s b/asm/picolyteBottles.s index 2f90341a..dacc72a0 100644 --- a/asm/picolyteBottles.s +++ b/asm/picolyteBottles.s @@ -420,7 +420,7 @@ sub_0806E1E0: @ 0x0806E1E0 sub_0806E1FC: @ 0x0806E1FC push {lr} ldr r0, _0806E208 @ =gUnk_0813AD4C - bl sub_08080840 + bl DoExitTransition pop {pc} .align 2, 0 _0806E208: .4byte gUnk_0813AD4C diff --git a/asm/simon.s b/asm/simon.s deleted file mode 100644 index fb20b96b..00000000 --- a/asm/simon.s +++ /dev/null @@ -1,110 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0806C204 -sub_0806C204: @ 0x0806C204 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xc] - cmp r0, #0 - bne _0806C21A - adds r0, #1 - strb r0, [r1, #0xc] - adds r0, r1, #0 - bl sub_0807DD50 - b _0806C222 -_0806C21A: - adds r0, r1, #0 - movs r1, #0 - bl sub_0807DD94 -_0806C222: - pop {pc} - - thumb_func_start sub_0806C224 -sub_0806C224: @ 0x0806C224 - push {lr} - ldr r0, _0806C234 @ =gUnk_0813AD60 - bl sub_08080840 - ldr r1, _0806C238 @ =gUnk_030010A0 - movs r0, #6 - strb r0, [r1, #9] - pop {pc} - .align 2, 0 -_0806C234: .4byte gUnk_0813AD60 -_0806C238: .4byte gUnk_030010A0 - - thumb_func_start sub_0806C23C -sub_0806C23C: @ 0x0806C23C - push {r4, r5, lr} - adds r4, r0, #0 - movs r1, #0xf - movs r2, #0x43 - movs r3, #0 - bl CreateObjectWithParent - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0806C27C @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r4, #0x38 - ldrb r2, [r4] - movs r0, #0x73 - bl SetTileType - movs r0, #0x73 - bl PlaySFX - pop {r4, r5, pc} - .align 2, 0 -_0806C27C: .4byte gRoomControls - - thumb_func_start sub_0806C280 -sub_0806C280: @ 0x0806C280 - push {lr} - movs r0, #0x50 - bl SetGlobalFlag - ldr r0, _0806C298 @ =gUnk_0813AD74 - bl sub_08080840 - ldr r1, _0806C29C @ =gUnk_030010A0 - movs r0, #6 - strb r0, [r1, #9] - pop {pc} - .align 2, 0 -_0806C298: .4byte gUnk_0813AD74 -_0806C29C: .4byte gUnk_030010A0 - - thumb_func_start sub_0806C2A0 -sub_0806C2A0: @ 0x0806C2A0 - push {lr} - ldr r0, [r1, #4] - cmp r0, #0 - beq _0806C2AE - cmp r0, #1 - beq _0806C2B8 - b _0806C2C0 -_0806C2AE: - movs r0, #0xd - movs r1, #4 - bl DoFade - b _0806C2C0 -_0806C2B8: - movs r0, #0xc - movs r1, #4 - bl DoFade -_0806C2C0: - pop {pc} - .align 2, 0 diff --git a/asm/vaatiArm.s b/asm/vaatiArm.s index 4e025586..98f138e5 100644 --- a/asm/vaatiArm.s +++ b/asm/vaatiArm.s @@ -3331,7 +3331,7 @@ sub_08043DB0: @ 0x08043DB0 cmp r0, #0 beq _08043EAC ldr r0, _08043E50 @ =gUnk_080D13EC - bl sub_08080840 + bl DoExitTransition ldr r4, _08043E54 @ =gUnk_030010A0 adds r0, r4, #0 adds r0, #0x39 diff --git a/asm/vaatiProjectile.s b/asm/vaatiProjectile.s index 46cd8c40..f7e0c4b3 100644 --- a/asm/vaatiProjectile.s +++ b/asm/vaatiProjectile.s @@ -436,7 +436,7 @@ sub_0803E398: @ 0x0803E398 bgt _0803E3C8 bl sub_0805E5A8 ldr r0, _0803E3D0 @ =gUnk_0813AB94 - bl sub_08080840 + bl DoExitTransition _0803E3C8: pop {r4, pc} .align 2, 0 diff --git a/asm/wallMaster.s b/asm/wallMaster.s index 8afe932c..2beda836 100644 --- a/asm/wallMaster.s +++ b/asm/wallMaster.s @@ -447,7 +447,7 @@ sub_0802A734: @ 0x0802A734 lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] - bl sub_08080840 + bl DoExitTransition b _0802A780 .align 2, 0 _0802A760: .4byte gUnk_0813AB1C diff --git a/asm/wallMaster2.s b/asm/wallMaster2.s index bf87a4e4..82043e5e 100644 --- a/asm/wallMaster2.s +++ b/asm/wallMaster2.s @@ -370,7 +370,7 @@ sub_0802CEF4: @ 0x0802CEF4 lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] - bl sub_08080840 + bl DoExitTransition b _0802CF5A .align 2, 0 _0802CF20: .4byte gUnk_0813AB1C diff --git a/asm/windTribeTeleporter.s b/asm/windTribeTeleporter.s index d0b3904b..ddae0a9f 100644 --- a/asm/windTribeTeleporter.s +++ b/asm/windTribeTeleporter.s @@ -208,7 +208,7 @@ _080A10A2: lsls r0, r0, #2 ldr r1, _080A10B8 @ =gUnk_0813ADEC adds r0, r0, r1 - bl sub_08080840 + bl DoExitTransition b _080A10D4 .align 2, 0 _080A10B4: .4byte gRoomControls diff --git a/include/entity.h b/include/entity.h index ba301aff..69107ed6 100644 --- a/include/entity.h +++ b/include/entity.h @@ -1,8 +1,8 @@ -#include "global.h" - #ifndef ENTITY_H #define ENTITY_H +#include "global.h" + typedef struct { void* entity1; void* entity2; @@ -145,4 +145,6 @@ typedef struct Entity { } Entity; +#define COORD_TO_TILE(entity) ((((entity->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3fU) | (((entity->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6) + #endif diff --git a/linker.ld b/linker.ld index 368c9de5..f6bf3457 100644 --- a/linker.ld +++ b/linker.ld @@ -533,7 +533,7 @@ SECTIONS { asm/drLeft.o(.text); asm/kingGustaf.o(.text); asm/gina.o(.text); - asm/simon.o(.text); + src/simon.o(.text); asm/anju.o(.text); asm/mama.o(.text); src/emma.o(.text); diff --git a/src/emma.c b/src/emma.c index a65a67e4..2776b7e9 100644 --- a/src/emma.c +++ b/src/emma.c @@ -8,7 +8,7 @@ extern u32 gUnk_0813AD38; extern void sub_0805E3A0(Entity*, u32); extern void sub_0807DD50(Entity*); extern void sub_0807DD94(Entity*, u32); -extern void sub_08080840(u32*); +extern void DoExitTransition(u32*); void sub_0806C550(Entity* param_1) @@ -26,20 +26,20 @@ void sub_0806C550(Entity* param_1) void sub_0806C578(void) { - sub_08080840(&gUnk_0813AD10); + DoExitTransition(&gUnk_0813AD10); return; } void sub_0806C588(void) { - sub_08080840(&gUnk_0813AD24); + DoExitTransition(&gUnk_0813AD24); return; } void FUN_0806c598(void) { - sub_08080840(&gUnk_0813AD38); + DoExitTransition(&gUnk_0813AD38); return; } diff --git a/src/room.c b/src/room.c index 8149cc1f..3ba2096e 100644 --- a/src/room.c +++ b/src/room.c @@ -8,13 +8,13 @@ extern u32 gUnk_0200B650; extern u32 gUnk_02025EB0; extern u8 gUnk_030010A0[10]; -extern void sub_08080840(Entity*); +extern void DoExitTransition(Entity*); extern void sub_080809D4(); void sub_0808091C(Entity* param_1, u32 param_2) { - sub_08080840(param_1); + DoExitTransition(param_1); gUnk_030010A0[9] = param_2; return; } diff --git a/src/simon.c b/src/simon.c new file mode 100644 index 00000000..1e56d6bc --- /dev/null +++ b/src/simon.c @@ -0,0 +1,68 @@ +#include "global.h" +#include "entity.h" +#include "functions.h" +#include "room.h" +#include "flags.h" + +typedef struct { + u8 filler[9]; + u8 unk; +} struct_030010A0; + +typedef struct { + u8 filler[4]; + u32 unk; +} struct_0806C2A0; + +extern void DoExitTransition(void *); +extern void SetTileType(u32, u32, u32); +extern void CreateObjectWithParent(Entity*, u32, u32, u32); +extern void DoExitTransition(void *); +extern void DoFade(u32, u32); + +extern void gUnk_0813AD60; +extern void gUnk_0813AD74; +extern struct_030010A0 gUnk_030010A0; + +void Simon(Entity *this) +{ + if (this->action == 0) { + this->action++; + sub_0807DD50(this); + } + else { + sub_0807DD94(this, 0); + } +} + +void sub_0806C224(void) +{ + DoExitTransition(&gUnk_0813AD60); + gUnk_030010A0.unk = 6; +} + +void Simon_CreateChest(Entity *this) +{ + CreateObjectWithParent(this,0xf,0x43,0); + SetTileType(0x73, COORD_TO_TILE(this), this->collisionLayer); + PlaySFX(0x73); +} + +void sub_0806C280(void) +{ + SetGlobalFlag(0x50); + DoExitTransition(&gUnk_0813AD74); + gUnk_030010A0.unk = 6; +} + +void sub_0806C2A0(u32 *param_1,struct_0806C2A0 *param_2) +{ + switch (param_2->unk) { + case 0: + DoFade(0xd, 4); + break; + case 1: + DoFade(0xc, 4); + break; + } +} \ No newline at end of file diff --git a/src/tmc.code-workspace b/src/tmc.code-workspace index 2a0ed79b..e061a281 100644 --- a/src/tmc.code-workspace +++ b/src/tmc.code-workspace @@ -3,5 +3,10 @@ { "path": ".." } - ] + ], + "settings": { + "files.associations": { + "algorithm": "cpp" + } + } } \ No newline at end of file