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
push {lr}
adds r2, r0, #0
ldr r0, _0804B138 @ =gUnk_02017654
ldr r0, _0804B138 @ =gCurrentRoomProperties
ldr r1, [r0]
cmp r1, #0
bne _0804B13C
movs r0, #0
b _0804B166
.align 2, 0
_0804B138: .4byte gUnk_02017654
_0804B138: .4byte gCurrentRoomProperties
_0804B13C:
cmp r2, #0x7f
bls _0804B150

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -64,7 +64,7 @@ SECTIONS {
. = 0x00011654; gUnk_02011654 = .;
. = 0x00012654; gMetatilesTop = .;
. = 0x00016654; gUnk_02016654 = .;
. = 0x00017654; gUnk_02017654 = .;
. = 0x00017654; gCurrentRoomProperties = .;
. = 0x00017660; gUnk_02017660 = .;
. = 0x000176A0; gPaletteBuffer = .;
. = 0x000176E0; gUnk_020176E0 = .;
@ -477,9 +477,6 @@ SECTIONS {
src/createEnemy.o(.text);
src/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);
asm/code_0804B058.o(.text);
src/room.o(.text);

View File

@ -1,7 +1,9 @@
#include "global.h"
#include "area.h"
#include "room.h"
#include "flags.h"
#include "functions.h"
#include "utils.h"
extern void sub_0804B058(EntityData* dat);
extern void sub_0801AC98();
@ -9,11 +11,132 @@ extern u32 sub_08049D1C(u32);
extern Entity* LoadRoomEntity(EntityData*);
extern void* GetRoomProperty(u32, u32, u32);
extern u32 gUnk_02017654;
extern u32* gAreaTable;
extern void** gCurrentRoomProperties;
extern void*** gAreaTable[];
extern u8 gUnk_081091E4[];
extern void sub_080186EC();
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 (*func)();
@ -31,9 +154,6 @@ void sub_0804AFF4(void) {
}
void LoadRoom(void) {
s32 iVar1;
s32* dat;
LoadRoomEntityList(GetCurrentRoomProperty(1));
LoadRoomEntityList(GetCurrentRoomProperty(0));
@ -48,10 +168,10 @@ void sub_0804B058(EntityData* dat) {
Entity* ent;
u32 uVar2;
if ((dat != NULL) && *(u8*)dat != 0xff) {
if ((dat != NULL) && dat->kind != 0xff) {
uVar2 = 0;
do {
if ((uVar2 < 0x20) && ((dat->kind) == 3)) {
if ((uVar2 < 0x20) && ((dat->kind & 0xF) == 3)) {
if (sub_08049D1C(uVar2) != 0) {
ent = LoadRoomEntity(dat);
if ((ent != NULL) && (ent->kind == 3)) {
@ -63,7 +183,7 @@ void sub_0804B058(EntityData* dat) {
}
uVar2++;
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) {
u32** arr;
gUnk_02017654 = 0;
arr = &gAreaTable;
if (arr[area] != 0) {
gUnk_02017654 = arr[area][room];
gCurrentRoomProperties = NULL;
if (gAreaTable[area] != NULL) {
gCurrentRoomProperties = gAreaTable[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 arg2) {
u32 temp;
u32** arr;
temp = 0;
arr = &gAreaTable;
if (arr[area] != NULL) {
temp = arr[area][room];
if (temp != 0) {
temp = *(u32*)(arg2 * 4 + temp);
void* GetRoomProperty(u32 area, u32 room, u32 property) {
void** temp;
temp = NULL;
if (gAreaTable[area] != NULL) {
temp = gAreaTable[area][room];
if (temp != NULL) {
temp = temp[property];
}
}
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);
if (!tmp)
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;
u32 i;
if (tmp->kind != 3)
if ((tmp->kind & 0xf) != 3)
continue;
tmp2 = Manager28_FindMatchingEntity(tmp);
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 index;
@ -386,7 +386,7 @@ u32 sub_0804B7A8(void) {
index = 0;
SetLocalFlag(1);
}
gRoomVars.field_0x78 = gUnk_080D6A74[index];
gRoomVars.field_0x6c[3] = gUnk_080D6A74[index];
return 1;
}
@ -402,7 +402,7 @@ void sub_0804B7E8(void) {
}
}
extern u32 gUnk_080D6B18[];
extern u32* gUnk_080D6B18[];
u32 sub_0804B82C(void) {
u32 index;
@ -414,7 +414,7 @@ u32 sub_0804B82C(void) {
index = 0;
SetLocalFlag(2);
}
gRoomVars.field_0x78 = gUnk_080D6B18[index];
gRoomVars.field_0x6c[3] = gUnk_080D6B18[index];
return 1;
}
@ -428,7 +428,7 @@ void sub_0804B86C(void) {
}
}
extern u32 gUnk_080D6BB8[];
extern u32* gUnk_080D6BB8[];
u32 sub_0804B8B0(void) {
s32 index;
@ -440,7 +440,7 @@ u32 sub_0804B8B0(void) {
index = 0;
SetLocalFlag(3);
}
gRoomVars.field_0x78 = gUnk_080D6BB8[index];
gRoomVars.field_0x6c[3] = gUnk_080D6BB8[index];
return 1;
}
@ -555,8 +555,8 @@ extern u32 gUnk_080D7348;
u32 sub_0804BA9C(void) {
if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080D7348;
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c[0] = &gUnk_080D7348;
gRoomVars.field_0x6c[2] = 0;
}
return 1;
}
@ -587,8 +587,8 @@ extern u32 gUnk_080D7410;
u32 sub_0804BB18(void) {
if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080D7410;
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c[0] = &gUnk_080D7410;
gRoomVars.field_0x6c[2] = 0;
}
return 1;
}
@ -1221,7 +1221,7 @@ extern u32 gUnk_080DA230;
u32 sub_0804C3CC(void) {
if (!CheckLocalFlag(0x39))
gRoomVars.field_0x6c = &gUnk_080DA230;
gRoomVars.field_0x6c[0] = &gUnk_080DA230;
return 1;
}
@ -1594,7 +1594,7 @@ extern u32 gUnk_080DB910;
u32 sub_0804C730(void) {
if (CheckGlobalFlag(MIZUKAKI_START) && !CheckLocalFlag(0x73)) {
gRoomVars.field_0x70 = &gUnk_080DB910;
gRoomVars.field_0x6c[1] = &gUnk_080DB910;
}
return 1;
}
@ -2454,7 +2454,7 @@ extern u32 gUnk_080E103C;
u32 sub_0804CE80(void) {
if (CheckGlobalFlag(LV2_CLEAR)) {
gRoomVars.field_0x70 = &gUnk_080E103C;
gRoomVars.field_0x6c[1] = &gUnk_080E103C;
}
return 1;
}
@ -2516,7 +2516,7 @@ void sub_0804CED8(void) {
if (CheckGlobalFlag(LV2_CLEAR)) {
gUnk_0200B650 = 0;
gScreen.lcd.displayControl &= 0xfdff;
gScreen.lcd.displayControl &= ~DISPCNT_BG1_ON;
sub_0807AABC(&gPlayerEntity);
LoadRoomEntityList(&gUnk_080E1814);
} else {
@ -3769,16 +3769,16 @@ extern u32 gUnk_080EB5D4;
u32 sub_0804D904(void) {
if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080EB604;
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c[0] = &gUnk_080EB604;
gRoomVars.field_0x6c[2] = 0;
gArea.musicIndex = gArea.pMusicIndex = 0x11;
} else if (CheckLocalFlag(0x79)) {
gRoomVars.field_0x6c = NULL;
gRoomVars.field_0x6c[0] = NULL;
if (!CheckLocalFlag(0x7a)) {
SetGlobalFlag(ZELDA_CHASE);
gRoomVars.field_0x6c = &gUnk_080EB5D4;
gRoomVars.field_0x88 = sub_0804D9B0;
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c[0] = &gUnk_080EB5D4;
gRoomVars.field_0x6c[7] = sub_0804D9B0;
gRoomVars.field_0x6c[2] = 0;
}
}
return 1;
@ -3841,8 +3841,8 @@ void nullsub_331() {
u32 sub_0804DA2C(void) {
if (!CheckLocalFlag(0x77)) {
gRoomVars.field_0x6c = 0;
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c[0] = 0;
gRoomVars.field_0x6c[2] = 0;
}
return 1;
}
@ -4034,7 +4034,7 @@ void nullsub_348() {
u32 sub_0804DBC0(void) {
if (CheckLocalFlag(0x79)) {
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c[2] = 0;
}
return 1;
}
@ -4067,8 +4067,8 @@ extern u32 gUnk_080ED1E4;
u32 sub_0804DC28(void) {
if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080ED1E4;
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c[0] = &gUnk_080ED1E4;
gRoomVars.field_0x6c[2] = 0;
}
return 1;
}
@ -4228,8 +4228,8 @@ void nullsub_371() {
u32 sub_0804DD18(void) {
if (CheckLocalFlag(0x79)) {
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c = 0;
gRoomVars.field_0x6c[2] = 0;
gRoomVars.field_0x6c[0] = 0;
}
return 1;
}
@ -4253,7 +4253,7 @@ void nullsub_372() {
u32 sub_0804DD78(void) {
if (CheckLocalFlag(0x79)) {
gRoomVars.field_0x74 = 0;
gRoomVars.field_0x6c[2] = 0;
}
return 1;
}
@ -4506,7 +4506,7 @@ u32 sub_0804E25C(void) {
// four sword
if (GetInventoryValue(0x6)) {
gRoomVars.field_0x70 = &gUnk_080F09A0;
gRoomVars.field_0x6c[1] = &gUnk_080F09A0;
}
return 1;
}
@ -4989,9 +4989,9 @@ extern u32 gUnk_080F3EA4;
u32 sub_0804E998(void) {
if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) {
gRoomVars.field_0x74 = &gUnk_080F3EA4;
gRoomVars.field_0x6c[2] = &gUnk_080F3EA4;
} else {
gRoomVars.field_0x74 = &gUnk_080F3D44;
gRoomVars.field_0x6c[2] = &gUnk_080F3D44;
}
return 1;
}
@ -5144,8 +5144,8 @@ extern u32 gUnk_080F4EB0;
u32 sub_0804EBDC(void) {
if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080F4EB0;
gRoomVars.field_0x74 = NULL;
gRoomVars.field_0x6c[0] = &gUnk_080F4EB0;
gRoomVars.field_0x6c[2] = NULL;
}
return 1;
}
@ -5206,9 +5206,9 @@ extern u32 gUnk_080F5348;
u32 sub_0804ECBC(void) {
if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080F5348;
gRoomVars.field_0x88 = sub_0804ED18;
gRoomVars.field_0x74 = NULL;
gRoomVars.field_0x6c[0] = &gUnk_080F5348;
gRoomVars.field_0x6c[7] = sub_0804ED18;
gRoomVars.field_0x6c[2] = NULL;
}
return 1;
}
@ -5685,7 +5685,7 @@ extern u32 gUnk_080F7680;
u32 sub_0804f308(void) {
if (GetInventoryValue(0x11) && !GetInventoryValue(0x12)) {
gRoomVars.field_0x74 = &gUnk_080F7680;
gRoomVars.field_0x6c[2] = &gUnk_080F7680;
}
return 1;
}
@ -5747,17 +5747,17 @@ extern void sub_0804F4E4();
u32 Vars_HyruleField_OutsideCastle(void) {
if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(0x11)) {
gRoomVars.field_0x6c = &gUnk_080F7CD0;
gRoomVars.field_0x88 = sub_0804F5E8;
gRoomVars.field_0x6c[0] = &gUnk_080F7CD0;
gRoomVars.field_0x6c[7] = sub_0804F5E8;
}
#if defined(JP) || defined(EU) || defined(DEMO_JP)
if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8a)) {
#else
if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8c)) {
#endif
gRoomVars.field_0x6c = &gUnk_080F7C80;
gRoomVars.field_0x88 = sub_0804F4E4;
gRoomVars.field_0x74 = NULL;
gRoomVars.field_0x6c[0] = &gUnk_080F7C80;
gRoomVars.field_0x6c[7] = sub_0804F4E4;
gRoomVars.field_0x6c[2] = NULL;
}
#ifndef EU
if (CheckGlobalFlag(TABIDACHI)) {
@ -6273,7 +6273,7 @@ extern u32 gUnk_080F9BF8;
u32 sub_0804FC4C(void) {
if (!CheckKinstoneFused(0xe)) {
gRoomVars.field_0x6c = &gUnk_080F9BF8;
gRoomVars.field_0x6c[0] = &gUnk_080F9BF8;
}
return 1;
}
@ -6559,8 +6559,8 @@ extern u32 gUnk_080FAD48;
u32 sub_0804FDE0(void) {
if (CheckGlobalFlag(ENDING)) {
gRoomVars.field_0x6c = &gUnk_080FAD48;
gRoomVars.field_0x74 = NULL;
gRoomVars.field_0x6c[0] = &gUnk_080FAD48;
gRoomVars.field_0x6c[2] = NULL;
}
return 1;
}