#include "global.h" #include "audio.h" #include "entity.h" #include "area.h" #include "room.h" #include "flags.h" #include "npc.h" #include "player.h" #include "screen.h" #include "main.h" #include "structures.h" #include "save.h" #include "script.h" #include "random.h" #include "functions.h" void sub_0804B3C4(void* arg0) { sub_0804B29C(arg0); } u32 sub_0804B3CC(u32 arg0) { return 1; } void sub_0804B3D0() { sub_08030118(0); } u32 sub_0804B3DC() { return 1; } void sub_0804B3E0() { sub_08030118(1); } u32 sub_0804B3EC() { return 1; } void sub_0804B3F0() { sub_08030118(2); } u32 sub_0804B3FC() { return 1; } void sub_0804B400() { sub_08030118(3); } u32 sub_0804B40C() { return 1; } void sub_0804B410() { sub_08030118(4); } u32 sub_0804B41C() { return 1; } void sub_0804B420() { sub_08030118(5); } u32 sub_0804B42C() { return 1; } void sub_0804B430() { sub_08030118(6); } u32 sub_0804B43C() { return 1; } void sub_0804B440() { sub_08030118(7); } u32 sub_0804B44C() { return 1; } void sub_0804B450() { sub_08030118(8); } u32 sub_0804B45C() { return 1; } void sub_0804B460() { Area* a; sub_08030118(9); a = &gArea; *((u8*)&a->localFlagOffset - 1) = 3; a->areaMetadata = 0x4e; } u32 sub_0804B478() { return 1; } void sub_0804B47C() { Area* a; sub_08030118(10); a = &gArea; *((u8*)&a->localFlagOffset - 1) = 3; a->areaMetadata = 0x4e; } u32 sub_0804B494() { return 1; } void sub_0804B498() { sub_080575C8(35); sub_08057688(); } u32 sub_0804B4A8() { return 1; } void sub_0804B4AC() { sub_080575C8(35); } void sub_0804B4B8() { sub_080575C8(35); } u32 sub_0804B4C4() { return 1; } void sub_0804B4C8() { sub_080580B0(34); } void sub_0804B4D4() { sub_080580B0(34); } u32 sub_0804B4E0() { return 1; } void sub_0804B4E4(void) { sub_080580B0(0x22); // white sword if (GetInventoryValue(0x2)) SetGlobalFlag(WHITE_SWORD_END); } void sub_0804B500() { sub_080580B0(34); } u32 sub_0804B50C() { return 1; } void sub_0804B510() { sub_080575C8(30); } void sub_0804B51C() { sub_080575C8(30); } u32 sub_0804B528() { return 1; } void sub_0804B52C() { sub_080575C8(33); } void sub_0804B538() { sub_080575C8(33); } u32 sub_0804B544() { return 1; } void sub_0804B548() { sub_080575C8(31); } void sub_0804B554() { sub_080575C8(31); } u32 sub_0804B560() { return 1; } void sub_0804B564() { sub_080575C8(32); } void sub_0804B570() { sub_080575C8(32); } u32 sub_0804B57C() { return 1; } extern EntityData gUnk_080D6138; void sub_0804B580(void) { sub_080575C8(0x20); if (gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY > 0x40) LoadRoomEntityList(&gUnk_080D6138); } void sub_0804B5AC() { sub_080575C8(32); } u32 sub_0804B5B8() { return 1; } extern EntityData gUnk_080D6210; void sub_0804B5BC(void) { if ((u16)gScreenTransition.playerStartPos.HALF.y > 0x40) LoadRoomEntityList(&gUnk_080D6210); } u32 sub_0804B5D8() { return 1; } extern EntityData gUnk_080D6340; extern EntityData gUnk_080D6360; extern EntityData gUnk_080D6380; extern EntityData gUnk_080D63A0; extern EntityData gUnk_080D63C0; extern EntityData gUnk_080D63E0; extern EntityData gUnk_080D6400; extern EntityData gUnk_080D6420; extern EntityData gUnk_080D6440; extern u16 gUnk_080D64F8; extern u16 gUnk_080D6508; void sub_0804B5DC(void) { u16 itemID; s32 i; u16* itemArr; u16* flagArr; s32 j; if (CheckKinstoneFused(0x2c)) { LoadRoomEntityList(&gUnk_080D6340); } j = 0; itemArr = &gUnk_080D64F8; for (i = 7; i >= 0; i--) { itemID = *itemArr; itemArr++; if (GetInventoryValue(itemID)) { j++; } } if (CheckLocalFlag(0x8b)) { flagArr = &gUnk_080D6508; i = 0; while (i < j) { if (CheckLocalFlag(*flagArr) == 0) { SetLocalFlag(*flagArr); ClearLocalFlag(0x8b); SetLocalFlag(0x8c); break; } i++; flagArr++; } } if (CheckLocalFlag(0x1f)) LoadRoomEntityList(&gUnk_080D6360); if (CheckLocalFlag(0x20)) LoadRoomEntityList(&gUnk_080D6380); if (CheckLocalFlag(0x21)) LoadRoomEntityList(&gUnk_080D63A0); if (CheckLocalFlag(0x22)) LoadRoomEntityList(&gUnk_080D63C0); if (CheckLocalFlag(0x23)) LoadRoomEntityList(&gUnk_080D63E0); if (CheckLocalFlag(0x24)) LoadRoomEntityList(&gUnk_080D6400); if (CheckLocalFlag(0x25)) LoadRoomEntityList(&gUnk_080D6420); if (CheckLocalFlag(0x26)) LoadRoomEntityList(&gUnk_080D6440); } u32 sub_0804B6EC() { return 1; } extern EntityData gUnk_080D6578; extern EntityData gUnk_080D6638; extern EntityData gUnk_080D6558; extern EntityData gUnk_080D6618; void sub_0804B6F0(void) { // flippers if (GetInventoryValue(0x46) == 0) { LoadRoomEntityList(&gUnk_080D6578); if (CheckLocalFlag(0x73) == 0) { LoadRoomEntityList(&gUnk_080D6638); return; } } else { LoadRoomEntityList(&gUnk_080D6558); } LoadRoomEntityList(&gUnk_080D6618); } u32 sub_0804B734() { return 1; } extern EntityData gUnk_080D6714; extern EntityData gUnk_080D6734; extern EntityData gUnk_080D66F4; void sub_0804B738(void) { if (gSave.unk8 > 4) { LoadRoomEntityList(&gUnk_080D6714); } // flippers if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START) && CheckLocalFlag(0x6a)) { LoadRoomEntityList(&gUnk_080D6734); } else { LoadRoomEntityList(&gUnk_080D66F4); } } u32 sub_0804B788() { return 1; } extern EntityData gUnk_080D6924; void sub_0804B78C(void) { if (gSave.unk8 > 7) { LoadRoomEntityList(&gUnk_080D6924); } } extern u32 gUnk_080D6A74[]; u32 sub_0804B7A8(void) { u32 index; if (CheckLocalFlag(0x91) != 0) { index = (s32)Random() % 3; ClearLocalFlag(1); } else { index = 0; SetLocalFlag(1); } gRoomVars.field_0x78 = gUnk_080D6A74[index]; return 1; } extern void* script_08010A5C[]; void sub_0804B7E8(void) { if (CheckLocalFlag(0x91)) { ClearLocalFlag(0x91); DoFade(5, 0x100); gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; sub_080751E8(1, 2, &script_08010A5C); } } extern u32 gUnk_080D6B18[]; u32 sub_0804B82C(void) { u32 index; if (CheckLocalFlag(0x91) != 0) { index = Random() & 1; ClearLocalFlag(2); } else { index = 0; SetLocalFlag(2); } gRoomVars.field_0x78 = gUnk_080D6B18[index]; return 1; } void sub_0804B86C(void) { if (CheckLocalFlag(0x91) != 0) { ClearLocalFlag(0x91); DoFade(5, 0x100); gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; sub_080751E8(1, 2, &script_08010A5C); } } extern u32 gUnk_080D6BB8[]; u32 sub_0804B8B0(void) { s32 index; if (CheckLocalFlag(0x91) != 0) { index = (s32)Random() % 3; ClearLocalFlag(3); } else { index = 0; SetLocalFlag(3); } gRoomVars.field_0x78 = gUnk_080D6BB8[index]; return 1; } void sub_0804B8F0(void) { if (CheckLocalFlag(0x91)) { ClearLocalFlag(0x91); DoFade(5, 0x100); gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x60; gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; sub_080751E8(1, 2, &script_08010A5C); } } u32 sub_0804B934() { return 1; } extern EntityData UpperInn_Oracles; extern EntityData UpperInn_NoFarore; extern EntityData UpperInn_NoNayru; extern EntityData UpperInn_NoDin; extern EntityData UpperInn_Farore; extern EntityData UpperInn_Nayru; extern EntityData UpperInn_Din; void sub_0804B938(void) { int iVar1; if (gSave.unk8 < 4) return; if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { if (!CheckGlobalFlag(NEW_HOUSE_NAYRU)) if (!CheckGlobalFlag(NEW_HOUSE_FARORE)) LoadRoomEntityList(&UpperInn_NoDin); else LoadRoomEntityList(&UpperInn_Nayru); else LoadRoomEntityList(&UpperInn_Farore); } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { if (CheckGlobalFlag(NEW_HOUSE_DIN)) LoadRoomEntityList(&UpperInn_Farore); else if (!CheckGlobalFlag(NEW_HOUSE_FARORE)) LoadRoomEntityList(&UpperInn_NoNayru); else LoadRoomEntityList(&UpperInn_Din); } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { if (CheckGlobalFlag(NEW_HOUSE_DIN)) LoadRoomEntityList(&UpperInn_Nayru); else if (CheckGlobalFlag(NEW_HOUSE_NAYRU)) LoadRoomEntityList(&UpperInn_Din); else LoadRoomEntityList(&UpperInn_NoFarore); } else LoadRoomEntityList(&UpperInn_Oracles); } u32 sub_0804B9F8() { return 1; } void nullsub_176() { } u32 sub_0804BA00() { return 1; } void nullsub_177() { } u32 sub_0804BA08() { return 1; } extern EntityData gUnk_080D7038; void sub_0804BA0C(void) { if (gSave.unk8 < 8) { LoadRoomEntityList(&gUnk_080D7038); } if (gRoomVars.filler[0] == 0) { sub_08052CA4(2, 0, 0x2c8, 0xa8); } } u32 sub_0804BA40() { return 1; } extern EntityData gUnk_080D7140; extern EntityData gUnk_080D7170; extern EntityData gUnk_080D71A0; extern EntityData gUnk_080D71D0; extern EntityData gUnk_080D71F0; void sub_0804BA44(void) { if (gSave.unk8 == 6) LoadRoomEntityList(&gUnk_080D7140); if (gSave.unk8 == 7) LoadRoomEntityList(&gUnk_080D7170); if ((gSave.unk8 < 8) || (LoadRoomEntityList(&gUnk_080D71A0), gSave.unk8 < 8)) LoadRoomEntityList(&gUnk_080D71D0); else LoadRoomEntityList(&gUnk_080D71F0); } extern u32 gUnk_080D7348; u32 sub_0804BA9C(void) { if (CheckGlobalFlag(ENDING)) { gRoomVars.field_0x6c = &gUnk_080D7348; gRoomVars.field_0x74 = 0; } return 1; } extern EntityData gUnk_080D7328; void sub_0804BAC0(void) { if (!CheckGlobalFlag(LV2_CLEAR)) { LoadRoomEntityList(&gUnk_080D7328); } if (CheckGlobalFlag(CASTLE_BGM)) { gArea.pMusicIndex = 0x1b; } else if (CheckGlobalFlag(ENDING)) { gArea.pMusicIndex = gArea.musicIndex; } } extern u32 gUnk_080D7410; u32 sub_0804BB18(void) { if (CheckGlobalFlag(ENDING)) { gRoomVars.field_0x6c = &gUnk_080D7410; gRoomVars.field_0x74 = 0; } return 1; } extern EntityData gUnk_080D73B0; extern EntityData gUnk_080D73E0; void sub_0804BB3C(void) { if (!CheckGlobalFlag(ENDING)) { if (!CheckGlobalFlag(LV2_CLEAR)) { LoadRoomEntityList(&gUnk_080D73B0); } if (!CheckGlobalFlag(LV1_CLEAR) && CheckGlobalFlag(TABIDACHI)) { LoadRoomEntityList(&gUnk_080D73E0); } if (CheckGlobalFlag(CASTLE_BGM)) { gArea.pMusicIndex = gArea.musicIndex; } } else { gArea.pMusicIndex = gArea.musicIndex; } } u32 sub_0804BB9C() { return 1; } extern EntityData gUnk_080D74C8; extern EntityData gUnk_080D7588; extern EntityData gUnk_080D75D8; extern EntityData gUnk_080D7618; void sub_0804BBA0(void) { if (CheckGlobalFlag(CASTLE_BGM)) { gArea.pMusicIndex = gArea.musicIndex; } if (CheckGlobalFlag(ENDING)) { LoadRoomEntityList(&gUnk_080D7618); gArea.pMusicIndex = gArea.musicIndex; } else if (CheckGlobalFlag(TABIDACHI) == 0) { LoadRoomEntityList(&gUnk_080D74C8); gArea.pMusicIndex = 0x1b; } else if (CheckGlobalFlag(LV1_CLEAR) == 0) { LoadRoomEntityList(&gUnk_080D7588); } else { LoadRoomEntityList(&gUnk_080D75D8); } } u32 sub_0804BC34() { return 1; } extern EntityData gUnk_080D7690; void sub_0804bc38(void) { if (CheckLocalFlag(0x9c)) { LoadRoomEntityList(&gUnk_080D7690); } } u32 sub_0804BC50(void) { if (!CheckLocalFlag(0x9f)) { gScreenTransition.field_0xf = 5; ClearGlobalFlag(ZELDA_CHASE); } return 1; } extern u32 script_08009E88; void sub_0804BC70(void) { if (!CheckLocalFlag(0x9f)) { DoFade(5, 0x100); gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0xb0; gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x40; sub_080751E8(0, 6, &script_08009E88); } if (!CheckGlobalFlag(TABIDACHI)) { sub_08052878(); } else { if (CheckGlobalFlag(CASTLE_BGM)) { gArea.pMusicIndex = 0x1b; } } } extern ScreenTransitionData gUnk_0813AB80; void sub_0804BCDC() { sub_0808091C(&gUnk_0813AB80, 4); } u32 sub_0804BCEC() { return 1; } void nullsub_178() { } u32 sub_0804BCF4() { return 1; } void nullsub_179() { } u32 sub_0804BCFC() { return 1; } void nullsub_180() { } u32 sub_0804BD04() { return 1; } void nullsub_181() { } u32 sub_0804BD0C() { return 1; } void nullsub_182() { } u32 sub_0804BD14() { return 1; } void nullsub_183() { } u32 sub_0804BD1C() { return 1; } void nullsub_184() { } u32 sub_0804BD24() { return 1; } void nullsub_185() { } u32 sub_0804BD2C() { return 1; } void nullsub_186() { } u32 sub_0804BD34() { return 1; } void nullsub_187() { } u32 sub_0804BD3C() { return 1; } void nullsub_188() { } u32 sub_0804BD44() { return 1; } void nullsub_189() { } u32 sub_0804BD4C() { return 1; } extern EntityData gUnk_080D7D34; void sub_0804BD50(void) { // four sword if (GetInventoryValue(0x6)) { SetTile(0x4072, 0x14d, 1); SetTile(0x4072, 0x10c, 1); SetTile(0x4090, 0x14c, 1); SetTile(0x4090, 0x18c, 1); LoadRoomEntityList(&gUnk_080D7D34); } } u32 sub_0804BDA4() { return 1; } void nullsub_190() { } u32 sub_0804BDAC() { return 1; } void nullsub_191() { } u32 sub_0804BDB4() { return 1; } void nullsub_192() { } u32 sub_0804BDBC() { return 1; } void nullsub_193() { } u32 sub_0804BDC4() { return 1; } void nullsub_194() { } u32 sub_0804BDCC() { return 1; } extern EntityData gUnk_080D827C; void sub_0804BDD0(void) { if (!CheckLocalFlag(3)) { LoadRoomEntityList(&gUnk_080D827C); } else { sub_0805BC4C(); SetTileType(0x76, 0x82, 2); SetTileType(0x76, 0x8c, 2); } } u32 sub_0804BE04() { return 1; } void nullsub_28() { } u32 sub_0804BE0C() { return 1; } void nullsub_29() { } u32 sub_0804BE14() { return 1; } void nullsub_30() { } u32 sub_0804BE1C() { return 1; } void nullsub_31() { } u32 sub_0804BE24() { return 1; } void nullsub_32() { } u32 sub_0804BE2C() { return 1; } void nullsub_33() { } u32 sub_0804BE34() { return 1; } void nullsub_34() { } u32 sub_0804BE3C() { return 1; } void nullsub_35() { } u32 sub_0804BE44() { return 1; } void nullsub_36() { } u32 sub_0804BE4C() { return 1; } extern EntityData gUnk_080D8B24; extern EntityData gUnk_080D8AC4; extern EntityData gUnk_080D8A74; extern EntityData gUnk_080D8A34; extern EntityData gUnk_080D8A04; extern EntityData gUnk_080D89E4; extern u32 gUnk_080D8BBC; extern u32 gUnk_080D8BFA; extern u32 gUnk_080D8C68; void sub_0804BE50(void) { if (!CheckLocalFlag(0x68)) SetLocalFlag(0x68); if (CheckKinstoneFused(0x2f)) LoadRoomEntityList(&gUnk_080D8B24); else if (CheckKinstoneFused(0x2b)) LoadRoomEntityList(&gUnk_080D8AC4); else if (CheckKinstoneFused(0x26)) LoadRoomEntityList(&gUnk_080D8A74); else if (CheckKinstoneFused(0x2a)) LoadRoomEntityList(&gUnk_080D8A34); else if (CheckKinstoneFused(0x25)) LoadRoomEntityList(&gUnk_080D8A04); else LoadRoomEntityList(&gUnk_080D89E4); if (CheckKinstoneFused(0x25)) sub_0807BB68(&gUnk_080D8BBC, 0x7c5, 1); if (CheckKinstoneFused(0x26)) sub_0807BB68(&gUnk_080D8BFA, 0x503, 1); if (CheckKinstoneFused(0x2f)) sub_0807BB68(&gUnk_080D8C68, 0x281, 1); } #if 0 typedef struct { u32 a; u16 x, y; u16 entCnt; u16 shakeTime, shakeMag, sfx; } struct_080D8E54; typedef struct { u32 field_0x0; u32 field_0x4; } struct_0804BF38; extern struct_080D8E54 gUnk_080D8E50[]; void sub_0804BF38(u32 arg0, struct_0804BF38* arg1) { u32 numEnts; u32 iVar2; u32 iVar3; Entity *fx; u32 entCnt; u32 xOff; iVar2 = arg1->field_0x4; iVar3 = iVar2 * 0x10; sub_0807BB68(gUnk_080D8E50[iVar2].a, ((gUnk_080D8E50[iVar3].x >> 4) & 0x3f | (gUnk_080D8E50[iVar3].y >> 4) & 0x3f) << 6, 1); numEnts = gUnk_080D8E50[iVar3].entCnt; entCnt = 0; if (numEnts != 0) { for (xOff = 0; entCnt < numEnts; xOff += 0x10, entCnt++) { fx = CreateObject(SPECIAL_FX, 0xf, 0); if (fx != NULL) { fx->x.HALF.HI = gUnk_080D8E50[iVar3].x + gRoomControls.roomOriginX + xOff; fx->y.HALF.HI = gUnk_080D8E50[iVar3].y + gRoomControls.roomOriginY + (entCnt & 1) * 8; } fx = CreateObject(SPECIAL_FX, 0x54, 0); if (fx != NULL) { fx->x.HALF.HI = gUnk_080D8E50[iVar3].x + gRoomControls.roomOriginX + xOff; fx->y.HALF.HI = gUnk_080D8E50[iVar3].y + gRoomControls.roomOriginY + -0xc + (entCnt & 1) * 8; fx->direction = 0; fx->speed = 0x100; } } } sub_08080964(gUnk_080D8E50[iVar3].shakeTime, gUnk_080D8E50[iVar3].shakeMag); SoundReq(gUnk_080D8E50[iVar2].sfx); } #else ASM_FUNC("asm/non_matching/sub_0804BF38.inc", void sub_0804BF38(Entity* this, ScriptExecutionContext* context)) #endif u32 sub_0804C00C() { return 1; } void nullsub_195() { } u32 sub_0804C014() { return 1; } extern EntityData gUnk_080D90C8; extern EntityData gUnk_080D9108; extern EntityData gUnk_080D9098; void sub_0804C018(void) { if (!CheckGlobalFlag(HAKA_KEY_LOST)) { // graveyard key if (GetInventoryValue(0x3c) == 1) { LoadRoomEntityList(&gUnk_080D90C8); LoadRoomEntityList(&gUnk_080D9108); } } else if (!CheckGlobalFlag(HAKA_KEY_FOUND)) LoadRoomEntityList(&gUnk_080D9108); if (GetInventoryValue(0x3c) != 2) { LoadRoomEntityList(&gUnk_080D9098); SetTileType(0x17a, 0x58e, 1); SetTileType(0x17b, 0x58f, 1); SetTileType(0x17c, 0x5ce, 1); SetTileType(0x17d, 0x5cf, 1); } sub_08054570(); sub_08059278(); SetTile(0x4072, 0xa47, 1); SetTile(0x4072, 0xc47, 1); if (CheckGlobalFlag(MAZE_CLEAR)) if (gScreenTransition.playerStartPos.WORD == 0x2780078) // todo: wtf SoundReq(SFX_SECRET); ClearGlobalFlag(MAZE_CLEAR); } u32 sub_0804C104() { return 1; } void sub_0804C108(void) { gArea.areaMetadata |= 0x40; sub_0804C128(gArea.filler[7] |= 1); } ASM_FUNC("asm/non_matching/sub_0804C128.inc", void sub_0804C128(u32 arg0)) ASM_FUNC("asm/non_matching/sub_0804C258.inc", void sub_0804C258(void)) ASM_FUNC("asm/non_matching/sub_0804C290.inc", void sub_0804C290(void)) u32 sub_0804C2BC() { return 1; } void nullsub_196() { } u32 sub_0804C2C4() { return 1; } void nullsub_197() { } u32 sub_0804C2CC() { return 1; } void sub_0804C2D0() { sub_08058324(0); } u32 sub_0804C2DC() { return 1; } void sub_0804C2E0() { sub_08058324(1); } u32 sub_0804C2EC() { return 1; } extern EntityData gUnk_080D9800; void sub_0804C2F0(void) { sub_08058324(2); if (CheckGlobalFlag(MIZUKAKI_START) && !CheckGlobalFlag(MIZUKAKI_HARIFALL)) LoadRoomEntityList(&gUnk_080D9800); } void sub_0804C318() { sub_0804C2F0(); } u32 sub_0804C320() { return 1; } void sub_0804C324() { sub_08058324(3); } u32 sub_0804C330() { return 1; } extern EntityData gUnk_080D9CC8; extern EntityData gUnk_080D9CE8; extern EntityData gUnk_080D9C38; void sub_0804C334(void) { SetGlobalFlag(DASHBOOTS); if (CheckKinstoneFused(0x5b)) LoadRoomEntityList(&gUnk_080D9CC8); if ((gSave.windcrests & 0x20000000) == 0) LoadRoomEntityList(&gUnk_080D9CE8); // pegasus boots if (!GetInventoryValue(0x15)) LoadRoomEntityList(&gUnk_080D9C38); } void sub_0804C384(void) { if ((gSave.windcrests & 0x20000000) == 0) LoadRoomEntityList(&gUnk_080D9CE8); } u32 sub_0804C3A4() { return 1; } void nullsub_198() { } u32 sub_0804C3AC() { return 1; } void nullsub_199() { } u32 sub_0804C3B4() { return 1; } void nullsub_200() { } u32 sub_0804C3BC() { return 1; } void nullsub_201() { } u32 sub_0804C3C4() { return 1; } void nullsub_202() { } extern u32 gUnk_080DA230; u32 sub_0804C3CC(void) { if (!CheckLocalFlag(0x39)) gRoomVars.field_0x6c = &gUnk_080DA230; return 1; } void nullsub_203() { } u32 sub_0804C3F0() { return 1; } void nullsub_204() { } u32 sub_0804C3F8() { return 1; } void nullsub_205() { } u32 sub_0804C400() { return 1; } void nullsub_206() { } u32 sub_0804C408() { return 1; } void nullsub_207() { } u32 sub_0804C410() { return 1; } void nullsub_208() { } u32 sub_0804C418() { return 1; } void nullsub_209() { } u32 sub_0804C420() { return 1; } void sub_0804C424() { sub_0801AFE4(); } u32 sub_0804C42C() { return 1; } void sub_0804C430() { sub_0801AFE4(); } u32 sub_0804C438() { return 1; } void sub_0804C43C() { sub_0801AFE4(); } u32 sub_0804C444() { return 1; } void sub_0804C448() { sub_0801AFE4(); } u32 sub_0804C450() { return 1; } void sub_0804C454() { sub_0801AFE4(); } u32 sub_0804C45C() { return 1; } void sub_0804C460() { sub_0801AFE4(); } u32 sub_0804C468() { return 1; } void sub_0804C46C() { sub_0801AFE4(); } u32 sub_0804C474() { return 1; } void sub_0804C478() { sub_0801AFE4(); } u32 sub_0804C480() { return 1; } void sub_0804C484() { sub_0801AFE4(); } u32 sub_0804C48C() { return 1; } extern EntityData gUnk_080DAB44; extern EntityData gUnk_080DAB64; extern EntityData gUnk_080DAB84; extern EntityData gUnk_080DAC54; extern EntityData gUnk_080DAD24; extern EntityData gUnk_080DABC4; extern EntityData gUnk_080DAC94; extern EntityData gUnk_080DAD64; extern EntityData gUnk_080DAC04; extern EntityData gUnk_080DACD4; extern EntityData gUnk_080DADA4; void sub_0804C490(void) { u32 uVar1; // jabber nut if (!GetInventoryValue(0x5b)) LoadRoomEntityList(&gUnk_080DAB44); else LoadRoomEntityList(&gUnk_080DAB64); if (!CheckGlobalFlag(DRUG_COUNT)) goto a; if (sub_08060354()) { SetRoomFlag(0); if (!CheckGlobalFlag(DRUG_1)) uVar1 = 0x3200; else if (!CheckGlobalFlag(DRUG_2)) uVar1 = 0x4600; else uVar1 = 0x4880; } else { a: if (CheckGlobalFlag(DRUG_3)) uVar1 = 0x4900; else if (CheckGlobalFlag(DRUG_2)) uVar1 = 0x4a00; else if (CheckGlobalFlag(DRUG_1)) uVar1 = 0x5200; else uVar1 = 0x9200; } if (uVar1 & 0x8000) LoadRoomEntityList(&gUnk_080DAB84); if (uVar1 & 0x4000) LoadRoomEntityList(&gUnk_080DAC54); if (uVar1 & 0x2000) LoadRoomEntityList(&gUnk_080DAD24); if (uVar1 & 0x1000) LoadRoomEntityList(&gUnk_080DABC4); if (uVar1 & 0x800) LoadRoomEntityList(&gUnk_080DAC94); if (uVar1 & 0x400) LoadRoomEntityList(&gUnk_080DAD64); if (uVar1 & 0x200) LoadRoomEntityList(&gUnk_080DAC04); if (uVar1 & 0x100) LoadRoomEntityList(&gUnk_080DACD4); if (uVar1 & 0x80) LoadRoomEntityList(&gUnk_080DADA4); sub_0801AFE4(); } u32 sub_0804C5DC() { return 1; } extern EntityData gUnk_080DAEE8; void sub_0804C5E0(void) { if (CheckGlobalFlag(WHITE_SWORD_END)) LoadRoomEntityList(&gUnk_080DAEE8); sub_0801AFE4(); } u32 sub_0804C5FC() { return 1; } extern EntityData gUnk_080DAF80; void sub_0804C600(void) { if (CheckGlobalFlag(WHITE_SWORD_END)) LoadRoomEntityList(&gUnk_080DAF80); sub_0801AFE4(); } u32 sub_0804C61C() { return 1; } extern EntityData gUnk_080DB018; void sub_0804C620(void) { if (CheckGlobalFlag(WHITE_SWORD_END)) LoadRoomEntityList(&gUnk_080DB018); sub_0801AFE4(); } u32 sub_0804C63C() { return 1; } void sub_0804C640() { sub_0801AFE4(); } u32 sub_0804C648() { return 1; } void sub_0804C64C() { sub_0801AFE4(); } u32 sub_0804C654() { return 1; } void sub_0804C658() { sub_0801AFE4(); } u32 sub_0804C660() { return 1; } extern EntityData gUnk_080DB238; void sub_0804C664(void) { if (gSave.unk8 > 8) LoadRoomEntityList(&gUnk_080DB238); sub_0801AFE4(); } u32 sub_0804C684() { return 1; } void sub_0804C688() { sub_0801AFE4(); } u32 sub_0804C690() { return 1; } void sub_0804C694() { sub_0801AFE4(); } u32 sub_0804C69C() { return 1; } void sub_0804C6A0() { sub_0801AFE4(); } u32 sub_0804C6A8() { return 1; } void sub_0804C6AC() { sub_0801AFE4(); } u32 sub_0804C6B4() { return 1; } extern EntityData gUnk_080DB4D0; extern EntityData gUnk_080DB4A0; void sub_0804C6B8(void) { // flippers and history of masks book if (!GetInventoryValue(0x46) && !GetInventoryValue(0x3b) && CheckLocalFlag(0x71)) LoadRoomEntityList(&gUnk_080DB4D0); else LoadRoomEntityList(&gUnk_080DB4A0); sub_0801AFE4(); } u32 sub_0804C6F4() { return 1; } void sub_0804C6F8() { sub_0801AFE4(); } u32 sub_0804C700() { return 1; } void sub_0804C704() { sub_0801AFE4(); } u32 sub_0804C70C() { return 1; } void sub_0804C710() { sub_0801AFE4(); } u32 sub_0804C718() { return 1; } void sub_0804C71C() { sub_0801AFE4(); } u32 sub_0804C724() { return 1; } void sub_0804C728() { sub_0801AFE4(); } extern u32 gUnk_080DB910; u32 sub_0804C730(void) { if (CheckGlobalFlag(MIZUKAKI_START) && !CheckLocalFlag(0x73)) { gRoomVars.field_0x70 = &gUnk_080DB910; } return 1; } extern EntityData gUnk_080DB8F0; extern EntityData gUnk_080DB820; void sub_0804C758(void) { LoadRoomEntityList(&gUnk_080DB8F0); // flippers if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START)) { LoadRoomEntityList(&gUnk_080DB820); } sub_0801AFE4(); } u32 sub_0804C788() { return 1; } extern EntityData gUnk_080DBA08; void sub_0804C78C(void) { // flippers if (GetInventoryValue(0x46) || !CheckLocalFlag(0x73)) { LoadRoomEntityList(&gUnk_080DBA08); } sub_0801AFE4(); } u32 sub_0804C7B4() { return 1; } extern EntityData gUnk_080DBB50; extern EntityData gUnk_080DBB70; extern EntityData gUnk_080DBB10; extern EntityData gUnk_080DBAD0; extern EntityData gUnk_080DBB90; void sub_0804C7B8(void) { u32 tilePos; u32 i; if (!CheckLocalFlag(0x60)) { LoadRoomEntityList(&gUnk_080DBB50); } // pegasus boots if (GetInventoryValue(0x15) == 1) { LoadRoomEntityList(&gUnk_080DBB70); LoadRoomEntityList(&gUnk_080DBB10); } else { LoadRoomEntityList(&gUnk_080DBAD0); } if (!CheckLocalFlag(0x62)) { tilePos = 0x140; for (i = 0; i < 0x13; i++, tilePos++) { SetTileType(0x4072, tilePos, 1); } } LoadRoomEntityList(&gUnk_080DBB90); sub_0801AFE4(); } u32 sub_0804C830() { return 1; } void nullsub_210() { } u32 sub_0804C838() { return 1; } void nullsub_211() { } u32 sub_0804C840() { return 1; } void nullsub_212() { } u32 sub_0804C848() { return 1; } void nullsub_213() { } u32 sub_0804C850() { return 1; } void nullsub_214() { } u32 sub_0804C858() { return 1; } void nullsub_215() { } u32 sub_0804C860() { return 1; } void nullsub_216() { } u32 sub_0804C868() { return 1; } void nullsub_217() { } u32 sub_0804C870() { return 1; } void nullsub_218() { } u32 sub_0804C878() { return 1; } void nullsub_219() { } u32 sub_0804C880() { return 1; } extern EntityData gUnk_080DC390; extern EntityData gUnk_080DC3F0; extern EntityData gUnk_080DC430; extern EntityData gUnk_080DC530; extern EntityData gUnk_080DC470; extern EntityData gUnk_080DC4C0; void sub_0804C884(void) { // jabber nut if (!GetInventoryValue(0x5b)) { LoadRoomEntityList(&gUnk_080DC390); if (!CheckLocalFlagByOffset(0x200, 0x80)) { LoadRoomEntityList(&gUnk_080DC3F0); } } else { LoadRoomEntityList(&gUnk_080DC430); // gust jar if (!GetInventoryValue(0x11)) { LoadRoomEntityList(&gUnk_080DC530); } } if ((!CheckLocalFlagByOffset(0x200, 0x83)) && GetInventoryValue(0x11)) { LoadRoomEntityList(&gUnk_080DC470); } if (!CheckLocalFlag(0x8d)) { LoadRoomEntityList(&gUnk_080DC4C0); } sub_08057E64(); } u32 sub_0804C910() { return 1; } void nullsub_220() { } typedef struct { u8 LO[0x4000]; u8 HI[0x4000]; } struct_086D4460; extern struct_086D4460 gUnk_086D4460; void sub_0804C918(void) { LoadResourceAsync(&gUnk_086D4460.LO, 0x6000000, 0x4000); LoadResourceAsync(&gUnk_086D4460.HI, 0x6008000, 0x4000); LoadPaletteGroup(0x19); } u32 sub_0804C948() { return 1; } void nullsub_221() { } u32 sub_0804C950() { return 1; } void nullsub_222() { } u32 sub_0804C958() { return 1; } void nullsub_223() { } u32 sub_0804C960() { return 1; } void nullsub_224() { } u32 sub_0804C968() { return 1; } void nullsub_225() { } u32 sub_0804C970() { return 1; } void nullsub_226() { } u32 sub_0804C978() { return 1; } void nullsub_227() { } u32 sub_0804C980() { return 1; } void nullsub_228() { } u32 sub_0804C988() { return 1; } void nullsub_229() { } u32 sub_0804C990() { return 1; } void nullsub_230() { } u32 sub_0804C998() { return 1; } extern EntityData gUnk_080DCB10; void sub_0804C99C(void) { // bow if (!GetInventoryValue(0x9)) { LoadRoomEntityList(&gUnk_080DCB10); } } u32 sub_0804C9B4() { return 1; } void nullsub_231() { } u32 sub_0804C9BC() { return 1; } void nullsub_232() { } u32 sub_0804C9C4() { return 1; } void nullsub_233() { } u32 sub_0804C9CC() { return 1; } void nullsub_234() { } u32 sub_0804C9D4() { return 1; } void nullsub_235() { } u32 sub_0804C9DC() { return 1; } void nullsub_236() { } u32 sub_0804C9E4() { return 1; } void nullsub_237() { } u32 sub_0804C9EC() { return 1; } void nullsub_238() { } u32 sub_0804C9F4() { return 1; } void nullsub_239() { } u32 sub_0804C9FC() { return 1; } void nullsub_240() { } u32 sub_0804CA04() { return 1; } void nullsub_241() { } u32 sub_0804CA0C() { return 1; } extern EntityData gUnk_080DD214; extern EntityData gUnk_080DD274; extern EntityData gUnk_080DD294; void sub_0804CA10(void) { if (!CheckGlobalFlag(WHITE_SWORD_END)) { LoadRoomEntityList(&gUnk_080DD214); } if (!CheckLocalFlag(0x7f)) { LoadRoomEntityList(&gUnk_080DD274); } else { LoadRoomEntityList(&gUnk_080DD294); } SetLocalFlag(0x8e); } u32 sub_0804CA50() { return 1; } extern EntityData gUnk_080DD364; void sub_0804CA54(void) { if (!(gSave.windcrests & 0x4000000)) { LoadRoomEntityList(&gUnk_080DD364); } } void sub_0804CA74(void) { if (!(gSave.windcrests & 0x4000000)) { LoadRoomEntityList(&gUnk_080DD364); } } u32 sub_0804CA94() { return 1; } void nullsub_242() { } u32 sub_0804CA9C() { return 1; } extern EntityData gUnk_080DD7E0; extern EntityData gUnk_080DD840; void sub_0804CAA0(void) { if (CheckGlobalFlag(KUMOTATSUMAKI)) { sub_0809F814(0x6de); } if (CheckLocalFlag(0xf3)) { sub_0809F814(0xe0); } else { LoadRoomEntityList(&gUnk_080DD7E0); } if (CheckLocalFlag(0xf5)) { sub_0809F814(0xba3); } else { LoadRoomEntityList(&gUnk_080DD840); } } u32 sub_0804CAF4() { return 1; } void sub_0804CAF8() { sub_080300E8(); SetLocalFlag(0x24); } u32 sub_0804CB08() { return 1; } void nullsub_37() { } u32 sub_0804CB10() { return 1; } extern EntityData gUnk_080DDE88; void sub_0804CB14(void) { if (CheckKinstoneFused(0x41)) { LoadRoomEntityList(&gUnk_080DDE88); } } void sub_0804CB2C(void) { if (CheckLocalFlagByOffset(0x100, 0x27)) { SetDirtTile(0x85); } } u32 sub_0804CB44() { return 1; } void nullsub_38() { } u32 sub_0804CB4C() { return 1; } extern EntityData gUnk_080DE008; void sub_0804CB50(void) { sub_080300E8(); if (CheckGlobalFlag(LV3_CLEAR) && !CheckLocalFlag(3)) { LoadRoomEntityList(&gUnk_080DE008); } } u32 sub_0804CB78() { return 1; } extern EntityData gUnk_080DE1E0; extern EntityData gUnk_080DE200; void sub_0804CB7C(void) { sub_080300E8(); if (!CheckLocalFlag(0x30)) { LoadRoomEntityList(&gUnk_080DE1E0); } if (!CheckLocalFlag(0x31)) { LoadRoomEntityList(&gUnk_080DE200); } } u32 sub_0804CBAC() { return 1; } extern EntityData gUnk_080DE4C8; void sub_0804CBB0(void) { if ((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) < (gRoomControls.height >> 1)) { if (!CheckLocalFlag(0x17)) { LoadRoomEntityList(&gUnk_080DE4C8); } } } u32 sub_0804CBE4() { return 1; } void nullsub_243() { } u32 sub_0804CBEC() { return 1; } extern EntityData gUnk_080DE814; extern EntityData gUnk_080DE834; void sub_0804CBF0(void) { if (!CheckLocalFlag(0x4b)) { LoadRoomEntityList(&gUnk_080DE814); } else { if (!CheckLocalFlag(0x4c)) { LoadRoomEntityList(&gUnk_080DE834); SetTileType(0x79, 0x285, 1); } else { SetTileType(0x7a, 0x285, 1); if (!CheckLocalFlag(0x24)) { SetTileType(0x73, 0x205, 1); } } } } u32 sub_0804CC54() { return 1; } void nullsub_244() { } u32 sub_0804CC5C() { return 1; } void nullsub_245() { } u32 sub_0804CC64() { return 1; } void nullsub_246() { } u32 sub_0804CC6C() { return 1; } void sub_0804CC70(void) { if (gSave.unk7 == 0) { goto a; } if (gSave.unk7 != 2) { a: SetTileType(0x90, 0x20b, 1); SetTileType(0x90, 0x411, 1); } else { SetTileType(0x90, 0x211, 1); SetTileType(0x90, 0x40b, 1); } if (CheckLocalFlag(0x15)) { SetTileType(0x76, 0x304, 2); } if (CheckLocalFlag(0x16)) { SetTileType(0x76, 0x318, 2); } } u32 sub_0804CCEC() { return 1; } void nullsub_247() { } u32 sub_0804CCF4() { return 1; } void nullsub_248() { } u32 sub_0804CCFC() { return 1; } void nullsub_249() { } u32 sub_0804CD04() { return 1; } void nullsub_250() { } u32 sub_0804CD0C() { return 1; } #ifdef DEMO void nullsub_251() { if (gUnk_02000000->saveFileId != 0 && GetInventoryValue(0x40) == 0) { SetTileType(0x365,0x349,1); SetTileType(0x365,0x34a,1); SetTileType(0x365,0x34b,1); } } #else void nullsub_251() { } #endif u32 sub_0804CD14() { return 1; } void nullsub_252() { } u32 sub_0804CD1C() { return 1; } void nullsub_253() { } u32 sub_0804CD249() { return 1; } void nullsub_254() { } u32 sub_0804CD2C90() { return 1; } void nullsub_255() { } u32 sub_0804CD349() { return 1; } void nullsub_256() { } u32 sub_0804CD3C() { return 1; } void nullsub_257() { } u32 sub_0804CD44() { return 1; } extern EntityData gUnk_080DF94C; extern u8 gUnk_02000070; extern u32 gUsedPalettes; void sub_0804CD48(void) { if (!CheckLocalFlag(0x48)) { SetLocalFlag(0x48); MenuFadeIn(5, 0); gUnk_02000070 = 0; gFadeControl.active = 0; gUsedPalettes = 0; *(u16*)0x5000000 = 0x7fff; DispReset(1); } if (CheckGlobalFlag(LV1_CLEAR)) { LoadRoomEntityList(&gUnk_080DF94C); } else { SoundReq(SONG_STOP_BGM); gArea.musicIndex = gArea.pMusicIndex; } } u32 sub_0804CDC8() { return 1; } void nullsub_258() { } u32 sub_0804CDD0() { return 1; } void sub_0804CDD4(void) { sub_08058D34(); gArea.areaMetadata |= 0x40; gMain.transition = 5; } u32 sub_0804CDF4() { return 1; } extern EntityData gUnk_080DFB78; void sub_0804CDF8(void) { if (CheckGlobalFlag(LV1_CLEAR) && !CheckLocalFlagByOffset(0x100, 1)) { LoadRoomEntityList(&gUnk_080DFB78); } } u32 sub_0804CE20() { return 1; } void nullsub_259() { } u32 sub_0804CE28() { return 1; } void nullsub_260() { } u32 sub_0804CE30() { return 1; } void nullsub_261() { } u32 sub_0804CE38() { return 1; } #ifdef DEMO void nullsub_262() { if (GetInventoryValue(0x41) == 0) { SetTileType(0x365,0x287,2); SetTileType(0x365,0x288,2); SetTileType(0x365,0x289,2); } } #else void nullsub_262() { } #endif u32 sub_0804CE40() { return 1; } void nullsub_263() { } u32 sub_0804CE48() { return 1; } void nullsub_264() { } u32 sub_0804CE50() { return 1; } void nullsub_265() { } u32 sub_0804CE58() { return 1; } void nullsub_266() { } u32 sub_0804CE60() { return 1; } void nullsub_267() { } u32 sub_0804CE68() { return 1; } void nullsub_268() { } u32 sub_0804CE70() { return 1; } void nullsub_269() { } u32 sub_0804CE78() { return 1; } void nullsub_270() { } extern u32 gUnk_080E103C; u32 sub_0804CE80(void) { if (CheckGlobalFlag(LV2_CLEAR)) { gRoomVars.field_0x70 = &gUnk_080E103C; } return 1; } void nullsub_271() { } u32 sub_0804CEA4() { return 1; } void nullsub_272() { } u32 sub_0804CEAC() { return 1; } void nullsub_273() { } u32 sub_0804CEB4() { return 1; } void nullsub_274() { } u32 sub_0804CEBC() { return 1; } void nullsub_275() { } u32 sub_0804CEC4() { return 1; } void nullsub_276() { } u32 sub_0804CECC() { return 1; } void nullsub_277() { } u32 sub_0804CED4() { return 1; } extern EntityData gUnk_080E1814; extern u32 gUnk_0200B650; void sub_0804CED8(void) { if (CheckGlobalFlag(LV2_CLEAR)) { gUnk_0200B650 = 0; gScreen.lcd.displayControl &= 0xfdff; sub_0807AABC(&gPlayerEntity); LoadRoomEntityList(&gUnk_080E1814); } else { SoundReq(SONG_STOP_BGM); gArea.musicIndex = gArea.pMusicIndex; } } u32 sub_0804CF38() { return 1; } void nullsub_278() { } u32 sub_0804CF40() { return 1; } void sub_0804CF44(void) { gScreenTransition.field_0x38 = 0; gScreenTransition.field_0x39 = 0x5a; } u32 sub_0804CF5C() { return 1; } void sub_0804CF60() { sub_080300E8(); } u32 sub_0804CF68() { return 1; } void nullsub_39() { } u32 sub_0804CF70() { return 1; } void sub_0804CF74() { sub_080300E8(); } u32 sub_0804CF7C() { return 1; } void nullsub_40() { } u32 sub_0804CF84() { return 1; } void nullsub_41() { } u32 sub_0804CF8C() { return 1; } void nullsub_42() { } u32 sub_0804CF94() { return 1; } void nullsub_43() { } u32 sub_0804CF9C() { return 1; } void nullsub_44() { } u32 sub_0804CFA4() { return 1; } void nullsub_45() { } u32 sub_0804CFAC() { return 1; } void sub_0804CFB0(void) { if (!CheckFlags(0x31)) { if (gScreenTransition.field_0x38 == 0) { SoundReq(SONG_STOP_BGM); } else { if (gScreenTransition.field_0x39 == 0) { SoundReq(SONG_STOP); sub_08078A90(3); } } gArea.musicIndex = gArea.pMusicIndex; } } u32 sub_0804D008() { return 1; } void nullsub_279() { } u32 sub_0804D010() { return 1; } void nullsub_280() { } u32 sub_0804D018() { return 1; } void nullsub_281() { } u32 sub_0804D020() { return 1; } void nullsub_282() { } u32 sub_0804D028() { return 1; } void nullsub_283() { } u32 sub_0804D030() { return 1; } void nullsub_284() { } u32 sub_0804D038() { return 1; } void nullsub_285() { } u32 sub_0804D040() { return 1; } void nullsub_286() { } u32 sub_0804D048() { return 1; } void nullsub_287() { } u32 sub_0804D050() { return 1; } void nullsub_288() { } u32 sub_0804D058() { return 1; } void nullsub_289() { } u32 sub_0804D060() { return 1; } void nullsub_290() { } u32 sub_0804D068() { return 1; } void nullsub_291() { } u32 sub_0804D070() { return 1; } extern EntityData gUnk_080E3850; void sub_0804D074(void) { SetGlobalFlag(LV3_CLEAR); sub_080530C8(); sub_0805B4D0(3); // wind ocarina if (!GetInventoryValue(0x17) && CheckLocalFlag(0x45)) { LoadRoomEntityList(&gUnk_080E3850); } } u32 sub_0804D0A8() { return 1; } void sub_0804D0AC() { sub_0804D0B4(); } void sub_0804D0B4(void) { if (!CheckLocalFlag(0x29)) { SetLocalFlag(0x29); SetLocalFlag(0x4b); SetLocalFlag(0x4e); } } u32 sub_0804D0D4() { return 1; } void nullsub_46() { } u32 sub_0804D0DC() { return 1; } void nullsub_47() { } u32 sub_0804D0E4() { return 1; } void nullsub_48() { } u32 sub_0804D0EC() { return 1; } void nullsub_49() { } u32 sub_0804D0F4() { return 1; } void nullsub_50() { } u32 sub_0804D0FC() { return 1; } void nullsub_51() { } u32 sub_0804D104() { return 1; } void nullsub_52() { } u32 sub_0804D10C() { return 1; } void nullsub_53() { } u32 sub_0804D114() { return 1; } void nullsub_54() { } u32 sub_0804D11C() { return 1; } void nullsub_55() { } u32 sub_0804D124() { return 1; } void nullsub_56() { } u32 sub_0804D12C() { return 1; } void nullsub_57() { } u32 sub_0804D134() { return 1; } void nullsub_58() { } u32 sub_0804D13C() { return 1; } extern EntityData gUnk_080E49F4; void sub_0804D140(void) { sub_0805308C(0x100); if (CheckGlobalFlag(LV4_CLEAR)) { LoadRoomEntityList(&gUnk_080E49F4); } else { SoundReq(SONG_STOP_BGM); gArea.musicIndex = gArea.pMusicIndex; } } u32 sub_0804D180() { return 1; } void nullsub_292() { } u32 sub_0804D188() { return 1; } extern EntityData gUnk_080E4BD8; void sub_0804D18C(void) { if (!CheckLocalFlag(0x48)) { ClearLocalFlag(0x46); LoadRoomEntityList(&gUnk_080E4BD8); } } u32 sub_0804D1AC() { return 1; } extern EntityData gUnk_080E4CF8; extern EntityData gUnk_080E4CD8; void sub_0804D1B0(void) { sub_0804D0B4(); if (CheckLocalFlag(0x6c)) { LoadRoomEntityList(&gUnk_080E4CD8); } else { LoadRoomEntityList(&gUnk_080E4CF8); } if (!CheckLocalFlag(0x4b)) { ClearLocalFlag(0x49); } } u32 sub_0804D1E8() { return 1; } void nullsub_293() { } u32 sub_0804D1F0() { return 1; } void nullsub_294() { } u32 sub_0804D1F8() { return 1; } void nullsub_295() { } u32 sub_0804D200() { return 1; } void nullsub_296() { } u32 sub_0804D208() { return 1; } void nullsub_297() { } u32 sub_0804D210() { return 1; } void nullsub_298() { } u32 sub_0804D218() { return 1; } void nullsub_299() { } u32 sub_0804D220() { return 1; } void nullsub_300() { } u32 sub_0804D228() { return 1; } extern EntityData gUnk_080E5660; extern EntityData gUnk_080E5680; void sub_0804D22C(void) { if (!CheckLocalFlag(0x59)) { LoadRoomEntityList(&gUnk_080E5660); } else { LoadRoomEntityList(&gUnk_080E5680); } } u32 sub_0804D250() { return 1; } void nullsub_301() { } u32 sub_0804D258() { return 1; } void nullsub_302() { } u32 sub_0804D260() { return 1; } void nullsub_303() { } u32 sub_0804D268() { return 1; } void nullsub_304() { } u32 sub_0804D270() { return 1; } void nullsub_305() { } u32 sub_0804D278() { return 1; } extern EntityData gUnk_080E5E3C; extern EntityData gUnk_080E5E5C; void sub_0804D27C(void) { sub_0804D0B4(); if (!CheckLocalFlag(0x4b)) { LoadRoomEntityList(&gUnk_080E5E3C); } else { LoadRoomEntityList(&gUnk_080E5E5C); } } u32 sub_0804D2A4() { return 1; } void nullsub_306() { } u32 sub_0804D2AC() { return 1; } void nullsub_307() { } u32 sub_0804D2B4() { return 1; } void nullsub_308() { } u32 sub_0804D2BC() { return 1; } void nullsub_309() { } u32 sub_0804D2C4() { return 1; } void nullsub_310() { } u32 sub_0804D2CC() { return 1; } void nullsub_311() { } u32 sub_0804D2D4() { return 1; } void nullsub_312() { } u32 sub_0804D2DC() { return 1; } void nullsub_313() { } u32 sub_0804D2E4() { return 1; } extern EntityData gUnk_080E693C; void sub_0804D2E8(void) { if (!CheckLocalFlag(0x32)) { LoadRoomEntityList(&gUnk_080E693C); } } u32 sub_0804D300() { return 1; } void nullsub_314() { } u32 sub_0804D308() { return 1; } void nullsub_315() { } u32 sub_0804D310() { return 1; } void nullsub_316() { } u32 sub_0804D318() { return 1; } void nullsub_317() { } u32 sub_0804D320() { return 1; } void nullsub_318() { } u32 sub_0804D328() { return 1; } void nullsub_319() { } u32 sub_0804D330() { return 1; } void sub_0804D334() { sub_08054570(); } u32 sub_0804D33C() { return 1; } extern EntityData gUnk_080E718C; extern EntityData gUnk_080E71AC; void sub_0804D340(void) { SetTileType(0x312, 0x108, 1); sub_08054570(); if (!CheckLocalFlag(0xc4)) { LoadRoomEntityList(&gUnk_080E718C); } if (!CheckLocalFlag(0xc5)) { LoadRoomEntityList(&gUnk_080E71AC); } } u32 sub_0804D380() { return 1; } extern EntityData gUnk_080E7314; extern EntityData gUnk_080E72C4; extern EntityData gUnk_080E72E4; void sub_0804D384(void) { sub_0805AF60(0); if (CheckGlobalFlag(LV5_CLEAR)) { LoadRoomEntityList(&gUnk_080E7314); } if (!CheckLocalFlag(0x7b)) { LoadRoomEntityList(&gUnk_080E72C4); } else { SetGlobalFlag(LV5_CLEAR); // wind element if (!GetInventoryValue(0x43)) { sub_08078A90(3); LoadRoomEntityList(&gUnk_080E72E4); gArea.musicIndex = gArea.pMusicIndex; SoundReq(SONG_STOP_BGM); } } } u32 sub_0804D3F8() { return 1; } void sub_0804D3FC() { sub_0805AF60(0); } u32 sub_0804D408() { return 1; } void sub_0804D40C() { sub_0805AF60(0); } u32 sub_0804D418() { return 1; } void sub_0804D41C() { sub_0805AF60(0); } u32 sub_0804D428() { return 1; } void sub_0804D42C() { sub_0805AF60(0); } u32 sub_0804D438() { return 1; } void sub_0804D43C() { sub_0805AF60(0); } u32 sub_0804D448() { return 1; } void sub_0804D44C() { sub_0805AF60(0); } u32 sub_0804D458() { return 1; } void sub_0804D45C() { sub_0805AF60(0); } u32 sub_0804D468() { return 1; } void sub_0804D46C() { sub_0805AF60(0); } u32 sub_0804D478() { return 1; } void sub_0804D47C() { sub_0805AF60(0); } u32 sub_0804D488() { return 1; } void sub_0804D48C() { sub_0805AF60(0); } u32 sub_0804D498() { return 1; } void sub_0804D49C() { sub_0805AF60(0); } u32 sub_0804D4A8() { return 1; } void sub_0804D4AC() { sub_0805AF60(0); } u32 sub_0804D4B8() { return 1; } void sub_0804D4BC() { sub_0805AF60(0); } u32 sub_0804D4C8() { return 1; } void sub_0804D4CC() { sub_0805AF60(0); } u32 sub_0804D4D8() { return 1; } void sub_0804D4DC() { sub_0805AF60(0); } u32 sub_0804D4E8() { return 1; } void sub_0804D4EC() { sub_0805AF60(0); } u32 sub_0804D4F8() { return 1; } void sub_0804D4FC() { sub_0805AF60(0); } u32 sub_0804D508() { return 1; } void sub_0804D50C() { sub_0805AF60(0); } u32 sub_0804D518() { return 1; } void sub_0804D51C() { sub_0805AF60(0); } u32 sub_0804D528() { return 1; } void sub_0804D52C() { sub_0805AF60(0); } u32 sub_0804D538() { return 1; } void nullsub_59() { } u32 sub_0804D540() { return 1; } void sub_0804D544() { sub_0805AF60(0); } u32 sub_0804D550() { return 1; } void sub_0804D554() { sub_0805AF60(0); } u32 sub_0804D560() { return 1; } void sub_0804D564() { sub_0805AF60(0); } u32 sub_0804D570() { return 1; } void sub_0804D574() { sub_0805AF60(0); } u32 sub_0804D580() { return 1; } void sub_0804D584() { sub_0805AF60(0); } u32 sub_0804D590() { return 1; } void nullsub_60() { } u32 sub_0804D598() { return 1; } void nullsub_61() { } u32 sub_0804D5A0() { return 1; } void nullsub_62() { } u32 sub_0804D5A8() { return 1; } void nullsub_63() { } u32 sub_0804D5B0() { return 1; } void nullsub_64() { } u32 sub_0804D5B8() { return 1; } void nullsub_65() { } u32 sub_0804D5C0() { return 1; } void sub_0804D5C4() { sub_0805AF60(0); } u32 sub_0804D5D0() { return 1; } void sub_0804D5D4() { sub_0805AF60(0); } u32 sub_0804D5E0() { return 1; } void sub_0804D5E4() { sub_0805AF60(0); } u32 sub_0804D5F0() { return 1; } void sub_0804D5F4() { sub_0805AF60(0); } u32 sub_0804D600() { return 1; } void nullsub_66() { } u32 sub_0804D608() { return 1; } void nullsub_67() { } u32 sub_0804D610() { return 1; } void nullsub_68() { } u32 sub_0804D618() { return 1; } void nullsub_69() { } u32 sub_0804D620() { return 1; } void nullsub_70() { } u32 sub_0804D628() { return 1; } void nullsub_71() { } u32 sub_0804D630() { return 1; } void sub_0804D634() { sub_0805AF60(0); } u32 sub_0804D640() { return 1; } extern EntityData gUnk_080EA09C; void sub_0804D644(void) { sub_0805AF60(0); if (!CheckLocalFlag(0x70)) { LoadRoomEntityList(&gUnk_080EA09C); } } u32 sub_0804D664() { return 1; } void sub_0804D668() { sub_0805AF60(0); } u32 sub_0804D674() { return 1; } void sub_0804D678() { sub_0805AF60(0); } u32 sub_0804D684() { return 1; } void sub_0804D688() { sub_0805AF60(0); } u32 sub_0804D694() { return 1; } void sub_0804D698() { sub_0805AF60(0); } u32 sub_0804D6A4() { return 1; } void sub_0804D6A8() { sub_0805AF60(0); } u32 sub_0804D6B4() { return 1; } void nullsub_72() { } u32 sub_0804D6BC() { return 1; } void nullsub_73() { } u32 sub_0804D6C4() { return 1; } void sub_0804D6C8(void) { SoundReq(SONG_STOP_BGM); gArea.musicIndex = gArea.pMusicIndex; } u32 sub_0804D6EC() { return 1; } void sub_0804D6F0(void) { sub_0805D3C8(0); if ((gScreenTransition.field_0x38 & 1) && gScreenTransition.field_0x39) { if (gScreenTransition.field_0x3c == 1) { gPlayerEntity.x.HALF.HI = gScreenTransition.field_0x48; gPlayerEntity.y.HALF.HI = gScreenTransition.field_0x4a + 8; } else { if (gScreenTransition.field_0x3c) { return; } gPlayerEntity.x.HALF.HI = gScreenTransition.field_0x44; gPlayerEntity.y.HALF.HI = gScreenTransition.field_0x46 + 8; } } } u32 sub_0804D754() { return 1; } void sub_0804D758() { sub_0805B4D0(6); } u32 sub_0804D764() { return 1; } void nullsub_74() { } u32 sub_0804D76C() { return 1; } void nullsub_75() { } u32 sub_0804D774() { sub_080534AC(); return 1; } extern EntityData gUnk_080EAD68; extern EntityData gUnk_080EADB8; void sub_0804D780(void) { sub_0805B4D0(4); if (!CheckLocalFlag(0x77)) { LoadRoomEntityList(&gUnk_080EAD68); } else if (!CheckLocalFlag(0x79)) { LoadRoomEntityList(&gUnk_080EADB8); SetTileType(0x4072, 0x145, 1); SetTileType(0x4072, 0x149, 1); gArea.pMusicIndex = 0; } } extern u16 gUnk_080EAE00; void sub_0804D7EC(void) { u16 temp; u16* tilePos; tilePos = &gUnk_080EAE00; while (*tilePos != 0) { temp = *tilePos; tilePos++; SetTileType(0x4072, temp, 1); } } void sub_0804D810(void) { u16 uVar1; u16* puVar2; puVar2 = &gUnk_080EAE00; while (*puVar2 != 0) { uVar1 = *puVar2; puVar2++; sub_0807BA8C(uVar1, 1); } } u32 sub_0804D830() { return 1; } extern EntityData gUnk_080EAE60; extern EntityData gUnk_080EAEC0; extern EntityData gUnk_080EAF20; void sub_0804D834(void) { gArea.areaMetadata = 0x40; gArea.locationIndex = 0; if (CheckGlobalFlag(ENDING)) { if (!CheckLocalFlag(0x7f)) { LoadRoomEntityList(&gUnk_080EAEC0); SetLocalFlag(0x7f); gArea.pMusicIndex = 0x11; } else { LoadRoomEntityList(&gUnk_080EAF20); gArea.pMusicIndex = gArea.musicIndex; } } else { if (CheckLocalFlag(0x79)) { gArea.pMusicIndex = gArea.musicIndex; } if (!CheckLocalFlag(1)) { LoadRoomEntityList(&gUnk_080EAE60); } } ClearGlobalFlag(0x5d); } u32 sub_0804D8CC() { return 1; } void nullsub_320() { } u32 sub_0804D8D4() { return 1; } void nullsub_321() { } u32 sub_0804D8DC() { return 1; } void nullsub_322() { } u32 sub_0804D8E4() { return 1; } void nullsub_323() { } u32 sub_0804D8EC() { return 1; } void nullsub_324() { } u32 sub_0804D8F4() { return 1; } void nullsub_325() { } u32 sub_0804D8FC() { return 1; } void nullsub_326() { } extern u32 gUnk_080EB604; extern u32 gUnk_080EB5D4; u32 sub_0804D904(void) { if (CheckGlobalFlag(ENDING)) { gRoomVars.field_0x6c = &gUnk_080EB604; gRoomVars.field_0x74 = 0; gArea.musicIndex = gArea.pMusicIndex = 0x11; } else if (CheckLocalFlag(0x79)) { gRoomVars.field_0x6c = NULL; if (!CheckLocalFlag(0x7a)) { SetGlobalFlag(ZELDA_CHASE); gRoomVars.field_0x6c = &gUnk_080EB5D4; gRoomVars.field_0x88 = sub_0804D9B0; gRoomVars.field_0x74 = 0; } } return 1; } void sub_0804D97C(void) { if (CheckGlobalFlag(ENDING)) { gArea.pMusicIndex = gArea.musicIndex; } if (CheckLocalFlag(0x79)) { sub_0804D9B0(); } } extern EntityData gUnk_080EB684; void sub_0804D9B0(void) { sub_0807BB98(0x797, 1, 5, 1); sub_0807BB98(0x357, 1, 5, 1); sub_0807BB98(0x55f, 1, 2, 1); LoadRoomEntityList(&gUnk_080EB684); gArea.pMusicIndex = gArea.musicIndex; } u32 sub_0804DA04() { return 1; } void nullsub_327() { } u32 sub_0804DA0C() { return 1; } void nullsub_328() { } u32 sub_0804DA14() { return 1; } void nullsub_329() { } u32 sub_0804DA1C() { return 1; } void nullsub_330() { } u32 sub_0804DA24() { return 1; } void nullsub_331() { } u32 sub_0804DA2C(void) { if (!CheckLocalFlag(0x77)) { gRoomVars.field_0x6c = 0; gRoomVars.field_0x74 = 0; } return 1; } extern EntityData gUnk_080EB9F4; extern EntityData gUnk_080EBAA4; extern EntityData gUnk_080EBAF4; void sub_0804DA48(void) { if (!CheckLocalFlag(0x77)) { LoadRoomEntityList(&gUnk_080EB9F4); } else { if (!CheckLocalFlag(0x78)) { LoadRoomEntityList(&gUnk_080EBAA4); SetLocalFlag(0x75); } if (CheckLocalFlag(0x7b)) { LoadRoomEntityList(&gUnk_080EBAF4); SetLocalFlag(0x76); } } } u32 sub_0804DA98() { return 1; } void nullsub_332() { } u32 sub_0804DAA0() { return 1; } void nullsub_333() { } u32 sub_0804DAA8() { return 1; } void nullsub_334() { } u32 sub_0804DAB0() { return 1; } void nullsub_335() { } u32 sub_0804DAB8() { return 1; } void nullsub_336() { } u32 sub_0804DAC0() { return 1; } void nullsub_337() { } u32 sub_0804DAC8() { return 1; } void nullsub_338() { } u32 sub_0804DAD0() { return 1; } extern EntityData gUnk_080EC2CC; void sub_0804DAD4(void) { if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x4c)) { LoadRoomEntityList(&gUnk_080EC2CC); } } u32 sub_0804DAF8() { return 1; } void nullsub_339() { } u32 sub_0804DB00() { return 1; } extern EntityData gUnk_080EC4E8; void sub_0804DB04(void) { if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x4d)) { LoadRoomEntityList(&gUnk_080EC4E8); } } u32 sub_0804DB28() { return 1; } void nullsub_340() { } u32 sub_0804DB30() { return 1; } void nullsub_341() { } u32 sub_0804DB38() { return 1; } extern EntityData gUnk_080EC820; void sub_0804DB3C(void) { if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x53)) { LoadRoomEntityList(&gUnk_080EC820); } } u32 sub_0804DB60() { return 1; } void nullsub_342() { } u32 sub_0804DB68() { return 1; } extern EntityData gUnk_080ECA60; void sub_0804DB6C(void) { if (CheckLocalFlag(0x86) && !CheckLocalFlag(0x56)) { LoadRoomEntityList(&gUnk_080ECA60); } } u32 sub_0804DB90() { return 1; } void nullsub_343() { } u32 sub_0804DB98() { return 1; } void nullsub_344() { } u32 sub_0804DBA0() { return 1; } void nullsub_345() { } u32 sub_0804DBA8() { return 1; } void nullsub_346() { } u32 sub_0804DBB0() { return 1; } void nullsub_347() { } u32 sub_0804DBB8() { return 1; } void nullsub_348() { } u32 sub_0804DBC0(void) { if (CheckLocalFlag(0x79)) { gRoomVars.field_0x74 = 0; } return 1; } extern EntityData gUnk_080ECFCC; void sub_0804DBDC(void) { if (CheckLocalFlag(0x79)) { sub_0807BB98(0x90, 1, 1, 5); LoadRoomEntityList(&gUnk_080ECFCC); gArea.pMusicIndex = gArea.musicIndex; } } u32 sub_0804DC18() { return 1; } void nullsub_349() { } u32 sub_0804DC20() { return 1; } void nullsub_350() { } extern u32 gUnk_080ED1E4; u32 sub_0804DC28(void) { if (CheckGlobalFlag(ENDING)) { gRoomVars.field_0x6c = &gUnk_080ED1E4; gRoomVars.field_0x74 = 0; } return 1; } void sub_0804DC4C(void) { if (CheckGlobalFlag(ENDING)) { gArea.pMusicIndex = gArea.musicIndex; } } u32 sub_0804DC70() { return 1; } void nullsub_351() { } u32 sub_0804DC78() { return 1; } void nullsub_352() { } u32 sub_0804DC80() { return 1; } void nullsub_353() { } u32 sub_0804DC88() { return 1; } void nullsub_354() { } u32 sub_0804DC90() { return 1; } void nullsub_355() { } u32 sub_0804DC98() { return 1; } void nullsub_356() { } u32 sub_0804DCA0() { return 1; } void nullsub_357() { } u32 sub_0804DCA8() { return 1; } void nullsub_358() { } u32 sub_0804DCB0() { return 1; } void nullsub_359() { } u32 sub_0804DCB8() { return 1; } void nullsub_360() { } u32 sub_0804DCC0() { return 1; } void nullsub_361() { } u32 sub_0804DCC8() { return 1; } void nullsub_362() { } u32 sub_0804DCD0() { return 1; } void nullsub_363() { } u32 sub_0804DCD8() { return 1; } void nullsub_364() { } u32 sub_0804DCE0() { return 1; } void nullsub_365() { } u32 sub_0804DCE8() { return 1; } void nullsub_366() { } u32 sub_0804DCF0() { return 1; } void nullsub_367() { } u32 sub_0804DCF8() { return 1; } void nullsub_368() { } u32 sub_0804DD00() { return 1; } void nullsub_369() { } u32 sub_0804DD08() { return 1; } void nullsub_370() { } u32 sub_0804DD10() { return 1; } void nullsub_371() { } u32 sub_0804DD18(void) { if (CheckLocalFlag(0x79)) { gRoomVars.field_0x74 = 0; gRoomVars.field_0x6c = 0; } return 1; } extern EntityData gUnk_080EE314; void sub_0804DD34(void) { if (CheckLocalFlag(0x79)) { sub_0807BB98(3, 2, 5, 1); LoadRoomEntityList(&gUnk_080EE314); gArea.pMusicIndex = gArea.musicIndex; } } u32 sub_0804DD70() { return 1; } void nullsub_372() { } u32 sub_0804DD78(void) { if (CheckLocalFlag(0x79)) { gRoomVars.field_0x74 = 0; } return 1; } extern EntityData gUnk_080EE5DC; void sub_0804DD94(void) { if (CheckLocalFlag(0x79)) { sub_0807BB98(0x392, 2, 2, 5); LoadRoomEntityList(&gUnk_080EE5DC); gArea.pMusicIndex = gArea.musicIndex; } } u32 sub_0804DDD4() { return 1; } void nullsub_373() { } u32 sub_0804DDDC() { return 1; } extern EntityData gUnk_080EE71C; void sub_0804DDE0(void) { if (CheckLocalFlag(1)) { LoadRoomEntityList(&gUnk_080EE71C); } } u32 sub_0804DDF8() { return 1; } void nullsub_374() { } ASM_FUNC("asm/non_matching/sub_0804DE00.inc", u32 sub_0804DE00(void)) extern EntityData gUnk_080EEB6C; extern EntityData gUnk_080EEB8C; extern EntityData gUnk_080EE88C; extern EntityData gUnk_080EE8FC; extern EntityData gUnk_080EE91C; extern EntityData gUnk_080EECBC; extern EntityData gUnk_080EE93C; extern EntityData gUnk_080EE95C; extern EntityData gUnk_080EE97C; extern EntityData gUnk_080EE9BC; extern EntityData gUnk_080EE99C; extern EntityData gUnk_080EE9DC; extern EntityData gUnk_080EEA3C; extern EntityData gUnk_080EEA1C; extern EntityData gUnk_080EE9FC; extern EntityData gUnk_080EEA5C; extern EntityData gUnk_080EEABC; extern EntityData gUnk_080EEA7C; extern EntityData gUnk_080EEA9C; extern EntityData gUnk_080EEBAC; void LoadHyruleTown(void) { sub_08054570(); TryLoadPrologueHyruleTown(); SetTileType(0x176, 0x66b, 1); if (gSave.unk8 == 1) { sub_0801D000(0); } else { sub_08018C58(0xdb4); if (!CheckLocalFlagByOffset(0x200, 0x84)) { LoadRoomEntityList(&gUnk_080EEB6C); } if (!CheckLocalFlagByOffset(0x200, 0x85)) { LoadRoomEntityList(&gUnk_080EEB8C); } // kinstone bag if ((!GetInventoryValue(0x67)) && CheckGlobalFlag(LV1_CLEAR)) { LoadRoomEntityList(&gUnk_080EE88C); } if (!CheckKinstoneFused(0x28)) { LoadRoomEntityList(&gUnk_080EE8FC); } if (CheckKinstoneFused(0x33)) { LoadRoomEntityList(&gUnk_080EE91C); } if (CheckGlobalFlag(MACHI_MACHIHOKORI)) { LoadRoomEntityList(&gUnk_080EE93C); } else { LoadRoomEntityList(&gUnk_080EECBC); } if (CheckKinstoneFused(0x1b) && (gSave.unk8 > 3)) { if (!CheckGlobalFlag(NEW_HOUSE_DIN) && !CheckGlobalFlag(NEW_HOUSE_NAYRU) && !CheckGlobalFlag(NEW_HOUSE_FARORE)) { if (!CheckGlobalFlag(RENTED_HOUSE_DIN) && !CheckGlobalFlag(RENTED_HOUSE_NAYRU) && !CheckGlobalFlag(RENTED_HOUSE_FARORE)) { LoadRoomEntityList(&gUnk_080EE95C); } else { if (!CheckGlobalFlag(TATEKAKE_HOUSE)) { LoadRoomEntityList(&gUnk_080EE97C); } else { LoadRoomEntityList(&gUnk_080EE9BC); } } } else { LoadRoomEntityList(&gUnk_080EE99C); } } if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { LoadRoomEntityList(&gUnk_080EE9FC); } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { LoadRoomEntityList(&gUnk_080EEA1C); } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { LoadRoomEntityList(&gUnk_080EEA3C); } else { LoadRoomEntityList(&gUnk_080EE9DC); } if ((gSave.unk8 > 4) && !CheckKinstoneFused(0xb) && (CheckGlobalFlag(RENTED_HOUSE_DIN) || CheckGlobalFlag(RENTED_HOUSE_NAYRU) || CheckGlobalFlag(RENTED_HOUSE_FARORE))) { LoadRoomEntityList(&gUnk_080EEA5C); } // rocs cape if (!CheckLocalFlag(0xd0) && GetInventoryValue(0x14)) { LoadRoomEntityList(&gUnk_080EEABC); } if ((gSave.unk8 > 3) && CheckGlobalFlag(INLOCK)) { LoadRoomEntityList(&gUnk_080EEA7C); } if ((gSave.unk8 < 6) && !CheckGlobalFlag(MIZUKAKI_START)) { LoadRoomEntityList(&gUnk_080EEA9C); } if ((gSave.windcrests & 0x8000000) == 0) { LoadRoomEntityList(&gUnk_080EEBAC); } sub_0804E150(); } } void sub_0804E130(void) { if ((gSave.windcrests & 0x8000000) == 0) { LoadRoomEntityList(&gUnk_080EEBAC); } } ASM_FUNC("asm/non_matching/sub_0804E150.inc", void sub_0804E150(void)) u32 sub_0804E1F4() { return 1; } void nullsub_76() { } u32 sub_0804E1FC() { return 1; } void nullsub_77() { } u32 sub_0804E204() { return 1; } void nullsub_78() { } u32 sub_0804E20C() { return 1; } void nullsub_79() { } u32 sub_0804E214() { return 1; } void nullsub_080() { } u32 sub_0804E21C() { return 1; } void nullsub_081() { } u32 sub_0804E224() { return 1; } void nullsub_082() { } u32 sub_0804E22C() { return 1; } void nullsub_083() { } u32 sub_0804E234() { return 1; } void nullsub_084() { } u32 sub_0804E23C() { return 1; } void nullsub_085() { } u32 sub_0804E244() { return 1; } void nullsub_086() { } u32 sub_0804E24C() { return 1; } void nullsub_087() { } u32 sub_0804E254() { return 1; } void nullsub_088() { } extern u32 gUnk_080F09A0; u32 sub_0804E25C(void) { // four sword if (GetInventoryValue(0x6)) { gRoomVars.field_0x70 = &gUnk_080F09A0; } return 1; } extern EntityData gUnk_080F0650; extern EntityData gUnk_080F0800; extern EntityData gUnk_080F08F0; extern EntityData gUnk_080F0850; extern EntityData gUnk_080F0870; extern EntityData gUnk_080F0890; extern EntityData gUnk_080F0920; void sub_0804E27C(void) { if (!CheckGlobalFlag(TABIDACHI)) { LoadRoomEntityList(&gUnk_080F0650); gArea.pMusicIndex = 0x13; SetGlobalFlag(CASTLE_BGM); } else { if (CheckGlobalFlag(CASTLE_BGM)) { gArea.pMusicIndex = 0x1b; } } if (!CheckLocalFlag(0x9c)) { LoadRoomEntityList(&gUnk_080F0800); SetTileType(0x4072, 600, 1); SetTileType(0x4072, 0x298, 1); SetTileType(0x4072, 0x266, 1); SetTileType(0x4072, 0x2a6, 1); } else { // four sword if (!GetInventoryValue(0x6)) { LoadRoomEntityList(&gUnk_080F08F0); SetTileType(0x4072, 0x9e, 1); SetTileType(0x4072, 0x9f, 1); SetTileType(0x4072, 0xa0, 1); } LoadRoomEntityList(&gUnk_080F0850); // water element if (!GetInventoryValue(0x42)) { LoadRoomEntityList(&gUnk_080F0870); } else { LoadRoomEntityList(&gUnk_080F0890); } SetTileType(0x4072, 600, 1); SetTileType(0x4072, 0x298, 1); if (CheckLocalFlag(0x10)) { LoadRoomEntityList(&gUnk_080F0920); ClearLocalFlag(0x10); } } sub_080AF284(); } u32 sub_0804E3B8() { ClearLocalFlag(1); return 1; } extern u8* gUnk_080F0D58[4]; extern Entity* gUnk_080F0CB8[15]; extern u8* gUnk_080F0E08[]; extern struct { u32 unk_00; u32 unk_04; } gUnk_080F0E1C[]; void sub_0804E3C4() { u32 r; u32 index; u32 tmp; tmp = CheckGlobalFlag(LV4_CLEAR); index = BOOLCAST(tmp); if (CheckGlobalFlag(LV5_CLEAR)) { index = 2; } if (CheckGlobalFlag(GAMECLEAR)) { index = 3; } r = Random(); index = gUnk_080F0D58[index][r & 0x1f]; LoadRoomEntityList((EntityData*)gUnk_080F0CB8[index & 0xF]); index >>= 4; r >>= 8; index = gUnk_080F0E08[index][r & 0x1F]; if (!CheckLocalFlag(0xC6)) { SetLocalFlag(0xC6); index = 0xE; } sub_0804B3C4(&gUnk_080F0E1C[index]); SoundReq(SONG_STOP_BGM); } u32 sub_0804E45C() { return 1; } extern EntityData gUnk_080F1C68; extern EntityData gUnk_080F1C88; void sub_0804E460(void) { if (!CheckGlobalFlag(POWERGLOVE_HINT)) { LoadRoomEntityList(&gUnk_080F1C68); } else { LoadRoomEntityList(&gUnk_080F1C88); } } u32 sub_0804E484() { return 1; } extern EntityData gUnk_080F1D90; extern EntityData gUnk_080F1DB0; extern EntityData gUnk_080F1DD0; void sub_0804E488(void) { if (CheckGlobalFlag(NEW_HOUSE_DIN)) { LoadRoomEntityList(&gUnk_080F1D90); } else if (CheckGlobalFlag(NEW_HOUSE_NAYRU)) { LoadRoomEntityList(&gUnk_080F1DB0); } else if (CheckGlobalFlag(NEW_HOUSE_FARORE)) { LoadRoomEntityList(&gUnk_080F1DD0); } } u32 sub_0804E4D0() { return 1; } void nullsub_375() { } u32 sub_0804E4D8() { return 1; } void nullsub_376() { } u32 sub_0804E4E0() { return 1; } extern EntityData gUnk_080F2174; extern EntityData gUnk_080F2194; extern EntityData gUnk_080F21B4; void sub_0804E4E4(void) { LoadRoomEntityList(&gUnk_080F2174); // picori legend book if (!GetInventoryValue(0x3a) && CheckGlobalFlag(MIZUKAKI_HARIFALL)) { LoadRoomEntityList(&gUnk_080F2194); } if (gScreenTransition.field_0xf == 1) { LoadRoomEntityList(&gUnk_080F21B4); } } u32 sub_0804E528() { return 1; } extern EntityData gUnk_080F23BC; extern EntityData gUnk_080F238C; extern EntityData gUnk_080F236C; void sub_0804E52C(void) { if (gSave.unk8 > 7) { LoadRoomEntityList(&gUnk_080F23BC); } // flippers if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START)) { LoadRoomEntityList(&gUnk_080F238C); } else { LoadRoomEntityList(&gUnk_080F236C); } } u32 sub_0804E570() { return 1; } extern EntityData gUnk_080F2570; extern EntityData gUnk_080F2590; extern EntityData gUnk_080F25C0; extern EntityData gUnk_080F2600; void sub_0804E574(void) { switch (gSave.unk8) { case 0: case 2: case 4: LoadRoomEntityList(&gUnk_080F2570); break; case 1: case 3: break; case 5: // flippers if (!GetInventoryValue(0x46)) { if (!CheckGlobalFlag(MIZUKAKI_START)) { LoadRoomEntityList(&gUnk_080F2570); break; } if (!GetInventoryValue(0x39)) { LoadRoomEntityList(&gUnk_080F25C0); } } else { LoadRoomEntityList(&gUnk_080F2590); } break; case 8: case 9: LoadRoomEntityList(&gUnk_080F2600); case 6: case 7: LoadRoomEntityList(&gUnk_080F2590); } } u32 sub_0804E614() { return 1; } extern EntityData gUnk_080F2718; extern EntityData gUnk_080F2860; extern EntityData gUnk_080F2758; extern EntityData gUnk_080F27D8; extern EntityData gUnk_080F2798; void sub_0804E618(void) { if (CheckKinstoneFused(0x21)) { if (!CheckLocalFlag(0x42)) { if (!CheckLocalFlag(0x43)) { LoadRoomEntityList(&gUnk_080F2718); LoadRoomTileEntities(&gUnk_080F2860); } else { LoadRoomEntityList(&gUnk_080F2758); } } else if (!CheckLocalFlag(0x3f)) { LoadRoomEntityList(&gUnk_080F27D8); } else { LoadRoomEntityList(&gUnk_080F2798); } } } u32 sub_0804E680() { return 1; } extern EntityData gUnk_080F28D4; extern EntityData gUnk_080F28F4; extern EntityData gUnk_080F2914; void sub_0804E684(void) { if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { LoadRoomEntityList(&gUnk_080F28D4); } else if (CheckGlobalFlag(RENTED_HOUSE_NAYRU)) { LoadRoomEntityList(&gUnk_080F28F4); } else if (CheckGlobalFlag(RENTED_HOUSE_FARORE)) { LoadRoomEntityList(&gUnk_080F2914); } } u32 sub_0804E6CC9() { return 1; } void nullsub_377() { } u32 sub_0804E6D4() { return 1; } void nullsub_378() { } u32 sub_0804E6DC() { return 1; } void nullsub_379() { } u32 sub_0804E6E4() { return 1; } extern EntityData gUnk_080F2E2C; void sub_0804E6E8(void) { if (!CheckGlobalFlag(OUTDOOR)) { gArea.musicIndex = gArea.pMusicIndex; SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); } if (!CheckGlobalFlag(START)) { LoadRoomEntityList(&gUnk_080F2E2C); } } u32 sub_0804E728() { return 1; } extern EntityData gUnk_080F2E94; extern EntityData gUnk_080F2EC4; void sub_0804E72C(void) { if (!CheckGlobalFlag(OUTDOOR)) { gArea.musicIndex = gArea.pMusicIndex; SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); } if (!CheckGlobalFlag(START)) { LoadRoomEntityList(&gUnk_080F2E94); } else { LoadRoomEntityList(&gUnk_080F2EC4); } } u32 sub_0804E778() { return 1; } extern EntityData gUnk_080F2FD4; void sub_0804E77C(void) { // graveyard key if (!CheckLocalFlag(0x69) || GetInventoryValue(0x3c) > 1) { LoadRoomEntityList(&gUnk_080F2FD4); } } u32 sub_0804E7A0() { return 1; } extern EntityData gUnk_080F30CC; void sub_0804E7A4(void) { // dog food if ((GetInventoryValue(0x36) == 1) && !CheckGlobalFlag(BIN_DOGFOOD) && (gPlayerState.flags.all & 0x80) == 0) { LoadRoomEntityList(&gUnk_080F30CC); } } u32 sub_0804E7D8() { return 1; } extern EntityData gUnk_080F31D8; extern u32 script_08009B30; void sub_0804E7DC(void) { if (!CheckGlobalFlag(START) && !CheckLocalFlag(0x46)) { sub_080A71C4(5, 1, 4, 4); gUnk_02000070 = 0; DoFade(5, 0x100); sub_080751E8(0, 6, &script_08009B30); } if (!CheckGlobalFlag(OUTDOOR)) { gArea.musicIndex = gArea.pMusicIndex; SoundReq(SONG_PLAY_VOL_RESET | BGM_MINISH_CAP); } if ((gPlayerState.flags.all & 8) == 0) { LoadRoomEntityList(&gUnk_080F31D8); } } extern u32 script_08009E58; void sub_0804E864(void) { gPlayerEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x90; gPlayerEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; sub_080751E8(1, 6, &script_08009E58); ModHealth(0xa0); } u32 sub_0804E894() { return 1; } extern EntityData gUnk_080F3260; void sub_0804E898(void) { // pacci cane if (GetInventoryValue(0x12)) { LoadRoomEntityList(&gUnk_080F3260); SetTileType(0x4072, 0x202, 1); SetTileType(0x4072, 0x242, 1); SetTileType(0x4072, 0x204, 1); SetTileType(0x4072, 0x244, 1); } } u32 sub_0804E8EC() { return 1; } void sub_0804E8F0() { sub_08054564(); } u32 sub_0804E8F8() { return 1; } extern EntityData gUnk_080F36FC; extern EntityData gUnk_080F3604; void sub_0804E8FC(void) { if (!CheckGlobalFlag(INLOCK)) { LoadRoomEntityList(&gUnk_080F36FC); } else if (gSave.unk8 < 4) { LoadRoomEntityList(&gUnk_080F3604); } } u32 sub_0804E92C() { return 1; } extern EntityData gUnk_080F37D0; void sub_0804E930(void) { if (CheckGlobalFlag(INLOCK)) { LoadRoomEntityList(&gUnk_080F37D0); } } u32 sub_0804E948() { return 1; } void nullsub_380() { } u32 sub_0804E950() { return 1; } extern EntityData gUnk_080F3A48; void sub_0804E954(void) { // flippers, history of masks if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START) && !GetInventoryValue(0x3b)) { LoadRoomEntityList(&gUnk_080F3A48); } gScreenTransition.field_0x20 = 0xf28; gScreenTransition.field_0x22 = 0x82d; } extern u32 gUnk_080F3D44; extern u32 gUnk_080F3EA4; u32 sub_0804E998(void) { if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) { gRoomVars.field_0x74 = &gUnk_080F3EA4; } else { gRoomVars.field_0x74 = &gUnk_080F3D44; } return 1; } extern EntityData gUnk_080F3C64; extern EntityData gUnk_080F3C94; extern EntityData gUnk_080F3C44; void sub_0804E9D0(void) { if (CheckGlobalFlag(LV4_CLEAR) && !CheckLocalFlag(4)) { LoadRoomEntityList(&gUnk_080F3C64); } if (CheckKinstoneFused(0x12)) { LoadRoomEntityList(&gUnk_080F3C94); } if ((gSave.unk8 > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { LoadRoomEntityList(&gUnk_080F3C44); } SetTile(0x4091, 0x590, 1); SetTile(0x4091, 0x591, 1); SetTile(0x4091, 0x592, 1); SetTile(0x4091, 0x593, 1); SetTile(0x4091, 0x594, 1); SetTile(0x4091, 0x5d0, 1); SetTile(0x4091, 0x610, 1); SetTile(0x4091, 0x650, 1); SetTile(0x4091, 0x5d4, 1); SetTile(0x4091, 0x614, 1); SetTile(0x4091, 0x654, 1); SetTile(0x4091, 0x690, 1); SetTile(0x4091, 0x691, 1); SetTile(0x4091, 0x692, 1); SetTile(0x4091, 0x693, 1); SetTile(0x4091, 0x694, 1); } u32 sub_0804EB04() { return 1; } void nullsub_381() { } u32 sub_0804EB0C() { return 1; } void nullsub_382() { } u32 sub_0804EB14() { return 1; } void nullsub_383() { } u32 sub_0804EB1() { return 1; } void nullsub_384() { } u32 sub_0804EB24() { return 1; } void nullsub_385() { } u32 sub_0804EB2C() { return 1; } void nullsub_386() { } u32 sub_0804EB34() { return 1; } void nullsub_387() { } u32 sub_0804EB3C() { return 1; } void nullsub_388() { } u32 sub_0804EB44() { return 1; } void nullsub_389() { } u32 sub_0804EB4C() { return 1; } void nullsub_390() { } u32 sub_0804EB54(void) { gArea.areaMetadata |= 0x48; return 1; } void nullsub_391() { } u32 sub_0804EB6C(void) { gArea.areaMetadata |= 0x48; return 1; } void nullsub_392() { } u32 sub_0804EB84(void) { gArea.areaMetadata |= 0x48; return 1; } void nullsub_393() { } u32 sub_0804EB9C(void) { sub_0801DD58(0x58, 5); gArea.areaMetadata |= 0x48; return 1; } void nullsub_394() { } u32 sub_0804EBBC(void) { sub_0801DD58(0x58, 6); gArea.areaMetadata |= 0x48; return 1; } void nullsub_395() { } extern u32 gUnk_080F4EB0; u32 sub_0804EBDC(void) { if (CheckGlobalFlag(ENDING)) { gRoomVars.field_0x6c = &gUnk_080F4EB0; gRoomVars.field_0x74 = NULL; } return 1; } extern EntityData gUnk_080F4D50; extern EntityData gUnk_080F4DB0; extern EntityData gUnk_080F4DD0; extern EntityData gUnk_080F4DF0; extern EntityData gUnk_080F4F10; extern EntityData gUnk_080F4E10; void sub_0804EC00(void) { if (CheckGlobalFlag(ENDING)) { gArea.pMusicIndex = gArea.musicIndex; } if (!CheckGlobalFlag(EZERO_1ST)) { LoadRoomEntityList(&gUnk_080F4D50); } if (!CheckLocalFlag(0x3e)) { if (!CheckLocalFlag(0x3b)) { LoadRoomEntityList(&gUnk_080F4DB0); } else { LoadRoomEntityList(&gUnk_080F4DD0); } LoadRoomEntityList(&gUnk_080F4DF0); } if (CheckKinstoneFused(0x4e)) { LoadRoomEntityList(&gUnk_080F4F10); } if ((s32)gSave.windcrests > -1) { LoadRoomEntityList(&gUnk_080F4E10); } #ifdef DEMO SetTileType(0x177,0x5b4,1); SetTileType(0x177,0x5f4,1); #endif } void sub_0804EC98(void) { if ((s32)gSave.windcrests > -1) { LoadRoomEntityList(&gUnk_080F4E10); } } u32 sub_0804ECB4() { return 1; } void nullsub_396() { } 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; } return 1; } extern EntityData gUnk_080F5328; extern EntityData gUnk_080F5308; void sub_0804ECEC(void) { // white sword if (GetInventoryValue(0x2)) { LoadRoomEntityList(&gUnk_080F5328); if (!CheckLocalFlag(0x14)) { LoadRoomEntityList(&gUnk_080F5308); } } } void sub_0804ED18(void) { gArea.pMusicIndex = gArea.musicIndex; } u32 sub_0804ED30() { return 1; } void sub_0804ED34(void) { sub_080AF2E4(); if (CheckGlobalFlag(SEIIKI_BGM)) { gArea.pMusicIndex = 0x31; } } u32 sub_0804ED58() { return 1; } extern EntityData gUnk_080F54E8; extern EntityData gUnk_080F5508; extern EntityData gUnk_080F5558; extern EntityData gUnk_080F5598; extern EntityData gUnk_080F55D8; extern EntityData gUnk_080F5528; extern EntityData gUnk_080F5578; extern EntityData gUnk_080F55B8; void sub_0804ED5C(void) { if (!CheckLocalFlag(0x79)) { LoadRoomEntityList(&gUnk_080F54E8); } if (!CheckLocalFlag(0x7a)) { // white sword, white sword 2, earth element, fire element if (GetInventoryValue(0x2) && !GetInventoryValue(0x3) && GetInventoryValue(0x40) && GetInventoryValue(0x41)) { LoadRoomEntityList(&gUnk_080F5508); } } else { if (!CheckLocalFlag(0x7b)) { if (GetInventoryValue(0x3) && !GetInventoryValue(0x4) && GetInventoryValue(0x42)) { LoadRoomEntityList(&gUnk_080F5558); } } else { if (!CheckLocalFlag(0x7c)) { if (!GetInventoryValue(0x6) && GetInventoryValue(0x43)) { LoadRoomEntityList(&gUnk_080F5598); } } else { LoadRoomEntityList(&gUnk_080F55D8); } } } if (CheckLocalFlag(0x7a)) { LoadRoomEntityList(&gUnk_080F5528); } if (CheckLocalFlag(0x7b)) { LoadRoomEntityList(&gUnk_080F5578); } if (CheckLocalFlag(0x7c)) { LoadRoomEntityList(&gUnk_080F55B8); } if (CheckGlobalFlag(SEIIKI_BGM)) { gArea.pMusicIndex = 0x31; } } u32 sub_0804EE74() { return 1; } extern EntityData gUnk_080F5660; void sub_0804EE78(void) { if (!CheckLocalFlag(0x78) && CheckLocalFlag(0x7c)) { LoadRoomEntityList(&gUnk_080F5660); } if (CheckGlobalFlag(SEIIKI_BGM)) { gArea.pMusicIndex = 0x31; } } u32 sub_0804EEB8() { return 1; } extern EntityData gUnk_080F5758; extern EntityData gUnk_080F57E8; extern EntityData gUnk_080F57A8; extern EntityData gUnk_080F57C8; extern EntityData gUnk_080F5888; extern EntityData gUnk_080F58A8; extern EntityData gUnk_080F5868; extern EntityData gUnk_080F5828; extern EntityData gUnk_080F5848; extern EntityData gUnk_080F5788; void sub_0804EEBC(void) { LoadRoomEntityList(&gUnk_080F5758); if (!GetInventoryValue(0x36) && CheckLocalFlagByOffset(0x200, 0x8f)) { LoadRoomEntityList(&gUnk_080F57E8); } if (!CheckLocalFlag(0x55)) { LoadRoomEntityList(&gUnk_080F57A8); } else { if (gBombBagSizes[gSave.stats.bombBagType] > 0x1d) { LoadRoomEntityList(&gUnk_080F57C8); } if (!GetInventoryValue(0xb) && !GetInventoryValue(0xc)) { LoadRoomEntityList(&gUnk_080F5888); } else { if (!CheckLocalFlag(0xcd)) { LoadRoomEntityList(&gUnk_080F58A8); } } } if (GetInventoryValue(0x9) || CheckGlobalFlag(LV3_CLEAR)) { LoadRoomEntityList(&gUnk_080F5868); if (!CheckLocalFlag(0x56)) { LoadRoomEntityList(&gUnk_080F5828); } else { LoadRoomEntityList(&gUnk_080F5848); } } if (gSave.stats.filler3[0] == 0) { LoadRoomEntityList(&gUnk_080F5788); } } u32 sub_0804EFB0() { return 1; } void nullsub_397() { } u32 sub_0804EFB8() { return 1; } extern EntityData gUnk_080F5B3C; void sub_0804EFBC(void) { if (GetInventoryValue(0x38) == 1) { LoadRoomEntityList(&gUnk_080F5B3C); } } u32 sub_0804EFD4() { return 1; } void nullsub_398() { } u32 sub_0804EFDC(void) { if (CheckGlobalFlag(MAROYA_WAKEUP)) { gScreenTransition.field_0xf = 5; } return 1; } extern EntityData gUnk_080F5DD0; extern u32 script_08011C50; void sub_0804EFF8(void) { if (gSave.unk8 > 7) { LoadRoomEntityList(&gUnk_080F5DD0); } if (CheckGlobalFlag(MAROYA_WAKEUP)) { sub_080751E8(1, 2, &script_08011C50); } } u32 sub_0804F02C() { return 1; } extern EntityData gUnk_080F5E68; void sub_0804F030(void) { if (!CheckLocalFlagByOffset(0x100, 0xd1)) { LoadRoomEntityList(&gUnk_080F5E68); } } u32 sub_0804F04C() { return 1; } extern EntityData gUnk_080F5F38; extern EntityData gUnk_080F5F58; extern EntityData gUnk_080F5F78; void sub_0804F050(void) { if (gSave.unk8 > 4) { LoadRoomEntityList(&gUnk_080F5F38); } if (!CheckLocalFlag(0x92)) { LoadRoomEntityList(&gUnk_080F5F58); } else { LoadRoomEntityList(&gUnk_080F5F78); } } u32 sub_0804F08C() { return 1; } void nullsub_399() { } u32 sub_0804F094() { return 1; } void nullsub_400() { } u32 sub_0804F09C(void) { if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByOffset(0x100, 0xdc)) { SetGlobalFlag(WARP_EVENT_END); } return 1; } extern EntityData gUnk_080F61BC; void sub_0804F0C0(void) { if (CheckLocalFlagByOffset(0x100, 0xdc)) { SetLocalFlag(0x90); } if (CheckKinstoneFused(0xf)) { LoadRoomEntityList(&gUnk_080F61BC); } if (!CheckGlobalFlag(WARP_EVENT_END)) { SetTileType(0x4072, 0x4c7, 1); SetTileType(0x4072, 0x507, 1); } sub_08052CA4(8, 0, 0x1e8, 0x158); } u32 sub_0804F128() { return 1; } extern EntityData gUnk_080F62E4; extern EntityData gUnk_080F6324; void sub_0804F12C(void) { if (!CheckGlobalFlag(WARP_EVENT_END)) { LoadRoomEntityList(&gUnk_080F62E4); } else { if (CheckLocalFlag(99)) { LoadRoomEntityList(&gUnk_080F6324); } } } u32 sub_0804F15C() { return 1; } void nullsub_401() { } u32 sub_0804F164() { return 1; } extern EntityData gUnk_080F6564; extern EntityData gUnk_080F6584; void sub_0804F168(void) { if (!CheckLocalFlag(0xb1)) { LoadRoomEntityList(&gUnk_080F6564); } else { LoadRoomEntityList(&gUnk_080F6584); } } u32 sub_0804F18C() { return 1; } extern EntityData gUnk_080F66AC; void sub_0804F190(void) { sub_0805B4D0(5); if (CheckGlobalFlag(LV5_CLEAR) && !CheckLocalFlagByOffset(0x100, 5)) { LoadRoomEntityList(&gUnk_080F66AC); } sub_08052CA4(8, 0, 0x1e8, 0x158); gArea.areaMetadata |= 0x80; } u32 sub_0804F1DC() { return 1; } void nullsub_402() { } u32 sub_0804F1E4() { return 1; } void nullsub_403() { } u32 sub_0804F1EC() { return 1; } void nullsub_404() { } u32 sub_0804F1F4() { return 1; } void nullsub_405() { } u32 sub_0804F1FC() { return 1; } void nullsub_406() { } u32 sub_0804F204() { return 1; } void nullsub_407() { } u32 sub_0804F20C() { return 1; } void nullsub_408() { } u32 sub_0804F214() { return 1; } void nullsub_409() { } u32 sub_0804F21C() { return 1; } void nullsub_410() { } u32 sub_0804F224() { return 1; } void nullsub_411() { } u32 sub_0804F22C() { return 1; } void sub_0804F230() { sub_0805ADD8(0); } u32 sub_0804F23C(void) { if (!CheckLocalFlag(0x6d)) { DoFade(7, 0x100); } SetGlobalFlag(OUTDOOR); return 1; } extern EntityData gUnk_080F70A8; extern EntityData gUnk_080F70D8; extern EntityData gUnk_080F7088; void sub_0804F25C(void) { sub_0805ADD8(0); if (!CheckLocalFlag(0x6d)) { LoadRoomEntityList(&gUnk_080F70A8); ClearGlobalFlag(ZELDA_CHASE); } if (!CheckGlobalFlag(TABIDACHI)) { gArea.pMusicIndex = 0x10; } if ((gSave.windcrests & 0x40000000) == 0) { LoadRoomEntityList(&gUnk_080F70D8); } if (gSave.unk8 > 3) { LoadRoomEntityList(&gUnk_080F7088); } } void sub_0804F2C8(void) { if ((gSave.windcrests & 0x40000000) == 0) { LoadRoomEntityList(&gUnk_080F70D8); } } u32 sub_0804F2E8() { return 1; } void sub_0804F2EC() { sub_0805ADD8(0); } u32 sub_0804F2F8() { return 1; } void sub_0804F2FC() { sub_0805ADD8(0); } extern u32 gUnk_080F7680; u32 sub_0804f308(void) { if (GetInventoryValue(0x11) && !GetInventoryValue(0x12)) { gRoomVars.field_0x74 = &gUnk_080F7680; } return 1; } extern EntityData gUnk_080F7500; extern EntityData gUnk_080F7550; void sub_0804F330(void) { sub_0805ADD8(0); if (gSave.unk8 > 3) { LoadRoomEntityList(&gUnk_080F7500); } if (GetInventoryValue(0x11) && !GetInventoryValue(0x12)) { LoadRoomEntityList(&gUnk_080F7550); SetTileType(0x4072, 0x311, 1); SetTileType(0x4072, 0x351, 1); SetTileType(0x4072, 0x3d9, 1); SetTileType(0x4072, 0x419, 1); } } u32 sub_0804F3AC() { return 1; } extern EntityData gUnk_080F77F0; extern EntityData gUnk_080F77C0; extern EntityData gUnk_080F7810; extern EntityData gUnk_080F7860; extern EntityData gUnk_080F78A0; void sub_0804F3B0(void) { sub_0805ADD8(0); if (CheckLocalFlagByOffset(0x200, 0x8f)) { if (!CheckGlobalFlag(INLOCK)) { LoadRoomEntityList(&gUnk_080F77C0); } } else if (GetInventoryValue(0x40)) { LoadRoomEntityList(&gUnk_080F77F0); } if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(0x40)) { LoadRoomEntityList(&gUnk_080F7810); } if (!CheckKinstoneFused(0x29)) { LoadRoomEntityList(&gUnk_080F7860); SetTile(0x4072, 0xd88, 1); SetTile(0x4096, 0xdc8, 1); } if ((gSave.unk8 > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { LoadRoomEntityList(&gUnk_080F78A0); } } extern u32 gUnk_080F7CD0; extern void sub_0804F5E8(); extern u32 gUnk_080F7C80; extern void sub_0804F4E4(); u32 Vars_HyruleField_OutsideCastle(void) { if (CheckGlobalFlag(TABIDACHI) && !GetInventoryValue(0x11)) { gRoomVars.field_0x6c = &gUnk_080F7CD0; gRoomVars.field_0x88 = sub_0804F5E8; } if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x8c)) { gRoomVars.field_0x6c = &gUnk_080F7C80; gRoomVars.field_0x88 = sub_0804F4E4; gRoomVars.field_0x74 = NULL; } if (CheckGlobalFlag(TABIDACHI)) { ClearGlobalFlag(CASTLE_BGM); } return 1; } void sub_0804F4E4() { sub_0805ADD8(0); sub_0804F578(); } extern EntityData gUnk_080F7D70; void Load_HyruleField_OutsideCastle(void) { sub_0804F4E4(); if (!CheckLocalFlag(0x8b)) { LoadRoomEntityList(&gUnk_080F7D70); SetTileType(0x174, 0x7a2, 1); SetTileType(0x174, 0x7a3, 1); SetTileType(0x174, 0x7a5, 1); SetTileType(0x174, 0x7a6, 1); SetTileType(0x174, 0x7a7, 1); } if (!CheckGlobalFlag(TABIDACHI)) { gArea.pMusicIndex = 0x13; } } extern EntityData gUnk_080F7DC0; void sub_0804F578(void) { if (!CheckLocalFlag(0x8e)) { LoadRoomEntityList(&gUnk_080F7DC0); } else { SetTileType(0x37, 0x94a, 1); SetTileType(0x37, 0x94b, 1); SetTileType(0x37, 0x94c, 1); SetTileType(0x37, 0x98a, 1); SetTileType(0x37, 0x98b, 1); SetTileType(0x37, 0x98c, 1); } } void sub_0804F5E8(void) { sub_0804F4E4(); SetTileType(0x1d3, 0xbde, 1); SetTileType(0x1d6, 0xbe2, 1); SetTileType(0x1d4, 0xc1f, 1); SetTileType(0x1d5, 0xc20, 1); SetTileType(0x1d6, 0xc5e, 1); SetTileType(0x4072, 0xb9b, 1); SetTileType(0x4072, 0xbdb, 1); SetTileType(0x4072, 0xaa4, 1); SetTileType(0x4072, 0xae4, 1); } void sub_0804F680(Entity* parent, s32 x, s32 y) { Entity* fx; fx = CreateFx(parent, 2, 0); if (fx != NULL) { fx->x.HALF.HI = gRoomControls.roomOriginX + x; fx->y.HALF.HI = gRoomControls.roomOriginY + y; } } void sub_0804F6A8(Entity* this) { sub_0804F680(this, 0x1d8, 0x108); sub_0804F680(this, 0x218, 0x188); } void sub_0804F6C8(Entity* this) { sub_0804F680(this, 0x1e8, 0x108); sub_0804F680(this, 0x208, 0x188); } void sub_0804F6E8(Entity* this) { sub_0804F680(this, 0x1f8, 0x108); sub_0804F680(this, 0x258, 0x138); sub_0804F680(this, 0x1f8, 0x188); sub_0804F680(this, 0x198, 0x158); } void sub_0804F724(Entity* this) { sub_0804F680(this, 0x208, 0x108); sub_0804F680(this, 0x258, 0x148); sub_0804F680(this, 0x1e8, 0x188); sub_0804F680(this, 0x198, 0x148); } void sub_0804F760(Entity* this) { sub_0804F680(this, 0x218, 0x108); sub_0804F680(this, 0x258, 0x158); sub_0804F680(this, 0x1d8, 0x188); sub_0804F680(this, 0x198, 0x138); } void sub_0804F79C(Entity* parent) { Entity* fx; fx = CreateFx(parent, 0x35, 0); if (fx != NULL) { fx->spriteRendering.b3 = 0; fx->x.HALF.HI = gRoomControls.roomOriginX + 0x1b8; fx->y.HALF.HI = gRoomControls.roomOriginY + 0x148; } fx = CreateFx(parent, 0x35, 0); if (fx != NULL) { fx->spriteRendering.b3 = 0; fx->x.HALF.HI = gRoomControls.roomOriginX + 0x238; fx->y.HALF.HI = gRoomControls.roomOriginY + 0x148; } } void sub_0804F808(void) { SetTileType(0x1d3, 0x41d, 1); SetTileType(0x1d3, 0x621, 1); } void sub_0804F830(void) { SetTileType(0x1d4, 0x41e, 1); SetTileType(0x1d4, 0x620, 1); } void sub_0804F854(void) { SetTileType(0x1d5, 0x41f, 1); SetTileType(0x1d4, 0x4e5, 1); SetTileType(0x1d5, 0x61f, 1); SetTileType(0x1d4, 0x559, 1); } void sub_0804F89C(void) { SetTileType(0x1d6, 0x420, 1); SetTileType(0x1d5, 0x525, 1); SetTileType(0x1d6, 0x61e, 1); SetTileType(0x1d5, 0x519, 1); } void sub_0804F8E0(void) { SetTileType(0x1d3, 0x421, 1); SetTileType(0x1d6, 0x565, 1); SetTileType(0x1d3, 0x61d, 1); SetTileType(0x1d6, 0x4d9, 1); } void sub_0804F928(void) { sub_0807BA8C(0x41d, 1); sub_0807BA8C(0x621, 1); } void sub_0804F944(void) { sub_0807BA8C(0x41e, 1); sub_0807BA8C(0x620, 1); } void sub_0804F960(void) { sub_0807BA8C(0x41f, 1); sub_0807BA8C(0x4e5, 1); sub_0807BA8C(0x61f, 1); sub_0807BA8C(0x559, 1); } void sub_0804F994(void) { sub_0807BA8C(0x420, 1); sub_0807BA8C(0x525, 1); sub_0807BA8C(0x61e, 1); sub_0807BA8C(0x519, 1); } void sub_0804F9C8(void) { sub_0807BA8C(0x421, 1); sub_0807BA8C(0x565, 1); sub_0807BA8C(0x61d, 1); sub_0807BA8C(0x4d9, 1); } u32 Vars_HyruleField_OutsideCastleWest() { return 1; } extern EntityData gUnk_080F806C; void Load_HyruleField_OutsideCastleWest(void) { sub_0805ADD8(0); if ((gSave.unk8 > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { LoadRoomEntityList(&gUnk_080F806C); } } u32 Vars_HyruleField_TrilbyHighlands() { return 1; } extern EntityData gUnk_080F82E0; void Load_HyruleField_TrilbyHighlands(void) { sub_0805ADD8(0); if (CheckGlobalFlag(LV2_CLEAR) && GetInventoryValue(0x3) && !CheckLocalFlag(0x9c)) { LoadRoomEntityList(&gUnk_080F82E0); } } u32 sub_0804FA64() { return 1; } extern EntityData gUnk_080F8430; void sub_0804FA68(void) { sub_0805ADD8(0); if (CheckKinstoneFused(0x21) && !CheckLocalFlagByOffset(0x200, 0x42)) { LoadRoomEntityList(&gUnk_080F8430); } } u32 sub_0804FA94() { return 1; } extern EntityData gUnk_080F85F8; extern EntityData gUnk_080F85D8; void sub_0804FA98(void) { if (CheckGlobalFlag(SOUGEN_06_HASHIGO)) { LoadRoomEntityList(&gUnk_080F85D8); } else { LoadRoomEntityList(&gUnk_080F85F8); } if (!GetInventoryValue(0xc)) { ClearLocalFlag(8); } } u32 sub_0804FACC() { return 1; } void nullsub_412() { } u32 sub_0804FAD4() { return 1; } void nullsub_413() { } u32 sub_0804FADC() { return 1; } void nullsub_414() { } u32 sub_0804FAE4() { return 1; } void nullsub_415() { } u32 sub_0804FAEC() { return 1; } void nullsub_416() { } u32 sub_0804FAF4() { return 1; } void nullsub_417() { } u32 sub_0804FAFC() { return 1; } void nullsub_418() { } u32 sub_0804FB04() { return 1; } void nullsub_419() { } u32 sub_0804FB0C() { return 1; } void nullsub_420() { } u32 sub_0804FB14() { return 1; } void nullsub_421() { } u32 sub_0804FB1C() { return 1; } void nullsub_422() { } u32 sub_0804FB249() { return 1; } void nullsub_423() { } u32 sub_0804FB2C() { return 1; } void sub_0804FB30(void) { if (CheckLocalFlag(0x11)) { SetRoomFlag(0); SetRoomFlag(1); sub_0805308C(0x100); if (!CheckLocalFlag(0x12)) { SetTileType(0x73, 0xcb, 1); } } } u32 sub_0804FB68() { return 1; } void nullsub_089() { } u32 sub_0804FB70() { return 1; } void nullsub_90() { } u32 sub_0804FB78() { return 1; } void nullsub_91() { } u32 sub_0804FB80() { return 1; } void nullsub_92() { } u32 sub_0804FB88() { return 1; } void nullsub_93() { } u32 sub_0804FB90() { return 1; } void nullsub_94() { } u32 sub_0804FB98() { return 1; } void nullsub_95() { } u32 sub_0804FBA0() { return 1; } void nullsub_96() { } u32 sub_0804FBA8() { return 1; } void nullsub_97() { } u32 sub_0804FBB09() { return 1; } void nullsub_98() { } u32 sub_0804FBB8() { return 1; } extern EntityData gUnk_080F9304; void sub_0804FBBC(void) { if ((gSave.windcrests & 0x2000000) == 0) { LoadRoomEntityList(&gUnk_080F9304); } } void sub_0804FBDC(void) { if ((gSave.windcrests & 0x2000000) == 0) { LoadRoomEntityList(&gUnk_080F9304); } } u32 sub_0804FBFC() { return 1; } void nullsub_424() { } u32 sub_0804FC04() { return 1; } void nullsub_425() { } u32 sub_0804FC0C() { return 1; } void nullsub_426() { } u32 sub_0804FC14() { return 1; } void nullsub_427() { } u32 sub_0804FC1C() { return 1; } void nullsub_428() { } u32 sub_0804FC24() { return 1; } void nullsub_429() { } u32 sub_0804FC2C() { return 1; } void nullsub_430() { } u32 sub_0804FC34() { return 1; } void nullsub_431() { } u32 sub_0804FC3C() { return 1; } void nullsub_432() { } u32 sub_0804FC44() { return 1; } void nullsub_433() { } extern u32 gUnk_080F9BF8; u32 sub_0804FC4C(void) { if (!CheckKinstoneFused(0xe)) { gRoomVars.field_0x6c = &gUnk_080F9BF8; } return 1; } void sub_0804FC6C() { sub_0805B4D0(2); sub_0806D0B0(0); } u32 sub_0804FC7C() { return 1; } void nullsub_99() { } u32 sub_0804FC84() { return 1; } void nullsub_100() { } u32 sub_0804FC8C() { return 1; } void nullsub_101() { } u32 sub_0804FC94() { return 1; } void nullsub_102() { } u32 sub_0804FC9C() { return 1; } void nullsub_103() { } u32 sub_0804FCA4() { return 1; } extern EntityData gUnk_080F9FA8; extern EntityData gUnk_080F9F88; void sub_0804FCA8(void) { if (CheckKinstoneFused(0x14)) { LoadRoomEntityList(&gUnk_080F9FA8); } if (!GetInventoryValue(0x38)) { LoadRoomEntityList(&gUnk_080F9F88); } } u32 sub_0804FCD4() { return 1; } void nullsub_434() { } u32 sub_0804FCDC() { return 1; } void nullsub_435() { } u32 sub_0804FCE4() { return 1; } void nullsub_436() { } u32 sub_0804FCEC() { return 1; } void nullsub_437() { } u32 sub_0804FCF4() { return 1; } void nullsub_438() { } u32 sub_0804FCFC() { return 1; } void nullsub_439() { } u32 sub_0804FD04() { return 1; } void nullsub_440() { } u32 sub_0804FD0C() { return 1; } void nullsub_441() { } u32 sub_0804FD14() { return 1; } void nullsub_442() { } u32 sub_0804FD1C() { return 1; } void nullsub_443() { } u32 sub_0804FD24() { return 1; } void nullsub_444() { } u32 sub_0804FD2C() { return 1; } void nullsub_445() { } u32 sub_0804FD34() { return 1; } void nullsub_446() { } u32 sub_0804FD3C() { return 1; } void nullsub_447() { } u32 sub_0804FD44() { return 1; } void nullsub_448() { } u32 sub_0804FD4C() { return 1; } void nullsub_449() { } u32 sub_0804FD54() { return 1; } extern EntityData gUnk_080FA5D0; void sub_0804FD58(void) { if (!CheckKinstoneFused(0x21)) { LoadRoomEntityList(&gUnk_080FA5D0); } } u32 sub_0804FD70() { return 1; } void nullsub_450() { } u32 sub_0804FD78() { return 1; } void nullsub_451() { } u32 sub_0804FD80() { return 1; } void nullsub_452() { } u32 sub_0804FD88() { return 1; } void nullsub_453() { } u32 sub_0804FD90() { return 1; } void nullsub_454() { } u32 sub_0804FD98() { return 1; } void nullsub_455() { } u32 sub_0804FDA0() { return 1; } void nullsub_456() { } u32 sub_0804FDA8() { return 1; } void nullsub_457() { } u32 sub_0804FDB0() { return 1; } void nullsub_458() { } u32 sub_0804FDB8() { return 1; } void nullsub_459() { } u32 sub_0804FDC0() { return 1; } void nullsub_460() { } u32 sub_0804FDC8() { return 1; } void nullsub_461() { } u32 sub_0804FDD0() { return 1; } void nullsub_462() { } u32 sub_0804FDD8() { return 1; } void nullsub_463() { } extern u32 gUnk_080FAD48; u32 sub_0804FDE0(void) { if (CheckGlobalFlag(ENDING)) { gRoomVars.field_0x6c = &gUnk_080FAD48; gRoomVars.field_0x74 = NULL; } return 1; } extern EntityData gUnk_080FACB8; void sub_0804FE04(void) { if (CheckGlobalFlag(ENDING)) { gArea.pMusicIndex = gArea.musicIndex; } else { LoadRoomEntityList(&gUnk_080FACB8); } sub_0805B4D0(0); sub_08059994(); } void sub_0804FE40() { sub_0805B4D0(0); } u32 sub_0804FE4C() { return 1; } void nullsub_104() { } u32 sub_0804FE54() { return 1; } extern EntityData gUnk_080FAFE4; extern EntityData gUnk_080FB004; void sub_0804FE58(void) { sub_0805B4D0(1); if (CheckGlobalFlag(LV2_CLEAR) && !CheckLocalFlag(LV1_CLEAR)) { LoadRoomEntityList(&gUnk_080FAFE4); } if ((gSave.windcrests & 0x1000000) == 0) { LoadRoomEntityList(&gUnk_080FB004); } if (GetInventoryValue(0x2)) { SetGlobalFlag(WHITE_SWORD_END); } } void sub_0804FEAC(void) { if ((gSave.windcrests & 0x1000000) == 0) { LoadRoomEntityList(&gUnk_080FB004); } } u32 sub_0804FECC() { return 1; } void nullsub_464() { } u32 sub_0804FED4() { return 1; } void sub_0804FED8(void) { SetTileType(0x176, 0x66f, 1); } u32 sub_0804FEEC() { return 1; } void nullsub_465() { } u32 sub_0804FEF4() { return 1; } void nullsub_466() { } u32 sub_0804FEFC() { return 1; } void nullsub_467() { } u32 sub_0804FF04() { return 1; } void nullsub_468() { } u32 sub_0804FF0C() { return 1; } void nullsub_469() { } u32 sub_0804FF14() { return 1; } void nullsub_470() { } u32 sub_0804FF1C() { return 1; } void nullsub_471() { } u32 sub_0804FF24() { return 1; } void nullsub_472() { } u32 sub_0804FF2C() { return 1; } void nullsub_473() { } u32 sub_0804FF34() { return 1; } void nullsub_474() { } u32 sub_0804FF3C() { return 1; } void nullsub_475() { } u32 sub_0804FF44() { return 1; } void nullsub_476() { } u32 sub_0804FF4C() { return 1; } void nullsub_477() { } u32 sub_0804FF54() { return 1; } void nullsub_478() { } u32 sub_0804FF5C() { return 1; } void sub_0804FF60(void) { if (!CheckLocalFlag(0x70)) { SetLocalFlag(0x70); } } u32 sub_0804FF74() { return 1; } void nullsub_105() { } u32 sub_0804FF7C() { return 1; } void nullsub_106() { } void sub_0804FF84(u32 arg0) { ((struct_02000000*)0x02000000)->brightnessPref = arg0; gUsedPalettes = (u32)-1; }