diff --git a/asm/businessScrub.s b/asm/businessScrub.s index 130660f9..ae2dd002 100644 --- a/asm/businessScrub.s +++ b/asm/businessScrub.s @@ -928,7 +928,7 @@ sub_08028FFC: @ 0x08028FFC adds r0, r4, #0 bl sub_080AE068 adds r0, r4, #0 - bl sub_0801D230 + bl UnloadOBJPalette adds r1, r4, #0 adds r1, #0x60 movs r0, #0xe8 diff --git a/asm/code_08018500.s b/asm/code_08018500.s index 663f9662..bd53d8fc 100644 --- a/asm/code_08018500.s +++ b/asm/code_08018500.s @@ -475,7 +475,7 @@ _0801889A: ldr r1, _080188AC @ =gUnk_080FECC8 _080188A4: adds r0, r0, r1 - bl CreateEntity + bl LoadRoomEntity b _080189E4 .align 2, 0 _080188AC: .4byte gUnk_080FECC8 @@ -488,7 +488,7 @@ _080188B8: lsls r0, r0, #4 ldr r1, _080188DC @ =gUnk_080FED18 adds r0, r0, r1 - bl CreateEntity + bl LoadRoomEntity adds r2, r0, #0 cmp r2, #0 bne _080188CC @@ -527,7 +527,7 @@ _080188FE: lsls r0, r0, #4 ldr r1, _08018924 @ =gUnk_080FED58 adds r0, r0, r1 - bl CreateEntity + bl LoadRoomEntity ldr r2, _08018928 @ =gRoomVars ldrb r0, [r5, #1] lsls r0, r0, #2 @@ -549,7 +549,7 @@ _08018930: lsls r0, r0, #4 ldr r1, _08018974 @ =gUnk_080FEE78 adds r0, r0, r1 - bl CreateEntity + bl LoadRoomEntity adds r2, r0, #0 cmp r2, #0 beq _08018958 @@ -612,13 +612,13 @@ _080189B4: cmp r4, #0 beq _080189C4 ldr r0, _080189C0 @ =gUnk_080FEE58 - bl CreateEntity + bl LoadRoomEntity b _080189E4 .align 2, 0 _080189C0: .4byte gUnk_080FEE58 _080189C4: ldr r0, _080189CC @ =gUnk_080FEE48 - bl CreateEntity + bl LoadRoomEntity b _080189E4 .align 2, 0 _080189CC: .4byte gUnk_080FEE48 diff --git a/asm/code_0801CEC0.s b/asm/code_0801CEC0.s index ff3d26df..c2eda998 100644 --- a/asm/code_0801CEC0.s +++ b/asm/code_0801CEC0.s @@ -358,8 +358,8 @@ _0801D22A: .align 2, 0 _0801D22C: .4byte gUnk_02001A00 - thumb_func_start sub_0801D230 -sub_0801D230: @ 0x0801D230 + thumb_func_start UnloadOBJPalette +UnloadOBJPalette: @ 0x0801D230 push {lr} adds r0, #0x27 ldrb r2, [r0] @@ -438,7 +438,7 @@ sub_0801D2B4: @ 0x0801D2B4 push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 - bl sub_0801D230 + bl UnloadOBJPalette adds r0, r4, #0 adds r1, r5, #0 bl sub_0801D040 diff --git a/asm/code_0804AEB0.s b/asm/code_0804AEB0.s index 6ccfba79..b1a43ecc 100644 --- a/asm/code_0804AEB0.s +++ b/asm/code_0804AEB0.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_0804AEB0 -sub_0804AEB0: @ 0x0804AEB0 + thumb_func_start RegisterRoomEntity +RegisterRoomEntity: @ 0x0804AEB0 push {r4, r5, r6, lr} adds r5, r0, #0 adds r6, r1, #0 diff --git a/asm/code_080526F8.s b/asm/code_080526F8.s index d054a0b6..592d77e2 100644 --- a/asm/code_080526F8.s +++ b/asm/code_080526F8.s @@ -2409,7 +2409,7 @@ nullsub_482: @ 0x080539B8 sub_080539BC: @ 0x080539BC push {lr} bl sub_080197AC - bl sub_0805E89C + bl DeleteAllEntities movs r0, #0x22 movs r1, #0x11 movs r2, #0 @@ -3098,7 +3098,7 @@ sub_08053F20: @ 0x08053F20 ldrb r0, [r0] cmp r0, #0 bne _08053F74 - bl sub_0805E89C + bl DeleteAllEntities ldr r5, _08053F7C @ =gMenu ldr r4, [r5, #0xc] ldrb r0, [r4, #8] diff --git a/asm/code_0805436C.s b/asm/code_0805436C.s index d1a63f7b..a166b867 100644 --- a/asm/code_0805436C.s +++ b/asm/code_0805436C.s @@ -170,7 +170,7 @@ _080549CE: ldrb r0, [r6, #2] cmp r0, #2 bne _080549F4 - bl sub_08059D18 + bl TryLoadPrologueHyruleTown _080549F4: ldr r0, _08054A10 @ =gUnk_02032EC0 ldrb r0, [r0, #3] @@ -1880,7 +1880,7 @@ sub_08055710: @ 0x08055710 ldrb r1, [r1, #3] bl sub_0804B0B0 ldr r0, _08055760 @ =gUnk_080FEE48 - bl CreateEntity + bl LoadRoomEntity adds r1, r0, #0 cmp r1, #0 beq _08055734 @@ -2385,7 +2385,7 @@ sub_08055AEC: @ 0x08055AEC lsls r0, r0, #4 ldr r1, _08055B30 @ =gUnk_080FED18 adds r0, r0, r1 - bl CreateEntity + bl LoadRoomEntity adds r1, r0, #0 cmp r1, #0 beq _08055B14 @@ -2452,7 +2452,7 @@ sub_08055B70: @ 0x08055B70 lsls r0, r0, #4 ldr r1, _08055BA8 @ =gUnk_080FF378 adds r0, r0, r1 - bl CreateEntity + bl LoadRoomEntity adds r3, r0, #0 cmp r3, #0 beq _08055BA2 diff --git a/asm/code_0805E3B0.s b/asm/code_0805E3B0.s index 061f417a..199df78c 100644 --- a/asm/code_0805E3B0.s +++ b/asm/code_0805E3B0.s @@ -357,7 +357,7 @@ _0805E608: .4byte gUnk_03005F40 thumb_func_start EraseAllEntities EraseAllEntities: @ 0x0805E60C push {lr} - bl sub_0805E89C + bl DeleteAllEntities ldr r0, _0805E654 @ =gUnk_03003DC0 movs r1, #0xc bl _DmaZero diff --git a/asm/code_0806FA6C.s b/asm/code_0806FA6C.s index fd6a614f..44762471 100644 --- a/asm/code_0806FA6C.s +++ b/asm/code_0806FA6C.s @@ -127,15 +127,15 @@ _0806FBD4: .4byte gPlayerState sub_0806FBD8: @ 0x0806FBD8 push {r4, lr} adds r4, r0, #0 - bl sub_0806FBEC + bl UnloadBoundingBox movs r0, #0xc bl sub_0801D8E0 str r0, [r4, #0x48] pop {r4, pc} .align 2, 0 - thumb_func_start sub_0806FBEC -sub_0806FBEC: @ 0x0806FBEC + thumb_func_start UnloadBoundingBox +UnloadBoundingBox: @ 0x0806FBEC push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x48] @@ -447,7 +447,7 @@ LoadExtraSpriteData: @ 0x0806FDEC b _0806FE74 _0806FE02: adds r0, r6, #0 - bl sub_0801D230 + bl UnloadOBJPalette adds r0, r6, #0 adds r0, #0x28 ldrb r0, [r0] diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s index a9ace9d1..9cc86918 100644 --- a/asm/code_0807CC3C.s +++ b/asm/code_0807CC3C.s @@ -1589,8 +1589,8 @@ sub_0807DAF0: @ 0x0807DAF0 bl sub_0807DB88 pop {r4, pc} - thumb_func_start sub_0807DB08 -sub_0807DB08: @ 0x0807DB08 + thumb_func_start UnloadCutsceneData +UnloadCutsceneData: @ 0x0807DB08 push {r4, r5, lr} adds r4, r0, #0 ldrb r1, [r4, #0x10] diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index ec2e0e3a..fa3d8dd2 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -3629,9 +3629,9 @@ sub_080A71F4: @ 0x080A71F4 beq _080A71FE bl DoExitTransition _080A71FE: - bl sub_0805E89C + bl DeleteAllEntities bl sub_0805E974 - bl sub_0805E89C + bl DeleteAllEntities ldr r0, _080A7218 @ =gUnk_03001000 movs r2, #0 movs r1, #1 @@ -3764,7 +3764,7 @@ sub_080A7328: @ 0x080A7328 ldrb r0, [r0] cmp r0, #0 bne _080A7384 - bl sub_0805E89C + bl DeleteAllEntities ldr r0, _080A738C @ =gMenu movs r1, #0x30 bl _DmaZero @@ -3817,7 +3817,7 @@ sub_080A73A8: @ 0x080A73A8 beq _080A73B4 b _080A74BC _080A73B4: - bl sub_0805E89C + bl DeleteAllEntities bl sub_0805E974 ldr r1, _080A746C @ =gUnk_02017654 ldr r5, _080A7470 @ =gUnk_02032EC0 @@ -10586,7 +10586,7 @@ sub_080AA654: @ 0x080AA654 adds r0, #8 strh r0, [r4, #0xa] adds r0, r4, #0 - bl CreateEntity + bl LoadRoomEntity pop {r4, r5, pc} .align 2, 0 _080AA688: .4byte gUnk_0812A004 diff --git a/asm/gleerok.s b/asm/gleerok.s index 82a2098a..4f5462b4 100644 --- a/asm/gleerok.s +++ b/asm/gleerok.s @@ -1146,7 +1146,7 @@ _0802D8DE: cmp r0, #0 bne _0802D906 adds r0, r4, #0 - bl sub_0801D230 + bl UnloadOBJPalette adds r0, r4, #0 movs r1, #0xc9 bl sub_0801D040 @@ -1155,7 +1155,7 @@ _0802D906: subs r0, #1 strb r0, [r4, #0xf] adds r0, r4, #0 - bl sub_0801D230 + bl UnloadOBJPalette adds r0, r4, #0 movs r1, #0xca bl sub_0801D040 @@ -1345,7 +1345,7 @@ _0802DA54: cmp r0, #0 beq _0802DA96 adds r0, r4, #0 - bl sub_0801D230 + bl UnloadOBJPalette ldrb r0, [r5] adds r0, #1 adds r0, r0, r7 diff --git a/asm/createEntity.s b/asm/loadRoomEntity.s similarity index 94% rename from asm/createEntity.s rename to asm/loadRoomEntity.s index d43f638a..2bdc40ce 100644 --- a/asm/createEntity.s +++ b/asm/loadRoomEntity.s @@ -5,8 +5,8 @@ .text - thumb_func_start CreateEntity -CreateEntity: @ 0x0804ADF8 + thumb_func_start LoadRoomEntity +LoadRoomEntity: @ 0x0804ADF8 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldrb r0, [r4] @@ -37,7 +37,7 @@ _0804AE1C: strb r0, [r5, #0xa] adds r0, r5, #0 adds r1, r4, #0 - bl sub_0804AEB0 + bl RegisterRoomEntity ldrb r1, [r4, #1] movs r7, #0xf0 adds r0, r7, #0 diff --git a/asm/manager12.s b/asm/manager12.s index 370bf536..7c990102 100644 --- a/asm/manager12.s +++ b/asm/manager12.s @@ -395,8 +395,8 @@ _08059CEC: _08059D10: .4byte gUnk_08108468 _08059D14: .4byte gGlobalGfxAndPalettes - thumb_func_start sub_08059D18 -sub_08059D18: @ 0x08059D18 + thumb_func_start TryLoadPrologueHyruleTown +TryLoadPrologueHyruleTown: @ 0x08059D18 push {r4, lr} ldr r0, _08059D68 @ =gRoomControls ldrb r0, [r0, #4] diff --git a/asm/manager38.s b/asm/manager38.s index 20e701d6..a98b99d8 100644 --- a/asm/manager38.s +++ b/asm/manager38.s @@ -37,7 +37,7 @@ sub_0805E0C0: @ 0x0805E0C0 _0805E0DE: adds r0, r4, #0 adds r4, #0x10 - bl CreateEntity + bl LoadRoomEntity str r5, [r0, #0x50] movs r1, #0xff strb r1, [r0, #0xe] diff --git a/asm/managerB.s b/asm/managerB.s index 58d1be89..88e16d48 100644 --- a/asm/managerB.s +++ b/asm/managerB.s @@ -160,7 +160,7 @@ _0805870A: _08058718: adds r0, r4, #0 adds r4, #0x10 - bl CreateEntity + bl LoadRoomEntity adds r3, r0, #0 cmp r3, #0 beq _08058744 diff --git a/asm/mazaalHead.s b/asm/mazaalHead.s index 55f5764a..9cbd935c 100644 --- a/asm/mazaalHead.s +++ b/asm/mazaalHead.s @@ -197,7 +197,7 @@ _08034038: ldr r2, [r0, #0x74] strb r1, [r2, #0xd] adds r0, r3, #0 - bl sub_0801D230 + bl UnloadOBJPalette b _0803413E _08034056: ldrb r0, [r3, #0xe] diff --git a/include/functions.h b/include/functions.h index 30576777..d85b2822 100644 --- a/include/functions.h +++ b/include/functions.h @@ -155,7 +155,7 @@ extern void sub_080534AC(); extern void sub_0807BA8C(u32, u32); extern void sub_0804D9B0(); extern void sub_0807BB98(u32, u32, u32, u32); -extern void sub_08059D18(void); +extern void TryLoadPrologueHyruleTown(void); extern void sub_0801D000(u32); extern void sub_08018C58(u32); extern void sub_0804E150(void); diff --git a/include/room.h b/include/room.h index 8170da5f..6245d225 100644 --- a/include/room.h +++ b/include/room.h @@ -29,7 +29,8 @@ typedef struct { u16 screenShakeTime; u16 filler2[6]; u8 filler3[4]; - u16 filler4[4]; + union SplitWord bg3OffsetX; + union SplitWord bg3OffsetY; Entity* cameraTarget; } RoomControls; @@ -57,11 +58,13 @@ typedef struct { //Packets used to store which entities to load in a room typedef struct { - u8 entityType; - u8 field_0x1; - u8 entitySubtype; - u8 entityform; - u32 entityparameter; + u8 type : 4; + u8 layer : 4; + u8 flags : 4; + u8 unk : 4; + u8 subtype; + u8 form; + u32 parameter; u16 xPos; u16 yPos; u32 spritePtr; diff --git a/linker.ld b/linker.ld index b60efc36..88464064 100644 --- a/linker.ld +++ b/linker.ld @@ -442,7 +442,7 @@ SECTIONS { src/code_0804AA84.o(.text); asm/code_0804AA84.o(.text); src/loadRoomEntityList.o(.text); - asm/createEntity.o(.text); + asm/loadRoomEntity.o(.text); asm/code_0804AEB0.o(.text); src/sub_0804AFF4.o(.text); src/loadRoom.o(.text); diff --git a/src/createEntity.c b/src/createEntity.c index c3589c37..7feff11b 100644 --- a/src/createEntity.c +++ b/src/createEntity.c @@ -4,12 +4,12 @@ // extern Entity * FindEntityBySubtype(u32, u32); // extern Entity * GetEmptyEntityByType(); -// extern void sub_0804AEB0(Entity *, EntityData *); +// extern void RegisterRoomEntity(Entity *, EntityData *); // extern u32 sub_0804AF0C(Entity *, EntityData *); // extern void sub_08016A30(Entity *); // extern u32 gRoomControls; -// Entity * CreateEntity(EntityData *param_1) +// Entity * LoadRoomEntity(EntityData *param_1) // { // Entity *preexisting; // Entity *entity; @@ -26,7 +26,7 @@ // (entity->entityType).type = type; // (entity->entityType).subtype = param_1->entitySubtype; // (entity->entityType).form = param_1->entityform; -// sub_0804AEB0(entity,param_1); +// RegisterRoomEntity(entity,param_1); // if ((param_1->field_0x1 & 240) != 16) { // (entity->entityType).parameter = *(u8 *)¶m_1->entityparameter; // entity->actionDelay = (u8)((u32)param_1->entityparameter >> 8); diff --git a/src/entity.c b/src/entity.c index 3b4c9442..056644bf 100644 --- a/src/entity.c +++ b/src/entity.c @@ -70,15 +70,15 @@ void DeleteEntityAny(Entity* ent) { } extern void sub_080AE068(); -extern void sub_0801D230(); +extern void UnloadOBJPalette(); extern void sub_0806FE84(); extern void sub_080788E0(); extern void sub_08078954(); extern void sub_0805EC60(); extern void sub_08017744(); extern void sub_0805E92C(); -extern void sub_0807DB08(); -extern void sub_0806FBEC(); +extern void UnloadCutsceneData(); +extern void UnloadBoundingBox(); extern void sub_0801DA0C(); extern void sub_0804AA1C(); extern void UnlinkEntity(); // Unlink @@ -86,15 +86,15 @@ extern void UnlinkEntity(); // Unlink void DeleteEntity(Entity* ent) { if (ent->next) { sub_080AE068(ent); - sub_0801D230(ent); + UnloadOBJPalette(ent); sub_0806FE84(ent); sub_080788E0(ent); sub_08078954(ent); sub_0805EC60(ent); sub_08017744(ent); sub_0805E92C(ent); - sub_0807DB08(ent); - sub_0806FBEC(ent); + UnloadCutsceneData(ent); + UnloadBoundingBox(ent); sub_0801DA0C(ent->otherEntity); ent->otherEntity = NULL; if ((ent->entityType).type == 3) { @@ -140,7 +140,7 @@ typedef struct LinkedList { extern LinkedList gEntityLists[9]; extern EntityType gUnk_03003DB8; -void sub_0805E89C(void) { +void DeleteAllEntities(void) { Entity* ent; Entity* next; LinkedList* it; diff --git a/src/loadRoom.c b/src/loadRoom.c index 86749a52..48a6e3bf 100644 --- a/src/loadRoom.c +++ b/src/loadRoom.c @@ -8,7 +8,7 @@ extern void sub_0804B058(EntityData* dat); extern void LoadRoomTileEntities(EntityData* dat); extern void sub_0801AC98(); extern u32 sub_08049D1C(u32); -extern Entity* CreateEntity(EntityData*); +extern Entity* LoadRoomEntity(EntityData*); extern void* GetRoomProperty(u32, u32, u32); extern u32 gUnk_02017654; @@ -32,22 +32,22 @@ void sub_0804B058(EntityData* dat) { Entity* ent; u32 uVar2; - if ((dat != NULL) && (dat->entityType != 0xff)) { + if ((dat != NULL) && *(u8*)dat != 0xff) { uVar2 = 0; do { - if ((uVar2 < 0x20) && ((dat->entityType & 0xf) == 3)) { + if ((uVar2 < 0x20) && ((dat->type) == 3)) { if (sub_08049D1C(uVar2) != 0) { - ent = CreateEntity(dat); + ent = LoadRoomEntity(dat); if ((ent != NULL) && ((ent->entityType).type == 3)) { ent->field_0x6c.HALF.LO = uVar2 | 0x80; } } } else { - CreateEntity(dat); + LoadRoomEntity(dat); } uVar2++; dat++; - } while (dat->entityType != 0xff); + } while (*(u8*)dat!= 0xff); } } diff --git a/src/loadRoomEntityList.c b/src/loadRoomEntityList.c index 92373c4d..f74cc9a6 100644 --- a/src/loadRoomEntityList.c +++ b/src/loadRoomEntityList.c @@ -1,12 +1,12 @@ #include "global.h" #include "room.h" -void extern CreateEntity(EntityData*); +void extern LoadRoomEntity(EntityData*); void LoadRoomEntityList(EntityData* listPtr) { if (listPtr != NULL) { - while (listPtr->entityType != 0xFF) { - CreateEntity(listPtr++); + while (*(u8*)listPtr != 0xFF) { + LoadRoomEntity(listPtr++); } } } diff --git a/src/room.c b/src/room.c index 35be17c4..cd8959f5 100644 --- a/src/room.c +++ b/src/room.c @@ -4231,7 +4231,7 @@ extern EntityData gUnk_080EEBAC; void LoadHyruleTown(void) { sub_08054570(); - sub_08059D18(); + TryLoadPrologueHyruleTown(); SetTileType(0x176, 0x66b, 1); if (gUnk_02002A40.unk8 == 1) { sub_0801D000(0);