loadRoom merge

This commit is contained in:
theo3 2021-11-12 00:45:13 -08:00
parent fddb4abd53
commit f70c95f037
12 changed files with 202 additions and 293 deletions

View File

@ -1,179 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start RegisterRoomEntity
RegisterRoomEntity: @ 0x0804AEB0
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
ldrb r0, [r6, #1]
movs r1, #0xf
adds r2, r1, #0
ands r2, r0
ldrb r0, [r6]
adds r4, r1, #0
ands r4, r0
ldr r0, [r5]
cmp r0, #0
bne _0804AEF6
cmp r2, #0xf
bne _0804AEE0
ldr r0, _0804AEDC @ =gUnk_081091E4
adds r0, r4, r0
ldrb r1, [r0]
adds r0, r5, #0
bl AppendEntityToList
b _0804AEF6
.align 2, 0
_0804AEDC: .4byte gUnk_081091E4
_0804AEE0:
cmp r2, #8
bne _0804AEEE
adds r0, r5, #0
movs r1, #8
bl AppendEntityToList
b _0804AEF6
_0804AEEE:
adds r0, r5, #0
adds r1, r2, #0
bl AppendEntityToList
_0804AEF6:
adds r1, r5, #0
adds r1, #0x78
cmp r4, #9
bne _0804AF00
subs r1, #0x48
_0804AF00:
adds r0, r6, #0
movs r2, #0x10
bl MemCopy
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0804AF0C
sub_0804AF0C: @ 0x0804AF0C
push {r4, lr}
adds r4, r0, #0
adds r2, r1, #0
ldrb r0, [r2, #1]
movs r1, #0xf0
ands r1, r0
cmp r1, #0x20
beq _0804AF40
cmp r1, #0x20
bgt _0804AF26
cmp r1, #0
beq _0804AF2C
b _0804AF88
_0804AF26:
cmp r1, #0x40
beq _0804AF64
b _0804AF88
_0804AF2C:
ldr r0, _0804AF3C @ =gRoomControls
ldrh r1, [r0, #6]
ldrh r3, [r2, #8]
adds r1, r1, r3
strh r1, [r4, #0x2e]
ldrh r0, [r0, #8]
b _0804AF58
.align 2, 0
_0804AF3C: .4byte gRoomControls
_0804AF40:
adds r3, r4, #0
adds r3, #0x6d
ldrb r1, [r3]
movs r0, #0x20
orrs r0, r1
strb r0, [r3]
ldr r1, _0804AF60 @ =gRoomControls
ldrh r0, [r1, #6]
ldrh r3, [r2, #8]
adds r0, r0, r3
strh r0, [r4, #0x2e]
ldrh r0, [r1, #8]
_0804AF58:
ldrh r2, [r2, #0xa]
adds r0, r0, r2
strh r0, [r4, #0x32]
b _0804AF88
.align 2, 0
_0804AF60: .4byte gRoomControls
_0804AF64:
ldr r1, _0804AF8C @ =gRoomControls
ldrh r0, [r1, #6]
ldrh r3, [r2, #8]
adds r0, r0, r3
strh r0, [r4, #0x2e]
ldrh r0, [r1, #8]
ldrh r1, [r2, #0xa]
adds r0, r0, r1
strh r0, [r4, #0x32]
ldr r1, [r2, #0xc]
adds r0, r4, #0
bl StartCutscene
cmp r0, #0
bne _0804AF88
adds r0, r4, #0
bl DeleteEntity
_0804AF88:
pop {r4, pc}
.align 2, 0
_0804AF8C: .4byte gRoomControls
thumb_func_start sub_0804AF90
sub_0804AF90: @ 0x0804AF90
push {lr}
ldr r0, _0804AFA8 @ =gArea
ldr r1, _0804AFAC @ =0x0000085C
adds r0, r0, r1
ldr r0, [r0]
ldr r0, [r0, #0x1c]
bl sub_0804AFB0
bl sub_080A7C7C
pop {pc}
.align 2, 0
_0804AFA8: .4byte gArea
_0804AFAC: .4byte 0x0000085C
thumb_func_start sub_0804AFB0
sub_0804AFB0: @ 0x0804AFB0
push {r4, lr}
ldr r1, _0804AFD4 @ =gUnk_02017654
str r0, [r1]
movs r2, #0
ldr r0, _0804AFD8 @ =gRoomVars
adds r3, r1, #0
adds r4, r0, #0
adds r4, #0x6c
_0804AFC0:
lsls r0, r2, #2
ldr r1, [r3]
adds r0, r0, r1
ldr r0, [r0]
stm r4!, {r0}
adds r2, #1
cmp r2, #7
bls _0804AFC0
pop {r4, pc}
.align 2, 0
_0804AFD4: .4byte gUnk_02017654
_0804AFD8: .4byte gRoomVars
thumb_func_start sub_0804AFDC
sub_0804AFDC: @ 0x0804AFDC
push {r4, lr}
movs r4, #1
movs r0, #6
bl GetCurrentRoomProperty
cmp r0, #0
beq _0804AFF0
bl _call_via_r0
adds r4, r0, #0
_0804AFF0:
adds r0, r4, #0
pop {r4, pc}

View File

@ -6,14 +6,14 @@
GetCurrentRoomProperty: @ 0x0804B128 GetCurrentRoomProperty: @ 0x0804B128
push {lr} push {lr}
adds r2, r0, #0 adds r2, r0, #0
ldr r0, _0804B138 @ =gUnk_02017654 ldr r0, _0804B138 @ =gCurrentRoomProperties
ldr r1, [r0] ldr r1, [r0]
cmp r1, #0 cmp r1, #0
bne _0804B13C bne _0804B13C
movs r0, #0 movs r0, #0
b _0804B166 b _0804B166
.align 2, 0 .align 2, 0
_0804B138: .4byte gUnk_02017654 _0804B138: .4byte gCurrentRoomProperties
_0804B13C: _0804B13C:
cmp r2, #0x7f cmp r2, #0x7f
bls _0804B150 bls _0804B150

View File

@ -4890,7 +4890,7 @@ sub_080A7250: @ 0x080A7250
adds r0, #0x8b adds r0, #0x8b
ldrb r0, [r0] ldrb r0, [r0]
strb r0, [r1, #0xc] strb r0, [r1, #0xc]
ldr r0, _080A731C @ =gUnk_02017654 ldr r0, _080A731C @ =gCurrentRoomProperties
ldr r0, [r0] ldr r0, [r0]
str r0, [r1, #0x10] str r0, [r1, #0x10]
ldr r0, _080A7320 @ =gUnk_02025EB0 ldr r0, _080A7320 @ =gUnk_02025EB0
@ -4917,7 +4917,7 @@ _080A730C: .4byte gUnk_03000420
_080A7310: .4byte gActiveScriptInfo _080A7310: .4byte gActiveScriptInfo
_080A7314: .4byte gScreenTransition _080A7314: .4byte gScreenTransition
_080A7318: .4byte gPlayerState _080A7318: .4byte gPlayerState
_080A731C: .4byte gUnk_02017654 _080A731C: .4byte gCurrentRoomProperties
_080A7320: .4byte gUnk_02025EB0 _080A7320: .4byte gUnk_02025EB0
_080A7324: .4byte gUnk_0200B650 _080A7324: .4byte gUnk_0200B650
@ -4983,7 +4983,7 @@ sub_080A73A8: @ 0x080A73A8
_080A73B4: _080A73B4:
bl DeleteAllEntities bl DeleteAllEntities
bl sub_0805E974 bl sub_0805E974
ldr r1, _080A746C @ =gUnk_02017654 ldr r1, _080A746C @ =gCurrentRoomProperties
ldr r5, _080A7470 @ =gUnk_02032EC0 ldr r5, _080A7470 @ =gUnk_02032EC0
ldr r0, [r5, #0x10] ldr r0, [r5, #0x10]
str r0, [r1] str r0, [r1]
@ -5058,7 +5058,7 @@ _080A73B4:
b _080A74AE b _080A74AE
.align 2, 0 .align 2, 0
_080A7468: .4byte gFadeControl _080A7468: .4byte gFadeControl
_080A746C: .4byte gUnk_02017654 _080A746C: .4byte gCurrentRoomProperties
_080A7470: .4byte gUnk_02032EC0 _080A7470: .4byte gUnk_02032EC0
_080A7474: .4byte gPlayerState _080A7474: .4byte gPlayerState
_080A7478: .4byte gUnk_02025EB0 _080A7478: .4byte gUnk_02025EB0

View File

@ -1,12 +1,4 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified .syntax unified
.text
thumb_func_start LoadRoomEntity
LoadRoomEntity: @ 0x0804ADF8
push {r4, r5, r6, r7, lr} push {r4, r5, r6, r7, lr}
adds r4, r0, #0 adds r4, r0, #0
ldrb r0, [r4] ldrb r0, [r4]
@ -99,3 +91,4 @@ _0804AEAA:
_0804AEAC: _0804AEAC:
pop {r4, r5, r6, r7, pc} pop {r4, r5, r6, r7, pc}
.align 2, 0 .align 2, 0
.syntax divided

View File

@ -30,14 +30,14 @@ _0804DE32:
ldrb r0, [r4, #8] ldrb r0, [r4, #8]
cmp r0, #1 cmp r0, #1
beq _0804DE5C beq _0804DE5C
ldr r1, _0804DE58 @ =gUnk_02017654 ldr r1, _0804DE58 @ =gCurrentRoomProperties
ldr r0, [r5] ldr r0, [r5]
str r0, [r1] str r0, [r1]
b _0804DECC b _0804DECC
.align 2, 0 .align 2, 0
_0804DE50: .4byte Area_HyruleTown _0804DE50: .4byte Area_HyruleTown
_0804DE54: .4byte gSave _0804DE54: .4byte gSave
_0804DE58: .4byte gUnk_02017654 _0804DE58: .4byte gCurrentRoomProperties
_0804DE5C: _0804DE5C:
movs r0, #0x1c movs r0, #0x1c
bl SetGlobalFlag bl SetGlobalFlag

View File

@ -23,7 +23,8 @@ typedef struct {
u8 unk1A; u8 unk1A;
u8 filler2[13]; u8 filler2[13];
u8 field_0x28; u8 field_0x28;
u8 filler4[0x834]; u8 filler4[0x833];
void*** field_0x85c;
u32 musicIndex; u32 musicIndex;
u32 pMusicIndex; u32 pMusicIndex;
u8 filler5[0x20]; u8 filler5[0x20];
@ -31,6 +32,7 @@ typedef struct {
u32 unk3; u32 unk3;
u32 unk4; u32 unk4;
} Area; } Area;
static_assert(sizeof(Area) == 0x894);
extern Area gArea; extern Area gArea;

View File

@ -60,20 +60,13 @@ typedef struct {
u8 filler4[48]; u8 filler4[48];
u8 filler5[28]; u8 filler5[28];
u32 greatFairyState; u32 greatFairyState;
u32* field_0x6c; void* field_0x6c[8];
u32* field_0x70;
u32* field_0x74;
u32 field_0x78;
u8 field_0x79[10];
void* field_0x88;
} RoomVars; } RoomVars;
// Packets used to store which entities to load in a room // Packets used to store which entities to load in a room
typedef struct { typedef struct {
u8 kind : 4; u8 kind;
u8 layer : 4; u8 flags;
u8 flags : 4;
u8 unk : 4;
u8 id; u8 id;
u8 type; u8 type;
u32 type2; u32 type2;

View File

@ -64,7 +64,7 @@ SECTIONS {
. = 0x00011654; gUnk_02011654 = .; . = 0x00011654; gUnk_02011654 = .;
. = 0x00012654; gMetatilesTop = .; . = 0x00012654; gMetatilesTop = .;
. = 0x00016654; gUnk_02016654 = .; . = 0x00016654; gUnk_02016654 = .;
. = 0x00017654; gUnk_02017654 = .; . = 0x00017654; gCurrentRoomProperties = .;
. = 0x00017660; gUnk_02017660 = .; . = 0x00017660; gUnk_02017660 = .;
. = 0x000176A0; gPaletteBuffer = .; . = 0x000176A0; gPaletteBuffer = .;
. = 0x000176E0; gUnk_020176E0 = .; . = 0x000176E0; gUnk_020176E0 = .;
@ -477,9 +477,6 @@ SECTIONS {
src/createEnemy.o(.text); src/createEnemy.o(.text);
src/code_0804AA84.o(.text); src/code_0804AA84.o(.text);
asm/code_0804AA84.o(.text); asm/code_0804AA84.o(.text);
src/loadRoomEntityList.o(.text);
asm/loadRoomEntity.o(.text);
asm/code_0804AEB0.o(.text);
src/loadRoom.o(.text); src/loadRoom.o(.text);
asm/code_0804B058.o(.text); asm/code_0804B058.o(.text);
src/room.o(.text); src/room.o(.text);

View File

@ -1,7 +1,9 @@
#include "global.h" #include "global.h"
#include "area.h"
#include "room.h" #include "room.h"
#include "flags.h" #include "flags.h"
#include "functions.h" #include "functions.h"
#include "utils.h"
extern void sub_0804B058(EntityData* dat); extern void sub_0804B058(EntityData* dat);
extern void sub_0801AC98(); extern void sub_0801AC98();
@ -9,11 +11,132 @@ extern u32 sub_08049D1C(u32);
extern Entity* LoadRoomEntity(EntityData*); extern Entity* LoadRoomEntity(EntityData*);
extern void* GetRoomProperty(u32, u32, u32); extern void* GetRoomProperty(u32, u32, u32);
extern u32 gUnk_02017654; extern void** gCurrentRoomProperties;
extern u32* gAreaTable; extern void*** gAreaTable[];
extern u8 gUnk_081091E4[];
extern void sub_080186EC(); extern void sub_080186EC();
extern void sub_0804B16C(); extern void sub_0804B16C();
extern void sub_080A7C7C(void);
extern Entity* GetEmptyEntityByKind(u32 kind);
void RegisterRoomEntity(Entity*, EntityData*);
void sub_0804AF0C(Entity*, EntityData*);
void sub_0804AFB0(void** properties);
void LoadRoomEntityList(EntityData* listPtr) {
if (listPtr != NULL) {
while (listPtr->kind != 0xFF) {
LoadRoomEntity(listPtr++);
}
}
}
NONMATCH("asm/loadRoomEntity.s", Entity* LoadRoomEntity(EntityData* dat)) {
int kind;
Entity* v4;
Entity* v5;
kind = dat->kind & 0xF;
if ((dat->flags & 0xF0) == 0x50 && DeepFindEntityByID(kind, dat->id))
return NULL;
v4 = GetEmptyEntityByKind(kind);
v5 = v4;
if (v4 != NULL) {
v4->kind = kind;
v4->id = dat->id;
v4->type = dat->type;
RegisterRoomEntity(v4, dat);
if ((dat->flags & 0xF0) != 16) {
v5->type2 = dat->type2;
v5->actionDelay = (dat->type2 & 0xFF00) >> 8;
if (kind == 9)
return v5;
sub_0804AF0C(v5, dat);
if (!v5->next)
return v5;
if ((dat->kind & 0x10) == 0) {
if ((dat->kind & 0x20) != 0) {
v5->collisionLayer = 2;
return v5;
}
if ((gRoomControls.unk6 & 2) == 0) {
sub_08016A30(v5);
}
}
v5->collisionLayer = 1;
}
}
return v5;
}
END_NONMATCH
void RegisterRoomEntity(Entity* ent, EntityData* dat) {
u32 list;
u32 kind;
void* offset;
list = dat->flags & 0xF;
kind = dat->kind & 0xF;
if (ent->prev == NULL) {
if (list == 0xF) {
AppendEntityToList(ent, gUnk_081091E4[kind]);
} else if (list == 8) {
AppendEntityToList(ent, 8);
} else {
AppendEntityToList(ent, list);
}
}
offset = &ent->field_0x78;
if (kind == MANAGER)
offset = &ent->y;
MemCopy(dat, offset, sizeof(EntityData));
}
void sub_0804AF0C(Entity* ent, EntityData* dat) {
switch (dat->flags & 0xf0) {
case 0x0:
ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX;
ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY;
break;
case 0x20:
ent->field_0x6c.HALF.HI |= 0x20;
ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX;
ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY;
break;
case 0x40:
ent->x.HALF.HI = dat->xPos + gRoomControls.roomOriginX;
ent->y.HALF.HI = dat->yPos + gRoomControls.roomOriginY;
if (!StartCutscene(ent, (u16*)dat->spritePtr))
DeleteEntity(ent);
break;
}
}
void sub_0804AF90(void) {
sub_0804AFB0(gArea.field_0x85c[7]);
sub_080A7C7C();
}
void sub_0804AFB0(void** properties) {
u32 i;
gCurrentRoomProperties = properties;
for (i = 0; i < 8; ++i) {
gRoomVars.field_0x6c[i] = gCurrentRoomProperties[i];
}
}
u32 sub_0804AFDC() {
u32 result;
u32 (*func)();
result = 1;
func = (u32(*)())GetCurrentRoomProperty(6);
if (func != NULL)
result = func();
return result;
}
void sub_0804AFF4(void) { void sub_0804AFF4(void) {
void (*func)(); void (*func)();
@ -31,9 +154,6 @@ void sub_0804AFF4(void) {
} }
void LoadRoom(void) { void LoadRoom(void) {
s32 iVar1;
s32* dat;
LoadRoomEntityList(GetCurrentRoomProperty(1)); LoadRoomEntityList(GetCurrentRoomProperty(1));
LoadRoomEntityList(GetCurrentRoomProperty(0)); LoadRoomEntityList(GetCurrentRoomProperty(0));
@ -48,10 +168,10 @@ void sub_0804B058(EntityData* dat) {
Entity* ent; Entity* ent;
u32 uVar2; u32 uVar2;
if ((dat != NULL) && *(u8*)dat != 0xff) { if ((dat != NULL) && dat->kind != 0xff) {
uVar2 = 0; uVar2 = 0;
do { do {
if ((uVar2 < 0x20) && ((dat->kind) == 3)) { if ((uVar2 < 0x20) && ((dat->kind & 0xF) == 3)) {
if (sub_08049D1C(uVar2) != 0) { if (sub_08049D1C(uVar2) != 0) {
ent = LoadRoomEntity(dat); ent = LoadRoomEntity(dat);
if ((ent != NULL) && (ent->kind == 3)) { if ((ent != NULL) && (ent->kind == 3)) {
@ -63,7 +183,7 @@ void sub_0804B058(EntityData* dat) {
} }
uVar2++; uVar2++;
dat++; dat++;
} while (*(u8*)dat != 0xff); } while (dat->kind != 0xff);
} }
} }
@ -72,11 +192,9 @@ void sub_0804B0B0(u32 arg0, u32 arg1) {
} }
void SetCurrentRoomPropertyList(u32 area, u32 room) { void SetCurrentRoomPropertyList(u32 area, u32 room) {
u32** arr; gCurrentRoomProperties = NULL;
gUnk_02017654 = 0; if (gAreaTable[area] != NULL) {
arr = &gAreaTable; gCurrentRoomProperties = gAreaTable[area][room];
if (arr[area] != 0) {
gUnk_02017654 = arr[area][room];
} }
} }
@ -91,17 +209,14 @@ void sub_0804B0E8(u32 arg0, u32 arg1) {
} }
} }
// returns multiple types of data? void* GetRoomProperty(u32 area, u32 room, u32 property) {
void* GetRoomProperty(u32 area, u32 room, u32 arg2) { void** temp;
u32 temp; temp = NULL;
u32** arr; if (gAreaTable[area] != NULL) {
temp = 0; temp = gAreaTable[area][room];
arr = &gAreaTable; if (temp != NULL) {
if (arr[area] != NULL) { temp = temp[property];
temp = arr[area][room];
if (temp != 0) {
temp = *(u32*)(arg2 * 4 + temp);
} }
} }
return (void*)temp; return temp;
} }

View File

@ -1,12 +0,0 @@
#include "global.h"
#include "room.h"
void extern LoadRoomEntity(EntityData*);
void LoadRoomEntityList(EntityData* listPtr) {
if (listPtr != NULL) {
while (*(u8*)listPtr != 0xFF) {
LoadRoomEntity(listPtr++);
}
}
}

View File

@ -85,10 +85,10 @@ u32 Manager28_FindMatchingEntities(Manager28* this) {
EntityData* tmp = GetCurrentRoomProperty(this->manager.unk_0b); EntityData* tmp = GetCurrentRoomProperty(this->manager.unk_0b);
if (!tmp) if (!tmp)
return 0; return 0;
for (; *((u8*)tmp) != 0xFF && !(tmp->kind == 9 && tmp->id == 0x28); tmp++) { for (; *((u8*)tmp) != 0xFF && !((tmp->kind & 0xf) == 9 && tmp->id == 0x28); tmp++) {
Entity* tmp2; Entity* tmp2;
u32 i; u32 i;
if (tmp->kind != 3) if ((tmp->kind & 0xf) != 3)
continue; continue;
tmp2 = Manager28_FindMatchingEntity(tmp); tmp2 = Manager28_FindMatchingEntity(tmp);
if (!tmp2) if (!tmp2)

View File

@ -374,7 +374,7 @@ void sub_0804B78C(void) {
} }
} }
extern u32 gUnk_080D6A74[]; extern u32* gUnk_080D6A74[];
u32 sub_0804B7A8(void) { u32 sub_0804B7A8(void) {
u32 index; u32 index;
@ -386,7 +386,7 @@ u32 sub_0804B7A8(void) {
index = 0; index = 0;
SetLocalFlag(1); SetLocalFlag(1);
} }
gRoomVars.field_0x78 = gUnk_080D6A74[index]; gRoomVars.field_0x6c[3] = gUnk_080D6A74[index];
return 1; return 1;
} }
@ -402,7 +402,7 @@ void sub_0804B7E8(void) {
} }
} }
extern u32 gUnk_080D6B18[]; extern u32* gUnk_080D6B18[];
u32 sub_0804B82C(void) { u32 sub_0804B82C(void) {
u32 index; u32 index;
@ -414,7 +414,7 @@ u32 sub_0804B82C(void) {
index = 0; index = 0;
SetLocalFlag(2); SetLocalFlag(2);
} }
gRoomVars.field_0x78 = gUnk_080D6B18[index]; gRoomVars.field_0x6c[3] = gUnk_080D6B18[index];
return 1; return 1;
} }
@ -428,7 +428,7 @@ void sub_0804B86C(void) {
} }
} }
extern u32 gUnk_080D6BB8[]; extern u32* gUnk_080D6BB8[];
u32 sub_0804B8B0(void) { u32 sub_0804B8B0(void) {
s32 index; s32 index;
@ -440,7 +440,7 @@ u32 sub_0804B8B0(void) {
index = 0; index = 0;
SetLocalFlag(3); SetLocalFlag(3);
} }
gRoomVars.field_0x78 = gUnk_080D6BB8[index]; gRoomVars.field_0x6c[3] = gUnk_080D6BB8[index];
return 1; return 1;
} }
@ -555,8 +555,8 @@ extern u32 gUnk_080D7348;
u32 sub_0804BA9C(void) { u32 sub_0804BA9C(void) {
if (CheckGlobalFlag(ENDING)) { if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080D7348; gRoomVars.field_0x6c[0] = &gUnk_080D7348;
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
} }
return 1; return 1;
} }
@ -587,8 +587,8 @@ extern u32 gUnk_080D7410;
u32 sub_0804BB18(void) { u32 sub_0804BB18(void) {
if (CheckGlobalFlag(ENDING)) { if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080D7410; gRoomVars.field_0x6c[0] = &gUnk_080D7410;
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
} }
return 1; return 1;
} }
@ -1221,7 +1221,7 @@ extern u32 gUnk_080DA230;
u32 sub_0804C3CC(void) { u32 sub_0804C3CC(void) {
if (!CheckLocalFlag(0x39)) if (!CheckLocalFlag(0x39))
gRoomVars.field_0x6c = &gUnk_080DA230; gRoomVars.field_0x6c[0] = &gUnk_080DA230;
return 1; return 1;
} }
@ -1594,7 +1594,7 @@ extern u32 gUnk_080DB910;
u32 sub_0804C730(void) { u32 sub_0804C730(void) {
if (CheckGlobalFlag(MIZUKAKI_START) && !CheckLocalFlag(0x73)) { if (CheckGlobalFlag(MIZUKAKI_START) && !CheckLocalFlag(0x73)) {
gRoomVars.field_0x70 = &gUnk_080DB910; gRoomVars.field_0x6c[1] = &gUnk_080DB910;
} }
return 1; return 1;
} }
@ -2454,7 +2454,7 @@ extern u32 gUnk_080E103C;
u32 sub_0804CE80(void) { u32 sub_0804CE80(void) {
if (CheckGlobalFlag(LV2_CLEAR)) { if (CheckGlobalFlag(LV2_CLEAR)) {
gRoomVars.field_0x70 = &gUnk_080E103C; gRoomVars.field_0x6c[1] = &gUnk_080E103C;
} }
return 1; return 1;
} }
@ -2516,7 +2516,7 @@ void sub_0804CED8(void) {
if (CheckGlobalFlag(LV2_CLEAR)) { if (CheckGlobalFlag(LV2_CLEAR)) {
gUnk_0200B650 = 0; gUnk_0200B650 = 0;
gScreen.lcd.displayControl &= 0xfdff; gScreen.lcd.displayControl &= ~DISPCNT_BG1_ON;
sub_0807AABC(&gPlayerEntity); sub_0807AABC(&gPlayerEntity);
LoadRoomEntityList(&gUnk_080E1814); LoadRoomEntityList(&gUnk_080E1814);
} else { } else {
@ -3769,16 +3769,16 @@ extern u32 gUnk_080EB5D4;
u32 sub_0804D904(void) { u32 sub_0804D904(void) {
if (CheckGlobalFlag(ENDING)) { if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080EB604; gRoomVars.field_0x6c[0] = &gUnk_080EB604;
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
gArea.musicIndex = gArea.pMusicIndex = 0x11; gArea.musicIndex = gArea.pMusicIndex = 0x11;
} else if (CheckLocalFlag(0x79)) { } else if (CheckLocalFlag(0x79)) {
gRoomVars.field_0x6c = NULL; gRoomVars.field_0x6c[0] = NULL;
if (!CheckLocalFlag(0x7a)) { if (!CheckLocalFlag(0x7a)) {
SetGlobalFlag(ZELDA_CHASE); SetGlobalFlag(ZELDA_CHASE);
gRoomVars.field_0x6c = &gUnk_080EB5D4; gRoomVars.field_0x6c[0] = &gUnk_080EB5D4;
gRoomVars.field_0x88 = sub_0804D9B0; gRoomVars.field_0x6c[7] = sub_0804D9B0;
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
} }
} }
return 1; return 1;
@ -3841,8 +3841,8 @@ void nullsub_331() {
u32 sub_0804DA2C(void) { u32 sub_0804DA2C(void) {
if (!CheckLocalFlag(0x77)) { if (!CheckLocalFlag(0x77)) {
gRoomVars.field_0x6c = 0; gRoomVars.field_0x6c[0] = 0;
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
} }
return 1; return 1;
} }
@ -4034,7 +4034,7 @@ void nullsub_348() {
u32 sub_0804DBC0(void) { u32 sub_0804DBC0(void) {
if (CheckLocalFlag(0x79)) { if (CheckLocalFlag(0x79)) {
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
} }
return 1; return 1;
} }
@ -4067,8 +4067,8 @@ extern u32 gUnk_080ED1E4;
u32 sub_0804DC28(void) { u32 sub_0804DC28(void) {
if (CheckGlobalFlag(ENDING)) { if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080ED1E4; gRoomVars.field_0x6c[0] = &gUnk_080ED1E4;
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
} }
return 1; return 1;
} }
@ -4228,8 +4228,8 @@ void nullsub_371() {
u32 sub_0804DD18(void) { u32 sub_0804DD18(void) {
if (CheckLocalFlag(0x79)) { if (CheckLocalFlag(0x79)) {
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
gRoomVars.field_0x6c = 0; gRoomVars.field_0x6c[0] = 0;
} }
return 1; return 1;
} }
@ -4253,7 +4253,7 @@ void nullsub_372() {
u32 sub_0804DD78(void) { u32 sub_0804DD78(void) {
if (CheckLocalFlag(0x79)) { if (CheckLocalFlag(0x79)) {
gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c[2] = 0;
} }
return 1; return 1;
} }
@ -4506,7 +4506,7 @@ u32 sub_0804E25C(void) {
// four sword // four sword
if (GetInventoryValue(0x6)) { if (GetInventoryValue(0x6)) {
gRoomVars.field_0x70 = &gUnk_080F09A0; gRoomVars.field_0x6c[1] = &gUnk_080F09A0;
} }
return 1; return 1;
} }
@ -4989,9 +4989,9 @@ extern u32 gUnk_080F3EA4;
u32 sub_0804E998(void) { u32 sub_0804E998(void) {
if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) { if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) {
gRoomVars.field_0x74 = &gUnk_080F3EA4; gRoomVars.field_0x6c[2] = &gUnk_080F3EA4;
} else { } else {
gRoomVars.field_0x74 = &gUnk_080F3D44; gRoomVars.field_0x6c[2] = &gUnk_080F3D44;
} }
return 1; return 1;
} }
@ -5144,8 +5144,8 @@ extern u32 gUnk_080F4EB0;
u32 sub_0804EBDC(void) { u32 sub_0804EBDC(void) {
if (CheckGlobalFlag(ENDING)) { if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080F4EB0; gRoomVars.field_0x6c[0] = &gUnk_080F4EB0;
gRoomVars.field_0x74 = NULL; gRoomVars.field_0x6c[2] = NULL;
} }
return 1; return 1;
} }
@ -5206,9 +5206,9 @@ extern u32 gUnk_080F5348;
u32 sub_0804ECBC(void) { u32 sub_0804ECBC(void) {
if (CheckGlobalFlag(ENDING)) { if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080F5348; gRoomVars.field_0x6c[0] = &gUnk_080F5348;
gRoomVars.field_0x88 = sub_0804ED18; gRoomVars.field_0x6c[7] = sub_0804ED18;
gRoomVars.field_0x74 = NULL; gRoomVars.field_0x6c[2] = NULL;
} }
return 1; return 1;
} }
@ -5685,7 +5685,7 @@ extern u32 gUnk_080F7680;
u32 sub_0804f308(void) { u32 sub_0804f308(void) {
if (GetInventoryValue(0x11) && !GetInventoryValue(0x12)) { if (GetInventoryValue(0x11) && !GetInventoryValue(0x12)) {
gRoomVars.field_0x74 = &gUnk_080F7680; gRoomVars.field_0x6c[2] = &gUnk_080F7680;
} }
return 1; return 1;
} }
@ -5747,17 +5747,17 @@ extern void sub_0804F4E4();
u32 Vars_HyruleField_OutsideCastle(void) { u32 Vars_HyruleField_OutsideCastle(void) {
if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(0x11)) { if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(0x11)) {
gRoomVars.field_0x6c = &gUnk_080F7CD0; gRoomVars.field_0x6c[0] = &gUnk_080F7CD0;
gRoomVars.field_0x88 = sub_0804F5E8; gRoomVars.field_0x6c[7] = sub_0804F5E8;
} }
#if defined(JP) || defined(EU) || defined(DEMO_JP) #if defined(JP) || defined(EU) || defined(DEMO_JP)
if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8a)) { if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8a)) {
#else #else
if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8c)) { if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8c)) {
#endif #endif
gRoomVars.field_0x6c = &gUnk_080F7C80; gRoomVars.field_0x6c[0] = &gUnk_080F7C80;
gRoomVars.field_0x88 = sub_0804F4E4; gRoomVars.field_0x6c[7] = sub_0804F4E4;
gRoomVars.field_0x74 = NULL; gRoomVars.field_0x6c[2] = NULL;
} }
#ifndef EU #ifndef EU
if (CheckGlobalFlag(TABIDACHI)) { if (CheckGlobalFlag(TABIDACHI)) {
@ -6273,7 +6273,7 @@ extern u32 gUnk_080F9BF8;
u32 sub_0804FC4C(void) { u32 sub_0804FC4C(void) {
if (!CheckKinstoneFused(0xe)) { if (!CheckKinstoneFused(0xe)) {
gRoomVars.field_0x6c = &gUnk_080F9BF8; gRoomVars.field_0x6c[0] = &gUnk_080F9BF8;
} }
return 1; return 1;
} }
@ -6559,8 +6559,8 @@ extern u32 gUnk_080FAD48;
u32 sub_0804FDE0(void) { u32 sub_0804FDE0(void) {
if (CheckGlobalFlag(ENDING)) { if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080FAD48; gRoomVars.field_0x6c[0] = &gUnk_080FAD48;
gRoomVars.field_0x74 = NULL; gRoomVars.field_0x6c[2] = NULL;
} }
return 1; return 1;
} }