From d04675e6c8de446745921583c3dde7c317b0a56b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 19 Dec 2022 00:52:06 +0200 Subject: [PATCH 01/86] Match sub_08079550 --- asm/non_matching/playerUtils/sub_08079550.inc | 218 ------------------ src/playerUtils.c | 49 +++- 2 files changed, 48 insertions(+), 219 deletions(-) delete mode 100644 asm/non_matching/playerUtils/sub_08079550.inc diff --git a/asm/non_matching/playerUtils/sub_08079550.inc b/asm/non_matching/playerUtils/sub_08079550.inc deleted file mode 100644 index 0dcf64c4..00000000 --- a/asm/non_matching/playerUtils/sub_08079550.inc +++ /dev/null @@ -1,218 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - ldr r0, _080795A8 @ =gDiggingCaveEntranceTransition - ldrb r0, [r0, #8] - cmp r0, #0 - beq _08079562 - b _080796FC -_08079562: - ldr r2, _080795AC @ =gPlayerState - ldrb r0, [r2, #0x1e] - cmp r0, #0 - beq _08079576 - ldr r0, [r2, #0x30] - movs r1, #0x80 - lsls r1, r1, #3 - ands r0, r1 - cmp r0, #0 - beq _080795B4 -_08079576: - adds r0, r2, #0 - adds r0, #0x26 - ldrb r0, [r0] - ldr r1, _080795B0 @ =gPlayerEntity - mov r8, r1 - cmp r0, #0 - bne _080795A0 - ldrb r1, [r2, #0x1b] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - bne _080795A0 - mov r3, r8 - ldrb r1, [r3, #0x15] - ldrb r2, [r2, #0xd] - cmp r1, r2 - bne _080795A0 - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080795B4 -_080795A0: - movs r0, #0 - mov r5, r8 - strb r0, [r5, #0xf] - b _080796FE - .align 2, 0 -_080795A8: .4byte gDiggingCaveEntranceTransition -_080795AC: .4byte gPlayerState -_080795B0: .4byte gPlayerEntity -_080795B4: - bl sub_08079778 - cmp r0, #0 - bne _080795BE - b _080796FC -_080795BE: - ldr r3, _08079610 @ =gPlayerEntity - ldrb r2, [r3, #0x14] - movs r0, #6 - ands r0, r2 - ldr r1, _08079614 @ =gUnk_0811C100 - adds r1, r0, r1 - movs r0, #2 - ands r0, r2 - mov r8, r3 - cmp r0, #0 - beq _0807961C - movs r6, #0x2e - ldrsh r2, [r3, r6] - movs r0, #0 - ldrsb r0, [r1, r0] - adds r2, r2, r0 - ldr r4, _08079618 @ =gRoomControls - ldrh r0, [r4, #6] - subs r2, r2, r0 - asrs r2, r2, #4 - movs r3, #0x3f - ands r2, r3 - mov r0, r8 - movs r5, #0x32 - ldrsh r1, [r0, r5] - ldr r0, [r0, #0x48] - ldrb r5, [r0, #3] - adds r0, r1, r5 - ldrh r4, [r4, #8] - subs r0, r0, r4 - asrs r0, r0, #4 - ands r0, r3 - lsls r7, r0, #6 - orrs r7, r2 - subs r1, r1, r5 - subs r1, r1, r4 - asrs r1, r1, #4 - ands r1, r3 - lsls r4, r1, #6 - orrs r4, r2 - b _0807965E - .align 2, 0 -_08079610: .4byte gPlayerEntity -_08079614: .4byte gUnk_0811C100 -_08079618: .4byte gRoomControls -_0807961C: - mov r6, r8 - movs r0, #0x2e - ldrsh r2, [r6, r0] - ldr r0, [r6, #0x48] - ldrb r0, [r0, #4] - mov ip, r0 - adds r0, r2, r0 - ldr r4, _080796EC @ =gRoomControls - ldrh r3, [r4, #6] - mov sb, r3 - subs r0, r0, r3 - asrs r7, r0, #4 - movs r3, #0x3f - ands r7, r3 - movs r5, #0x32 - ldrsh r0, [r6, r5] - ldrb r1, [r1, #1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r0, r0, r1 - ldrh r1, [r4, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r7, r0 - mov r6, ip - subs r2, r2, r6 - mov r1, sb - subs r2, r2, r1 - asrs r4, r2, #4 - ands r4, r3 - orrs r4, r0 -_0807965E: - adds r0, r7, #0 - mov r5, r8 - adds r5, #0x38 - ldrb r1, [r5] - bl sub_080B1AE0 - adds r3, r0, #0 - ldr r6, _080796F0 @ =gUnk_0811C1E8 - mov r1, r8 - ldrb r0, [r1, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #2 - adds r0, r0, r6 - ldr r1, [r0] - adds r0, r3, #0 - bl sub_08007DD6 - adds r3, r0, #0 - cmp r3, #0 - beq _080796FC - adds r0, r4, #0 - ldrb r1, [r5] - bl sub_080B1AE0 - adds r3, r0, #0 - mov r5, r8 - ldrb r0, [r5, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #2 - adds r0, r0, r6 - ldr r1, [r0] - adds r0, r3, #0 - bl sub_08007DD6 - adds r3, r0, #0 - cmp r3, #0 - beq _080796FC - ldr r1, _080796F4 @ =gPlayerState - ldrb r2, [r1, #6] - movs r0, #0x80 - orrs r0, r2 - strb r0, [r1, #6] - ldrb r0, [r1, #0x1e] - adds r4, r1, #0 - cmp r0, #0 - bne _080796C8 - ldrb r0, [r5, #0xf] - adds r0, #1 - strb r0, [r5, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #5 - bls _080796FC -_080796C8: - ldr r0, _080796F8 @ =gPlayerEntity - subs r1, r3, #1 - movs r2, #0 - strb r1, [r0, #0x14] - movs r1, #4 - strb r1, [r0, #0xc] - strb r2, [r0, #0xd] - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - movs r1, #0x81 - strb r1, [r4, #2] - bl DoPlayerAction - movs r0, #1 - b _080796FE - .align 2, 0 -_080796EC: .4byte gRoomControls -_080796F0: .4byte gUnk_0811C1E8 -_080796F4: .4byte gPlayerState -_080796F8: .4byte gPlayerEntity -_080796FC: - movs r0, #0 -_080796FE: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/src/playerUtils.c b/src/playerUtils.c index 766da0ff..5b71aebe 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1763,7 +1763,54 @@ u32 sub_0807953C(void) { return gPlayerState.playerInput.newInput & tmp; } -ASM_FUNC("asm/non_matching/playerUtils/sub_08079550.inc", u32 sub_08079550(void)) +bool32 sub_08079550(void) { + const s8* ptr; + u32 uVar3; + u32 tilePos2; + u32 tilePos1; + + if (gDiggingCaveEntranceTransition.isDiggingCave == 0) { + if ((gPlayerState.dash_state == 0 || (gPlayerState.flags & PL_BURNING)) && + (gPlayerState.swim_state != 0 || (gPlayerState.sword_state & 0x40) || + gPlayerEntity.direction != gPlayerState.direction || (gPlayerEntity.direction & 0x80))) { + gPlayerEntity.subtimer = 0; + return FALSE; + } + if (sub_08079778()) { + ptr = &gUnk_0811C100[gPlayerEntity.animationState & 6]; + if ((gPlayerEntity.animationState & 2) != 0) { + tilePos1 = COORD_TO_TILE_OFFSET(&gPlayerEntity, -ptr[0], -(gPlayerEntity.hitbox)->unk2[1]); + tilePos2 = COORD_TO_TILE_OFFSET(&gPlayerEntity, -ptr[0], +(gPlayerEntity.hitbox)->unk2[1]); + } else { + + tilePos1 = COORD_TO_TILE_OFFSET(&gPlayerEntity, -(gPlayerEntity.hitbox)->unk2[2], -ptr[1]); + tilePos2 = COORD_TO_TILE_OFFSET(&gPlayerEntity, (gPlayerEntity.hitbox)->unk2[2], -ptr[1]); + } + + uVar3 = sub_080B1AE0(tilePos1, gPlayerEntity.collisionLayer); + uVar3 = sub_08007DD6(uVar3, gUnk_0811C1E8[gPlayerEntity.animationState >> 1]); + if (uVar3 != 0) { + uVar3 = sub_080B1AE0(tilePos2, gPlayerEntity.collisionLayer); + uVar3 = sub_08007DD6(uVar3, gUnk_0811C1E8[gPlayerEntity.animationState >> 1]); + if (uVar3 != 0) { + gPlayerState.pushedObject |= 0x80; + if (gPlayerState.dash_state == 0 && (++gPlayerEntity.subtimer <= 5)) { + return FALSE; + } + + gPlayerEntity.animationState = uVar3 - 1; + gPlayerEntity.action = 4; + gPlayerEntity.subAction = 0; + COLLISION_OFF(&gPlayerEntity); + gPlayerState.jump_status = 0x81; + DoPlayerAction(&gPlayerEntity); + return TRUE; + } + } + } + } + return FALSE; +} void sub_08079708(Entity* this) { gPlayerState.framestate = PL_STATE_DIE; From b7183222215bd357b687f96c09e717e0bade45da Mon Sep 17 00:00:00 2001 From: TomRiddle01 Date: Thu, 29 Dec 2022 22:50:03 +0100 Subject: [PATCH 02/86] first attempt at automated comments --- include/flags.h | 2556 +++++++++++++++++++++++------------------------ 1 file changed, 1278 insertions(+), 1278 deletions(-) diff --git a/include/flags.h b/include/flags.h index 4bd53cb0..cc223fbe 100644 --- a/include/flags.h +++ b/include/flags.h @@ -177,275 +177,275 @@ typedef enum { typedef enum { BEGIN_1, - LV1_CLEAR_MES, - LV2_CLEAR_MES, - LV3_CLEAR_MES, - LV4_CLEAR_MES, - LV5_CLEAR_MES, - MIZUUMI_00_BENT, - MIZUUMI_00_00, - MIZUUMI_00_H00, - MIZUUMI_00_H01, - MIZUUMI_00_H02, + LV1_CLEAR_MES, /* Ezlo talks about going to Elder after Earth Element in Outside Deepwood Shrine */ + LV2_CLEAR_MES, /* Ezlo talks after exiting with the Fire Element in Outside Cave of Flames */ + LV3_CLEAR_MES, /* Ezlo talks about the Wind Element in Outside Fortress of Winds */ + LV4_CLEAR_MES, /* King Gustaf Talks to Link in Lake Hylia, after Temple of Droplets */ + LV5_CLEAR_MES, /* Ezlo talks after completing Palace of Winds in Wind Tribe Tower Roof */ + MIZUUMI_00_BENT, /* Minish Tree Pegasus Bonked in Lake Hylia */ + MIZUUMI_00_00, /* West Shortcut Open in Lake Hylia */ + MIZUUMI_00_H00, /* Obtained Heart Piece in Lake Hylia, north */ + MIZUUMI_00_H01, /* Obtained Heart Piece in Lake Hylia, next to Stockwell's House */ + MIZUUMI_00_H02, /* Obtained Heart Piece in Lake Hylia, south */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) MIZUUMI_00_CAP_0, #else HIKYOU_00_T0, HIKYOU_00_T1, #endif - MAENIWA_00_00, + MAENIWA_00_00, /* Ladder to Hyrule Castle Basement revealed in Hyrule Castle Garden */ MAENIWA_00_01, - MAENIWA_00_02, - MAENIWA_00_BENT, - MAENIWA_00_WARP, - MAENIWA_00_T0, - MAENIWA_00_T1, - MAENIWA_00_CAP_0, - NAKANIWA_00_EZERO, - HIKYOU_00_00, - HIKYOU_00_01, + MAENIWA_00_02, /* Ladder to Grimblade revealed in Hyrule Castle Garden */ + MAENIWA_00_BENT, /* Minish Tree Pegasus Bonked in Hyrule Castle Garden */ + MAENIWA_00_WARP, /* Caught by guard in Hyrule Castle Garden, after Water Element */ + MAENIWA_00_T0, /* 100 Shell Chest Open in Hyrule Castle Garden (Water Entry) */ + MAENIWA_00_T1, /* 200 Rupee Chest Open in Hyrule Castle Garden (Water Entry) */ + MAENIWA_00_CAP_0, /* Ezlo talks about Castle entrance in Hyrule Castle Garden */ + NAKANIWA_00_EZERO, /* Ezlo talks about Sanctuary entrance in Hyrule Castle Entrance to Sanctuary */ + HIKYOU_00_00, /* Middle shortcut open in Castor Wilds */ + HIKYOU_00_01, /* South shortcut open in Castor Wilds */ HIKYOU_00_02, HIKYOU_00_03, HIKYOU_00_04, - HIKYOU_00_CAP_0, - HIKYOU_00_CAP_1, - HIKYOU_00_CAP_2, - HIKYOU_00_SEKIZOU, - HIKYOU_00_14, - HIKYOU_00_BOSEKI, + HIKYOU_00_CAP_0, /* Ezlo talks about Castor Wilds in Castor Wilds, entrance */ + HIKYOU_00_CAP_1, /* Ezlo talks about sinking in the swamp in Castor Wilds */ + HIKYOU_00_CAP_2, /* Ezlo talks about Eyegore in Castor Wilds */ + HIKYOU_00_SEKIZOU, /* Square block destroyed in Castor Wilds */ + HIKYOU_00_14, /* North shortcut open in Castor Wilds */ + HIKYOU_00_BOSEKI, /* Opened Swiftblade I's Grave in Castor Wilds */ #if defined(EU) || defined(JP) || defined(DEMO_JP) HIKYOU_00_H00, #endif - HIKYOU_00_M0, - HIKYOU_00_M1, - HIKYOU_00_M2, + HIKYOU_00_M0, /* Red W Kinstone Obtained in Castor Wilds, underwater */ + HIKYOU_00_M1, /* Red (> Kinstone Obtained in Castor Wilds, underwater */ + HIKYOU_00_M2, /* Red 3 Prong Kinstone Obtained in Castor Wilds, underwater */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) HIKYOU_00_T1, #endif - LOST_00_ENTER, - LOST_00_00, - LOST_00_01, - LOST_02_00, + LOST_00_ENTER, /* ??? in Wind Ruins */ + LOST_00_00, /* Shortcut 1 Open in Wind Ruins */ + LOST_00_01, /* Blew up wall to chest cave in Wind Ruins */ + LOST_02_00, /* Defeated Tektites in Wind Ruins */ LOST_03_00, LOST_03_T0, - LOST_04_00, - LOST_04_SIBA0, - LOST_04_SIBA1, - LOST_04_SIBA2, - LOST_04_SIBA3, - LOST_04_SIBA4, - LOST_05_00, - LOST_05_01, + LOST_04_00, /* Shortcut 2 Open in Wind Ruins */ + LOST_04_SIBA0, /* Cut top grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA1, /* Cut middle grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA2, /* Cut left grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA3, /* Cut right grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA4, /* Cut bottom grass in Wind Ruins Minish Grass Path */ + LOST_05_00, /* Defeated Armoses in Wind Ruins Running Armos */ + LOST_05_01, /* Defeated Beetles & Ropes in Wind Ruins */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) LOST_05_02, LOST_05_03, #endif - LOST_05_T0, - LOST_05_T1, - MORI_00_HIBI_0, - MORI_00_HIBI_1, - MORI_00_HIBI_2, - MORI_00_HIBI_3, - MORI_00_HIBI_4, - MORI_00_KOBITO, - MORI_00_H0, - MORI_00_H1, - MORI_ENTRANCE_1ST, - YAMA_00_00, - YAMA_00_01, - YAMA_01_BW00, - YAMA_02_00, - YAMA_03_00, - YAMA_03_01, - YAMA_03_02, - YAMA_03_DOKU_0, - YAMA_03_DOKU_1, - YAMA_03_DOKU_2, - YAMA_04_CAP_0, + LOST_05_T0, /* 100 Rupee Chest Open in Wind Ruins */ + LOST_05_T1, /* 50 Shell Chest Open in Wind Ruins */ + MORI_00_HIBI_0, /* Left rock "blown up in Minish Woods */ + MORI_00_HIBI_1, /* Right rock "blown up in Minish Woods */ + MORI_00_HIBI_2, /* Blew up left rock in Minish Woods */ + MORI_00_HIBI_3, /* Blew up middle rock in Minish Woods */ + MORI_00_HIBI_4, /* Blew up right rock in Minish Woods */ + MORI_00_KOBITO, /* Ezlo explains Minish Portals 1 in Minish Woods */ + MORI_00_H0, /* Obtained Heart Piece (Witch's Hut) in Minish Woods */ + MORI_00_H1, /* Obtained Heart Piece (Next to Deepwood) in Minish Woods */ + MORI_ENTRANCE_1ST, /* Ezlo explains Minish Portals 2 in Minish Woods */ + YAMA_00_00, /* Middle Rock Pushed to Hole in Rainy Mount Crenel */ + YAMA_00_01, /* Right Rock Pushed to Hole in Rainy Mount Crenel */ + YAMA_01_BW00, /* Great Fairy Fountain cave blown open in Mount Crenel Wall */ + YAMA_02_00, /* Cave to Grip Ring Business Scrub blown open in Mount Crenel */ + YAMA_03_00, /* Fairy Heart Piece cave blown open in Mount Crenel */ + YAMA_03_01, /* Crenel Mines" cave blown open in Mount Crenel */ + YAMA_03_02, /* Heart Piece cave blown open in Mount Crenel */ + YAMA_03_DOKU_0, /* Pathway tile to cave "blown up in Mount Crenel, front of Heart Piece cave */ + YAMA_03_DOKU_1, /* Upper wall tile "blown up in Mount Crenel Wall Entrance */ + YAMA_03_DOKU_2, /* Bottom wall tile "blown up in Mount Crenel Wall Entrance */ + YAMA_04_CAP_0, /* Ezlo talks about Whirlwind in Mount Crenel Base */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) YAMA_04_CAP_1, #endif - YAMA_04_R00, + YAMA_04_R00, /* Grabbed Red Rupee in Mount Crenel Base */ YAMA_04_HIBI_0, - YAMA_04_HIBI_1, - YAMA_04_00, - YAMA_04_01, - YAMA_04_04, - YAMA_04_05, - YAMA_04_06, - YAMA_04_ENTHOUSHI, - YAMA_04_ANAHOUSHI, - YAMA_04_BOMBWALL0, - HAKA_BUNSHIN_00, - HAKA_BOSEKI_00, - HAKA_BOSEKI_01, - HAKA_BOSEKI_02, - HAKA_00_CAP_0, - HAKA_00_BW00, - HAKA_01_T0, - HAKA_KEY_GET, - SOUGEN_01_WAKAGI_0, - SOUGEN_01_WAKAGI_1, - SOUGEN_01_WAKAGI_2, - SOUGEN_01_WAKAGI_3, - SOUGEN_01_WAKAGI_4, - SOUGEN_01_WAKAGI_5, - SOUGEN_01_WAKAGI_6, - SOUGEN_01_WAKAGI_7, - SOUGEN_01_WAKAGI_8, - SOUGEN_01_WAKAGI_9, - SOUGEN_01_WAKAGI_10, - SOUGEN_01_WAKAGI_11, - SOUGEN_01_WAKAGI_12, - SOUGEN_01_00, - SOUGEN_01_BENT, - SOUGEN_01_ZELDA, - SOUGEN_02_HIBI_0, - SOUGEN_02_HIBI_1, - SOUGEN_03_BOMBWALL, - SOUGEN_04_HIBI_0, - SOUGEN_04_HIBI_1, - SOUGEN_04_HIBI_2, - SOUGEN_04_HIBI_3, - SOUGEN_05_HIBI_0, - SOUGEN_05_HIBI_1, - SOUGEN_05_HIBI_2, - SOUGEN_05_HIBI_3, - SOUGEN_05_BOMB_00, - SOUGEN_05_00, - SOUGEN_05_01, - SOUGEN_05_IWA02, - SOUGEN_05_BENT, - SOUGEN_05_H00, - SOUGEN_05_R0, - SOUGEN_05_CAP_0, - SOUGEN_06_WAKAGI_0, - SOUGEN_06_WAKAGI_1, - SOUGEN_06_WAKAGI_2, - SOUGEN_06_WAKAGI_3, - SOUGEN_06_HIBI_0, - SOUGEN_06_HIBI_1, - SOUGEN_06_HIBI_2, - SOUGEN_06_HIBI_3, - SOUGEN_06_HIBI_4, - SOUGEN_06_IWA_0, - SOUGEN_06_AKINDO, - SOUGEN_06_SAIKAI, - SOUGEN_06_BENT, - SOUGEN_06_SLIDE, - SOUGEN_06_R1, - SOUGEN_07_00, - SOUGEN_07_01, - SOUGEN_07_02, + YAMA_04_HIBI_1, /* Rock to Spring blown up in Mount Crenel Base */ + YAMA_04_00, /* Bean 2 sprouted in Mount Crenel */ + YAMA_04_01, /* Bean 1 sprouted in Mount Crenel Base */ + YAMA_04_04, /* Fairy Blue Rupee cave blown open in Mount Crenel Base */ + YAMA_04_05, /* Cave to above blown open in Mount Crenel Base */ + YAMA_04_06, /* Cave to Crenel Spring blown open in Mount Crenel Base */ + YAMA_04_ENTHOUSHI, /* Sucked Spikes from Crenel Minish Rock in Mount Crenel */ + YAMA_04_ANAHOUSHI, /* Sucked Spike from Minish Hole in Mount Crenel */ + YAMA_04_BOMBWALL0, /* Cave next to entrance blown open in Mount Crenel Base */ + HAKA_BUNSHIN_00, /* King Gustaf's Grave Open in Royal Valley */ + HAKA_BOSEKI_00, /* Gina's Grave Open in Royal Valley */ + HAKA_BOSEKI_01, /* Heart Piece Grave Open in Royal Valley */ + HAKA_BOSEKI_02, /* Grave in the way of clones pushed in Royal Valley */ + HAKA_00_CAP_0, /* Ezlo talks about Royal Valley in Royal Valley Entrance */ + HAKA_00_BW00, /* Blew up wall to Great Fairy Fountain in Royal Valley Entrance */ + HAKA_01_T0, /* 200 Shell Chest Open in Royal Valley Maze Secret Chest */ + HAKA_KEY_GET, /* Ezlo talks about getting the key back in Royal Valley */ + SOUGEN_01_WAKAGI_0, /* Top bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_1, /* Middle bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_2, /* Bottom bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_3, /* Top bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_4, /* Middle bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_5, /* Bottom bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_6, /* Top bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_7, /* Middle bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_8, /* Bottom bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_9, /* Top bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_10, /* Middle bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_11, /* Bottom left bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_12, /* Bottom right bush cut east of Town entrance (hidden behind tree) in South Hyrule Field */ + SOUGEN_01_00, /* Cave west of Town entrance blown open in South Hyrule Field */ + SOUGEN_01_BENT, /* Minish Tree Pegasus Bonked in South Hyrule Field */ + SOUGEN_01_ZELDA, /* Zelda enters Town in South Hyrule Field */ + SOUGEN_02_HIBI_0, /* Blown up left rock in Hyrule Field, from Minish Woods Exit */ + SOUGEN_02_HIBI_1, /* Blown up right rock in Hyrule Field, from Minish Woods Exit */ + SOUGEN_03_BOMBWALL, /* Cave blown open in Hyrule Field, north from Minish Woods Exit */ + SOUGEN_04_HIBI_0, /* Blown up top rock in Eastern Hills */ + SOUGEN_04_HIBI_1, /* Blown up middle left rock in Eastern Hills */ + SOUGEN_04_HIBI_2, /* Blown up middle right rock in Eastern Hills */ + SOUGEN_04_HIBI_3, /* Blown up bottom rock in Eastern Hills */ + SOUGEN_05_HIBI_0, /* Blown up left top rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_1, /* Blown up right top rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_2, /* Blown up right bottom rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_3, /* Blown up left bottom rock in Lon Lon Ranch */ + SOUGEN_05_BOMB_00, /* Goron Cave Entrance Open in Lon Lon Ranch */ + SOUGEN_05_00, /* Northern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_01, /* Southern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_IWA02, /* Southern Lon Lon - Goron Cave Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_BENT, /* Revealed the tree stump minish portal in Lon Lon Ranch */ + SOUGEN_05_H00, /* Obtained Heart Piece in Lon Lon Ranch (From Lake Hylia Cave) */ + SOUGEN_05_R0, /* Obtained hidden 50 Rupee in Lon Lon Ranch */ + SOUGEN_05_CAP_0, /* Ezlo talks about cows looking delicious in Lon Lon Ranch */ + SOUGEN_06_WAKAGI_0, /* Top bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_1, /* Top middle bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_2, /* Bottom middle bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_3, /* Bottom bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_HIBI_0, /* Blew up left rock to Veil Falls in Outside Castle */ + SOUGEN_06_HIBI_1, /* Blew up right rock to Veil Falls in Outside Castle */ + SOUGEN_06_HIBI_2, /* Left fence piece "blown up in Outside Castle */ + SOUGEN_06_HIBI_3, /* Right fence piece "blown up in Outside Castle */ + SOUGEN_06_HIBI_4, /* Blew up west rock in Outside Castle */ + SOUGEN_06_IWA_0, /* Minish Hole Open in Outside Castle, East Rock */ + SOUGEN_06_AKINDO, /* Defeated Deku Scrub in Outside Castle */ + SOUGEN_06_SAIKAI, /* Defeated Vaati Moblins in Outside Castle */ + SOUGEN_06_BENT, /* Minish Tree Pegasus Bonked in Outside Castle */ + SOUGEN_06_SLIDE, /* Shortcut bridge opened in Outside Castle */ + SOUGEN_06_R1, /* Obtained hidden 50 Rupees in Outside Castle */ + SOUGEN_07_00, /* Blown open Keese chest cave in Trilby Highlands, above exit ladder */ + SOUGEN_07_01, /* Blown open Fairy Fountain in Trilby Highlands, next to shortcut */ + SOUGEN_07_02, /* Trilby - South Trilby Shortcut Open in Trilby Highlands */ #if defined(JP) || defined(EU) || defined(DEMO_JP) SOUGEN_07_H00, #endif - SOUGEN_08_00, - SOUGEN_08_01, - SOUGEN_08_02, - SOUGEN_08_03, - SOUGEN_08_04, - SOUGEN_08_05, - SOUGEN_08_06, - SOUGEN_08_07, - SOUGEN_08_08, - SOUGEN_08_TORITSUKI, - SOUGEN_08_T00, + SOUGEN_08_00, /* South Hyrule Field - Western Wood Shortcut Open in Western Wood */ + SOUGEN_08_01, /* Dug Up Top Left 50 Rupee in Western Wood */ + SOUGEN_08_02, /* Dug Up Bottom Left 50 Rupee in Western Wood */ + SOUGEN_08_03, /* Dug Up Top Center 50 Rupee in Western Wood */ + SOUGEN_08_04, /* Dug Up Bottom Center 50 Rupee in Western Wood */ + SOUGEN_08_05, /* Dug Up Top Right 50 Rupee in Western Wood */ + SOUGEN_08_06, /* Dug Up Bottom Right 50 Rupee in Western Wood */ + SOUGEN_08_07, /* Dug Up Left 200 Rupee in Western Wood */ + SOUGEN_08_08, /* Dug Up Right 200 Rupee in Western Wood */ + SOUGEN_08_TORITSUKI, /* Vaati takes over King Daltus in West Hyrule */ + SOUGEN_08_T00, /* 100 Shell Chest Open in Western Wood */ CASTLE_00_00, - CASTLE_04_MEZAME, - CASTLE_04_MAID_TALK, - SUIGEN_00_h0, - SUIGEN_00_T0, - SUIGEN_00_r0, - SUIGEN_00_r1, - SUIGEN_00_r2, - SUIGEN_00_CAP_0, + CASTLE_04_MEZAME, /* Disable sleeping cutscene (Intro) in Hyrule Castle Garden, bedroom */ + CASTLE_04_MAID_TALK, /* Spoke to Vassal (Intro) in Hyrule Castle Garden, bedroom */ + SUIGEN_00_h0, /* Obtained Heart Piece in Veil Falls Outside West Digging Cave */ + SUIGEN_00_T0, /* 100 Shell Chest Open in Veil Falls Entrance Cave Secret Area */ + SUIGEN_00_r0, /* Obtained Red Rupee (Top left) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_r1, /* Obtained Red Rupee (Bottom left) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_r2, /* Obtained Red Rupee (Bottom right) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_CAP_0, /* Ezlo talks about waterfall in Veil Falls, near Kinstone door */ SUIGEN_00_CAP_1, - SUIGEN_00_R0, + SUIGEN_00_R0, /* Obtained hidden 50 Rupee in Veil Falls, rock circle */ SUIGEN_00_R1, #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) SUIGEN_00_R2, #endif - SUIGEN_00_h1, - SUIGENGORON_00_CAP_0, - DAIGORON_SHIELD, - DAIGORON_EXCHG, - BEANDEMO_00, - BEANDEMO_01, - BEANDEMO_02, - BEANDEMO_03, - BEANDEMO_04, - KAKERA_TAKARA_A, - KAKERA_TAKARA_E, + SUIGEN_00_h1, /* Obtained Heart Piece in Veil Falls South */ + SUIGENGORON_00_CAP_0, /* Ezlo talks about vortex in Veil Springs */ + DAIGORON_SHIELD, /* Gave biggoron the first shield in Veil Falls, Biggoron */ + DAIGORON_EXCHG, /* Biggoron is tasting a shield in Veil Falls, Biggoron */ + BEANDEMO_00, /* Crenel Summit Beanstalk has grown in Melari's mines, fuse with Melari */ + BEANDEMO_01, /* Lake Hylia Beanstalk has grown in Lake Hylia, fuse with minish elder impersonator */ + BEANDEMO_02, /* Wind Ruins Beanstalk has grown in Wind Ruins, Minish Hole, fuse with minish */ + BEANDEMO_03, /* Eastern Hills Beanstalk has grown in Eastern Hills, Minish house, fuse with minish */ + BEANDEMO_04, /* Western Wood Beanstalk has grown in Western Wood, Minish house, fuse with minish */ + KAKERA_TAKARA_A, /* Bottle Chest Opened in Eastern Hills */ + KAKERA_TAKARA_E, /* Blue S Kinstone Chest Open in Minish Woods, northwest */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) KAKERA_TAKARA_J, #endif - KAKERA_TAKARA_K, - KAKERA_TAKARA_L, - KAKERA_TAKARA_M, - KAKERA_TAKARA_N, - KAKERA_TAKARA_O, - KAKERA_TAKARA_P, - KAKERA_TAKARA_Q, - KAKERA_TAKARA_R, - KAKERA_TAKARA_S, - KAKERA_TAKARA_T, - KAKERA_TAKARA_U, - KAKERA_TAKARA_V, - KAKERA_TAKARA_W, - KAKERA_TAKARA_X, - KAKERA_TAKARA_Y, + KAKERA_TAKARA_K, /* Bomb Bag Chest Open in Wind Ruins, near entrance to Fortress of Winds */ + KAKERA_TAKARA_L, /* Red W Kinstone Chest Open in Minish Woods */ + KAKERA_TAKARA_M, /* Red (> Kinstone Chest Open in Trilby Highlands */ + KAKERA_TAKARA_N, /* Red 3 Prong Kinstone Chest Open in Minish Woods */ + KAKERA_TAKARA_O, /* 200 Rupee Chest Opened in Minish Woods */ + KAKERA_TAKARA_P, /* 200 Shell Chest Open in South Hyrule Field */ + KAKERA_TAKARA_Q, /* Red 3 Prong Kinstone Chest Open in Royal Valley Graveyard, northwest chest */ + KAKERA_TAKARA_R, /* Red (> Kinstone Chest Open in Royal Valley Graveyard, northeast chest */ + KAKERA_TAKARA_S, /* Red W Kinstone Chest Open in Trilby Highlands */ + KAKERA_TAKARA_T, /* 200 Shell Chest Open in North Hyrule Field */ + KAKERA_TAKARA_U, /* 200 Rupee Chest Open in Lon Lon Ranch */ + KAKERA_TAKARA_V, /* Blue S Kinstone Chest Open in Veil Falls */ + KAKERA_TAKARA_W, /* Blue L Kinstone Chest Open in Mt. Crenel */ + KAKERA_TAKARA_X, /* 200 Rupee Chest Open in Crenel base */ + KAKERA_TAKARA_Y, /* 200 Shell Chest Open in Wind Ruins Tektite Room */ KAKERA_TAKARA_Z, - MACHI_02_HEISHI_TALK, - MACHI00_00, - MACHI00_02, - MACHI00_03, - MACHI_00_T00, - MACHI_00_T01, - MACHI_01_DEMO, + MACHI_02_HEISHI /* Showed Spin Attack to Westside Soldier in Hyrule Town */_TALK, /* Spoke to Westside Soldier in Hyrule Town */ + MACHI00_00, /* Flipped Minish Pot in Hyrule Town, Top of Library */ + MACHI00_02, /* Un-Flipped Minish Pot in Hyrule Town, Top of School */ + MACHI00_03, /* Pushed box in the minish cat path in Hyrule Town */ + MACHI_00_T00, /* Red > Kinstone Chest Open in Hyrule Town, Happy Hearth Balcony */ + MACHI_00_T01, /* Opened Red W Kinstone Chest in Hyrule Town, Top of School */ + MACHI_01_DEMO, /* Lolly and Candy Moved in Hyrule Town, Festival */ MACHI_02_HEISHI, MACHI_02_DOG, /* Talk to dog as minish */ - MACHI_07_BELL, - SHOP05_OPEN, - MACHI_MES_20, - MACHI_MES_21, - MACHI_MES_22, - MACHI_MES_23, - MACHI_MES_24, - MACHI_MES_30, - MACHI_MES_40, - MACHI_MES_60, - MACHI_MES_50, + MACHI_07_BELL, /* Obtained Heart Piece in Bell in Hyrule Town */ + SHOP05_OPEN, /* Figurine House Open in Hyrule Town */ + MACHI_MES_20, /* Talked to gossip woman (right of well) in Hyrule Town */ + MACHI_MES_21, /* Talked to gossip woman (left of well) in Hyrule Town */ + MACHI_MES_22, /* Talked to the boy next to the girl at the water fountain in Hyrule Town */ + MACHI_MES_23, /* Talked to the girl next to the boy at the water fountain in Hyrule Town */ + MACHI_MES_24, /* Talked to man near mushroom house in Hyrule Town, State 2 */ + MACHI_MES_30, /* Talked to man near mushroom house in Hyrule Town, State 4 */ + MACHI_MES_40, /* Talked to man near mushroom house in Hyrule Town, State 5 */ + MACHI_MES_60, /* Spoke to Jasmine (Woman outside Cafe) in Hyrule Town */ + MACHI_MES_50, /* Spoke to Herb (Figurine House Owner) in Hyrule Town */ MACHI_DOG_C, /* Seen all dog dialogue */ - KUMOUE_00_CAP_0, - KUMOUE_01_CAP_0, - KUMOUE_01_T0, - KUMOUE_01_T1, - KUMOUE_01_T2, - KUMOUE_01_T3, - KUMOUE_01_T4, - KUMOUE_01_T5, - KUMOUE_01_T6, - KUMOUR_01_K0, - KUMOUR_01_K1, - KUMOUR_01_K2, - KUMOUR_01_K3, - KUMOUR_01_K4, - KUMOUR_01_K5, - KUMOUR_01_K6, + KUMOUE_00_CAP_0, /* Ezlo talks about Wind Tribe Tower in Cloud Tops 3F */ + KUMOUE_01_CAP_0, /* Ezlo talks about Wind Tribe Tower in Cloud Tops 2F */ + KUMOUE_01_T0, /* East Gold E Kinstone Chest Open in Cloud Tops 2F East */ + KUMOUE_01_T1, /* Middle Gold Jagged Kinstone Chest Open in Cloud Tops 2F Middle */ + KUMOUE_01_T2, /* Top West Gold Jagged Kinstone Chest Open in Cloud Tops 2F Top West */ + KUMOUE_01_T3, /* 50 Shell Chest Open in Cloud Tops 2F Top West Left Chest */ + KUMOUE_01_T4, /* 50 Shell Chest Open in Cloud Tops 2F Top West Right Chest */ + KUMOUE_01_T5, /* 50 Shell Chest Open in Cloud Tops 2F Bottom West Chest */ + KUMOUE_01_T6, /* 50 Shell Chest Open in Cloud Tops 2F Middle Chest */ + KUMOUR_01_K0, /* Green < Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K1, /* Red (> Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K2, /* Blue L Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K3, /* Green [ Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K4, /* Green / Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K5, /* Red W Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K6, /* Blue S Kinstone Obtained in Cloud Tops 2F */ KUMONOUE_01_KAKERA, - KUMOUE_02_CAP_0, - KUMOUE_02_AWASE_01, - KUMOUE_02_AWASE_02, - KUMOUE_02_AWASE_03, - KUMOUE_02_AWASE_04, - KUMOUE_02_AWASE_05, - KUMOUE_02_00, - KUMOUE_02_01, - KUMOUE_02_02, - KUMOUE_02_03, - KUMOUE_UNCLE_TALK, - KUMOUE_GIRL_TALK, + KUMOUE_02_CAP_0, /* Ezlo talks after landing in Cloud Tops Entrance */ + KUMOUE_02_AWASE_01, /* Top Right Pinwheel Spinning in Cloud Tops, fuse with Top Right Cloud */ + KUMOUE_02_AWASE_02, /* Bottom Left Pinwheel Spinning in Cloud Tops, fuse with Bottom Left Cloud */ + KUMOUE_02_AWASE_03, /* Top Left Pinwheel Spinning in Cloud Tops, fuse with Top Left Cloud */ + KUMOUE_02_AWASE_04, /* Middle Pinwheel Spinning in Cloud Tops, fuse with Middle Cloud */ + KUMOUE_02_AWASE_05, /* Bottom Right Pinwheel Spinning in Cloud Tops, fuse with Bottom Right Cloud */ + KUMOUE_02_00, /* Defeated Top Cloud Piranhas in Cloud Tops North */ + KUMOUE_02_01, /* Obtained Top Gold Σ Kinstone in Cloud Tops, Top Piranhas */ + KUMOUE_02_02, /* Defeated Bottom Cloud Piranhas in Cloud Tops South */ + KUMOUE_02_03, /* Obtained Bottom Σ Gold Kinstone in Cloud Tops, Bottom Piranhas */ + KUMOUE_UNCLE_TALK, /* Talked to Gale in Cloud Tops Entrance */ + KUMOUE_GIRL_TALK, /* Talked to Hailey in Cloud Tops Entrance */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) KS_A06, KS_B18, @@ -467,210 +467,210 @@ typedef enum { typedef enum { BEGIN_2, - BILL05_YADO1F_MATSU_T0, - BILL06_YADO1F_TAKE_T0, - BILL07_YADO1F_UME_T0, + BILL05_YADO1F_MATSU_T0, /* Luxury Room" Chest Open in Hyrule Town, Happy Hearth */ + BILL06_YADO1F_TAKE_T0, /* Regular Room" Chest Open in Hyrule Town, Happy Hearth */ + BILL07_YADO1F_UME_T0, /* Cheap Room" Chest Open in Hyrule Town, Happy Hearth */ BILL0A_YADO_TAKARA_T0, - SHOUSE_00_T0, - SHOUSE_00_T1, - SHOUSE_01_T0, - SHOUSE_02_T0, - SHOUSE_02_T1, - SHOUSE_02_T2, + SHOUSE_00_T0, /* Green (< Kinstone Chest Open in Wind Tribe Tower 1F Left Chest */ + SHOUSE_00_T1, /* Green Rectangle Kinstone Chest Open in Wind Tribe Tower 1F Right Chest */ + SHOUSE_01_T0, /* Green / Kinstone Chest Open in Wind Tribe Tower 2F */ + SHOUSE_02_T0, /* Red W Kinstone Chest Open in Wind Tribe Tower 3F Right Chest */ + SHOUSE_02_T1, /* Blue S Kinstone Chest Open in Wind Tribe Tower 3F Middle Chest */ + SHOUSE_02_T2, /* Blue L Kinstone Chest Open in Wind Tribe Tower 3F Left Chest */ SHOUSE_02_XXXX0, SHOUSE_02_XXXX1, SHOUSE_02_XXXX2, - SHOUSE_03_T0, - SHOUSE_03_T1, - KOBITOANA_06_T0, - KOBITOANA_03_T0, - KOBITOANA_07_T0, - KOBITOANA_09_T0, - KOBITOANA_0A_T0, - KOBITOANA_0B_T0, - MHOUSE11_T0, + SHOUSE_03_T0, /* Red (> Kinstone Chest Open in Wind Tribe Tower 4F Left Chest */ + SHOUSE_03_T1, /* Red 3 Prong Chest Open in Wind Tribe Tower 4F Right Chest */ + KOBITOANA_06_T0, /* Bow Chest Open in Castor Wilds */ + KOBITOANA_03_T0, /* Red (> Kinstone Chest Open in Mount Crenel Minish Hole near Bean */ + KOBITOANA_07_T0, /* Red 3 Prong Chest Open in Wind Ruins Minish Hole */ + KOBITOANA_09_T0, /* Blue S Kinstone Chest Open in Castor Wilds North Minish Hole */ + KOBITOANA_0A_T0, /* Red W Kinstone Chest Open in Castor Wilds West Minish Hole */ + KOBITOANA_0B_T0, /* Red (> Kinstone Chest Open in Castor Wilds Middle Minish Hole */ + MHOUSE11_T0, /* Red Rupee Chest Open in Link's House */ URO_08_T0, URO_0A_T0, URO_0B_T0, - BILL00_SHICHOU_00, - BILL00_SHICHOU_01, - BILL00_SHICHOU_02, - BILL00_SHICHOU_03, - BILL00_SHICHOU_04, - BILL01_TESSIN_1, - BILL01_TESSIN_2, - BILL01_TESSIN_3, - BILL01_TESSIN_4, - BILL01_TESSIN_5, - BILL01_TESSIN_6, - BILL01_TESSIN_7, - BILL01_TESSIN_8, - BILL09_YADO2F_POEMN, + BILL00_SHICHOU_00, /* Flipped Pot in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_01, /* Bounced off the left red mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_02, /* Bounced off the left blue mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_03, /* Bounced off the right red mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_04, /* Bounced off the right blue mask in Hyrule Town, Mayor Hagen's house */ + BILL01_TESSIN_1, /* Swordsman Newsletter #1 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_2, /* Swordsman Newsletter #2 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_3, /* Swordsman Newsletter #3 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_4, /* Swordsman Newsletter #4 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_5, /* Swordsman Newsletter #5 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_6, /* Swordsman Newsletter #6 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_7, /* Swordsman Newsletter #7 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_8, /* Swordsman Newsletter #8 is on the table in Hyrule Town, Post Office */ + BILL09_YADO2F_POEMN, /* Broken the bottom right pot for a red 3 prong kinstone in Hyrule Town, Happy Hearth 2F */ BILL0A_YADO_TAKARA_00, BILL0B_SCHOOLL_00, - BILL0C_SCHOOLR_00, + BILL0C_SCHOOLR_00, /* Minish pot flipped in Hyrule Town, School */ MHOUSE00_00, MHOUSE00_01, MHOUSE00_02, MHOUSE00_03, MHOUSE00_04, MHOUSE00_05, - MHOUSE01_00, - MHOUSE01_01, - MHOUSE01_02, - MHOUSE01_03, + MHOUSE01_00, /* Pushed Left Cupboard Into Place in Hyrule Town, Red Oracle House */ + MHOUSE01_01, /* Pushed Right Cupboard Into Place in Hyrule Town, Red Oracle House */ + MHOUSE01_02, /* Broke Left Pot in Hyrule Town, Red Oracle House */ + MHOUSE01_03, /* Broke Right Pot in Hyrule Town, Red Oracle House */ MHOUSE03_00, - MHOUSE03_01, - MHOUSE04_00, - MHOUSE04_01, + MHOUSE03_01, /* Pushed Cupboard Into Place in Hyrule Town, Unused Red Oracle House (Din?) */ + MHOUSE04_00, /* Pushed Left Cupboard in Hyrule Town, Dr. Left's House */ + MHOUSE04_01, /* Pushed Right Cupboard in Hyrule Town, Dr. Left's House */ MHOUSE04_02, MHOUSE04_03, MHOUSE04_04, - MHOUSE06_00, + MHOUSE06_00, /* Flipped Minish Pot in Hyrule Town, Romio's House */ MHOUSE07_00, MHOUSE07_01, - MHOUSE08_00, + MHOUSE08_00, /* Received 100 Shells from Percy in Percy's House */ MHOUSE08_01, MHOUSE08_02, - MHOUSE08_03, - MHOUSE08_04, + MHOUSE08_03, /* Received 50 Rupees from Bow Moblin in Percy's House */ + MHOUSE08_04, /* Bow Moblin Revealed in Percy's House */ MHOUSE0C_00, - MHOUSE14_00, - MHOUSE15_OP1ST, + MHOUSE14_00, /* Flipped Minish Pot in Lake Hylia, Stockwell's House */ + MHOUSE15_OP1ST, /* Seen Intro (Stain Windows -> Zelda talks to Smith) in Link's House */ MHOUSE2_00_00, MHOUSE2_00_01, MHOUSE2_00_02, MHOUSE2_00_03, MHOUSE2_01_T0, MHOUSE2_02_KAME, - MHOUSE2_02_KEY, + MHOUSE2_02_KEY, /* Obtain the Lon Lon Ranch key in Lon Lon Ranch, Inside the house */ MHOUSE2_03_00, - MHOUSE2_05_00, + MHOUSE2_05_00, /* Pushed cupboard in Lake Hylia, Mayor's House */ SHOP00_ITEM_00, - SHOP00_ITEM_01, + SHOP00_ITEM_01, /* Un-Flipped Minish Pot in Hyrule Town Shop */ SHOP00_ITEM_02, - SHOP00_ITEM_03, - SHOP00_ITEM_04, - SHOP00_SAIFU, - SHOP00_YAZUTSU, - SHOP01_CAFE_00, - SHOP01_CAFE_01, - SHOP01_TALK, + SHOP00_ITEM_03, /* Stockwell talks about feeling someone in Hyrule Town Shop */ + SHOP00_ITEM_04, /* Stockwell sees you after you unshrink in Hyrule Town Shop */ + SHOP00_SAIFU, /* Bought Wallet in Hyrule Town Shop */ + SHOP00_YAZUTSU, /* Bought Quiver in Hyrule Town Shop */ + SHOP01_CAFE_00, /* Pushed cupboard in Hyrule Town Cafe */ + SHOP01_CAFE_01, /* Flipped Minish Pot in Hyrule Town Cafe */ + SHOP01_TALK, /* Spoke to Hurdy-Gurdy Man in Hyrule Town Cafe */ HOUSE_XXXXX, - SHOP03_PAN_1ST, - SHOP07_TALK1ST, + SHOP03_PAN_1ST, /* Eaten a pastry in Hyrule Town Bakery */ + SHOP07_TALK1ST, /* Spoke to Carlov in Carlov's Room */ SHOP07_GACHAPON, - SHOP07_TANA, - SHOP07_COMPLETE, - SHOP02_KUTSU_00, - NPC37_REM_TALK1ST, - NPC37_REM_SLEEP, - SORA_ELDER_RECOVER, - SORA_CHIEF_TALK, - SORA_ELDER_TALK1ST, - SORA_ELDER_TALK2ND, + SHOP07_TANA, /* Pulled Lever in Carlov's Room */ + SHOP07_COMPLETE, /* Exhausted new figurines in Carlov's Room */ + SHOP02_KUTSU_00, /* Rem falling asleep cutscene seen in Rem's Shoe Shop */ + NPC37_REM_TALK1ST, /* Spoke to Rem in Rem's Shoe Shop */ + NPC37_REM_SLEEP, /* Rem is in his sleeping animation in Rem's Shoe Shop */ + SORA_ELDER_RECOVER, /* Saved Gregal in Wind Tribe Tower 2F */ + SORA_CHIEF_TALK, /* Spoke to Wind Tribe Leader Siroc in Wind Tribe Tower 4F */ + SORA_ELDER_TALK1ST, /* Spoke to Gregal after Sucking Ghost in Wind Tribe Tower 2F */ + SORA_ELDER_TALK2ND, /* Spoke to Gregal after Cloud Tops in Wind Tribe Tower 2F */ NPC06_19GUY_QUESTION, NPC06_19GUY_ANSWER, - DANPEI_TALK1ST, - MIZUKAKI_KOBITO, - MIZUKAKI_HINT1, - MIZUKAKI_BOOK1_FALL, - MIZUKAKI_HINT2, + DANPEI_TALK1ST, /* Spoke to Dampe in Royal Valley, Dampe's House */ + MIZUKAKI_KOBITO, /* Spoke to Yellow Library Minish in Hyrule Town Library */ + MIZUKAKI_HINT1, /* Spoke to Library Receptionist in Hyrule Town Library */ + MIZUKAKI_BOOK1_FALL, /* Dropped Library Book to Floor in Hyrule Town, Julietta's House */ + MIZUKAKI_HINT2, /* Spoke to Library Receptionist after Book 1 in Hyrule Town Library */ MIZUKAKI_HINT2_2ND, - MIZUKAKI_BOOK2_FALL, - MIZUKAKI_HINT3, - MIZUKAKI_HINT3_MAYOR, - MIZUKAKI_BOOK3_FALL, - MIZUKAKI_BOOK_ALLBACK, - MIZUKAKI_STAIR, - MIZUKAKI_STAIR_WARP_OK, + MIZUKAKI_BOOK2_FALL, /* Library Book hit ground in Hyrule Town, Dr. Left's House */ + MIZUKAKI_HINT3, /* Spoke to Library Receptionist after Book 2 in Hyrule Town Library */ + MIZUKAKI_HINT3_MAYOR, /* Spoke to Mayor Hagen about the book in Hyrule Town, Mayor Hagen's House */ + MIZUKAKI_BOOK3_FALL, /* Dropped Book 3 to Floor in Lake Hylia, Mayor's House */ + MIZUKAKI_BOOK_ALLBACK, /* Completed Book Quest in Hyrule Town Library */ + MIZUKAKI_STAIR, /* Librari Opens Trap Door in Hyrule Town Library, Librari's Book House */ + MIZUKAKI_STAIR_WARP_OK, /* Screen fades out to the Flipper Cave in Hyrule Town Library, Librari's Book House */ KHOUSE27_00, NO_USE_00, - KHOUSE51_00, + KHOUSE51_00, /* Got 50 Rupees from the bottom minish for returning the books in Hyrule Town Library, Minish Bookshelf */ NO_USE_01, - KHOUSE51_02, - KHOUSE42_00, + KHOUSE51_02, /* Spoke to Librari in Hyrule Town Library, Librari's Book House Before Book Quest */ + KHOUSE42_00, /* Spoke to Minish in Hyrule Town, Dr. Left's House After obtaining Power Bracelets */ NO_USE_02, NO_USE_03, - OYAKATA_DEMO, - YAMAKOBITO_OPEN, - M_PRIEST_TALK, - M_ELDER_TALK1ST, - M_PRIEST_MOVE, - M_ELDER_TALK2ND, - MHOUSE04_DANRO, - MHOUSE06_DANRO, - URO_POEMN_TALK, - MHOUSE06_MES_20, - MHOUSE07_MES_20, - MAYOR_2_TALK1ST, + OYAKATA_DEMO, /* Spoke to Melari in Melari's Mines */ + YAMAKOBITO_OPEN, /* Minish Moved from Exit in Melari's Mines */ + M_PRIEST_TALK, /* Talked to Festari in Minish Village */ + M_ELDER_TALK1ST, /* Talked to Minish Elder Gentari in Minish Village */ + M_PRIEST_MOVE, /* Festari moves to side in Minish Village */ + M_ELDER_TALK2ND, /* Minish Elder Gentari opens curtains in Minish Village */ + MHOUSE04_DANRO, /* Put out Fireplace in Hyrule Town, Dr. Left's House */ + MHOUSE06_DANRO, /* Put out Fireplace in Hyrule Town, Romio's House */ + URO_POEMN_TALK, /* Talked to percy in the tree cave in Trilby Highlands, Tree Cave */ + MHOUSE06_MES_20, /* Talked to Romio in Hyrule Town, Romio's House */ + MHOUSE07_MES_20, /* Talked to Julietta in Hyrule Town, Julietta's House */ + MAYOR_2_TALK1ST, /* Talked to Mayor Hagen in Hyrule Town, Mayor Hagen's House, after flippers */ MAYOR_4_TALK1ST, - BILL01_TESSIN_RESERVED, - BILL01_TESSIN_BRANDNEW, - KOBITO_MORI_1ST, - KOBITO_YAMA_ENTER, - KHOUSE52_KINOKO, - SORA_YAKATA_ENTER, - YADO_CHECKIN, - MINIGAME_GAMEEND, - MINIGAME_LEVEL2, - MHOUSE_DIN_TALK, - MHOUSE_NAYRU_TALK, - MHOUSE_FARORE_TALK, - URO_12_H0, - URO_19_H0, - URO_1F_H0, - BILL09_TSW0, - BILL09_TSW1, - KHOUSE41_TALK1ST, - TAIMA_SAIBAI_1ST, - IZUMI_00_FAIRY, - IZUMI_01_FAIRY, - IZUMI_02_FAIRY, + BILL01_TESSIN_RESERVED, /* Paid for new newsletter in Hyrule Town, Post Office */ + BILL01_TESSIN_BRANDNEW, /* New newsletter has arrived in Hyrule Town, Post Office */ + KOBITO_MORI_1ST, /* Seen Minish Village Entrance Scene in Minish Village */ + KOBITO_YAMA_ENTER, /* Visited Melari's Mines? in Melari's Mines */ + KHOUSE52_KINOKO, /* Talked to Shoe Shop Minish in Rem's Shoe Shop */ + SORA_YAKATA_ENTER, /* Entered Main Entrance? in Cloud Tops, House */ + YADO_CHECKIN, /* Sleeping is Active in Happy Hearth Inn */ + MINIGAME_GAMEEND, /* Chest Mini-Game Result Active in Hyrule Town, Chest Mini-Game Shop */ + MINIGAME_LEVEL2, /* Hard Mode Active in Hyrule Town, Chest Mini-Game Shop */ + MHOUSE_DIN_TALK, /* Talked To Din in Hyrule Town, Blue/Red House */ + MHOUSE_NAYRU_TALK, /* Talked To Nayru in Hyrule Town, Blue/Red House */ + MHOUSE_FARORE_TALK, /* Talked To Farore in Hyrule Town, Blue/Red House */ + URO_12_H0, /* Obtained Heart Piece in Tree southeast of Link's House */ + URO_19_H0, /* Obtained Heart Piece in Tree House in Western Wood */ + URO_1F_H0, /* Obtained Heart Container in Unused Tree House (Lake Hylia) */ + BILL09_TSW0, /* Left Torch Lit in Hyrule Town, Happy Hearth 2F */ + BILL09_TSW1, /* Right Torch Lit in Hyrule Town, Happy Hearth 2F */ + KHOUSE41_TALK1ST, /* Talk to the minish in Hyrule Town, Red House */ + TAIMA_SAIBAI_1ST, /* Talk to the pico bloom minish in Minish Village */ + IZUMI_00_FAIRY, /* Obtained Quiver upgrade from Great Fairy in Royal Valley */ + IZUMI_01_FAIRY, /* Obtained Wallet upgrade from Great Fairy in Minish Woods */ + IZUMI_02_FAIRY, /* Obtained Bomb Bag upgrade from Great Fairy in Mount Crenel Wall */ BILL0B_DOUZOU_L, BILL0B_DOUZOU_R, - KOBITOANA_08_T0, - KOBITOANA_0C_T0, - KOBITOANA_0D_T0, + KOBITOANA_08_T0, /* Blue L Kinstone Chest Open in Minish Woods South Minish Hole, shared fuse */ + KOBITOANA_0C_T0, /* Red 3 Prong Kinstone Chest Open in Wind Ruins Pillar Room Minish Hole */ + KOBITOANA_0D_T0, /* Red W Kinstone Chest Open in Castor Wilds, Minish Hole next to Bow */ KOBITOHOUSE_23_H0, MHOUSE08_DANRO, - MHOUSE09_DANRO, - MHOUSE0A_DANRO, - MHOUSE0B_DANRO, + MHOUSE09_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House */ + MHOUSE0A_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House (Nayru?) */ + MHOUSE0B_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House (Din?) */ MHOUSE0C_DANRO, - MHOUSE12_DANRO, - SORA_DANRO, - MIZUKAKI_HINT3_MAP, - LEFT_TALK, - KHOUSE26_REMOCON, - SORA_KIDS_MOVE, - KOBITOANA_00_T0, - KHOUSE23_TALK1ST, - SHOP05_ELEMENT_H00, - SHOP05_ELEMENT_T00, - SHOP05_ELEMENT_T01, - SHOP05_ELEMENT_T02, - BILL0a_YADO_TAKARA_H00, - KOBITOYAMA_00_R00, - KOBITOYAMA_00_R01, - KOBITOYAMA_00_R02, - KOBITOYAMA_00_R03, - KOBITOYAMA_00_R04, - KOBITOYAMA_00_R05, - KOBITOYAMA_00_R06, - KOBITOYAMA_00_R07, - KOBITO_MORI_00_H00, + MHOUSE12_DANRO, /* Put out Fireplace in Dampé's Hut */ + SORA_DANRO, /* Put out Fireplace in Wind Tribe Tower 1F */ + MIZUKAKI_HINT3_MAP, /* Spoke with the minish after talking to Hagen in Hyrule Town, Mayor Hagen's House */ + LEFT_TALK, /* Spoke to Dr. Left inside his house in Hyrule Town, Dr. Left's House */ + KHOUSE26_REMOCON, /* Swapped Bombs with Belari once in Minish Woods, Belari's house */ + SORA_KIDS_MOVE, /* Hailey Moves to Side of Stairs in Wind Tribe Tower 4F */ + KOBITOANA_00_T0, /* Red (> Kinstone Chest Open in Lon Lon Ranch, north Minish Hole */ + KHOUSE23_TALK1ST, /* Obtained Heart Container in Lake Hylia, Librari's House */ + SHOP05_ELEMENT_H00, /* Obtained Heart Piece in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T00, /* Left 200 Rupee Chest Open in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T01, /* Middle 200 Rupee Chest Open in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T02, /* Right 200 Rupee Chest Open in Hyrule Town Figurine House */ + BILL0a_YADO_TAKARA_H00, /* Obtained Heart Piece in Hyrule Town, Happy Hearth minish backdoor */ + KOBITOYAMA_00_R00, /* Hidden Blue L Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R01, /* Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R02, /* Hidden Blue S Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R03, /* Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R04, /* Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R05, /* Hidden Green [ Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R06, /* Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R07, /* Hidden Red W Kinstone Obtained in Melari's Mine */ + KOBITO_MORI_00_H0 /* Obtained Heart Piece in Minish Village */0, KOBITO_MORI_00_H0, - CAFE_01_CAP_0, - BILL_00_CAP_0, - BILL_02_CAP_0, - MHOUSE_07_CAP_0, - MHOUSE_07_CAP_1, + CAFE_01_CAP_0, /* Ezlo talks after Pot Minish Cutscene in Hyrule Town */ + BILL_00_CAP_0, /* Ezlo talks about Mayor's House in Mayor's House */ + BILL_02_CAP_0, /* Ezlo talks about books in Hyrule Town Library 2F, bottom right bookshelf */ + MHOUSE_07_CAP_0, /* Ezlo talks about cat 1 in Hyrule Town, Julietta's House */ + MHOUSE_07_CAP_1, /* Ezlo talks about cat 2 in Hyrule Town, Julietta's House */ MHOUSE_10_CAP_0, // links house entrance MHOUSE_15_CAP_0, // links bedroom - MHOUSE_15_CAP_1, - SHOP_03_CAP_0, - MHOUSE_07_CAP_2, + MHOUSE_15_CAP_1, /* Ezlo talks about something being unusual in Link's House, bottom left corner of bedroom */ + SHOP_03_CAP_0, /* Ezlo talks about pastries in Hyrule Town Bakery */ + MHOUSE_07_CAP_2, /* Ezlo talks about library book in Hyrule Town, Julietta's House */ #ifndef EU SHOP00_BOMBBAG, CAFE_01_CAP_1, @@ -692,30 +692,30 @@ typedef enum { typedef enum { BEGIN_3, MAROYA_TAKARA, - MACHI_CHIKA_00_00, - MACHI_CHIKA_00_01, - MACHI_CHIKA_00_02, - MACHI_CHIKA_00_03, - MACHI_CHIKA_00_T0, - MACHI_CHIKA_00_T1, - MACHI_CHIKA_00_T2, - MACHI_CHIKA_00_T3, - MACHI_CHIKA_00_T4, + MACHI_CHIKA_00_00, /* Top Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_01, /* Middle Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_02, /* Bottom Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_03, /* Chest Pillar In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_T0, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle North */ + MACHI_CHIKA_00_T1, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle West */ + MACHI_CHIKA_00_T2, /* Red 3 Prong Kinstone Chest Open in Hyrule Town, Well Sewer Puzzle East */ + MACHI_CHIKA_00_T3, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle South */ + MACHI_CHIKA_00_T4, /* 200 Rupee Pillar Chest Open in Hyrule Town, Well Sewer Puzzle */ MACHI_CHIKA2_00_T0, MACHI_CHIKA2_01_T0, MACHI_CHIKA2_03_00, - MACHI_CHIKA2_03_01, - MACHI_CHIKA2_03_T0, - MACHI_CHIKA2_04_T0, - MACHI_CHIKA2_10_00, - MACHI_CHIKA2_10_01, - MACHI_CHIKA2_10_02, - MACHI_CHIKA2_10_T0, - MACHI_CHIKA2_12_T0, - LV4_HAKA_05_T0, + MACHI_CHIKA2_03_01, /* Defeated Mulldozers in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_03_T0, /* Power Bracelets Chest Open in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_04_T0, /* 100 Rupee Chest Open in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_10_00, /* Scissors Beetles Spawned in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_01, /* Defeated Scissors Beetles in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_02, /* Picked up 50 rupees hidden beneath waterfall in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_T0, /* Flippers Chest Open in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_12_T0, /* 100 Shell Chest Open in Hyrule Town Sewer Ice Chest Room */ + LV4_HAKA_05_T0, /* Blue S Kinstone Chest Open in Royal Crypt Unused Block Room */ LV4_HAKA_04_T0, LV4_HAKA_04_T1, - LV4_HAKA_01_00, + LV4_HAKA_01_00, /* Defeated Gibdos in Royal Crypt Gibdo Fight Room */ LV4_HAKA_01_01, LV4_HAKA_03_00, LV4_HAKA_04_R0, @@ -729,8 +729,8 @@ typedef enum { LV4_HAKA_04_R9, LV4_HAKA_04_R10, LV4_HAKA_04_R11, - LV4_HAKA_04_KB0, - LV4_HAKA_04_KB1, + LV4_HAKA_04_KB0, /* Second Key Block Open in Royal Crypt Key Block Room */ + LV4_HAKA_04_KB1, /* First Key Block Open in Royal Crypt Key Block Room */ LV4_HAKA_05_H0, LV4_HAKA_05_H1, LV4_HAKA_05_H2, @@ -740,154 +740,154 @@ typedef enum { OUBO_06_BW0, OUBO_06_BW1, OUBO_07_ENTER, - OUBO_KAKERA, - MOGURA_00_T0, - MOGURA_00_T1, - MOGURA_00_T2, - MOGURA_01_T0, - MOGURA_02_T0, - MOGURA_02_T1, - MOGURA_02_T2, - MOGURA_02_T3, - MOGURA_02_T4, - MOGURA_02_T5, - MOGURA_02_T6, - MOGURA_02_T7, + OUBO_KAKERA, /* Spoke to King Gustaf in Royal Crypt King Gustaf's Room */ + MOGURA_00_T0, /* Blue L Kinstone Chest Open in Minish Woods <-> Hylia Cabin Digging Cave */ + MOGURA_00_T1, /* 50 Rupee Chest Open in Minish Woods Mole Cave */ + MOGURA_00_T2, /* Blue S Kinstone Chest Open in Minish Woods Mole Cave */ + MOGURA_01_T0, /* 50 Rupee Chest Open in Lake Hylia Middle Digging Cave */ + MOGURA_02_T0, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, Northeast Chest */ + MOGURA_02_T1, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, OoB */ + MOGURA_02_T2, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, South top left Chest */ + MOGURA_02_T3, /* Blue L Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Left Chest */ + MOGURA_02_T4, /* Red 3 Prong Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Right Chest */ + MOGURA_02_T5, /* Red (> Kinstone Chest Open in Lake Hylia North Digging Cave, East Chest */ + MOGURA_02_T6, /* Red W Kinstone Chest Open in Lake Hylia North Digging Cave, South right Chest */ + MOGURA_02_T7, /* Blue S Kinstone Chest Open in Lake Hylia North Digging Cave, South left Chest */ MOGURA_02_T8, - MOGURA_09_T0, - MOGURA_09_T1, - MOGURA_10_T0, - MOGURA_10_T1, - MOGURA_10_T2, - MOGURA_1c_T0, - MOGURA_21_r0, - MOGURA_27_T0, - MOGURA_27_T1, - MOGURA_27_T2, - MOGURA_41_T0, - MOGURA_41_T1, - MOGURA_41_T2, - MOGURA_41_T3, - MOGURA_50_00, - MOGURA_50_T0, - MOGURA_51_T0, - MOGURA_51_T1, - MOGURA_51_T2, - MOGURA_51_00, - MOGURA_51_01, - MOGURA_51_02, - MOGURA_51_03, - MOGURA_51_04, - MOGURA_51_05, - MOGURA_51_06, - MOGURA_51_07, - MOGURA_51_08, - MOGURA_52_00, - MOGURA_52_T0, - MOGURA_52_T1, - MOGURA_53_00, - MOGURA_53_T0, - MOGURA_53_T1, - MOGURA_53_WALK, - MOGURA_54_00, - MOGURA_54_01, - MOGURA_54_02, - MOGURA_54_WALK, - AMOS_00_00, - AMOS_01_00, - AMOS_02_00, - AMOS_03_00, - AMOS_04_00, - AMOS_05_00, - AMOS_06_00, - AMOS_07_00, - AMOS_08_00, - AMOS_09_00, - AMOS_0A_00, + MOGURA_09_T0, /* 50 Shell Chest Open in Castor Wilds Digging Cave Left Chest */ + MOGURA_09_T1, /* Red W Kinstone Chest Open in Castor Wilds Digging Cave Right Chest */ + MOGURA_10_T0, /* Red W Kinstone Chest Open in Hyrule Town, Mole Cave Middle */ + MOGURA_10_T1, /* Red > Kinstone Chest Open in Hyrule Town, Mole Cave East */ + MOGURA_10_T2, /* Red 3 Prong Kinstone Chest Open in Hyrule Town, Mole Cave West */ + MOGURA_1c_T0, /* Obtained Heart Piece in Mt. Crenel, Mole Cave */ + MOGURA_21_r0, /* Red Rupee Collected in Eastern Hills, Mole Cave */ + MOGURA_27_T0, /* Blue L Kinstone Chest Open in Trilby Highlands, Mole Cave Left */ + MOGURA_27_T1, /* Red > Kinstone Chest Open in Trilby Highlands, Water Mole Cave */ + MOGURA_27_T2, /* Blue S Kinstone Chest Open in Trilby Highlands, Mole Cave Right */ + MOGURA_41_T0, /* 50 Shell Chest Open in Veil Falls West Digging Cave */ + MOGURA_41_T1, /* 50 Shell Chest Open in Veil Falls East Digging Cave */ + MOGURA_41_T2, /* 50 Rupee Chest Open in Veil Falls East Digging Cave */ + MOGURA_41_T3, /* Obtained Heart Piece in Veil Falls West Digging Cave */ + MOGURA_50_00, /* Obtained 50 Rupee in Fortress of Winds Entrance Hall East Corner */ + MOGURA_50_T0, /* Blue S Kinstone Chest Open in Fortress of Winds Entrance Hall West Corner */ + MOGURA_51_T0, /* Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_T1, /* Blue L Kinstone Chest Open in Fortress of Winds Entrance Center 2F */ + MOGURA_51_T2, /* Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Right Side 2F */ + MOGURA_51_00, /* Broke the 50 Rupee Pot in Fortress of Winds, Entrance Right Side 2F */ + MOGURA_51_01, /* Broke Mysterious Shell Pot in Fortress of Winds, Entrance Right Side 2F */ + MOGURA_51_02, /* Grabbed Top Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_03, /* Grabbed Top Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_04, /* Grabbed Bottom Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_05, /* Grabbed Bottom Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_06, /* Grabbed 2nd Blue Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_07, /* Grabbed Blue Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_08, /* Grabbed Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_52_00, /* Hit Button in Fortress of Winds Entrance Left Side 3F Button */ + MOGURA_52_T0, /* Red (> Kinstone Chest Open in Fortress of Winds Entrance Left Side 3F Button */ + MOGURA_52_T1, /* Red W Kinstone Chest Open in Fortress of Winds Entrance Right Side 3F Spike Chu */ + MOGURA_53_00, /* ??? in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_T0, /* Mole Mitts Chest Open in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_T1, /* 100 Rupee Chest Open in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_WALK, /* ??? in Fortress of Winds, Mole Mitts Room */ + MOGURA_54_00, /* Hit Button in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_01, /* Obtained Key in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_02, /* Key Fallen in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_WALK, /* ??? in Fortress of Winds, Minish Hole Key Room */ + AMOS_00_00, /* Armos Switch Hit in Wind Ruins Entrance Armos 1 */ + AMOS_01_00, /* Armos Switch Hit in Wind Ruins Entrance Armos 2 */ + AMOS_02_00, /* Running Armos Switch Hit in Wind Ruins Running Armos, Running Armos */ + AMOS_03_00, /* Armos Switch Hit in Wind Ruins Running Armos, Left Armos */ + AMOS_04_00, /* Armos Switch Hit in Wind Ruins Running Armos, Middle Armos */ + AMOS_05_00, /* Armos Switch Hit in Wind Ruins Running Armos, Right Armos */ + AMOS_06_00, /* Armos Switch Hit in Wind Ruins Running Armos, Right Unused */ + AMOS_07_00, /* Armos Switch Hit in Wind Ruins Minish Grass Path */ + AMOS_08_00, /* Armos Switch Hit in Wind Ruins Entrance Unused */ + AMOS_09_00, /* Armos Switch Hit in Fortress of Winds, Right Side Key Armos 1 */ + AMOS_0A_00, /* Armos Switch Hit in Fortress of Winds, Right Side Key Armos 2 */ AMOS_0B_00, AMOS_0C_00, AMOS_0D_00, AMOS_0E_00, AMOS_0F_00, - HARI_01_T0, - SEIIKI_STAINED_GLASS, - SEIIKI_ENTER, - SEIIKI_SWORD_1ST, - SEIIKI_SWORD_2ND, - SEIIKI_SWORD_3RD, - SEIIKI_BUNSHIN, - BAGUZU_MORI_02_00, - BAGUZU_MORI_02_T0, - BAGUZU_MORI_02_T1, - BAGUZU_MORI_02_T2, + HARI_01_T0, /* 10 Shell Chest Open in Hyrule Town, Stockwell Shop Minish Roof */ + SEIIKI_STAINED_GLASS, /* Seen stained glass scene in Elemental Sanctuary */ + SEIIKI_ENTER, /* Ezlo talks about Sanctuary in Elemental Sanctuary */ + SEIIKI_SWORD_1ST, /* Ezlo talks about stone tablet in Elemental Sanctuary */ + SEIIKI_SWORD_2ND, /* Water Element on pedestal in Elemental Sanctuary */ + SEIIKI_SWORD_3RD, /* Ezlo talks after opening secret room in Elemental Sanctuary */ + SEIIKI_BUNSHIN, /* Ezlo talks after first time cloning in Elemental Sanctuary */ + BAGUZU_MORI_02_00, /* Obtained Heart Piece in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T0, /* Red (> Kinstone Chest Open (Top left) in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T1, /* Red 3 Prong Kinstone Chest Open (Top right) in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T2, /* Red (> Kinstone Chest Open (Bottom right) in Hyrule Town Schoolyard Minish Path */ CHIKATSURO_01_BW00, - SORA_10_H00, - SORA_11_H00, - SORA_11_T00, - SORA_11_T01, - SORA_12_T00, - SORA_13_H00, - SORA_13_T00, - SORA_13_T01, - SORA_14_T00, - SORA_14_R00, - SORA_14_R01, - SORA_14_R02, - SORA_14_R03, - SORA_14_R04, - SORA_14_R05, - SORA_14_R06, - SORA_14_R07, - IZUMIGARE_00_H00, + SORA_10_H00, /* Obtained Heart Piece in Crenel Summit Beanstalk */ + SORA_11_H00, /* Obtained Heart Piece in Lake Hylia Beanstalk */ + SORA_11_T00, /* 200 Rupee Chest Open in Lake Hylia Beanstalk */ + SORA_11_T01, /* 200 Shell Chest Open in Lake Hylia Beanstalk */ + SORA_12_T00, /* Quiver Big Chest Open in Wind Ruins Beanstalk */ + SORA_13_H00, /* Obtained Heart Piece in Eastern Hills Beanstalk */ + SORA_13_T00, /* 200 Rupee Chest Open in Eastern Hills Beanstalk */ + SORA_13_T01, /* 200 Shell Chest Open in Eastern Hills Beanstalk */ + SORA_14_T00, /* Red (> Kinstone Chest Open in Southwest Hyrule Beanstalk */ + SORA_14_R00, /* Grabbed Top Left Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R01, /* Grabbed Top Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R02, /* Grabbed Top Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R03, /* Grabbed Top Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R04, /* Grabbed Top Right Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R05, /* Grabbed Right Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R06, /* Grabbed Right Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R07, /* Grabbed Right Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + IZUMIGARE_00_H00, /* Obtained Heart Piece in Castle Garden East Fountain Stairs */ IZUMIGARE_00_H01, - SORA_10_R00, - SORA_10_R01, - SORA_10_R02, - SORA_10_R03, - SORA_10_R04, - SORA_10_R05, - SORA_10_R06, - SORA_10_R07, - SORA_14_R08, - SORA_14_R09, - SORA_14_R0a, - SORA_14_R0b, - SORA_14_R0c, - SORA_14_R0d, - SORA_14_R0e, - SORA_14_R0f, - KAKERA_TAKARA_B, - KAKERA_TAKARA_C, - KAKERA_TAKARA_D, - KAKERA_TAKARA_F, - KAKERA_TAKARA_G, - KAKERA_TAKARA_H, - KAKERA_TAKARA_I, + SORA_10_R00, /* Grabbed Top Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R01, /* Grabbed Top Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R02, /* Grabbed Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R03, /* Grabbed Bottom Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R04, /* Grabbed Bottom Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R05, /* Grabbed Bottom Left Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R06, /* Grabbed Left Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R07, /* Grabbed Top Left Red Rupee in Crenel Summit Beanstalk */ + SORA_14_R08, /* Grabbed Bottom Right Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R09, /* Grabbed Bottom Left Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0a, /* Grabbed Bottom Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0b, /* Grabbed Bottom Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0c, /* Grabbed Bottom Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0d, /* Grabbed Left Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0e, /* Grabbed Left Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0f, /* Grabbed Left Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + KAKERA_TAKARA_B, /* Blue L Kinstone Chest Open in Mt. Crenel, Minish Raindrop Path */ + KAKERA_TAKARA_C, /* Blue S Kinstone Chest Open in Crenel Base, Mineral Water Minish Path */ + KAKERA_TAKARA_D, /* Red W Kinstone Chest Open in Hyrule Town, School Minish Path */ + KAKERA_TAKARA_F, /* Red 3 Prong Kinstone Chest Open in Lon Lon Ranch, Minish Path */ + KAKERA_TAKARA_G, /* 100 Rupee Chest Open in Minish Woods, Minish Path */ + KAKERA_TAKARA_H, /* 200 Shell Chest Open in Minish Path to Melari's Mine */ + KAKERA_TAKARA_I, /* Blue L Kinstone Chest Open in Lake Hylia Mayor's Cabin Minish Path */ KAKERA_TAKARA_XXXX, TESTMAP00_00, TESTMAP01_00, TESTMAP01_01, TESTMAP02_00, LV4_HAKA_08_T0, - LV4_HAKA_07_00, - LV4_HAKA_04_00, - LV4_HAKA_04_01, - LV4_HAKA_04_K0, - LV4_HAKA_04_K1, + LV4_HAKA_07_00, /* Door Open in Royal Crypt Mushroom Pit */ + LV4_HAKA_04_00, /* Left Key Revealed in Royal Crypt Key Block Room */ + LV4_HAKA_04_01, /* Right Key Revealed in Royal Crypt Key Block Room */ + LV4_HAKA_04_K0, /* Obtained Left Key in Royal Crypt Key Block Room */ + LV4_HAKA_04_K1, /* Obtained Right Key in Royal Crypt Key Block Room */ LV4_HAKA_01_02, LV4_HAKA_08_XX, - BAGUZU_MORI_03_H00, + BAGUZU_MORI_03_H00, /* Obtained Heart Piece in Lon Lon Ranch Minish Path */ MOGURAU_00_H00, HARI_01_H00, - HARI_03_T00, - MACHI_CHIKA2_00_CAP_0, - MACHI_CHIKA2_11_CAP_0, - LV4_HAKA_08_CAP_0, - BAGUZUIWA_02_CAP_0, + HARI_03_T00, /* Opened 100 rupee chest in Hyrule Town Bakery, minish attic */ + MACHI_CHIKA2_00_CAP_0, /* Ezlo talks about fountain in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_11_CAP_0, /* Ezlo talks about Librari dropping them in Hyrule Town, Minish Flipper Cave */ + LV4_HAKA_08_CAP_0, /* Ezlo talks about Royal Crypt in Royal Crypt Entrance */ + BAGUZUIWA_02_CAP_0, /* Ezlo talks about raindrops in Mount Crenel Rainy Minish Path */ MACHI_CHIKA2_01_CAP_0, - MACHI_CHIKA2_01_HK, - LV4_HAKA_08_B0, - LV4_HAKA_08_K0, + MACHI_CHIKA2_01_HK, /* Obtained Heart Piece in Hyrule Town Fountain (Power Bracelets) */ + LV4_HAKA_08_B0, /* Obtained Bomb Drop in Royal Crypt Entrance */ + LV4_HAKA_08_K0, /* Obtained Small Key in Royal Crypt Entrance */ MAROYA_1ST, #ifndef EU MACHI_CHIKA2_10_CAP_0, @@ -900,140 +900,140 @@ typedef enum { typedef enum { BEGIN_4, - DOUKUTU_00_T0, - DOUKUTU_00_T1, - DOUKUTU_05_EVENT, - SOUGEN_DOUKUTU_00_T0, - SOUGEN_DOUKUTU_00_T1, - SOUGEN_DOUKUTU_00_T2, - SOUGEN_DOUKUTU_00_T3, - SOUGEN_DOUKUTU_00_T4, - SOUGEN_DOUKUTU_00_SW0, - SOUGEN_DOUKUTU_00_SW1, - SOUGEN_DOUKUTU_00_SW2, - SOUGEN_DOUKUTU_00_SW3, - SOUGEN_DOUKUTU_07_T0, - SOUGEN_DOUKUTU_0B_T0, - SOUGEN_DOUKUTU_0C_T0, - SOUGEN_DOUKUTU_0C_BW00, - SOUGEN_DOUKUTU_0D_00, - SOUGEN_DOUKUTU_0D_T0, - SOUGEN_DOUKUTU_0E_BW00, - SOUGEN_DOUKUTU_0F_T00, - SOUGEN_DOUKUTU_10_R00, - SOUGEN_DOUKUTU_10_R01, - SOUGEN_DOUKUTU_10_R02, - SOUGEN_DOUKUTU_10_R03, - SOUGEN_DOUKUTU_10_R04, - SOUGEN_DOUKUTU_10_R05, - SOUGEN_DOUKUTU_10_R06, - SOUGEN_DOUKUTU_10_R07, - SOUGEN_DOUKUTU_10_R08, - SOUGEN_DOUKUTU_10_R09, - SOUGEN_DOUKUTU_10_R0A, - SOUGEN_DOUKUTU_10_R0B, - SOUGEN_DOUKUTU_10_R0C, - SOUGEN_DOUKUTU_10_R0D, - SOUGEN_DOUKUTU_10_R0E, - SOUGEN_DOUKUTU_11_R00, - SOUGEN_DOUKUTU_11_R01, - SOUGEN_DOUKUTU_11_R02, - SOUGEN_DOUKUTU_11_R03, - SOUGEN_DOUKUTU_11_R04, - SOUGEN_DOUKUTU_11_R05, - SOUGEN_DOUKUTU_11_R06, - SOUGEN_DOUKUTU_11_R07, - SOUGEN_DOUKUTU_11_R08, - SOUGEN_DOUKUTU_11_R09, - SOUGEN_DOUKUTU_11_R0A, - SOUGEN_DOUKUTU_11_R0B, - SOUGEN_DOUKUTU_11_R0C, - SOUGEN_DOUKUTU_11_R0D, - SOUGEN_DOUKUTU_11_R0E, - SOUGEN_DOUKUTU_13_T0, - HIKYOU_DOUKUTU0_00_T0, + DOUKUTU_00_T0, /* Opened the left 50 rupee chest in Mount Crenel, Grayblade's dojo */ + DOUKUTU_00_T1, /* Opened the right 50 rupee chest in Mount Crenel, Grayblade's dojo */ + DOUKUTU_05_EVENT, /* Lit up Grimblade's Torches in Hyrule Castle Garden. Grimblade */ + SOUGEN_DOUKUTU_00_T0, /* Red W Kinstone Chest Open in Magical Boomerang Cave (top left) */ + SOUGEN_DOUKUTU_00_T1, /* Red > Kinstone Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T2, /* Red 3 Prong Kinstone Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T3, /* 200 Shell Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T4, /* Large Chest Opened in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW0, /* Top Left Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW1, /* Top Right Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW2, /* Bottom Left Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW3, /* Bottom Right Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_07_T0, /* Red 3 Prong Kinstone Chest Open in Trilby Highlands Keese Chest Cave */ + SOUGEN_DOUKUTU_0B_T0, /* 200 Shell Chest Open in Hyrule Town, Waterfall Cave */ + SOUGEN_DOUKUTU_0C_T0, /* 50 Rupee Chest Open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0C_BW00, /* Wall to secret room blown open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0D_00, /* Lit torches in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0D_T0, /* Blue S Kinstone Chest Open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0E_BW00, /* Wall to Bottle Business Scrub blown open in West Hyrule Underground */ + SOUGEN_DOUKUTU_0F_T00, /* Opened the wallet chest in the opened pool cave in Lon Lon Ranch Pool cave */ + SOUGEN_DOUKUTU_10_R00, /* Grabbed Top Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R01, /* Grabbed Top Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R02, /* Grabbed Top Middle Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R03, /* Grabbed Top Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R04, /* Grabbed Top Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R05, /* Grabbed Leftmost Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R06, /* Grabbed Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R07, /* Grabbed Middle Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R08, /* Grabbed Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R09, /* Grabbed Rightmost Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0A, /* Grabbed Bottom Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0B, /* Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0C, /* Grabbed Bottom Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0D, /* Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0E, /* Grabbed Bottom Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_11_R00, /* Grabbed Top Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R01, /* Grabbed Top Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R02, /* Grabbed Top Middle Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R03, /* Grabbed Top Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R04, /* Grabbed Top Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R05, /* Grabbed Leftmost Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R06, /* Grabbed Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R07, /* Grabbed Middle Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R08, /* Grabbed Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R09, /* Grabbed Rightmost Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0A, /* Grabbed Bottom Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0B, /* Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0C, /* Grabbed Bottom Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0D, /* Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0E, /* Grabbed Bottom Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_13_T0, /* 20 Shell Chest Open in Hyrule Field Cave, north from Minish Woods Exit */ + HIKYOU_DOUKUTU0_00_T0, /* Gold Kinstone Chest Open in Castor Wilds South Cave */ HIKYOU_DOUKUTU0_01_T0, - HIKYOU_DOUKUTU0_01_T1, - HIKYOU_DOUKUTU0_02_KAIGARA, - HIKYOU_DOUKUTU0_04_H00, - HIKYOU_DOUKUTU1_00_00, - HIKYOU_DOUKUTU1_00_T0, - YAMADOUKUTU_01_00, - YAMADOUKUTU_02_00, - YAMADOUKUTU_03_T0, + HIKYOU_DOUKUTU0_01_T1, /* Gold Kinstone Chest Open in Castor Wilds North Cave */ + HIKYOU_DOUKUTU0_02_KAIGARA, /* Blue S Kinstone Chest Open in Wind Ruins Cave */ + HIKYOU_DOUKUTU0_04_H00, /* Obtained Heart Piece in Castor Wilds North East Cave */ + HIKYOU_DOUKUTU1_00_00, /* Defeated Darknut in Castor Wilds */ + HIKYOU_DOUKUTU1_00_T0, /* Gold Kinstone Chest Open in Castor Wilds Darknut */ + YAMADOUKUTU_01_00, /* Rock pushed to Hole in Mount Crenel Pillar Cave */ + YAMADOUKUTU_02_00, /* Bridge Button Activated in Mount Crenel Bridge Cave */ + YAMADOUKUTU_03_T0, /* Blue S Kinstone Chest Open in Mount Crenel Pillar Cave */ YAMADOUKUTU_06_H0, - YAMADOUKUTU_07_T0, - YAMADOUKUTU_08_h0, - YAMADOUKUTU_08_h1, - YAMADOUKUTU_08_h2, - YAMADOUKUTU_09_r0, - YAMADOUKUTU_09_r1, - YAMADOUKUTU_09_r2, - YAMADOUKUTU_0F_00, - YAMADOUKUTU_10_00, - SUIGEN_DOUKUTU_00_T0, - SUIGEN_DOUKUTU_01_BW00, - SUIGEN_DOUKUTU_02_T0, - SUIGEN_DOUKUTU_04_BW00, - SUIGEN_DOUKUTU_05_T0, - SUIGEN_DOUKUTU_08_R0, - SUIGEN_DOUKUTU_08_R1, - SUIGEN_DOUKUTU_08_R2, - SUIGEN_DOUKUTU_08_R3, - SUIGEN_DOUKUTU_08_R4, - SUIGEN_DOUKUTU_08_R5, - SUIGEN_DOUKUTU_08_R6, - SUIGEN_DOUKUTU_08_R7, - SUIGEN_DOUKUTU_08_R8, - SUIGEN_DOUKUTU_08_R9, - SUIGEN_DOUKUTU_08_R10, - SUIGEN_DOUKUTU_08_R11, - SUIGEN_DOUKUTU_08_R12, - SUIGEN_DOUKUTU_08_R13, - SUIGEN_DOUKUTU_08_R14, - SUIGEN_DOUKUTU_09_H00, - HAKA_DOUKUTU_00_H0, - HAKA_DOUKUTU_01_T0, - HAKA_DOUKUTU_01_GEENE, - KOBITO_DOUKUTU_00_T0, + YAMADOUKUTU_07_T0, /* Blue L Kinstone Chest Open in Crenel Mines" cave */ + YAMADOUKUTU_08_h0, /* Obtained Heart Piece in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_08_h1, /* Blue S Kinstone Chest Open in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_08_h2, /* 50 Rupee Chest Open in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_09_r0, /* Grabbed Left Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_09_r1, /* Grabbed Middle Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_09_r2, /* Grabbed Right Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_0F_00, /* Talk to the Crenel Base Hint Scrub in Mount Crenel Base Entrance Cave */ + YAMADOUKUTU_10_00, /* Open the door leading to Grayblade's dojo in Mount Crenel, Dojo Cave */ + SUIGEN_DOUKUTU_00_T0, /* 100 Rupee Chest Open in Veil Falls Helmasaur Keese Cave 2F */ + SUIGEN_DOUKUTU_01_BW00, /* Wall to chest room blown open in Veil Falls Helmasaur Keese Cave 1F */ + SUIGEN_DOUKUTU_02_T0, /* 50 Shell Chest Open in Veil Falls Helmasaur Keese Cave 1F */ + SUIGEN_DOUKUTU_04_BW00, /* Wall to secret area blown open in Veil Falls Entrance Cave */ + SUIGEN_DOUKUTU_05_T0, /* 50 Shell Chest Open in Veil Falls Entrance Cave Secret Chest */ + SUIGEN_DOUKUTU_08_R0, /* Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R1, /* Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R2, /* Grabbed Red Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R3, /* Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R4, /* Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R5, /* Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R6, /* Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R7, /* Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R8, /* Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R9, /* Grabbed Underwater Left Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ + SUIGEN_DOUKUTU_08_R10, /* Grabbed Underwater Right Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ + SUIGEN_DOUKUTU_08_R11, /* Grabbed Underwater Left Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ + SUIGEN_DOUKUTU_08_R12, /* Grabbed Underwater Right Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ + SUIGEN_DOUKUTU_08_R13, /* Grabbed Underwater Left Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ + SUIGEN_DOUKUTU_08_R14, /* Grabbed Underwater Right Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ + SUIGEN_DOUKUTU_09_H00, /* Obtained Heart Piece in Veil Falls Top Left Waterfall Cave */ + HAKA_DOUKUTU_00_H0, /* Obtained Heart Piece in Royal Valley Clone Block Grave */ + HAKA_DOUKUTU_01_T0, /* 100 Shell Chest Open in Royal Valley, Gina Grave */ + HAKA_DOUKUTU_01_GEENE, /* Talked to Gina in Royal Valley, Gina Grave */ + KOBITO_DOUKUTU_00_T0, /* Blue L Kinstone Chest Open in Mount Crenel Minish Pesto Cave */ KOBITO_DOUKUTU_02_T0, - KOBITO_DOUKUTU_05_T0, + KOBITO_DOUKUTU_05_T0, /* Red 3 Prong Kinstone Chest Open in Minish Woods North Minish Cave */ KOBITO_SHIRO_DOUKUTU_00_H0, - KOBITO_SHIRO_DOUKUTU_00_T0, - KOBITO_SHIRO_DOUKUTU_01_T0, - KOBITO_URA_DOUKUTU_00_T0, - KOBITO_URA_DOUKUTU_01_T0, - GORON_DOUKUTU_APPEAR, + KOBITO_SHIRO_DOUKUTU_00_T0, /* 50 Shell Chest Open in Castle Garden East Minish Cave */ + KOBITO_SHIRO_DOUKUTU_01_T0, /* 50 Shell Chest Open in Castle Garden West Minish Cave */ + KOBITO_URA_DOUKUTU_00_T0, /* 100 Shell Chest Open in Castle Garden East Minish Cave (Unused) */ + KOBITO_URA_DOUKUTU_01_T0, /* 100 Shell Chest Open in Castle Garden West Minish Cave (Unused) */ + GORON_DOUKUTU_APPEAR, /* Goron Figurine Available in Figurine Pool in Lon Lon Ranch, Goron Cave */ KOBITO_DOUKUTU_03_T0, - HIKYOU_DOUKUTU0_01_AKINDO, - SOUGEN_DOUKUTU_14_AKINDO, - SOUGEN_DOUKUTU_17_AKINDO, - YAMADOUKUTU_04_AKINDO, - YAMADOUKUTU_0D_AKINDO, - YAMADOUKUTU_0F_AKINDO, - YAMADOUKUTU_0E_SENNIN, + HIKYOU_DOUKUTU0_01_AKINDO, /* Stunned 30 Arrow Business Scrub in Castor Wilds North Cave */ + SOUGEN_DOUKUTU_14_AKINDO, /* Stunned Bottle Business Scrub in West Hyrule Underground */ + SOUGEN_DOUKUTU_17_AKINDO, /* Stunned Kinstone Business Scrub in Minish Woods, Tree House */ + YAMADOUKUTU_04_AKINDO, /* Stunned Grip Ring Business Scrub in Mount Crenel Far Right Cave */ + YAMADOUKUTU_0D_AKINDO, /* Stunned Bomb Business Scrub in Mount Crenel Base */ + YAMADOUKUTU_0F_AKINDO, /* Stunned Hint Scrub in Mount Crenel Base */ + YAMADOUKUTU_0E_SENNIN, /* Visited Crenel Hermit's Cave in Mt. Crenel */ KOBITO_DOUKUTU_04_T0, - KOBITO_DOUKUTU_07_T0, - KOBITO_DOUKUTU_09_T0, - KOBITO_DOUKUTU_09_T1, - KOBITO_DOUKUTU_09_T2, - GORON_DOUKUTU_01_T0, - GORON_DOUKUTU_01_T1, + KOBITO_DOUKUTU_07_T0, /* Red W Kinstone Chest Open in Lake Hylia North Minish Cave */ + KOBITO_DOUKUTU_09_T0, /* Blue L Kinstone Chest Open in Minish Woods Middle Minish Hole */ + KOBITO_DOUKUTU_09_T1, /* Blue S Kinstone Chest Open in Minish Woods Right Minish Hole */ + KOBITO_DOUKUTU_09_T2, /* Red 3 Prong Kinstone Chest Open in Minish Woods Left Minish Hole */ + GORON_DOUKUTU_01_T0, /* Bottle Chest Open in Lon Lon Ranch, Goron Cave */ + GORON_DOUKUTU_01_T1, /* 200 Rupee Chest Open in Lon Lon Ranch, Goron Cave */ GORON_DOUKUTU_01_T2, GORON_DOUKUTU_01_T3, - KOBITO_DOUKUTU_09_H0, - SOUGEN_DOUKUTU_15_H0, + KOBITO_DOUKUTU_09_H0, /* Obtained Heart Piece in Minish Woods Left Minish Hole */ + SOUGEN_DOUKUTU_15_H0, /* Obtained Heart Piece in North Hyrule Field, Western Cave */ KOBITO_DOUKUTU_01_H00, - YAMADOUKUTU_05_H00, - KOBITO_DOUKUTU_03_H00, - DOUKUTU_04_H00, - DOUKUTU_00_H00, - KOBITO_DOUKUTU_04_H00, - DOUKUTU_06_H00, + YAMADOUKUTU_05_H00, /* Obtained Heart Piece in Hyrule Castle Garden, Grimblade's Room */ /* Obtained Heart Piece in Mount Crenel Fairy Heart Piece Cave */ + KOBITO_DOUKUTU_03_H00, /* Obtained Heart Piece in Wind Ruins Minish Cave */ + DOUKUTU_04_H00, /* Obtained Heart Piece in Castor Wilds, Swiftblade I grave */ + DOUKUTU_00_H00, /* Obtained Heart Piece in Mount Crenel, Grayblade's dojo */ + KOBITO_DOUKUTU_04_H00, /* Obtained Heart Piece in South Hyrule Field, Water Minish Cave */ + DOUKUTU_06_H00, /* Obtained Heart Piece in Lake Hylia, Waveblade's Room */ DOUKUTU_05_H00, - KOBITO_DOUKUTU_02_H00, - KOBITO_DOUKUTU_01_T0, - YAMADOUKUTU_04_CAP_0, + KOBITO_DOUKUTU_02_H00, /* Obtained Heart Piece in Castor Wilds Southeast Water Cave */ + KOBITO_DOUKUTU_01_T0, /* Red (> Kinstone Chest Open in Castor Wilds Southeast Water Cave Left Chest */ + YAMADOUKUTU_04_CAP_0, /* Ezlo talks about Helmasaurs in Mount Crenel Base Cave */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) KS_B06, KS_B15, @@ -1047,91 +1047,91 @@ typedef enum { typedef enum { BEGIN_5, - LV1_00_WALK, - LV1_01_WALK, - LV1_02_WALK, - LV1_03_WALK, - LV1_04_WALK, - LV1_05_WALK, - LV1_06_WALK, - LV1_07_WALK, - LV1_08_WALK, - LV1_09_WALK, - LV1_0A_WALK, - LV1_0B_WALK, - LV1_10_WALK, - LV1_11_WALK, - LV1_12_WALK, + LV1_00_WALK, /* Map Screen, Visited Room 13 in Deepwood Shrine 13 (Madderpillar) */ + LV1_01_WALK, /* Map Screen, Visited Room 12 in Deepwood Shrine 12 (To Madderpillar) */ + LV1_02_WALK, /* Map Screen, Visited Room 11 in Deepwood Shrine 11 (Stairs to B2) */ + LV1_03_WALK, /* Map Screen, Visited Room 6 in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_04_WALK, /* Map Screen, Visited Room 7 in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_05_WALK, /* Map Screen, Visited Room 5 in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_06_WALK, /* Map Screen, Visited Room 4 in Deepwood Shrine 4 (Barrel) */ + LV1_07_WALK, /* Map Screen, Visited Room 8 in Deepwood Shrine 8 (Mushrooms) */ + LV1_08_WALK, /* Map Screen, Visited Room 10 in Deepwood Shrine 10 (Mulldozer Fight) */ + LV1_09_WALK, /* Map Screen, Visited Room 9 in Deepwood Shrine 9 (Pillars & Slugs) */ + LV1_0A_WALK, /* Map Screen, Visited Room 3 in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0B_WALK, /* Map Screen, Visited Entrance in Deepwood Shrine 1 (Entrance) */ + LV1_10_WALK, /* Map Screen, Visited Room 2 in Deepwood Shrine 2 (Slug & Torches) */ + LV1_11_WALK, /* Map Screen, Visited Room 17 in Deepwood Shrine 17 (Boss Key) */ + LV1_12_WALK, /* Map Screen, Visited Room 16 in Deepwood Shrine 16 (Lilypad North) */ LV1_13_WALK, - LV1_14_WALK, - LV1_15_WALK, - LV1_16_WALK, - LV1_17_WALK, - LV1_TARU_0, - LV1_TARU_1, - LV1_00_00, + LV1_14_WALK, /* Map Screen, Visited Room 14 in Deepwood Shrine 14 (Lilypad West) */ + LV1_15_WALK, /* Map Screen, Visited Room 15 in Deepwood Shrine 15 (Lilypad East) */ + LV1_16_WALK, /* Map Screen, Visited Room 19 in Deepwood Shrine 19 (Big Green Chuchu) */ + LV1_17_WALK, /* Map Screen, Visited Room 18 in Deepwood Shrine 18 (Boss Door) */ + LV1_TARU_0, /* Left Buttons Pressed in Deepwood Shrine 4 (Barrel) */ + LV1_TARU_1, /* Right Button Pressed in Deepwood Shrine 4 (Barrel) */ + LV1_00_00, /* Defeated Madderpillar in Deepwood Shrine 13 (Madderpillar) */ LV1_00_01, - LV1_00_02, - LV1_00_03, - LV1_00_T0, - LV1_01_00, - LV1_01_01, - LV1_01_02, - LV1_01_03, - LV1_01_04, + LV1_00_02, /* Sucked East Web in Deepwood Shrine 13 (Madderpillar) */ + LV1_00_03, /* Sucked South Web in Deepwood Shrine 13 (Madderpillar) */ + LV1_00_T0, /* Gust Jar Chest Open in Deepwood Shrine 13 (Madderpillar) */ + LV1_01_00, /* Shortcut Door to Barrel Room Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_01, /* Blue Portal Hidden Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_02, /* Door to Madderpillar Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_03, /* Left Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_04, /* Right Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ LV1_01_T0, - LV1_01_T1, - LV1_01_T2, - LV1_02_T0, - LV1_03_CAP_0, - LV1_04_02, - LV1_04_T0, + LV1_01_T1, /* Left 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_T2, /* Right 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_02_T0, /* 20 Shell Chest Open in Deepwood Shrine 11 (Stairs to B2) */ + LV1_03_CAP_0, /* Ezlo talks about bridge pressure button in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_04_02, /* Pot set on button in Room 6 in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_04_T0, /* Small Key Chest Open in Deepwood Shrine 7 (Double Pillar Small Key) */ LV1_05_T0, - LV1_05_T1, - LV1_06_03, - LV1_06_T0, - LV1_06_CAP_0, - LV1_07_00, + LV1_05_T1, /* Map Chest Open in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_06_03, /* East Door Open in Deepwood Shrine 4 (Barrel) */ + LV1_06_T0, /* 10 Shell Chest Open in Deepwood Shrine 4 (Barrel) */ + LV1_06_CAP_0, /* Ezlo talks about barrel in Deepwood Shrine 4 (Barrel) */ + LV1_07_00, /* Hit bridge button in Deepwood Shrine 8 (Mushrooms) */ LV1_07_CAP_0, - LV1_08_00, - LV1_08_KEY, + LV1_08_00, /* Defeated Mulldozers in Deepwood Shrine 10 (Mulldozer Fight) */ + LV1_08_KEY, /* Obtained Small Key in Deepwood Shrine 10 (Mulldozer Fight) */ LV1_09_00, - LV1_0A_00, - LV1_0A_CAP_0, - LV1_0B_01, - LV1_0B_02, - LV1_0B_15, - LV1_0B_CAP_0, - LV1_10_00, - LV1_10_01, - LV1_10_02, - LV1_10_03, - LV1_10_KEY, - LV1_10_T0, - LV1_11_01, - LV1_11_T0, - LV1_12_15, - LV1_12_T0, - LV1_12_T1, - LV1_12_00, - LV1_12_01, - LV1_14_00, - LV1_14_CAP_0, - LV1_16_UTSUWA, - LV1_16_1STEND, - LV1_17_00, - LV1_17_T0, - LV1_02_00, - LV1_02_01, - LV1_10_04, - LV1_20_CAP_0, - LV1_01_HK, - LV1_04_CAP_0, - LV1_03_00, - LV1_05_HK, - LV1_08_01, - LV1_01_05, - LV1_10_CAP_0, + LV1_0A_00, /* Lever pulled in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0A_CAP_0, /* Ezlo talks about pull lever in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0B_01, /* Sucked West Web in Deepwood Shrine 1 (Entrance) */ + LV1_0B_02, /* Sucked East Web in Deepwood Shrine 1 (Entrance) */ + LV1_0B_15, /* Blue and Red Portals Activate in Deepwood Shrine 1 (Entrance) */ + LV1_0B_CAP_0, /* Ezlo talks about Deepwood Shrine in Deepwood Shrine 1 (Entrance) */ + LV1_10_00, /* Hit top left button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_01, /* Hit bottom left button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_02, /* Hit top right button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_03, /* Hit bottom right button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_KEY, /* Door open in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_T0, /* Small Key Chest Open in Deepwood Shrine 2 (Slug & Torches) */ + LV1_11_01, /* Red Portal Button Pressed in Deepwood Shrine 17 (Boss Key) */ + LV1_11_T0, /* Boss Key Chest Open in Deepwood Shrine 17 (Boss Key) */ + LV1_12_15, /* Lily pad appears in Room 16 in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_T0, /* Small Key Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_T1, /* Compass Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_00, /* Pot set on Chest button in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_01, /* Pot set on button in Room 15 in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_14_00, /* Door open in Deepwood Shrine 14 (Lilypad West) */ + LV1_14_CAP_0, /* Ezlo talks about lilypad in Deepwood Shrine 14 (Lilypad West) */ + LV1_16_UTSUWA, /* Obtained Heart Container in Deepwood Shrine 19 (Big Green Chuchu) */ + LV1_16_1STEND, /* Seen Green Chuchu Cutscene in Deepwood Shrine 18 (Boss Door) */ + LV1_17_00, /* Boss Door Open in Deepwood Shrine 18 (Boss Door) */ + LV1_17_T0, /* Red Rupee Chest Open in Deepwood Shrine 18 (Boss Door) */ + LV1_02_00, /* Revealed Chest Button in Deepwood Shrine 11 (Stairs to B2) */ + LV1_02_01, /* Hit Chest Button in Deepwood Shrine 11 (Stairs to B2) */ + LV1_10_04, /* Small Key Chest Spawned in Deepwood Shrine 2 (Slug & Torches) */ + LV1_20_CAP_0, /* Ezlo talks about moving barrel in Deepwood Shrine (Inside Barrel) */ + LV1_01_HK, /* Obtained Heart Piece in Deepwood Shrine 12 (To Madderpillar) */ + LV1_04_CAP_0, /* Ezlo talks about pushing and pulling pillars in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_03_00, /* ??? in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_05_HK, /* Obtained Heart Piece in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_08_01, /* Key Falls & Door Open in Deepwood Shrine 10 (Mulldozer fight) */ + LV1_01_05, /* Blue Portal Activated in Deepwood Shrine 12 (To Madderpillar) */ + LV1_10_CAP_0, /* Ezlo talks about locked door in Deepwood Shrine 2 (Slug & Torches) */ #if !defined(EU) && !defined(JP) LV1_12_CAP_0, #endif @@ -1140,615 +1140,615 @@ typedef enum { typedef enum { BEGIN_6, - LV2_00_WALK, - LV2_01_WALK, - LV2_02_WALK, - LV2_03_WALK, - LV2_04_WALK, - LV2_05_WALK, - LV2_06_WALK, - LV2_07_WALK, - LV2_08_WALK, - LV2_09_WALK, - LV2_10_WALK, - LV2_11_WALK, - LV2_12_WALK, - LV2_13_WALK, - LV2_14_WALK, - LV2_15_WALK, - LV2_16_WALK, - LV2_17_WALK, - LV2_BOSS_00_WALK, - LV2_00_00, - LV2_00_01, - LV2_01_01, - LV2_01_02, - LV2_01_T0, - LV2_01_T1, - LV2_02_01, - LV2_03_CAP_0, - LV2_04_00, - LV2_04_01, - LV2_04_CAP_0, - LV2_06_00, + LV2_00_WALK, /* Map Screen, Visited Room 12 in Cave of Flames 12 (Stairs to B2) */ + LV2_01_WALK, /* Map Screen, Visited Room 11 in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_02_WALK, /* Map Screen, Visited Room 10 in Cave of Flames 10 (Lava Minecart) */ + LV2_03_WALK, /* Map Screen, Visited Entrance in Cave of Flames 1 (Entrance) */ + LV2_04_WALK, /* Map Screen, Visited Room 5 in Cave of Flames 5 (Minecart) */ + LV2_05_WALK, /* Map Screen, Visited Room 4 in Cave of Flames 4 (Rupee Like) */ + LV2_06_WALK, /* Map Screen, Visited Room 6 in Cave of Flames 6 (B1 West) */ + LV2_07_WALK, /* Map Screen, Visited Room 7 in Cave of Flames 7 (Helmasaurs) */ + LV2_08_WALK, /* Map Screen, Visited Room 9 in Cave of Flames 9 (Whirlwind) */ + LV2_09_WALK, /* Map Screen, Visited Room 8 in Cave of Flames 8 (Minish Lava) */ + LV2_10_WALK, /* Map Screen, Visited Room 13 in Cave of Flames 13 (Minish Spike Traps) */ + LV2_11_WALK, /* Map Screen, Visited Room 14 in Cave of Flames 14 (Quad Rollobite) */ + LV2_12_WALK, /* Map Screen, Visited Room 18 in Cave of Flames 18 (Hole to Gleerok) */ + LV2_13_WALK, /* Map Screen, Visited Room 16 in Cave of Flames 16 (Pacci Whirlwind) */ + LV2_14_WALK, /* Map Screen, Visited Room 17 in Cave of Flames 17 (Spike Trap Kinstone) */ + LV2_15_WALK, /* Map Screen, Visited Room 3 in Cave of Flames 3 (Spinies) */ + LV2_16_WALK, /* Map Screen, Visited Room 1 in Cave of Flames 2 (Bob-ombs) */ + LV2_17_WALK, /* Map Screen, Visited Room 15 in Cave of Flames 15 (Boss Key Room) */ + LV2_BOSS_00_WALK, /* Map Screen, Visited Room 19 in Cave of Flames 19 (Gleerok) */ + LV2_00_00, /* Opened Stairs Door in Cave of Flames 12 (Stairs to B2) */ + LV2_00_01, /* Hit Door Button in Cave of Flames 12 (Stairs to B2) */ + LV2_01_01, /* Defeated Spiny Chus in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_02, /* Pushed Chest Pillar to Hole in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_T0, /* Small Key Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_T1, /* Cane of Pacci Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_02_01, /* Blew up wall to Heart Piece in Cave of Flames 10 (Lava Minecart) */ + LV2_03_CAP_0, /* Ezlo talks about Cave of Flames in Cave of Flames (Entrance) */ + LV2_04_00, /* Minecart Switch Flipped in Cave of Flames 5 (Minecart) */ + LV2_04_01, /* Opened Doors to Switch in Cave of Flames 5 (Minecart) */ + LV2_04_CAP_0, /* Ezlo talks about Minecart in Cave of Flames 5 (Minecart) */ + LV2_06_00, /* Blew up wall in Cave of Flames 6 (B1 West) */ LV2_06_T0, - LV2_06_CAP_0, - LV2_07_00, - LV2_07_CAP_0, - LV2_08_00, - LV2_08_01, - LV2_08_T0, - LV2_08_T1, - LV2_09_00, - LV2_09_T0, - LV2_09_T1, - LV2_10_00, - LV2_10_T0, - LV2_10_T1, - LV2_11_00, - LV2_11_01, - LV2_14_T0, - LV2_15_01, - LV2_15_T0, - LV2_15_CAP_0, - LV2_16_00, - LV2_17_00, - LV2_17_15, - LV2_17_T0, - LV2_17_T1, - LV2_17_T2, - LV2_20_UTSUWA, - LV2_00_02, - LV2_06_HK, - LV2_11_02, - LV2_05_R1, - LV2_05_R2, - LV2_05_R3, - LV2_05_R4, - LV2_05_R5, - LV2_00_CAP_0, - LV2_09_CAP_0, + LV2_06_CAP_0, /* Ezlo talks after Minecart in Cave of Flames 6 (B1 West) */ + LV2_07_00, /* Defeated Helmasaurs in Cave of Flames 7 (Helmasaurs) */ + LV2_07_CAP_0, /* Ezlo talks about Portal in Cave of Flames 7 (Helmasaurs) */ + LV2_08_00, /* Hit Door Button in Cave of Flames 9 (Whirlwind) */ + LV2_08_01, /* Pushed Chest Pillar to Hole in Cave of Flames 9 (Whirlwind) */ + LV2_08_T0, /* Small Key Chest Open in Cave of Flames 9 (Whirlwind) */ + LV2_08_T1, /* 50 Rupee Chest Open in Cave of Flames 9 (Whirlwind) */ + LV2_09_00, /* Hit Door Button in Cave of Flames 8 (Minish Lava) */ + LV2_09_T0, /* Blue L Kinstone Chest Open in Cave of Flames 8 (Minish Lava) */ + LV2_09_T1, /* Map Chest Open in Cave of Flames 8 (Minish Lava) */ + LV2_10_00, /* Minecart Switch Flipped in Cave of Flames 13 (Minish Spike Traps) */ + LV2_10_T0, /* Blue S Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ + LV2_10_T1, /* Green (< Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ + LV2_11_00, /* Flipped Barrier Switch in Cave of Flames 14 (Quad Rollobite) */ + LV2_11_01, /* Pushed Switch Pillar to Hole in Cave of Flames 14 (Quad Rollobite) */ + LV2_14_T0, /* Green [ Kinstone Chest Open in Cave of Flames 17 (Spike Trap Kinstone) */ + LV2_15_01, /* Defeated Spinies in Cave of Flames 3 (Spinies) */ + LV2_15_T0, /* Compass Chest Open in Cave of Flames 3 (Spinies) */ + LV2_15_CAP_0, /* Ezlo talks about Spinies in Cave of Flames 3 (Spinies) */ + LV2_16_00, /* Blew up wall in Cave of Flames 2 (Bob-ombs) */ + LV2_17_00, /* Activated Red Portal in Cave of Flames 15 (Boss Key Room) */ + LV2_17_15, /* Boss Door Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T0, /* Green / Kinstone Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T1, /* 100 Rupee Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T2, /* Boss Key Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_20_UTSUWA, /* Obtained Heart Container in Cave of Flames 19 (Gleerok) */ + LV2_00_02, /* Jumped up to Blue Portal Button? in Cave of Flames 12 (Stairs to B2) */ + LV2_06_HK, /* Obtained Heart Piece in Cave of Flames 6 (B1 West) */ + LV2_11_02, /* Barrier Down in Cave of Flames 14 (Quad Rollobite) */ + LV2_05_R1, /* Grabbed Top Left Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R2, /* Grabbed Top Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R3, /* Grabbed Top Right Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R4, /* Grabbed Bottom Left Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R5, /* Grabbed Bottom Right Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_00_CAP_0, /* Ezlo talks about using Cane on hole in Cave of Flames 12 (Stairs to B2) */ + LV2_09_CAP_0, /* Ezlo talks about falling in lava in Cave of Flames 8 (Minish Lava) */ END_6, } LocalFlags6; typedef enum { BEGIN_7, - LV3_00_WALK, - LV3_01_WALK, - LV3_02_WALK, - LV3_03_WALK, - LV3_04_WALK, + LV3_00_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 3F Eyegores */ + LV3_01_WALK, /* Map Screen, Visited Room in Fortress of Winds, Before Mazaal */ + LV3_02_WALK, /* Map Screen, Visited Room in Fortress of Winds, Right Side 3F Key */ + LV3_03_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 3F Pit Platforms */ + LV3_04_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 3F Key */ LV3_05_WALK, LV3_06_WALK, - LV3_10_WALK, - LV3_11_WALK, - LV3_12_WALK, - LV3_13_WALK, - LV3_14_WALK, - LV3_15_WALK, - LV3_16_WALK, - LV3_17_WALK, - LV3_18_WALK, - LV3_19_WALK, - LV3_1A_WALK, - LV3_1B_WALK, - LV3_1C_WALK, - LV3_1D_WALK, - LV3_20_WALK, - LV3_21_WALK, - LV3_22_WALK, - LV3_23_WALK, - LV3_24_WALK, - LV3_00_00, - LV3_00_T0, - LV3_02_00, - LV3_02_01, - LV3_02_02, - LV3_02_KEYFALL, - LV3_03_00, - LV3_03_01, - LV3_04_00, - LV3_04_KEYFALL, - LV3_04_WARP_0, - LV3_04_BOSSDOOR, - LV3_10_00, - LV3_11_00, - LV3_12_CAP_0, - LV3_13_00, - LV3_14_00, - LV3_14_01, - LV3_14_02, - LV3_14_KEY, - LV3_15_00, - LV3_17_00, - LV3_16_BOSSDIE, - LV3_16_GETUTSUWA, - LV3_18_00, - LV3_18_00_BW00, - LV3_19_01, - LV3_19_02, - LV3_19_03, - LV3_19_04, - LV3_19_T0, - LV3_1B_T0, - LV3_1D_00, - LV3_1D_01, - LV3_1D_T0, - LV3_1D_T1, - LV3_20_00, - LV3_20_CAP_0, - LV3_22_00, - LV3_23_01, - LV3_23_T0, + LV3_10_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Darknut */ + LV3_11_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Eyes */ + LV3_12_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Pit Hall Left */ + LV3_13_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Wallmasters */ + LV3_14_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_15_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Spike Traps */ + LV3_16_WALK, /* Map Screen, Visited Room in Fortress of Winds, Mazaal */ + LV3_17_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 2F Stalfos */ + LV3_18_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 2F Eyes */ + LV3_19_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F */ + LV3_1A_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Minish Hole to Key */ + LV3_1B_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Boss Key */ + LV3_1C_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 2F */ + LV3_1D_WALK, /* Map Screen, Visited Room in Fortress of Winds, Right Side 2F */ + LV3_20_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Door */ + LV3_21_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door */ + LV3_22_WALK, /* Map Screen, Visited Room in Fortress of Winds, Right Door */ + LV3_23_WALK, /* Map Screen, Visited Room in Fortress of Winds, Leftmost Door Wizzrobes */ + LV3_24_WALK, /* Map Screen, Visited Room in Fortress of Winds, Rightmost Door Heart Piece */ + LV3_00_00, /* Defeated Eyegores in Fortress of Winds, Left Side 3F Eyegores */ + LV3_00_T0, /* Compass Chest Open in Fortress of Winds, Left Side 3F Eyegores */ + LV3_02_00, /* Door Open in Fortress of Winds, Right Side Key Boss Key Side */ + LV3_02_01, /* Door Open in Fortress of Winds, Right Side 3F Key */ + LV3_02_02, /* Key drop animation has finished in Fortress of Winds, Right Side 3F Key */ + LV3_02_KEYFALL, /* Pulled Lever, Key falls in Fortress of Winds, Right Side 3F Key */ + LV3_03_00, /* Shot Arrows at Top Eyes in Fortress of Winds, Left Side 3F Eyes */ + LV3_03_01, /* Shot Arrows at East Eyes in Fortress of Winds, Left Side 3F Eyes */ + LV3_04_00, /* Key drop animation has finished in Fortress of Winds, Left Side 3F Key */ + LV3_04_KEYFALL, /* Pulled Lever, Key falls in Fortress of Winds, Left Side 3F Key */ + LV3_04_WARP_0, /* Red Portal Active in Fortress of Winds, Left Side 3F Key */ + LV3_04_BOSSDOOR, /* Boss Door Open in Fortress of Winds, Left Side 3F Key */ + LV3_10_00, /* Defeated Darknut in Fortress of Winds, Center Door 2F Darknut */ + LV3_11_00, /* Shot Arrows at Eyes in Fortress of Winds, Center Door 2F Eyes */ + LV3_12_CAP_0, /* Ezlo talks about bridge in Fortress of Winds, Center Door 2F Pit Hall Right */ + LV3_13_00, /* Defeated Wallmasters in Fortress of Winds, Center Door 2F Wallmasters */ + LV3_14_00, /* Buttons Hit in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_01, /* Door Open in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_02, /* Key Fallen in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_KEY, /* Obtained Key in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_15_00, /* Hit Button in Fortress of Winds, Center Door 2F Spike Traps */ + LV3_17_00, /* Defeated Stalfos in Fortress of Winds, Left Side 2F Stalfos */ + LV3_16_BOSSDIE, /* Defeated Mazaal in Fortress of Winds, Mazaal */ + LV3_16_GETUTSUWA, /* Obtained Heart Container in Fortress of Winds, Mazaal */ + LV3_18_00, /* Shot Arrow at Eye in Fortress of Winds, Left Side 2F Eye */ + LV3_18_00_BW00, /* Blew up wall in Fortress of Winds, Left Side 2F Eye */ + LV3_19_01, /* Left Eyegore Defeated in Fortress of Winds, Center Room 2F */ + LV3_19_02, /* Door Open in Fortress of Winds, Center Door 2F Left Door */ + LV3_19_03, /* Door Open in Fortress of Winds, Center Door 2F Right Door */ + LV3_19_04, /* Right Eyegore defeated in Fortress of Winds, Center Room 2F */ + LV3_19_T0, /* Map Chest Open in Fortress of Winds, Center Room 2F */ + LV3_1B_T0, /* Boss Key Chest Open in Fortress of Winds, Center Room 2F Boss Key */ + LV3_1D_00, /* Pulled Left Lever in Fortress of Winds, Right Side 2F */ + LV3_1D_01, /* Pulled Right Lever in Fortress of Winds, Right Side 2F */ + LV3_1D_T0, /* Blue L Kinstone Chest Open in Fortress of Winds, Right Side 2F Left Chest */ + LV3_1D_T1, /* Blue S Kinstone Chest Open in Fortress of Winds, Right Side 2F Right Chest */ + LV3_20_00, /* Obtained Key in Fortress of Winds, Left Door */ + LV3_20_CAP_0, /* Ezlo talks about Fortress of Winds in Fortress of Winds */ + LV3_22_00, /* Obtained Key in Fortress of Winds, Right Door */ + LV3_23_01, /* Defeated Wizzrobes in Fortress of Winds, Leftmost Door Wizzrobes */ + LV3_23_T0, /* 80 Shell Chest Open in Fortress of Winds, Leftmost Door Wizzrobes */ LV3_24_T0, - LV3_OCARINA_FALL, - LV3_02_CAP_0, - LV3_24_HK, - LV3_10_01, - LV3_17_01, + LV3_OCARINA_FALL, /* Zeffa drops Ocarina on ground in Fortress of Winds, Ocarina of Wind Room */ + LV3_02_CAP_0, /* Ezlo talks about fallen Key in Fortress of Winds Right Side 3F Key */ + LV3_24_HK, /* Obtained Heart Piece in Fortress of Winds, Rightmost Heart Piece Room */ + LV3_10_01, /* Doors opened in Fortress of Winds, Center Door 2F Darknut */ + LV3_17_01, /* Doors opened in Fortress of Winds, Left Side 2F Stalfos */ END_7, } LocalFlags7; typedef enum { BEGIN_8, - LV4_00_WALK, - LV4_01_WALK, - LV4_02_WALK, - LV4_03_WALK, - LV4_04_WALK, - LV4_05_WALK, - LV4_06_WALK, - LV4_07_WALK, - LV4_08_WALK, - LV4_09_WALK, - LV4_0A_WALK, - LV4_0B_WALK, - LV4_0C_WALK, - LV4_0D_WALK, - LV4_0E_WALK, - LV4_0F_WALK, - LV4_10_WALK, - LV4_11_WALK, - LV4_20_WALK, - LV4_21_WALK, - LV4_22_WALK, - LV4_23_WALK, - LV4_24_WALK, - LV4_25_WALK, - LV4_26_WALK, - LV4_27_WALK, - LV4_28_WALK, - LV4_29_WALK, - LV4_2A_WALK, - LV4_2B_WALK, - LV4_2C_WALK, - LV4_2D_WALK, - LV4_2E_WALK, - LV4_2F_WALK, - LV4_30_WALK, - LV4_31_WALK, - LV4_32_WALK, - LV4_33_WALK, - LV4_34_WALK, - LV4_35_WALK, - LV4_INIT, - LV4_01_00, - LV4_03_CAP_0, - LV4_03_BOSSDOOR, + LV4_00_WALK, /* Map Screen, Visited Room in Temple of Droplets West Hole to Boss Key */ + LV4_01_WALK, /* Map Screen, Visited Room in Temple of Droplets North Split to Keys */ + LV4_02_WALK, /* Map Screen, Visited Room in Temple of Droplets East Hole to Key */ + LV4_03_WALK, /* Map Screen, Visited Room in Temple of Droplets Entrance */ + LV4_04_WALK, /* Map Screen, Visited Room in Temple of Droplets Stairs to West Lever */ + LV4_05_WALK, /* Map Screen, Visited Room in Temple of Droplets Scissors Beetle Miniboss */ + LV4_06_WALK, /* Map Screen, Visited Room in Temple of Droplets West Waterfall Northwest */ + LV4_07_WALK, /* Map Screen, Visited Room in Temple of Droplets West Waterfall Northeast */ + LV4_08_WALK, /* Map Screen, Visited Room in Temple of Droplets Main Room */ + LV4_09_WALK, /* Map Screen, Visited Room in Temple of Droplets Corner from Beetle Miniboss */ + LV4_0A_WALK, /* Map Screen, Visited Room in Temple of Droplets Ice Pit Maze */ + LV4_0B_WALK, /* Map Screen, Visited Room in Temple of Droplets, Hole to Blue Chuchu Key */ + LV4_0C_WALK, /* Map Screen, Visited Room in Temple of Droplets West Waterfall Southwest */ + LV4_0D_WALK, /* Map Screen, Visited Room in Temple of Droplets West Waterfall Southeast */ + LV4_0E_WALK, /* Map Screen, Visited Room in Temple of Droplets, Big Octorok */ + LV4_0F_WALK, /* Map Screen, Visited Room in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_10_WALK, /* Map Screen, Visited Room in Temple of Droplets Big Blue Chuchu */ + LV4_11_WALK, /* Map Screen, Visited Room in Temple of Droplets Blue Chuchu Key */ + LV4_20_WALK, /* Map Screen, Visited Room in Temple of Droplets Boss Key Room */ + LV4_21_WALK, /* Map Screen, Visited Room in Temple of Droplets Key 1 Room */ + LV4_22_WALK, /* Map Screen, Visited Room in Temple of Droplets Block Clone Button Puzzle */ + LV4_23_WALK, /* Map Screen, Visited Room in Temple of Droplets Block Clone Puzzle 1 */ + LV4_24_WALK, /* Map Screen, Visited Room in Temple of Droplets Block Clone Ice Bridge */ + LV4_25_WALK, /* Map Screen, Visited Room in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_26_WALK, /* Map Screen, Visited Room in Temple of Droplets Spikebars after 9 Lantern */ + LV4_27_WALK, /* Map Screen, Visited Room in Temple of Droplets 9 Lantern Room */ + LV4_28_WALK, /* Map Screen, Visited Room in Temple of Droplets Lilypad Ice Blocks */ + LV4_29_WALK, /* Map Screen, Visited Room in Temple of Droplets The 1 Frame Roll */ + LV4_2A_WALK, /* Map Screen, Visited Room in Temple of Droplets Mulldozers & Firebars */ + LV4_2B_WALK, /* Map Screen, Visited Room in Temple of Droplets Dark Lantern Maze */ + LV4_2C_WALK, /* Map Screen, Visited Room in Temple of Droplets Twin Madderpillars */ + LV4_2D_WALK, /* Map Screen, Visited Room in Temple of Droplets After Twin Madderpillars */ + LV4_2E_WALK, /* Map Screen, Visited Room in Temple of Droplets Blue Chuchu Key Lever */ + LV4_2F_WALK, /* Map Screen, Visited Room in Temple of Droplets Mulldozer Key Room */ + LV4_30_WALK, /* Map Screen, Visited Room in Temple of Droplets Bombwall to Twin Madderpillars */ + LV4_31_WALK, /* Map Screen, Visited Room in Temple of Droplets Lilypad B2 West */ + LV4_32_WALK, /* Map Screen, Visited Room in Temple of Droplets Compass Room */ + LV4_33_WALK, /* Map Screen, Visited Room in Temple of Droplets 4 Lantern Scissors Beetles */ + LV4_34_WALK, /* Map Screen, Visited Room in Temple of Droplets Lilypad B2 Middle Room */ + LV4_35_WALK, /* Map Screen, Visited Room in Temple of Droplets Lilypad B2 East Madderpillar */ + LV4_INIT, /* Open Hole Setup Completed in Temple of Droplets West Hole to Boss Key */ + LV4_01_00, /* Door Open in Temple of Droplets North Split to Keys */ + LV4_03_CAP_0, /* Ezlo talks about Temple of Droplets in Temple of Droplets Entrance */ + LV4_03_BOSSDOOR, /* Boss Door Open in Temple of Droplets Entrance */ LV4_05_00, - LV4_05_01, + LV4_05_01, /* Defeated Scissors Beetles in Temple of Droplets Scissors Beetle Miniboss */ LV4_06_00, - LV4_07_00, - LV4_08_00, + LV4_07_00, /* Opened Door to Lilypad in Temple of Droplets West Waterfall Northeast */ + LV4_08_00, /* Ice Block Melted in Temple of Droplets Main Room */ LV4_08_01, LV4_08_02, - LV4_08_RAY_HALF, - LV4_08_RAY_HALF_E, - LV4_08_RAY_FULL, - LV4_08_RAY_FULL_E, - LV4_09_T0, - LV4_0a_TSUBO, - LV4_0a_T0, - LV4_0c_00, - LV4_0d_00, - LV4_0d_01, + LV4_08_RAY_HALF, /* East Lever Pushed in Temple of Droplets Main Room */ + LV4_08_RAY_HALF_E, /* East Ice Block Thawing Zone active in Temple of Droplets Main Room */ + LV4_08_RAY_FULL, /* West Lever Pushed in Temple of Droplets Main Room */ + LV4_08_RAY_FULL_E, /* Water Element Ice Melts in Temple of Droplets Main Room */ + LV4_09_T0, /* Blue L Kinstone Chest Open in Temple of Droplets Corner from Beetle Miniboss */ + LV4_0a_TSUBO, /* Green < Kinstone Taken From Pot in Temple of Droplets Ice Pit Maze */ + LV4_0a_T0, /* Blue S Kinstone Chest Open in Temple of Droplets Ice Pit Maze */ + LV4_0c_00, /* Hit Button in Temple of Droplets West Waterfall Southwest */ + LV4_0d_00, /* Hit Button in Temple of Droplets West Waterfall Southeast */ + LV4_0d_01, /* Blocking Pillars Down in Temple of Droplets West Waterfall Southeast */ LV4_0d_02, - LV4_0d_T0, - LV4_0e_UTSUWA, - LV4_0f_00, - LV4_0f_01, - LV4_0f_02, - LV4_0f_03, - LV4_0f_04, - LV4_10_RAY, - LV4_10_T0, - LV4_10_BOSSDIE, - LV4_11_00, - LV4_11_RAY_SP, + LV4_0d_T0, /* Map Chest Open in Temple of Droplets West Waterfall Southeast */ + LV4_0e_UTSUWA, /* Obtained Heart Container in Temple of Droplets, Big Octorok */ + LV4_0f_00, /* Door Open in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_01, /* Melted Top Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_02, /* Melted Bottom Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_03, /* Melted Top Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_04, /* Melted Bottom Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_10_RAY, /* Lever Pushed in Temple of Droplets Big Blue Chuchu */ + LV4_10_T0, /* Lantern Chest Open in Temple of Droplets Big Blue Chuchu */ + LV4_10_BOSSDIE, /* Defeated Big Blue Chuchu in Temple of Droplets Big Blue Chuchu */ + LV4_11_00, /* Ice Block Melts in Temple of Droplets Blue Chuchu Key */ + LV4_11_RAY /* Lever Turned in Blue Chuchu Key Room in Temple of Droplets West Hole to Boss Key */_SP, /* Thawing Zone Active in Temple of Droplets Blue Chuchu Key */ LV4_11_RAY, - LV4_11_T0, + LV4_11_T0, /* Obtained Key in Temple of Droplets Blue Chuchu Key Lever */ LV4_20_00, - LV4_20_RAY, - LV4_20_BOSSKEY, - LV4_21_00, - LV4_21_RAY, - LV4_21_KEY, - LV4_21_CAP_0, - LV4_22_00, - LV4_23_00, - LV4_24_00, - LV4_27_00, - LV4_28_00, - LV4_28_01, - LV4_28_T0, - LV4_28_T1, - LV4_29_CAP_0, - LV4_2b_T0, - LV4_2b_T1, - LV4_2b_T2, - LV4_2b_BKABE, - LV4_2b_00, - LV4_2b_01, - LV4_2b_02, - LV4_2b_03, - LV4_2b_04, - LV4_2c_00, - LV4_2c_02, + LV4_20_RAY, /* Turned Lever in Temple of Droplets Boss Key Room */ + LV4_20_BOSSKEY, /* Boss Key Ice Block Gone in Temple of Droplets Boss Key Room */ + LV4_21_00, /* Ezlo trigger active in Temple of Droplets Key 1 Room */ + LV4_21_RAY, /* Turned Lever in Temple of Droplets Key 1 Room */ + LV4_21_KEY, /* Obtained Key in Temple of Droplets Key 1 Room */ + LV4_21_CAP_0, /* Ezlo talks about sunlight in Temple of Droplets Key 1 Room */ + LV4_22_00, /* Door Open in Temple of Droplets Block Clone Button Puzzle */ + LV4_23_00, /* Door Open in Temple of Droplets Flamebar Block Puzzle */ + LV4_24_00, /* Melted Ice Block in Temple of Droplets Block Clone Ice Bridge */ + LV4_27_00, /* 9 Lanterns Lit in Temple of Droplets 9 Lantern Room */ + LV4_28_00, /* Hit Button in Temple of Droplets Lilypad Ice Blocks */ + LV4_28_01, /* Lilypad Ice Blocks Gate Stays Open in Temple of Droplets The 1 Frame Roll */ + LV4_28_T0, /* 100 Shell Chest Open (Frozen) in Temple of Droplets Lilypad Ice Blocks */ + LV4_28_T1, /* 50 Rupee Chest Open in Temple of Droplets Lilypad Ice Blocks */ + LV4_29_CAP_0, /* Ezlo talks about darkness in Temple of Droplets The 1 Frame Roll */ + LV4_2b_T0, /* Red W Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Right Chest */ + LV4_2b_T1, /* Red (> Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Left Chest */ + LV4_2b_T2, /* Red 3 Prong Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Bottom Chest */ + LV4_2b_BKABE, /* Blew up wall to Mulldozer Key Room in Temple of Droplets Dark Lantern Maze */ + LV4_2b_00, /* Lit Top Left Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_01, /* Lit Top Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_02, /* Door Open in Temple of Droplets Dark Lantern Maze */ + LV4_2b_03, /* Lit Middle Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_04, /* Lit Bottom Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2c_00, /* Defeated Twin Madderpillars in Temple of Droplets Twin Madderpillars */ + LV4_2c_02, /* Burnt Entrance Web in Temple of Droplets Twin Madderpillars */ LV4_2c_T0, LV4_2d_00, LV4_2d_01, LV4_2d_02, - LV4_2e_RAY, - LV4_2f_00, - LV4_2f_01, - LV4_2f_KEY, - LV4_30_00, - LV4_30_BKABE, - LV4_31_00, - LV4_31_01, - LV4_32_00, - LV4_32_01, - LV4_32_T0, - LV4_32_T1, - LV4_33_01, - LV4_34_00, - LV4_34_01, - LV4_35_00, - LV4_35_01, + LV4_2e_RAY, /* Turned Lever in Temple of Droplets Blue Chuchu Key Lever */ + LV4_2f_00, /* Defeated Mulldozers in Temple of Droplets Mulldozer Key Room */ + LV4_2f_01, /* Small Key Falls in Temple of Droplets Mulldozer Key Room */ + LV4_2f_KEY, /* Obtained Small Key in Temple of Droplets Mulldozer Key Room */ + LV4_30_00, /* Red Portal Activated in Temple of Droplets To Twin Madderpillars */ + LV4_30_BKABE, /* Blew up wall to Twin Madderpillars in Temple of Droplets To Twin Madderpillars */ + LV4_31_00, /* Hit Button in Temple of Droplets Lilypad B2 West */ + LV4_31_01, /* Lilypad Fallen to B2 in Temple of Droplets West Waterfall Southeast */ + LV4_32_00, /* Melted Left Ice Block in Temple of Droplets Compass Room */ + LV4_32_01, /* Melted Right Ice Block in Temple of Droplets Compass Room */ + LV4_32_T0, /* 100 Rupee Chest Open in Temple of Droplets Compass Room */ + LV4_32_T1, /* Compass Chest Open in Temple of Droplets Compass Room */ + LV4_33_01, /* Defeated Scissors Beetles in Temple of Droplets, 4 Lantern Scissors Beetles */ + LV4_34_00, /* Hit Button in Temple of Droplets Lilypad B2 Middle Room */ + LV4_34_01, /* Obtained Small Key in Temple of Droplets Lilypad B2 Middle Room */ + LV4_35_00, /* Defeated Madderpillar in Temple of Droplets Lilypad B2 East Madderpillar */ + LV4_35_01, /* Door Open in Temple of Droplets Lilypad B2 East Madderpillar */ LV4_22_01, - LV4_2d_T0, - LV4_03_CAP_1, - LV4_08_CAP_0, - LV4_08_CAP_1, - LV4_36_WALK, + LV4_2d_T0, /* Red 3 Prong Kinstone Chest Open (Frozen) in Temple of Droplets After Twin Madderpillars */ + LV4_03_CAP_1, /* Ezlo talks about slippery floor in Temple of Droplets Entrance */ + LV4_08_CAP_0, /* Ezlo talks about frozen Element in Temple of Droplets Main Room */ + LV4_08_CAP_1, /* Ezlo talks after pushing East Lever in Temple of Droplets Main Room */ + LV4_36_WALK, /* Map Screen, Visited Room in Temple of Droplets Flamebar Block Puzzle */ LV4_36_T0, - LV4_21_CAP_1, - LV4_0d_03, - LV4_0d_04, - LV4_0d_05, - LV4_0d_06, - LV4_0d_07, - LV4_25_00, - LV4_25_01, - LV4_25_02, - LV4_25_03, - LV4_25_04, - LV4_31_02, - LV4_31_03, - LV4_31_04, - LV4_31_05, - LV4_31_06, - LV4_31_07, - LV4_06_01, - LV4_06_02, - LV4_06_03, - LV4_06_04, - LV4_06_05, - LV4_06_06, - LV4_08_OCT, - LV4_05_02, - LV4_28_02, - LV4_2c_01, - LV4_33_02, - LV4_31_08, - LV4_34_02, - LV4_20_RAY_SW, - LV4_21_RAY_SW, + LV4_21_CAP_1, /* Ezlo talks about frozen key in Temple of Droplets Key 1 Room */ + LV4_0d_03, /* Grabbed 1st Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_04, /* Grabbed 2nd Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_05, /* Grabbed 3rd Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_06, /* Grabbed 4th Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_07, /* Grabbed 5th Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_25_00, /* Grabbed 5th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_01, /* Grabbed 4th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_02, /* Grabbed 3rd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_03, /* Grabbed 2nd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_04, /* Grabbed 1st Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_31_02, /* Picked up upper left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_03, /* Picked up upper middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_04, /* Picked up upper right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_05, /* Picked up lower left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_06, /* Picked up lower middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_07, /* Picked up lower right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_06_01, /* Picked up upper left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_02, /* Picked up upper middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_03, /* Picked up upper right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_04, /* Picked up lower left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_05, /* Picked up lower middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_06, /* Picked up lower right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_08_OCT, /* Big Octo Sucked Element & Left Room in Temple of Droplets Main Room */ + LV4_05_02, /* Doors Open in Temple of Droplets Scissors Beetle Miniboss */ + LV4_28_02, /* Blocking Pillars Down in Temple of Droplets Lilypad Ice Blocks */ + LV4_2c_01, /* Door Open in Temple of Droplets Twin Madderpillars */ + LV4_33_02, /* Doors Open in Temple of Droplets, 4 Lantern Scissors Beetles */ + LV4_31_08, /* Gate Opened in Temple of Droplets Lilypad B2 West */ + LV4_34_02, /* Gate Opened in Temple of Droplets Lilypad B2 Middle Room */ + LV4_20_RAY_SW, /* Thawing zone active in Temple of Droplets Boss Key Room */ + LV4_21_RAY_SW, /* Thawing zone active in Temple of Droplets Key 1 Room */ END_8, } LocalFlags8; typedef enum { BEGIN_9, - LV5_00_WALK, - LV5_01_WALK, - LV5_02_WALK, - LV5_03_WALK, - LV5_04_WALK, - LV5_05_WALK, - LV5_06_WALK, - LV5_07_WALK, - LV5_08_WALK, - LV5_09_WALK, - LV5_0A_WALK, - LV5_0B_WALK, - LV5_0C_WALK, - LV5_0D_WALK, - LV5_0E_WALK, - LV5_0F_WALK, - LV5_10_WALK, - LV5_11_WALK, - LV5_12_WALK, - LV5_13_WALK, - LV5_14_WALK, - LV5_15_WALK, - LV5_16_WALK, - LV5_17_WALK, - LV5_18_WALK, - LV5_19_WALK, - LV5_1A_WALK, - LV5_1B_WALK, - LV5_1C_WALK, - LV5_1D_WALK, - LV5_1E_WALK, - LV5_1F_WALK, - LV5_20_WALK, - LV5_21_WALK, - LV5_22_WALK, - LV5_23_WALK, - LV5_24_WALK, - LV5_25_WALK, - LV5_26_WALK, - LV5_27_WALK, - LV5_28_WALK, - LV5_29_WALK, - LV5_2A_WALK, - LV5_2B_WALK, - LV5_2C_WALK, - LV5_2D_WALK, - LV5_2E_WALK, - LV5_2F_WALK, - LV5_30_WALK, - LV5_31_WALK, - LV5_32_WALK, - LV5_01_T0, - LV5_03_T0, - LV5_03_BOSSDOOR, - LV5_04_T0, - LV5_05_00, + LV5_00_WALK, /* Map Screen, Visited Room in Palace of Winds 46 (Vortex to Gyorg) */ + LV5_01_WALK, /* Map Screen, Visited Room in Palace of Winds 24 (5F Boss Key Chest) */ + LV5_02_WALK, /* Map Screen, Visited Room in Palace of Winds 19 (5F Before Boss Door Hall) */ + LV5_03_WALK, /* Map Screen, Visited Room in Palace of Winds 44 (5F Real Boss Door) */ + LV5_04_WALK, /* Map Screen, Visited Room in Palace of Winds 5F East Kinstone Chest from Boss */ + LV5_05_WALK, /* Map Screen, Visited Room in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_06_WALK, /* Map Screen, Visited Room in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ + LV5_07_WALK, /* Map Screen, Visited Room in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_08_WALK, /* Map Screen, Visited Room in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_09_WALK, /* Map Screen, Visited Room in Palace of Winds 43 (5F Bombarossa Switch Maze) */ + LV5_0A_WALK, /* Map Screen, Visited Room in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ + LV5_0B_WALK, /* Map Screen, Visited Room in Palace of Winds 42 (5F North Corner) */ + LV5_0C_WALK, /* Map Screen, Visited Room in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_0D_WALK, /* Map Screen, Visited Room in Palace of Winds 40 (5F Gibdo Corner) */ + LV5_0E_WALK, /* Map Screen, Visited Room in Palace of Winds 41 (5F Outside Wall) */ + LV5_0F_WALK, /* Map Screen, Visited Room in Palace of Winds 18 (4F Cloud Jumps to 5F) */ + LV5_10_WALK, /* Map Screen, Visited Room in Palace of Winds 45 (4F Block Maze to Boss) */ + LV5_11_WALK, /* Map Screen, Visited Room in Palace of Winds 17 (4F Lakitu Platforms) */ + LV5_12_WALK, /* Map Screen, Visited Room in Palace of Winds 4F Bridge to Heart Piece */ + LV5_13_WALK, /* Map Screen, Visited Room in Palace of Winds 16 (4F Bridge & Fan) */ + LV5_14_WALK, /* Map Screen, Visited Room in Palace of Winds 15 (4F Moblin Corner) */ + LV5_15_WALK, /* Map Screen, Visited Room in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_16_WALK, /* Map Screen, Visited Room in Palace of Winds 8 (3F Northwest) */ + LV5_17_WALK, /* Map Screen, Visited Room in Palace of Winds 14 (3F Corner after Key) */ + LV5_18_WALK, /* Map Screen, Visited Room in Palace of Winds 9 (3F Southwest) */ + LV5_19_WALK, /* Map Screen, Visited Room in Palace of Winds 10 (3F Platform & Cloud to 4F) */ + LV5_1A_WALK, /* Map Screen, Visited Room in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1B_WALK, /* Map Screen, Visited Room in Palace of Winds 37 (3F Floormaster Lever) */ + LV5_1C_WALK, /* Map Screen, Visited Room in Palace of Winds 36 (3F Map Chest Fire Wizzrobes) */ + LV5_1D_WALK, /* Map Screen, Visited Room in Palace of Winds 13 (3F Key Switch Minish Portal) */ + LV5_1E_WALK, /* Map Screen, Visited Room in Palace of Winds 38 (3F Stairs to 4F) */ + LV5_1F_WALK, /* Map Screen, Visited Room in Palace of Winds 3F Hole to Kinstone Wizzrobe Fight */ + LV5_20_WALK, /* Map Screen, Visited Room in Palace of Winds 12 (3F Key Switch) */ + LV5_21_WALK, /* Map Screen, Visited Room in Palace of Winds 6 (2F West) */ + LV5_22_WALK, /* Map Screen, Visited Room in Palace of Winds 7 (2F East) */ + LV5_23_WALK, /* Map Screen, Visited Room in Palace of Winds 32 (2F Peahat Clone Switches) */ + LV5_24_WALK, /* Map Screen, Visited Room in Palace of Winds 34 (2F Bombarossa Whirlwinds) */ + LV5_25_WALK, /* Map Screen, Visited Room in Palace of Winds 30 (2F Stalfos Corner) */ + LV5_26_WALK, /* Map Screen, Visited Room in Palace of Winds 31 (2F Stalfos Firebars) */ + LV5_27_WALK, /* Map Screen, Visited Room in Palace of Winds (2F Shortcut Door Switches) */ + LV5_28_WALK, /* Map Screen, Visited Room in Palace of Winds 29 (2F Stairs) */ + LV5_29_WALK, /* Map Screen, Visited Room in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_2A_WALK, /* Map Screen, Visited Room in Palace of Winds 35 (2F Gibdo Corner) */ + LV5_2B_WALK, /* Map Screen, Visited Room in Palace of Winds 33 (2F Spikebar Key Chest) */ + LV5_2C_WALK, /* Map Screen, Visited Room in Palace of Winds 5 (Roc's Cape) */ + LV5_2D_WALK, /* Map Screen, Visited Room in Palace of Winds 4 (Firebar Bob-omb Grate) */ + LV5_2E_WALK, /* Map Screen, Visited Room in Palace of Winds 3 (Platform Ride Bombarossas) */ + LV5_2F_WALK, /* Map Screen, Visited Room in Palace of Winds 27 (1F Bridge after Darknut) */ + LV5_30_WALK, /* Map Screen, Visited Room in Palace of Winds 2 (Bridge Switches & Clone Block) */ + LV5_31_WALK, /* Map Screen, Visited Room in Palace of Winds Entrance */ + LV5_32_WALK, /* Map Screen, Visited Room in Palace of Winds 28 (1F Dark Room) */ + LV5_01_T0, /* Boss Key Chest Open in Palace of Winds 24 (5F Boss Key Chest) */ + LV5_03_T0, /* Small Key Chest Open in Palace of Winds 44, West of Boss Door */ + LV5_03_BOSSDOOR, /* Boss Door Open in Palace of Winds 44, Boss Door */ + LV5_04_T0, /* Red W Kinstone Chest Open in Palace of Winds, East Kinstone Chest from Boss */ + LV5_05_00, /* Hit Fan Floor Button in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ LV5_05_01, - LV5_05_02, - LV5_06_00, - LV5_07_00, - LV5_07_01, - LV5_07_T0, - LV5_08_00, - LV5_08_01, - LV5_08_KEY, - LV5_08_BOSSDOOR, - LV5_0b_B0, - LV5_0b_B1, - LV5_0d_00, - LV5_0e_00, - LV5_0f_T0, + LV5_05_02, /* Defeated Moblins & Wizzrobes in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_06_00, /* Door Open in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ + LV5_07_00, /* Door Open in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_07_01, /* Hit Fan Floor Button in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_07_T0, /* Small Key Chest Open in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_08_00, /* Door Open in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_01, /* Defeated Ball & Chain Soldiers in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_KEY, /* Obtained Key in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_BOSSDOOR, /* Boss Door Open in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_0b_B0, /* Top Block Destroyed in Palace of Winds 42 (5F North Corner) */ + LV5_0b_B1, /* Bottom Block Destroyed in Palace of Winds 42 (5F North Corner) */ + LV5_0d_00, /* Blew up wall in Palace of Winds 40 (5F Gibdo Corner) */ + LV5_0e_00, /* Blew up wall in Palace of Winds 41 (5F Outside Wall) */ + LV5_0f_T0, /* Blue L Kinstone Chest Open in Palace of Winds 18 (4F Cloud Jumps to 5F) */ LV5_0f_T1, - LV5_10_T0, - LV5_15_00, - LV5_15_01, - LV5_15_02, - LV5_15_03, - LV5_15_04, - LV5_15_T0, - LV5_15_B0, - LV5_15_B1, - LV5_1a_00, - LV5_1a_01, - LV5_1b_00, + LV5_10_T0, /* Blue S Kinstone Chest Open in Palace of Winds 45 (4F Block Maze to Boss) */ + LV5_15_00, /* North Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_01, /* East Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_02, /* Switch Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_03, /* Lit Left Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_04, /* Lit Right Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_T0, /* 200 Rupee Chest Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_B0, /* Top Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_B1, /* Bottom Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_1a_00, /* Hit 3 Switches in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1a_01, /* Door Open in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1b_00, /* Door Open in Palace of Winds 36 (3F Floormaster Lever) */ LV5_1b_T0, - LV5_1c_00, - LV5_1c_T0, - LV5_20_00, - LV5_20_01, - LV5_21_00, - LV5_21_01, - LV5_21_02, - LV5_21_03, - LV5_21_04, + LV5_1c_00, /* Defeated Fire Wizzrobes in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ + LV5_1c_T0, /* Map Chest Open in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ + LV5_20_00, /* Hit Key Switch in Palace of Winds 12 (3F Key Switch) */ + LV5_20_01, /* Obtained Key in Palace of Winds 12 (3F Key Switch) */ + LV5_21_00, /* Grabbed Top Left Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_01, /* Grabbed Top Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_02, /* Grabbed Bottom Left Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_03, /* Grabbed Bottom Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_04, /* Grabbed Bottom Right Green Rupee in Palace of Winds 6 (2F West) */ LV5_21_05, LV5_21_06, LV5_21_07, LV5_21_08, LV5_21_09, LV5_21_0a, - LV5_21_CAP_0, + LV5_21_CAP_0, /* Ezlo talks about grates in Palace of Winds 6 (2F West) */ LV5_22_00, - LV5_22_01, - LV5_22_CAP_0, - LV5_23_00, - LV5_23_01, - LV5_27_00, + LV5_22_01, /* Defeated Spinies in Palace of Winds 7 (2F East) */ + LV5_22_CAP_0, /* Ezlo talks about fans in Palace of Winds 7 (2F East) */ + LV5_23_00, /* Hit Switches in Palace of Winds 31 (2F Peahat Clone Switches) */ + LV5_23_01, /* Locked Door Open in Palace of Winds 31 (2F Peahat Clone Switches) */ + LV5_27_00, /* Hit Switches in Palace of Winds (2F Shortcut Door Switches) */ LV5_29_00, - LV5_29_01, - LV5_29_T0, - LV5_2b_T0, - LV5_2c_00, + LV5_29_01, /* Defeated Wizzrobes in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_29_T0, /* Red (> Kinstone Chest Open in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_2b_T0, /* Small Key Chest Open in Palace of Winds 32 (2F Spikebar Key Chest) */ + LV5_2c_00, /* Defeated Wizzrobes in Palace of Winds 5 (Roc's Cape) */ LV5_2c_01, LV5_2c_02, LV5_2c_03, - LV5_2c_T0, - LV5_2c_CAP_0, - LV5_2d_T0, - LV5_31_CAP_0, - LV5_32_CAP_0, - LV5_32_T0, - LV5_32_T1, - LV5_BOSSDIE, + LV5_2c_T0, /* Roc's Cape Chest Open in Palace of Winds 5 (Roc's Cape) */ + LV5_2c_CAP_0, /* Ezlo talks about clouds in Palace of Winds 5 (Roc's Cape) */ + LV5_2d_T0, /* Red 3 Prong Kinstone Chest Open in Palace of Winds 4 (Firebar Bob-omb Grate) */ + LV5_31_CAP_0, /* Ezlo talks about Palace of Winds in Palace of Winds Entrance */ + LV5_32_CAP_0, /* Ezlo talks about dark room in Palace of Winds 28 (1F Dark Room) */ + LV5_32_T0, /* Compass Chest Open in Palace of Winds 28 (1F Dark Room) */ + LV5_32_T1, /* Small Key Chest Open in Palace of Winds 28 (1F Dark Room) */ + LV5_BOSSDIE, /* Vortex to Gyorg Removed + Receive Element in Palace of Winds 46 (Vortex to Gyorg) */ LV5_MBOSSDIE, - LV5_00_UTSUWA, - LV5_0c_00, - LV5_0A_CAP_0, - LV5_0f_HK, - LV5_05_03, - LV5_08_02, + LV5_00_UTSUWA, /* Obtained Heart Container in Palace of Winds 46 (Vortex to Gyorg) */ + LV5_0c_00, /* Defeated Red Darknut in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_0A_CAP_0, /* Ezlo talks about hole in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ + LV5_0f_HK, /* Obtained Heart Piece in Palace of Winds 18 (4F Cloud Jumps to 5F) */ + LV5_05_03, /* Door Open in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_08_02, /* Key Falls in Palace of Winds 20 (5F Boss Door Hall) */ LV5_0c_01, - LV5_0c_02, - LV5_22_02, - LV5_15_05, - LV5_20_02, + LV5_0c_02, /* Blue Portal & Bridge Appeared in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_22_02, /* Door Open after Spinies in Palace of Winds 7 (2F East) */ + LV5_15_05, /* Red Portal Active in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_20_02, /* Key Falls & Door Open in Palace of Winds 12 (3F Key Switch) */ END_9, } LocalFlags9; typedef enum { BEGIN_10, - LV6_00_WALK, - LV6_01_WALK, - LV6_02_WALK, - LV6_03_WALK, - LV6_04_WALK, - LV6_05_WALK, - LV6_06_WALK, - LV6_07_WALK, - LV6_08_WALK, - LV6_09_WALK, - LV6_0A_WALK, - LV6_0B_WALK, - LV6_0C_WALK, - LV6_0D_WALK, - LV6_0E_WALK, - LV6_0F_WALK, - LV6_10_WALK, + LV6_00_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_01_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ + LV6_02_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ + LV6_03_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ + LV6_04_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ + LV6_05_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ + LV6_06_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_07_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 50 (2F Northwest Corner) */ + LV6_08_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_09_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_0A_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0B_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0C_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0D_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 29 (2F Northeast Corner) */ + LV6_0E_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_0F_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 36 (2F Center North, Sparks) */ + LV6_10_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 38 (2F Center Northeast) */ LV6_11_WALK, - LV6_12_WALK, - LV6_13_WALK, - LV6_14_WALK, - LV6_15_WALK, - LV6_16_WALK, - LV6_17_WALK, - LV6_18_WALK, - LV6_19_WALK, - LV6_1A_WALK, + LV6_12_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 30/34 (2F Center East/Center West) */ + LV6_13_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_16_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ + LV6_17_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_19_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 48 (2F Southwest Corner) */ + LV6_1A_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 47 (2F Southwest Ghini) */ LV6_1B_WALK, - LV6_1C_WALK, - LV6_1D_WALK, - LV6_1E_WALK, - LV6_1F_WALK, - LV6_20_WALK, - LV6_21_WALK, - LV6_22_WALK, - LV6_23_WALK, - LV6_24_WALK, - LV6_25_WALK, - LV6_26_WALK, - LV6_27_WALK, - LV6_28_WALK, - LV6_29_WALK, - LV6_2A_WALK, - LV6_2B_WALK, - LV6_2C_WALK, - LV6_2D_WALK, - LV6_2E_WALK, - LV6_2F_WALK, - LV6_30_WALK, - LV6_31_WALK, - LV6_32_WALK, - LV6_33_WALK, - LV6_34_WALK, - LV6_35_WALK, - LV6_36_WALK, - LV6_37_WALK, - LV6_38_WALK, - LV6_39_WALK, - LV6_3A_WALK, + LV6_1C_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ + LV6_1D_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 44 (2F Southeast Corner) */ + LV6_1E_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle (1F Northwest Gibdo Corner) */ + LV6_1F_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_20_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 27 (1F Compass Room) */ + LV6_21_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 28 (1F Stairs to 2F) */ + LV6_22_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 23 (1F Entrance to Throne Room) */ + LV6_23_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 14 (1F Center Northwest) */ + LV6_24_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 15 (1F Center North) */ + LV6_25_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 16 (1F Center Northeast) */ + LV6_26_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 13 (1F Center West) */ + LV6_27_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 17 (1F Center East) */ + LV6_28_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 12 (1F Center Southwest) */ + LV6_29_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 11 (1F Center South) */ + LV6_2A_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 18 (1F Center Southeast) */ + LV6_2B_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle (1F Pot Corner) */ + LV6_2C_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle (1F Southeast Gibdo Corner) */ + LV6_2D_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 25 (B1 Dark Hall West) */ + LV6_2E_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 26 (B1 Dark Hall East) */ + LV6_2F_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 22 (B1 North Stairs) */ + LV6_30_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 4 (B1 Center Northwest, Stairs to B2) */ + LV6_31_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 5 (B1 Center North, Minish Portal) */ + LV6_32_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ + LV6_33_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 3 (B1 Center West, Firebars) */ + LV6_34_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 20 (B1 Center East, Cannons) */ + LV6_35_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 2 (B1 Center Southwest) */ + LV6_36_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 19 (B1 Center East) */ + LV6_37_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 9 (B1 South Stairs) */ + LV6_38_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 7 (B2 Prison West) */ + LV6_39_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_3A_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 6 (B2 Prison Southwest) */ LV6_3B_WALK, - LV6_00_00, - LV6_01_T0, - LV6_02_T0, - LV6_03_T0, - LV6_04_T0, - LV6_07_00, - LV6_09_T0, - LV6_09_KB0, - LV6_09_KB1, - LV6_09_KB2, - LV6_09_KB3, - LV6_0a_01, - LV6_0b_00, - LV6_0c_00, - LV6_0c_01, - LV6_0e_00, - LV6_10_00, - LV6_11_00, - LV6_11_01, - LV6_11_B0, - LV6_11_B1, - LV6_11_B2, - LV6_13_00, - LV6_14_00, - LV6_14_BOSSDOOR, - LV6_15_00, - LV6_16_00, - LV6_17_00, - LV6_17_01, - LV6_18_00, - LV6_1a_00, - LV6_1c_CAP_0, - LV6_1d_00, - LV6_1f_00, - LV6_20_T0, - LV6_24_00, - LV6_26_00, - LV6_26_01, - LV6_26_CAP_0, - LV6_27_00, - LV6_27_T0, - LV6_30_00, - LV6_32_00, - LV6_34_00, - LV6_34_01, - LV6_35_00, - LV6_37_T0, + LV6_00_00, /* Locked Door Open in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_01_T0, /* Small Key Chest Open in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ + LV6_02_T0, /* Small Key Chest Open in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ + LV6_03_T0, /* Small Key Chest Open in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ + LV6_04_T0, /* Small Key Chest Open in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ + LV6_07_00, /* Hit Door Button in Dark Hyrule Castle 50 (2F Northwest Corner) */ + LV6_09_T0, /* Boss Key Chest Open in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB0, /* Opened Top Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB1, /* Opened Top Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB2, /* Opened Bottom Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB3, /* Opened Bottom Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_0a_01, /* Defeated Darknut in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0b_00, /* Defeated Ghini in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0c_00, /* All Torches Lit in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0c_01, /* Door Open in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0e_00, /* Door Open & Camera Moves in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_10_00, /* Doors Open & Camera Moves in Dark Hyrule Castle 38 (2F Center Northeast) */ + LV6_11_00, /* Hit Left Switch in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_01, /* Hit Right Switch in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B0, /* Blew up left block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B1, /* Blew up middle block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B2, /* Blew up right block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_13_00, /* Door Open & Camera Moves in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_00, /* Defeated Ball and Chain Soldiers in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_14_BOSSDOOR, /* Boss Door Open in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_00, /* Door Open & Camera Moves in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_16_00, /* Door Open in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ + LV6_17_00, /* Hit Switches in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_17_01, /* Door Open in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_00, /* Hit Switches in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_1a_00, /* Defeated Ghini in Dark Hyrule Castle 47 (2F Southwest Ghini) */ + LV6_1c_CAP_0, /* Ezlo talks about Dark Hyrule Castle in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ + LV6_1d_00, /* Hit Door Button in Dark Hyrule Castle 44 (2F Southeast Corner) */ + LV6_1f_00, /* Defeated Darknut in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_20_T0, /* Compass Chest Open in Dark Hyrule Castle, Compass Room */ + LV6_24_00, /* Tile Puzzle Complete in Dark Hyrule Castle 15 (1F Center North) */ + LV6_26_00, /* Cannons Destroyed in Dark Hyrule Castle 12 (1F Center West) */ + LV6_26_01, /* Pillars Down in Dark Hyrule Castle 12 (1F Center West) */ + LV6_26_CAP_0, /* Ezlo talks about cannons in Dark Hyrule Castle 12 (1F Center West) */ + LV6_27_00, /* Small Key Chest Appeared in Dark Hyrule Castle 17 (1F Center East) */ + LV6_27_T0, /* Small Key Chest Open in Dark Hyrule Castle 17 (1F Center East) */ + LV6_30_00, /* Blew up wall in Dark Hyrule Castle 4 (B1 Stairs to B2) */ + LV6_32_00, /* Blew up wall in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ + LV6_34_00, /* Cannons Destroyed in Dark Hyrule Castle 20 (B1 Center East) */ + LV6_34_01, /* Pillars Down in Dark Hyrule Castle 20 (B1 Center East) */ + LV6_35_00, /* Locked Door Open in Dark Hyrule Castle 2 (B1 Center Southwest) */ + LV6_37_T0, /* Map Chest Open in Dark Hyrule Castle 9 (B1 South Stairs) */ LV6_39_00, - LV6_39_01, + LV6_39_01, /* Hit Button in Dark Hyrule Castle 8 (B2 Prison East) */ LV6_39_02, - LV6_1f_CHAIR_L, + LV6_1f_CHAIR_L, /* Moved Throne in Dark Hyrule Castle 24 (1F Throne Room) */ LV6_1f_CHAIR_R, - LV6_1d_KEYGET, + LV6_1d_KEYGET, /* Obtained Small Key from Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ LV6_1b_TAREMAKU, - LV6SOTO_01_KAIJO, + LV6SOTO_01_KAIJO, /* Soldier moves out of the way in Dark Hyrule Castle, Garden to Sanctuary */ LV6_SEKIKA_END, - LV6_GUFUU1_FIGURE, - LV6_GUFUU2_FIGURE, - LV6_GUFUU1_GISHIKI, - LV6_GUFUU1_DEMO, - LV6_ZELDA_DISCURSE, - LV6_00_ESCAPE, - LV6_GUFUU2_DEAD, - LV6_KANE_START, - LV6_KANE_1ST, - LV6_KANE_2ND, - LV6_SOTO_ENDING, - LV6_08_00, - LV6_39_03, - LV6_SOTO_06_00, - LV6_SOTO_06_01, + LV6_GUFUU1_FIGURE, /* Entered Vaati 1 boss room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU2_FIGURE, /* Auto walk after defeating Vaati? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU1_GISHIKI, /* Falling in pit in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU1_DEMO, /* Started Vaati 1? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_ZELDA_DISCURSE, /* Transition to castle escape start in Dark Hyrule Castle (Zelda) */ + LV6_00_ESCAPE, /* Ezlo talks about entrance being blocked in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_GUFUU2_DEAD, /* Defeated Vaati 2? in Dark Hyrule Castle Boss (Vaati 2) */ + LV6_KANE_START, /* Ezlo talks about bell in Dark Hyrule Castle Boss (Ball & Chain Soldier) */ + LV6_KANE_1ST, /* Ezlo talks about bell again in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ + LV6_KANE_2ND, /* Ezlo talks about bell yet again in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_SOTO_ENDING, /* Warped back to garden? in Dark Hyrule Castle Boss (Vaati 3) */ + LV6_08_00, /* Hit Eye Switches in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_39_03, /* Prison Doors Open in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_SOTO_06_00, /* Hit East Bridge Switch in Dark Hyrule Castle Outside 2F South */ + LV6_SOTO_06_01, /* Hit West Bridge Switch in Dark Hyrule Castle Outside 2F South */ LV6_0A_CAP_0, - LV6SOTO_01_CAP_0, - LV6_0a_00, - LV6_0b_01, - LV6_0e_01, - LV6_10_01, - LV6_13_01, - LV6_14_01, - LV6_15_01, - LV6_1a_01, - LV6_1f_01, - LV6_39_04, - LV6_17_02, - LV6_18_01, - LV6_08_01, - LV6_SOTO_01_00, - LV6_SOTO_01_01, - LV6_SOTO_01_02, - LV6_39_KING, + LV6SOTO_01_CAP_0, /* Ezlo talks about frozen people in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_0a_00, /* Doors Open & Blue Portal Activated in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0b_01, /* Door Open in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0e_01, /* Big Door Open in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_10_01, /* Doors Open in Dark Hyrule Castle 38 (2F Center Northeast) */ + LV6_13_01, /* Big Door Open in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_01, /* Doors Open & Red Portal Activated in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_01, /* Big Door Open in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_1a_01, /* Door Open in Dark Hyrule Castle 47 (2F Southwest Ghini) */ + LV6_1f_01, /* Doors Open in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_39_04, /* Camera moves to middle in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_17_02, /* Camera moves to door in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_01, /* Door Open in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_08_01, /* Door Open in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_SOTO_01_00, /* Unfroze Minister Potho in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_SOTO_01_01, /* Unfroze Left Soldier in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_SOTO_01_02, /* Unfroze Bottom Soldier in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_39_KING, /* Unfroze King Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ END_10, } LocalFlags10; From 227d2c6070fbf52da5445ab26b17984231a303e9 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 1 Jan 2023 19:28:47 +0100 Subject: [PATCH 03/86] Match sub_0801E99C --- asm/non_matching/common/sub_0801E99C.inc | 112 ----------------------- include/common.h | 1 + src/common.c | 62 ++++++++++++- 3 files changed, 61 insertions(+), 114 deletions(-) delete mode 100644 asm/non_matching/common/sub_0801E99C.inc diff --git a/asm/non_matching/common/sub_0801E99C.inc b/asm/non_matching/common/sub_0801E99C.inc deleted file mode 100644 index 7bbda3c9..00000000 --- a/asm/non_matching/common/sub_0801E99C.inc +++ /dev/null @@ -1,112 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - bl sub_08002632 - mov r8, r0 - ldr r1, _0801E9E4 @ =gUnk_08001DCC - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r7, [r0] - movs r0, #0x67 - bl GetInventoryValue - cmp r0, #0 - beq _0801EA56 - ldr r1, _0801E9E8 @ =gSave - ldrb r0, [r7] - ldrb r2, [r1, #8] - cmp r0, r2 - bhi _0801EA56 - ldr r2, _0801E9EC @ =0x000001C1 - adds r0, r1, r2 - add r0, r8 - ldrb r5, [r0] - subs r2, #0x80 - adds r0, r1, r2 - add r0, r8 - ldrb r6, [r0] - adds r4, r6, r7 -_0801E9D6: - cmp r5, #0xf1 - beq _0801E9F6 - cmp r5, #0xf1 - bhi _0801E9F0 - cmp r5, #0 - beq _0801E9F6 - b _0801EA10 - .align 2, 0 -_0801E9E4: .4byte gUnk_08001DCC -_0801E9E8: .4byte gSave -_0801E9EC: .4byte 0x000001C1 -_0801E9F0: - cmp r5, #0xf2 - beq _0801EA0A - b _0801EA10 -_0801E9F6: - ldrb r5, [r4, #5] - cmp r5, #0 - beq _0801EA10 - cmp r5, #0xff - beq _0801EA14 - adds r0, r5, #0 - bl CheckKinstoneFused - cmp r0, #0 - beq _0801EA10 -_0801EA0A: - adds r4, #1 - adds r6, #1 - ldrb r5, [r4, #5] -_0801EA10: - cmp r5, #0xff - bne _0801EA1C -_0801EA14: - adds r0, r7, #0 - bl sub_0801EA74 - adds r5, r0, #0 -_0801EA1C: - cmp r5, #0 - beq _0801EA32 - cmp r5, #0xf2 - beq _0801E9D6 - adds r0, r5, #0 - bl CheckKinstoneFused - cmp r0, #0 - beq _0801EA34 - movs r5, #0xf1 - b _0801E9D6 -_0801EA32: - movs r5, #0xf3 -_0801EA34: - ldr r1, _0801EA5C @ =gSave - ldr r2, _0801EA60 @ =0x000001C1 - adds r0, r1, r2 - add r0, r8 - strb r5, [r0] - subs r2, #0x80 - adds r0, r1, r2 - add r0, r8 - strb r6, [r0] - bl Random - ldrb r4, [r7, #1] - movs r1, #0x64 - bl __modsi3 - cmp r4, r0 - bhi _0801EA64 -_0801EA56: - movs r0, #0 - b _0801EA6E - .align 2, 0 -_0801EA5C: .4byte gSave -_0801EA60: .4byte 0x000001C1 -_0801EA64: - subs r0, r5, #1 - cmp r0, #0x63 - bls _0801EA6C - movs r5, #0 -_0801EA6C: - adds r0, r5, #0 -_0801EA6E: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .syntax divided diff --git a/include/common.h b/include/common.h index 5d68679b..4fcf2be6 100644 --- a/include/common.h +++ b/include/common.h @@ -124,6 +124,7 @@ void sub_0801DFB4(struct Entity_*, u32, u32, u32); u32 sub_0801E00C(void); bool32 sub_0801E810(u32); u32 sub_0801DB94(void); +u32 sub_0801EA74(u8*); typedef struct { u8 unk_0; diff --git a/src/common.c b/src/common.c index 0ad58ee5..a1bacc2e 100644 --- a/src/common.c +++ b/src/common.c @@ -5,6 +5,7 @@ #include "functions.h" #include "game.h" #include "global.h" +#include "item.h" #include "kinstone.h" #include "main.h" #include "message.h" @@ -966,7 +967,64 @@ void sub_0801E8D4(void) { } } -ASM_FUNC("asm/non_matching/common/sub_0801E99C.inc", u32 sub_0801E99C(u32 a1)); +extern u8* gUnk_08001DCC[]; + +u32 sub_0801E99C(Entity* entity) { + FORCE_REGISTER(u32 fuserId, r8); + u8* fuserData; + u32 offeredFusion; + u32 fuserProgress; + u8* fuserFusionData; + s32 randomMood; + u32 fuserStability; + fuserId = sub_08002632(entity); + fuserData = gUnk_08001DCC[fuserId]; + if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0 || fuserData[0] > gSave.global_progress) { + return 0; + } + offeredFusion = gSave.unk1C1[fuserId]; + fuserProgress = gSave.unk141[fuserId]; + fuserFusionData = (u8*) (fuserProgress + (u32) fuserData); + while (TRUE) { // loop through fusions for this fuser + switch (offeredFusion) { + case 0xF1: // offered fusion completed with someone else + case 0x00: // no fusion offered yet + offeredFusion = fuserFusionData[5]; + if (offeredFusion == 0x00 || offeredFusion == 0xFF || CheckKinstoneFused(offeredFusion) == 0) { + break; + } + case 0xF2: // previous fusion completed + fuserFusionData++; + fuserProgress++; + offeredFusion = fuserFusionData[5]; + } + if (offeredFusion == 0xFF) { // random shared fusion + offeredFusion = sub_0801EA74(fuserData); + } + if (offeredFusion == 0x00) { // end of fusion list + offeredFusion = 0xF3; // mark this fuser as done + break; + } + if (offeredFusion == 0xF2) { // previous fusion completed + continue; + } + if (CheckKinstoneFused(offeredFusion) == 0) { + break; + } + offeredFusion = 0xF1; // already completed, try next fusion in the list + } + gSave.unk1C1[fuserId] = offeredFusion; + gSave.unk141[fuserId] = fuserProgress; + randomMood = Random(); + fuserStability = fuserData[1]; + if (fuserStability <= randomMood % 100) { + return 0; // fickleness + } + if (offeredFusion - 1 > 99) { + offeredFusion = 0; + } + return offeredFusion; +} const struct_080C9C6C gUnk_080C9C6C[] = { { 1, 2, 2 }, { 3, 3, 3 }, { 4, 3, 0 }, { 3, 5, 5 }, { 3, 2, 2 }, { 5, 7, 7 }, { 5, 5, 5 }, { 1, 3, 3 }, @@ -1135,7 +1193,7 @@ const u8 gUnk_080CA11C[] = { }; // Get a random kinstone -u32 sub_0801EA74(void) { +u32 sub_0801EA74(u8* fuserData) { s32 r = (s32)Random() % 18; u32 i; for (i = 0; i < 18; ++i) { From 0d9f903f67e14862a70ba368260b6c192b2cfd12 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Tue, 3 Jan 2023 21:59:08 +0100 Subject: [PATCH 04/86] Eliminate a forced register --- src/common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common.c b/src/common.c index a1bacc2e..503d55b7 100644 --- a/src/common.c +++ b/src/common.c @@ -970,8 +970,8 @@ void sub_0801E8D4(void) { extern u8* gUnk_08001DCC[]; u32 sub_0801E99C(Entity* entity) { - FORCE_REGISTER(u32 fuserId, r8); u8* fuserData; + u32 fuserId; u32 offeredFusion; u32 fuserProgress; u8* fuserFusionData; From 2c7fc37c0d43a819567f9b899651f4199463f8a5 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Tue, 3 Jan 2023 22:36:39 +0100 Subject: [PATCH 05/86] fix gWalletSizes --- include/player.h | 6 +++++- src/gameUtils.c | 4 ++-- src/itemUtils.c | 7 ++++++- src/ui.c | 6 ++---- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/include/player.h b/include/player.h index e0cbdcfc..0a8c07b1 100644 --- a/include/player.h +++ b/include/player.h @@ -398,7 +398,11 @@ typedef struct { extern void (*const gPlayerItemFunctions[])(Entity*); -extern const s16 gWalletSizes[]; +typedef struct { + u16 size; + u16 unk; +} Wallet; +extern const Wallet gWalletSizes[]; extern const u8 gBombBagSizes[]; extern const u8 gQuiverSizes[]; extern Entity* gPlayerClones[]; diff --git a/src/gameUtils.c b/src/gameUtils.c index dbc22f8b..4f615950 100644 --- a/src/gameUtils.c +++ b/src/gameUtils.c @@ -222,8 +222,8 @@ void ModRupees(s32 delta) { if (newRupeeCount < 0) { newRupeeCount = 0; } else { - if (newRupeeCount > (u16)gWalletSizes[s->walletType * 2]) { - newRupeeCount = (u16)gWalletSizes[s->walletType * 2]; + if (newRupeeCount > gWalletSizes[s->walletType].size) { + newRupeeCount = gWalletSizes[s->walletType].size; } } s->rupees = newRupeeCount; diff --git a/src/itemUtils.c b/src/itemUtils.c index 36ed6bbf..97201c9c 100644 --- a/src/itemUtils.c +++ b/src/itemUtils.c @@ -12,7 +12,12 @@ #include "enemy.h" #include "message.h" -const s16 gWalletSizes[] = { 100, -4000, 300, -3996, 500, -3992, 999, -3988 }; +const Wallet gWalletSizes[] = { + { 100, 0xf060 }, + { 300, 0xf064 }, + { 500, 0xf068 }, + { 999, 0xf06c }, +}; const u8 gBombBagSizes[] = { 10, 30, diff --git a/src/ui.c b/src/ui.c index f412560d..c4cd4674 100644 --- a/src/ui.c +++ b/src/ui.c @@ -251,7 +251,6 @@ void DrawRupees(void) { u32 temp2; substruct_160* ptr; substruct_160* ptr2; - const u16* ptr3; struct_02035160* ptr4; if ((gUnk_0200AF00.unk_1 & 0x40) != 0) { @@ -277,8 +276,7 @@ void DrawRupees(void) { gUnk_0200AF00.unk_a = 2; ptr4 = &gUnk_02035160; ptr2 = &ptr4->unk_40; - ptr3 = gWalletSizes; - ptr4->unk_0.unk_0 = temp2 = *(ptr3 + (u32)gSave.stats.walletType * 2 + 1); + ptr4->unk_0.unk_0 = temp2 = gWalletSizes[gSave.stats.walletType].unk; ptr4->unk_0.unk_2 = temp2 + 1; ptr2->unk_0 = temp2 + 2; ptr2->unk_2 = temp2 + 3; @@ -312,7 +310,7 @@ void DrawRupees(void) { } case 1: DrawDigits(0x70, gUnk_0200AF00.rupees, - (u16)gWalletSizes[(u32)gSave.stats.walletType * 2] <= gUnk_0200AF00.rupees, 3); + gWalletSizes[(u32)gSave.stats.walletType].size <= gUnk_0200AF00.rupees, 3); cVar1 = gUnk_0200AF00.unk_c + 1; default: gUnk_0200AF00.unk_c = cVar1; From a26345cde0c3b2aaaf0efe98310ccca4acb358ad Mon Sep 17 00:00:00 2001 From: Henny022p Date: Tue, 3 Jan 2023 23:52:43 +0100 Subject: [PATCH 06/86] name Wallet::iconStartTile --- include/player.h | 2 +- src/ui.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/player.h b/include/player.h index 0a8c07b1..6c31cf38 100644 --- a/include/player.h +++ b/include/player.h @@ -400,7 +400,7 @@ extern void (*const gPlayerItemFunctions[])(Entity*); typedef struct { u16 size; - u16 unk; + u16 iconStartTile; } Wallet; extern const Wallet gWalletSizes[]; extern const u8 gBombBagSizes[]; diff --git a/src/ui.c b/src/ui.c index c4cd4674..a7834601 100644 --- a/src/ui.c +++ b/src/ui.c @@ -276,7 +276,7 @@ void DrawRupees(void) { gUnk_0200AF00.unk_a = 2; ptr4 = &gUnk_02035160; ptr2 = &ptr4->unk_40; - ptr4->unk_0.unk_0 = temp2 = gWalletSizes[gSave.stats.walletType].unk; + ptr4->unk_0.unk_0 = temp2 = gWalletSizes[gSave.stats.walletType].iconStartTile; ptr4->unk_0.unk_2 = temp2 + 1; ptr2->unk_0 = temp2 + 2; ptr2->unk_2 = temp2 + 3; From 8f10c3309870767bb2f0bd5ba4e30a6fa41aeff2 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Wed, 4 Jan 2023 01:51:52 +0100 Subject: [PATCH 07/86] Formatting --- src/common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common.c b/src/common.c index 503d55b7..909dd944 100644 --- a/src/common.c +++ b/src/common.c @@ -984,7 +984,7 @@ u32 sub_0801E99C(Entity* entity) { } offeredFusion = gSave.unk1C1[fuserId]; fuserProgress = gSave.unk141[fuserId]; - fuserFusionData = (u8*) (fuserProgress + (u32) fuserData); + fuserFusionData = (u8*)(fuserProgress + (u32)fuserData); while (TRUE) { // loop through fusions for this fuser switch (offeredFusion) { case 0xF1: // offered fusion completed with someone else @@ -1002,7 +1002,7 @@ u32 sub_0801E99C(Entity* entity) { offeredFusion = sub_0801EA74(fuserData); } if (offeredFusion == 0x00) { // end of fusion list - offeredFusion = 0xF3; // mark this fuser as done + offeredFusion = 0xF3; // mark this fuser as done break; } if (offeredFusion == 0xF2) { // previous fusion completed From 3855f2f0d07051db75440a941c117931f8a86abd Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 12:18:04 +0100 Subject: [PATCH 08/86] remove fake global gUnk_020344F0 part of gBG2Buffer --- asm/src/veneer.s | 4 ++-- linker.ld | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/asm/src/veneer.s b/asm/src/veneer.s index 42a0af6b..254eb81b 100644 --- a/asm/src/veneer.s +++ b/asm/src/veneer.s @@ -27,7 +27,7 @@ _08000126: cmp r0, #0 beq _08000136 ldr r0, _080001FC @ =gMapDataTopSpecial - ldr r1, _08000200 @ =gUnk_020344F0 + ldr r1, _08000200 @ =gBG2Buffer+0x40 bl _call_via_r4 _08000136: pop {r4, pc} @@ -127,7 +127,7 @@ _080001F0: .4byte gMapDataBottomSpecial _080001F4: .4byte gUnk_02021F70 _080001F8: .4byte gMapTop _080001FC: .4byte gMapDataTopSpecial -_08000200: .4byte gUnk_020344F0 +_08000200: .4byte gBG2Buffer+0x40 _08000204: .4byte gUnk_08000248 _08000208: .4byte gUnk_08000228 _0800020C: .4byte 0x00004000 diff --git a/linker.ld b/linker.ld index 50a77389..e9819af8 100644 --- a/linker.ld +++ b/linker.ld @@ -90,7 +90,6 @@ SECTIONS { . = 0x00034492; gUnk_02034492 = .; . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; - . = 0x000344F0; gUnk_020344F0 = .; . = 0x00034CB0; gBG0Buffer = .; . = 0x00034CF0; gUnk_02034CF0 = .; . = 0x00034D30; gUnk_02034D30 = .; From 33a62419a98cf6c31c7b421c20fae554f500de5b Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 12:24:00 +0100 Subject: [PATCH 09/86] remove fake global gUnk_02021F70 part of gBG1Buffer --- asm/src/veneer.s | 4 ++-- linker.ld | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/asm/src/veneer.s b/asm/src/veneer.s index 254eb81b..c3fc5da8 100644 --- a/asm/src/veneer.s +++ b/asm/src/veneer.s @@ -19,7 +19,7 @@ UpdateScrollVram: @ 0x08000108 cmp r0, #0 beq _08000126 ldr r0, _080001F0 @ =gMapDataBottomSpecial - ldr r1, _080001F4 @ =gUnk_02021F70 + ldr r1, _080001F4 @ =gBG1Buffer+0x40 bl _call_via_r4 _08000126: ldr r0, _080001F8 @ =gMapTop @@ -124,7 +124,7 @@ GetTileIndex: @ 0x080001DA _080001E8: .4byte gUpdateVisibleTiles _080001EC: .4byte gMapBottom _080001F0: .4byte gMapDataBottomSpecial -_080001F4: .4byte gUnk_02021F70 +_080001F4: .4byte gBG1Buffer+0x40 _080001F8: .4byte gMapTop _080001FC: .4byte gMapDataTopSpecial _08000200: .4byte gBG2Buffer+0x40 diff --git a/linker.ld b/linker.ld index e9819af8..5cb7ac0a 100644 --- a/linker.ld +++ b/linker.ld @@ -56,7 +56,6 @@ SECTIONS { . = 0x00021F00; gUnk_02021F00 = .; . = 0x00021F20; gUnk_02021F20 = .; . = 0x00021F30; gBG1Buffer = .; - . = 0x00021F70; gUnk_02021F70 = .; . = 0x00022030; gUnk_02022030 = .; . = 0x00022130; gUnk_02022130 = .; . = 0x00022730; gVBlankDMA = .; From 08de04a87b042a2a9effb5109399a86eef2a2620 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 12:26:49 +0100 Subject: [PATCH 10/86] remove fake global gUnk_02022030 part of gBG1Buffer --- include/fileselect.h | 1 - linker.ld | 1 - src/fileselect.c | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/include/fileselect.h b/include/fileselect.h index 29923481..9c17bad7 100644 --- a/include/fileselect.h +++ b/include/fileselect.h @@ -69,6 +69,5 @@ extern void (*const gUnk_080FC908[])(void); extern const u8 gGlobalGfxAndPalettes[]; extern u32 gUsedPalettes; extern u8 gTextGfxBuffer[]; -extern u8 gUnk_02022030; #endif // FILESELECT_H \ No newline at end of file diff --git a/linker.ld b/linker.ld index 5cb7ac0a..bf6e36d5 100644 --- a/linker.ld +++ b/linker.ld @@ -56,7 +56,6 @@ SECTIONS { . = 0x00021F00; gUnk_02021F00 = .; . = 0x00021F20; gUnk_02021F20 = .; . = 0x00021F30; gBG1Buffer = .; - . = 0x00022030; gUnk_02022030 = .; . = 0x00022130; gUnk_02022130 = .; . = 0x00022730; gVBlankDMA = .; . = 0x00022740; gFuseInfo = .; diff --git a/src/fileselect.c b/src/fileselect.c index 5324661c..d41126f6 100644 --- a/src/fileselect.c +++ b/src/fileselect.c @@ -1359,7 +1359,7 @@ void sub_0805144C(void) { void sub_08051458(void) { sub_080503A8(gMenu.column_idx + 9); - MemCopy(gBG3Buffer + 0x80, &gUnk_02022030, 0x400); + MemCopy(&gBG3Buffer[0x80], &gBG1Buffer[0x80], 0x400); } u32 sub_080514BC(u32); From a37c48285004ab4fd1152b3f1ff80562879b4cb6 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 12:28:49 +0100 Subject: [PATCH 11/86] remove fake global gUnk_02022130 part of gBG1Buffer --- linker.ld | 1 - src/subtask.c | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/linker.ld b/linker.ld index bf6e36d5..823bcba3 100644 --- a/linker.ld +++ b/linker.ld @@ -56,7 +56,6 @@ SECTIONS { . = 0x00021F00; gUnk_02021F00 = .; . = 0x00021F20; gUnk_02021F20 = .; . = 0x00021F30; gBG1Buffer = .; - . = 0x00022130; gUnk_02022130 = .; . = 0x00022730; gVBlankDMA = .; . = 0x00022740; gFuseInfo = .; . = 0x00022750; gPlayerScriptExecutionContext = .; diff --git a/src/subtask.c b/src/subtask.c index 054d0c05..a08de5b4 100644 --- a/src/subtask.c +++ b/src/subtask.c @@ -97,11 +97,10 @@ void sub_080A6FB4(u32 param_1, u32 param_2) { void sub_080A7040(u32 param_1) { extern Font gUnk_08129004; - extern u8 gUnk_02022130[]; if (gGenericMenu.unk2e.HWORD != param_1) { gGenericMenu.unk2e.HWORD = param_1; - MemClear(gUnk_02022130, 0x300); - MemCopy(gUnk_02022130 - 0x200, (void*)0x600e000, 0x800); + MemClear(&gBG1Buffer[0x100], 0x300); + MemCopy(gBG1Buffer, (void*)0x600e000, 0x800); if (GetInventoryValue(gUnk_08128D70[param_1].item) != 0) { ShowTextBox(gUnk_08128D70[param_1].textIndex, &gUnk_08129004); } From 7228a0387484076276d61692c8bbf6485883b777 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 13:59:22 +0100 Subject: [PATCH 12/86] remove fake global gUnk_02034CF0 part of gBG0Buffer --- linker.ld | 2 +- src/ui.c | 24 ++++++++++-------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/linker.ld b/linker.ld index 823bcba3..f3bf8c18 100644 --- a/linker.ld +++ b/linker.ld @@ -88,7 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x00034CF0; gUnk_02034CF0 = .; . = 0x00034D30; gUnk_02034D30 = .; . = 0x00034DF0; gUnk_02034DF0 = .; . = 0x00034E4E; gUnk_02034E4E = .; @@ -97,6 +96,7 @@ SECTIONS { . = 0x000350F0; gUnk_020350F0 = .; . = 0x0003510E; gUnk_0203510E = .; . = 0x00035160; gUnk_02035160 = .; + . = 0x000354B0; gUnk_020354B0 = .; . = 0x000354B4; gManagerCount = .; . = 0x000354C0; gUnk_020354C0 = .; diff --git a/src/ui.c b/src/ui.c index a7834601..5c683e84 100644 --- a/src/ui.c +++ b/src/ui.c @@ -38,8 +38,6 @@ typedef struct { u8 unk_18[40]; } struct_02034CF0; -extern struct_02034CF0 gUnk_02034CF0[]; - typedef struct { struct_02034CF0 unk_0; struct_02034CF0 unk_40; @@ -352,7 +350,7 @@ void DrawDigits(u32 iconVramIndex, u32 count, u32 isTextYellow, u32 digits) { } void sub_0801C66C(void) { - struct_02034CF0* ptr; + u32* ptr; s32 index; if (gUnk_0200AF00.unk_2 != 0) { @@ -362,15 +360,15 @@ void sub_0801C66C(void) { } else { index = 1; } - ptr = gUnk_02034CF0; + ptr = (u32*)&gBG0Buffer[0x20]; do { - ptr->unk_0 = 0; - ptr->unk_4 = 0; - ptr->unk_8 = 0; - ptr->unk_c = 0; - ptr->unk_10 = 0; - ptr->unk_14 = 0; - ptr++; + ptr[0] = 0; + ptr[1] = 0; + ptr[2] = 0; + ptr[3] = 0; + ptr[4] = 0; + ptr[5] = 0; + ptr += 0x10; index--; } while (index > 0); gScreen.bg0.updated = 1; @@ -381,10 +379,8 @@ void DrawHearts(void) { s32 health; s32 uVar1; s32 uVar2; - s32 uVar4; u32 uVar6; s32 maxHealth; - const u16* ptr; s32 tmp1; u16* ptr2; @@ -456,7 +452,7 @@ void DrawHearts(void) { *ptr2 = 0xf010; DmaSet(3, gUnk_080C8F2C + (10 - uVar6), ptr2 + 1, (uVar1 - 10) | 0x80000000); } - ptr2 = (u16*)&gUnk_02034CF0[0].unk_0; + ptr2 = &gBG0Buffer[0x20]; *ptr2 = 0xf010; DmaSet(3, gUnk_080C8F2C + (10 - tmp1), ptr2 + 1, maxHealth | 0x80000000); From ba7b5dbccd045c32835d2aafbb1b0b397c5004dd Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 14:13:40 +0100 Subject: [PATCH 13/86] remove fake global gUnk_02034D30 part of gBG0Buffer --- linker.ld | 1 - src/ui.c | 41 ++++++++++++----------------------------- 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/linker.ld b/linker.ld index f3bf8c18..d3c71a45 100644 --- a/linker.ld +++ b/linker.ld @@ -88,7 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x00034D30; gUnk_02034D30 = .; . = 0x00034DF0; gUnk_02034DF0 = .; . = 0x00034E4E; gUnk_02034E4E = .; . = 0x0003508E; gUnk_0203508E = .; diff --git a/src/ui.c b/src/ui.c index 5c683e84..6ef01a1c 100644 --- a/src/ui.c +++ b/src/ui.c @@ -28,23 +28,6 @@ typedef struct { } struct_02035160; extern struct_02035160 gUnk_02035160; -typedef struct { - u32 unk_0; - u32 unk_4; - u32 unk_8; - u32 unk_c; - u32 unk_10; - u32 unk_14; - u8 unk_18[40]; -} struct_02034CF0; - -typedef struct { - struct_02034CF0 unk_0; - struct_02034CF0 unk_40; -} struct_02034D30; - -extern struct_02034D30 gUnk_02034D30; - typedef struct { u16 unk_0; u16 unk_2; @@ -448,7 +431,7 @@ void DrawHearts(void) { } if (uVar1 - 10 > 0) { - ptr2 = (u16*)&gUnk_02034D30; + ptr2 = &gBG0Buffer[0x40]; *ptr2 = 0xf010; DmaSet(3, gUnk_080C8F2C + (10 - uVar6), ptr2 + 1, (uVar1 - 10) | 0x80000000); } @@ -469,21 +452,21 @@ void DrawHearts(void) { } void sub_0801C824(void) { - struct_02034CF0* ptr; + u32* ptr; if (gUnk_0200AF00.unk_6 != 0) { gUnk_0200AF00.unk_6 = 0; - if (gUnk_0200AF00.maxHealth > 4 * 10) { - ptr = &gUnk_02034D30.unk_40; // Show second row of hearts + if (gUnk_0200AF00.maxHealth > 10 * 4) { + ptr = (u32*)&gBG0Buffer[0x60]; // Show second row of hearts } else { - ptr = &gUnk_02034D30.unk_0; + ptr = (u32*)&gBG0Buffer[0x40]; } - ptr->unk_0 = 0; - ptr->unk_4 = 0; - ptr->unk_8 = 0; - ptr->unk_c = 0; - ptr->unk_10 = 0; - ptr->unk_14 = 0; + ptr[0] = 0; + ptr[1] = 0; + ptr[2] = 0; + ptr[3] = 0; + ptr[4] = 0; + ptr[5] = 0; gScreen.bg0.updated = 1; } } @@ -504,7 +487,7 @@ void DrawChargeBar(void) { if (!tmp1) return sub_0801C824(); - ptr1 = (gUnk_0200AF00.maxHealth > 0x28) ? (u16*)((u8*)(&gUnk_02034D30) + 0x40) : (u16*)&gUnk_02034D30.unk_0; + ptr1 = (gUnk_0200AF00.maxHealth > 10 * 4) ? &gBG0Buffer[0x60] : &gBG0Buffer[0x40]; tmp2 = Div(gPlayerState.chargeState.chargeTimer + 19, 20); if (tmp2 > 40) { From 0b0f469f7ac55d6ab5013d6e317b7e69afeb450a Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 14:17:24 +0100 Subject: [PATCH 14/86] remove fake global gUnk_02034DF0 part of gBG0Buffer --- linker.ld | 1 - src/manager/enterRoomTextboxManager.c | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/linker.ld b/linker.ld index d3c71a45..a0abba56 100644 --- a/linker.ld +++ b/linker.ld @@ -88,7 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x00034DF0; gUnk_02034DF0 = .; . = 0x00034E4E; gUnk_02034E4E = .; . = 0x0003508E; gUnk_0203508E = .; . = 0x000350E2; gUnk_020350E2 = .; diff --git a/src/manager/enterRoomTextboxManager.c b/src/manager/enterRoomTextboxManager.c index 59f31e2f..959e90f9 100644 --- a/src/manager/enterRoomTextboxManager.c +++ b/src/manager/enterRoomTextboxManager.c @@ -13,8 +13,6 @@ #include "message.h" #include "screen.h" -extern u8 gUnk_02034DF0[0x2F2]; - const u16 gUnk_08108DE8[] = { 0, 0x70b, 0x70c, 0x70d, 0x70e, 0x70f, 0x710, 0x711, 0x712, 0x713, 0x714, 0x715, 0x716, 0x717, 0x718, 0x719, 0x71a, 0x71b, 0x71c, 0x71d, 0x71e, 0x71f, 0x726, 0x720, 0x720, 0x721, 0x722, 0x723, 0x725, 0x727, 0x724, 0x728 }; @@ -67,7 +65,7 @@ void sub_0805E18C(EnterRoomTextboxManager* this) { } void sub_0805E1D8(EnterRoomTextboxManager* this) { - MemClear(&gUnk_02034DF0, 0x80); + MemClear(&gBG0Buffer[0xa0], 0x80); gScreen.bg0.updated = 1; DeleteThisEntity(); } @@ -80,7 +78,7 @@ void sub_0805E1F8(u32 unk0, bool32 isDungeon) { u8 unk_06[3]; } PACKED tmp; const Font* font; - MemClear(&gUnk_02034DF0, 0x80); + MemClear(&gBG0Buffer[0xa0], 0x80); MemCopy(gUnk_08108E60, &tmp, sizeof(tmp)); tmp.unk_04 = unk0 >> 8; tmp.unk_05 = unk0; From 4fd8013c8d13b12ecb0f90dd801bff7b5ac97ab3 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 14:37:58 +0100 Subject: [PATCH 15/86] remove fake global gUnk_02034E4E part of gBG0Buffer --- linker.ld | 1 - src/fileselect.c | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/linker.ld b/linker.ld index a0abba56..1b3e0e70 100644 --- a/linker.ld +++ b/linker.ld @@ -88,7 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x00034E4E; gUnk_02034E4E = .; . = 0x0003508E; gUnk_0203508E = .; . = 0x000350E2; gUnk_020350E2 = .; . = 0x000350F0; gUnk_020350F0 = .; diff --git a/src/fileselect.c b/src/fileselect.c index d41126f6..7676d0e1 100644 --- a/src/fileselect.c +++ b/src/fileselect.c @@ -210,9 +210,8 @@ const struct_080FC3E4 gUnk_080FC3E4[] = { { 0, 0xffff, 0, 1 }, }; -extern u16 gUnk_02034E4E[]; const Font gUnk_080FC844 = { - gUnk_02034E4E, BG_TILE_ADDR(0x198), gTextGfxBuffer, 0, 96, 224, 1, 1, 0, 1, 3, 0, 0, 1, 0 + &gBG0Buffer[0xcf], BG_TILE_ADDR(0x198), gTextGfxBuffer, 0, 96, 224, 1, 1, 0, 1, 3, 0, 0, 1, 0 }; const u16 gUnk_080FC85C[][3] = { From eb60063cdebe122ee682e4eaad3cb0fe0a9bae2c Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 14:40:07 +0100 Subject: [PATCH 16/86] remove fake global gUnk_0203508E part of gBG0Buffer --- linker.ld | 1 - src/demo.c | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/linker.ld b/linker.ld index 1b3e0e70..8fdd5f06 100644 --- a/linker.ld +++ b/linker.ld @@ -88,7 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x0003508E; gUnk_0203508E = .; . = 0x000350E2; gUnk_020350E2 = .; . = 0x000350F0; gUnk_020350F0 = .; . = 0x0003510E; gUnk_0203510E = .; diff --git a/src/demo.c b/src/demo.c index 36bde8b3..5ab9dfca 100644 --- a/src/demo.c +++ b/src/demo.c @@ -30,7 +30,6 @@ extern u8 gUnk_08A05751[]; // sprite_table extern void gUnk_089FD1B4; extern void gUnk_089FD2F4; -extern u16 gUnk_0203508E[]; extern u16 gUnk_0203510E[]; extern u8 gUnk_08A068BF[129]; @@ -190,7 +189,7 @@ void sub_080A30AC(void) { void sub_080A3198(u32 param_1, u32 param_2) { static const Font gUnk_08127C98[] = { - { gUnk_0203508E, BG_TILE_ADDR(0x1a0), gTextGfxBuffer, 0, 0x1080, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, + { &gBG0Buffer[0x1ef], BG_TILE_ADDR(0x1a0), gTextGfxBuffer, 0, 0x1080, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, { gUnk_0203510E, BG_TILE_ADDR(0x1a0), gTextGfxBuffer, 0, 0x80, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, }; static const u16 gUnk_08127CC8[4] = { From 7f25b35c2dcb62e389a1ead1afe855de6e781155 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 14:50:59 +0100 Subject: [PATCH 17/86] remove fake global gUnk_020350E2 part of gBG0Buffer --- linker.ld | 1 - src/ui.c | 56 +++++++++++++++++++++---------------------------------- 2 files changed, 21 insertions(+), 36 deletions(-) diff --git a/linker.ld b/linker.ld index 8fdd5f06..d7b764cd 100644 --- a/linker.ld +++ b/linker.ld @@ -88,7 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x000350E2; gUnk_020350E2 = .; . = 0x000350F0; gUnk_020350F0 = .; . = 0x0003510E; gUnk_0203510E = .; . = 0x00035160; gUnk_02035160 = .; diff --git a/src/ui.c b/src/ui.c index 6ef01a1c..4423a0c6 100644 --- a/src/ui.c +++ b/src/ui.c @@ -28,20 +28,6 @@ typedef struct { } struct_02035160; extern struct_02035160 gUnk_02035160; -typedef struct { - u16 unk_0; - u16 unk_2; - u16 unk_4; - u16 unk_6; - u8 pad[56]; -} substruct_0E2; - -typedef struct { - substruct_0E2 unk_0[2]; -} struct_020350E2; - -extern struct_020350E2 gUnk_020350E2; - extern const u16 gUnk_080C8F2C[]; extern u32 gUnk_085C4620[]; extern Frame* gSpriteAnimations_322[]; @@ -527,38 +513,38 @@ void DrawChargeBar(void) { void DrawKeys(void) { s32 iVar1; - substruct_0E2* ptr1; - substruct_0E2* ptr2; + u16* ptr1; + u16* ptr2; u32 temp; if (!(((gUnk_0200AF00.unk_1 & 0x80) == 0) && (AreaHasKeys()))) { if (gUnk_0200AF00.unk_10 != 0) { gUnk_0200AF00.unk_10 = 0; - ptr1 = &gUnk_020350E2.unk_0[0]; - ptr1->unk_0 = 0; - ptr1->unk_2 = 0; - ptr1->unk_4 = 0; - ptr1->unk_6 = 0; - gUnk_020350E2.unk_0[1].unk_0 = 0; - gUnk_020350E2.unk_0[1].unk_2 = 0; - gUnk_020350E2.unk_0[1].unk_4 = 0; - gUnk_020350E2.unk_0[1].unk_6 = 0; + ptr1 = &gBG0Buffer[0x219]; + ptr1[0] = 0; + ptr1[1] = 0; + ptr1[2] = 0; + ptr1[3] = 0; + ptr1[0x20] = 0; + ptr1[0x21] = 0; + ptr1[0x22] = 0; + ptr1[0x23] = 0; gScreen.bg0.updated = 1; } } else { if (gUnk_0200AF00.unk_10 == 0) { - ptr1 = &gUnk_020350E2.unk_0[0]; - ptr2 = &gUnk_020350E2.unk_0[1]; + ptr1 = &gBG0Buffer[0x219]; + ptr2 = &gBG0Buffer[0x239]; temp = 0xf01c; - ptr1->unk_0 = temp; - ptr1->unk_2 = temp + 1; - ptr2->unk_0 = temp + 2; - ptr2->unk_2 = temp + 3; + ptr1[0] = temp; + ptr1[1] = temp + 1; + ptr2[0] = temp + 2; + ptr2[1] = temp + 3; temp = 0xf076; - ptr1->unk_4 = temp; - ptr2->unk_4 = temp + 1; - ptr1->unk_6 = temp + 2; - ptr2->unk_6 = temp + 3; + ptr1[2] = temp; + ptr2[2] = temp + 1; + ptr1[3] = temp + 2; + ptr2[3] = temp + 3; gScreen.bg0.updated = 1; } if ((gUnk_0200AF00.dungeonKeys != gSave.dungeonKeys[gArea.dungeon_idx]) || (gUnk_0200AF00.unk_10 == 0)) { From 78120062b230139bea143aa91b3b62ac267267fa Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 16:58:39 +0100 Subject: [PATCH 18/86] remove fake global gUnk_020350F0 part of gBG0Buffer --- linker.ld | 1 - src/subtask.c | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/linker.ld b/linker.ld index d7b764cd..c7582803 100644 --- a/linker.ld +++ b/linker.ld @@ -88,7 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x000350F0; gUnk_020350F0 = .; . = 0x0003510E; gUnk_0203510E = .; . = 0x00035160; gUnk_02035160 = .; diff --git a/src/subtask.c b/src/subtask.c index a08de5b4..3661f8a6 100644 --- a/src/subtask.c +++ b/src/subtask.c @@ -14,7 +14,6 @@ #include "subtask.h" #include "ui.h" -extern u8 gUnk_020350F0[]; extern Screen gUnk_03001020; extern u8 gPaletteBufferBackup[]; extern u8 gUnk_03000420[]; @@ -53,7 +52,7 @@ void sub_080A6F6C(u32 textIndexOrPtr) { extern Font gUnk_08128FA8; if (gGenericMenu.unk2e.HWORD != textIndexOrPtr) { gGenericMenu.unk2e.HWORD = textIndexOrPtr; - MemClear(gUnk_020350F0, 0x100); + MemClear(&gBG0Buffer[0x220], 0x100); if ((textIndexOrPtr & 0xff) != 0) { ShowTextBox(textIndexOrPtr, &gUnk_08128FA8); } @@ -86,7 +85,7 @@ void sub_080A6FB4(u32 param_1, u32 param_2) { if (gGenericMenu.unk2e.HWORD != textIndexOrPtr) { gGenericMenu.unk2e.HWORD = textIndexOrPtr; - MemClear(&gUnk_020350F0, 0x100); + MemClear(&gBG0Buffer[0x220], 0x100); if ((textIndexOrPtr & 0xff) != 0) { ShowTextBox(textIndexOrPtr, font); } From 86a5c82ec9af8ae6b5bf530ccead12cc8ad0ae9e Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 16:59:52 +0100 Subject: [PATCH 19/86] remove fake global gUnk_0203510E part of gBG0Buffer --- linker.ld | 1 - src/demo.c | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/linker.ld b/linker.ld index c7582803..3c7967de 100644 --- a/linker.ld +++ b/linker.ld @@ -88,7 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x0003510E; gUnk_0203510E = .; . = 0x00035160; gUnk_02035160 = .; . = 0x000354B0; gUnk_020354B0 = .; diff --git a/src/demo.c b/src/demo.c index 5ab9dfca..0cb7d039 100644 --- a/src/demo.c +++ b/src/demo.c @@ -30,7 +30,6 @@ extern u8 gUnk_08A05751[]; // sprite_table extern void gUnk_089FD1B4; extern void gUnk_089FD2F4; -extern u16 gUnk_0203510E[]; extern u8 gUnk_08A068BF[129]; @@ -190,7 +189,7 @@ void sub_080A30AC(void) { void sub_080A3198(u32 param_1, u32 param_2) { static const Font gUnk_08127C98[] = { { &gBG0Buffer[0x1ef], BG_TILE_ADDR(0x1a0), gTextGfxBuffer, 0, 0x1080, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, - { gUnk_0203510E, BG_TILE_ADDR(0x1a0), gTextGfxBuffer, 0, 0x80, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, + { &gBG0Buffer[0x22f], BG_TILE_ADDR(0x1a0), gTextGfxBuffer, 0, 0x80, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, }; static const u16 gUnk_08127CC8[4] = { TEXT_INDEX(TEXT_WINDCRESTS, 0x1c), From e38301fc174b4892f971e1ddb07e107904d01708 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 19:33:17 +0100 Subject: [PATCH 20/86] remove fake global gUnk_02035160 part of gBG0Buffer --- linker.ld | 2 -- src/ui.c | 69 +++++++++++++++++++++---------------------------------- 2 files changed, 26 insertions(+), 45 deletions(-) diff --git a/linker.ld b/linker.ld index 3c7967de..17221aa0 100644 --- a/linker.ld +++ b/linker.ld @@ -88,8 +88,6 @@ SECTIONS { . = 0x000344A0; gUnk_020344A0 = .; . = 0x000344B0; gBG2Buffer = .; . = 0x00034CB0; gBG0Buffer = .; - . = 0x00035160; gUnk_02035160 = .; - . = 0x000354B0; gUnk_020354B0 = .; . = 0x000354B4; gManagerCount = .; . = 0x000354C0; gUnk_020354C0 = .; diff --git a/src/ui.c b/src/ui.c index 4423a0c6..0f9b05b9 100644 --- a/src/ui.c +++ b/src/ui.c @@ -13,21 +13,6 @@ extern void sub_0805ECEC(u32, u32, u32, u32); extern bool32 ItemIsBottle(u32); extern u32 sub_08000E44(u32); -typedef struct { - u16 unk_0; - u16 unk_2; - u16 unk_4; - u16 unk_6; - u16 unk_8; -} substruct_160; - -typedef struct { - substruct_160 unk_0; - u8 unk_9[50]; - substruct_160 unk_40; -} struct_02035160; -extern struct_02035160 gUnk_02035160; - extern const u16 gUnk_080C8F2C[]; extern u32 gUnk_085C4620[]; extern Frame* gSpriteAnimations_322[]; @@ -216,44 +201,42 @@ void DrawRupees(void) { u32 cVar1; u32 temp; u32 temp2; - substruct_160* ptr; - substruct_160* ptr2; - struct_02035160* ptr4; + u16* ptr; + u16* ptr2; if ((gUnk_0200AF00.unk_1 & 0x40) != 0) { if (gUnk_0200AF00.unk_a != 0) { gUnk_0200AF00.unk_a = 0; - ptr4 = &gUnk_02035160; - ptr = &ptr4->unk_0; - ptr->unk_0 = 0; - ptr->unk_2 = 0; - ptr->unk_4 = 0; - ptr->unk_6 = 0; - ptr->unk_8 = 0; - ptr2 = &ptr4->unk_40; - ptr2->unk_0 = 0; - ptr2->unk_2 = 0; - ptr2->unk_4 = 0; - ptr2->unk_6 = 0; - ptr2->unk_8 = 0; + ptr = &gBG0Buffer[0x258]; + ptr[0] = 0; + ptr[1] = 0; + ptr[2] = 0; + ptr[3] = 0; + ptr[4] = 0; + ptr2 = &gBG0Buffer[0x278]; + ptr2[0] = 0; + ptr2[1] = 0; + ptr2[2] = 0; + ptr2[3] = 0; + ptr2[4] = 0; gScreen.bg0.updated = 1; } } else { if (gUnk_0200AF00.unk_a == 0) { gUnk_0200AF00.unk_a = 2; - ptr4 = &gUnk_02035160; - ptr2 = &ptr4->unk_40; - ptr4->unk_0.unk_0 = temp2 = gWalletSizes[gSave.stats.walletType].iconStartTile; - ptr4->unk_0.unk_2 = temp2 + 1; - ptr2->unk_0 = temp2 + 2; - ptr2->unk_2 = temp2 + 3; + ptr = &gBG0Buffer[0x258]; + ptr2 = &gBG0Buffer[0x278]; + ptr[0] = temp2 = gWalletSizes[gSave.stats.walletType].iconStartTile; + ptr[1] = temp2 + 1; + ptr2[0] = temp2 + 2; + ptr2[1] = temp2 + 3; temp2 = 0xf070; - ptr4->unk_0.unk_4 = temp2; - ptr2->unk_4 = temp2 + 1; - ptr4->unk_0.unk_6 = temp2 + 2; - ptr2->unk_6 = temp2 + 3; - ptr4->unk_0.unk_8 = temp2 + 4; - ptr2->unk_8 = temp2 + 5; + ptr[2] = temp2; + ptr2[2] = temp2 + 1; + ptr[3] = temp2 + 2; + ptr2[3] = temp2 + 3; + ptr[4] = temp2 + 4; + ptr2[4] = temp2 + 5; gScreen.bg0.updated = 1; cVar1 = 1; } else { From 07edb4e48785aa341a457d35762f4346b313fce6 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 4 Jan 2023 21:04:57 +0200 Subject: [PATCH 21/86] Match sub_08038304 and sub_08046518 --- .../gyorg_female/sub_08046518.inc | 85 ----------------- asm/non_matching/ropeGolden/sub_08038304.inc | 95 ------------------- src/enemy/gyorgFemale.c | 38 ++++---- src/enemy/ropeGolden.c | 44 ++++++++- 4 files changed, 62 insertions(+), 200 deletions(-) delete mode 100644 asm/non_matching/gyorg_female/sub_08046518.inc delete mode 100644 asm/non_matching/ropeGolden/sub_08038304.inc diff --git a/asm/non_matching/gyorg_female/sub_08046518.inc b/asm/non_matching/gyorg_female/sub_08046518.inc deleted file mode 100644 index 34dd8dc2..00000000 --- a/asm/non_matching/gyorg_female/sub_08046518.inc +++ /dev/null @@ -1,85 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - ldr r1, _080465AC @ =gMapTop+0x5004 - ldr r2, _080465B0 @ =0xFFFFBCB0 - adds r0, r1, r2 - ldr r3, _080465B4 @ =0xFFFFECB0 - adds r2, r1, r3 - ldr r7, _080465B8 @ =0x00006658 - adds r7, r1, r7 - str r7, [sp, #4] - ldr r3, _080465BC @ =0xFFFFD658 - adds r6, r1, r3 - movs r1, #0x10 -_0804653A: - movs r5, #0x10 - movs r7, #0x80 - adds r7, r7, r0 - mov sl, r7 - adds r3, r2, #0 - adds r3, #0x80 - str r3, [sp] - ldr r7, [sp, #4] - adds r7, #0x40 - mov r8, r7 - movs r3, #0x40 - adds r3, r3, r6 - mov sb, r3 - subs r1, #1 - mov ip, r1 - adds r3, r0, #0 - adds r3, #0x20 - adds r4, r2, #0 - adds r4, #0x20 -_08046560: - ldrh r0, [r3] - strh r0, [r4] - ldrh r0, [r3] - lsls r0, r0, #1 - ldr r7, _080465AC @ =gMapTop+0x5004 - adds r0, r0, r7 - ldrh r1, [r0] - ldr r0, [sp, #4] - adds r2, r0, r5 - ldr r7, _080465C0 @ =gUnk_080B37A0 - adds r0, r1, r7 - ldrb r0, [r0] - strb r0, [r2] - adds r2, r6, r5 - ldr r0, _080465C4 @ =gUnk_080B3E80 - adds r1, r1, r0 - ldrb r0, [r1] - strb r0, [r2] - subs r3, #2 - subs r4, #2 - subs r5, #1 - cmp r5, #0 - bne _08046560 - mov r0, sl - ldr r2, [sp] - mov r1, r8 - str r1, [sp, #4] - mov r6, sb - mov r1, ip - cmp r1, #0 - bne _0804653A - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080465AC: .4byte gMapTop+0x5004 -_080465B0: .4byte 0xFFFFBCB0 -_080465B4: .4byte 0xFFFFECB0 -_080465B8: .4byte 0x00006658 -_080465BC: .4byte 0xFFFFD658 -_080465C0: .4byte gUnk_080B37A0 -_080465C4: .4byte gUnk_080B3E80 - .syntax divided diff --git a/asm/non_matching/ropeGolden/sub_08038304.inc b/asm/non_matching/ropeGolden/sub_08038304.inc deleted file mode 100644 index c0743c49..00000000 --- a/asm/non_matching/ropeGolden/sub_08038304.inc +++ /dev/null @@ -1,95 +0,0 @@ - - - .syntax unified - - .text - - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r1, #2 - bl UpdateAnimationVariableFrames - adds r0, r4, #0 - bl ProcessMovement0 - cmp r0, #0 - bne _08038334 - adds r0, r4, #0 - adds r0, #0x78 - ldrb r0, [r0] - ldrb r1, [r4, #0x15] - cmp r0, r1 - bne _08038330 -.ifdef EU - movs r0, #0x1e -.else - movs r0, #0x5a -.endif - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl sub_080383AC - b _080383AA -_08038330: - strb r0, [r4, #0x15] - b _080383AA -_08038334: - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - movs r1, #0xa - bl __modsi3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - bne _080383AA - strb r0, [r4, #0xe] - adds r0, r4, #0 - adds r0, #0x78 - ldrb r0, [r0] - ldrb r3, [r4, #0x15] - cmp r0, r3 - bne _08038398 - bl Random - movs r1, #2 - ands r1, r0 - subs r1, #1 - lsls r1, r1, #0x1b - lsrs r1, r1, #0x18 - adds r0, r4, #0 - adds r0, #0x79 - lsls r5, r1, #0x18 - lsrs r3, r5, #0x18 - adds r2, r0, #0 - movs r6, #0x7a - adds r6, r6, r4 - mov ip, r6 - ldrb r0, [r2] - cmp r3, r0 - bne _08038388 - ldrb r6, [r6] - cmp r3, r6 - bne _08038388 - rsbs r0, r5, #0 - lsrs r1, r0, #0x18 -_08038388: - ldrb r0, [r2] - mov r3, ip - strb r0, [r3] - strb r1, [r2] - ldrb r0, [r4, #0x15] - adds r0, r0, r1 - movs r1, #0x18 - ands r0, r1 -_08038398: - strb r0, [r4, #0x15] - ldrb r0, [r4, #0x15] - lsrs r0, r0, #3 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation -_080383AA: - pop {r4, r5, r6, pc} - - .syntax divided diff --git a/src/enemy/gyorgFemale.c b/src/enemy/gyorgFemale.c index edd88119..6a8e11d8 100644 --- a/src/enemy/gyorgFemale.c +++ b/src/enemy/gyorgFemale.c @@ -240,30 +240,30 @@ void sub_080464C0(GyorgFemaleEntity* this) { gUpdateVisibleTiles = 1; } -NONMATCH("asm/non_matching/gyorg_female/sub_08046518.inc", void sub_08046518(void)) { - u32 r5; - u16* stack1; - u8* stack2; - u8* r6; +#define sub_08046518_offset 0x658 + +void sub_08046518(void) { + u16* ptr = gMapTop.metatileTypes; + u16* sl = &gMapTop.mapData[sub_08046518_offset]; + u16* stack1 = &gMapTop.mapDataClone[sub_08046518_offset]; + u8* stack2 = &gMapTop.unkData3[sub_08046518_offset]; + u8* r6 = &gMapTop.collisionData[sub_08046518_offset]; u32 i; - u16* sl; - sl = &gMapTop.metatileTypes[0xFFFFBCB0]; - stack1 = &gMapTop.metatileTypes[0xFFFFECB0]; - stack2 = (u8*)&gMapTop.metatileTypes[0x00006658]; - r6 = (u8*)&gMapTop.metatileTypes[0xFFFFD658]; - for (i = 0; i < 0x10; i++) { + for (i = 0x10; i != 0; i--) { + u32 j; + for (j = 0x10; j != 0; j--) { + u16 new_var; + stack1[j] = sl[j]; + new_var = ptr[sl[j]]; + stack2[j] = gUnk_080B37A0[new_var]; + r6[j] = gUnk_080B3E80[new_var]; + } sl += 0x40; stack1 += 0x40; - for (r5 = 0; r5 < 0x10; r5++) { - stack1[r5] = sl[r5]; - stack2[r5] = gUnk_080B37A0[gMapTop.metatileTypes[sl[r5]]]; - r6[r5] = gUnk_080B3E80[gMapTop.metatileTypes[sl[r5]]]; - } - stack2 = stack2 + 0x40; - r6 = r6 + 0x40; + stack2 += 0x40; + r6 += 0x40; } } -END_NONMATCH void sub_080465C8(void) { s32 x, y; diff --git a/src/enemy/ropeGolden.c b/src/enemy/ropeGolden.c index 025eaae1..b8921b9a 100644 --- a/src/enemy/ropeGolden.c +++ b/src/enemy/ropeGolden.c @@ -96,7 +96,49 @@ void sub_080382EC(Entity* this) { } } -ASM_FUNC("asm/non_matching/ropeGolden/sub_08038304.inc", void sub_08038304(Entity* this)) +void sub_08038304(Entity* this) { + u32 cVar2; + s32 tmp; + u32 tmp3; + u32 h; + + UpdateAnimationVariableFrames(this, 2); + if (!ProcessMovement0(this)) { + if (this->field_0x78.HALF.LO == this->direction) { +#ifdef EU + this->subtimer = 30; +#else + this->subtimer = 90; +#endif + sub_080383AC(this); + } else { + this->direction = this->field_0x78.HALF.LO; + } + } else { + tmp = 10; + if ((u8)((++this->timer) % tmp) == 0) { + this->timer = 0; + if (this->field_0x78.HALF.LO == this->direction) { + cVar2 = ((Random() & 2) - 1) << 27; + cVar2 = cVar2 >> 24; + h = this->field_0x78.HALF.HI; + tmp3 = (u8)cVar2 << 24; + if (tmp3 >> 24 == h) { + if (h == this->field_0x7a.HALF.LO) { + cVar2 = -tmp3 >> 24; + } + } + this->field_0x7a.HALF.LO = this->field_0x78.HALF.HI; + this->field_0x78.HALF.HI = cVar2; + this->direction = (this->direction + cVar2) & 0x18; + } else { + this->direction = this->field_0x78.HALF.LO; + } + this->animationState = this->direction >> 3; + InitializeAnimation(this, this->animationState + 4); + } + } +} void sub_080383AC(Entity* this) { u32 v; From 42a8d94e8f4b5376ed8e80c973db06bde7f8d8ea Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 4 Jan 2023 23:13:52 +0100 Subject: [PATCH 22/86] clean ui.c a bit --- src/ui.c | 162 +++++++++++++++++++++++++++---------------------------- 1 file changed, 78 insertions(+), 84 deletions(-) diff --git a/src/ui.c b/src/ui.c index 0f9b05b9..9d104798 100644 --- a/src/ui.c +++ b/src/ui.c @@ -10,7 +10,6 @@ #include "game.h" extern void sub_0805ECEC(u32, u32, u32, u32); -extern bool32 ItemIsBottle(u32); extern u32 sub_08000E44(u32); extern const u16 gUnk_080C8F2C[]; @@ -45,13 +44,13 @@ void DrawChargeBar(void); void DrawRupees(void); void DrawKeys(void); void CreateUIElement(u32, u32); -void DrawDigits(u32, u32, u32, u32); +void RenderDigits(u32, u32, u32, u32); void sub_0801CAFC(UIElement*, u32); void sub_0801CB20(UIElement*, UIElementDefinition*); UIElement* FindUIElement(u32); void sub_0801CAD0(UIElement*); void sub_0801CAB8(UIElement*, Frame*); -void sub_0801C824(void); +void EraseChargeBar(void); void UpdateUIElements(void) { u32 index; @@ -70,7 +69,7 @@ void DrawUIElements(void) { u32 index; UIElement* element; UIElementDefinition* definition; - index = 0; + for (index = 0; index < MAX_UI_ELEMENTS; index++) { element = &gUnk_0200AF00.elements[index]; if (element->used == 1 && element->unk_0_1 == 1) { @@ -86,7 +85,6 @@ void DrawUIElements(void) { } void sub_0801C25C(void) { - u32 uVar1; s32 index; u8 tmp; UIElement* element; @@ -116,7 +114,6 @@ void sub_0801C25C(void) { void sub_0801C2F0(u32 param_1, u32 param_2) { u32 uVar1; register u32 rem asm("r1"); - vu32* ptr; param_1 = param_1 * 0x20 + 0x6010000; uVar1 = Div(param_2, 10); @@ -201,42 +198,42 @@ void DrawRupees(void) { u32 cVar1; u32 temp; u32 temp2; - u16* ptr; - u16* ptr2; + u16* row1; + u16* row2; if ((gUnk_0200AF00.unk_1 & 0x40) != 0) { if (gUnk_0200AF00.unk_a != 0) { gUnk_0200AF00.unk_a = 0; - ptr = &gBG0Buffer[0x258]; - ptr[0] = 0; - ptr[1] = 0; - ptr[2] = 0; - ptr[3] = 0; - ptr[4] = 0; - ptr2 = &gBG0Buffer[0x278]; - ptr2[0] = 0; - ptr2[1] = 0; - ptr2[2] = 0; - ptr2[3] = 0; - ptr2[4] = 0; + row1 = &gBG0Buffer[0x258]; + row1[0] = 0; + row1[1] = 0; + row1[2] = 0; + row1[3] = 0; + row1[4] = 0; + row2 = &gBG0Buffer[0x278]; + row2[0] = 0; + row2[1] = 0; + row2[2] = 0; + row2[3] = 0; + row2[4] = 0; gScreen.bg0.updated = 1; } } else { if (gUnk_0200AF00.unk_a == 0) { gUnk_0200AF00.unk_a = 2; - ptr = &gBG0Buffer[0x258]; - ptr2 = &gBG0Buffer[0x278]; - ptr[0] = temp2 = gWalletSizes[gSave.stats.walletType].iconStartTile; - ptr[1] = temp2 + 1; - ptr2[0] = temp2 + 2; - ptr2[1] = temp2 + 3; + row1 = &gBG0Buffer[0x258]; + row2 = &gBG0Buffer[0x278]; + row1[0] = temp2 = gWalletSizes[gSave.stats.walletType].iconStartTile; + row1[1] = temp2 + 1; + row2[0] = temp2 + 2; + row2[1] = temp2 + 3; temp2 = 0xf070; - ptr[2] = temp2; - ptr2[2] = temp2 + 1; - ptr[3] = temp2 + 2; - ptr2[3] = temp2 + 3; - ptr[4] = temp2 + 4; - ptr2[4] = temp2 + 5; + row1[2] = temp2; + row2[2] = temp2 + 1; + row1[3] = temp2 + 2; + row2[3] = temp2 + 3; + row1[4] = temp2 + 4; + row2[4] = temp2 + 5; gScreen.bg0.updated = 1; cVar1 = 1; } else { @@ -259,8 +256,8 @@ void DrawRupees(void) { SoundReq(SFX_RUPEE_GET); } case 1: - DrawDigits(0x70, gUnk_0200AF00.rupees, - gWalletSizes[(u32)gSave.stats.walletType].size <= gUnk_0200AF00.rupees, 3); + RenderDigits(0x70, gUnk_0200AF00.rupees, + gWalletSizes[(u32)gSave.stats.walletType].size <= gUnk_0200AF00.rupees, 3); cVar1 = gUnk_0200AF00.unk_c + 1; default: gUnk_0200AF00.unk_c = cVar1; @@ -269,8 +266,7 @@ void DrawRupees(void) { } } -// Draw icon with text for rupees or keys -void DrawDigits(u32 iconVramIndex, u32 count, u32 isTextYellow, u32 digits) { +void RenderDigits(u32 iconVramIndex, u32 count, u32 isTextYellow, u32 digits) { int iVar2; int iVar3; u8* puVar4; @@ -290,7 +286,7 @@ void DrawDigits(u32 iconVramIndex, u32 count, u32 isTextYellow, u32 digits) { digit = Div(count, 100); count = r1; DmaCopy32(3, puVar4 + digit * 0x40, iVar2, 0x10 * 4); - iVar2 = iVar3 + 0x600c040; + iVar2 += 0x40; case 2: digit = Div(count, 10); count = r1; @@ -301,13 +297,13 @@ void DrawDigits(u32 iconVramIndex, u32 count, u32 isTextYellow, u32 digits) { DmaCopy32(3, puVar4 + count * 0x40, iVar2, 0x10 * 4); } -void sub_0801C66C(void) { +void EraseHearts(void) { u32* ptr; s32 index; if (gUnk_0200AF00.unk_2 != 0) { gUnk_0200AF00.unk_2 = 0; - if (gUnk_0200AF00.maxHealth > 0x28) { + if (gUnk_0200AF00.maxHealth > 10 * 4) { index = 2; } else { index = 1; @@ -334,18 +330,18 @@ void DrawHearts(void) { u32 uVar6; s32 maxHealth; s32 tmp1; - u16* ptr2; + u16* ptr; if ((gUnk_0200AF00.unk_1 & 0x10) != 0) { - sub_0801C824(); - sub_0801C66C(); + EraseChargeBar(); + EraseHearts(); return; } maxHealth = gSave.stats.maxHealth / 2; if (maxHealth != gUnk_0200AF00.maxHealth) { gUnk_0200AF00.maxHealth = maxHealth; - sub_0801C824(); - sub_0801C66C(); + EraseChargeBar(); + EraseHearts(); } if (gSave.stats.health != 1) { health = gSave.stats.health / 2; @@ -400,33 +396,33 @@ void DrawHearts(void) { } if (uVar1 - 10 > 0) { - ptr2 = &gBG0Buffer[0x40]; - *ptr2 = 0xf010; - DmaSet(3, gUnk_080C8F2C + (10 - uVar6), ptr2 + 1, (uVar1 - 10) | 0x80000000); + ptr = &gBG0Buffer[0x40]; + *ptr = 0xf010; + DmaSet(3, gUnk_080C8F2C + (10 - uVar6), ptr + 1, (uVar1 - 10) | 0x80000000); } - ptr2 = &gBG0Buffer[0x20]; - *ptr2 = 0xf010; + ptr = &gBG0Buffer[0x20]; + *ptr = 0xf010; - DmaSet(3, gUnk_080C8F2C + (10 - tmp1), ptr2 + 1, maxHealth | 0x80000000); + DmaSet(3, gUnk_080C8F2C + (10 - tmp1), ptr + 1, maxHealth | 0x80000000); if ((gUnk_0200AF00.health & 3) != 0) { if (9 < uVar2) { uVar2 -= 10; - ptr2 += 0x20; + ptr += 0x20; } - ptr2[uVar2 + 1] = ((gUnk_0200AF00.health & 3) + 0x11) | 0xf000; + ptr[uVar2 + 1] = ((gUnk_0200AF00.health & 3) + 0x11) | 0xf000; } gScreen.bg0.updated = 1; } } -void sub_0801C824(void) { +void EraseChargeBar(void) { u32* ptr; if (gUnk_0200AF00.unk_6 != 0) { gUnk_0200AF00.unk_6 = 0; if (gUnk_0200AF00.maxHealth > 10 * 4) { - ptr = (u32*)&gBG0Buffer[0x60]; // Show second row of hearts + ptr = (u32*)&gBG0Buffer[0x60]; } else { ptr = (u32*)&gBG0Buffer[0x40]; } @@ -454,9 +450,13 @@ void DrawChargeBar(void) { } if (!tmp1) - return sub_0801C824(); + return EraseChargeBar(); - ptr1 = (gUnk_0200AF00.maxHealth > 10 * 4) ? &gBG0Buffer[0x60] : &gBG0Buffer[0x40]; + if (gUnk_0200AF00.maxHealth > 10 * 4) { + ptr1 = &gBG0Buffer[0x60]; + } else { + ptr1 = &gBG0Buffer[0x40]; + } tmp2 = Div(gPlayerState.chargeState.chargeTimer + 19, 20); if (tmp2 > 40) { @@ -495,52 +495,50 @@ void DrawChargeBar(void) { } void DrawKeys(void) { - s32 iVar1; - u16* ptr1; - u16* ptr2; + u16* row1; + u16* row2; u32 temp; if (!(((gUnk_0200AF00.unk_1 & 0x80) == 0) && (AreaHasKeys()))) { if (gUnk_0200AF00.unk_10 != 0) { gUnk_0200AF00.unk_10 = 0; - ptr1 = &gBG0Buffer[0x219]; - ptr1[0] = 0; - ptr1[1] = 0; - ptr1[2] = 0; - ptr1[3] = 0; - ptr1[0x20] = 0; - ptr1[0x21] = 0; - ptr1[0x22] = 0; - ptr1[0x23] = 0; + row1 = &gBG0Buffer[0x219]; + row1[0] = 0; + row1[1] = 0; + row1[2] = 0; + row1[3] = 0; + row1[0x20] = 0; + row1[0x21] = 0; + row1[0x22] = 0; + row1[0x23] = 0; gScreen.bg0.updated = 1; } } else { if (gUnk_0200AF00.unk_10 == 0) { - ptr1 = &gBG0Buffer[0x219]; - ptr2 = &gBG0Buffer[0x239]; + row1 = &gBG0Buffer[0x219]; + row2 = &gBG0Buffer[0x239]; temp = 0xf01c; - ptr1[0] = temp; - ptr1[1] = temp + 1; - ptr2[0] = temp + 2; - ptr2[1] = temp + 3; + row1[0] = temp; + row1[1] = temp + 1; + row2[0] = temp + 2; + row2[1] = temp + 3; temp = 0xf076; - ptr1[2] = temp; - ptr2[2] = temp + 1; - ptr1[3] = temp + 2; - ptr2[3] = temp + 3; + row1[2] = temp; + row2[2] = temp + 1; + row1[3] = temp + 2; + row2[3] = temp + 3; gScreen.bg0.updated = 1; } if ((gUnk_0200AF00.dungeonKeys != gSave.dungeonKeys[gArea.dungeon_idx]) || (gUnk_0200AF00.unk_10 == 0)) { gUnk_0200AF00.unk_10 = 2; gUnk_0200AF00.dungeonKeys = gSave.dungeonKeys[gArea.dungeon_idx]; - DrawDigits(0x76, gUnk_0200AF00.dungeonKeys, 0, 2); + RenderDigits(0x76, gUnk_0200AF00.dungeonKeys, 0, 2); } } } void CreateUIElement(u32 type, u32 type2) { u32 index; - UIElement* new_var; UIElement* element; for (index = 0; index < MAX_UI_ELEMENTS; index++) { @@ -674,7 +672,6 @@ u32 sub_0801CC80(UIElement* element) { void ItemUIElement(UIElement* element) { u32 itemMaxNumber; u32 itemId; - u8* puVar3; UIElement* element2; u32 uVar5; u32 playerItemCount; @@ -743,9 +740,6 @@ void ItemUIElement(UIElement* element) { void TextUIElement(UIElement* element) { UIElement* buttonUIElement; u32 tmp; - extern struct_0200AF00* ptr; - u32 tmp1; - UIElement* ptr2; if (element->type2 == 9) { tmp = gUnk_0200AF00.unk_2f; From d5c8339e7cb7bf6b013b1d0290cf2f6ce3b342fe Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Wed, 4 Jan 2023 23:41:44 +0000 Subject: [PATCH 23/86] Match sub_0809CBE4 --- .../frozenOctorok/sub_0809CBE4.inc | 40 ------------------- src/object/frozenOctorok.c | 14 +++++-- 2 files changed, 10 insertions(+), 44 deletions(-) delete mode 100644 asm/non_matching/frozenOctorok/sub_0809CBE4.inc diff --git a/asm/non_matching/frozenOctorok/sub_0809CBE4.inc b/asm/non_matching/frozenOctorok/sub_0809CBE4.inc deleted file mode 100644 index eac592d4..00000000 --- a/asm/non_matching/frozenOctorok/sub_0809CBE4.inc +++ /dev/null @@ -1,40 +0,0 @@ - .syntax unified - push {r4, lr} - adds r2, r0, #0 - adds r3, r2, #0 - adds r3, #0x79 - ldrb r0, [r2, #0xf] - ldrb r4, [r3] - adds r1, r0, r4 - strb r1, [r3] - ldrb r4, [r2, #0xf] - movs r0, #0xf - ldrsb r0, [r2, r0] - cmp r0, #0 - bge _0809CC16 - ldrb r0, [r2, #0xe] - lsls r1, r1, #0x18 - lsls r0, r0, #0x18 - cmn r1, r0 - bge _0809CC2C - rsbs r0, r4, #0 - strb r0, [r2, #0xf] - movs r0, #0xcf - lsls r0, r0, #1 - bl SoundReq - b _0809CC2C -_0809CC16: - movs r0, #0 - ldrsb r0, [r3, r0] - ldrb r1, [r2, #0xe] - cmp r0, r1 - ble _0809CC2C - rsbs r0, r4, #0 - strb r0, [r2, #0xf] - movs r0, #0xcf - lsls r0, r0, #1 - bl SoundReq -_0809CC2C: - pop {r4, pc} - .align 2, 0 - .syntax divided diff --git a/src/object/frozenOctorok.c b/src/object/frozenOctorok.c index 682e0ae0..9bde8f4a 100644 --- a/src/object/frozenOctorok.c +++ b/src/object/frozenOctorok.c @@ -421,10 +421,17 @@ void sub_0809CB70(FrozenOctorokEntity* this, s32 angle, s32 radius) { super->z.WORD = super->parent->z.WORD; } -NONMATCH("asm/non_matching/frozenOctorok/sub_0809CBE4.inc", void sub_0809CBE4(FrozenOctorokEntity* this)) { - this->unk_79 += super->subtimer; +void sub_0809CBE4(FrozenOctorokEntity* this) { + u16 tmp1; + FORCE_REGISTER(u8 tmp4, r4); + u8* tmp3 = &this->unk_79; + tmp1 = super->subtimer; + tmp4 = *tmp3; + tmp1 += tmp4; + this->unk_79 = tmp1; if ((s8)super->subtimer < 0) { - if (super->timer < -this->unk_79) { + u8 tmp_r0 = super->timer; + if (tmp1 << 0x18 < -tmp_r0 << 0x18) { super->subtimer = -super->subtimer; SoundReq(SFX_19E); } @@ -433,7 +440,6 @@ NONMATCH("asm/non_matching/frozenOctorok/sub_0809CBE4.inc", void sub_0809CBE4(Fr SoundReq(SFX_19E); } } -END_NONMATCH void FrozenOctorok_ChangeObjPaletteOfChildren(FrozenOctorokEntity* this, u32 palette) { u32 index; From 0d2b6b8bc98f8c559f50acbc0d019bcd11b5ae90 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 7 Jan 2023 08:24:24 +0200 Subject: [PATCH 24/86] Match sub_08080278 (by Catobat) --- asm/non_matching/scroll/sub_08080278.inc | 120 ----------------------- src/scroll.c | 65 +++++++++++- 2 files changed, 63 insertions(+), 122 deletions(-) delete mode 100644 asm/non_matching/scroll/sub_08080278.inc diff --git a/asm/non_matching/scroll/sub_08080278.inc b/asm/non_matching/scroll/sub_08080278.inc deleted file mode 100644 index fb055fc3..00000000 --- a/asm/non_matching/scroll/sub_08080278.inc +++ /dev/null @@ -1,120 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - ldr r0, _08080344 @ =gUnk_02022830 - mov ip, r0 - ldr r1, _08080348 @ =gRoomControls - ldrh r0, [r1, #0x1e] - lsrs r0, r0, #4 - str r0, [sp] - ldrh r0, [r1, #0x20] - lsrs r0, r0, #4 - lsls r0, r0, #6 - str r0, [sp, #4] - movs r5, #0 - mov sl, r5 - cmp r5, r0 - bhs _08080336 - mov sb, r5 -_080802A2: - movs r1, #0 - mov r8, r1 - ldr r0, [sp] - cmp r8, r0 - bhs _08080328 - ldr r4, _0808034C @ =gMapTop+0x0004 - add r4, sb - ldr r7, _08080350 @ =gMapTop+0x3004 - add r7, sb - ldr r3, _08080354 @ =gMapBottom+0x0004 - add r3, sb - ldr r6, _08080358 @ =gMapBottom+0x3004 - add r6, sb -_080802BC: - mov r2, sl - add r2, r8 - ldrh r0, [r6] - ldrh r1, [r3] - cmp r0, r1 - beq _080802EA - ldr r0, _0808035C @ =0x00003FFF - cmp r1, r0 - bhi _080802EA - adds r0, #1 - adds r1, r0, #0 - adds r0, r2, #0 - orrs r0, r1 - mov r1, ip - strh r0, [r1] - ldrh r0, [r3] - strh r0, [r1, #2] - movs r0, #4 - add ip, r0 - adds r5, #1 - ldr r0, _08080360 @ =0x000005FF - cmp r5, r0 - bhi _08080336 -_080802EA: - ldrh r0, [r7] - ldrh r1, [r4] - cmp r0, r1 - beq _08080316 - ldr r0, _0808035C @ =0x00003FFF - cmp r1, r0 - bhi _08080316 - movs r1, #0x80 - lsls r1, r1, #8 - adds r0, r1, #0 - orrs r2, r0 - mov r0, ip - strh r2, [r0] - ldrh r0, [r4] - mov r1, ip - strh r0, [r1, #2] - movs r0, #4 - add ip, r0 - adds r5, #1 - ldr r0, _08080364 @ =0x000007FF - cmp r5, r0 - bhi _08080336 -_08080316: - adds r4, #2 - adds r7, #2 - adds r3, #2 - adds r6, #2 - movs r1, #1 - add r8, r1 - ldr r0, [sp] - cmp r8, r0 - blo _080802BC -_08080328: - movs r1, #0x80 - add sb, r1 - movs r0, #0x40 - add sl, r0 - ldr r1, [sp, #4] - cmp sl, r1 - blo _080802A2 -_08080336: - adds r0, r5, #0 - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08080344: .4byte gUnk_02022830 -_08080348: .4byte gRoomControls -_0808034C: .4byte gMapTop+0x0004 -_08080350: .4byte gMapTop+0x3004 -_08080354: .4byte gMapBottom+0x0004 -_08080358: .4byte gMapBottom+0x3004 -_0808035C: .4byte 0x00003FFF -_08080360: .4byte 0x000005FF -_08080364: .4byte 0x000007FF - .syntax divided diff --git a/src/scroll.c b/src/scroll.c index 0ae4b91c..3b70936d 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -28,7 +28,7 @@ extern void sub_0805E248(); extern u8 gUpdateVisibleTiles; extern u16 gUnk_0200B640; extern u32** gUnk_08109194[]; -extern u8 gUnk_02022830[]; +extern u32 gUnk_02022830[]; extern u16 gUnk_020246B0[]; extern u8 gUnk_080B7910[]; @@ -418,7 +418,68 @@ void sub_080801BC(RoomControls* controls) { } } -ASM_FUNC("asm/non_matching/scroll/sub_08080278.inc", u32 sub_08080278()) +u32 sub_08080278(void) { + u32 width; + u32 height; + u32 tilePos; + u16* bottomMapDataPtr; + u16* topMapDataPtr; + u32 result; + u16* bottomMapDataClonePtr; + u16* topMapDataClonePtr; + u32 indexX; + FORCE_REGISTER(u32 indexY, r10); + int iVar10; + u16* ptr1; + u32 tmp; + + ptr1 = (u16*)gUnk_02022830; + width = gRoomControls.width >> 4; + height = (gRoomControls.height >> 4) << 6; + result = 0; + indexY = 0; + if (result < height) { + iVar10 = 0; + do { + indexX = 0; + if (indexX < width) { + topMapDataPtr = (u16*)((int)gMapTop.mapData + iVar10); + topMapDataClonePtr = (u16*)((int)gMapTop.mapDataClone + iVar10); + bottomMapDataPtr = (u16*)((int)gMapBottom.mapData + iVar10); + bottomMapDataClonePtr = (u16*)((int)gMapBottom.mapDataClone + iVar10); + while (indexX < width) { + tilePos = indexY + indexX; + if ((bottomMapDataClonePtr[0] != bottomMapDataPtr[0]) && (bottomMapDataPtr[0] < 0x4000)) { + ptr1[0] = tilePos | 0x4000; + ptr1[1] = bottomMapDataPtr[0]; + ptr1 += 2; + result++; + if (result >= 0x600) { + return result; + } + } + if ((topMapDataClonePtr[0] != topMapDataPtr[0]) && (topMapDataPtr[0] < 0x4000)) { + ptr1[0] = tilePos | 0x8000; + ptr1[1] = topMapDataPtr[0]; + ptr1 += 2; + result++; + if (result >= 0x800) { + return result; + } + } + topMapDataPtr++; + topMapDataClonePtr++; + bottomMapDataPtr++; + bottomMapDataClonePtr++; + indexX++; + } + } + iVar10 += 0x80; + indexY += 0x40; + } while (indexY < height); + } + return result; +} void sub_08080368(void) { u32 tmp; From 1cb62deadddf29f7d6d5e22bf2e92cdb1b16794e Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 7 Jan 2023 20:51:24 +0100 Subject: [PATCH 25/86] Fix Kinstone constant names --- include/item.h | 4 ++-- src/gameData.c | 6 +++--- src/itemUtils.c | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/item.h b/include/item.h index 97fa95a8..20087141 100644 --- a/include/item.h +++ b/include/item.h @@ -147,9 +147,9 @@ typedef enum { ITEM_SKILL_LONG_SPIN, // these are not actually item ids but special values used by item drops for example - ITEM_KINSTONE_GREEN = 0xfc, + ITEM_KINSTONE_RED = 0xfc, ITEM_KINSTONE_BLUE, - ITEM_KINSTONE_RED, + ITEM_KINSTONE_GREEN, ITEM_ENEMY_BEETLE } Item; diff --git a/src/gameData.c b/src/gameData.c index 26462587..12407475 100644 --- a/src/gameData.c +++ b/src/gameData.c @@ -10,9 +10,9 @@ // extern const u8 gUnk_080FE1B4[]; // const u8 gUnk_080FE1B4[] = {0, 84, 85, 86, 95, 96, 93, 94, 63, 252, 253, 254, 255, 0, 0, 0,0,}; const u8 gUnk_080FE1B4[] = { - ITEM_NONE, ITEM_RUPEE1, ITEM_RUPEE5, ITEM_RUPEE20, ITEM_HEART, ITEM_FAIRY, - ITEM_BOMBS5, ITEM_ARROWS5, ITEM_SHELLS, ITEM_KINSTONE_GREEN, ITEM_KINSTONE_BLUE, ITEM_KINSTONE_RED, - ITEM_ENEMY_BEETLE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_RUPEE1, ITEM_RUPEE5, ITEM_RUPEE20, ITEM_HEART, ITEM_FAIRY, + ITEM_BOMBS5, ITEM_ARROWS5, ITEM_SHELLS, ITEM_KINSTONE_RED, ITEM_KINSTONE_BLUE, ITEM_KINSTONE_GREEN, + ITEM_ENEMY_BEETLE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, }; const u8 gUnk_080FE1C6[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 9, 10, 10, 11, 12, 13, 14, 15, 8, 15, 1, 8, diff --git a/src/itemUtils.c b/src/itemUtils.c index 97201c9c..dc53d28c 100644 --- a/src/itemUtils.c +++ b/src/itemUtils.c @@ -408,9 +408,9 @@ extern u32 sub_08000F2C(s16*, const s16*, const s16*, const s16*); u32 CreateItemDrop(Entity* arg0, u32 itemId, u32 itemParameter); u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) { extern const u8 gUnk_080FE1B4[] /* = { - ITEM_NONE, ITEM_RUPEE1, ITEM_RUPEE5, ITEM_RUPEE20, ITEM_HEART, ITEM_FAIRY, - ITEM_BOMBS5, ITEM_ARROWS5, ITEM_SHELLS, ITEM_KINSTONE_GREEN, ITEM_KINSTONE_BLUE, ITEM_KINSTONE_RED, - ITEM_ENEMY_BEETLE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_RUPEE1, ITEM_RUPEE5, ITEM_RUPEE20, ITEM_HEART, ITEM_FAIRY, + ITEM_BOMBS5, ITEM_ARROWS5, ITEM_SHELLS, ITEM_KINSTONE_RED, ITEM_KINSTONE_BLUE, ITEM_KINSTONE_GREEN, + ITEM_ENEMY_BEETLE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, }*/; int r0, r1, rand, summOdds, item; @@ -539,7 +539,7 @@ u32 CreateItemDrop(Entity* arg0, u32 itemId, u32 itemParameter) { break; } case ITEM_KINSTONE: - case ITEM_KINSTONE_GREEN ... ITEM_KINSTONE_RED: { + case ITEM_KINSTONE_RED ... ITEM_KINSTONE_GREEN: { u32 rand; if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0) { @@ -550,7 +550,7 @@ u32 CreateItemDrop(Entity* arg0, u32 itemId, u32 itemParameter) { } if (itemId != ITEM_KINSTONE) { - adjustedParam = itemId - ITEM_KINSTONE_GREEN; + adjustedParam = itemId - ITEM_KINSTONE_RED; rand = (Random() & 0x3f); adjustedParam = gUnk_080FE1DD[(rand + adjustedParam * 0x40)]; if (adjustedParam == 0) { From fba95b9ff778a83706806b15924e63862937d214 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 7 Jan 2023 21:48:05 +0100 Subject: [PATCH 26/86] Make gUnk_080FE1DD a 2D array --- src/gameData.c | 24 ++++++++++++++---------- src/itemUtils.c | 4 ++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/gameData.c b/src/gameData.c index 12407475..3009474c 100644 --- a/src/gameData.c +++ b/src/gameData.c @@ -17,17 +17,21 @@ const u8 gUnk_080FE1B4[] = { const u8 gUnk_080FE1C6[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 9, 10, 10, 11, 12, 13, 14, 15, 8, 15, 1, 8, }; -const u8 gUnk_080FE1DD[] = { - 110, 111, 112, 112, 110, 111, 111, 112, 110, 110, 112, 111, 112, 111, 110, 110, 110, 111, 112, 112, 110, 111, - 111, 112, 110, 110, 112, 111, 112, 111, 110, 111, 110, 111, 112, 112, 110, 111, 111, 112, 110, 110, 112, 111, - 112, 111, 110, 112, 110, 111, 112, 112, 110, 111, 111, 112, 110, 110, 112, 111, 112, 111, 110, 0, 113, 114, - 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, - 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, - 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 115, 116, 117, 117, - 115, 116, 116, 117, 115, 115, 117, 116, 117, 116, 115, 115, 115, 116, 117, 117, 115, 116, 116, 117, 115, 115, - 117, 116, 117, 116, 115, 116, 115, 116, 117, 117, 115, 116, 116, 117, 115, 115, 117, 116, 117, 116, 115, 117, - 115, 116, 117, 117, 115, 116, 116, 117, 115, 115, 117, 116, 117, 116, 115, 0, 0, 0, 0, +const u8 gUnk_080FE1DD[3][0x40] = { + { 0x6E, 0x6F, 0x70, 0x70, 0x6E, 0x6F, 0x6F, 0x70, 0x6E, 0x6E, 0x70, 0x6F, 0x70, 0x6F, 0x6E, 0x6E, + 0x6E, 0x6F, 0x70, 0x70, 0x6E, 0x6F, 0x6F, 0x70, 0x6E, 0x6E, 0x70, 0x6F, 0x70, 0x6F, 0x6E, 0x6F, + 0x6E, 0x6F, 0x70, 0x70, 0x6E, 0x6F, 0x6F, 0x70, 0x6E, 0x6E, 0x70, 0x6F, 0x70, 0x6F, 0x6E, 0x70, + 0x6E, 0x6F, 0x70, 0x70, 0x6E, 0x6F, 0x6F, 0x70, 0x6E, 0x6E, 0x70, 0x6F, 0x70, 0x6F, 0x6E, 0x00 }, + { 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, + 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, + 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, + 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72, 0x71, 0x72 }, + { 0x73, 0x74, 0x75, 0x75, 0x73, 0x74, 0x74, 0x75, 0x73, 0x73, 0x75, 0x74, 0x75, 0x74, 0x73, 0x73, + 0x73, 0x74, 0x75, 0x75, 0x73, 0x74, 0x74, 0x75, 0x73, 0x73, 0x75, 0x74, 0x75, 0x74, 0x73, 0x74, + 0x73, 0x74, 0x75, 0x75, 0x73, 0x74, 0x74, 0x75, 0x73, 0x73, 0x75, 0x74, 0x75, 0x74, 0x73, 0x75, + 0x73, 0x74, 0x75, 0x75, 0x73, 0x74, 0x74, 0x75, 0x73, 0x73, 0x75, 0x74, 0x75, 0x74, 0x73, 0x00 }, }; +const u8 gPadding[3] = { 0, 0, 0 }; void Subtask_WorldEvent_Init(void); void Subtask_WorldEvent_Update(void); diff --git a/src/itemUtils.c b/src/itemUtils.c index dc53d28c..57857c4f 100644 --- a/src/itemUtils.c +++ b/src/itemUtils.c @@ -508,7 +508,7 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) { return ITEM_NONE; } -extern u8 gUnk_080FE1DD[]; +extern u8 gUnk_080FE1DD[3][0x40]; u32 CreateItemDrop(Entity* arg0, u32 itemId, u32 itemParameter) { u32 adjustedParam = itemParameter; Entity* itemEntity; @@ -552,7 +552,7 @@ u32 CreateItemDrop(Entity* arg0, u32 itemId, u32 itemParameter) { if (itemId != ITEM_KINSTONE) { adjustedParam = itemId - ITEM_KINSTONE_RED; rand = (Random() & 0x3f); - adjustedParam = gUnk_080FE1DD[(rand + adjustedParam * 0x40)]; + adjustedParam = gUnk_080FE1DD[adjustedParam][rand]; if (adjustedParam == 0) { itemId = ITEM_NONE; } else { From fbdd0078cd92dc914fe29ea6ac71778ca814bbcc Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 7 Jan 2023 22:54:36 +0100 Subject: [PATCH 27/86] Give unk141 and unk1C1 in SaveFile names --- include/save.h | 4 ++-- src/common.c | 16 ++++++++-------- src/npc/cucco.c | 2 +- src/npc/din.c | 2 +- src/npc/farore.c | 2 +- src/npc/nayru.c | 2 +- src/npc/tingleSiblings.c | 2 +- src/npcUtils.c | 2 +- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/include/save.h b/include/save.h index 5fe9c04b..4d5e6d06 100644 --- a/include/save.h +++ b/include/save.h @@ -60,8 +60,8 @@ typedef struct { /*0x117*/ u8 fusedKinstoneCount; /*0x118*/ u8 unk118[0x13]; // TODO also related to kinstones /*0x12B*/ u8 unk12B[0x16]; // TODO also related to kinstones - /*0x141*/ u8 unk141[128]; // TODO sub_08064F28 and also the goddesses, indexed by sub_08002632 - /*0x1C1*/ u8 unk1C1[128]; // TODO also related to kinstones, see sub_0801E6C8 0x80 available kinstone fusions? + /*0x141*/ u8 fuserProgress[128]; // indexed by fuser id, incremented after fusion + /*0x1C1*/ u8 fuserOffers[128]; // available kinstone fusion for each fuser /*0x241*/ u8 fusedKinstones[13]; /**< Bitfield for fused kinstones. @see CheckKinstoneFused */ /*0x24E*/ u8 unk24E[14]; // TODO something else with kinstones @see sub_0801E810 /*0x25C*/ u8 flags[0x200]; /**< Flags. */ diff --git a/src/common.c b/src/common.c index 909dd944..f92ea874 100644 --- a/src/common.c +++ b/src/common.c @@ -751,13 +751,13 @@ void sub_0801E6C8(u32 kinstoneId) { u32 index; if (kinstoneId - 1 < 100) { for (index = 0; index < 0x80; index++) { - if (kinstoneId == gSave.unk1C1[index]) { - gSave.unk1C1[index] = 0xf1; + if (kinstoneId == gSave.fuserOffers[index]) { + gSave.fuserOffers[index] = 0xf1; } } tmp = sub_08002632(gFuseInfo.ent); - if ((tmp - 1 < 0x7f) && (gSave.unk1C1[tmp] == 0xf1)) { - gSave.unk1C1[tmp] = 0xf2; + if ((tmp - 1 < 0x7f) && (gSave.fuserOffers[tmp] == 0xf1)) { + gSave.fuserOffers[tmp] = 0xf2; } for (index = 0; index < 0x20; index++) { if (kinstoneId == gUnk_03003DF0.array[index].unk_3) { @@ -982,8 +982,8 @@ u32 sub_0801E99C(Entity* entity) { if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0 || fuserData[0] > gSave.global_progress) { return 0; } - offeredFusion = gSave.unk1C1[fuserId]; - fuserProgress = gSave.unk141[fuserId]; + offeredFusion = gSave.fuserOffers[fuserId]; + fuserProgress = gSave.fuserProgress[fuserId]; fuserFusionData = (u8*)(fuserProgress + (u32)fuserData); while (TRUE) { // loop through fusions for this fuser switch (offeredFusion) { @@ -1013,8 +1013,8 @@ u32 sub_0801E99C(Entity* entity) { } offeredFusion = 0xF1; // already completed, try next fusion in the list } - gSave.unk1C1[fuserId] = offeredFusion; - gSave.unk141[fuserId] = fuserProgress; + gSave.fuserOffers[fuserId] = offeredFusion; + gSave.fuserProgress[fuserId] = fuserProgress; randomMood = Random(); fuserStability = fuserData[1]; if (fuserStability <= randomMood % 100) { diff --git a/src/npc/cucco.c b/src/npc/cucco.c index c79084a8..9944978e 100644 --- a/src/npc/cucco.c +++ b/src/npc/cucco.c @@ -113,7 +113,7 @@ void sub_0806E65C(Entity* this) { void Cucco_ShowMessage(Entity* this) { u32 val = 0; u32 index = sub_08002632(this); - if (gSave.unk1C1[index] == 0xf3) { + if (gSave.fuserOffers[index] == 0xf3) { val = 1; } diff --git a/src/npc/din.c b/src/npc/din.c index 894edab4..19f23540 100644 --- a/src/npc/din.c +++ b/src/npc/din.c @@ -31,7 +31,7 @@ void Din(Entity* this) { void sub_08064828(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { + if ((gSave.fuserProgress[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/farore.c b/src/npc/farore.c index 32f6e6ee..cbd09a5a 100644 --- a/src/npc/farore.c +++ b/src/npc/farore.c @@ -31,7 +31,7 @@ void Farore(Entity* this) { void sub_08064A28(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { + if ((gSave.fuserProgress[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/nayru.c b/src/npc/nayru.c index 262b251c..23ab5de6 100644 --- a/src/npc/nayru.c +++ b/src/npc/nayru.c @@ -31,7 +31,7 @@ void Nayru(Entity* this) { void sub_08064928(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { + if ((gSave.fuserProgress[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c index 7ca9c778..36819425 100644 --- a/src/npc/tingleSiblings.c +++ b/src/npc/tingleSiblings.c @@ -134,7 +134,7 @@ void sub_08064F28(Entity* this, ScriptExecutionContext* context) { context->condition = 0; roomFlag = gUnk_0810FC50[this->type]; if (CheckRoomFlag(roomFlag) == 0) { - bVar2 = gSave.unk141[sub_08002632(this)]; + bVar2 = gSave.fuserProgress[sub_08002632(this)]; if (bVar2 >= 2) { uVar5 = 3; } else { diff --git a/src/npcUtils.c b/src/npcUtils.c index 190c9338..c66537f3 100644 --- a/src/npcUtils.c +++ b/src/npcUtils.c @@ -355,7 +355,7 @@ u32 UpdateFuseInteraction(Entity* ent) { void sub_0806F188(Entity* ent) { u32 idx = sub_08002632(ent); if (idx != 0) - gSave.unk1C1[idx] = 0xF3; + gSave.fuserOffers[idx] = 0xF3; } void ShowNPCDialogue(Entity* ent, const Dialog* dia) { From c8d37f73c87f29e2aba1c5970d5f8ee38d8617d2 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 7 Jan 2023 23:19:07 +0100 Subject: [PATCH 28/86] Give unk118 and unk12B in SaveFile names --- include/save.h | 5 +++-- src/common.c | 34 +++++++++++++++++----------------- src/menu/kinstoneMenu.c | 8 ++++---- src/menu/pauseMenu.c | 8 ++++---- src/playerUtils.c | 2 +- 5 files changed, 29 insertions(+), 28 deletions(-) diff --git a/include/save.h b/include/save.h index 4d5e6d06..ef5ec931 100644 --- a/include/save.h +++ b/include/save.h @@ -58,8 +58,9 @@ typedef struct { /*0x0F2*/ u8 inventory[36]; /*0x116*/ u8 didAllFusions; /*0x117*/ u8 fusedKinstoneCount; - /*0x118*/ u8 unk118[0x13]; // TODO also related to kinstones - /*0x12B*/ u8 unk12B[0x16]; // TODO also related to kinstones + /*0x118*/ u8 kinstoneTypes[0x13]; // 0x65-0x75 for each kinstone type present in kinstone bag + /*0x12B*/ u8 kinstoneAmounts[0x13]; // amount of each kinstone type above + /*0x13E*/ u8 filler13E[3]; /*0x141*/ u8 fuserProgress[128]; // indexed by fuser id, incremented after fusion /*0x1C1*/ u8 fuserOffers[128]; // available kinstone fusion for each fuser /*0x241*/ u8 fusedKinstones[13]; /**< Bitfield for fused kinstones. @see CheckKinstoneFused */ diff --git a/src/common.c b/src/common.c index f92ea874..8a2e3058 100644 --- a/src/common.c +++ b/src/common.c @@ -776,17 +776,17 @@ void sub_0801E738(u32 param_1) { index = sub_0801E8B0(param_1); if (index < 0) { index = 0; - while (gSave.unk118[index] != 0) { + while (gSave.kinstoneTypes[index] != 0) { index++; } } if ((u32)index < 0x12) { - gSave.unk118[index] = param_1; - tmp = gSave.unk12B[index] + 1; + gSave.kinstoneTypes[index] = param_1; + tmp = gSave.kinstoneAmounts[index] + 1; if (tmp > 99) { tmp = 99; } - gSave.unk12B[index] = tmp; + gSave.kinstoneAmounts[index] = tmp; } } } @@ -794,12 +794,12 @@ void sub_0801E738(u32 param_1) { void sub_0801E798(u32 a1) { s32 idx = sub_0801E8B0(a1); if (idx >= 0) { - s32 next = gSave.unk12B[idx] - 1; + s32 next = gSave.kinstoneAmounts[idx] - 1; if (next <= 0) { - gSave.unk118[idx] = 0; + gSave.kinstoneTypes[idx] = 0; next = 0; } - gSave.unk12B[idx] = next; + gSave.kinstoneAmounts[idx] = next; } } @@ -808,7 +808,7 @@ u32 sub_0801E7D0(u32 a1) { if (tmp < 0) { return 0; } - return gSave.unk12B[tmp]; + return gSave.kinstoneAmounts[tmp]; } u32 CheckKinstoneFused(u32 kinstoneId) { @@ -830,18 +830,18 @@ void sub_0801E82C(void) { u32 r5; for (r5 = 0; r5 < 0x13; r5++) { - if (gSave.unk12B[r5] == 0) { - gSave.unk118[r5] = gSave.unk12B[r5]; + if (gSave.kinstoneAmounts[r5] == 0) { + gSave.kinstoneTypes[r5] = gSave.kinstoneAmounts[r5]; } } - gSave.unk118[0x12] = 0; - gSave.unk12B[0x12] = 0; + gSave.kinstoneTypes[0x12] = 0; + gSave.kinstoneAmounts[0x12] = 0; for (r5 = 0; r5 < 0x12; r5++) { - if ((gSave.unk118[r5] - 0x65) > 0x10) { - MemCopy(&gSave.unk118[r5 + 1], &gSave.unk118[r5], 0x12 - r5); - MemCopy(&gSave.unk12B[r5 + 1], &gSave.unk12B[r5], 0x12 - r5); + if ((gSave.kinstoneTypes[r5] - 0x65) > 0x10) { + MemCopy(&gSave.kinstoneTypes[r5 + 1], &gSave.kinstoneTypes[r5], 0x12 - r5); + MemCopy(&gSave.kinstoneAmounts[r5 + 1], &gSave.kinstoneAmounts[r5], 0x12 - r5); } } #else @@ -852,7 +852,7 @@ void sub_0801E82C(void) { new_var = 4; r1 = &gSave.inventory[34]; r5 = 0; - r2 = gSave.unk118; + r2 = gSave.kinstoneTypes; code0_0: r0 = r2[0x13]; r3 = &r1[4]; @@ -893,7 +893,7 @@ s32 sub_0801E8B0(u32 idx) { u32 i; for (i = 0; i < 18; ++i) { - if (idx == gSave.unk118[i]) + if (idx == gSave.kinstoneTypes[i]) return i; } return -1; diff --git a/src/menu/kinstoneMenu.c b/src/menu/kinstoneMenu.c index e9aaad8e..11673e00 100644 --- a/src/menu/kinstoneMenu.c +++ b/src/menu/kinstoneMenu.c @@ -86,7 +86,7 @@ const ScreenTransitionData gUnk_08128024[] = { u32 sub_080A3B48(void) { u32 index; for (index = 0; index <= 0x12; index++) { - if (gSave.unk12B[index] == 0) { + if (gSave.kinstoneAmounts[index] == 0) { break; } } @@ -206,7 +206,7 @@ void KinstoneMenu_Type1(void) { case A_BUTTON: if (gMenu.column_idx == 2) { tmp3 = gGenericMenu.unk10.i / 0x10000; - gGenericMenu.unk2a = gSave.unk118[tmp3]; + gGenericMenu.unk2a = gSave.kinstoneTypes[tmp3]; SetMenuType(3); } break; @@ -448,7 +448,7 @@ NONMATCH("asm/non_matching/menu/kinstone_menu/KinstoneMenu_080A414C.inc", void K gOamCmd.x = ((gSineTable[(uVar1 + 0x40) & 0xff] * 0x42) / 0x100) - 0x10; iVar2 = gKinstoneMenu.unk10.WORD / 0x10000 + i; if (iVar2 >= 0) { - uVar3 = gSave.unk12B[iVar2]; + uVar3 = gSave.kinstoneAmounts[iVar2]; if (i == 0) { switch (gMenu.column_idx) { case 3: @@ -460,7 +460,7 @@ NONMATCH("asm/non_matching/menu/kinstone_menu/KinstoneMenu_080A414C.inc", void K } } if (0 < uVar3) { - sub_080A42E0(gSave.unk118[iVar2], uVar3); + sub_080A42E0(gSave.kinstoneTypes[iVar2], uVar3); } } } diff --git a/src/menu/pauseMenu.c b/src/menu/pauseMenu.c index 63f22f28..cb76bee0 100644 --- a/src/menu/pauseMenu.c +++ b/src/menu/pauseMenu.c @@ -665,7 +665,7 @@ void sub_080A5594(void) { iVar5 = 0; if (GetInventoryValue(ITEM_KINSTONE_BAG) != 0) { for (i = 0; i < 0x13; i++) { - iVar5 += gSave.unk12B[i]; + iVar5 += gSave.kinstoneAmounts[i]; } if (iVar5 >= 0x50) { @@ -1299,11 +1299,11 @@ void sub_080A6044(void) { gOamCmd._6 = 0; uVar4 = 0; uVar2 = 0; - uVar1 = gSave.unk118[0]; + uVar1 = gSave.kinstoneTypes[0]; while (uVar1 != 0) { gOamCmd.x = (uVar4 & 3) * 0x30 + 0x2b; gOamCmd.y = (uVar4 >> 2) * 0x24 + 0x34; - uVar3 = gSave.unk12B[uVar2]; + uVar3 = gSave.kinstoneAmounts[uVar2]; gMenu.column_idx = 0; sub_080A42E0(uVar1, uVar3); uVar4++; @@ -1314,7 +1314,7 @@ void sub_080A6044(void) { if (0x11 < uVar2) { return; } - uVar1 = gSave.unk118[uVar2]; + uVar1 = gSave.kinstoneTypes[uVar2]; } } } diff --git a/src/playerUtils.c b/src/playerUtils.c index 5b71aebe..47ed9c10 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1090,7 +1090,7 @@ bool32 sub_080782C0(void) { } if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && ((u8)(gUnk_03003DF0.unk_4[3] - 1) < 100)) { sub_0801E738(0); - if (gSave.unk12B[0] != 0) { + if (gSave.kinstoneAmounts[0] != 0) { gUnk_03003DF0.unk_2 = gUnk_03003DF0.unk_4[3]; *(u8*)(*(int*)(gUnk_03003DF0.unk_4 + 8) + 0x39) = 2; gPlayerState.queued_action = PLAYER_08070E9C; From 1d2d1cd786915571c93f4ac2426729584550f8f9 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 8 Jan 2023 00:13:19 +0100 Subject: [PATCH 29/86] Name some functions in common.c --- include/common.h | 2 +- src/common.c | 34 +++++++++++++++++----------------- src/itemUtils.c | 4 ++-- src/menu/kinstoneMenu.c | 6 +++--- src/menu/pauseMenu.c | 2 +- src/npc/goronMerchant.c | 4 ++-- src/playerUtils.c | 2 +- 7 files changed, 27 insertions(+), 27 deletions(-) diff --git a/include/common.h b/include/common.h index 4fcf2be6..ff4e027a 100644 --- a/include/common.h +++ b/include/common.h @@ -119,7 +119,7 @@ u32 CheckKinstoneFused(u32); void sub_0801E1EC(u32, u32, u32); void sub_0801DD58(u32, u32); void sub_0801E1B8(u32, u32); -void sub_0801E738(u32); +void AddKinstoneToBag(u32); void sub_0801DFB4(struct Entity_*, u32, u32, u32); u32 sub_0801E00C(void); bool32 sub_0801E810(u32); diff --git a/src/common.c b/src/common.c index 8a2e3058..45a413e1 100644 --- a/src/common.c +++ b/src/common.c @@ -36,7 +36,7 @@ void ResetScreenRegs(void); void MessageFromFusionTarget(u32); void sub_0801E24C(s32, s32); void sub_0801E290(u32, u32, u32); -s32 sub_0801E8B0(u32); +s32 GetIndexInKinstoneBag(u32); extern u32 sub_0807CB24(u32, u32); @@ -71,7 +71,7 @@ extern const GfxItem* gGfxGroups[]; extern const u32 gUnk_080C9460[]; -void sub_0801E82C(void); +void SortKinstoneBag(void); extern void* GetRoomProperty(u32, u32, u32); @@ -767,13 +767,13 @@ void sub_0801E6C8(u32 kinstoneId) { } } -void sub_0801E738(u32 param_1) { +void AddKinstoneToBag(u32 kinstoneId) { s32 index; s32 tmp; - sub_0801E82C(); - if (param_1 - 0x65 < 0x11) { - index = sub_0801E8B0(param_1); + SortKinstoneBag(); // sometimes called just for this function + if (kinstoneId - 0x65 < 0x11) { + index = GetIndexInKinstoneBag(kinstoneId); if (index < 0) { index = 0; while (gSave.kinstoneTypes[index] != 0) { @@ -781,7 +781,7 @@ void sub_0801E738(u32 param_1) { } } if ((u32)index < 0x12) { - gSave.kinstoneTypes[index] = param_1; + gSave.kinstoneTypes[index] = kinstoneId; tmp = gSave.kinstoneAmounts[index] + 1; if (tmp > 99) { tmp = 99; @@ -791,8 +791,8 @@ void sub_0801E738(u32 param_1) { } } -void sub_0801E798(u32 a1) { - s32 idx = sub_0801E8B0(a1); +void RemoveKinstoneFromBag(u32 kinstoneId) { + s32 idx = GetIndexInKinstoneBag(kinstoneId); if (idx >= 0) { s32 next = gSave.kinstoneAmounts[idx] - 1; if (next <= 0) { @@ -803,12 +803,12 @@ void sub_0801E798(u32 a1) { } } -u32 sub_0801E7D0(u32 a1) { - s32 tmp = sub_0801E8B0(a1); - if (tmp < 0) { +u32 GetAmountInKinstoneBag(u32 kinstoneId) { + s32 index = GetIndexInKinstoneBag(kinstoneId); + if (index < 0) { return 0; } - return gSave.kinstoneAmounts[tmp]; + return gSave.kinstoneAmounts[index]; } u32 CheckKinstoneFused(u32 kinstoneId) { @@ -825,7 +825,7 @@ bool32 sub_0801E810(u32 kinstoneId) { return ReadBit(&gSave.unk24E, kinstoneId); } -void sub_0801E82C(void) { +void SortKinstoneBag(void) { #ifdef NON_MATCHING u32 r5; @@ -889,11 +889,11 @@ code0_2: #endif } -s32 sub_0801E8B0(u32 idx) { +s32 GetIndexInKinstoneBag(u32 kinstoneId) { u32 i; - for (i = 0; i < 18; ++i) { - if (idx == gSave.kinstoneTypes[i]) + for (i = 0; i < 0x12; ++i) { + if (kinstoneId == gSave.kinstoneTypes[i]) return i; } return -1; diff --git a/src/itemUtils.c b/src/itemUtils.c index 57857c4f..72cd7608 100644 --- a/src/itemUtils.c +++ b/src/itemUtils.c @@ -114,7 +114,7 @@ u32 GiveItem(Item item, u32 param_2) { gSave.dungeonItems[gArea.dungeon_idx] |= metaData->unk2; break; case 0xd: - sub_0801E738(0x72); + AddKinstoneToBag(0x72); break; case 0x12: if (item == ITEM_BOOMERANG) { @@ -174,7 +174,7 @@ u32 GiveItem(Item item, u32 param_2) { SoundReq(SFX_103); break; case 0x0f: - sub_0801E738(param_2); + AddKinstoneToBag(param_2); break; case 0x10: gSave.stats.walletType++; diff --git a/src/menu/kinstoneMenu.c b/src/menu/kinstoneMenu.c index 11673e00..e30c3adf 100644 --- a/src/menu/kinstoneMenu.c +++ b/src/menu/kinstoneMenu.c @@ -28,7 +28,7 @@ extern void sub_080A3B74(void); extern u32 sub_080A3B48(void); extern void sub_0805ECEC(u32, u32, u32, u32); extern void sub_0801E6C8(u32); -extern void sub_0801E798(u32); +extern void RemoveKinstoneFromBag(u32); extern WStruct* sub_0805F2C8(void); extern void sub_0805F300(WStruct*); extern u32 sub_0805F76C(u8*, WStruct*); @@ -151,7 +151,7 @@ void KinstoneMenu_Type0(void) { gScreen.bg3.updated = 1; KinstoneMenu_080A4528(); sub_080A4398(); - sub_0801E738(0); + AddKinstoneToBag(0); sub_080A70AC((void*)gUnk_081280DC); SetMenuType(1); SetFade(FADE_BLACK_WHITE | FADE_INSTANT, 8); @@ -609,7 +609,7 @@ void KinstoneMenu_080A4468(void) { gUnk_03003DF0.unk_2 = 0; gUnk_03003DF0.unk_4[3] = 0; sub_0801E6C8(gFuseInfo.kinstoneId); - sub_0801E798(gKinstoneMenu.unk2a); + RemoveKinstoneFromBag(gKinstoneMenu.unk2a); } u32 KinstoneMenu_080A4494(void) { diff --git a/src/menu/pauseMenu.c b/src/menu/pauseMenu.c index cb76bee0..3af4f5eb 100644 --- a/src/menu/pauseMenu.c +++ b/src/menu/pauseMenu.c @@ -1281,7 +1281,7 @@ void PauseMenu_Screen_7(void) { void sub_080A6024(void) { sub_080A70AC((KeyButtonLayout*)&gUnk_08128D60); - sub_0801E738(0); + AddKinstoneToBag(0); sub_080A4398(); SetMenuType(1); } diff --git a/src/npc/goronMerchant.c b/src/npc/goronMerchant.c index 37f9ef3f..f3f9b323 100644 --- a/src/npc/goronMerchant.c +++ b/src/npc/goronMerchant.c @@ -13,7 +13,7 @@ extern void (*const gUnk_08111B98[])(Entity*); static const u16 sKinstonePrices[]; -extern u32 sub_0801E7D0(u32); +extern u32 GetAmountInKinstoneBag(u32); void GoronMerchant(Entity* this) { if ((this->flags & ENT_SCRIPTED) != 0) { @@ -132,7 +132,7 @@ static u32 GoronMerchant_GetSalePrice(Entity* this) { void GoronMerchant_TryToBuyKinstone(Entity* this, ScriptExecutionContext* context) { s32 salePrice = GoronMerchant_GetSalePrice(this); if (salePrice <= gSave.stats.rupees) { - if (sub_0801E7D0(gRoomVars.shopItemType2) < 99) { + if (GetAmountInKinstoneBag(gRoomVars.shopItemType2) < 99) { ModRupees(-salePrice); InitItemGetSequence(0x5c, gRoomVars.shopItemType2, 0); gRoomVars.shopItemType = 0; diff --git a/src/playerUtils.c b/src/playerUtils.c index 47ed9c10..30d37295 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1089,7 +1089,7 @@ bool32 sub_080782C0(void) { } } if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && ((u8)(gUnk_03003DF0.unk_4[3] - 1) < 100)) { - sub_0801E738(0); + AddKinstoneToBag(0); if (gSave.kinstoneAmounts[0] != 0) { gUnk_03003DF0.unk_2 = gUnk_03003DF0.unk_4[3]; *(u8*)(*(int*)(gUnk_03003DF0.unk_4 + 8) + 0x39) = 2; From 4ab73f8eb752722a682d5a610e2e8d2836e4bf38 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 8 Jan 2023 15:01:18 +0100 Subject: [PATCH 30/86] Name some more functions in common.c --- asm/src/code_08001A7C.s | 4 ++-- include/asm.h | 2 +- include/common.h | 4 ++-- include/save.h | 3 ++- src/common.c | 25 ++++++++++++------------- src/menu/kinstoneMenu.c | 8 ++++---- src/menu/pauseMenuScreen6.c | 2 +- src/npc/cucco.c | 2 +- src/npc/din.c | 2 +- src/npc/farore.c | 2 +- src/npc/hurdyGurdyMan.c | 2 +- src/npc/nayru.c | 2 +- src/npc/percy.c | 2 +- src/npc/tingleSiblings.c | 2 +- src/npcUtils.c | 4 ++-- src/object/object37.c | 4 ++-- src/script.c | 2 +- 17 files changed, 36 insertions(+), 36 deletions(-) diff --git a/asm/src/code_08001A7C.s b/asm/src/code_08001A7C.s index f857963e..a3b5224d 100644 --- a/asm/src/code_08001A7C.s +++ b/asm/src/code_08001A7C.s @@ -792,8 +792,8 @@ gUnk_0800232E:: @ 0800232E gUnk_08002342:: @ 08002342 .incbin "code_080011C4/gUnk_08002342.bin" - non_word_aligned_thumb_func_start sub_08002632 -sub_08002632: @ 0x08002632 + non_word_aligned_thumb_func_start GetFuserId +GetFuserId: @ 0x08002632 push {r4, r5, r6, r7, lr} ldr r4, _0800269C @ =gUnk_0800232E ldrb r3, [r0, #8] diff --git a/include/asm.h b/include/asm.h index 837cebca..1f15a0ea 100644 --- a/include/asm.h +++ b/include/asm.h @@ -17,7 +17,7 @@ extern void LoadResourceAsync(const void*, u32, u32); extern void GenericConfused(struct Entity_*); extern void sub_08001290(struct Entity_*, u32); extern void GenericKnockback(struct Entity_*); -extern u32 sub_08002632(struct Entity_*); +extern u32 GetFuserId(struct Entity_*); extern u32 CheckPlayerInRegion(u32 centerX, u32 centerY, u32 radiusX, u32 radiusY); extern u32 GravityUpdate(struct Entity_*, u32); extern u32 CheckOnScreen(struct Entity_*); diff --git a/include/common.h b/include/common.h index ff4e027a..011e5a8a 100644 --- a/include/common.h +++ b/include/common.h @@ -122,9 +122,9 @@ void sub_0801E1B8(u32, u32); void AddKinstoneToBag(u32); void sub_0801DFB4(struct Entity_*, u32, u32, u32); u32 sub_0801E00C(void); -bool32 sub_0801E810(u32); +bool32 CheckFusionMapMarkerDisabled(u32); u32 sub_0801DB94(void); -u32 sub_0801EA74(u8*); +u32 GetRandomSharedFusion(u8*); typedef struct { u8 unk_0; diff --git a/include/save.h b/include/save.h index ef5ec931..5193e692 100644 --- a/include/save.h +++ b/include/save.h @@ -64,7 +64,8 @@ typedef struct { /*0x141*/ u8 fuserProgress[128]; // indexed by fuser id, incremented after fusion /*0x1C1*/ u8 fuserOffers[128]; // available kinstone fusion for each fuser /*0x241*/ u8 fusedKinstones[13]; /**< Bitfield for fused kinstones. @see CheckKinstoneFused */ - /*0x24E*/ u8 unk24E[14]; // TODO something else with kinstones @see sub_0801E810 + /*0x24E*/ u8 fusionUnmarked[13]; /**< Bitfield for disabled fusion map markers. @see CheckFusionMapMarkerDisabled */ + /*0x25B*/ u8 filler25B; /*0x25C*/ u8 flags[0x200]; /**< Flags. */ /*0x45C*/ u8 dungeonKeys[0x10]; // TODO Indexed by dungeon id, keys per dungeon /*0x46C*/ u8 dungeonItems[0x10]; // TODO items in the dungeon. 4: compass, 2: big key, 1: small key diff --git a/src/common.c b/src/common.c index 45a413e1..a205833b 100644 --- a/src/common.c +++ b/src/common.c @@ -746,7 +746,7 @@ void sub_0801E64C(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_ } } -void sub_0801E6C8(u32 kinstoneId) { +void NotifyFusersOnFusionDone(u32 kinstoneId) { u32 tmp; u32 index; if (kinstoneId - 1 < 100) { @@ -755,7 +755,7 @@ void sub_0801E6C8(u32 kinstoneId) { gSave.fuserOffers[index] = 0xf1; } } - tmp = sub_08002632(gFuseInfo.ent); + tmp = GetFuserId(gFuseInfo.ent); if ((tmp - 1 < 0x7f) && (gSave.fuserOffers[tmp] == 0xf1)) { gSave.fuserOffers[tmp] = 0xf2; } @@ -818,11 +818,11 @@ u32 CheckKinstoneFused(u32 kinstoneId) { return ReadBit(&gSave.fusedKinstones, kinstoneId); } -bool32 sub_0801E810(u32 kinstoneId) { +bool32 CheckFusionMapMarkerDisabled(u32 kinstoneId) { if (kinstoneId > 100 || kinstoneId < 1) { return FALSE; } - return ReadBit(&gSave.unk24E, kinstoneId); + return ReadBit(&gSave.fusionUnmarked, kinstoneId); } void SortKinstoneBag(void) { @@ -903,7 +903,7 @@ s32 GetIndexInKinstoneBag(u32 kinstoneId) { void sub_0801E8D4(void) { u32 kinstoneId; for (kinstoneId = 10; kinstoneId <= 100; ++kinstoneId) { - if (CheckKinstoneFused(kinstoneId) && !sub_0801E810(kinstoneId)) { + if (CheckKinstoneFused(kinstoneId) && !CheckFusionMapMarkerDisabled(kinstoneId)) { u32 worldEventId = gKinstoneWorldEvents[kinstoneId].worldEventId; const WorldEvent* s = &gWorldEvents[worldEventId]; #if !defined EU && !defined JP @@ -961,7 +961,7 @@ void sub_0801E8D4(void) { #else if (sub_0807CB24(tmp, s->flag)) { #endif - WriteBit(&gSave.unk24E, kinstoneId); + WriteBit(&gSave.fusionUnmarked, kinstoneId); } } } @@ -977,7 +977,7 @@ u32 sub_0801E99C(Entity* entity) { u8* fuserFusionData; s32 randomMood; u32 fuserStability; - fuserId = sub_08002632(entity); + fuserId = GetFuserId(entity); fuserData = gUnk_08001DCC[fuserId]; if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0 || fuserData[0] > gSave.global_progress) { return 0; @@ -999,7 +999,7 @@ u32 sub_0801E99C(Entity* entity) { offeredFusion = fuserFusionData[5]; } if (offeredFusion == 0xFF) { // random shared fusion - offeredFusion = sub_0801EA74(fuserData); + offeredFusion = GetRandomSharedFusion(fuserData); } if (offeredFusion == 0x00) { // end of fusion list offeredFusion = 0xF3; // mark this fuser as done @@ -1187,17 +1187,16 @@ const u32 gUnk_080CA06C[] = { 139808, 139808, 140320, 140832, 141344, 141856, 14 150560, 151584, 152608, 153632, 154656, 155680, 156704, 157728, 158752, 159776, 160800 }; #endif -// TODO maybe KinstoneFlag? -const u8 gUnk_080CA11C[] = { - 24, 45, 53, 54, 55, 57, 60, 68, 70, 71, 78, 80, 83, 85, 86, 88, 95, 96, 0, 0, +const u8 SharedFusions[] = { + 0x18, 0x2D, 0x35, 0x36, 0x37, 0x39, 0x3C, 0x44, 0x46, 0x47, 0x4E, 0x50, 0x53, 0x55, 0x56, 0x58, 0x5F, 0x60, 0, 0, }; // Get a random kinstone -u32 sub_0801EA74(u8* fuserData) { +u32 GetRandomSharedFusion(u8* fuserData) { s32 r = (s32)Random() % 18; u32 i; for (i = 0; i < 18; ++i) { - u32 kinstoneId = gUnk_080CA11C[r]; + u32 kinstoneId = SharedFusions[r]; if (!CheckKinstoneFused(kinstoneId)) return kinstoneId; r = (r + 1) % 18; diff --git a/src/menu/kinstoneMenu.c b/src/menu/kinstoneMenu.c index e30c3adf..d81e9573 100644 --- a/src/menu/kinstoneMenu.c +++ b/src/menu/kinstoneMenu.c @@ -27,7 +27,7 @@ extern u32 sub_08000E44(u32); extern void sub_080A3B74(void); extern u32 sub_080A3B48(void); extern void sub_0805ECEC(u32, u32, u32, u32); -extern void sub_0801E6C8(u32); +extern void NotifyFusersOnFusionDone(u32); extern void RemoveKinstoneFromBag(u32); extern WStruct* sub_0805F2C8(void); extern void sub_0805F300(WStruct*); @@ -608,7 +608,7 @@ u32 sub_080A4418(u32 param_1, u32 param_2) { void KinstoneMenu_080A4468(void) { gUnk_03003DF0.unk_2 = 0; gUnk_03003DF0.unk_4[3] = 0; - sub_0801E6C8(gFuseInfo.kinstoneId); + NotifyFusersOnFusionDone(gFuseInfo.kinstoneId); RemoveKinstoneFromBag(gKinstoneMenu.unk2a); } @@ -625,9 +625,9 @@ u32 KinstoneMenu_080A4494(void) { psVar1->unk1 = 0; sub_080A44E0(psVar1, gSave.name, 0x80); #if NON_MATCHING - ret = sub_080A44E0(psVar1, sub_08002632(gFuseInfo.ent) >> 0x20, 0xa0); + ret = sub_080A44E0(psVar1, GetFuserId(gFuseInfo.ent) >> 0x20, 0xa0); #else - sub_08002632(gFuseInfo.ent); + GetFuserId(gFuseInfo.ent); asm("" : "=r"(r1)); ret = sub_080A44E0(psVar1, r1, 0xa0); #endif diff --git a/src/menu/pauseMenuScreen6.c b/src/menu/pauseMenuScreen6.c index 4bfcd17a..a7fa969c 100644 --- a/src/menu/pauseMenuScreen6.c +++ b/src/menu/pauseMenuScreen6.c @@ -205,7 +205,7 @@ void sub_080A68D4(void) { } for (i = 10; i <= 100; i++) { - if (CheckKinstoneFused(i) && !sub_0801E810(i)) { + if (CheckKinstoneFused(i) && !CheckFusionMapMarkerDisabled(i)) { uVar4 = gKinstoneWorldEvents[i].unk7; ptr = &gWorldEvents[gKinstoneWorldEvents[i].worldEventId]; sub_080A698C(ptr->_c, ptr->_e, DRAW_DIRECT_SPRITE_INDEX, uVar4 + 100); diff --git a/src/npc/cucco.c b/src/npc/cucco.c index 9944978e..de157e63 100644 --- a/src/npc/cucco.c +++ b/src/npc/cucco.c @@ -112,7 +112,7 @@ void sub_0806E65C(Entity* this) { void Cucco_ShowMessage(Entity* this) { u32 val = 0; - u32 index = sub_08002632(this); + u32 index = GetFuserId(this); if (gSave.fuserOffers[index] == 0xf3) { val = 1; } diff --git a/src/npc/din.c b/src/npc/din.c index 19f23540..ab9d6940 100644 --- a/src/npc/din.c +++ b/src/npc/din.c @@ -31,7 +31,7 @@ void Din(Entity* this) { void sub_08064828(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.fuserProgress[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { + if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/farore.c b/src/npc/farore.c index cbd09a5a..f45aeb17 100644 --- a/src/npc/farore.c +++ b/src/npc/farore.c @@ -31,7 +31,7 @@ void Farore(Entity* this) { void sub_08064A28(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.fuserProgress[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { + if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/hurdyGurdyMan.c b/src/npc/hurdyGurdyMan.c index 4decaced..04c91d9d 100644 --- a/src/npc/hurdyGurdyMan.c +++ b/src/npc/hurdyGurdyMan.c @@ -26,7 +26,7 @@ void HurdyGurdyMan(Entity* this) { this->interactType = 0; this->field_0x68.HALF.HI = this->animIndex; InitializeAnimation(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); - index = sub_08002632(this); + index = GetFuserId(this); pointerToArray = gUnk_08001A7C[index]; if (this->field_0x68.HALF.LO == 0x32) { pointerToArray = pointerToArray + 3; diff --git a/src/npc/nayru.c b/src/npc/nayru.c index 23ab5de6..89d8bbac 100644 --- a/src/npc/nayru.c +++ b/src/npc/nayru.c @@ -31,7 +31,7 @@ void Nayru(Entity* this) { void sub_08064928(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.fuserProgress[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { + if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/percy.c b/src/npc/percy.c index acb65a57..d04f61d5 100644 --- a/src/npc/percy.c +++ b/src/npc/percy.c @@ -71,7 +71,7 @@ void sub_0806B41C(Entity* this) { this->action = 2; this->interactType = 0; InitializeAnimation(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)) + 4); - idx = sub_08002632(this); + idx = GetFuserId(this); tmp = gUnk_08001A7C[idx]; if (this->field_0x68.HALF.LO == 33) tmp += 3; diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c index 36819425..0bf334c9 100644 --- a/src/npc/tingleSiblings.c +++ b/src/npc/tingleSiblings.c @@ -134,7 +134,7 @@ void sub_08064F28(Entity* this, ScriptExecutionContext* context) { context->condition = 0; roomFlag = gUnk_0810FC50[this->type]; if (CheckRoomFlag(roomFlag) == 0) { - bVar2 = gSave.fuserProgress[sub_08002632(this)]; + bVar2 = gSave.fuserProgress[GetFuserId(this)]; if (bVar2 >= 2) { uVar5 = 3; } else { diff --git a/src/npcUtils.c b/src/npcUtils.c index c66537f3..cea167ae 100644 --- a/src/npcUtils.c +++ b/src/npcUtils.c @@ -327,7 +327,7 @@ void CollideFollowers(void) { } void sub_0806F118(Entity* ent) { - u32 idx = sub_08002632(ent); + u32 idx = GetFuserId(ent); NPCData* data = gUnk_08001A7C[idx]; sub_0801DFB4(ent, data->textIndex, data->_2, data->_4); gPlayerState.controlMode = CONTROL_DISABLED; @@ -353,7 +353,7 @@ u32 UpdateFuseInteraction(Entity* ent) { } void sub_0806F188(Entity* ent) { - u32 idx = sub_08002632(ent); + u32 idx = GetFuserId(ent); if (idx != 0) gSave.fuserOffers[idx] = 0xF3; } diff --git a/src/object/object37.c b/src/object/object37.c index 11f54176..800f0fa0 100644 --- a/src/object/object37.c +++ b/src/object/object37.c @@ -44,14 +44,14 @@ void Object37_Init(Object37Entity* this) { void Object37_Action1(Object37Entity* this) { Entity* item; - if ((gSave.unk24E[0] != 0) && (this->unk70 != *this->unk78)) { + if ((gSave.fusionUnmarked[0] != 0) && (this->unk70 != *this->unk78)) { item = CreateGroundItem(super, ITEM_RUPEE100, 0); if (item != 0) { item->direction = gPlayerEntity.animationState << 2; item->speed = 0x80; item->zVelocity = Q_16_16(2.0); } - gSave.unk24E[0] = 1; + gSave.fusionUnmarked[0] = 1; DeleteThisEntity(); } } diff --git a/src/script.c b/src/script.c index 27bea866..1f14de5f 100644 --- a/src/script.c +++ b/src/script.c @@ -1822,7 +1822,7 @@ void sub_0807F634(Entity* entity, ScriptExecutionContext* context) { } void sub_0807F650(Entity* entity, ScriptExecutionContext* context) { - u32 p = sub_08002632(entity); + u32 p = GetFuserId(entity); sub_0801DFB4(entity, gUnk_08001A7C[p][0], gUnk_08001A7C[p][1], gUnk_08001A7C[p][2]); gPlayerState.controlMode = CONTROL_DISABLED; } From 489718049fa500ad9131f45d9be73075bae33159 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 8 Jan 2023 16:27:00 +0200 Subject: [PATCH 31/86] Match sub_08068578 (By TraceEntertains) --- .../zeldaFollower/sub_08068578.inc | 127 ----------------- src/npc/zeldaFollower.c | 134 +++++++++++++++++- 2 files changed, 132 insertions(+), 129 deletions(-) delete mode 100644 asm/non_matching/zeldaFollower/sub_08068578.inc diff --git a/asm/non_matching/zeldaFollower/sub_08068578.inc b/asm/non_matching/zeldaFollower/sub_08068578.inc deleted file mode 100644 index dea71d3a..00000000 --- a/asm/non_matching/zeldaFollower/sub_08068578.inc +++ /dev/null @@ -1,127 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r7, r0, #0 - ldr r4, _08068664 @ =gPlayerEntity - ldrh r1, [r4, #0x2e] - ldr r3, _08068668 @ =0xFFFF0000 - adds r0, r3, #0 - ands r0, r5 - orrs r0, r1 - ldrh r1, [r4, #0x32] - lsls r1, r1, #0x10 - ldr r2, _0806866C @ =0x0000FFFF - ands r0, r2 - adds r5, r0, #0 - orrs r5, r1 - ldrh r0, [r4, #0x36] - ands r3, r6 - orrs r3, r0 - ldr r0, _08068670 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - lsls r0, r0, #0x10 - ldr r2, _08068674 @ =0xFF00FFFF - ands r2, r3 - orrs r2, r0 - ldrb r1, [r4, #0x14] - movs r0, #0x3f - ands r1, r0 - lsls r1, r1, #0x18 - ldr r0, _08068678 @ =0xC0FFFFFF - ands r0, r2 - orrs r0, r1 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #0x1e - ldr r2, _0806867C @ =0x3FFFFFFF - ands r0, r2 - adds r6, r0, #0 - orrs r6, r1 - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r2, #0x2e - ldrsh r0, [r7, r2] - subs r1, r1, r0 - mov sl, r1 - movs r0, #0x32 - ldrsh r1, [r4, r0] - movs r2, #0x32 - ldrsh r0, [r7, r2] - subs r1, r1, r0 - mov r8, r1 - mov r1, sl - lsls r0, r1, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x14 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov sl, r0 - mov r2, r8 - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x14 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov r8, r0 - ldr r3, [r7, #0x64] - movs r0, #0 - mov sb, r0 - mov ip, r0 - movs r4, #0x13 -_08068614: - mov r1, ip - asrs r0, r1, #8 - subs r0, r5, r0 - strh r0, [r3] - lsrs r0, r5, #0x10 - mov r2, sb - asrs r1, r2, #8 - subs r0, r0, r1 - strh r0, [r3, #2] - strh r6, [r3, #4] - lsrs r0, r6, #0x10 - strb r0, [r3, #6] - ldrb r0, [r7, #0x14] - movs r1, #0x3f - ands r1, r0 - ldrb r2, [r3, #7] - movs r0, #0x40 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #7] - adds r1, r7, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #6 - movs r2, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #7] - adds r3, #8 - add sb, r8 - add ip, sl - subs r4, #1 - cmp r4, #0 - bge _08068614 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08068664: .4byte gPlayerEntity -_08068668: .4byte 0xFFFF0000 -_0806866C: .4byte 0x0000FFFF -_08068670: .4byte gPlayerState -_08068674: .4byte 0xFF00FFFF -_08068678: .4byte 0xC0FFFFFF -_0806867C: .4byte 0x3FFFFFFF - .syntax divided diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index 04153f4a..ae67fcba 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -3,6 +3,17 @@ #include "functions.h" #include "common.h" +typedef struct { + u16 x; + u16 y; + u16 z; + u8 framestate; + u8 animationState : 6; + u8 collisionLayer : 2; +} ZeldaFollowerItem; + +typedef ZeldaFollowerItem ZeldaFollowerHeap[20]; + void sub_08068318(Entity*); void sub_0806854C(Entity*, u32*); void sub_08068578(Entity* this); @@ -28,7 +39,7 @@ void ZeldaFollower(Entity* this) { ASM_FUNC("asm/non_matching/zeldaFollower/sub_08068318.inc", void sub_08068318(Entity* this)) void sub_0806854C(Entity* this, u32* none) { - this->myHeap = zMalloc(0xa0); + this->myHeap = zMalloc(sizeof(ZeldaFollowerHeap)); if (this->myHeap != NULL) { this->field_0x68.HALF.LO = 1; sub_080788E0(this); @@ -37,7 +48,126 @@ void sub_0806854C(Entity* this, u32* none) { } } -ASM_FUNC("asm/non_matching/zeldaFollower/sub_08068578.inc", void sub_08068578(Entity* this)) +void sub_08068578(Entity* this) { + ZeldaFollowerItem* item; + s32 index; +#ifdef REWRITE_CODE + u32 r0; + u32 r1; + u32 r2; + u32 r3; + u32 r5; + u32 r6; + u32 r8; + s32 y; + u32 r10; + s32 x; +#else + register u32 r5 asm("r5"); + register u32 r6 asm("r6"); + register u32 r0 asm("r0"); + register u32 r1 asm("r1"); + register u32 r2 asm("r2"); + register u32 r3 asm("r3"); + register s32 r8 asm("r8"); + register s32 y asm("r9"); + register s32 r10 asm("r10"); + register s32 x asm("r12"); +#endif + + // first u32 (r5) +#ifdef REWRITE_CODE + r0 = gPlayerEntity.x.HALF_U.HI | (r5 & 0xffff0000); + r5 = (gPlayerEntity.y.HALF_U.HI << 0x10) | (r0 & 0x0000ffff); +#else + r1 = gPlayerEntity.x.HALF_U.HI; + + r3 = 0xffff0000; + r0 = r3; + r0 &= r5; + r0 |= r1; + + r1 = gPlayerEntity.y.HALF_U.HI; + r1 <<= 0x10; + r2 = 0xffff; + r0 &= r2; + r0 |= r1; + r5 = r0; +#endif + + // second u32 (r6) +#ifdef REWRITE_CODE + r3 = gPlayerEntity.z.HALF_U.HI | (r6 & 0xffff0000); + r2 = (gPlayerState.framestate << 0x10) | (r3 & 0xff00ffff); + r0 = ((gPlayerEntity.animationState & 0x3f) << 0x18) | (r2 & 0xc0ffffff); + r6 = (gPlayerEntity.collisionLayer << 0x1e) | (r0 & 0x3fffffff); +#else + r0 = gPlayerEntity.z.HALF_U.HI; + r3 &= r6; + r3 |= r0; + + r0 = gPlayerState.framestate; + r0 <<= 0x10; + r2 = 0xff00ffff; + r2 &= r3; + r2 |= r0; + + r1 = gPlayerEntity.animationState; + r0 = 0x3f; + r1 &= r0; + r1 <<= 0x18; + r0 = 0xc0ffffff; + r0 &= r2; + r0 |= r1; + + // gPlayerEntity is now at r1 + r1 = gPlayerEntity.collisionLayer; + r1 <<= 0x1e; + r2 = 0x3fffffff; + r0 &= r2; + r0 |= r1; + r6 = r0; +#endif + +#ifdef REWRITE_CODE + r10 = gPlayerEntity.x.HALF.HI - this->x.HALF.HI; +#else + r1 = gPlayerEntity.x.HALF.HI; + r0 = this->x.HALF.HI; + r0 = r1 - r0; + r10 = r0; +#endif + +#ifdef REWRITE_CODE + r8 = gPlayerEntity.y.HALF.HI - this->y.HALF.HI; +#else + r1 = gPlayerEntity.y.HALF.HI; + r0 = this->y.HALF.HI; + r0 = r1 - r0; + r8 = r0; +#endif + + r10 = FixedDiv(r10, 0x14); + r8 = FixedDiv(r8, 0x14); + + item = this->myHeap; + y = 0; + x = 0; + + // Down here the u32 are suddendly accessed correctly as u16 and bitfields? + // How are the results of above u32 calculations used? + for (index = 0x13; index >= 0; index--) { + item->x = r5 - (x >> 8); + item->y = (r5 >> 0x10) - (y >> 8); + item->z = r6; + item->framestate = r6 >> 0x10; + item->animationState = this->animationState & 0x3f; + item->collisionLayer = this->collisionLayer; + item++; + y = y + r8; + x = x + r10; + } +} void ZeldaFollower_Hide(Entity* zelda, Entity* follower) { follower->field_0x68.HALF.LO = 0; From 8515634fa98120084c54de11d0d5eeeb8053ce5c Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 8 Jan 2023 16:46:07 +0100 Subject: [PATCH 32/86] Name more functions --- include/kinstone.h | 2 +- include/npc.h | 2 +- src/common.c | 6 +++--- src/enemy/businessScrub.c | 2 +- src/menu/pauseMenu.c | 4 ++-- src/npc/anju.c | 2 +- src/npc/bladeBrothers.c | 2 +- src/npc/brocco.c | 2 +- src/npc/carpenter.c | 2 +- src/npc/cat.c | 2 +- src/npc/cow.c | 2 +- src/npc/cucco.c | 2 +- src/npc/cuccoChick.c | 2 +- src/npc/dampe.c | 2 +- src/npc/din.c | 2 +- src/npc/dog.c | 2 +- src/npc/epona.c | 2 +- src/npc/farmers.c | 2 +- src/npc/farore.c | 2 +- src/npc/festari.c | 2 +- src/npc/forestMinish.c | 2 +- src/npc/gentari.c | 2 +- src/npc/ghostBrothers.c | 2 +- src/npc/gina.c | 2 +- src/npc/goron.c | 2 +- src/npc/gregal.c | 2 +- src/npc/hurdyGurdyMan.c | 2 +- src/npc/kid.c | 2 +- src/npc/kingDaltus.c | 4 ++-- src/npc/librari.c | 2 +- src/npc/malon.c | 2 +- src/npc/mama.c | 2 +- src/npc/mayorHagen.c | 4 ++-- src/npc/melari.c | 2 +- src/npc/ministerPotho.c | 4 ++-- src/npc/mountainMinish.c | 2 +- src/npc/mutoh.c | 2 +- src/npc/nayru.c | 2 +- src/npc/npc4E.c | 2 +- src/npc/percy.c | 2 +- src/npc/pina.c | 2 +- src/npc/postman.c | 4 ++-- src/npc/sittingPerson.c | 2 +- src/npc/smith.c | 4 ++-- src/npc/sturgeon.c | 2 +- src/npc/talon.c | 2 +- src/npc/teachers.c | 2 +- src/npc/tingleSiblings.c | 4 ++-- src/npc/townMinish.c | 2 +- src/npc/townsperson.c | 2 +- src/npc/windTribespeople.c | 2 +- 51 files changed, 60 insertions(+), 60 deletions(-) diff --git a/include/kinstone.h b/include/kinstone.h index 486b4ca9..0b889f13 100644 --- a/include/kinstone.h +++ b/include/kinstone.h @@ -209,7 +209,7 @@ typedef struct { u16 y; /**< Y position of the actual event. */ u16 _c; // see sub_080A6A80, related to _0 and _2 of gUnk_08127F94 u16 _e; // see sub_080A6A80, related to _1 and _3 of gUnk_08127F94 - u8 condition; // TODO some sort of flag determining what type the bank&flag are? see sub_0801E8D4 + u8 condition; // TODO some sort of flag determining what type the bank&flag are? see UpdateVisibleFusionMapMarkers u8 bank; /**< @see LocalBanks */ u16 flag; } WorldEvent; diff --git a/include/npc.h b/include/npc.h index 6f719154..6588f1d4 100644 --- a/include/npc.h +++ b/include/npc.h @@ -86,7 +86,7 @@ void CollideFollowers(void); // TODO move? void sub_08078784(Entity* ent, u32 arg1); u32 sub_0806F5A4(u32); -u32 sub_0801E99C(Entity*); +u32 GetFusionToOffer(Entity*); void sub_08078778(Entity*); void sub_0807000C(Entity*); void sub_080787A8(Entity*, u32); diff --git a/src/common.c b/src/common.c index a205833b..3a0e2618 100644 --- a/src/common.c +++ b/src/common.c @@ -899,8 +899,8 @@ s32 GetIndexInKinstoneBag(u32 kinstoneId) { return -1; } -// Check conditions, something with kinstones -void sub_0801E8D4(void) { +// For example if a chest from a fusion is opened, hide the chest marker +void UpdateVisibleFusionMapMarkers(void) { u32 kinstoneId; for (kinstoneId = 10; kinstoneId <= 100; ++kinstoneId) { if (CheckKinstoneFused(kinstoneId) && !CheckFusionMapMarkerDisabled(kinstoneId)) { @@ -969,7 +969,7 @@ void sub_0801E8D4(void) { extern u8* gUnk_08001DCC[]; -u32 sub_0801E99C(Entity* entity) { +u32 GetFusionToOffer(Entity* entity) { u8* fuserData; u32 fuserId; u32 offeredFusion; diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index 9084508b..643b63e6 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -547,7 +547,7 @@ void sub_0802922C(Entity* this) { } void sub_0802925C(Entity* this) { - sub_08078784(this, sub_0801E99C(this)); + sub_08078784(this, GetFusionToOffer(this)); } void sub_08029270(Entity* this) { diff --git a/src/menu/pauseMenu.c b/src/menu/pauseMenu.c index 3af4f5eb..0b76815b 100644 --- a/src/menu/pauseMenu.c +++ b/src/menu/pauseMenu.c @@ -59,14 +59,14 @@ void Subtask_PauseMenu(void) { struct_08127F94* sub_080A6A80(u32, u32); extern u8 gUnk_02034492[]; -void sub_0801E8D4(void); +void UpdateVisibleFusionMapMarkers(void); s32 sub_080A50A0(s32); void PauseMenu_Variant0(void) { struct_08127F94* ptr; int r0, r1; - sub_0801E8D4(); + UpdateVisibleFusionMapMarkers(); sub_080A4D34(); r1 = 4; do { diff --git a/src/npc/anju.c b/src/npc/anju.c index 224978a9..59fa7ce1 100644 --- a/src/npc/anju.c +++ b/src/npc/anju.c @@ -29,7 +29,7 @@ void Anju(Entity* this) { } void sub_0806C354(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/bladeBrothers.c b/src/npc/bladeBrothers.c index fb31384a..93dbfccc 100644 --- a/src/npc/bladeBrothers.c +++ b/src/npc/bladeBrothers.c @@ -291,7 +291,7 @@ void sub_08068ADC(Entity* this) { void sub_08068AFC(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); sub_0807DD50(this); } diff --git a/src/npc/brocco.c b/src/npc/brocco.c index 5a860d69..28edb9a2 100644 --- a/src/npc/brocco.c +++ b/src/npc/brocco.c @@ -115,7 +115,7 @@ void sub_080636D8(Entity* this) { } void sub_080636F4(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/carpenter.c b/src/npc/carpenter.c index a4da0fff..e7781a50 100644 --- a/src/npc/carpenter.c +++ b/src/npc/carpenter.c @@ -92,7 +92,7 @@ void sub_08067304(Entity* this) { } void sub_08067314(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/cat.c b/src/npc/cat.c index 11c85fd3..7eebb148 100644 --- a/src/npc/cat.c +++ b/src/npc/cat.c @@ -129,7 +129,7 @@ void sub_080677EC(Entity* this) { this->spriteSettings.flipX = 0; } - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); this->hitbox = (Hitbox*)&gUnk_08110EF0; uVar2 = sub_0805ACC0(this); if (uVar2 == 0) { diff --git a/src/npc/cow.c b/src/npc/cow.c index e418ecd9..7c99efb9 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -50,7 +50,7 @@ void sub_08068FC0(Entity* ent) { *(u16*)&ent->field_0x68 = var1; ent->field_0x6a.HWORD = r2; } - ent->field_0x6c.HALF.LO = sub_0801E99C(ent); + ent->field_0x6c.HALF.LO = GetFusionToOffer(ent); InitAnimationForceUpdate(ent, ent->animationState + 4); } diff --git a/src/npc/cucco.c b/src/npc/cucco.c index de157e63..5710d40a 100644 --- a/src/npc/cucco.c +++ b/src/npc/cucco.c @@ -15,7 +15,7 @@ void Cucco(Entity* this) { void Cucco_Init(Entity* this) { this->action++; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_080787A8(this, this->field_0x68.HALF.LO); SetDefaultPriority(this, PRIO_MESSAGE); this->subAction = 0; diff --git a/src/npc/cuccoChick.c b/src/npc/cuccoChick.c index e73045ca..22d29486 100644 --- a/src/npc/cuccoChick.c +++ b/src/npc/cuccoChick.c @@ -23,7 +23,7 @@ void CuccoChick(Entity* this) { void CuccoChick_Init(Entity* this) { this->action++; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_080787A8(this, this->field_0x68.HALF.LO); SetDefaultPriority(this, PRIO_MESSAGE); this->subAction = 0; diff --git a/src/npc/dampe.c b/src/npc/dampe.c index dbdff1e9..6c587232 100644 --- a/src/npc/dampe.c +++ b/src/npc/dampe.c @@ -34,7 +34,7 @@ void Dampe(Entity* this) { } void sub_0806BE3C(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/din.c b/src/npc/din.c index ab9d6940..b803d9a2 100644 --- a/src/npc/din.c +++ b/src/npc/din.c @@ -30,7 +30,7 @@ void Din(Entity* this) { } void sub_08064828(Entity* this) { - u32 tmp = sub_0801E99C(this); + u32 tmp = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } diff --git a/src/npc/dog.c b/src/npc/dog.c index fef5cd27..e3c287d9 100644 --- a/src/npc/dog.c +++ b/src/npc/dog.c @@ -206,7 +206,7 @@ void sub_08069B44(Entity* this) { this->timer = 30; this->animationState = 2; this->field_0x6a.HALF.LO = 0xff; - this->field_0x74.HALF.LO = sub_0801E99C(this); + this->field_0x74.HALF.LO = GetFusionToOffer(this); SetDefaultPriority(this, PRIO_MESSAGE); InitAnimationForceUpdate(this, 10); if ((this->flags & ENT_SCRIPTED) != 0) { diff --git a/src/npc/epona.c b/src/npc/epona.c index 5c5adafa..544a749d 100644 --- a/src/npc/epona.c +++ b/src/npc/epona.c @@ -27,7 +27,7 @@ void sub_080659B8(Entity* this) { this->spriteSettings.draw = 1; this->animationState = 6; this->field_0x68.HALF.HI = -1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); InitAnimationForceUpdate(this, this->animationState / 2); } diff --git a/src/npc/farmers.c b/src/npc/farmers.c index 59de6957..1fa4357c 100644 --- a/src/npc/farmers.c +++ b/src/npc/farmers.c @@ -60,7 +60,7 @@ void sub_0806BCC0(Entity* this) { } void sub_0806BCD4(Entity* this) { - sub_08078784(this, sub_0801E99C(this)); + sub_08078784(this, GetFusionToOffer(this)); } void sub_0806BCE8(Entity* this) { diff --git a/src/npc/farore.c b/src/npc/farore.c index f45aeb17..fa5f25c3 100644 --- a/src/npc/farore.c +++ b/src/npc/farore.c @@ -30,7 +30,7 @@ void Farore(Entity* this) { } void sub_08064A28(Entity* this) { - u32 tmp = sub_0801E99C(this); + u32 tmp = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } diff --git a/src/npc/festari.c b/src/npc/festari.c index 5d698d36..781cc9cf 100644 --- a/src/npc/festari.c +++ b/src/npc/festari.c @@ -21,7 +21,7 @@ void sub_0805FE10(Entity* this) { this->action = 1; this->spriteSettings.draw = TRUE; SetDefaultPriority(this, PRIO_MESSAGE); - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); sub_0807DD50(this); } diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index 7f3625f0..9a898c67 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -535,7 +535,7 @@ void ForestMinish(Entity* this) { } void sub_08060090(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/gentari.c b/src/npc/gentari.c index bf7818c1..3ba91821 100644 --- a/src/npc/gentari.c +++ b/src/npc/gentari.c @@ -8,7 +8,7 @@ void Gentari(Entity* this) { this->action = 1; this->spriteSettings.draw = TRUE; SetDefaultPriority(this, PRIO_MESSAGE); - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); sub_0807DD50(this); break; diff --git a/src/npc/ghostBrothers.c b/src/npc/ghostBrothers.c index e427c01e..afcb7f2b 100644 --- a/src/npc/ghostBrothers.c +++ b/src/npc/ghostBrothers.c @@ -111,7 +111,7 @@ void sub_08065CCC(Entity* this) { } void sub_08065D00(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/gina.c b/src/npc/gina.c index 4a729d2e..0bb49f92 100644 --- a/src/npc/gina.c +++ b/src/npc/gina.c @@ -9,7 +9,7 @@ void Gina(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); sub_0807DD50(this); break; diff --git a/src/npc/goron.c b/src/npc/goron.c index e046f7c9..8056bf52 100644 --- a/src/npc/goron.c +++ b/src/npc/goron.c @@ -105,7 +105,7 @@ void sub_08069428(Entity* this, s32 offsetX, bool32 createFx65) { } u32 sub_08069480(Entity* this) { - return (u8)sub_0801E99C(this); + return (u8)GetFusionToOffer(this); } void sub_0806948C(Entity* this, ScriptExecutionContext* context) { diff --git a/src/npc/gregal.c b/src/npc/gregal.c index 87333383..7d867bf0 100644 --- a/src/npc/gregal.c +++ b/src/npc/gregal.c @@ -155,7 +155,7 @@ void sub_0806CD4C(Entity* this) { } void sub_0806CD58(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/hurdyGurdyMan.c b/src/npc/hurdyGurdyMan.c index 04c91d9d..46ee55f0 100644 --- a/src/npc/hurdyGurdyMan.c +++ b/src/npc/hurdyGurdyMan.c @@ -101,7 +101,7 @@ void sub_0806E418(Entity* this) { } void sub_0806E440(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/kid.c b/src/npc/kid.c index 59e1e87f..7aacefff 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -555,7 +555,7 @@ void sub_08062948(Entity* this, ScriptExecutionContext* context) { } void sub_08062A48(Entity* this, ScriptExecutionContext* context) { - this->field_0x6a.HALF.LO = sub_0801E99C(this); + this->field_0x6a.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x6a.HALF.LO); } diff --git a/src/npc/kingDaltus.c b/src/npc/kingDaltus.c index bc22daa4..2d9c2989 100644 --- a/src/npc/kingDaltus.c +++ b/src/npc/kingDaltus.c @@ -39,7 +39,7 @@ void KingDaltus(Entity* this) { void sub_08066654(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); InitAnimationForceUpdate(this, 2); } @@ -72,7 +72,7 @@ void sub_080666DC(Entity* this) { void sub_080666E4(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_0807DD50(this); } diff --git a/src/npc/librari.c b/src/npc/librari.c index 5f0b6786..819b5a61 100644 --- a/src/npc/librari.c +++ b/src/npc/librari.c @@ -9,7 +9,7 @@ void Librari(Entity* this) { this->action = 1; this->spriteSettings.draw = TRUE; this->animationState = this->timer; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); SetDefaultPriority(this, PRIO_MESSAGE); sub_0807DD50(this); diff --git a/src/npc/malon.c b/src/npc/malon.c index d38be5aa..0270006d 100644 --- a/src/npc/malon.c +++ b/src/npc/malon.c @@ -43,7 +43,7 @@ void sub_08065888(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; this->animationState = 4; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); sub_0807DD50(this); } diff --git a/src/npc/mama.c b/src/npc/mama.c index 0cbda85b..95758b1c 100644 --- a/src/npc/mama.c +++ b/src/npc/mama.c @@ -93,7 +93,7 @@ void sub_0806C4DC(Entity* this) { } void sub_0806C4F8(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/mayorHagen.c b/src/npc/mayorHagen.c index 5550feb6..1cef31bc 100644 --- a/src/npc/mayorHagen.c +++ b/src/npc/mayorHagen.c @@ -11,7 +11,7 @@ void MayorHagen(Entity* this) { case 0: this->action = 1; this->field_0x68.HALF.HI = 0; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); SetDefaultPriority(this, PRIO_MESSAGE); sub_0807DD50(this); break; @@ -44,7 +44,7 @@ void sub_0806CE5C(Entity* this) { 8, 16, }; - sub_08078784(this, sub_0801E99C(this)); + sub_08078784(this, GetFusionToOffer(this)); sub_08078850(this, 1, 0, gUnk_08113F44); } diff --git a/src/npc/melari.c b/src/npc/melari.c index 7e20dbed..5c72230b 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -101,7 +101,7 @@ void sub_08068780(Entity* this) { } void sub_08068884(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/ministerPotho.c b/src/npc/ministerPotho.c index 72323ed3..9ee87713 100644 --- a/src/npc/ministerPotho.c +++ b/src/npc/ministerPotho.c @@ -60,7 +60,7 @@ void sub_08066864(Entity* this) { case 0: this->action = 1; this->spriteSettings.draw = 1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_0807DD50(this); break; case 1: @@ -82,7 +82,7 @@ void sub_08066864(Entity* this) { } void sub_080668F0(Entity* this) { - sub_08078784(this, sub_0801E99C(this)); + sub_08078784(this, GetFusionToOffer(this)); } void sub_08066904(Entity* this) { diff --git a/src/npc/mountainMinish.c b/src/npc/mountainMinish.c index 647b550a..ca0d3574 100644 --- a/src/npc/mountainMinish.c +++ b/src/npc/mountainMinish.c @@ -180,7 +180,7 @@ void sub_08067EF0(Entity* this) { } void sub_08068104(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/mutoh.c b/src/npc/mutoh.c index d1d5a00a..5cb1691e 100644 --- a/src/npc/mutoh.c +++ b/src/npc/mutoh.c @@ -83,7 +83,7 @@ void sub_080670E4(Entity* this) { } void sub_08067100(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/nayru.c b/src/npc/nayru.c index 89d8bbac..35176f0b 100644 --- a/src/npc/nayru.c +++ b/src/npc/nayru.c @@ -30,7 +30,7 @@ void Nayru(Entity* this) { } void sub_08064928(Entity* this) { - u32 tmp = sub_0801E99C(this); + u32 tmp = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 3e4bc3c7..42c3b02d 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -83,7 +83,7 @@ u8 sub_0806DA3C(Entity* this) { case 8: case 9: case 10: - result = sub_0801E99C(this); + result = GetFusionToOffer(this); break; } return result; diff --git a/src/npc/percy.c b/src/npc/percy.c index d04f61d5..22753a85 100644 --- a/src/npc/percy.c +++ b/src/npc/percy.c @@ -162,7 +162,7 @@ void sub_0806B540(Entity* this) { } void sub_0806B60C(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/pina.c b/src/npc/pina.c index 545a4097..00d73a13 100644 --- a/src/npc/pina.c +++ b/src/npc/pina.c @@ -151,7 +151,7 @@ void sub_08063C90(Entity* this) { } void sub_08063CAC(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/postman.c b/src/npc/postman.c index 2bdeedd2..06fa095c 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -234,7 +234,7 @@ void sub_08060528(Entity* this) { this->field_0x68.HALF.HI = 0; this->field_0x6a.HWORD = 0; this->field_0x6c.HALF.HI = 0; - this->field_0x6c.HALF.LO = sub_0801E99C(this); + this->field_0x6c.HALF.LO = GetFusionToOffer(this); sub_0807DD50(this); break; case 1: @@ -293,7 +293,7 @@ void sub_08060528(Entity* this) { } void sub_080606C0(Entity* this) { - this->field_0x6c.HALF.LO = sub_0801E99C(this); + this->field_0x6c.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x6c.HALF.LO); } diff --git a/src/npc/sittingPerson.c b/src/npc/sittingPerson.c index 6fc0ec00..b7f7af0c 100644 --- a/src/npc/sittingPerson.c +++ b/src/npc/sittingPerson.c @@ -236,7 +236,7 @@ void SittingPerson_Head(Entity* this) { } void sub_080639D0(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/smith.c b/src/npc/smith.c index e6663737..08013aa7 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -73,7 +73,7 @@ void Smith_Head(Entity* this) { void sub_080660EC(Entity* this) { if (LoadExtraSpriteData(this, gUnk_08110354)) { this->action = 1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); InitAnimationForceUpdate(this, 2); } } @@ -109,7 +109,7 @@ void sub_08066178(Entity* this) { if (LoadExtraSpriteData(this, gUnk_08110354)) { this->action = 1; this->spriteSettings.draw = 1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_0807DD50(this); } } diff --git a/src/npc/sturgeon.c b/src/npc/sturgeon.c index 7ee3e4bc..d4902142 100644 --- a/src/npc/sturgeon.c +++ b/src/npc/sturgeon.c @@ -141,7 +141,7 @@ void sub_08064C9C(Entity* this) { } void sub_08064CC0(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/talon.c b/src/npc/talon.c index 8de3c789..b2d99ca8 100644 --- a/src/npc/talon.c +++ b/src/npc/talon.c @@ -78,7 +78,7 @@ void sub_08065608(Entity* this) { if (LoadExtraSpriteData(this, gUnk_0810FEB0)) { this->action = 1; this->spriteSettings.draw = 1; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); sub_0807DD50(this); } diff --git a/src/npc/teachers.c b/src/npc/teachers.c index 4ff317ad..763bf448 100644 --- a/src/npc/teachers.c +++ b/src/npc/teachers.c @@ -43,7 +43,7 @@ void Teachers(Entity* this) { } void sub_0806C674(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c index 0bf334c9..cb22cf1d 100644 --- a/src/npc/tingleSiblings.c +++ b/src/npc/tingleSiblings.c @@ -68,7 +68,7 @@ void sub_08064DE4(Entity* this) { case 2: if (UpdateFuseInteraction(this)) { this->action = 1; - sub_0801E99C(this); + GetFusionToOffer(this); } break; } @@ -84,7 +84,7 @@ void sub_08064DE4(Entity* this) { } void sub_08064EA4(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); switch (this->type) { case 0: if ((CheckKinstoneFused(KINSTONE_59) != 0) && (GetInventoryValue(ITEM_MAGIC_BOOMERANG) == 0)) { diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index 85630b7c..69f729d7 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -208,7 +208,7 @@ void sub_0806ACC4(Entity* this) { this->animationState = delay * 2; this->timer = 0; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_0807DD50(this); InitializeAnimation(this, (this->animationState / 2) + 8); break; diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index 4def0fca..862e00f5 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -104,7 +104,7 @@ void sub_08061CEC(Entity* this) { this->field_0x6a.HWORD = (uVar2 >> 0x10); } *(u16*)&this->field_0x6c = uVar2; - this->field_0x68.HALF.LO = sub_0801E99C(this); + this->field_0x68.HALF.LO = GetFusionToOffer(this); sub_0807DD64(this); sub_08061D64(this); } diff --git a/src/npc/windTribespeople.c b/src/npc/windTribespeople.c index 2018581f..d60e0b37 100644 --- a/src/npc/windTribespeople.c +++ b/src/npc/windTribespeople.c @@ -81,7 +81,7 @@ void sub_0806C85C(Entity* this) { void sub_0806C870(Entity* this) { u8 bVar1; - bVar1 = sub_0801E99C(this); + bVar1 = GetFusionToOffer(this); this->field_0x68.HALF.LO = bVar1; sub_08078784(this, this->field_0x68.HALF.LO); } From c88f5cf280c290da3f33a280011fc200ae86dbcf Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 8 Jan 2023 17:47:29 +0100 Subject: [PATCH 33/86] Names in KinstoneWorldEvent struct --- include/kinstone.h | 10 +++++----- src/menu/kinstoneMenu.c | 8 ++++---- src/menu/pauseMenuScreen6.c | 2 +- src/object/cameraTarget.c | 2 +- src/subtask/subtaskLocalMapHint.c | 2 +- src/subtask/subtaskWorldEvent.c | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/kinstone.h b/include/kinstone.h index 0b889f13..a5c20d44 100644 --- a/include/kinstone.h +++ b/include/kinstone.h @@ -23,13 +23,13 @@ extern FuseInfo gFuseInfo; typedef struct { u8 objPalette; - u8 unk1; - u8 unk2; + u8 gfxOffsetPiece; + u8 gfxOffsetFull; u8 subtask; // SUBTASK_WORLDEVENT or 0 u8 worldEventId; - u8 unk5; - u8 unk6; - u8 unk7; // TODO flag if it shows a map hint? + u8 shape; + u8 bubbleIcon; + u8 mapMarkerIcon; // 0 for no map marker } KinstoneWorldEvent; // Indexed by kinstoneId extern const KinstoneWorldEvent gKinstoneWorldEvents[]; diff --git a/src/menu/kinstoneMenu.c b/src/menu/kinstoneMenu.c index d81e9573..62621f7e 100644 --- a/src/menu/kinstoneMenu.c +++ b/src/menu/kinstoneMenu.c @@ -265,8 +265,8 @@ void KinstoneMenu_Type3_Overlay0(void) { } void KinstoneMenu_Type3_Overlay1(void) { - u32 temp = gKinstoneWorldEvents[gKinstoneMenu.unk2a].unk5; - if (temp != gKinstoneWorldEvents[gFuseInfo.kinstoneId].unk5) { + u32 temp = gKinstoneWorldEvents[gKinstoneMenu.unk2a].shape; + if (temp != gKinstoneWorldEvents[gFuseInfo.kinstoneId].shape) { SoundReq(SFX_ITEM_SHIELD_BOUNCE); SetMenuType(4); } else { @@ -517,9 +517,9 @@ void sub_080A42E0(u32 kinstoneId, u32 param_2) { const KinstoneWorldEvent* ptr = &gKinstoneWorldEvents[kinstoneId]; if (param_2 == 0xff) { - uVar1 = ptr->unk2; + uVar1 = ptr->gfxOffsetFull; } else { - uVar1 = ptr->unk1; + uVar1 = ptr->gfxOffsetPiece; } iVar4 = sub_080A43A8(uVar1); if ((param_2 != 0) && (param_2 != 0xff)) { diff --git a/src/menu/pauseMenuScreen6.c b/src/menu/pauseMenuScreen6.c index a7fa969c..c9a085c9 100644 --- a/src/menu/pauseMenuScreen6.c +++ b/src/menu/pauseMenuScreen6.c @@ -206,7 +206,7 @@ void sub_080A68D4(void) { for (i = 10; i <= 100; i++) { if (CheckKinstoneFused(i) && !CheckFusionMapMarkerDisabled(i)) { - uVar4 = gKinstoneWorldEvents[i].unk7; + uVar4 = gKinstoneWorldEvents[i].mapMarkerIcon; ptr = &gWorldEvents[gKinstoneWorldEvents[i].worldEventId]; sub_080A698C(ptr->_c, ptr->_e, DRAW_DIRECT_SPRITE_INDEX, uVar4 + 100); } diff --git a/src/object/cameraTarget.c b/src/object/cameraTarget.c index 79b56190..86321cbb 100644 --- a/src/object/cameraTarget.c +++ b/src/object/cameraTarget.c @@ -133,7 +133,7 @@ void CameraTarget_Action2(Entity* this) { bVar2 = this->type2; } ptr = gKinstoneWorldEvents + bVar2; - bVar1 = ptr->unk6; + bVar1 = ptr->bubbleIcon; bVar3 = bVar1 & 1; this->palette.b.b0 = bVar3; temp = gUnk_0811F744[bVar1] < 0; diff --git a/src/subtask/subtaskLocalMapHint.c b/src/subtask/subtaskLocalMapHint.c index 8f9bb133..7a86d5e4 100644 --- a/src/subtask/subtaskLocalMapHint.c +++ b/src/subtask/subtaskLocalMapHint.c @@ -38,7 +38,7 @@ void sub_080A6B04(void) { sub_080A4DB8(6); ptr = &gKinstoneWorldEvents[gFuseInfo.kinstoneId]; ptr2 = &gWorldEvents[ptr->worldEventId]; - bVar1 = ptr->unk7; + bVar1 = ptr->mapMarkerIcon; uVar3 = ptr2->_c; uVar4 = ptr2->_e; uVar2 = sub_080A6A80(uVar3, uVar4)->_4; diff --git a/src/subtask/subtaskWorldEvent.c b/src/subtask/subtaskWorldEvent.c index bae3e921..0c7c5b5b 100644 --- a/src/subtask/subtaskWorldEvent.c +++ b/src/subtask/subtaskWorldEvent.c @@ -58,7 +58,7 @@ void Subtask_WorldEvent_Update(void) { void Subtask_WorldEvent_End(void) { MessageInitialize(); sub_0806F38C(); - if (gKinstoneWorldEvents[gFuseInfo.kinstoneId].unk7 != 0) { + if (gKinstoneWorldEvents[gFuseInfo.kinstoneId].mapMarkerIcon != 0) { // Show the map hint. MenuFadeIn(SUBTASK_LOCALMAPHINT, gUI.field_0x3); } else { From c9e3f39e56214eb14bdd1b26334c94e10e57ee52 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 8 Jan 2023 18:07:37 +0100 Subject: [PATCH 34/86] Goron Merchant adjustments --- src/manager/goronMerchantShopManager.c | 9 +++++---- src/npc/goronMerchant.c | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/manager/goronMerchantShopManager.c b/src/manager/goronMerchantShopManager.c index 3f6ed6b5..feb2f7c0 100644 --- a/src/manager/goronMerchantShopManager.c +++ b/src/manager/goronMerchantShopManager.c @@ -8,16 +8,17 @@ #include "asm.h" #include "flags.h" #include "object.h" +#include "item.h" typedef struct { u16 minType; - u16 maxType; + u16 numTypes; u16 x; u16 y; } GoronShopSpawnData; void GoronMerchantShopManager_Main(GoronMerchantShopManager* this) { - static const GoronShopSpawnData gUnk_08108D5C[3] = { { 0x6e, 0x3, 0x210, 0x210 }, + static const GoronShopSpawnData shopSpawnData[3] = { { 0x6e, 0x3, 0x210, 0x210 }, { 0x71, 0x2, 0x220, 0x210 }, { 0x73, 0x3, 0x230, 0x210 } }; s32 uVar2; @@ -54,12 +55,12 @@ void GoronMerchantShopManager_Main(GoronMerchantShopManager* this) { this->itemActive[2] = 0; this->itemActive[1] = 0; this->itemActive[0] = 0; - spawnData = gUnk_08108D5C; + spawnData = shopSpawnData; count = 0; for (count = 0; count < 3;) { if (CheckGlobalFlag(GORON_KAKERA_L + count) == 0) { Entity* object = - CreateObject(SHOP_ITEM, 0x5c, ((s32)Random() % spawnData->maxType) + spawnData->minType); + CreateObject(SHOP_ITEM, ITEM_KINSTONE, ((s32)Random() % spawnData->numTypes) + spawnData->minType); if (object != NULL) { object->timer = 1; object->subtimer = count; diff --git a/src/npc/goronMerchant.c b/src/npc/goronMerchant.c index f3f9b323..a26eb4b1 100644 --- a/src/npc/goronMerchant.c +++ b/src/npc/goronMerchant.c @@ -5,6 +5,7 @@ #include "flags.h" #include "save.h" #include "npc.h" +#include "item.h" static u32 GoronMerchant_GetSalePrice(Entity*); @@ -134,7 +135,7 @@ void GoronMerchant_TryToBuyKinstone(Entity* this, ScriptExecutionContext* contex if (salePrice <= gSave.stats.rupees) { if (GetAmountInKinstoneBag(gRoomVars.shopItemType2) < 99) { ModRupees(-salePrice); - InitItemGetSequence(0x5c, gRoomVars.shopItemType2, 0); + InitItemGetSequence(ITEM_KINSTONE, gRoomVars.shopItemType2, 0); gRoomVars.shopItemType = 0; gRoomVars.shopItemType2 = 0; context->condition = 1; From 529c1ef8b9c441df0f4b6574b351b286e3c1cb40 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 8 Jan 2023 18:14:47 +0100 Subject: [PATCH 35/86] Bakery Kinstone stuff --- src/npc/pita.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/npc/pita.c b/src/npc/pita.c index a55c4012..8414accc 100644 --- a/src/npc/pita.c +++ b/src/npc/pita.c @@ -41,10 +41,10 @@ void RemoveAllBakedGoods(void) { bool32 sub_08062EDC(Entity* this, ScriptExecutionContext* context) { u32 tmp; - u32 tmp2; + u32 kinstoneId; static const u8 chanceForPrize[] = { 0x20, 0x40, 0x60, 0x80, 0xFF }; - static const u8 gUnk_0810C435[] = { 0x10, 0x10, 0x10, 0x20, 0x20, 0x30, 0x30, 0x30 }; - static const u8 gUnk_0810C43D[] = { 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75 }; + static const u8 chancesPerType[] = { 0x10, 0x10, 0x10, 0x20, 0x20, 0x30, 0x30, 0x30 }; + static const u8 kinstoneTypes[] = { 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75 }; //! @bug: tmp is uninitialized, in practice player must have an item here if (GetInventoryValue(ITEM_BRIOCHE) != 0) { @@ -67,9 +67,9 @@ bool32 sub_08062EDC(Entity* this, ScriptExecutionContext* context) { context->condition = FALSE; return FALSE; } else { - tmp = GetRandomByWeight(gUnk_0810C435); - tmp2 = gUnk_0810C43D[tmp]; - InitItemGetSequence(ITEM_KINSTONE, tmp2, 1); + tmp = GetRandomByWeight(chancesPerType); + kinstoneId = kinstoneTypes[tmp]; + InitItemGetSequence(ITEM_KINSTONE, kinstoneId, 1); MessageNoOverlap(TEXT_INDEX(TEXT_BAKERY, 0x5), this); context->condition = TRUE; return TRUE; From 3073318124bbede2bc62102775c7dc5d622a968c Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 8 Jan 2023 18:20:37 +0100 Subject: [PATCH 36/86] Business Scrub Kinstone stuff --- src/enemy/businessScrub.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index 643b63e6..d1333784 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -28,7 +28,7 @@ void sub_0802922C(Entity*); void sub_0802925C(Entity*); extern const struct SalesOffering gUnk_080CC954[]; -extern const u8 gUnk_080CC9C0[]; +extern const u8 kinstoneTypes[]; extern void (*const BusinessScrub_Functions[])(Entity*); extern void (*const gUnk_080CC9E0[])(Entity*); extern const u8 gUnk_080CCA04[]; @@ -258,7 +258,7 @@ void sub_08028CE8(Entity* this) { case 0: subtype = offer->field_0x9; if (subtype == 0xff) { - subtype = gUnk_080CC9C0[Random() & 7]; + subtype = kinstoneTypes[Random() & 7]; } CreateItemEntity(offer->offeredItem, subtype, 0); @@ -577,17 +577,7 @@ const struct SalesOffering gUnk_080CC954[] = { #endif }; -const u8 gUnk_080CC9C0[] = { - 0x6e, - 0x6f, - 0x70, - 0x71, - 0x72, - 0x73, - 0x74, - 0x75, - -}; +const u8 kinstoneTypes[] = { 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75 }; void (*const BusinessScrub_Functions[])(Entity*) = { BusinessScrub_OnTick, From f81167f6d7341911d0a7a21b645fa698ea23fd2a Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sun, 8 Jan 2023 19:06:07 +0000 Subject: [PATCH 37/86] Match DrawDungeonMap --- asm/non_matching/common/DrawDungeonMap.inc | 221 --------------------- src/common.c | 87 +++++++- 2 files changed, 86 insertions(+), 222 deletions(-) delete mode 100644 asm/non_matching/common/DrawDungeonMap.inc diff --git a/asm/non_matching/common/DrawDungeonMap.inc b/asm/non_matching/common/DrawDungeonMap.inc deleted file mode 100644 index d71568a1..00000000 --- a/asm/non_matching/common/DrawDungeonMap.inc +++ /dev/null @@ -1,221 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - sub sp, #4 - adds r4, r0, #0 - adds r5, r1, #0 - adds r1, r2, #0 - adds r0, r5, #0 - bl MemClear - movs r0, #1 - strb r0, [r5] - ldr r2, _0801DBE4 @ =gRoomTransition - ldrh r0, [r2, #0x1c] - lsrs r0, r0, #4 - movs r1, #0x7f - ands r0, r1 - strb r0, [r5, #1] - ldrh r0, [r2, #0x1e] - lsrs r0, r0, #4 - ands r0, r1 - strb r0, [r5, #2] - adds r5, #3 - ldr r1, _0801DBE8 @ =gUnk_080C9C50 - ldr r0, _0801DBEC @ =gArea - ldrb r0, [r0, #3] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - lsls r4, r4, #2 - adds r4, r4, r0 - ldr r6, [r4] - b _0801DD3A - .align 2, 0 -_0801DBE4: .4byte gRoomTransition -_0801DBE8: .4byte gUnk_080C9C50 -_0801DBEC: .4byte gArea -_0801DBF0: - ldrb r0, [r6] - ldrb r1, [r6, #1] - movs r2, #3 - bl GetRoomProperty - adds r4, r0, #0 - cmp r4, #0 - bne _0801DC04 - adds r6, #8 - b _0801DD3A -_0801DC04: - adds r0, r6, #0 - bl sub_0801DF10 - mov r8, r0 - bl HasDungeonBigKey - movs r1, #8 - adds r1, r1, r6 - mov sb, r1 - cmp r0, #0 - beq _0801DCAE - ldrb r0, [r4] - cmp r0, #0 - beq _0801DCAE - movs r3, #0xfc - lsls r3, r3, #2 - ldr r7, _0801DC84 @ =0x000007FF -_0801DC26: - ldrb r0, [r4] - cmp r0, #3 - bgt _0801DCA6 - cmp r0, #2 - blt _0801DCA6 - ldrb r1, [r4, #1] - mov r0, r8 - str r3, [sp] - bl CheckLocalFlagByBank - ldr r3, [sp] - cmp r0, #0 - bne _0801DCA6 - ldr r0, _0801DC88 @ =gAreaRoomHeaders - ldrb r2, [r6] - lsls r2, r2, #2 - adds r2, r2, r0 - ldrb r1, [r6, #1] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #1 - ldr r1, [r2] - adds r2, r1, r0 - movs r0, #2 - strb r0, [r5] - ldrb r0, [r4] - cmp r0, #2 - bne _0801DC8C - ldrh r0, [r4, #4] - lsls r0, r0, #4 - ands r0, r3 - movs r1, #8 - orrs r0, r1 - ldrh r1, [r2] - ands r1, r7 - adds r0, r0, r1 - asrs r0, r0, #4 - strb r0, [r5, #1] - ldrh r0, [r4, #4] - lsrs r0, r0, #2 - ands r0, r3 - movs r1, #8 - orrs r0, r1 - ldrh r1, [r2, #2] - ands r1, r7 - b _0801DC9E - .align 2, 0 -_0801DC84: .4byte 0x000007FF -_0801DC88: .4byte gAreaRoomHeaders -_0801DC8C: - ldrh r0, [r2] - ands r0, r7 - ldrh r1, [r4, #4] - adds r0, r0, r1 - asrs r0, r0, #4 - strb r0, [r5, #1] - ldrh r0, [r2, #2] - ands r0, r7 - ldrh r1, [r4, #6] -_0801DC9E: - adds r0, r0, r1 - asrs r0, r0, #4 - strb r0, [r5, #2] - adds r5, #3 -_0801DCA6: - adds r4, #8 - ldrb r0, [r4] - cmp r0, #0 - bne _0801DC26 -_0801DCAE: - bl HasDungeonBigKey - cmp r0, #0 - beq _0801DD16 - ldrb r1, [r6, #2] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0801DD16 - ldr r0, _0801DD4C @ =gArea - ldrb r0, [r0, #3] - adds r0, #1 - bl CheckGlobalFlag - cmp r0, #0 - bne _0801DD16 - ldr r0, _0801DD50 @ =gAreaRoomHeaders - ldrb r2, [r6] - lsls r2, r2, #2 - adds r2, r2, r0 - ldrb r1, [r6, #1] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #1 - ldr r1, [r2] - adds r2, r1, r0 - movs r0, #4 - strb r0, [r5] - ldrh r0, [r2, #4] - lsrs r0, r0, #1 - ldrh r1, [r2] - adds r0, r0, r1 - asrs r1, r0, #4 - adds r0, r1, #0 - cmp r1, #0 - bge _0801DCF8 - adds r0, #0x7f -_0801DCF8: - asrs r0, r0, #7 - lsls r0, r0, #7 - subs r0, r1, r0 - strb r0, [r5, #1] - ldrh r0, [r2, #6] - lsrs r0, r0, #1 - ldrh r2, [r2, #2] - adds r0, r0, r2 - asrs r1, r0, #4 - adds r0, r1, #0 - asrs r0, r0, #7 - lsls r0, r0, #7 - subs r0, r1, r0 - strb r0, [r5, #2] - adds r5, #3 -_0801DD16: - ldr r2, _0801DD54 @ =gRoomTransition - ldrh r0, [r6] - ldrh r1, [r2, #0x16] - cmp r0, r1 - bne _0801DD38 - movs r0, #3 - strb r0, [r5] - ldrh r0, [r2, #0x18] - lsrs r0, r0, #4 - movs r1, #0x7f - ands r0, r1 - strb r0, [r5, #1] - ldrh r0, [r2, #0x1a] - lsrs r0, r0, #4 - ands r0, r1 - strb r0, [r5, #2] - adds r5, #3 -_0801DD38: - mov r6, sb -_0801DD3A: - ldrb r0, [r6] - cmp r0, #0 - beq _0801DD42 - b _0801DBF0 -_0801DD42: - add sp, #4 - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801DD4C: .4byte gArea -_0801DD50: .4byte gAreaRoomHeaders -_0801DD54: .4byte gRoomTransition - .syntax divided diff --git a/src/common.c b/src/common.c index 909dd944..a5f8d2d7 100644 --- a/src/common.c +++ b/src/common.c @@ -85,6 +85,24 @@ u32 sub_0801DF60(u32 a1, u8* p); u32 sub_0801DF78(u32 a1, u32 a2); void sub_0801DF28(u32 x, u32 y, s32 color); +extern void* GetRoomProperty(u32, u32, u32); + +enum DungeonMapObjectTypes { + DMO_TYPE_NONE, + DMO_TYPE_PLAYER, + DMO_TYPE_CHEST, + DMO_TYPE_ENTRY, + DMO_TYPE_BOSS, +}; + +typedef struct { + u8 type; /**< @see DungeonMapObjectTypes */ + u8 x; + u8 y; +} PACKED DungeonMapObject; + +// More like PrepareTileEntitesForDungeonMap or so + u32 DecToHex(u32 value) { u32 result; register u32 r1 asm("r1"); @@ -406,7 +424,74 @@ u32 sub_0801DB94(void) { return gRoomTransition.player_status.dungeon_map_y >> 11; } -ASM_FUNC("asm/non_matching/common/DrawDungeonMap.inc", void DrawDungeonMap(u32 floor, void* data, u32 size)); +void DrawDungeonMap(u32 floor, DungeonMapObject* specialData, u32 size) { + DungeonLayout* floorMapData; + TileEntity* tileEntity; + u32 flagBankOffset; + RoomHeader* roomHeader; + s32 tmp1; + s32 tmp3; + + MemClear(specialData, size); + specialData->type = DMO_TYPE_PLAYER; + specialData->x = (gRoomTransition.player_status.dungeon_map_x >> 4) & 0x7f; + specialData->y = (gRoomTransition.player_status.dungeon_map_y >> 4) & 0x7f; + specialData++; + floorMapData = (DungeonLayout*)gUnk_080C9C50[gArea.dungeon_idx][floor]; + while (floorMapData->area != 0) { + tileEntity = (TileEntity*)GetRoomProperty(floorMapData->area, floorMapData->room, 3); + if (tileEntity == NULL) { + floorMapData++; + } else { + flagBankOffset = sub_0801DF10(floorMapData); + if (HasDungeonBigKey()) { + while (tileEntity->type != 0) { + switch (tileEntity->type) { + case SMALL_CHEST: + case BIG_CHEST: + if (!CheckLocalFlagByBank(flagBankOffset, tileEntity->localFlag)) { + roomHeader = gAreaRoomHeaders[floorMapData->area] + floorMapData->room; + specialData->type = DMO_TYPE_CHEST; + if (tileEntity->type == SMALL_CHEST) { + specialData->x = + ((((tileEntity->tilePos << 4 & 0x3f0) | 8) + (roomHeader->map_x % 0x800)) >> 4); + specialData->y = + ((((tileEntity->tilePos >> 2 & 0x3f0) | 8) + (roomHeader->map_y % 0x800)) >> 4); + } else { + specialData->x = (((roomHeader->map_x % 0x800) + tileEntity->tilePos) >> 4); + specialData->y = (((roomHeader->map_y % 0x800) + (*(u16*)&tileEntity->_6)) >> 4); + } + specialData++; + } + break; + } + tileEntity++; + } + } + if ((HasDungeonBigKey() && ((floorMapData->unk_2 & 2) != 0)) && (!CheckGlobalFlag(gArea.dungeon_idx + 1))) { + roomHeader = gAreaRoomHeaders[floorMapData->area] + floorMapData->room; + specialData->type = DMO_TYPE_BOSS; + tmp1 = ((roomHeader->pixel_width / 2) + roomHeader->map_x) / 16; + if (tmp1 < 0) { + tmp1 = tmp1 + 0x7f; + } + specialData->x = tmp1 + (tmp1 / 128) * -128; + tmp3 = ((roomHeader->pixel_height / 2) + roomHeader->map_y) / 16; + specialData->y = tmp3 + (tmp3 / 128) * -128; + specialData++; + } + if (floorMapData->area == gRoomTransition.player_status.dungeon_area && + floorMapData->room == gRoomTransition.player_status.dungeon_room) { + specialData->type = DMO_TYPE_ENTRY; + // TODO rename dungeon_x and dungeon_y to dungeonEntryX/Y? + specialData->x = ((u16)gRoomTransition.player_status.dungeon_x >> 4) & 0x7f; + specialData->y = ((u16)gRoomTransition.player_status.dungeon_y >> 4) & 0x7f; + specialData++; + } + floorMapData++; + } + } +} void sub_0801DD58(u32 area, u32 room) { RoomHeader* hdr = gAreaRoomHeaders[area] + room; From ea82b6b4a19c3a3768238bae0864be18caf3e416 Mon Sep 17 00:00:00 2001 From: TraceEntertains <73800394+TraceEntertains@users.noreply.github.com> Date: Sun, 8 Jan 2023 14:44:24 +0000 Subject: [PATCH 38/86] Match sub_0806252C --- asm/non_matching/kid/sub_0806252C.inc | 130 -------------------------- src/npc/kid.c | 106 ++++++++++++++------- 2 files changed, 74 insertions(+), 162 deletions(-) delete mode 100644 asm/non_matching/kid/sub_0806252C.inc diff --git a/asm/non_matching/kid/sub_0806252C.inc b/asm/non_matching/kid/sub_0806252C.inc deleted file mode 100644 index c8148e64..00000000 --- a/asm/non_matching/kid/sub_0806252C.inc +++ /dev/null @@ -1,130 +0,0 @@ - .syntax unified - .text - - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r7, r0, #0 - ldr r4, _08062618 @ =gPlayerEntity - ldrh r1, [r4, #0x2e] - ldr r3, _0806261C @ =0xFFFF0000 - adds r0, r3, #0 - ands r0, r5 - orrs r0, r1 - ldrh r1, [r4, #0x32] - lsls r1, r1, #0x10 - ldr r2, _08062620 @ =0x0000FFFF - ands r0, r2 - adds r5, r0, #0 - orrs r5, r1 - ldrh r0, [r4, #0x36] - ands r3, r6 - orrs r3, r0 - ldr r0, _08062624 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - lsls r0, r0, #0x10 - ldr r2, _08062628 @ =0xFF00FFFF - ands r2, r3 - orrs r2, r0 - ldrb r1, [r4, #0x14] - movs r0, #0x3f - ands r1, r0 - lsls r1, r1, #0x18 - ldr r0, _0806262C @ =0xC0FFFFFF - ands r0, r2 - orrs r0, r1 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #0x1e - ldr r2, _08062630 @ =0x3FFFFFFF - ands r0, r2 - adds r6, r0, #0 - orrs r6, r1 - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r2, #0x2e - ldrsh r0, [r7, r2] - subs r1, r1, r0 - mov sl, r1 - movs r0, #0x32 - ldrsh r1, [r4, r0] - movs r2, #0x32 - ldrsh r0, [r7, r2] - subs r1, r1, r0 - mov r8, r1 - mov r1, sl - lsls r0, r1, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x14 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov sl, r0 - mov r2, r8 - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x14 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov r8, r0 - ldr r3, [r7, #0x64] - movs r0, #0 - mov sb, r0 - mov ip, r0 - movs r4, #0x13 -_080625C8: - mov r1, ip - asrs r0, r1, #8 - subs r0, r5, r0 - strh r0, [r3] - lsrs r0, r5, #0x10 - mov r2, sb - asrs r1, r2, #8 - subs r0, r0, r1 - strh r0, [r3, #2] - strh r6, [r3, #4] - lsrs r0, r6, #0x10 - strb r0, [r3, #6] - ldrb r0, [r7, #0x14] - movs r1, #0x3f - ands r1, r0 - ldrb r2, [r3, #7] - movs r0, #0x40 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #7] - adds r1, r7, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #6 - movs r2, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #7] - adds r3, #8 - add sb, r8 - add ip, sl - subs r4, #1 - cmp r4, #0 - bge _080625C8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08062618: .4byte gPlayerEntity -_0806261C: .4byte 0xFFFF0000 -_08062620: .4byte 0x0000FFFF -_08062624: .4byte gPlayerState -_08062628: .4byte 0xFF00FFFF -_0806262C: .4byte 0xC0FFFFFF -_08062630: .4byte 0x3FFFFFFF - - .syntax divided diff --git a/src/npc/kid.c b/src/npc/kid.c index 59e1e87f..24eba922 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -183,11 +183,12 @@ void sub_0806265C(Entity*, ScriptExecutionContext*); void sub_0806252C(Entity*); typedef struct { - u16 unk_0; /* u16 */ - u16 unk_2; /* u16 */ - u16 unk_4; /* u16 */ - u8 unk_6; - u8 unk_7; + u16 x; + u16 y; + u16 z; + u8 framestate; + u8 animationState : 6; + u8 collisionLayer : 2; } KidHeapItem; #define KID_HEAP_COUNT 0x14 @@ -318,45 +319,86 @@ void sub_08062500(Entity* this) { } } -NONMATCH("asm/non_matching/kid/sub_0806252C.inc", void sub_0806252C(Entity* this)) { +void sub_0806252C(Entity* this) { s16 sVar1; s16 sVar2; u16 uVar3; u8 uVar4; - s16 r0; s16 sVar5; s16 sVar6; u8 bVar7; - KidHeapItem* heapObj; + KidHeapItem* item; s32 loopVar; - s32 iVar10; - s32 iVar11; + FORCE_REGISTER(u32 r5, r5); + FORCE_REGISTER(u32 r6, r6); + FORCE_REGISTER(u32 r0, r0); + FORCE_REGISTER(u32 r1, r1); + FORCE_REGISTER(u32 r2, r2); + u32 r3; + FORCE_REGISTER(s32 r8, r8); + s32 y; + s32 r10; + FORCE_REGISTER(s32 x, r12); - uVar4 = gPlayerState.framestate; - uVar3 = gPlayerEntity.z.HALF.HI; - sVar2 = gPlayerEntity.y.HALF.HI; - sVar1 = gPlayerEntity.x.HALF.HI; - r0 = gPlayerEntity.y.HALF.HI - this->y.HALF.HI; - sVar5 = FixedDiv(gPlayerEntity.x.HALF.HI - this->x.HALF.HI, KID_HEAP_COUNT); - sVar6 = FixedDiv(r0, KID_HEAP_COUNT); - heapObj = (KidHeapItem*)this->myHeap; - iVar10 = 0; - iVar11 = 0; + r1 = gPlayerEntity.x.HALF_U.HI; + r3 = 0xffff0000; + r0 = r3; + r0 &= r5; + r0 |= r1; - for (loopVar = KID_HEAP_COUNT - 1; loopVar > -1; loopVar--) { - heapObj->unk_0 = sVar1 - (s16)((u32)iVar11 >> 8); - heapObj->unk_2 = sVar2 - (s16)((u32)iVar10 >> 8); - heapObj->unk_4 = uVar3; - heapObj->unk_6 = uVar4; - bVar7 = this->animationState & 0x3f; - heapObj->unk_7 = (heapObj->unk_7 & 0xc0) | bVar7; - heapObj->unk_7 = bVar7 | this->collisionLayer << 6; - heapObj = heapObj + 1; - iVar10 = iVar10 + sVar6; - iVar11 = iVar11 + sVar5; + r1 = gPlayerEntity.y.HALF_U.HI; + r1 <<= 0x10; + r2 = 0x0000ffff; + r0 &= r2; + r0 |= r1; + r5 = r0; + + r0 = gPlayerEntity.z.HALF_U.HI; + r3 &= r6; + r3 |= r0; + + r0 = gPlayerState.framestate; + r0 <<= 0x10; + r2 = 0xff00ffff; + r2 &= r3; + r2 |= r0; + + r1 = gPlayerEntity.animationState; + r0 = 0x3f; + r1 &= r0; + r1 <<= 0x18; + r0 = 0xc0ffffff; + r0 &= r2; + r0 |= r1; + + r1 = gPlayerEntity.collisionLayer; + r1 <<= 0x1e; + r2 = 0x3fffffff; + r0 &= r2; + r0 |= r1; + r6 = r0; + + r10 = r0 = gPlayerEntity.x.HALF.HI - this->x.HALF.HI; + r8 = r0 = gPlayerEntity.y.HALF.HI - this->y.HALF.HI; + + r10 = FixedDiv(r10, KID_HEAP_COUNT); + r8 = FixedDiv(r8, KID_HEAP_COUNT); + item = (KidHeapItem*)this->myHeap; + y = 0; + x = 0; + + for (loopVar = KID_HEAP_COUNT - 1; loopVar >= 0; loopVar--) { + item->x = r5 - (x >> 8); + item->y = (r5 >> 0x10) - (y >> 8); + item->z = r6; + item->framestate = r6 >> 0x10; + item->animationState = this->animationState & 0x3f; + item->collisionLayer = this->collisionLayer; + item++; + y = y + r8; + x = x + r10; } } -END_NONMATCH void sub_08062634(Entity* this) { u32 a = this->type2; From 3dd2ccc2110c9131df5c4ef24078f2d281fb34bd Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Mon, 9 Jan 2023 01:16:36 +0100 Subject: [PATCH 39/86] Name and organize Cucco Minigame stuff --- data/scripts/hyruleTown/script_Anju.inc | 12 +- src/object/cuccoMinigame.c | 161 +++++++++++++----------- 2 files changed, 96 insertions(+), 77 deletions(-) diff --git a/data/scripts/hyruleTown/script_Anju.inc b/data/scripts/hyruleTown/script_Anju.inc index adfccdb4..09bf74c8 100644 --- a/data/scripts/hyruleTown/script_Anju.inc +++ b/data/scripts/hyruleTown/script_Anju.inc @@ -16,7 +16,7 @@ script_0801015A: WaitUntilTextboxCloses CheckTextboxResult JumpIfNot script_080101A6 - Call sub_080A1608 + Call CuccoMinigame_TellObjective WaitUntilTextboxCloses EnablePlayerControl CallWithArg CuccoMinigame_Init, script_080101AC @@ -25,7 +25,7 @@ script_0801015A: SetRoomFlag 0x0001 Jump script_0801015A script_0801019E: - Call sub_080A1608 + Call CuccoMinigame_TellObjective WaitUntilTextboxCloses script_080101A6: EnablePlayerControl @@ -60,14 +60,14 @@ script_080101AC: SetFade4 WaitForFadeFinish PlayBGM - Call sub_080A13B4 + Call CuccoMinigame_Results WaitUntilTextboxCloses JumpIfNot script_08010240 - Call sub_080A13E8 + Call CuccoMinigame_WinItem WaitPlayerGetItem - Call sub_080A1460 + Call CuccoMinigame_WinRupees WaitUntilTextboxCloses - Call sub_080A14A8 + Call CuccoMinigame_AdvanceLevel script_08010240: Call EnablePauseMenu EnablePlayerControl diff --git a/src/object/cuccoMinigame.c b/src/object/cuccoMinigame.c index 1d87a6d0..4f3a1489 100644 --- a/src/object/cuccoMinigame.c +++ b/src/object/cuccoMinigame.c @@ -13,23 +13,28 @@ #include "npc.h" #include "object.h" #include "script.h" +#include "item.h" typedef struct { Entity base; - s16 unk68; - s16 unk6a; - s16 unk6c; + s16 timer; + s16 currentCuccos; + s16 targetCuccos; u16 unk6e; - u8 unk70[0x18]; + u8 returnedCuccoTypes[0x18]; } CuccoMinigameEntity; typedef Entity* CuccoMinigameHeap[10]; -u32 sub_080A1514(); +u32 CuccoMinigame_GetLevel(); -const u16 gUnk_08124C20[] = { - 25, 0x2, 25, 0x3, 30, 0x4, 45, 0x5, 50, 0x5, 45, 0x5, 50, 0x6, 60, 0x7, 55, 0x2, 55, 0x3, -}; +typedef struct { + u16 time; + u16 numCuccos; +} CuccoMinigameGoal; + +const CuccoMinigameGoal goalData[10] = { { 25, 2}, { 25, 3}, { 30, 4}, { 45, 5}, { 50, 5}, + { 45, 5}, { 50, 6}, { 60, 7}, { 55, 2}, { 55, 3} }; static const u16 pCuccoMinigame_MinigameCuccoDefs[][30] = { { 0x0001, 0x02E9, 0x0318, 0x0001, 0x0280, 0x0380, 0x0002, 0x0277, 0x0314, 0x0001, @@ -66,9 +71,23 @@ static const u16 pCuccoMinigame_MinigameCuccoDefs[][30] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }; -static const u8 gUnk_08124EA0[] = { 0x3F, 0x0A, 0x01, 0x00, 0x3F, 0x0A, 0x01, 0x00, 0x3F, 0x14, 0x01, 0x00, 0x3F, 0x14, - 0x01, 0x00, 0x3F, 0x1E, 0x01, 0x00, 0x3F, 0x1E, 0x01, 0x00, 0x5C, 0x6E, 0x01, 0x00, - 0x5C, 0x6F, 0x01, 0x00, 0x5C, 0x70, 0x01, 0x00, 0x63, 0x00, 0x01, 0x00 }; +typedef struct { + u8 item; + u8 subtype; + u8 unk2; + u8 unk3; +} CuccoMinigamePrizeData; + +static const CuccoMinigamePrizeData prizeData[10] = { { ITEM_SHELLS, 10, 1, 0 }, + { ITEM_SHELLS, 10, 1, 0 }, + { ITEM_SHELLS, 20, 1, 0 }, + { ITEM_SHELLS, 20, 1, 0 }, + { ITEM_SHELLS, 30, 1, 0 }, + { ITEM_SHELLS, 30, 1, 0 }, + { ITEM_KINSTONE, 0x6E, 1, 0 }, + { ITEM_KINSTONE, 0x6F, 1, 0 }, + { ITEM_KINSTONE, 0x70, 1, 0 }, + { ITEM_HEART_PIECE, 0, 1, 0 } }; static const u16 CuccoMinigame_Sounds[] = { SFX_VO_CUCCO5, SFX_VO_CUCCO_CALL }; @@ -78,17 +97,17 @@ void CuccoMinigame(CuccoMinigameEntity* this) { int index; u32 val; u8* puVar2; - const u16* ptr; + const CuccoMinigameGoal* ptr; if (super->action == 0) { super->action++; - ptr = gUnk_08124C20 + sub_080A1514() * 2; - this->unk68 = ptr[0] * 0x3c; - this->unk6a = 0; - this->unk6c = ptr[1]; + ptr = &goalData[CuccoMinigame_GetLevel()]; + this->timer = ptr->time * 60; + this->currentCuccos = 0; + this->targetCuccos = ptr->numCuccos; this->unk6e = 1; - for (puVar2 = this->unk70, val = 0, index = 9; index >= 0; index--) { + for (puVar2 = this->returnedCuccoTypes, val = 0, index = 9; index >= 0; index--) { *puVar2++ = val; } sub_0807DD64(super); @@ -110,7 +129,7 @@ NONMATCH("asm/non_matching/objectB9/sub_080A1270.inc", void sub_080A1270(CuccoMi sVar6 = 0; entArray = ((Entity**)super->myHeap); - ptr = this->unk70; + ptr = this->returnedCuccoTypes; iVar1 = (gRoomControls.origin_x + 0x360); iVar4 = (gRoomControls.origin_y + 0x350); iVar1 = (iVar1 << 16) >> 16; @@ -147,9 +166,9 @@ NONMATCH("asm/non_matching/objectB9/sub_080A1270.inc", void sub_080A1270(CuccoMi } } - this->unk6a = sVar6; + this->currentCuccos = sVar6; gPlayerState.field_0x27[0] = 0xff; - if (--this->unk68 < 1) { + if (--this->timer < 1) { SoundReq(SFX_CUCCO_MINIGAME_BELL); sub_08050384(); } else { @@ -163,7 +182,7 @@ void CuccoMinigame_Cleanup(CuccoMinigameEntity* this) { s8* pcVar2; int index; - pcVar2 = this->unk70; + pcVar2 = this->returnedCuccoTypes; puVar1 = super->myHeap; for (index = 9; index >= 0; index--, pcVar2++, puVar1++) { @@ -174,8 +193,8 @@ void CuccoMinigame_Cleanup(CuccoMinigameEntity* this) { } } -void sub_080A13B4(CuccoMinigameEntity* this, ScriptExecutionContext* context) { - if (this->unk6a >= this->unk6c) { +void CuccoMinigame_Results(CuccoMinigameEntity* this, ScriptExecutionContext* context) { + if (this->currentCuccos >= this->targetCuccos) { MessageFromTarget(TEXT_INDEX(TEXT_ANJU, 0xc)); context->condition = 1; } else { @@ -184,115 +203,115 @@ void sub_080A13B4(CuccoMinigameEntity* this, ScriptExecutionContext* context) { } } -void sub_080A13E8(CuccoMinigameEntity* this) { - bool32 bVar2; - const u8* ptr = &gUnk_08124EA0[sub_080A1514() * 4]; +void CuccoMinigame_WinItem(CuccoMinigameEntity* this) { + bool32 skipItem; + const CuccoMinigamePrizeData* prize = &prizeData[CuccoMinigame_GetLevel()]; - bVar2 = 0; - switch (ptr[0]) { - case 0x3f: + skipItem = 0; + switch (prize->item) { + case ITEM_SHELLS: if (gSave.stats.hasAllFigurines) { - bVar2 = 1; + skipItem = 1; } break; - case 0x5c: + case ITEM_KINSTONE: if (gSave.didAllFusions) { - bVar2 = 1; + skipItem = 1; } break; - case 0x63: + case ITEM_HEART_PIECE: if (!CheckGlobalFlag(ANJU_HEART)) { SetGlobalFlag(ANJU_HEART); break; } - bVar2 = 1; + skipItem = 1; break; } - if (!bVar2) { - InitItemGetSequence(ptr[0], ptr[1], 0); + if (!skipItem) { + InitItemGetSequence(prize->item, prize->subtype, 0); } else { this->unk6e = 2; } } -void sub_080A1460(CuccoMinigameEntity* this) { - s8* pcVar1; - int iVar2; +void CuccoMinigame_WinRupees(CuccoMinigameEntity* this) { + s8* cuccoTypes; + int index; s32 rupees; - const u8* ptr; + const u8* rupeeValues; - sub_080A1514(); - pcVar1 = this->unk70; + CuccoMinigame_GetLevel(); // Rupees previously dependent on level? + cuccoTypes = this->returnedCuccoTypes; rupees = 0; - ptr = CuccoMinigameRupees; + rupeeValues = CuccoMinigameRupees; - for (iVar2 = 9; iVar2 >= 0; iVar2--) { + for (index = 9; index >= 0; index--) { // Only first 10 count? // Weird register addition - // ptr[*pcVar1] translates to add r0,r3,r0 but should be add r0,r3 - u32 temp = *pcVar1; - temp += (int)ptr; + // rupeeValues[*cuccoTypes] translates to add r0,r3,r0 but should be add r0,r3 + u32 temp = *cuccoTypes; + temp += (int)rupeeValues; rupees += *(u8*)temp; - pcVar1++; + cuccoTypes++; } ModRupees(rupees); MessageNoOverlap(TEXT_INDEX(TEXT_ANJU, 0x7), super); gMessage.rupees = (u16)rupees; } -void sub_080A14A8(void) { - int iVar1; +void CuccoMinigame_AdvanceLevel(void) { + int level; - iVar1 = sub_080A1514(); - iVar1++; - if (iVar1 > 9) { - iVar1 = 9; + level = CuccoMinigame_GetLevel(); + level++; + if (level > 9) { + level = 9; } - if (iVar1 & 1) { + if (level & 1) { SetGlobalFlag(ANJU_LV_BIT0); } else { ClearGlobalFlag(ANJU_LV_BIT0); } - if (iVar1 & 2) { + if (level & 2) { SetGlobalFlag(ANJU_LV_BIT1); } else { ClearGlobalFlag(ANJU_LV_BIT1); } - if (iVar1 & 4) { + if (level & 4) { SetGlobalFlag(ANJU_LV_BIT2); } else { ClearGlobalFlag(ANJU_LV_BIT2); } - if (iVar1 & 8) { + if (level & 8) { SetGlobalFlag(ANJU_LV_BIT3); } else { ClearGlobalFlag(ANJU_LV_BIT3); } } -u32 sub_080A1514(void) { - u32 rv = 0; +u32 CuccoMinigame_GetLevel(void) { + u32 level = 0; if (CheckGlobalFlag(ANJU_LV_BIT0)) { - rv = 1; + level = 1; } if (CheckGlobalFlag(ANJU_LV_BIT1)) { - rv |= 2; + level |= 2; } if (CheckGlobalFlag(ANJU_LV_BIT2)) { - rv |= 4; + level |= 4; } if (CheckGlobalFlag(ANJU_LV_BIT3)) { - rv |= 8; + level |= 8; } - return rv; + return level; } void CuccoMinigame_Init(Entity* this, ScriptExecutionContext* context) { @@ -311,7 +330,7 @@ void CuccoMinigame_Init(Entity* this, ScriptExecutionContext* context) { } else { *(ScriptExecutionContext**)&((GenericEntity*)pEnt)->cutsceneBeh = (ScriptExecutionContext*)StartCutscene(pEnt, (u16*)context->intVariable); - pCuccoMinigameDef = pCuccoMinigame_MinigameCuccoDefs[sub_080A1514()]; + pCuccoMinigameDef = pCuccoMinigame_MinigameCuccoDefs[CuccoMinigame_GetLevel()]; ppEVar5 = (Entity**)pEnt->myHeap; room = &gRoomControls; for (index = 9; index >= 0; index--, pCuccoMinigameDef += 3) { @@ -332,9 +351,9 @@ void CuccoMinigame_Init(Entity* this, ScriptExecutionContext* context) { } } -void sub_080A1608(void) { +void CuccoMinigame_TellObjective(void) { u16 messageIndex; - const u16* ptr; + const CuccoMinigameGoal* ptr; messageIndex = TEXT_INDEX(TEXT_ANJU, 0x2); if (CheckRoomFlag(1)) { @@ -343,9 +362,9 @@ void sub_080A1608(void) { MessageFromTarget(messageIndex); gMessage.textWindowPosX = 1; gMessage.textWindowPosY = 0; - ptr = &gUnk_08124C20[sub_080A1514() * 2]; - gMessage.rupees = ptr[0]; - gMessage.field_0x14 = ptr[1]; + ptr = &goalData[CuccoMinigame_GetLevel()]; + gMessage.rupees = ptr->time; + gMessage.field_0x14 = ptr->numCuccos; } void sub_080A1648(void) { From c5a8bcc6a1b1d7abd2ef1c6a8722906e11308485 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Mon, 9 Jan 2023 01:50:55 +0100 Subject: [PATCH 40/86] Formatting --- src/object/cuccoMinigame.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/object/cuccoMinigame.c b/src/object/cuccoMinigame.c index 4f3a1489..6b5b13ad 100644 --- a/src/object/cuccoMinigame.c +++ b/src/object/cuccoMinigame.c @@ -33,8 +33,8 @@ typedef struct { u16 numCuccos; } CuccoMinigameGoal; -const CuccoMinigameGoal goalData[10] = { { 25, 2}, { 25, 3}, { 30, 4}, { 45, 5}, { 50, 5}, - { 45, 5}, { 50, 6}, { 60, 7}, { 55, 2}, { 55, 3} }; +const CuccoMinigameGoal goalData[10] = { { 25, 2 }, { 25, 3 }, { 30, 4 }, { 45, 5 }, { 50, 5 }, + { 45, 5 }, { 50, 6 }, { 60, 7 }, { 55, 2 }, { 55, 3 } }; static const u16 pCuccoMinigame_MinigameCuccoDefs[][30] = { { 0x0001, 0x02E9, 0x0318, 0x0001, 0x0280, 0x0380, 0x0002, 0x0277, 0x0314, 0x0001, @@ -78,16 +78,11 @@ typedef struct { u8 unk3; } CuccoMinigamePrizeData; -static const CuccoMinigamePrizeData prizeData[10] = { { ITEM_SHELLS, 10, 1, 0 }, - { ITEM_SHELLS, 10, 1, 0 }, - { ITEM_SHELLS, 20, 1, 0 }, - { ITEM_SHELLS, 20, 1, 0 }, - { ITEM_SHELLS, 30, 1, 0 }, - { ITEM_SHELLS, 30, 1, 0 }, - { ITEM_KINSTONE, 0x6E, 1, 0 }, - { ITEM_KINSTONE, 0x6F, 1, 0 }, - { ITEM_KINSTONE, 0x70, 1, 0 }, - { ITEM_HEART_PIECE, 0, 1, 0 } }; +static const CuccoMinigamePrizeData prizeData[10] = { { ITEM_SHELLS, 10, 1, 0 }, { ITEM_SHELLS, 10, 1, 0 }, + { ITEM_SHELLS, 20, 1, 0 }, { ITEM_SHELLS, 20, 1, 0 }, + { ITEM_SHELLS, 30, 1, 0 }, { ITEM_SHELLS, 30, 1, 0 }, + { ITEM_KINSTONE, 0x6E, 1, 0 }, { ITEM_KINSTONE, 0x6F, 1, 0 }, + { ITEM_KINSTONE, 0x70, 1, 0 }, { ITEM_HEART_PIECE, 0, 1, 0 } }; static const u16 CuccoMinigame_Sounds[] = { SFX_VO_CUCCO5, SFX_VO_CUCCO_CALL }; From ae16a42a0b197f8b733b70c77f94d6da187f9709 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Mon, 9 Jan 2023 01:53:52 +0100 Subject: [PATCH 41/86] Formatting, but why? --- src/object/cuccoMinigame.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/object/cuccoMinigame.c b/src/object/cuccoMinigame.c index 6b5b13ad..f6b02dd1 100644 --- a/src/object/cuccoMinigame.c +++ b/src/object/cuccoMinigame.c @@ -78,11 +78,11 @@ typedef struct { u8 unk3; } CuccoMinigamePrizeData; -static const CuccoMinigamePrizeData prizeData[10] = { { ITEM_SHELLS, 10, 1, 0 }, { ITEM_SHELLS, 10, 1, 0 }, - { ITEM_SHELLS, 20, 1, 0 }, { ITEM_SHELLS, 20, 1, 0 }, - { ITEM_SHELLS, 30, 1, 0 }, { ITEM_SHELLS, 30, 1, 0 }, - { ITEM_KINSTONE, 0x6E, 1, 0 }, { ITEM_KINSTONE, 0x6F, 1, 0 }, - { ITEM_KINSTONE, 0x70, 1, 0 }, { ITEM_HEART_PIECE, 0, 1, 0 } }; +static const CuccoMinigamePrizeData prizeData[10] = { { ITEM_SHELLS, 10, 1, 0 }, { ITEM_SHELLS, 10, 1, 0 }, + { ITEM_SHELLS, 20, 1, 0 }, { ITEM_SHELLS, 20, 1, 0 }, + { ITEM_SHELLS, 30, 1, 0 }, { ITEM_SHELLS, 30, 1, 0 }, + { ITEM_KINSTONE, 0x6E, 1, 0 }, { ITEM_KINSTONE, 0x6F, 1, 0 }, + { ITEM_KINSTONE, 0x70, 1, 0 }, { ITEM_HEART_PIECE, 0, 1, 0 } }; static const u16 CuccoMinigame_Sounds[] = { SFX_VO_CUCCO5, SFX_VO_CUCCO_CALL }; From 0f3766b04818b122f26f2dd6a16f28d26fc0e0f5 Mon Sep 17 00:00:00 2001 From: TomRiddle01 Date: Wed, 11 Jan 2023 18:37:08 +0100 Subject: [PATCH 42/86] update --- include/flags.h | 2988 +++++++++++++++++++++++------------------------ 1 file changed, 1494 insertions(+), 1494 deletions(-) diff --git a/include/flags.h b/include/flags.h index cc223fbe..2a7e5ef6 100644 --- a/include/flags.h +++ b/include/flags.h @@ -72,28 +72,28 @@ enum LocalFlagOffsets { typedef enum { BEGIN, - /*0x01*/ LV0_CLEAR, /* */ - /*0x02*/ LV1_CLEAR, /* */ - /*0x03*/ LV2_CLEAR, /* */ - /*0x04*/ LV3_CLEAR, /* */ - /*0x05*/ LV4_CLEAR, /* */ - /*0x06*/ LV5_CLEAR, /* */ - /*0x07*/ LV6_CLEAR, /* */ - /*0x08*/ LV7_CLEAR, /* */ - /*0x09*/ LV8_CLEAR, /* */ + /*0x01*/ LV0_CLEAR, + /*0x02*/ LV1_CLEAR, + /*0x03*/ LV2_CLEAR, + /*0x04*/ LV3_CLEAR, + /*0x05*/ LV4_CLEAR, + /*0x06*/ LV5_CLEAR, + /*0x07*/ LV6_CLEAR, + /*0x08*/ LV7_CLEAR, + /*0x09*/ LV8_CLEAR, /*0x0a*/ MACHI_SET_1, /* Defeated Big Green Chuchu */ /*0x0b*/ MACHI_SET_2, /* Defeated Gleerok */ - /*0x0c*/ MACHI_SET_3, /* */ + /*0x0c*/ MACHI_SET_3, /*0x0d*/ MACHI_SET_4, /* Defeated Big Octorok */ /*0x0e*/ MACHI_SET_5, /* Defeated Gyorg Pair */ - /*0x0f*/ MACHI_SET_6, /* */ - /*0x10*/ MACHI_SET_7, /* */ - /*0x11*/ MACHI_SET_8, /* */ + /*0x0f*/ MACHI_SET_6, + /*0x10*/ MACHI_SET_7, + /*0x11*/ MACHI_SET_8, /*0x12*/ MACHI_MACHIHOKORI, /* Sucked dust from carpet */ /*0x13*/ START, /* Met Zelda */ /*0x14*/ EZERO_1ST, /* Met Ezlo */ /*0x15*/ TABIDACHI, /* Talked to Daltus and Smith */ - /*0x16*/ LV1TARU, /* */ + /*0x16*/ LV1TARU, /*0x17*/ LV1TARU_OPEN, /* Sucked barrel web */ /*0x18*/ TATEKAKE_HOUSE, /* Red house complete */ /*0x19*/ TATEKAKE_TOCHU, /* Red house frame */ @@ -105,13 +105,13 @@ typedef enum { /*0x1f*/ LEFT_DOOR_OPEN, /* Spoke to Dr. Left */ /*0x20*/ HAKA_KEY_LOST, /* Graveyard key stolen */ /*0x21*/ HAKA_KEY_FOUND, /* Graveyard key obtained back */ - /*0x22*/ ENTRANCE_OK, /* */ - /*0x23*/ TATSUMAKI, /* */ + /*0x22*/ ENTRANCE_OK, + /*0x23*/ TATSUMAKI, /*0x24*/ KUMOTATSUMAKI, /* Vortex spawned */ - /*0x25*/ KAITENGIRI, /* */ - /*0x26*/ DAIKAITENGIRI, /* */ - /*0x27*/ GATOTSU, /* */ - /*0x28*/ KABUTOWARI, /* */ + /*0x25*/ KAITENGIRI, + /*0x26*/ DAIKAITENGIRI, + /*0x27*/ GATOTSU, + /*0x28*/ KABUTOWARI, /*0x29*/ MIZUKAKI_START, /* Spoke to Lake Hylia Minish */ /*0x2a*/ MIZUKAKI_HARIFALL, /* Library book falling */ /*0x2b*/ RENTED_HOUSE_DIN, /* Din moves to blue house */ @@ -141,7 +141,7 @@ typedef enum { /*0x43*/ GORON_KAKERA_M, /* Blue kinstone sold out */ /*0x44*/ GORON_KAKERA_R, /* Green kinstone sold out */ /*0x45*/ CHIKATSURO_SHUTTER, /* Castle basement door open */ - /*0x46*/ ENTRANCE_USED, /* */ + /*0x46*/ ENTRANCE_USED, /*0x47*/ GOMAN_RENTED_HOUSE, /* Spoke to Gorman blue house */ /*0x48*/ GOMAN_NEW_HOUSE, /* Spoke to Gorman red house */ /*0x49*/ OUTDOOR, /* Exited Link's house */ @@ -151,7 +151,7 @@ typedef enum { /*0x4d*/ ANJU_LV_BIT2, /* Cucco game 4 bit */ /*0x4e*/ ANJU_LV_BIT3, /* Cucco game 8 bit */ /*0x4f*/ ANJU_HEART, /* Cucco heart piece */ - /*0x50*/ MAROYA_WAKEUP, /* */ + /*0x50*/ MAROYA_WAKEUP, /*0x51*/ ENDING, /* Vaati's wrath defeated */ /*0x52*/ WARP_1ST, /* Wind ocarina unlocked */ /*0x53*/ WARP_MONUMENT, /* First windcrest discovered */ @@ -162,7 +162,7 @@ typedef enum { /*0x58*/ WARP_EVENT_END, /* Wind tribe tower state */ /*0x59*/ FIGURE_ALLCOMP, /* Obtained Carlov Medal */ /*0x5a*/ AKINDO_BOTTLE_SELL, /* Bought bottle from scrub */ - /*0x5b*/ BIN_DOGFOOD, /* */ + /*0x5b*/ BIN_DOGFOOD, /*0x5c*/ TINGLE_TALK1ST, /* Spoke to Tingle */ /*0x5d*/ SEIIKI_BGM, /* Elemental sanctuary BGM */ /*0x5e*/ ENTRANCE_0, /* Trunk entrance cutscene */ @@ -176,281 +176,281 @@ typedef enum { } Flag; typedef enum { - BEGIN_1, - LV1_CLEAR_MES, /* Ezlo talks about going to Elder after Earth Element in Outside Deepwood Shrine */ - LV2_CLEAR_MES, /* Ezlo talks after exiting with the Fire Element in Outside Cave of Flames */ - LV3_CLEAR_MES, /* Ezlo talks about the Wind Element in Outside Fortress of Winds */ - LV4_CLEAR_MES, /* King Gustaf Talks to Link in Lake Hylia, after Temple of Droplets */ - LV5_CLEAR_MES, /* Ezlo talks after completing Palace of Winds in Wind Tribe Tower Roof */ - MIZUUMI_00_BENT, /* Minish Tree Pegasus Bonked in Lake Hylia */ - MIZUUMI_00_00, /* West Shortcut Open in Lake Hylia */ - MIZUUMI_00_H00, /* Obtained Heart Piece in Lake Hylia, north */ - MIZUUMI_00_H01, /* Obtained Heart Piece in Lake Hylia, next to Stockwell's House */ - MIZUUMI_00_H02, /* Obtained Heart Piece in Lake Hylia, south */ + BEGIN_1, + LV1_CLEAR_MES, /* Ezlo talks about going to Elder after Earth Element in Outside Deepwood Shrine */ + LV2_CLEAR_MES, /* Ezlo talks after exiting with the Fire Element in Outside Cave of Flames */ + LV3_CLEAR_MES, /* Ezlo talks about the Wind Element in Outside Fortress of Winds */ + LV4_CLEAR_MES, /* King Gustaf Talks to Link in Lake Hylia, after Temple of Droplets */ + LV5_CLEAR_MES, /* Ezlo talks after completing Palace of Winds in Wind Tribe Tower Roof */ + MIZUUMI_00_BENT, /* Minish Tree Pegasus Bonked in Lake Hylia */ + MIZUUMI_00_00, /* West Shortcut Open in Lake Hylia */ + MIZUUMI_00_H00, /* Obtained Heart Piece in Lake Hylia, north */ + MIZUUMI_00_H01, /* Obtained Heart Piece in Lake Hylia, next to Stockwell's House */ + MIZUUMI_00_H02, /* Obtained Heart Piece in Lake Hylia, south */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - MIZUUMI_00_CAP_0, + MIZUUMI_00_CAP_0, #else HIKYOU_00_T0, - HIKYOU_00_T1, + HIKYOU_00_T1, #endif - MAENIWA_00_00, /* Ladder to Hyrule Castle Basement revealed in Hyrule Castle Garden */ - MAENIWA_00_01, - MAENIWA_00_02, /* Ladder to Grimblade revealed in Hyrule Castle Garden */ - MAENIWA_00_BENT, /* Minish Tree Pegasus Bonked in Hyrule Castle Garden */ - MAENIWA_00_WARP, /* Caught by guard in Hyrule Castle Garden, after Water Element */ - MAENIWA_00_T0, /* 100 Shell Chest Open in Hyrule Castle Garden (Water Entry) */ - MAENIWA_00_T1, /* 200 Rupee Chest Open in Hyrule Castle Garden (Water Entry) */ - MAENIWA_00_CAP_0, /* Ezlo talks about Castle entrance in Hyrule Castle Garden */ - NAKANIWA_00_EZERO, /* Ezlo talks about Sanctuary entrance in Hyrule Castle Entrance to Sanctuary */ - HIKYOU_00_00, /* Middle shortcut open in Castor Wilds */ - HIKYOU_00_01, /* South shortcut open in Castor Wilds */ - HIKYOU_00_02, - HIKYOU_00_03, - HIKYOU_00_04, - HIKYOU_00_CAP_0, /* Ezlo talks about Castor Wilds in Castor Wilds, entrance */ - HIKYOU_00_CAP_1, /* Ezlo talks about sinking in the swamp in Castor Wilds */ - HIKYOU_00_CAP_2, /* Ezlo talks about Eyegore in Castor Wilds */ - HIKYOU_00_SEKIZOU, /* Square block destroyed in Castor Wilds */ - HIKYOU_00_14, /* North shortcut open in Castor Wilds */ - HIKYOU_00_BOSEKI, /* Opened Swiftblade I's Grave in Castor Wilds */ + MAENIWA_00_00, /* Ladder to Hyrule Castle Basement revealed in Hyrule Castle Garden */ + MAENIWA_00_01, + MAENIWA_00_02, /* Ladder to Grimblade revealed in Hyrule Castle Garden */ + MAENIWA_00_BENT, /* Minish Tree Pegasus Bonked in Hyrule Castle Garden */ + MAENIWA_00_WARP, /* Caught by guard in Hyrule Castle Garden, after Water Element */ + MAENIWA_00_T0, /* 100 Shell Chest Open in Hyrule Castle Garden (Water Entry) */ + MAENIWA_00_T1, /* 200 Rupee Chest Open in Hyrule Castle Garden (Water Entry) */ + MAENIWA_00_CAP_0, /* Ezlo talks about Castle entrance in Hyrule Castle Garden */ + NAKANIWA_00_EZERO, /* Ezlo talks about Sanctuary entrance in Hyrule Castle Entrance to Sanctuary */ + HIKYOU_00_00, /* Middle shortcut open in Castor Wilds */ + HIKYOU_00_01, /* South shortcut open in Castor Wilds */ + HIKYOU_00_02, + HIKYOU_00_03, + HIKYOU_00_04, + HIKYOU_00_CAP_0, /* Ezlo talks about Castor Wilds in Castor Wilds, entrance */ + HIKYOU_00_CAP_1, /* Ezlo talks about sinking in the swamp in Castor Wilds */ + HIKYOU_00_CAP_2, /* Ezlo talks about Eyegore in Castor Wilds */ + HIKYOU_00_SEKIZOU, /* Square block destroyed in Castor Wilds */ + HIKYOU_00_14, /* North shortcut open in Castor Wilds */ + HIKYOU_00_BOSEKI, /* Opened Swiftblade I's Grave in Castor Wilds */ #if defined(EU) || defined(JP) || defined(DEMO_JP) HIKYOU_00_H00, #endif - HIKYOU_00_M0, /* Red W Kinstone Obtained in Castor Wilds, underwater */ - HIKYOU_00_M1, /* Red (> Kinstone Obtained in Castor Wilds, underwater */ - HIKYOU_00_M2, /* Red 3 Prong Kinstone Obtained in Castor Wilds, underwater */ + HIKYOU_00_M0, /* Red W Kinstone Obtained in Castor Wilds, underwater */ + HIKYOU_00_M1, /* Red (> Kinstone Obtained in Castor Wilds, underwater */ + HIKYOU_00_M2, /* Red 3 Prong Kinstone Obtained in Castor Wilds, underwater */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) HIKYOU_00_T1, #endif - LOST_00_ENTER, /* ??? in Wind Ruins */ - LOST_00_00, /* Shortcut 1 Open in Wind Ruins */ - LOST_00_01, /* Blew up wall to chest cave in Wind Ruins */ - LOST_02_00, /* Defeated Tektites in Wind Ruins */ - LOST_03_00, - LOST_03_T0, - LOST_04_00, /* Shortcut 2 Open in Wind Ruins */ - LOST_04_SIBA0, /* Cut top grass in Wind Ruins Minish Grass Path */ - LOST_04_SIBA1, /* Cut middle grass in Wind Ruins Minish Grass Path */ - LOST_04_SIBA2, /* Cut left grass in Wind Ruins Minish Grass Path */ - LOST_04_SIBA3, /* Cut right grass in Wind Ruins Minish Grass Path */ - LOST_04_SIBA4, /* Cut bottom grass in Wind Ruins Minish Grass Path */ - LOST_05_00, /* Defeated Armoses in Wind Ruins Running Armos */ - LOST_05_01, /* Defeated Beetles & Ropes in Wind Ruins */ + LOST_00_ENTER, /* ??? in Wind Ruins */ + LOST_00_00, /* Shortcut 1 Open in Wind Ruins */ + LOST_00_01, /* Blew up wall to chest cave in Wind Ruins */ + LOST_02_00, /* Defeated Tektites in Wind Ruins */ + LOST_03_00, + LOST_03_T0, + LOST_04_00, /* Shortcut 2 Open in Wind Ruins */ + LOST_04_SIBA0, /* Cut top grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA1, /* Cut middle grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA2, /* Cut left grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA3, /* Cut right grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA4, /* Cut bottom grass in Wind Ruins Minish Grass Path */ + LOST_05_00, /* Defeated Armoses in Wind Ruins Running Armos */ + LOST_05_01, /* Defeated Beetles & Ropes in Wind Ruins */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - LOST_05_02, - LOST_05_03, + LOST_05_02, + LOST_05_03, #endif - LOST_05_T0, /* 100 Rupee Chest Open in Wind Ruins */ - LOST_05_T1, /* 50 Shell Chest Open in Wind Ruins */ - MORI_00_HIBI_0, /* Left rock "blown up in Minish Woods */ - MORI_00_HIBI_1, /* Right rock "blown up in Minish Woods */ - MORI_00_HIBI_2, /* Blew up left rock in Minish Woods */ - MORI_00_HIBI_3, /* Blew up middle rock in Minish Woods */ - MORI_00_HIBI_4, /* Blew up right rock in Minish Woods */ - MORI_00_KOBITO, /* Ezlo explains Minish Portals 1 in Minish Woods */ - MORI_00_H0, /* Obtained Heart Piece (Witch's Hut) in Minish Woods */ - MORI_00_H1, /* Obtained Heart Piece (Next to Deepwood) in Minish Woods */ - MORI_ENTRANCE_1ST, /* Ezlo explains Minish Portals 2 in Minish Woods */ - YAMA_00_00, /* Middle Rock Pushed to Hole in Rainy Mount Crenel */ - YAMA_00_01, /* Right Rock Pushed to Hole in Rainy Mount Crenel */ - YAMA_01_BW00, /* Great Fairy Fountain cave blown open in Mount Crenel Wall */ - YAMA_02_00, /* Cave to Grip Ring Business Scrub blown open in Mount Crenel */ - YAMA_03_00, /* Fairy Heart Piece cave blown open in Mount Crenel */ - YAMA_03_01, /* Crenel Mines" cave blown open in Mount Crenel */ - YAMA_03_02, /* Heart Piece cave blown open in Mount Crenel */ - YAMA_03_DOKU_0, /* Pathway tile to cave "blown up in Mount Crenel, front of Heart Piece cave */ - YAMA_03_DOKU_1, /* Upper wall tile "blown up in Mount Crenel Wall Entrance */ - YAMA_03_DOKU_2, /* Bottom wall tile "blown up in Mount Crenel Wall Entrance */ - YAMA_04_CAP_0, /* Ezlo talks about Whirlwind in Mount Crenel Base */ + LOST_05_T0, /* 100 Rupee Chest Open in Wind Ruins */ + LOST_05_T1, /* 50 Shell Chest Open in Wind Ruins */ + MORI_00_HIBI_0, /* Left rock "blown up in Minish Woods */ + MORI_00_HIBI_1, /* Right rock "blown up in Minish Woods */ + MORI_00_HIBI_2, /* Blew up left rock in Minish Woods */ + MORI_00_HIBI_3, /* Blew up middle rock in Minish Woods */ + MORI_00_HIBI_4, /* Blew up right rock in Minish Woods */ + MORI_00_KOBITO, /* Ezlo explains Minish Portals 1 in Minish Woods */ + MORI_00_H0, /* Obtained Heart Piece (Witch's Hut) in Minish Woods */ + MORI_00_H1, /* Obtained Heart Piece (Next to Deepwood) in Minish Woods */ + MORI_ENTRANCE_1ST, /* Ezlo explains Minish Portals 2 in Minish Woods */ + YAMA_00_00, /* Middle Rock Pushed to Hole in Rainy Mount Crenel */ + YAMA_00_01, /* Right Rock Pushed to Hole in Rainy Mount Crenel */ + YAMA_01_BW00, /* Great Fairy Fountain cave blown open in Mount Crenel Wall */ + YAMA_02_00, /* Cave to Grip Ring Business Scrub blown open in Mount Crenel */ + YAMA_03_00, /* Fairy Heart Piece cave blown open in Mount Crenel */ + YAMA_03_01, /* Crenel Mines" cave blown open in Mount Crenel */ + YAMA_03_02, /* Heart Piece cave blown open in Mount Crenel */ + YAMA_03_DOKU_0, /* Pathway tile to cave "blown up in Mount Crenel, front of Heart Piece cave */ + YAMA_03_DOKU_1, /* Upper wall tile "blown up in Mount Crenel Wall Entrance */ + YAMA_03_DOKU_2, /* Bottom wall tile "blown up in Mount Crenel Wall Entrance */ + YAMA_04_CAP_0, /* Ezlo talks about Whirlwind in Mount Crenel Base */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - YAMA_04_CAP_1, + YAMA_04_CAP_1, #endif - YAMA_04_R00, /* Grabbed Red Rupee in Mount Crenel Base */ - YAMA_04_HIBI_0, - YAMA_04_HIBI_1, /* Rock to Spring blown up in Mount Crenel Base */ - YAMA_04_00, /* Bean 2 sprouted in Mount Crenel */ - YAMA_04_01, /* Bean 1 sprouted in Mount Crenel Base */ - YAMA_04_04, /* Fairy Blue Rupee cave blown open in Mount Crenel Base */ - YAMA_04_05, /* Cave to above blown open in Mount Crenel Base */ - YAMA_04_06, /* Cave to Crenel Spring blown open in Mount Crenel Base */ - YAMA_04_ENTHOUSHI, /* Sucked Spikes from Crenel Minish Rock in Mount Crenel */ - YAMA_04_ANAHOUSHI, /* Sucked Spike from Minish Hole in Mount Crenel */ - YAMA_04_BOMBWALL0, /* Cave next to entrance blown open in Mount Crenel Base */ - HAKA_BUNSHIN_00, /* King Gustaf's Grave Open in Royal Valley */ - HAKA_BOSEKI_00, /* Gina's Grave Open in Royal Valley */ - HAKA_BOSEKI_01, /* Heart Piece Grave Open in Royal Valley */ - HAKA_BOSEKI_02, /* Grave in the way of clones pushed in Royal Valley */ - HAKA_00_CAP_0, /* Ezlo talks about Royal Valley in Royal Valley Entrance */ - HAKA_00_BW00, /* Blew up wall to Great Fairy Fountain in Royal Valley Entrance */ - HAKA_01_T0, /* 200 Shell Chest Open in Royal Valley Maze Secret Chest */ - HAKA_KEY_GET, /* Ezlo talks about getting the key back in Royal Valley */ - SOUGEN_01_WAKAGI_0, /* Top bush cut west of Town Entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_1, /* Middle bush cut west of Town Entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_2, /* Bottom bush cut west of Town Entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_3, /* Top bush cut southwest of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_4, /* Middle bush cut southwest of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_5, /* Bottom bush cut southwest of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_6, /* Top bush cut southeast of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_7, /* Middle bush cut southeast of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_8, /* Bottom bush cut southeast of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_9, /* Top bush cut east of Town entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_10, /* Middle bush cut east of Town entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_11, /* Bottom left bush cut east of Town entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_12, /* Bottom right bush cut east of Town entrance (hidden behind tree) in South Hyrule Field */ - SOUGEN_01_00, /* Cave west of Town entrance blown open in South Hyrule Field */ - SOUGEN_01_BENT, /* Minish Tree Pegasus Bonked in South Hyrule Field */ - SOUGEN_01_ZELDA, /* Zelda enters Town in South Hyrule Field */ - SOUGEN_02_HIBI_0, /* Blown up left rock in Hyrule Field, from Minish Woods Exit */ - SOUGEN_02_HIBI_1, /* Blown up right rock in Hyrule Field, from Minish Woods Exit */ - SOUGEN_03_BOMBWALL, /* Cave blown open in Hyrule Field, north from Minish Woods Exit */ - SOUGEN_04_HIBI_0, /* Blown up top rock in Eastern Hills */ - SOUGEN_04_HIBI_1, /* Blown up middle left rock in Eastern Hills */ - SOUGEN_04_HIBI_2, /* Blown up middle right rock in Eastern Hills */ - SOUGEN_04_HIBI_3, /* Blown up bottom rock in Eastern Hills */ - SOUGEN_05_HIBI_0, /* Blown up left top rock in Lon Lon Ranch */ - SOUGEN_05_HIBI_1, /* Blown up right top rock in Lon Lon Ranch */ - SOUGEN_05_HIBI_2, /* Blown up right bottom rock in Lon Lon Ranch */ - SOUGEN_05_HIBI_3, /* Blown up left bottom rock in Lon Lon Ranch */ - SOUGEN_05_BOMB_00, /* Goron Cave Entrance Open in Lon Lon Ranch */ - SOUGEN_05_00, /* Northern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ - SOUGEN_05_01, /* Southern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ - SOUGEN_05_IWA02, /* Southern Lon Lon - Goron Cave Shortcut Open in Lon Lon Ranch */ - SOUGEN_05_BENT, /* Revealed the tree stump minish portal in Lon Lon Ranch */ - SOUGEN_05_H00, /* Obtained Heart Piece in Lon Lon Ranch (From Lake Hylia Cave) */ - SOUGEN_05_R0, /* Obtained hidden 50 Rupee in Lon Lon Ranch */ - SOUGEN_05_CAP_0, /* Ezlo talks about cows looking delicious in Lon Lon Ranch */ - SOUGEN_06_WAKAGI_0, /* Top bush cut east of Town entrance in Outside Castle */ - SOUGEN_06_WAKAGI_1, /* Top middle bush cut east of Town entrance in Outside Castle */ - SOUGEN_06_WAKAGI_2, /* Bottom middle bush cut east of Town entrance in Outside Castle */ - SOUGEN_06_WAKAGI_3, /* Bottom bush cut east of Town entrance in Outside Castle */ - SOUGEN_06_HIBI_0, /* Blew up left rock to Veil Falls in Outside Castle */ - SOUGEN_06_HIBI_1, /* Blew up right rock to Veil Falls in Outside Castle */ - SOUGEN_06_HIBI_2, /* Left fence piece "blown up in Outside Castle */ - SOUGEN_06_HIBI_3, /* Right fence piece "blown up in Outside Castle */ - SOUGEN_06_HIBI_4, /* Blew up west rock in Outside Castle */ - SOUGEN_06_IWA_0, /* Minish Hole Open in Outside Castle, East Rock */ - SOUGEN_06_AKINDO, /* Defeated Deku Scrub in Outside Castle */ - SOUGEN_06_SAIKAI, /* Defeated Vaati Moblins in Outside Castle */ - SOUGEN_06_BENT, /* Minish Tree Pegasus Bonked in Outside Castle */ - SOUGEN_06_SLIDE, /* Shortcut bridge opened in Outside Castle */ - SOUGEN_06_R1, /* Obtained hidden 50 Rupees in Outside Castle */ - SOUGEN_07_00, /* Blown open Keese chest cave in Trilby Highlands, above exit ladder */ - SOUGEN_07_01, /* Blown open Fairy Fountain in Trilby Highlands, next to shortcut */ - SOUGEN_07_02, /* Trilby - South Trilby Shortcut Open in Trilby Highlands */ + YAMA_04_R00, /* Grabbed Red Rupee in Mount Crenel Base */ + YAMA_04_HIBI_0, + YAMA_04_HIBI_1, /* Rock to Spring blown up in Mount Crenel Base */ + YAMA_04_00, /* Bean 2 sprouted in Mount Crenel */ + YAMA_04_01, /* Bean 1 sprouted in Mount Crenel Base */ + YAMA_04_04, /* Fairy Blue Rupee cave blown open in Mount Crenel Base */ + YAMA_04_05, /* Cave to above blown open in Mount Crenel Base */ + YAMA_04_06, /* Cave to Crenel Spring blown open in Mount Crenel Base */ + YAMA_04_ENTHOUSHI, /* Sucked Spikes from Crenel Minish Rock in Mount Crenel */ + YAMA_04_ANAHOUSHI, /* Sucked Spike from Minish Hole in Mount Crenel */ + YAMA_04_BOMBWALL0, /* Cave next to entrance blown open in Mount Crenel Base */ + HAKA_BUNSHIN_00, /* King Gustaf's Grave Open in Royal Valley */ + HAKA_BOSEKI_00, /* Gina's Grave Open in Royal Valley */ + HAKA_BOSEKI_01, /* Heart Piece Grave Open in Royal Valley */ + HAKA_BOSEKI_02, /* Grave in the way of clones pushed in Royal Valley */ + HAKA_00_CAP_0, /* Ezlo talks about Royal Valley in Royal Valley Entrance */ + HAKA_00_BW00, /* Blew up wall to Great Fairy Fountain in Royal Valley Entrance */ + HAKA_01_T0, /* 200 Shell Chest Open in Royal Valley Maze Secret Chest */ + HAKA_KEY_GET, /* Ezlo talks about getting the key back in Royal Valley */ + SOUGEN_01_WAKAGI_0, /* Top bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_1, /* Middle bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_2, /* Bottom bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_3, /* Top bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_4, /* Middle bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_5, /* Bottom bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_6, /* Top bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_7, /* Middle bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_8, /* Bottom bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_9, /* Top bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_10, /* Middle bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_11, /* Bottom left bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_12, /* Bottom right bush cut east of Town entrance (hidden behind tree) in South Hyrule Field */ + SOUGEN_01_00, /* Cave west of Town entrance blown open in South Hyrule Field */ + SOUGEN_01_BENT, /* Minish Tree Pegasus Bonked in South Hyrule Field */ + SOUGEN_01_ZELDA, /* Zelda enters Town in South Hyrule Field */ + SOUGEN_02_HIBI_0, /* Blown up left rock in Hyrule Field, from Minish Woods Exit */ + SOUGEN_02_HIBI_1, /* Blown up right rock in Hyrule Field, from Minish Woods Exit */ + SOUGEN_03_BOMBWALL, /* Cave blown open in Hyrule Field, north from Minish Woods Exit */ + SOUGEN_04_HIBI_0, /* Blown up top rock in Eastern Hills */ + SOUGEN_04_HIBI_1, /* Blown up middle left rock in Eastern Hills */ + SOUGEN_04_HIBI_2, /* Blown up middle right rock in Eastern Hills */ + SOUGEN_04_HIBI_3, /* Blown up bottom rock in Eastern Hills */ + SOUGEN_05_HIBI_0, /* Blown up left top rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_1, /* Blown up right top rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_2, /* Blown up right bottom rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_3, /* Blown up left bottom rock in Lon Lon Ranch */ + SOUGEN_05_BOMB_00, /* Goron Cave Entrance Open in Lon Lon Ranch */ + SOUGEN_05_00, /* Northern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_01, /* Southern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_IWA02, /* Southern Lon Lon - Goron Cave Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_BENT, /* Revealed the tree stump minish portal in Lon Lon Ranch */ + SOUGEN_05_H00, /* Obtained Heart Piece in Lon Lon Ranch (From Lake Hylia Cave) */ + SOUGEN_05_R0, /* Obtained hidden 50 Rupee in Lon Lon Ranch */ + SOUGEN_05_CAP_0, /* Ezlo talks about cows looking delicious in Lon Lon Ranch */ + SOUGEN_06_WAKAGI_0, /* Top bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_1, /* Top middle bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_2, /* Bottom middle bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_3, /* Bottom bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_HIBI_0, /* Blew up left rock to Veil Falls in Outside Castle */ + SOUGEN_06_HIBI_1, /* Blew up right rock to Veil Falls in Outside Castle */ + SOUGEN_06_HIBI_2, /* Left fence piece "blown up in Outside Castle */ + SOUGEN_06_HIBI_3, /* Right fence piece "blown up in Outside Castle */ + SOUGEN_06_HIBI_4, /* Blew up west rock in Outside Castle */ + SOUGEN_06_IWA_0, /* Minish Hole Open in Outside Castle, East Rock */ + SOUGEN_06_AKINDO, /* Defeated Deku Scrub in Outside Castle */ + SOUGEN_06_SAIKAI, /* Defeated Vaati Moblins in Outside Castle */ + SOUGEN_06_BENT, /* Minish Tree Pegasus Bonked in Outside Castle */ + SOUGEN_06_SLIDE, /* Shortcut bridge opened in Outside Castle */ + SOUGEN_06_R1, /* Obtained hidden 50 Rupees in Outside Castle */ + SOUGEN_07_00, /* Blown open Keese chest cave in Trilby Highlands, above exit ladder */ + SOUGEN_07_01, /* Blown open Fairy Fountain in Trilby Highlands, next to shortcut */ + SOUGEN_07_02, /* Trilby - South Trilby Shortcut Open in Trilby Highlands */ #if defined(JP) || defined(EU) || defined(DEMO_JP) SOUGEN_07_H00, #endif - SOUGEN_08_00, /* South Hyrule Field - Western Wood Shortcut Open in Western Wood */ - SOUGEN_08_01, /* Dug Up Top Left 50 Rupee in Western Wood */ - SOUGEN_08_02, /* Dug Up Bottom Left 50 Rupee in Western Wood */ - SOUGEN_08_03, /* Dug Up Top Center 50 Rupee in Western Wood */ - SOUGEN_08_04, /* Dug Up Bottom Center 50 Rupee in Western Wood */ - SOUGEN_08_05, /* Dug Up Top Right 50 Rupee in Western Wood */ - SOUGEN_08_06, /* Dug Up Bottom Right 50 Rupee in Western Wood */ - SOUGEN_08_07, /* Dug Up Left 200 Rupee in Western Wood */ - SOUGEN_08_08, /* Dug Up Right 200 Rupee in Western Wood */ - SOUGEN_08_TORITSUKI, /* Vaati takes over King Daltus in West Hyrule */ - SOUGEN_08_T00, /* 100 Shell Chest Open in Western Wood */ - CASTLE_00_00, - CASTLE_04_MEZAME, /* Disable sleeping cutscene (Intro) in Hyrule Castle Garden, bedroom */ - CASTLE_04_MAID_TALK, /* Spoke to Vassal (Intro) in Hyrule Castle Garden, bedroom */ - SUIGEN_00_h0, /* Obtained Heart Piece in Veil Falls Outside West Digging Cave */ - SUIGEN_00_T0, /* 100 Shell Chest Open in Veil Falls Entrance Cave Secret Area */ - SUIGEN_00_r0, /* Obtained Red Rupee (Top left) in Veil Falls Outside East Digging Cave */ - SUIGEN_00_r1, /* Obtained Red Rupee (Bottom left) in Veil Falls Outside East Digging Cave */ - SUIGEN_00_r2, /* Obtained Red Rupee (Bottom right) in Veil Falls Outside East Digging Cave */ - SUIGEN_00_CAP_0, /* Ezlo talks about waterfall in Veil Falls, near Kinstone door */ - SUIGEN_00_CAP_1, - SUIGEN_00_R0, /* Obtained hidden 50 Rupee in Veil Falls, rock circle */ - SUIGEN_00_R1, + SOUGEN_08_00, /* South Hyrule Field - Western Wood Shortcut Open in Western Wood */ + SOUGEN_08_01, /* Dug Up Top Left 50 Rupee in Western Wood */ + SOUGEN_08_02, /* Dug Up Bottom Left 50 Rupee in Western Wood */ + SOUGEN_08_03, /* Dug Up Top Center 50 Rupee in Western Wood */ + SOUGEN_08_04, /* Dug Up Bottom Center 50 Rupee in Western Wood */ + SOUGEN_08_05, /* Dug Up Top Right 50 Rupee in Western Wood */ + SOUGEN_08_06, /* Dug Up Bottom Right 50 Rupee in Western Wood */ + SOUGEN_08_07, /* Dug Up Left 200 Rupee in Western Wood */ + SOUGEN_08_08, /* Dug Up Right 200 Rupee in Western Wood */ + SOUGEN_08_TORITSUKI, /* Vaati takes over King Daltus in West Hyrule */ + SOUGEN_08_T00, /* 100 Shell Chest Open in Western Wood */ + CASTLE_00_00, + CASTLE_04_MEZAME, /* Disable sleeping cutscene (Intro) in Hyrule Castle Garden, bedroom */ + CASTLE_04_MAID_TALK, /* Spoke to Vassal (Intro) in Hyrule Castle Garden, bedroom */ + SUIGEN_00_h0, /* Obtained Heart Piece in Veil Falls Outside West Digging Cave */ + SUIGEN_00_T0, /* 100 Shell Chest Open in Veil Falls Entrance Cave Secret Area */ + SUIGEN_00_r0, /* Obtained Red Rupee (Top left) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_r1, /* Obtained Red Rupee (Bottom left) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_r2, /* Obtained Red Rupee (Bottom right) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_CAP_0, /* Ezlo talks about waterfall in Veil Falls, near Kinstone door */ + SUIGEN_00_CAP_1, + SUIGEN_00_R0, /* Obtained hidden 50 Rupee in Veil Falls, rock circle */ + SUIGEN_00_R1, #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - SUIGEN_00_R2, + SUIGEN_00_R2, #endif - SUIGEN_00_h1, /* Obtained Heart Piece in Veil Falls South */ - SUIGENGORON_00_CAP_0, /* Ezlo talks about vortex in Veil Springs */ - DAIGORON_SHIELD, /* Gave biggoron the first shield in Veil Falls, Biggoron */ - DAIGORON_EXCHG, /* Biggoron is tasting a shield in Veil Falls, Biggoron */ - BEANDEMO_00, /* Crenel Summit Beanstalk has grown in Melari's mines, fuse with Melari */ - BEANDEMO_01, /* Lake Hylia Beanstalk has grown in Lake Hylia, fuse with minish elder impersonator */ - BEANDEMO_02, /* Wind Ruins Beanstalk has grown in Wind Ruins, Minish Hole, fuse with minish */ - BEANDEMO_03, /* Eastern Hills Beanstalk has grown in Eastern Hills, Minish house, fuse with minish */ - BEANDEMO_04, /* Western Wood Beanstalk has grown in Western Wood, Minish house, fuse with minish */ - KAKERA_TAKARA_A, /* Bottle Chest Opened in Eastern Hills */ - KAKERA_TAKARA_E, /* Blue S Kinstone Chest Open in Minish Woods, northwest */ + SUIGEN_00_h1, /* Obtained Heart Piece in Veil Falls South */ + SUIGENGORON_00_CAP_0, /* Ezlo talks about vortex in Veil Springs */ + DAIGORON_SHIELD, /* Gave biggoron the first shield in Veil Falls, Biggoron */ + DAIGORON_EXCHG, /* Biggoron is tasting a shield in Veil Falls, Biggoron */ + BEANDEMO_00, /* Crenel Summit Beanstalk has grown in Melari's mines, fuse with Melari */ + BEANDEMO_01, /* Lake Hylia Beanstalk has grown in Lake Hylia, fuse with minish elder impersonator */ + BEANDEMO_02, /* Wind Ruins Beanstalk has grown in Wind Ruins, Minish Hole, fuse with minish */ + BEANDEMO_03, /* Eastern Hills Beanstalk has grown in Eastern Hills, Minish house, fuse with minish */ + BEANDEMO_04, /* Western Wood Beanstalk has grown in Western Wood, Minish house, fuse with minish */ + KAKERA_TAKARA_A, /* Bottle Chest Opened in Eastern Hills */ + KAKERA_TAKARA_E, /* Blue S Kinstone Chest Open in Minish Woods, northwest */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - KAKERA_TAKARA_J, + KAKERA_TAKARA_J, #endif - KAKERA_TAKARA_K, /* Bomb Bag Chest Open in Wind Ruins, near entrance to Fortress of Winds */ - KAKERA_TAKARA_L, /* Red W Kinstone Chest Open in Minish Woods */ - KAKERA_TAKARA_M, /* Red (> Kinstone Chest Open in Trilby Highlands */ - KAKERA_TAKARA_N, /* Red 3 Prong Kinstone Chest Open in Minish Woods */ - KAKERA_TAKARA_O, /* 200 Rupee Chest Opened in Minish Woods */ - KAKERA_TAKARA_P, /* 200 Shell Chest Open in South Hyrule Field */ - KAKERA_TAKARA_Q, /* Red 3 Prong Kinstone Chest Open in Royal Valley Graveyard, northwest chest */ - KAKERA_TAKARA_R, /* Red (> Kinstone Chest Open in Royal Valley Graveyard, northeast chest */ - KAKERA_TAKARA_S, /* Red W Kinstone Chest Open in Trilby Highlands */ - KAKERA_TAKARA_T, /* 200 Shell Chest Open in North Hyrule Field */ - KAKERA_TAKARA_U, /* 200 Rupee Chest Open in Lon Lon Ranch */ - KAKERA_TAKARA_V, /* Blue S Kinstone Chest Open in Veil Falls */ - KAKERA_TAKARA_W, /* Blue L Kinstone Chest Open in Mt. Crenel */ - KAKERA_TAKARA_X, /* 200 Rupee Chest Open in Crenel base */ - KAKERA_TAKARA_Y, /* 200 Shell Chest Open in Wind Ruins Tektite Room */ - KAKERA_TAKARA_Z, - MACHI_02_HEISHI /* Showed Spin Attack to Westside Soldier in Hyrule Town */_TALK, /* Spoke to Westside Soldier in Hyrule Town */ - MACHI00_00, /* Flipped Minish Pot in Hyrule Town, Top of Library */ - MACHI00_02, /* Un-Flipped Minish Pot in Hyrule Town, Top of School */ - MACHI00_03, /* Pushed box in the minish cat path in Hyrule Town */ - MACHI_00_T00, /* Red > Kinstone Chest Open in Hyrule Town, Happy Hearth Balcony */ - MACHI_00_T01, /* Opened Red W Kinstone Chest in Hyrule Town, Top of School */ - MACHI_01_DEMO, /* Lolly and Candy Moved in Hyrule Town, Festival */ + KAKERA_TAKARA_K, /* Bomb Bag Chest Open in Wind Ruins, near entrance to Fortress of Winds */ + KAKERA_TAKARA_L, /* Red W Kinstone Chest Open in Minish Woods */ + KAKERA_TAKARA_M, /* Red (> Kinstone Chest Open in Trilby Highlands */ + KAKERA_TAKARA_N, /* Red 3 Prong Kinstone Chest Open in Minish Woods */ + KAKERA_TAKARA_O, /* 200 Rupee Chest Opened in Minish Woods */ + KAKERA_TAKARA_P, /* 200 Shell Chest Open in South Hyrule Field */ + KAKERA_TAKARA_Q, /* Red 3 Prong Kinstone Chest Open in Royal Valley Graveyard, northwest chest */ + KAKERA_TAKARA_R, /* Red (> Kinstone Chest Open in Royal Valley Graveyard, northeast chest */ + KAKERA_TAKARA_S, /* Red W Kinstone Chest Open in Trilby Highlands */ + KAKERA_TAKARA_T, /* 200 Shell Chest Open in North Hyrule Field */ + KAKERA_TAKARA_U, /* 200 Rupee Chest Open in Lon Lon Ranch */ + KAKERA_TAKARA_V, /* Blue S Kinstone Chest Open in Veil Falls */ + KAKERA_TAKARA_W, /* Blue L Kinstone Chest Open in Mt. Crenel */ + KAKERA_TAKARA_X, /* 200 Rupee Chest Open in Crenel base */ + KAKERA_TAKARA_Y, /* 200 Shell Chest Open in Wind Ruins Tektite Room */ + KAKERA_TAKARA_Z, + MACHI_02_HEISHI /* Showed Spin Attack to Westside Soldier in Hyrule Town */_TALK, /* Spoke to Westside Soldier in Hyrule Town */ + MACHI00_00, /* Flipped Minish Pot in Hyrule Town, Top of Library */ + MACHI00_02, /* Un-Flipped Minish Pot in Hyrule Town, Top of School */ + MACHI00_03, /* Pushed box in the minish cat path in Hyrule Town */ + MACHI_00_T00, /* Red > Kinstone Chest Open in Hyrule Town, Happy Hearth Balcony */ + MACHI_00_T01, /* Opened Red W Kinstone Chest in Hyrule Town, Top of School */ + MACHI_01_DEMO, /* Lolly and Candy Moved in Hyrule Town, Festival */ MACHI_02_HEISHI, MACHI_02_DOG, /* Talk to dog as minish */ - MACHI_07_BELL, /* Obtained Heart Piece in Bell in Hyrule Town */ - SHOP05_OPEN, /* Figurine House Open in Hyrule Town */ - MACHI_MES_20, /* Talked to gossip woman (right of well) in Hyrule Town */ - MACHI_MES_21, /* Talked to gossip woman (left of well) in Hyrule Town */ - MACHI_MES_22, /* Talked to the boy next to the girl at the water fountain in Hyrule Town */ - MACHI_MES_23, /* Talked to the girl next to the boy at the water fountain in Hyrule Town */ - MACHI_MES_24, /* Talked to man near mushroom house in Hyrule Town, State 2 */ - MACHI_MES_30, /* Talked to man near mushroom house in Hyrule Town, State 4 */ - MACHI_MES_40, /* Talked to man near mushroom house in Hyrule Town, State 5 */ - MACHI_MES_60, /* Spoke to Jasmine (Woman outside Cafe) in Hyrule Town */ - MACHI_MES_50, /* Spoke to Herb (Figurine House Owner) in Hyrule Town */ + MACHI_07_BELL, /* Obtained Heart Piece in Bell in Hyrule Town */ + SHOP05_OPEN, /* Figurine House Open in Hyrule Town */ + MACHI_MES_20, /* Talked to gossip woman (right of well) in Hyrule Town */ + MACHI_MES_21, /* Talked to gossip woman (left of well) in Hyrule Town */ + MACHI_MES_22, /* Talked to the boy next to the girl at the water fountain in Hyrule Town */ + MACHI_MES_23, /* Talked to the girl next to the boy at the water fountain in Hyrule Town */ + MACHI_MES_24, /* Talked to man near mushroom house in Hyrule Town, State 2 */ + MACHI_MES_30, /* Talked to man near mushroom house in Hyrule Town, State 4 */ + MACHI_MES_40, /* Talked to man near mushroom house in Hyrule Town, State 5 */ + MACHI_MES_60, /* Spoke to Jasmine (Woman outside Cafe) in Hyrule Town */ + MACHI_MES_50, /* Spoke to Herb (Figurine House Owner) in Hyrule Town */ MACHI_DOG_C, /* Seen all dog dialogue */ - KUMOUE_00_CAP_0, /* Ezlo talks about Wind Tribe Tower in Cloud Tops 3F */ - KUMOUE_01_CAP_0, /* Ezlo talks about Wind Tribe Tower in Cloud Tops 2F */ - KUMOUE_01_T0, /* East Gold E Kinstone Chest Open in Cloud Tops 2F East */ - KUMOUE_01_T1, /* Middle Gold Jagged Kinstone Chest Open in Cloud Tops 2F Middle */ - KUMOUE_01_T2, /* Top West Gold Jagged Kinstone Chest Open in Cloud Tops 2F Top West */ - KUMOUE_01_T3, /* 50 Shell Chest Open in Cloud Tops 2F Top West Left Chest */ - KUMOUE_01_T4, /* 50 Shell Chest Open in Cloud Tops 2F Top West Right Chest */ - KUMOUE_01_T5, /* 50 Shell Chest Open in Cloud Tops 2F Bottom West Chest */ - KUMOUE_01_T6, /* 50 Shell Chest Open in Cloud Tops 2F Middle Chest */ - KUMOUR_01_K0, /* Green < Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K1, /* Red (> Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K2, /* Blue L Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K3, /* Green [ Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K4, /* Green / Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K5, /* Red W Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K6, /* Blue S Kinstone Obtained in Cloud Tops 2F */ - KUMONOUE_01_KAKERA, - KUMOUE_02_CAP_0, /* Ezlo talks after landing in Cloud Tops Entrance */ - KUMOUE_02_AWASE_01, /* Top Right Pinwheel Spinning in Cloud Tops, fuse with Top Right Cloud */ - KUMOUE_02_AWASE_02, /* Bottom Left Pinwheel Spinning in Cloud Tops, fuse with Bottom Left Cloud */ - KUMOUE_02_AWASE_03, /* Top Left Pinwheel Spinning in Cloud Tops, fuse with Top Left Cloud */ - KUMOUE_02_AWASE_04, /* Middle Pinwheel Spinning in Cloud Tops, fuse with Middle Cloud */ - KUMOUE_02_AWASE_05, /* Bottom Right Pinwheel Spinning in Cloud Tops, fuse with Bottom Right Cloud */ - KUMOUE_02_00, /* Defeated Top Cloud Piranhas in Cloud Tops North */ - KUMOUE_02_01, /* Obtained Top Gold Σ Kinstone in Cloud Tops, Top Piranhas */ - KUMOUE_02_02, /* Defeated Bottom Cloud Piranhas in Cloud Tops South */ - KUMOUE_02_03, /* Obtained Bottom Σ Gold Kinstone in Cloud Tops, Bottom Piranhas */ - KUMOUE_UNCLE_TALK, /* Talked to Gale in Cloud Tops Entrance */ - KUMOUE_GIRL_TALK, /* Talked to Hailey in Cloud Tops Entrance */ + KUMOUE_00_CAP_0, /* Ezlo talks about Wind Tribe Tower in Cloud Tops 3F */ + KUMOUE_01_CAP_0, /* Ezlo talks about Wind Tribe Tower in Cloud Tops 2F */ + KUMOUE_01_T0, /* East Gold E Kinstone Chest Open in Cloud Tops 2F East */ + KUMOUE_01_T1, /* Middle Gold Jagged Kinstone Chest Open in Cloud Tops 2F Middle */ + KUMOUE_01_T2, /* Top West Gold Jagged Kinstone Chest Open in Cloud Tops 2F Top West */ + KUMOUE_01_T3, /* 50 Shell Chest Open in Cloud Tops 2F Top West Left Chest */ + KUMOUE_01_T4, /* 50 Shell Chest Open in Cloud Tops 2F Top West Right Chest */ + KUMOUE_01_T5, /* 50 Shell Chest Open in Cloud Tops 2F Bottom West Chest */ + KUMOUE_01_T6, /* 50 Shell Chest Open in Cloud Tops 2F Middle Chest */ + KUMOUR_01_K0, /* Green < Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K1, /* Red (> Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K2, /* Blue L Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K3, /* Green [ Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K4, /* Green / Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K5, /* Red W Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K6, /* Blue S Kinstone Obtained in Cloud Tops 2F */ + KUMONOUE_01_KAKERA, + KUMOUE_02_CAP_0, /* Ezlo talks after landing in Cloud Tops Entrance */ + KUMOUE_02_AWASE_01, /* Top Right Pinwheel Spinning in Cloud Tops, fuse with Top Right Cloud */ + KUMOUE_02_AWASE_02, /* Bottom Left Pinwheel Spinning in Cloud Tops, fuse with Bottom Left Cloud */ + KUMOUE_02_AWASE_03, /* Top Left Pinwheel Spinning in Cloud Tops, fuse with Top Left Cloud */ + KUMOUE_02_AWASE_04, /* Middle Pinwheel Spinning in Cloud Tops, fuse with Middle Cloud */ + KUMOUE_02_AWASE_05, /* Bottom Right Pinwheel Spinning in Cloud Tops, fuse with Bottom Right Cloud */ + KUMOUE_02_00, /* Defeated Top Cloud Piranhas in Cloud Tops North */ + KUMOUE_02_01, /* Obtained Top Gold Σ Kinstone in Cloud Tops, Top Piranhas */ + KUMOUE_02_02, /* Defeated Bottom Cloud Piranhas in Cloud Tops South */ + KUMOUE_02_03, /* Obtained Bottom Σ Gold Kinstone in Cloud Tops, Bottom Piranhas */ + KUMOUE_UNCLE_TALK, /* Talked to Gale in Cloud Tops Entrance */ + KUMOUE_GIRL_TALK, /* Talked to Hailey in Cloud Tops Entrance */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - KS_A06, - KS_B18, - KS_C21, - KS_C25, + KS_A06, + KS_B18, + KS_C21, + KS_C25, #else MIZUUMI_00_CAP_0, SUIGEN_00_R2, @@ -466,221 +466,221 @@ typedef enum { } LocalFlags1; typedef enum { - BEGIN_2, - BILL05_YADO1F_MATSU_T0, /* Luxury Room" Chest Open in Hyrule Town, Happy Hearth */ - BILL06_YADO1F_TAKE_T0, /* Regular Room" Chest Open in Hyrule Town, Happy Hearth */ - BILL07_YADO1F_UME_T0, /* Cheap Room" Chest Open in Hyrule Town, Happy Hearth */ - BILL0A_YADO_TAKARA_T0, - SHOUSE_00_T0, /* Green (< Kinstone Chest Open in Wind Tribe Tower 1F Left Chest */ - SHOUSE_00_T1, /* Green Rectangle Kinstone Chest Open in Wind Tribe Tower 1F Right Chest */ - SHOUSE_01_T0, /* Green / Kinstone Chest Open in Wind Tribe Tower 2F */ - SHOUSE_02_T0, /* Red W Kinstone Chest Open in Wind Tribe Tower 3F Right Chest */ - SHOUSE_02_T1, /* Blue S Kinstone Chest Open in Wind Tribe Tower 3F Middle Chest */ - SHOUSE_02_T2, /* Blue L Kinstone Chest Open in Wind Tribe Tower 3F Left Chest */ - SHOUSE_02_XXXX0, - SHOUSE_02_XXXX1, - SHOUSE_02_XXXX2, - SHOUSE_03_T0, /* Red (> Kinstone Chest Open in Wind Tribe Tower 4F Left Chest */ - SHOUSE_03_T1, /* Red 3 Prong Chest Open in Wind Tribe Tower 4F Right Chest */ - KOBITOANA_06_T0, /* Bow Chest Open in Castor Wilds */ - KOBITOANA_03_T0, /* Red (> Kinstone Chest Open in Mount Crenel Minish Hole near Bean */ - KOBITOANA_07_T0, /* Red 3 Prong Chest Open in Wind Ruins Minish Hole */ - KOBITOANA_09_T0, /* Blue S Kinstone Chest Open in Castor Wilds North Minish Hole */ - KOBITOANA_0A_T0, /* Red W Kinstone Chest Open in Castor Wilds West Minish Hole */ - KOBITOANA_0B_T0, /* Red (> Kinstone Chest Open in Castor Wilds Middle Minish Hole */ - MHOUSE11_T0, /* Red Rupee Chest Open in Link's House */ - URO_08_T0, - URO_0A_T0, - URO_0B_T0, - BILL00_SHICHOU_00, /* Flipped Pot in Hyrule Town, Mayor Hagen's house */ - BILL00_SHICHOU_01, /* Bounced off the left red mask in Hyrule Town, Mayor Hagen's house */ - BILL00_SHICHOU_02, /* Bounced off the left blue mask in Hyrule Town, Mayor Hagen's house */ - BILL00_SHICHOU_03, /* Bounced off the right red mask in Hyrule Town, Mayor Hagen's house */ - BILL00_SHICHOU_04, /* Bounced off the right blue mask in Hyrule Town, Mayor Hagen's house */ - BILL01_TESSIN_1, /* Swordsman Newsletter #1 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_2, /* Swordsman Newsletter #2 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_3, /* Swordsman Newsletter #3 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_4, /* Swordsman Newsletter #4 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_5, /* Swordsman Newsletter #5 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_6, /* Swordsman Newsletter #6 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_7, /* Swordsman Newsletter #7 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_8, /* Swordsman Newsletter #8 is on the table in Hyrule Town, Post Office */ - BILL09_YADO2F_POEMN, /* Broken the bottom right pot for a red 3 prong kinstone in Hyrule Town, Happy Hearth 2F */ - BILL0A_YADO_TAKARA_00, - BILL0B_SCHOOLL_00, - BILL0C_SCHOOLR_00, /* Minish pot flipped in Hyrule Town, School */ - MHOUSE00_00, - MHOUSE00_01, - MHOUSE00_02, - MHOUSE00_03, - MHOUSE00_04, - MHOUSE00_05, - MHOUSE01_00, /* Pushed Left Cupboard Into Place in Hyrule Town, Red Oracle House */ - MHOUSE01_01, /* Pushed Right Cupboard Into Place in Hyrule Town, Red Oracle House */ - MHOUSE01_02, /* Broke Left Pot in Hyrule Town, Red Oracle House */ - MHOUSE01_03, /* Broke Right Pot in Hyrule Town, Red Oracle House */ - MHOUSE03_00, - MHOUSE03_01, /* Pushed Cupboard Into Place in Hyrule Town, Unused Red Oracle House (Din?) */ - MHOUSE04_00, /* Pushed Left Cupboard in Hyrule Town, Dr. Left's House */ - MHOUSE04_01, /* Pushed Right Cupboard in Hyrule Town, Dr. Left's House */ - MHOUSE04_02, - MHOUSE04_03, - MHOUSE04_04, - MHOUSE06_00, /* Flipped Minish Pot in Hyrule Town, Romio's House */ - MHOUSE07_00, - MHOUSE07_01, - MHOUSE08_00, /* Received 100 Shells from Percy in Percy's House */ - MHOUSE08_01, - MHOUSE08_02, - MHOUSE08_03, /* Received 50 Rupees from Bow Moblin in Percy's House */ - MHOUSE08_04, /* Bow Moblin Revealed in Percy's House */ - MHOUSE0C_00, - MHOUSE14_00, /* Flipped Minish Pot in Lake Hylia, Stockwell's House */ - MHOUSE15_OP1ST, /* Seen Intro (Stain Windows -> Zelda talks to Smith) in Link's House */ - MHOUSE2_00_00, - MHOUSE2_00_01, - MHOUSE2_00_02, - MHOUSE2_00_03, - MHOUSE2_01_T0, - MHOUSE2_02_KAME, - MHOUSE2_02_KEY, /* Obtain the Lon Lon Ranch key in Lon Lon Ranch, Inside the house */ - MHOUSE2_03_00, - MHOUSE2_05_00, /* Pushed cupboard in Lake Hylia, Mayor's House */ - SHOP00_ITEM_00, - SHOP00_ITEM_01, /* Un-Flipped Minish Pot in Hyrule Town Shop */ - SHOP00_ITEM_02, - SHOP00_ITEM_03, /* Stockwell talks about feeling someone in Hyrule Town Shop */ - SHOP00_ITEM_04, /* Stockwell sees you after you unshrink in Hyrule Town Shop */ - SHOP00_SAIFU, /* Bought Wallet in Hyrule Town Shop */ - SHOP00_YAZUTSU, /* Bought Quiver in Hyrule Town Shop */ - SHOP01_CAFE_00, /* Pushed cupboard in Hyrule Town Cafe */ - SHOP01_CAFE_01, /* Flipped Minish Pot in Hyrule Town Cafe */ - SHOP01_TALK, /* Spoke to Hurdy-Gurdy Man in Hyrule Town Cafe */ - HOUSE_XXXXX, - SHOP03_PAN_1ST, /* Eaten a pastry in Hyrule Town Bakery */ - SHOP07_TALK1ST, /* Spoke to Carlov in Carlov's Room */ - SHOP07_GACHAPON, - SHOP07_TANA, /* Pulled Lever in Carlov's Room */ - SHOP07_COMPLETE, /* Exhausted new figurines in Carlov's Room */ - SHOP02_KUTSU_00, /* Rem falling asleep cutscene seen in Rem's Shoe Shop */ - NPC37_REM_TALK1ST, /* Spoke to Rem in Rem's Shoe Shop */ - NPC37_REM_SLEEP, /* Rem is in his sleeping animation in Rem's Shoe Shop */ - SORA_ELDER_RECOVER, /* Saved Gregal in Wind Tribe Tower 2F */ - SORA_CHIEF_TALK, /* Spoke to Wind Tribe Leader Siroc in Wind Tribe Tower 4F */ - SORA_ELDER_TALK1ST, /* Spoke to Gregal after Sucking Ghost in Wind Tribe Tower 2F */ - SORA_ELDER_TALK2ND, /* Spoke to Gregal after Cloud Tops in Wind Tribe Tower 2F */ - NPC06_19GUY_QUESTION, - NPC06_19GUY_ANSWER, - DANPEI_TALK1ST, /* Spoke to Dampe in Royal Valley, Dampe's House */ - MIZUKAKI_KOBITO, /* Spoke to Yellow Library Minish in Hyrule Town Library */ - MIZUKAKI_HINT1, /* Spoke to Library Receptionist in Hyrule Town Library */ - MIZUKAKI_BOOK1_FALL, /* Dropped Library Book to Floor in Hyrule Town, Julietta's House */ - MIZUKAKI_HINT2, /* Spoke to Library Receptionist after Book 1 in Hyrule Town Library */ - MIZUKAKI_HINT2_2ND, - MIZUKAKI_BOOK2_FALL, /* Library Book hit ground in Hyrule Town, Dr. Left's House */ - MIZUKAKI_HINT3, /* Spoke to Library Receptionist after Book 2 in Hyrule Town Library */ - MIZUKAKI_HINT3_MAYOR, /* Spoke to Mayor Hagen about the book in Hyrule Town, Mayor Hagen's House */ - MIZUKAKI_BOOK3_FALL, /* Dropped Book 3 to Floor in Lake Hylia, Mayor's House */ - MIZUKAKI_BOOK_ALLBACK, /* Completed Book Quest in Hyrule Town Library */ - MIZUKAKI_STAIR, /* Librari Opens Trap Door in Hyrule Town Library, Librari's Book House */ - MIZUKAKI_STAIR_WARP_OK, /* Screen fades out to the Flipper Cave in Hyrule Town Library, Librari's Book House */ - KHOUSE27_00, - NO_USE_00, - KHOUSE51_00, /* Got 50 Rupees from the bottom minish for returning the books in Hyrule Town Library, Minish Bookshelf */ - NO_USE_01, - KHOUSE51_02, /* Spoke to Librari in Hyrule Town Library, Librari's Book House Before Book Quest */ - KHOUSE42_00, /* Spoke to Minish in Hyrule Town, Dr. Left's House After obtaining Power Bracelets */ - NO_USE_02, - NO_USE_03, - OYAKATA_DEMO, /* Spoke to Melari in Melari's Mines */ - YAMAKOBITO_OPEN, /* Minish Moved from Exit in Melari's Mines */ - M_PRIEST_TALK, /* Talked to Festari in Minish Village */ - M_ELDER_TALK1ST, /* Talked to Minish Elder Gentari in Minish Village */ - M_PRIEST_MOVE, /* Festari moves to side in Minish Village */ - M_ELDER_TALK2ND, /* Minish Elder Gentari opens curtains in Minish Village */ - MHOUSE04_DANRO, /* Put out Fireplace in Hyrule Town, Dr. Left's House */ - MHOUSE06_DANRO, /* Put out Fireplace in Hyrule Town, Romio's House */ - URO_POEMN_TALK, /* Talked to percy in the tree cave in Trilby Highlands, Tree Cave */ - MHOUSE06_MES_20, /* Talked to Romio in Hyrule Town, Romio's House */ - MHOUSE07_MES_20, /* Talked to Julietta in Hyrule Town, Julietta's House */ - MAYOR_2_TALK1ST, /* Talked to Mayor Hagen in Hyrule Town, Mayor Hagen's House, after flippers */ - MAYOR_4_TALK1ST, - BILL01_TESSIN_RESERVED, /* Paid for new newsletter in Hyrule Town, Post Office */ - BILL01_TESSIN_BRANDNEW, /* New newsletter has arrived in Hyrule Town, Post Office */ - KOBITO_MORI_1ST, /* Seen Minish Village Entrance Scene in Minish Village */ - KOBITO_YAMA_ENTER, /* Visited Melari's Mines? in Melari's Mines */ - KHOUSE52_KINOKO, /* Talked to Shoe Shop Minish in Rem's Shoe Shop */ - SORA_YAKATA_ENTER, /* Entered Main Entrance? in Cloud Tops, House */ - YADO_CHECKIN, /* Sleeping is Active in Happy Hearth Inn */ - MINIGAME_GAMEEND, /* Chest Mini-Game Result Active in Hyrule Town, Chest Mini-Game Shop */ - MINIGAME_LEVEL2, /* Hard Mode Active in Hyrule Town, Chest Mini-Game Shop */ - MHOUSE_DIN_TALK, /* Talked To Din in Hyrule Town, Blue/Red House */ - MHOUSE_NAYRU_TALK, /* Talked To Nayru in Hyrule Town, Blue/Red House */ - MHOUSE_FARORE_TALK, /* Talked To Farore in Hyrule Town, Blue/Red House */ - URO_12_H0, /* Obtained Heart Piece in Tree southeast of Link's House */ - URO_19_H0, /* Obtained Heart Piece in Tree House in Western Wood */ - URO_1F_H0, /* Obtained Heart Container in Unused Tree House (Lake Hylia) */ - BILL09_TSW0, /* Left Torch Lit in Hyrule Town, Happy Hearth 2F */ - BILL09_TSW1, /* Right Torch Lit in Hyrule Town, Happy Hearth 2F */ - KHOUSE41_TALK1ST, /* Talk to the minish in Hyrule Town, Red House */ - TAIMA_SAIBAI_1ST, /* Talk to the pico bloom minish in Minish Village */ - IZUMI_00_FAIRY, /* Obtained Quiver upgrade from Great Fairy in Royal Valley */ - IZUMI_01_FAIRY, /* Obtained Wallet upgrade from Great Fairy in Minish Woods */ - IZUMI_02_FAIRY, /* Obtained Bomb Bag upgrade from Great Fairy in Mount Crenel Wall */ - BILL0B_DOUZOU_L, - BILL0B_DOUZOU_R, - KOBITOANA_08_T0, /* Blue L Kinstone Chest Open in Minish Woods South Minish Hole, shared fuse */ - KOBITOANA_0C_T0, /* Red 3 Prong Kinstone Chest Open in Wind Ruins Pillar Room Minish Hole */ - KOBITOANA_0D_T0, /* Red W Kinstone Chest Open in Castor Wilds, Minish Hole next to Bow */ - KOBITOHOUSE_23_H0, - MHOUSE08_DANRO, - MHOUSE09_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House */ - MHOUSE0A_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House (Nayru?) */ - MHOUSE0B_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House (Din?) */ - MHOUSE0C_DANRO, - MHOUSE12_DANRO, /* Put out Fireplace in Dampé's Hut */ - SORA_DANRO, /* Put out Fireplace in Wind Tribe Tower 1F */ - MIZUKAKI_HINT3_MAP, /* Spoke with the minish after talking to Hagen in Hyrule Town, Mayor Hagen's House */ - LEFT_TALK, /* Spoke to Dr. Left inside his house in Hyrule Town, Dr. Left's House */ - KHOUSE26_REMOCON, /* Swapped Bombs with Belari once in Minish Woods, Belari's house */ - SORA_KIDS_MOVE, /* Hailey Moves to Side of Stairs in Wind Tribe Tower 4F */ - KOBITOANA_00_T0, /* Red (> Kinstone Chest Open in Lon Lon Ranch, north Minish Hole */ - KHOUSE23_TALK1ST, /* Obtained Heart Container in Lake Hylia, Librari's House */ - SHOP05_ELEMENT_H00, /* Obtained Heart Piece in Hyrule Town Figurine House */ - SHOP05_ELEMENT_T00, /* Left 200 Rupee Chest Open in Hyrule Town Figurine House */ - SHOP05_ELEMENT_T01, /* Middle 200 Rupee Chest Open in Hyrule Town Figurine House */ - SHOP05_ELEMENT_T02, /* Right 200 Rupee Chest Open in Hyrule Town Figurine House */ - BILL0a_YADO_TAKARA_H00, /* Obtained Heart Piece in Hyrule Town, Happy Hearth minish backdoor */ - KOBITOYAMA_00_R00, /* Hidden Blue L Kinstone Obtained in Melari's Mine */ - KOBITOYAMA_00_R01, /* Hidden Red Rupee Obtained in Melari's Mine */ - KOBITOYAMA_00_R02, /* Hidden Blue S Kinstone Obtained in Melari's Mine */ - KOBITOYAMA_00_R03, /* Hidden Red Rupee Obtained in Melari's Mine */ - KOBITOYAMA_00_R04, /* Hidden Red Rupee Obtained in Melari's Mine */ - KOBITOYAMA_00_R05, /* Hidden Green [ Kinstone Obtained in Melari's Mine */ - KOBITOYAMA_00_R06, /* Hidden Red Rupee Obtained in Melari's Mine */ - KOBITOYAMA_00_R07, /* Hidden Red W Kinstone Obtained in Melari's Mine */ - KOBITO_MORI_00_H0 /* Obtained Heart Piece in Minish Village */0, + BEGIN_2, + BILL05_YADO1F_MATSU_T0, /* Luxury Room" Chest Open in Hyrule Town, Happy Hearth */ + BILL06_YADO1F_TAKE_T0, /* Regular Room" Chest Open in Hyrule Town, Happy Hearth */ + BILL07_YADO1F_UME_T0, /* Cheap Room" Chest Open in Hyrule Town, Happy Hearth */ + BILL0A_YADO_TAKARA_T0, + SHOUSE_00_T0, /* Green (< Kinstone Chest Open in Wind Tribe Tower 1F Left Chest */ + SHOUSE_00_T1, /* Green Rectangle Kinstone Chest Open in Wind Tribe Tower 1F Right Chest */ + SHOUSE_01_T0, /* Green / Kinstone Chest Open in Wind Tribe Tower 2F */ + SHOUSE_02_T0, /* Red W Kinstone Chest Open in Wind Tribe Tower 3F Right Chest */ + SHOUSE_02_T1, /* Blue S Kinstone Chest Open in Wind Tribe Tower 3F Middle Chest */ + SHOUSE_02_T2, /* Blue L Kinstone Chest Open in Wind Tribe Tower 3F Left Chest */ + SHOUSE_02_XXXX0, + SHOUSE_02_XXXX1, + SHOUSE_02_XXXX2, + SHOUSE_03_T0, /* Red (> Kinstone Chest Open in Wind Tribe Tower 4F Left Chest */ + SHOUSE_03_T1, /* Red 3 Prong Chest Open in Wind Tribe Tower 4F Right Chest */ + KOBITOANA_06_T0, /* Bow Chest Open in Castor Wilds */ + KOBITOANA_03_T0, /* Red (> Kinstone Chest Open in Mount Crenel Minish Hole near Bean */ + KOBITOANA_07_T0, /* Red 3 Prong Chest Open in Wind Ruins Minish Hole */ + KOBITOANA_09_T0, /* Blue S Kinstone Chest Open in Castor Wilds North Minish Hole */ + KOBITOANA_0A_T0, /* Red W Kinstone Chest Open in Castor Wilds West Minish Hole */ + KOBITOANA_0B_T0, /* Red (> Kinstone Chest Open in Castor Wilds Middle Minish Hole */ + MHOUSE11_T0, /* Red Rupee Chest Open in Link's House */ + URO_08_T0, + URO_0A_T0, + URO_0B_T0, + BILL00_SHICHOU_00, /* Flipped Pot in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_01, /* Bounced off the left red mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_02, /* Bounced off the left blue mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_03, /* Bounced off the right red mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_04, /* Bounced off the right blue mask in Hyrule Town, Mayor Hagen's house */ + BILL01_TESSIN_1, /* Swordsman Newsletter #1 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_2, /* Swordsman Newsletter #2 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_3, /* Swordsman Newsletter #3 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_4, /* Swordsman Newsletter #4 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_5, /* Swordsman Newsletter #5 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_6, /* Swordsman Newsletter #6 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_7, /* Swordsman Newsletter #7 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_8, /* Swordsman Newsletter #8 is on the table in Hyrule Town, Post Office */ + BILL09_YADO2F_POEMN, /* Broken the bottom right pot for a red 3 prong kinstone in Hyrule Town, Happy Hearth 2F */ + BILL0A_YADO_TAKARA_00, + BILL0B_SCHOOLL_00, + BILL0C_SCHOOLR_00, /* Minish pot flipped in Hyrule Town, School */ + MHOUSE00_00, + MHOUSE00_01, + MHOUSE00_02, + MHOUSE00_03, + MHOUSE00_04, + MHOUSE00_05, + MHOUSE01_00, /* Pushed Left Cupboard Into Place in Hyrule Town, Red Oracle House */ + MHOUSE01_01, /* Pushed Right Cupboard Into Place in Hyrule Town, Red Oracle House */ + MHOUSE01_02, /* Broke Left Pot in Hyrule Town, Red Oracle House */ + MHOUSE01_03, /* Broke Right Pot in Hyrule Town, Red Oracle House */ + MHOUSE03_00, + MHOUSE03_01, /* Pushed Cupboard Into Place in Hyrule Town, Unused Red Oracle House (Din?) */ + MHOUSE04_00, /* Pushed Left Cupboard in Hyrule Town, Dr. Left's House */ + MHOUSE04_01, /* Pushed Right Cupboard in Hyrule Town, Dr. Left's House */ + MHOUSE04_02, + MHOUSE04_03, + MHOUSE04_04, + MHOUSE06_00, /* Flipped Minish Pot in Hyrule Town, Romio's House */ + MHOUSE07_00, + MHOUSE07_01, + MHOUSE08_00, /* Received 100 Shells from Percy in Percy's House */ + MHOUSE08_01, + MHOUSE08_02, + MHOUSE08_03, /* Received 50 Rupees from Bow Moblin in Percy's House */ + MHOUSE08_04, /* Bow Moblin Revealed in Percy's House */ + MHOUSE0C_00, + MHOUSE14_00, /* Flipped Minish Pot in Lake Hylia, Stockwell's House */ + MHOUSE15_OP1ST, /* Seen Intro (Stain Windows -> Zelda talks to Smith) in Link's House */ + MHOUSE2_00_00, + MHOUSE2_00_01, + MHOUSE2_00_02, + MHOUSE2_00_03, + MHOUSE2_01_T0, + MHOUSE2_02_KAME, + MHOUSE2_02_KEY, /* Obtain the Lon Lon Ranch key in Lon Lon Ranch, Inside the house */ + MHOUSE2_03_00, + MHOUSE2_05_00, /* Pushed cupboard in Lake Hylia, Mayor's House */ + SHOP00_ITEM_00, + SHOP00_ITEM_01, /* Un-Flipped Minish Pot in Hyrule Town Shop */ + SHOP00_ITEM_02, + SHOP00_ITEM_03, /* Stockwell talks about feeling someone in Hyrule Town Shop */ + SHOP00_ITEM_04, /* Stockwell sees you after you unshrink in Hyrule Town Shop */ + SHOP00_SAIFU, /* Bought Wallet in Hyrule Town Shop */ + SHOP00_YAZUTSU, /* Bought Quiver in Hyrule Town Shop */ + SHOP01_CAFE_00, /* Pushed cupboard in Hyrule Town Cafe */ + SHOP01_CAFE_01, /* Flipped Minish Pot in Hyrule Town Cafe */ + SHOP01_TALK, /* Spoke to Hurdy-Gurdy Man in Hyrule Town Cafe */ + HOUSE_XXXXX, + SHOP03_PAN_1ST, /* Eaten a pastry in Hyrule Town Bakery */ + SHOP07_TALK1ST, /* Spoke to Carlov in Carlov's Room */ + SHOP07_GACHAPON, + SHOP07_TANA, /* Pulled Lever in Carlov's Room */ + SHOP07_COMPLETE, /* Exhausted new figurines in Carlov's Room */ + SHOP02_KUTSU_00, /* Rem falling asleep cutscene seen in Rem's Shoe Shop */ + NPC37_REM_TALK1ST, /* Spoke to Rem in Rem's Shoe Shop */ + NPC37_REM_SLEEP, /* Rem is in his sleeping animation in Rem's Shoe Shop */ + SORA_ELDER_RECOVER, /* Saved Gregal in Wind Tribe Tower 2F */ + SORA_CHIEF_TALK, /* Spoke to Wind Tribe Leader Siroc in Wind Tribe Tower 4F */ + SORA_ELDER_TALK1ST, /* Spoke to Gregal after Sucking Ghost in Wind Tribe Tower 2F */ + SORA_ELDER_TALK2ND, /* Spoke to Gregal after Cloud Tops in Wind Tribe Tower 2F */ + NPC06_19GUY_QUESTION, + NPC06_19GUY_ANSWER, + DANPEI_TALK1ST, /* Spoke to Dampe in Royal Valley, Dampe's House */ + MIZUKAKI_KOBITO, /* Spoke to Yellow Library Minish in Hyrule Town Library */ + MIZUKAKI_HINT1, /* Spoke to Library Receptionist in Hyrule Town Library */ + MIZUKAKI_BOOK1_FALL, /* Dropped Library Book to Floor in Hyrule Town, Julietta's House */ + MIZUKAKI_HINT2, /* Spoke to Library Receptionist after Book 1 in Hyrule Town Library */ + MIZUKAKI_HINT2_2ND, + MIZUKAKI_BOOK2_FALL, /* Library Book hit ground in Hyrule Town, Dr. Left's House */ + MIZUKAKI_HINT3, /* Spoke to Library Receptionist after Book 2 in Hyrule Town Library */ + MIZUKAKI_HINT3_MAYOR, /* Spoke to Mayor Hagen about the book in Hyrule Town, Mayor Hagen's House */ + MIZUKAKI_BOOK3_FALL, /* Dropped Book 3 to Floor in Lake Hylia, Mayor's House */ + MIZUKAKI_BOOK_ALLBACK, /* Completed Book Quest in Hyrule Town Library */ + MIZUKAKI_STAIR, /* Librari Opens Trap Door in Hyrule Town Library, Librari's Book House */ + MIZUKAKI_STAIR_WARP_OK, /* Screen fades out to the Flipper Cave in Hyrule Town Library, Librari's Book House */ + KHOUSE27_00, + NO_USE_00, + KHOUSE51_00, /* Got 50 Rupees from the bottom minish for returning the books in Hyrule Town Library, Minish Bookshelf */ + NO_USE_01, + KHOUSE51_02, /* Spoke to Librari in Hyrule Town Library, Librari's Book House Before Book Quest */ + KHOUSE42_00, /* Spoke to Minish in Hyrule Town, Dr. Left's House After obtaining Power Bracelets */ + NO_USE_02, + NO_USE_03, + OYAKATA_DEMO, /* Spoke to Melari in Melari's Mines */ + YAMAKOBITO_OPEN, /* Minish Moved from Exit in Melari's Mines */ + M_PRIEST_TALK, /* Talked to Festari in Minish Village */ + M_ELDER_TALK1ST, /* Talked to Minish Elder Gentari in Minish Village */ + M_PRIEST_MOVE, /* Festari moves to side in Minish Village */ + M_ELDER_TALK2ND, /* Minish Elder Gentari opens curtains in Minish Village */ + MHOUSE04_DANRO, /* Put out Fireplace in Hyrule Town, Dr. Left's House */ + MHOUSE06_DANRO, /* Put out Fireplace in Hyrule Town, Romio's House */ + URO_POEMN_TALK, /* Talked to percy in the tree cave in Trilby Highlands, Tree Cave */ + MHOUSE06_MES_20, /* Talked to Romio in Hyrule Town, Romio's House */ + MHOUSE07_MES_20, /* Talked to Julietta in Hyrule Town, Julietta's House */ + MAYOR_2_TALK1ST, /* Talked to Mayor Hagen in Hyrule Town, Mayor Hagen's House, after flippers */ + MAYOR_4_TALK1ST, + BILL01_TESSIN_RESERVED, /* Paid for new newsletter in Hyrule Town, Post Office */ + BILL01_TESSIN_BRANDNEW, /* New newsletter has arrived in Hyrule Town, Post Office */ + KOBITO_MORI_1ST, /* Seen Minish Village Entrance Scene in Minish Village */ + KOBITO_YAMA_ENTER, /* Visited Melari's Mines? in Melari's Mines */ + KHOUSE52_KINOKO, /* Talked to Shoe Shop Minish in Rem's Shoe Shop */ + SORA_YAKATA_ENTER, /* Entered Main Entrance? in Cloud Tops, House */ + YADO_CHECKIN, /* Sleeping is Active in Happy Hearth Inn */ + MINIGAME_GAMEEND, /* Chest Mini-Game Result Active in Hyrule Town, Chest Mini-Game Shop */ + MINIGAME_LEVEL2, /* Hard Mode Active in Hyrule Town, Chest Mini-Game Shop */ + MHOUSE_DIN_TALK, /* Talked To Din in Hyrule Town, Blue/Red House */ + MHOUSE_NAYRU_TALK, /* Talked To Nayru in Hyrule Town, Blue/Red House */ + MHOUSE_FARORE_TALK, /* Talked To Farore in Hyrule Town, Blue/Red House */ + URO_12_H0, /* Obtained Heart Piece in Tree southeast of Link's House */ + URO_19_H0, /* Obtained Heart Piece in Tree House in Western Wood */ + URO_1F_H0, /* Obtained Heart Container in Unused Tree House (Lake Hylia) */ + BILL09_TSW0, /* Left Torch Lit in Hyrule Town, Happy Hearth 2F */ + BILL09_TSW1, /* Right Torch Lit in Hyrule Town, Happy Hearth 2F */ + KHOUSE41_TALK1ST, /* Talk to the minish in Hyrule Town, Red House */ + TAIMA_SAIBAI_1ST, /* Talk to the pico bloom minish in Minish Village */ + IZUMI_00_FAIRY, /* Obtained Quiver upgrade from Great Fairy in Royal Valley */ + IZUMI_01_FAIRY, /* Obtained Wallet upgrade from Great Fairy in Minish Woods */ + IZUMI_02_FAIRY, /* Obtained Bomb Bag upgrade from Great Fairy in Mount Crenel Wall */ + BILL0B_DOUZOU_L, + BILL0B_DOUZOU_R, + KOBITOANA_08_T0, /* Blue L Kinstone Chest Open in Minish Woods South Minish Hole, shared fuse */ + KOBITOANA_0C_T0, /* Red 3 Prong Kinstone Chest Open in Wind Ruins Pillar Room Minish Hole */ + KOBITOANA_0D_T0, /* Red W Kinstone Chest Open in Castor Wilds, Minish Hole next to Bow */ + KOBITOHOUSE_23_H0, + MHOUSE08_DANRO, + MHOUSE09_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House */ + MHOUSE0A_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House (Nayru?) */ + MHOUSE0B_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House (Din?) */ + MHOUSE0C_DANRO, + MHOUSE12_DANRO, /* Put out Fireplace in Dampé's Hut */ + SORA_DANRO, /* Put out Fireplace in Wind Tribe Tower 1F */ + MIZUKAKI_HINT3_MAP, /* Spoke with the minish after talking to Hagen in Hyrule Town, Mayor Hagen's House */ + LEFT_TALK, /* Spoke to Dr. Left inside his house in Hyrule Town, Dr. Left's House */ + KHOUSE26_REMOCON, /* Swapped Bombs with Belari once in Minish Woods, Belari's house */ + SORA_KIDS_MOVE, /* Hailey Moves to Side of Stairs in Wind Tribe Tower 4F */ + KOBITOANA_00_T0, /* Red (> Kinstone Chest Open in Lon Lon Ranch, north Minish Hole */ + KHOUSE23_TALK1ST, /* Obtained Heart Container in Lake Hylia, Librari's House */ + SHOP05_ELEMENT_H00, /* Obtained Heart Piece in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T00, /* Left 200 Rupee Chest Open in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T01, /* Middle 200 Rupee Chest Open in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T02, /* Right 200 Rupee Chest Open in Hyrule Town Figurine House */ + BILL0a_YADO_TAKARA_H00, /* Obtained Heart Piece in Hyrule Town, Happy Hearth minish backdoor */ + KOBITOYAMA_00_R00, /* Hidden Blue L Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R01, /* Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R02, /* Hidden Blue S Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R03, /* Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R04, /* Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R05, /* Hidden Green [ Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R06, /* Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R07, /* Hidden Red W Kinstone Obtained in Melari's Mine */ + KOBITO_MORI_00_H0 /* Obtained Heart Piece in Minish Village */0, KOBITO_MORI_00_H0, - CAFE_01_CAP_0, /* Ezlo talks after Pot Minish Cutscene in Hyrule Town */ - BILL_00_CAP_0, /* Ezlo talks about Mayor's House in Mayor's House */ - BILL_02_CAP_0, /* Ezlo talks about books in Hyrule Town Library 2F, bottom right bookshelf */ - MHOUSE_07_CAP_0, /* Ezlo talks about cat 1 in Hyrule Town, Julietta's House */ - MHOUSE_07_CAP_1, /* Ezlo talks about cat 2 in Hyrule Town, Julietta's House */ + CAFE_01_CAP_0, /* Ezlo talks after Pot Minish Cutscene in Hyrule Town */ + BILL_00_CAP_0, /* Ezlo talks about Mayor's House in Mayor's House */ + BILL_02_CAP_0, /* Ezlo talks about books in Hyrule Town Library 2F, bottom right bookshelf */ + MHOUSE_07_CAP_0, /* Ezlo talks about cat 1 in Hyrule Town, Julietta's House */ + MHOUSE_07_CAP_1, /* Ezlo talks about cat 2 in Hyrule Town, Julietta's House */ MHOUSE_10_CAP_0, // links house entrance MHOUSE_15_CAP_0, // links bedroom - MHOUSE_15_CAP_1, /* Ezlo talks about something being unusual in Link's House, bottom left corner of bedroom */ - SHOP_03_CAP_0, /* Ezlo talks about pastries in Hyrule Town Bakery */ - MHOUSE_07_CAP_2, /* Ezlo talks about library book in Hyrule Town, Julietta's House */ + MHOUSE_15_CAP_1, /* Ezlo talks about something being unusual in Link's House, bottom left corner of bedroom */ + SHOP_03_CAP_0, /* Ezlo talks about pastries in Hyrule Town Bakery */ + MHOUSE_07_CAP_2, /* Ezlo talks about library book in Hyrule Town, Julietta's House */ #ifndef EU SHOP00_BOMBBAG, CAFE_01_CAP_1, #endif #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - KS_A02, - KS_A09, - KS_A18, - KS_B07, - KS_B16, + KS_A02, + KS_A09, + KS_A18, + KS_B07, + KS_B16, #endif #ifdef DEMO_JP MH01_KS_KUSURI, @@ -691,1064 +691,1064 @@ typedef enum { typedef enum { BEGIN_3, - MAROYA_TAKARA, - MACHI_CHIKA_00_00, /* Top Rock In Place in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA_00_01, /* Middle Rock In Place in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA_00_02, /* Bottom Rock In Place in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA_00_03, /* Chest Pillar In Place in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA_00_T0, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle North */ - MACHI_CHIKA_00_T1, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle West */ - MACHI_CHIKA_00_T2, /* Red 3 Prong Kinstone Chest Open in Hyrule Town, Well Sewer Puzzle East */ - MACHI_CHIKA_00_T3, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle South */ - MACHI_CHIKA_00_T4, /* 200 Rupee Pillar Chest Open in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA2_00_T0, - MACHI_CHIKA2_01_T0, - MACHI_CHIKA2_03_00, - MACHI_CHIKA2_03_01, /* Defeated Mulldozers in Hyrule Town Fountain (Power Bracelets) */ - MACHI_CHIKA2_03_T0, /* Power Bracelets Chest Open in Hyrule Town Fountain (Power Bracelets) */ - MACHI_CHIKA2_04_T0, /* 100 Rupee Chest Open in Hyrule Town Fountain (Power Bracelets) */ - MACHI_CHIKA2_10_00, /* Scissors Beetles Spawned in Hyrule Town Sewer Flippers Room */ - MACHI_CHIKA2_10_01, /* Defeated Scissors Beetles in Hyrule Town Sewer Flippers Room */ - MACHI_CHIKA2_10_02, /* Picked up 50 rupees hidden beneath waterfall in Hyrule Town Sewer Flippers Room */ - MACHI_CHIKA2_10_T0, /* Flippers Chest Open in Hyrule Town Sewer Flippers Room */ - MACHI_CHIKA2_12_T0, /* 100 Shell Chest Open in Hyrule Town Sewer Ice Chest Room */ - LV4_HAKA_05_T0, /* Blue S Kinstone Chest Open in Royal Crypt Unused Block Room */ - LV4_HAKA_04_T0, - LV4_HAKA_04_T1, - LV4_HAKA_01_00, /* Defeated Gibdos in Royal Crypt Gibdo Fight Room */ - LV4_HAKA_01_01, - LV4_HAKA_03_00, - LV4_HAKA_04_R0, - LV4_HAKA_04_R1, - LV4_HAKA_04_R2, - LV4_HAKA_04_R3, - LV4_HAKA_04_R4, - LV4_HAKA_04_R5, - LV4_HAKA_04_R6, - LV4_HAKA_04_R8, - LV4_HAKA_04_R9, - LV4_HAKA_04_R10, - LV4_HAKA_04_R11, - LV4_HAKA_04_KB0, /* Second Key Block Open in Royal Crypt Key Block Room */ - LV4_HAKA_04_KB1, /* First Key Block Open in Royal Crypt Key Block Room */ - LV4_HAKA_05_H0, - LV4_HAKA_05_H1, - LV4_HAKA_05_H2, - LV4_HAKA_05_H3, - OUBO_02_BW0, - OUBO_02_BW1, - OUBO_06_BW0, - OUBO_06_BW1, - OUBO_07_ENTER, - OUBO_KAKERA, /* Spoke to King Gustaf in Royal Crypt King Gustaf's Room */ - MOGURA_00_T0, /* Blue L Kinstone Chest Open in Minish Woods <-> Hylia Cabin Digging Cave */ - MOGURA_00_T1, /* 50 Rupee Chest Open in Minish Woods Mole Cave */ - MOGURA_00_T2, /* Blue S Kinstone Chest Open in Minish Woods Mole Cave */ - MOGURA_01_T0, /* 50 Rupee Chest Open in Lake Hylia Middle Digging Cave */ - MOGURA_02_T0, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, Northeast Chest */ - MOGURA_02_T1, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, OoB */ - MOGURA_02_T2, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, South top left Chest */ - MOGURA_02_T3, /* Blue L Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Left Chest */ - MOGURA_02_T4, /* Red 3 Prong Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Right Chest */ - MOGURA_02_T5, /* Red (> Kinstone Chest Open in Lake Hylia North Digging Cave, East Chest */ - MOGURA_02_T6, /* Red W Kinstone Chest Open in Lake Hylia North Digging Cave, South right Chest */ - MOGURA_02_T7, /* Blue S Kinstone Chest Open in Lake Hylia North Digging Cave, South left Chest */ - MOGURA_02_T8, - MOGURA_09_T0, /* 50 Shell Chest Open in Castor Wilds Digging Cave Left Chest */ - MOGURA_09_T1, /* Red W Kinstone Chest Open in Castor Wilds Digging Cave Right Chest */ - MOGURA_10_T0, /* Red W Kinstone Chest Open in Hyrule Town, Mole Cave Middle */ - MOGURA_10_T1, /* Red > Kinstone Chest Open in Hyrule Town, Mole Cave East */ - MOGURA_10_T2, /* Red 3 Prong Kinstone Chest Open in Hyrule Town, Mole Cave West */ - MOGURA_1c_T0, /* Obtained Heart Piece in Mt. Crenel, Mole Cave */ - MOGURA_21_r0, /* Red Rupee Collected in Eastern Hills, Mole Cave */ - MOGURA_27_T0, /* Blue L Kinstone Chest Open in Trilby Highlands, Mole Cave Left */ - MOGURA_27_T1, /* Red > Kinstone Chest Open in Trilby Highlands, Water Mole Cave */ - MOGURA_27_T2, /* Blue S Kinstone Chest Open in Trilby Highlands, Mole Cave Right */ - MOGURA_41_T0, /* 50 Shell Chest Open in Veil Falls West Digging Cave */ - MOGURA_41_T1, /* 50 Shell Chest Open in Veil Falls East Digging Cave */ - MOGURA_41_T2, /* 50 Rupee Chest Open in Veil Falls East Digging Cave */ - MOGURA_41_T3, /* Obtained Heart Piece in Veil Falls West Digging Cave */ - MOGURA_50_00, /* Obtained 50 Rupee in Fortress of Winds Entrance Hall East Corner */ - MOGURA_50_T0, /* Blue S Kinstone Chest Open in Fortress of Winds Entrance Hall West Corner */ - MOGURA_51_T0, /* Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_T1, /* Blue L Kinstone Chest Open in Fortress of Winds Entrance Center 2F */ - MOGURA_51_T2, /* Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Right Side 2F */ - MOGURA_51_00, /* Broke the 50 Rupee Pot in Fortress of Winds, Entrance Right Side 2F */ - MOGURA_51_01, /* Broke Mysterious Shell Pot in Fortress of Winds, Entrance Right Side 2F */ - MOGURA_51_02, /* Grabbed Top Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_03, /* Grabbed Top Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_04, /* Grabbed Bottom Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_05, /* Grabbed Bottom Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_06, /* Grabbed 2nd Blue Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_07, /* Grabbed Blue Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_08, /* Grabbed Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_52_00, /* Hit Button in Fortress of Winds Entrance Left Side 3F Button */ - MOGURA_52_T0, /* Red (> Kinstone Chest Open in Fortress of Winds Entrance Left Side 3F Button */ - MOGURA_52_T1, /* Red W Kinstone Chest Open in Fortress of Winds Entrance Right Side 3F Spike Chu */ - MOGURA_53_00, /* ??? in Fortress of Winds, Mole Mitts Room */ - MOGURA_53_T0, /* Mole Mitts Chest Open in Fortress of Winds, Mole Mitts Room */ - MOGURA_53_T1, /* 100 Rupee Chest Open in Fortress of Winds, Mole Mitts Room */ - MOGURA_53_WALK, /* ??? in Fortress of Winds, Mole Mitts Room */ - MOGURA_54_00, /* Hit Button in Fortress of Winds, Minish Hole Key Room */ - MOGURA_54_01, /* Obtained Key in Fortress of Winds, Minish Hole Key Room */ - MOGURA_54_02, /* Key Fallen in Fortress of Winds, Minish Hole Key Room */ - MOGURA_54_WALK, /* ??? in Fortress of Winds, Minish Hole Key Room */ - AMOS_00_00, /* Armos Switch Hit in Wind Ruins Entrance Armos 1 */ - AMOS_01_00, /* Armos Switch Hit in Wind Ruins Entrance Armos 2 */ - AMOS_02_00, /* Running Armos Switch Hit in Wind Ruins Running Armos, Running Armos */ - AMOS_03_00, /* Armos Switch Hit in Wind Ruins Running Armos, Left Armos */ - AMOS_04_00, /* Armos Switch Hit in Wind Ruins Running Armos, Middle Armos */ - AMOS_05_00, /* Armos Switch Hit in Wind Ruins Running Armos, Right Armos */ - AMOS_06_00, /* Armos Switch Hit in Wind Ruins Running Armos, Right Unused */ - AMOS_07_00, /* Armos Switch Hit in Wind Ruins Minish Grass Path */ - AMOS_08_00, /* Armos Switch Hit in Wind Ruins Entrance Unused */ - AMOS_09_00, /* Armos Switch Hit in Fortress of Winds, Right Side Key Armos 1 */ - AMOS_0A_00, /* Armos Switch Hit in Fortress of Winds, Right Side Key Armos 2 */ - AMOS_0B_00, - AMOS_0C_00, - AMOS_0D_00, - AMOS_0E_00, - AMOS_0F_00, - HARI_01_T0, /* 10 Shell Chest Open in Hyrule Town, Stockwell Shop Minish Roof */ - SEIIKI_STAINED_GLASS, /* Seen stained glass scene in Elemental Sanctuary */ - SEIIKI_ENTER, /* Ezlo talks about Sanctuary in Elemental Sanctuary */ - SEIIKI_SWORD_1ST, /* Ezlo talks about stone tablet in Elemental Sanctuary */ - SEIIKI_SWORD_2ND, /* Water Element on pedestal in Elemental Sanctuary */ - SEIIKI_SWORD_3RD, /* Ezlo talks after opening secret room in Elemental Sanctuary */ - SEIIKI_BUNSHIN, /* Ezlo talks after first time cloning in Elemental Sanctuary */ - BAGUZU_MORI_02_00, /* Obtained Heart Piece in Hyrule Town Schoolyard Minish Path */ - BAGUZU_MORI_02_T0, /* Red (> Kinstone Chest Open (Top left) in Hyrule Town Schoolyard Minish Path */ - BAGUZU_MORI_02_T1, /* Red 3 Prong Kinstone Chest Open (Top right) in Hyrule Town Schoolyard Minish Path */ - BAGUZU_MORI_02_T2, /* Red (> Kinstone Chest Open (Bottom right) in Hyrule Town Schoolyard Minish Path */ - CHIKATSURO_01_BW00, - SORA_10_H00, /* Obtained Heart Piece in Crenel Summit Beanstalk */ - SORA_11_H00, /* Obtained Heart Piece in Lake Hylia Beanstalk */ - SORA_11_T00, /* 200 Rupee Chest Open in Lake Hylia Beanstalk */ - SORA_11_T01, /* 200 Shell Chest Open in Lake Hylia Beanstalk */ - SORA_12_T00, /* Quiver Big Chest Open in Wind Ruins Beanstalk */ - SORA_13_H00, /* Obtained Heart Piece in Eastern Hills Beanstalk */ - SORA_13_T00, /* 200 Rupee Chest Open in Eastern Hills Beanstalk */ - SORA_13_T01, /* 200 Shell Chest Open in Eastern Hills Beanstalk */ - SORA_14_T00, /* Red (> Kinstone Chest Open in Southwest Hyrule Beanstalk */ - SORA_14_R00, /* Grabbed Top Left Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R01, /* Grabbed Top Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R02, /* Grabbed Top Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R03, /* Grabbed Top Row 4th Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R04, /* Grabbed Top Right Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R05, /* Grabbed Right Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R06, /* Grabbed Right Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R07, /* Grabbed Right Row 4th Red Rupee in Southwest Hyrule Beanstalk */ - IZUMIGARE_00_H00, /* Obtained Heart Piece in Castle Garden East Fountain Stairs */ - IZUMIGARE_00_H01, - SORA_10_R00, /* Grabbed Top Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R01, /* Grabbed Top Right Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R02, /* Grabbed Right Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R03, /* Grabbed Bottom Right Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R04, /* Grabbed Bottom Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R05, /* Grabbed Bottom Left Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R06, /* Grabbed Left Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R07, /* Grabbed Top Left Red Rupee in Crenel Summit Beanstalk */ - SORA_14_R08, /* Grabbed Bottom Right Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R09, /* Grabbed Bottom Left Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0a, /* Grabbed Bottom Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0b, /* Grabbed Bottom Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0c, /* Grabbed Bottom Row 4th Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0d, /* Grabbed Left Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0e, /* Grabbed Left Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0f, /* Grabbed Left Row 4th Red Rupee in Southwest Hyrule Beanstalk */ - KAKERA_TAKARA_B, /* Blue L Kinstone Chest Open in Mt. Crenel, Minish Raindrop Path */ - KAKERA_TAKARA_C, /* Blue S Kinstone Chest Open in Crenel Base, Mineral Water Minish Path */ - KAKERA_TAKARA_D, /* Red W Kinstone Chest Open in Hyrule Town, School Minish Path */ - KAKERA_TAKARA_F, /* Red 3 Prong Kinstone Chest Open in Lon Lon Ranch, Minish Path */ - KAKERA_TAKARA_G, /* 100 Rupee Chest Open in Minish Woods, Minish Path */ - KAKERA_TAKARA_H, /* 200 Shell Chest Open in Minish Path to Melari's Mine */ - KAKERA_TAKARA_I, /* Blue L Kinstone Chest Open in Lake Hylia Mayor's Cabin Minish Path */ - KAKERA_TAKARA_XXXX, - TESTMAP00_00, - TESTMAP01_00, - TESTMAP01_01, - TESTMAP02_00, - LV4_HAKA_08_T0, - LV4_HAKA_07_00, /* Door Open in Royal Crypt Mushroom Pit */ - LV4_HAKA_04_00, /* Left Key Revealed in Royal Crypt Key Block Room */ - LV4_HAKA_04_01, /* Right Key Revealed in Royal Crypt Key Block Room */ - LV4_HAKA_04_K0, /* Obtained Left Key in Royal Crypt Key Block Room */ - LV4_HAKA_04_K1, /* Obtained Right Key in Royal Crypt Key Block Room */ - LV4_HAKA_01_02, - LV4_HAKA_08_XX, - BAGUZU_MORI_03_H00, /* Obtained Heart Piece in Lon Lon Ranch Minish Path */ - MOGURAU_00_H00, - HARI_01_H00, - HARI_03_T00, /* Opened 100 rupee chest in Hyrule Town Bakery, minish attic */ - MACHI_CHIKA2_00_CAP_0, /* Ezlo talks about fountain in Hyrule Town Fountain (Power Bracelets) */ - MACHI_CHIKA2_11_CAP_0, /* Ezlo talks about Librari dropping them in Hyrule Town, Minish Flipper Cave */ - LV4_HAKA_08_CAP_0, /* Ezlo talks about Royal Crypt in Royal Crypt Entrance */ - BAGUZUIWA_02_CAP_0, /* Ezlo talks about raindrops in Mount Crenel Rainy Minish Path */ - MACHI_CHIKA2_01_CAP_0, - MACHI_CHIKA2_01_HK, /* Obtained Heart Piece in Hyrule Town Fountain (Power Bracelets) */ - LV4_HAKA_08_B0, /* Obtained Bomb Drop in Royal Crypt Entrance */ - LV4_HAKA_08_K0, /* Obtained Small Key in Royal Crypt Entrance */ - MAROYA_1ST, + MAROYA_TAKARA, + MACHI_CHIKA_00_00, /* Top Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_01, /* Middle Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_02, /* Bottom Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_03, /* Chest Pillar In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_T0, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle North */ + MACHI_CHIKA_00_T1, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle West */ + MACHI_CHIKA_00_T2, /* Red 3 Prong Kinstone Chest Open in Hyrule Town, Well Sewer Puzzle East */ + MACHI_CHIKA_00_T3, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle South */ + MACHI_CHIKA_00_T4, /* 200 Rupee Pillar Chest Open in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA2_00_T0, + MACHI_CHIKA2_01_T0, + MACHI_CHIKA2_03_00, + MACHI_CHIKA2_03_01, /* Defeated Mulldozers in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_03_T0, /* Power Bracelets Chest Open in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_04_T0, /* 100 Rupee Chest Open in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_10_00, /* Scissors Beetles Spawned in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_01, /* Defeated Scissors Beetles in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_02, /* Picked up 50 rupees hidden beneath waterfall in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_T0, /* Flippers Chest Open in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_12_T0, /* 100 Shell Chest Open in Hyrule Town Sewer Ice Chest Room */ + LV4_HAKA_05_T0, /* Blue S Kinstone Chest Open in Royal Crypt Unused Block Room */ + LV4_HAKA_04_T0, + LV4_HAKA_04_T1, + LV4_HAKA_01_00, /* Defeated Gibdos in Royal Crypt Gibdo Fight Room */ + LV4_HAKA_01_01, + LV4_HAKA_03_00, + LV4_HAKA_04_R0, + LV4_HAKA_04_R1, + LV4_HAKA_04_R2, + LV4_HAKA_04_R3, + LV4_HAKA_04_R4, + LV4_HAKA_04_R5, + LV4_HAKA_04_R6, + LV4_HAKA_04_R8, + LV4_HAKA_04_R9, + LV4_HAKA_04_R10, + LV4_HAKA_04_R11, + LV4_HAKA_04_KB0, /* Second Key Block Open in Royal Crypt Key Block Room */ + LV4_HAKA_04_KB1, /* First Key Block Open in Royal Crypt Key Block Room */ + LV4_HAKA_05_H0, + LV4_HAKA_05_H1, + LV4_HAKA_05_H2, + LV4_HAKA_05_H3, + OUBO_02_BW0, + OUBO_02_BW1, + OUBO_06_BW0, + OUBO_06_BW1, + OUBO_07_ENTER, + OUBO_KAKERA, /* Spoke to King Gustaf in Royal Crypt King Gustaf's Room */ + MOGURA_00_T0, /* Blue L Kinstone Chest Open in Minish Woods <-> Hylia Cabin Digging Cave */ + MOGURA_00_T1, /* 50 Rupee Chest Open in Minish Woods Mole Cave */ + MOGURA_00_T2, /* Blue S Kinstone Chest Open in Minish Woods Mole Cave */ + MOGURA_01_T0, /* 50 Rupee Chest Open in Lake Hylia Middle Digging Cave */ + MOGURA_02_T0, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, Northeast Chest */ + MOGURA_02_T1, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, OoB */ + MOGURA_02_T2, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, South top left Chest */ + MOGURA_02_T3, /* Blue L Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Left Chest */ + MOGURA_02_T4, /* Red 3 Prong Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Right Chest */ + MOGURA_02_T5, /* Red (> Kinstone Chest Open in Lake Hylia North Digging Cave, East Chest */ + MOGURA_02_T6, /* Red W Kinstone Chest Open in Lake Hylia North Digging Cave, South right Chest */ + MOGURA_02_T7, /* Blue S Kinstone Chest Open in Lake Hylia North Digging Cave, South left Chest */ + MOGURA_02_T8, + MOGURA_09_T0, /* 50 Shell Chest Open in Castor Wilds Digging Cave Left Chest */ + MOGURA_09_T1, /* Red W Kinstone Chest Open in Castor Wilds Digging Cave Right Chest */ + MOGURA_10_T0, /* Red W Kinstone Chest Open in Hyrule Town, Mole Cave Middle */ + MOGURA_10_T1, /* Red > Kinstone Chest Open in Hyrule Town, Mole Cave East */ + MOGURA_10_T2, /* Red 3 Prong Kinstone Chest Open in Hyrule Town, Mole Cave West */ + MOGURA_1c_T0, /* Obtained Heart Piece in Mt. Crenel, Mole Cave */ + MOGURA_21_r0, /* Red Rupee Collected in Eastern Hills, Mole Cave */ + MOGURA_27_T0, /* Blue L Kinstone Chest Open in Trilby Highlands, Mole Cave Left */ + MOGURA_27_T1, /* Red > Kinstone Chest Open in Trilby Highlands, Water Mole Cave */ + MOGURA_27_T2, /* Blue S Kinstone Chest Open in Trilby Highlands, Mole Cave Right */ + MOGURA_41_T0, /* 50 Shell Chest Open in Veil Falls West Digging Cave */ + MOGURA_41_T1, /* 50 Shell Chest Open in Veil Falls East Digging Cave */ + MOGURA_41_T2, /* 50 Rupee Chest Open in Veil Falls East Digging Cave */ + MOGURA_41_T3, /* Obtained Heart Piece in Veil Falls West Digging Cave */ + MOGURA_50_00, /* Obtained 50 Rupee in Fortress of Winds Entrance Hall East Corner */ + MOGURA_50_T0, /* Blue S Kinstone Chest Open in Fortress of Winds Entrance Hall West Corner */ + MOGURA_51_T0, /* Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_T1, /* Blue L Kinstone Chest Open in Fortress of Winds Entrance Center 2F */ + MOGURA_51_T2, /* Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Right Side 2F */ + MOGURA_51_00, /* Broke the 50 Rupee Pot in Fortress of Winds, Entrance Right Side 2F */ + MOGURA_51_01, /* Broke Mysterious Shell Pot in Fortress of Winds, Entrance Right Side 2F */ + MOGURA_51_02, /* Grabbed Top Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_03, /* Grabbed Top Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_04, /* Grabbed Bottom Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_05, /* Grabbed Bottom Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_06, /* Grabbed 2nd Blue Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_07, /* Grabbed Blue Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_08, /* Grabbed Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_52_00, /* Hit Button in Fortress of Winds Entrance Left Side 3F Button */ + MOGURA_52_T0, /* Red (> Kinstone Chest Open in Fortress of Winds Entrance Left Side 3F Button */ + MOGURA_52_T1, /* Red W Kinstone Chest Open in Fortress of Winds Entrance Right Side 3F Spike Chu */ + MOGURA_53_00, /* ??? in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_T0, /* Mole Mitts Chest Open in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_T1, /* 100 Rupee Chest Open in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_WALK, /* ??? in Fortress of Winds, Mole Mitts Room */ + MOGURA_54_00, /* Hit Button in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_01, /* Obtained Key in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_02, /* Key Fallen in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_WALK, /* ??? in Fortress of Winds, Minish Hole Key Room */ + AMOS_00_00, /* Armos Switch Hit in Wind Ruins Entrance Armos 1 */ + AMOS_01_00, /* Armos Switch Hit in Wind Ruins Entrance Armos 2 */ + AMOS_02_00, /* Running Armos Switch Hit in Wind Ruins Running Armos, Running Armos */ + AMOS_03_00, /* Armos Switch Hit in Wind Ruins Running Armos, Left Armos */ + AMOS_04_00, /* Armos Switch Hit in Wind Ruins Running Armos, Middle Armos */ + AMOS_05_00, /* Armos Switch Hit in Wind Ruins Running Armos, Right Armos */ + AMOS_06_00, /* Armos Switch Hit in Wind Ruins Running Armos, Right Unused */ + AMOS_07_00, /* Armos Switch Hit in Wind Ruins Minish Grass Path */ + AMOS_08_00, /* Armos Switch Hit in Wind Ruins Entrance Unused */ + AMOS_09_00, /* Armos Switch Hit in Fortress of Winds, Right Side Key Armos 1 */ + AMOS_0A_00, /* Armos Switch Hit in Fortress of Winds, Right Side Key Armos 2 */ + AMOS_0B_00, + AMOS_0C_00, + AMOS_0D_00, + AMOS_0E_00, + AMOS_0F_00, + HARI_01_T0, /* 10 Shell Chest Open in Hyrule Town, Stockwell Shop Minish Roof */ + SEIIKI_STAINED_GLASS, /* Seen stained glass scene in Elemental Sanctuary */ + SEIIKI_ENTER, /* Ezlo talks about Sanctuary in Elemental Sanctuary */ + SEIIKI_SWORD_1ST, /* Ezlo talks about stone tablet in Elemental Sanctuary */ + SEIIKI_SWORD_2ND, /* Water Element on pedestal in Elemental Sanctuary */ + SEIIKI_SWORD_3RD, /* Ezlo talks after opening secret room in Elemental Sanctuary */ + SEIIKI_BUNSHIN, /* Ezlo talks after first time cloning in Elemental Sanctuary */ + BAGUZU_MORI_02_00, /* Obtained Heart Piece in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T0, /* Red (> Kinstone Chest Open (Top left) in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T1, /* Red 3 Prong Kinstone Chest Open (Top right) in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T2, /* Red (> Kinstone Chest Open (Bottom right) in Hyrule Town Schoolyard Minish Path */ + CHIKATSURO_01_BW00, + SORA_10_H00, /* Obtained Heart Piece in Crenel Summit Beanstalk */ + SORA_11_H00, /* Obtained Heart Piece in Lake Hylia Beanstalk */ + SORA_11_T00, /* 200 Rupee Chest Open in Lake Hylia Beanstalk */ + SORA_11_T01, /* 200 Shell Chest Open in Lake Hylia Beanstalk */ + SORA_12_T00, /* Quiver Big Chest Open in Wind Ruins Beanstalk */ + SORA_13_H00, /* Obtained Heart Piece in Eastern Hills Beanstalk */ + SORA_13_T00, /* 200 Rupee Chest Open in Eastern Hills Beanstalk */ + SORA_13_T01, /* 200 Shell Chest Open in Eastern Hills Beanstalk */ + SORA_14_T00, /* Red (> Kinstone Chest Open in Southwest Hyrule Beanstalk */ + SORA_14_R00, /* Grabbed Top Left Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R01, /* Grabbed Top Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R02, /* Grabbed Top Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R03, /* Grabbed Top Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R04, /* Grabbed Top Right Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R05, /* Grabbed Right Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R06, /* Grabbed Right Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R07, /* Grabbed Right Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + IZUMIGARE_00_H00, /* Obtained Heart Piece in Castle Garden East Fountain Stairs */ + IZUMIGARE_00_H01, + SORA_10_R00, /* Grabbed Top Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R01, /* Grabbed Top Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R02, /* Grabbed Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R03, /* Grabbed Bottom Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R04, /* Grabbed Bottom Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R05, /* Grabbed Bottom Left Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R06, /* Grabbed Left Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R07, /* Grabbed Top Left Red Rupee in Crenel Summit Beanstalk */ + SORA_14_R08, /* Grabbed Bottom Right Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R09, /* Grabbed Bottom Left Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0a, /* Grabbed Bottom Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0b, /* Grabbed Bottom Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0c, /* Grabbed Bottom Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0d, /* Grabbed Left Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0e, /* Grabbed Left Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0f, /* Grabbed Left Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + KAKERA_TAKARA_B, /* Blue L Kinstone Chest Open in Mt. Crenel, Minish Raindrop Path */ + KAKERA_TAKARA_C, /* Blue S Kinstone Chest Open in Crenel Base, Mineral Water Minish Path */ + KAKERA_TAKARA_D, /* Red W Kinstone Chest Open in Hyrule Town, School Minish Path */ + KAKERA_TAKARA_F, /* Red 3 Prong Kinstone Chest Open in Lon Lon Ranch, Minish Path */ + KAKERA_TAKARA_G, /* 100 Rupee Chest Open in Minish Woods, Minish Path */ + KAKERA_TAKARA_H, /* 200 Shell Chest Open in Minish Path to Melari's Mine */ + KAKERA_TAKARA_I, /* Blue L Kinstone Chest Open in Lake Hylia Mayor's Cabin Minish Path */ + KAKERA_TAKARA_XXXX, + TESTMAP00_00, + TESTMAP01_00, + TESTMAP01_01, + TESTMAP02_00, + LV4_HAKA_08_T0, + LV4_HAKA_07_00, /* Door Open in Royal Crypt Mushroom Pit */ + LV4_HAKA_04_00, /* Left Key Revealed in Royal Crypt Key Block Room */ + LV4_HAKA_04_01, /* Right Key Revealed in Royal Crypt Key Block Room */ + LV4_HAKA_04_K0, /* Obtained Left Key in Royal Crypt Key Block Room */ + LV4_HAKA_04_K1, /* Obtained Right Key in Royal Crypt Key Block Room */ + LV4_HAKA_01_02, + LV4_HAKA_08_XX, + BAGUZU_MORI_03_H00, /* Obtained Heart Piece in Lon Lon Ranch Minish Path */ + MOGURAU_00_H00, + HARI_01_H00, + HARI_03_T00, /* Opened 100 rupee chest in Hyrule Town Bakery, minish attic */ + MACHI_CHIKA2_00_CAP_0, /* Ezlo talks about fountain in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_11_CAP_0, /* Ezlo talks about Librari dropping them in Hyrule Town, Minish Flipper Cave */ + LV4_HAKA_08_CAP_0, /* Ezlo talks about Royal Crypt in Royal Crypt Entrance */ + BAGUZUIWA_02_CAP_0, /* Ezlo talks about raindrops in Mount Crenel Rainy Minish Path */ + MACHI_CHIKA2_01_CAP_0, + MACHI_CHIKA2_01_HK, /* Obtained Heart Piece in Hyrule Town Fountain (Power Bracelets) */ + LV4_HAKA_08_B0, /* Obtained Bomb Drop in Royal Crypt Entrance */ + LV4_HAKA_08_K0, /* Obtained Small Key in Royal Crypt Entrance */ + MAROYA_1ST, #ifndef EU MACHI_CHIKA2_10_CAP_0, #endif #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - KS_C02, + KS_C02, #endif END_3, } LocalFlags3; typedef enum { BEGIN_4, - DOUKUTU_00_T0, /* Opened the left 50 rupee chest in Mount Crenel, Grayblade's dojo */ - DOUKUTU_00_T1, /* Opened the right 50 rupee chest in Mount Crenel, Grayblade's dojo */ - DOUKUTU_05_EVENT, /* Lit up Grimblade's Torches in Hyrule Castle Garden. Grimblade */ - SOUGEN_DOUKUTU_00_T0, /* Red W Kinstone Chest Open in Magical Boomerang Cave (top left) */ - SOUGEN_DOUKUTU_00_T1, /* Red > Kinstone Chest Open in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_T2, /* Red 3 Prong Kinstone Chest Open in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_T3, /* 200 Shell Chest Open in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_T4, /* Large Chest Opened in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_SW0, /* Top Left Button Pressed in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_SW1, /* Top Right Button Pressed in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_SW2, /* Bottom Left Button Pressed in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_SW3, /* Bottom Right Button Pressed in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_07_T0, /* Red 3 Prong Kinstone Chest Open in Trilby Highlands Keese Chest Cave */ - SOUGEN_DOUKUTU_0B_T0, /* 200 Shell Chest Open in Hyrule Town, Waterfall Cave */ - SOUGEN_DOUKUTU_0C_T0, /* 50 Rupee Chest Open in Lon Lon Ranch Cave */ - SOUGEN_DOUKUTU_0C_BW00, /* Wall to secret room blown open in Lon Lon Ranch Cave */ - SOUGEN_DOUKUTU_0D_00, /* Lit torches in Lon Lon Ranch Cave */ - SOUGEN_DOUKUTU_0D_T0, /* Blue S Kinstone Chest Open in Lon Lon Ranch Cave */ - SOUGEN_DOUKUTU_0E_BW00, /* Wall to Bottle Business Scrub blown open in West Hyrule Underground */ - SOUGEN_DOUKUTU_0F_T00, /* Opened the wallet chest in the opened pool cave in Lon Lon Ranch Pool cave */ - SOUGEN_DOUKUTU_10_R00, /* Grabbed Top Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R01, /* Grabbed Top Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R02, /* Grabbed Top Middle Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R03, /* Grabbed Top Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R04, /* Grabbed Top Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R05, /* Grabbed Leftmost Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R06, /* Grabbed Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R07, /* Grabbed Middle Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R08, /* Grabbed Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R09, /* Grabbed Rightmost Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0A, /* Grabbed Bottom Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0B, /* Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0C, /* Grabbed Bottom Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0D, /* Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0E, /* Grabbed Bottom Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_11_R00, /* Grabbed Top Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R01, /* Grabbed Top Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R02, /* Grabbed Top Middle Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R03, /* Grabbed Top Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R04, /* Grabbed Top Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R05, /* Grabbed Leftmost Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R06, /* Grabbed Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R07, /* Grabbed Middle Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R08, /* Grabbed Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R09, /* Grabbed Rightmost Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0A, /* Grabbed Bottom Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0B, /* Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0C, /* Grabbed Bottom Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0D, /* Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0E, /* Grabbed Bottom Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_13_T0, /* 20 Shell Chest Open in Hyrule Field Cave, north from Minish Woods Exit */ - HIKYOU_DOUKUTU0_00_T0, /* Gold Kinstone Chest Open in Castor Wilds South Cave */ - HIKYOU_DOUKUTU0_01_T0, - HIKYOU_DOUKUTU0_01_T1, /* Gold Kinstone Chest Open in Castor Wilds North Cave */ - HIKYOU_DOUKUTU0_02_KAIGARA, /* Blue S Kinstone Chest Open in Wind Ruins Cave */ - HIKYOU_DOUKUTU0_04_H00, /* Obtained Heart Piece in Castor Wilds North East Cave */ - HIKYOU_DOUKUTU1_00_00, /* Defeated Darknut in Castor Wilds */ - HIKYOU_DOUKUTU1_00_T0, /* Gold Kinstone Chest Open in Castor Wilds Darknut */ - YAMADOUKUTU_01_00, /* Rock pushed to Hole in Mount Crenel Pillar Cave */ - YAMADOUKUTU_02_00, /* Bridge Button Activated in Mount Crenel Bridge Cave */ - YAMADOUKUTU_03_T0, /* Blue S Kinstone Chest Open in Mount Crenel Pillar Cave */ - YAMADOUKUTU_06_H0, - YAMADOUKUTU_07_T0, /* Blue L Kinstone Chest Open in Crenel Mines" cave */ - YAMADOUKUTU_08_h0, /* Obtained Heart Piece in Mount Crenel Heart Piece Cave */ - YAMADOUKUTU_08_h1, /* Blue S Kinstone Chest Open in Mount Crenel Heart Piece Cave */ - YAMADOUKUTU_08_h2, /* 50 Rupee Chest Open in Mount Crenel Heart Piece Cave */ - YAMADOUKUTU_09_r0, /* Grabbed Left Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ - YAMADOUKUTU_09_r1, /* Grabbed Middle Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ - YAMADOUKUTU_09_r2, /* Grabbed Right Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ - YAMADOUKUTU_0F_00, /* Talk to the Crenel Base Hint Scrub in Mount Crenel Base Entrance Cave */ - YAMADOUKUTU_10_00, /* Open the door leading to Grayblade's dojo in Mount Crenel, Dojo Cave */ - SUIGEN_DOUKUTU_00_T0, /* 100 Rupee Chest Open in Veil Falls Helmasaur Keese Cave 2F */ - SUIGEN_DOUKUTU_01_BW00, /* Wall to chest room blown open in Veil Falls Helmasaur Keese Cave 1F */ - SUIGEN_DOUKUTU_02_T0, /* 50 Shell Chest Open in Veil Falls Helmasaur Keese Cave 1F */ - SUIGEN_DOUKUTU_04_BW00, /* Wall to secret area blown open in Veil Falls Entrance Cave */ - SUIGEN_DOUKUTU_05_T0, /* 50 Shell Chest Open in Veil Falls Entrance Cave Secret Chest */ - SUIGEN_DOUKUTU_08_R0, /* Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R1, /* Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R2, /* Grabbed Red Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R3, /* Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R4, /* Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R5, /* Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ - SUIGEN_DOUKUTU_08_R6, /* Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ - SUIGEN_DOUKUTU_08_R7, /* Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ - SUIGEN_DOUKUTU_08_R8, /* Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ - SUIGEN_DOUKUTU_08_R9, /* Grabbed Underwater Left Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ - SUIGEN_DOUKUTU_08_R10, /* Grabbed Underwater Right Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ - SUIGEN_DOUKUTU_08_R11, /* Grabbed Underwater Left Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ - SUIGEN_DOUKUTU_08_R12, /* Grabbed Underwater Right Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ - SUIGEN_DOUKUTU_08_R13, /* Grabbed Underwater Left Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ - SUIGEN_DOUKUTU_08_R14, /* Grabbed Underwater Right Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ - SUIGEN_DOUKUTU_09_H00, /* Obtained Heart Piece in Veil Falls Top Left Waterfall Cave */ - HAKA_DOUKUTU_00_H0, /* Obtained Heart Piece in Royal Valley Clone Block Grave */ - HAKA_DOUKUTU_01_T0, /* 100 Shell Chest Open in Royal Valley, Gina Grave */ - HAKA_DOUKUTU_01_GEENE, /* Talked to Gina in Royal Valley, Gina Grave */ - KOBITO_DOUKUTU_00_T0, /* Blue L Kinstone Chest Open in Mount Crenel Minish Pesto Cave */ - KOBITO_DOUKUTU_02_T0, - KOBITO_DOUKUTU_05_T0, /* Red 3 Prong Kinstone Chest Open in Minish Woods North Minish Cave */ - KOBITO_SHIRO_DOUKUTU_00_H0, - KOBITO_SHIRO_DOUKUTU_00_T0, /* 50 Shell Chest Open in Castle Garden East Minish Cave */ - KOBITO_SHIRO_DOUKUTU_01_T0, /* 50 Shell Chest Open in Castle Garden West Minish Cave */ - KOBITO_URA_DOUKUTU_00_T0, /* 100 Shell Chest Open in Castle Garden East Minish Cave (Unused) */ - KOBITO_URA_DOUKUTU_01_T0, /* 100 Shell Chest Open in Castle Garden West Minish Cave (Unused) */ - GORON_DOUKUTU_APPEAR, /* Goron Figurine Available in Figurine Pool in Lon Lon Ranch, Goron Cave */ - KOBITO_DOUKUTU_03_T0, - HIKYOU_DOUKUTU0_01_AKINDO, /* Stunned 30 Arrow Business Scrub in Castor Wilds North Cave */ - SOUGEN_DOUKUTU_14_AKINDO, /* Stunned Bottle Business Scrub in West Hyrule Underground */ - SOUGEN_DOUKUTU_17_AKINDO, /* Stunned Kinstone Business Scrub in Minish Woods, Tree House */ - YAMADOUKUTU_04_AKINDO, /* Stunned Grip Ring Business Scrub in Mount Crenel Far Right Cave */ - YAMADOUKUTU_0D_AKINDO, /* Stunned Bomb Business Scrub in Mount Crenel Base */ - YAMADOUKUTU_0F_AKINDO, /* Stunned Hint Scrub in Mount Crenel Base */ - YAMADOUKUTU_0E_SENNIN, /* Visited Crenel Hermit's Cave in Mt. Crenel */ - KOBITO_DOUKUTU_04_T0, - KOBITO_DOUKUTU_07_T0, /* Red W Kinstone Chest Open in Lake Hylia North Minish Cave */ - KOBITO_DOUKUTU_09_T0, /* Blue L Kinstone Chest Open in Minish Woods Middle Minish Hole */ - KOBITO_DOUKUTU_09_T1, /* Blue S Kinstone Chest Open in Minish Woods Right Minish Hole */ - KOBITO_DOUKUTU_09_T2, /* Red 3 Prong Kinstone Chest Open in Minish Woods Left Minish Hole */ - GORON_DOUKUTU_01_T0, /* Bottle Chest Open in Lon Lon Ranch, Goron Cave */ - GORON_DOUKUTU_01_T1, /* 200 Rupee Chest Open in Lon Lon Ranch, Goron Cave */ - GORON_DOUKUTU_01_T2, - GORON_DOUKUTU_01_T3, - KOBITO_DOUKUTU_09_H0, /* Obtained Heart Piece in Minish Woods Left Minish Hole */ - SOUGEN_DOUKUTU_15_H0, /* Obtained Heart Piece in North Hyrule Field, Western Cave */ - KOBITO_DOUKUTU_01_H00, - YAMADOUKUTU_05_H00, /* Obtained Heart Piece in Hyrule Castle Garden, Grimblade's Room */ /* Obtained Heart Piece in Mount Crenel Fairy Heart Piece Cave */ - KOBITO_DOUKUTU_03_H00, /* Obtained Heart Piece in Wind Ruins Minish Cave */ - DOUKUTU_04_H00, /* Obtained Heart Piece in Castor Wilds, Swiftblade I grave */ - DOUKUTU_00_H00, /* Obtained Heart Piece in Mount Crenel, Grayblade's dojo */ - KOBITO_DOUKUTU_04_H00, /* Obtained Heart Piece in South Hyrule Field, Water Minish Cave */ - DOUKUTU_06_H00, /* Obtained Heart Piece in Lake Hylia, Waveblade's Room */ - DOUKUTU_05_H00, - KOBITO_DOUKUTU_02_H00, /* Obtained Heart Piece in Castor Wilds Southeast Water Cave */ - KOBITO_DOUKUTU_01_T0, /* Red (> Kinstone Chest Open in Castor Wilds Southeast Water Cave Left Chest */ - YAMADOUKUTU_04_CAP_0, /* Ezlo talks about Helmasaurs in Mount Crenel Base Cave */ + DOUKUTU_00_T0, /* Opened the left 50 rupee chest in Mount Crenel, Grayblade's dojo */ + DOUKUTU_00_T1, /* Opened the right 50 rupee chest in Mount Crenel, Grayblade's dojo */ + DOUKUTU_05_EVENT, /* Lit up Grimblade's Torches in Hyrule Castle Garden. Grimblade */ + SOUGEN_DOUKUTU_00_T0, /* Red W Kinstone Chest Open in Magical Boomerang Cave (top left) */ + SOUGEN_DOUKUTU_00_T1, /* Red > Kinstone Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T2, /* Red 3 Prong Kinstone Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T3, /* 200 Shell Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T4, /* Large Chest Opened in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW0, /* Top Left Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW1, /* Top Right Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW2, /* Bottom Left Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW3, /* Bottom Right Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_07_T0, /* Red 3 Prong Kinstone Chest Open in Trilby Highlands Keese Chest Cave */ + SOUGEN_DOUKUTU_0B_T0, /* 200 Shell Chest Open in Hyrule Town, Waterfall Cave */ + SOUGEN_DOUKUTU_0C_T0, /* 50 Rupee Chest Open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0C_BW00, /* Wall to secret room blown open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0D_00, /* Lit torches in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0D_T0, /* Blue S Kinstone Chest Open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0E_BW00, /* Wall to Bottle Business Scrub blown open in West Hyrule Underground */ + SOUGEN_DOUKUTU_0F_T00, /* Opened the wallet chest in the opened pool cave in Lon Lon Ranch Pool cave */ + SOUGEN_DOUKUTU_10_R00, /* Grabbed Top Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R01, /* Grabbed Top Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R02, /* Grabbed Top Middle Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R03, /* Grabbed Top Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R04, /* Grabbed Top Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R05, /* Grabbed Leftmost Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R06, /* Grabbed Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R07, /* Grabbed Middle Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R08, /* Grabbed Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R09, /* Grabbed Rightmost Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0A, /* Grabbed Bottom Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0B, /* Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0C, /* Grabbed Bottom Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0D, /* Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0E, /* Grabbed Bottom Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_11_R00, /* Grabbed Top Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R01, /* Grabbed Top Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R02, /* Grabbed Top Middle Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R03, /* Grabbed Top Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R04, /* Grabbed Top Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R05, /* Grabbed Leftmost Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R06, /* Grabbed Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R07, /* Grabbed Middle Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R08, /* Grabbed Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R09, /* Grabbed Rightmost Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0A, /* Grabbed Bottom Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0B, /* Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0C, /* Grabbed Bottom Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0D, /* Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0E, /* Grabbed Bottom Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_13_T0, /* 20 Shell Chest Open in Hyrule Field Cave, north from Minish Woods Exit */ + HIKYOU_DOUKUTU0_00_T0, /* Gold Kinstone Chest Open in Castor Wilds South Cave */ + HIKYOU_DOUKUTU0_01_T0, + HIKYOU_DOUKUTU0_01_T1, /* Gold Kinstone Chest Open in Castor Wilds North Cave */ + HIKYOU_DOUKUTU0_02_KAIGARA, /* Blue S Kinstone Chest Open in Wind Ruins Cave */ + HIKYOU_DOUKUTU0_04_H00, /* Obtained Heart Piece in Castor Wilds North East Cave */ + HIKYOU_DOUKUTU1_00_00, /* Defeated Darknut in Castor Wilds */ + HIKYOU_DOUKUTU1_00_T0, /* Gold Kinstone Chest Open in Castor Wilds Darknut */ + YAMADOUKUTU_01_00, /* Rock pushed to Hole in Mount Crenel Pillar Cave */ + YAMADOUKUTU_02_00, /* Bridge Button Activated in Mount Crenel Bridge Cave */ + YAMADOUKUTU_03_T0, /* Blue S Kinstone Chest Open in Mount Crenel Pillar Cave */ + YAMADOUKUTU_06_H0, + YAMADOUKUTU_07_T0, /* Blue L Kinstone Chest Open in Crenel Mines" cave */ + YAMADOUKUTU_08_h0, /* Obtained Heart Piece in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_08_h1, /* Blue S Kinstone Chest Open in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_08_h2, /* 50 Rupee Chest Open in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_09_r0, /* Grabbed Left Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_09_r1, /* Grabbed Middle Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_09_r2, /* Grabbed Right Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_0F_00, /* Talk to the Crenel Base Hint Scrub in Mount Crenel Base Entrance Cave */ + YAMADOUKUTU_10_00, /* Open the door leading to Grayblade's dojo in Mount Crenel, Dojo Cave */ + SUIGEN_DOUKUTU_00_T0, /* 100 Rupee Chest Open in Veil Falls Helmasaur Keese Cave 2F */ + SUIGEN_DOUKUTU_01_BW00, /* Wall to chest room blown open in Veil Falls Helmasaur Keese Cave 1F */ + SUIGEN_DOUKUTU_02_T0, /* 50 Shell Chest Open in Veil Falls Helmasaur Keese Cave 1F */ + SUIGEN_DOUKUTU_04_BW00, /* Wall to secret area blown open in Veil Falls Entrance Cave */ + SUIGEN_DOUKUTU_05_T0, /* 50 Shell Chest Open in Veil Falls Entrance Cave Secret Chest */ + SUIGEN_DOUKUTU_08_R0, /* Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R1, /* Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R2, /* Grabbed Red Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R3, /* Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R4, /* Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R5, /* Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R6, /* Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R7, /* Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R8, /* Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R9, /* Grabbed Underwater Left Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ + SUIGEN_DOUKUTU_08_R10, /* Grabbed Underwater Right Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ + SUIGEN_DOUKUTU_08_R11, /* Grabbed Underwater Left Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ + SUIGEN_DOUKUTU_08_R12, /* Grabbed Underwater Right Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ + SUIGEN_DOUKUTU_08_R13, /* Grabbed Underwater Left Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ + SUIGEN_DOUKUTU_08_R14, /* Grabbed Underwater Right Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ + SUIGEN_DOUKUTU_09_H00, /* Obtained Heart Piece in Veil Falls Top Left Waterfall Cave */ + HAKA_DOUKUTU_00_H0, /* Obtained Heart Piece in Royal Valley Clone Block Grave */ + HAKA_DOUKUTU_01_T0, /* 100 Shell Chest Open in Royal Valley, Gina Grave */ + HAKA_DOUKUTU_01_GEENE, /* Talked to Gina in Royal Valley, Gina Grave */ + KOBITO_DOUKUTU_00_T0, /* Blue L Kinstone Chest Open in Mount Crenel Minish Pesto Cave */ + KOBITO_DOUKUTU_02_T0, + KOBITO_DOUKUTU_05_T0, /* Red 3 Prong Kinstone Chest Open in Minish Woods North Minish Cave */ + KOBITO_SHIRO_DOUKUTU_00_H0, + KOBITO_SHIRO_DOUKUTU_00_T0, /* 50 Shell Chest Open in Castle Garden East Minish Cave */ + KOBITO_SHIRO_DOUKUTU_01_T0, /* 50 Shell Chest Open in Castle Garden West Minish Cave */ + KOBITO_URA_DOUKUTU_00_T0, /* 100 Shell Chest Open in Castle Garden East Minish Cave (Unused) */ + KOBITO_URA_DOUKUTU_01_T0, /* 100 Shell Chest Open in Castle Garden West Minish Cave (Unused) */ + GORON_DOUKUTU_APPEAR, /* Goron Figurine Available in Figurine Pool in Lon Lon Ranch, Goron Cave */ + KOBITO_DOUKUTU_03_T0, + HIKYOU_DOUKUTU0_01_AKINDO, /* Stunned 30 Arrow Business Scrub in Castor Wilds North Cave */ + SOUGEN_DOUKUTU_14_AKINDO, /* Stunned Bottle Business Scrub in West Hyrule Underground */ + SOUGEN_DOUKUTU_17_AKINDO, /* Stunned Kinstone Business Scrub in Minish Woods, Tree House */ + YAMADOUKUTU_04_AKINDO, /* Stunned Grip Ring Business Scrub in Mount Crenel Far Right Cave */ + YAMADOUKUTU_0D_AKINDO, /* Stunned Bomb Business Scrub in Mount Crenel Base */ + YAMADOUKUTU_0F_AKINDO, /* Stunned Hint Scrub in Mount Crenel Base */ + YAMADOUKUTU_0E_SENNIN, /* Visited Crenel Hermit's Cave in Mt. Crenel */ + KOBITO_DOUKUTU_04_T0, + KOBITO_DOUKUTU_07_T0, /* Red W Kinstone Chest Open in Lake Hylia North Minish Cave */ + KOBITO_DOUKUTU_09_T0, /* Blue L Kinstone Chest Open in Minish Woods Middle Minish Hole */ + KOBITO_DOUKUTU_09_T1, /* Blue S Kinstone Chest Open in Minish Woods Right Minish Hole */ + KOBITO_DOUKUTU_09_T2, /* Red 3 Prong Kinstone Chest Open in Minish Woods Left Minish Hole */ + GORON_DOUKUTU_01_T0, /* Bottle Chest Open in Lon Lon Ranch, Goron Cave */ + GORON_DOUKUTU_01_T1, /* 200 Rupee Chest Open in Lon Lon Ranch, Goron Cave */ + GORON_DOUKUTU_01_T2, + GORON_DOUKUTU_01_T3, + KOBITO_DOUKUTU_09_H0, /* Obtained Heart Piece in Minish Woods Left Minish Hole */ + SOUGEN_DOUKUTU_15_H0, /* Obtained Heart Piece in North Hyrule Field, Western Cave */ + KOBITO_DOUKUTU_01_H00, + YAMADOUKUTU_05_H00, /* Obtained Heart Piece in Mount Crenel Fairy Heart Piece Cave */ + KOBITO_DOUKUTU_03_H00, /* Obtained Heart Piece in Wind Ruins Minish Cave */ + DOUKUTU_04_H00, /* Obtained Heart Piece in Castor Wilds, Swiftblade I grave */ + DOUKUTU_00_H00, /* Obtained Heart Piece in Mount Crenel, Grayblade's dojo */ + KOBITO_DOUKUTU_04_H00, /* Obtained Heart Piece in South Hyrule Field, Water Minish Cave */ + DOUKUTU_06_H00, /* Obtained Heart Piece in Lake Hylia, Waveblade's Room */ + DOUKUTU_05_H00, /* Obtained Heart Piece in Hyrule Castle Garden, Grimblade's Room */ + KOBITO_DOUKUTU_02_H00, /* Obtained Heart Piece in Castor Wilds Southeast Water Cave */ + KOBITO_DOUKUTU_01_T0, /* Red (> Kinstone Chest Open in Castor Wilds Southeast Water Cave Left Chest */ + YAMADOUKUTU_04_CAP_0, /* Ezlo talks about Helmasaurs in Mount Crenel Base Cave */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - KS_B06, - KS_B15, - KS_B01, - KS_B12, - KS_C12, - KS_C37, + KS_B06, + KS_B15, + KS_B01, + KS_B12, + KS_C12, + KS_C37, #endif END_4, } LocalFlags4; typedef enum { BEGIN_5, - LV1_00_WALK, /* Map Screen, Visited Room 13 in Deepwood Shrine 13 (Madderpillar) */ - LV1_01_WALK, /* Map Screen, Visited Room 12 in Deepwood Shrine 12 (To Madderpillar) */ - LV1_02_WALK, /* Map Screen, Visited Room 11 in Deepwood Shrine 11 (Stairs to B2) */ - LV1_03_WALK, /* Map Screen, Visited Room 6 in Deepwood Shrine 6 (Pressure Button Bridge) */ - LV1_04_WALK, /* Map Screen, Visited Room 7 in Deepwood Shrine 7 (Double Pillar Small Key) */ - LV1_05_WALK, /* Map Screen, Visited Room 5 in Deepwood Shrine 5 (Heart Piece & Map) */ - LV1_06_WALK, /* Map Screen, Visited Room 4 in Deepwood Shrine 4 (Barrel) */ - LV1_07_WALK, /* Map Screen, Visited Room 8 in Deepwood Shrine 8 (Mushrooms) */ - LV1_08_WALK, /* Map Screen, Visited Room 10 in Deepwood Shrine 10 (Mulldozer Fight) */ - LV1_09_WALK, /* Map Screen, Visited Room 9 in Deepwood Shrine 9 (Pillars & Slugs) */ - LV1_0A_WALK, /* Map Screen, Visited Room 3 in Deepwood Shrine 3 (Bridge & Mushroom) */ - LV1_0B_WALK, /* Map Screen, Visited Entrance in Deepwood Shrine 1 (Entrance) */ - LV1_10_WALK, /* Map Screen, Visited Room 2 in Deepwood Shrine 2 (Slug & Torches) */ - LV1_11_WALK, /* Map Screen, Visited Room 17 in Deepwood Shrine 17 (Boss Key) */ - LV1_12_WALK, /* Map Screen, Visited Room 16 in Deepwood Shrine 16 (Lilypad North) */ - LV1_13_WALK, - LV1_14_WALK, /* Map Screen, Visited Room 14 in Deepwood Shrine 14 (Lilypad West) */ - LV1_15_WALK, /* Map Screen, Visited Room 15 in Deepwood Shrine 15 (Lilypad East) */ - LV1_16_WALK, /* Map Screen, Visited Room 19 in Deepwood Shrine 19 (Big Green Chuchu) */ - LV1_17_WALK, /* Map Screen, Visited Room 18 in Deepwood Shrine 18 (Boss Door) */ - LV1_TARU_0, /* Left Buttons Pressed in Deepwood Shrine 4 (Barrel) */ - LV1_TARU_1, /* Right Button Pressed in Deepwood Shrine 4 (Barrel) */ - LV1_00_00, /* Defeated Madderpillar in Deepwood Shrine 13 (Madderpillar) */ - LV1_00_01, - LV1_00_02, /* Sucked East Web in Deepwood Shrine 13 (Madderpillar) */ - LV1_00_03, /* Sucked South Web in Deepwood Shrine 13 (Madderpillar) */ - LV1_00_T0, /* Gust Jar Chest Open in Deepwood Shrine 13 (Madderpillar) */ - LV1_01_00, /* Shortcut Door to Barrel Room Open in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_01, /* Blue Portal Hidden Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_02, /* Door to Madderpillar Open in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_03, /* Left Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_04, /* Right Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_T0, - LV1_01_T1, /* Left 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_T2, /* Right 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ - LV1_02_T0, /* 20 Shell Chest Open in Deepwood Shrine 11 (Stairs to B2) */ - LV1_03_CAP_0, /* Ezlo talks about bridge pressure button in Deepwood Shrine 6 (Pressure Button Bridge) */ - LV1_04_02, /* Pot set on button in Room 6 in Deepwood Shrine 7 (Double Pillar Small Key) */ - LV1_04_T0, /* Small Key Chest Open in Deepwood Shrine 7 (Double Pillar Small Key) */ - LV1_05_T0, - LV1_05_T1, /* Map Chest Open in Deepwood Shrine 5 (Heart Piece & Map) */ - LV1_06_03, /* East Door Open in Deepwood Shrine 4 (Barrel) */ - LV1_06_T0, /* 10 Shell Chest Open in Deepwood Shrine 4 (Barrel) */ - LV1_06_CAP_0, /* Ezlo talks about barrel in Deepwood Shrine 4 (Barrel) */ - LV1_07_00, /* Hit bridge button in Deepwood Shrine 8 (Mushrooms) */ - LV1_07_CAP_0, - LV1_08_00, /* Defeated Mulldozers in Deepwood Shrine 10 (Mulldozer Fight) */ - LV1_08_KEY, /* Obtained Small Key in Deepwood Shrine 10 (Mulldozer Fight) */ - LV1_09_00, - LV1_0A_00, /* Lever pulled in Deepwood Shrine 3 (Bridge & Mushroom) */ - LV1_0A_CAP_0, /* Ezlo talks about pull lever in Deepwood Shrine 3 (Bridge & Mushroom) */ - LV1_0B_01, /* Sucked West Web in Deepwood Shrine 1 (Entrance) */ - LV1_0B_02, /* Sucked East Web in Deepwood Shrine 1 (Entrance) */ - LV1_0B_15, /* Blue and Red Portals Activate in Deepwood Shrine 1 (Entrance) */ - LV1_0B_CAP_0, /* Ezlo talks about Deepwood Shrine in Deepwood Shrine 1 (Entrance) */ - LV1_10_00, /* Hit top left button in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_01, /* Hit bottom left button in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_02, /* Hit top right button in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_03, /* Hit bottom right button in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_KEY, /* Door open in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_T0, /* Small Key Chest Open in Deepwood Shrine 2 (Slug & Torches) */ - LV1_11_01, /* Red Portal Button Pressed in Deepwood Shrine 17 (Boss Key) */ - LV1_11_T0, /* Boss Key Chest Open in Deepwood Shrine 17 (Boss Key) */ - LV1_12_15, /* Lily pad appears in Room 16 in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_12_T0, /* Small Key Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_12_T1, /* Compass Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_12_00, /* Pot set on Chest button in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_12_01, /* Pot set on button in Room 15 in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_14_00, /* Door open in Deepwood Shrine 14 (Lilypad West) */ - LV1_14_CAP_0, /* Ezlo talks about lilypad in Deepwood Shrine 14 (Lilypad West) */ - LV1_16_UTSUWA, /* Obtained Heart Container in Deepwood Shrine 19 (Big Green Chuchu) */ - LV1_16_1STEND, /* Seen Green Chuchu Cutscene in Deepwood Shrine 18 (Boss Door) */ - LV1_17_00, /* Boss Door Open in Deepwood Shrine 18 (Boss Door) */ - LV1_17_T0, /* Red Rupee Chest Open in Deepwood Shrine 18 (Boss Door) */ - LV1_02_00, /* Revealed Chest Button in Deepwood Shrine 11 (Stairs to B2) */ - LV1_02_01, /* Hit Chest Button in Deepwood Shrine 11 (Stairs to B2) */ - LV1_10_04, /* Small Key Chest Spawned in Deepwood Shrine 2 (Slug & Torches) */ - LV1_20_CAP_0, /* Ezlo talks about moving barrel in Deepwood Shrine (Inside Barrel) */ - LV1_01_HK, /* Obtained Heart Piece in Deepwood Shrine 12 (To Madderpillar) */ - LV1_04_CAP_0, /* Ezlo talks about pushing and pulling pillars in Deepwood Shrine 7 (Double Pillar Small Key) */ - LV1_03_00, /* ??? in Deepwood Shrine 6 (Pressure Button Bridge) */ - LV1_05_HK, /* Obtained Heart Piece in Deepwood Shrine 5 (Heart Piece & Map) */ - LV1_08_01, /* Key Falls & Door Open in Deepwood Shrine 10 (Mulldozer fight) */ - LV1_01_05, /* Blue Portal Activated in Deepwood Shrine 12 (To Madderpillar) */ - LV1_10_CAP_0, /* Ezlo talks about locked door in Deepwood Shrine 2 (Slug & Torches) */ + LV1_00_WALK, /* Visited Room 13 in Deepwood Shrine 13 (Madderpillar) */ + LV1_01_WALK, /* Visited Room 12 in Deepwood Shrine 12 (To Madderpillar) */ + LV1_02_WALK, /* Visited Room 11 in Deepwood Shrine 11 (Stairs to B2) */ + LV1_03_WALK, /* Visited Room 6 in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_04_WALK, /* Visited Room 7 in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_05_WALK, /* Visited Room 5 in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_06_WALK, /* Visited Room 4 in Deepwood Shrine 4 (Barrel) */ + LV1_07_WALK, /* Visited Room 8 in Deepwood Shrine 8 (Mushrooms) */ + LV1_08_WALK, /* Visited Room 10 in Deepwood Shrine 10 (Mulldozer Fight) */ + LV1_09_WALK, /* Visited Room 9 in Deepwood Shrine 9 (Pillars & Slugs) */ + LV1_0A_WALK, /* Visited Room 3 in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0B_WALK, /* Visited Entrance in Deepwood Shrine 1 (Entrance) */ + LV1_10_WALK, /* Visited Room 2 in Deepwood Shrine 2 (Slug & Torches) */ + LV1_11_WALK, /* Visited Room 17 in Deepwood Shrine 17 (Boss Key) */ + LV1_12_WALK, /* Visited Room 16 in Deepwood Shrine 16 (Lilypad North) */ + LV1_13_WALK, + LV1_14_WALK, /* Visited Room 14 in Deepwood Shrine 14 (Lilypad West) */ + LV1_15_WALK, /* Visited Room 15 in Deepwood Shrine 15 (Lilypad East) */ + LV1_16_WALK, /* Visited Room 19 in Deepwood Shrine 19 (Big Green Chuchu) */ + LV1_17_WALK, /* Visited Room 18 in Deepwood Shrine 18 (Boss Door) */ + LV1_TARU_0, /* Left Buttons Pressed in Deepwood Shrine 4 (Barrel) */ + LV1_TARU_1, /* Right Button Pressed in Deepwood Shrine 4 (Barrel) */ + LV1_00_00, /* Defeated Madderpillar in Deepwood Shrine 13 (Madderpillar) */ + LV1_00_01, + LV1_00_02, /* Sucked East Web in Deepwood Shrine 13 (Madderpillar) */ + LV1_00_03, /* Sucked South Web in Deepwood Shrine 13 (Madderpillar) */ + LV1_00_T0, /* Gust Jar Chest Open in Deepwood Shrine 13 (Madderpillar) */ + LV1_01_00, /* Shortcut Door to Barrel Room Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_01, /* Blue Portal Hidden Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_02, /* Door to Madderpillar Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_03, /* Left Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_04, /* Right Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_T0, + LV1_01_T1, /* Left 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_T2, /* Right 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_02_T0, /* 20 Shell Chest Open in Deepwood Shrine 11 (Stairs to B2) */ + LV1_03_CAP_0, /* Ezlo talks about bridge pressure button in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_04_02, /* Pot set on button in Room 6 in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_04_T0, /* Small Key Chest Open in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_05_T0, + LV1_05_T1, /* Map Chest Open in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_06_03, /* East Door Open in Deepwood Shrine 4 (Barrel) */ + LV1_06_T0, /* 10 Shell Chest Open in Deepwood Shrine 4 (Barrel) */ + LV1_06_CAP_0, /* Ezlo talks about barrel in Deepwood Shrine 4 (Barrel) */ + LV1_07_00, /* Hit bridge button in Deepwood Shrine 8 (Mushrooms) */ + LV1_07_CAP_0, + LV1_08_00, /* Defeated Mulldozers in Deepwood Shrine 10 (Mulldozer Fight) */ + LV1_08_KEY, /* Obtained Small Key in Deepwood Shrine 10 (Mulldozer Fight) */ + LV1_09_00, + LV1_0A_00, /* Lever pulled in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0A_CAP_0, /* Ezlo talks about pull lever in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0B_01, /* Sucked West Web in Deepwood Shrine 1 (Entrance) */ + LV1_0B_02, /* Sucked East Web in Deepwood Shrine 1 (Entrance) */ + LV1_0B_15, /* Blue and Red Portals Activate in Deepwood Shrine 1 (Entrance) */ + LV1_0B_CAP_0, /* Ezlo talks about Deepwood Shrine in Deepwood Shrine 1 (Entrance) */ + LV1_10_00, /* Hit top left button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_01, /* Hit bottom left button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_02, /* Hit top right button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_03, /* Hit bottom right button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_KEY, /* Door open in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_T0, /* Small Key Chest Open in Deepwood Shrine 2 (Slug & Torches) */ + LV1_11_01, /* Red Portal Button Pressed in Deepwood Shrine 17 (Boss Key) */ + LV1_11_T0, /* Boss Key Chest Open in Deepwood Shrine 17 (Boss Key) */ + LV1_12_15, /* Lily pad appears in Room 16 in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_T0, /* Small Key Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_T1, /* Compass Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_00, /* Pot set on Chest button in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_01, /* Pot set on button in Room 15 in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_14_00, /* Door open in Deepwood Shrine 14 (Lilypad West) */ + LV1_14_CAP_0, /* Ezlo talks about lilypad in Deepwood Shrine 14 (Lilypad West) */ + LV1_16_UTSUWA, /* Obtained Heart Container in Deepwood Shrine 19 (Big Green Chuchu) */ + LV1_16_1STEND, /* Seen Green Chuchu Cutscene in Deepwood Shrine 18 (Boss Door) */ + LV1_17_00, /* Boss Door Open in Deepwood Shrine 18 (Boss Door) */ + LV1_17_T0, /* Red Rupee Chest Open in Deepwood Shrine 18 (Boss Door) */ + LV1_02_00, /* Revealed Chest Button in Deepwood Shrine 11 (Stairs to B2) */ + LV1_02_01, /* Hit Chest Button in Deepwood Shrine 11 (Stairs to B2) */ + LV1_10_04, /* Small Key Chest Spawned in Deepwood Shrine 2 (Slug & Torches) */ + LV1_20_CAP_0, /* Ezlo talks about moving barrel in Deepwood Shrine (Inside Barrel) */ + LV1_01_HK, /* Obtained Heart Piece in Deepwood Shrine 12 (To Madderpillar) */ + LV1_04_CAP_0, /* Ezlo talks about pushing and pulling pillars in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_03_00, /* ??? in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_05_HK, /* Obtained Heart Piece in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_08_01, /* Key Falls & Door Open in Deepwood Shrine 10 (Mulldozer fight) */ + LV1_01_05, /* Blue Portal Activated in Deepwood Shrine 12 (To Madderpillar) */ + LV1_10_CAP_0, /* Ezlo talks about locked door in Deepwood Shrine 2 (Slug & Torches) */ #if !defined(EU) && !defined(JP) - LV1_12_CAP_0, + LV1_12_CAP_0, #endif END_5, } LocalFlags5; typedef enum { BEGIN_6, - LV2_00_WALK, /* Map Screen, Visited Room 12 in Cave of Flames 12 (Stairs to B2) */ - LV2_01_WALK, /* Map Screen, Visited Room 11 in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_02_WALK, /* Map Screen, Visited Room 10 in Cave of Flames 10 (Lava Minecart) */ - LV2_03_WALK, /* Map Screen, Visited Entrance in Cave of Flames 1 (Entrance) */ - LV2_04_WALK, /* Map Screen, Visited Room 5 in Cave of Flames 5 (Minecart) */ - LV2_05_WALK, /* Map Screen, Visited Room 4 in Cave of Flames 4 (Rupee Like) */ - LV2_06_WALK, /* Map Screen, Visited Room 6 in Cave of Flames 6 (B1 West) */ - LV2_07_WALK, /* Map Screen, Visited Room 7 in Cave of Flames 7 (Helmasaurs) */ - LV2_08_WALK, /* Map Screen, Visited Room 9 in Cave of Flames 9 (Whirlwind) */ - LV2_09_WALK, /* Map Screen, Visited Room 8 in Cave of Flames 8 (Minish Lava) */ - LV2_10_WALK, /* Map Screen, Visited Room 13 in Cave of Flames 13 (Minish Spike Traps) */ - LV2_11_WALK, /* Map Screen, Visited Room 14 in Cave of Flames 14 (Quad Rollobite) */ - LV2_12_WALK, /* Map Screen, Visited Room 18 in Cave of Flames 18 (Hole to Gleerok) */ - LV2_13_WALK, /* Map Screen, Visited Room 16 in Cave of Flames 16 (Pacci Whirlwind) */ - LV2_14_WALK, /* Map Screen, Visited Room 17 in Cave of Flames 17 (Spike Trap Kinstone) */ - LV2_15_WALK, /* Map Screen, Visited Room 3 in Cave of Flames 3 (Spinies) */ - LV2_16_WALK, /* Map Screen, Visited Room 1 in Cave of Flames 2 (Bob-ombs) */ - LV2_17_WALK, /* Map Screen, Visited Room 15 in Cave of Flames 15 (Boss Key Room) */ - LV2_BOSS_00_WALK, /* Map Screen, Visited Room 19 in Cave of Flames 19 (Gleerok) */ - LV2_00_00, /* Opened Stairs Door in Cave of Flames 12 (Stairs to B2) */ - LV2_00_01, /* Hit Door Button in Cave of Flames 12 (Stairs to B2) */ - LV2_01_01, /* Defeated Spiny Chus in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_01_02, /* Pushed Chest Pillar to Hole in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_01_T0, /* Small Key Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_01_T1, /* Cane of Pacci Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_02_01, /* Blew up wall to Heart Piece in Cave of Flames 10 (Lava Minecart) */ - LV2_03_CAP_0, /* Ezlo talks about Cave of Flames in Cave of Flames (Entrance) */ - LV2_04_00, /* Minecart Switch Flipped in Cave of Flames 5 (Minecart) */ - LV2_04_01, /* Opened Doors to Switch in Cave of Flames 5 (Minecart) */ - LV2_04_CAP_0, /* Ezlo talks about Minecart in Cave of Flames 5 (Minecart) */ - LV2_06_00, /* Blew up wall in Cave of Flames 6 (B1 West) */ - LV2_06_T0, - LV2_06_CAP_0, /* Ezlo talks after Minecart in Cave of Flames 6 (B1 West) */ - LV2_07_00, /* Defeated Helmasaurs in Cave of Flames 7 (Helmasaurs) */ - LV2_07_CAP_0, /* Ezlo talks about Portal in Cave of Flames 7 (Helmasaurs) */ - LV2_08_00, /* Hit Door Button in Cave of Flames 9 (Whirlwind) */ - LV2_08_01, /* Pushed Chest Pillar to Hole in Cave of Flames 9 (Whirlwind) */ - LV2_08_T0, /* Small Key Chest Open in Cave of Flames 9 (Whirlwind) */ - LV2_08_T1, /* 50 Rupee Chest Open in Cave of Flames 9 (Whirlwind) */ - LV2_09_00, /* Hit Door Button in Cave of Flames 8 (Minish Lava) */ - LV2_09_T0, /* Blue L Kinstone Chest Open in Cave of Flames 8 (Minish Lava) */ - LV2_09_T1, /* Map Chest Open in Cave of Flames 8 (Minish Lava) */ - LV2_10_00, /* Minecart Switch Flipped in Cave of Flames 13 (Minish Spike Traps) */ - LV2_10_T0, /* Blue S Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ - LV2_10_T1, /* Green (< Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ - LV2_11_00, /* Flipped Barrier Switch in Cave of Flames 14 (Quad Rollobite) */ - LV2_11_01, /* Pushed Switch Pillar to Hole in Cave of Flames 14 (Quad Rollobite) */ - LV2_14_T0, /* Green [ Kinstone Chest Open in Cave of Flames 17 (Spike Trap Kinstone) */ - LV2_15_01, /* Defeated Spinies in Cave of Flames 3 (Spinies) */ - LV2_15_T0, /* Compass Chest Open in Cave of Flames 3 (Spinies) */ - LV2_15_CAP_0, /* Ezlo talks about Spinies in Cave of Flames 3 (Spinies) */ - LV2_16_00, /* Blew up wall in Cave of Flames 2 (Bob-ombs) */ - LV2_17_00, /* Activated Red Portal in Cave of Flames 15 (Boss Key Room) */ - LV2_17_15, /* Boss Door Open in Cave of Flames 15 (Boss Key Room) */ - LV2_17_T0, /* Green / Kinstone Chest Open in Cave of Flames 15 (Boss Key Room) */ - LV2_17_T1, /* 100 Rupee Chest Open in Cave of Flames 15 (Boss Key Room) */ - LV2_17_T2, /* Boss Key Chest Open in Cave of Flames 15 (Boss Key Room) */ - LV2_20_UTSUWA, /* Obtained Heart Container in Cave of Flames 19 (Gleerok) */ - LV2_00_02, /* Jumped up to Blue Portal Button? in Cave of Flames 12 (Stairs to B2) */ - LV2_06_HK, /* Obtained Heart Piece in Cave of Flames 6 (B1 West) */ - LV2_11_02, /* Barrier Down in Cave of Flames 14 (Quad Rollobite) */ - LV2_05_R1, /* Grabbed Top Left Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_05_R2, /* Grabbed Top Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_05_R3, /* Grabbed Top Right Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_05_R4, /* Grabbed Bottom Left Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_05_R5, /* Grabbed Bottom Right Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_00_CAP_0, /* Ezlo talks about using Cane on hole in Cave of Flames 12 (Stairs to B2) */ - LV2_09_CAP_0, /* Ezlo talks about falling in lava in Cave of Flames 8 (Minish Lava) */ + LV2_00_WALK, /* Visited Room 12 in Cave of Flames 12 (Stairs to B2) */ + LV2_01_WALK, /* Visited Room 11 in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_02_WALK, /* Visited Room 10 in Cave of Flames 10 (Lava Minecart) */ + LV2_03_WALK, /* Visited Entrance in Cave of Flames 1 (Entrance) */ + LV2_04_WALK, /* Visited Room 5 in Cave of Flames 5 (Minecart) */ + LV2_05_WALK, /* Visited Room 4 in Cave of Flames 4 (Rupee Like) */ + LV2_06_WALK, /* Visited Room 6 in Cave of Flames 6 (B1 West) */ + LV2_07_WALK, /* Visited Room 7 in Cave of Flames 7 (Helmasaurs) */ + LV2_08_WALK, /* Visited Room 9 in Cave of Flames 9 (Whirlwind) */ + LV2_09_WALK, /* Visited Room 8 in Cave of Flames 8 (Minish Lava) */ + LV2_10_WALK, /* Visited Room 13 in Cave of Flames 13 (Minish Spike Traps) */ + LV2_11_WALK, /* Visited Room 14 in Cave of Flames 14 (Quad Rollobite) */ + LV2_12_WALK, /* Visited Room 18 in Cave of Flames 18 (Hole to Gleerok) */ + LV2_13_WALK, /* Visited Room 16 in Cave of Flames 16 (Pacci Whirlwind) */ + LV2_14_WALK, /* Visited Room 17 in Cave of Flames 17 (Spike Trap Kinstone) */ + LV2_15_WALK, /* Visited Room 3 in Cave of Flames 3 (Spinies) */ + LV2_16_WALK, /* Visited Room 1 in Cave of Flames 2 (Bob-ombs) */ + LV2_17_WALK, /* Visited Room 15 in Cave of Flames 15 (Boss Key Room) */ + LV2_BOSS_00_WALK, /* Visited Room 19 in Cave of Flames 19 (Gleerok) */ + LV2_00_00, /* Opened Stairs Door in Cave of Flames 12 (Stairs to B2) */ + LV2_00_01, /* Hit Door Button in Cave of Flames 12 (Stairs to B2) */ + LV2_01_01, /* Defeated Spiny Chus in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_02, /* Pushed Chest Pillar to Hole in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_T0, /* Small Key Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_T1, /* Cane of Pacci Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_02_01, /* Blew up wall to Heart Piece in Cave of Flames 10 (Lava Minecart) */ + LV2_03_CAP_0, /* Ezlo talks about Cave of Flames in Cave of Flames (Entrance) */ + LV2_04_00, /* Minecart Switch Flipped in Cave of Flames 5 (Minecart) */ + LV2_04_01, /* Opened Doors to Switch in Cave of Flames 5 (Minecart) */ + LV2_04_CAP_0, /* Ezlo talks about Minecart in Cave of Flames 5 (Minecart) */ + LV2_06_00, /* Blew up wall in Cave of Flames 6 (B1 West) */ + LV2_06_T0, + LV2_06_CAP_0, /* Ezlo talks after Minecart in Cave of Flames 6 (B1 West) */ + LV2_07_00, /* Defeated Helmasaurs in Cave of Flames 7 (Helmasaurs) */ + LV2_07_CAP_0, /* Ezlo talks about Portal in Cave of Flames 7 (Helmasaurs) */ + LV2_08_00, /* Hit Door Button in Cave of Flames 9 (Whirlwind) */ + LV2_08_01, /* Pushed Chest Pillar to Hole in Cave of Flames 9 (Whirlwind) */ + LV2_08_T0, /* Small Key Chest Open in Cave of Flames 9 (Whirlwind) */ + LV2_08_T1, /* 50 Rupee Chest Open in Cave of Flames 9 (Whirlwind) */ + LV2_09_00, /* Hit Door Button in Cave of Flames 8 (Minish Lava) */ + LV2_09_T0, /* Blue L Kinstone Chest Open in Cave of Flames 8 (Minish Lava) */ + LV2_09_T1, /* Map Chest Open in Cave of Flames 8 (Minish Lava) */ + LV2_10_00, /* Minecart Switch Flipped in Cave of Flames 13 (Minish Spike Traps) */ + LV2_10_T0, /* Blue S Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ + LV2_10_T1, /* Green (< Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ + LV2_11_00, /* Flipped Barrier Switch in Cave of Flames 14 (Quad Rollobite) */ + LV2_11_01, /* Pushed Switch Pillar to Hole in Cave of Flames 14 (Quad Rollobite) */ + LV2_14_T0, /* Green [ Kinstone Chest Open in Cave of Flames 17 (Spike Trap Kinstone) */ + LV2_15_01, /* Defeated Spinies in Cave of Flames 3 (Spinies) */ + LV2_15_T0, /* Compass Chest Open in Cave of Flames 3 (Spinies) */ + LV2_15_CAP_0, /* Ezlo talks about Spinies in Cave of Flames 3 (Spinies) */ + LV2_16_00, /* Blew up wall in Cave of Flames 2 (Bob-ombs) */ + LV2_17_00, /* Activated Red Portal in Cave of Flames 15 (Boss Key Room) */ + LV2_17_15, /* Boss Door Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T0, /* Green / Kinstone Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T1, /* 100 Rupee Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T2, /* Boss Key Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_20_UTSUWA, /* Obtained Heart Container in Cave of Flames 19 (Gleerok) */ + LV2_00_02, /* Jumped up to Blue Portal Button? in Cave of Flames 12 (Stairs to B2) */ + LV2_06_HK, /* Obtained Heart Piece in Cave of Flames 6 (B1 West) */ + LV2_11_02, /* Barrier Down in Cave of Flames 14 (Quad Rollobite) */ + LV2_05_R1, /* Grabbed Top Left Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R2, /* Grabbed Top Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R3, /* Grabbed Top Right Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R4, /* Grabbed Bottom Left Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R5, /* Grabbed Bottom Right Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_00_CAP_0, /* Ezlo talks about using Cane on hole in Cave of Flames 12 (Stairs to B2) */ + LV2_09_CAP_0, /* Ezlo talks about falling in lava in Cave of Flames 8 (Minish Lava) */ END_6, } LocalFlags6; typedef enum { BEGIN_7, - LV3_00_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 3F Eyegores */ - LV3_01_WALK, /* Map Screen, Visited Room in Fortress of Winds, Before Mazaal */ - LV3_02_WALK, /* Map Screen, Visited Room in Fortress of Winds, Right Side 3F Key */ - LV3_03_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 3F Pit Platforms */ - LV3_04_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 3F Key */ - LV3_05_WALK, - LV3_06_WALK, - LV3_10_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Darknut */ - LV3_11_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Eyes */ - LV3_12_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Pit Hall Left */ - LV3_13_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Wallmasters */ - LV3_14_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_15_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Spike Traps */ - LV3_16_WALK, /* Map Screen, Visited Room in Fortress of Winds, Mazaal */ - LV3_17_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 2F Stalfos */ - LV3_18_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 2F Eyes */ - LV3_19_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F */ - LV3_1A_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Minish Hole to Key */ - LV3_1B_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door 2F Boss Key */ - LV3_1C_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Side 2F */ - LV3_1D_WALK, /* Map Screen, Visited Room in Fortress of Winds, Right Side 2F */ - LV3_20_WALK, /* Map Screen, Visited Room in Fortress of Winds, Left Door */ - LV3_21_WALK, /* Map Screen, Visited Room in Fortress of Winds, Center Door */ - LV3_22_WALK, /* Map Screen, Visited Room in Fortress of Winds, Right Door */ - LV3_23_WALK, /* Map Screen, Visited Room in Fortress of Winds, Leftmost Door Wizzrobes */ - LV3_24_WALK, /* Map Screen, Visited Room in Fortress of Winds, Rightmost Door Heart Piece */ - LV3_00_00, /* Defeated Eyegores in Fortress of Winds, Left Side 3F Eyegores */ - LV3_00_T0, /* Compass Chest Open in Fortress of Winds, Left Side 3F Eyegores */ - LV3_02_00, /* Door Open in Fortress of Winds, Right Side Key Boss Key Side */ - LV3_02_01, /* Door Open in Fortress of Winds, Right Side 3F Key */ - LV3_02_02, /* Key drop animation has finished in Fortress of Winds, Right Side 3F Key */ - LV3_02_KEYFALL, /* Pulled Lever, Key falls in Fortress of Winds, Right Side 3F Key */ - LV3_03_00, /* Shot Arrows at Top Eyes in Fortress of Winds, Left Side 3F Eyes */ - LV3_03_01, /* Shot Arrows at East Eyes in Fortress of Winds, Left Side 3F Eyes */ - LV3_04_00, /* Key drop animation has finished in Fortress of Winds, Left Side 3F Key */ - LV3_04_KEYFALL, /* Pulled Lever, Key falls in Fortress of Winds, Left Side 3F Key */ - LV3_04_WARP_0, /* Red Portal Active in Fortress of Winds, Left Side 3F Key */ - LV3_04_BOSSDOOR, /* Boss Door Open in Fortress of Winds, Left Side 3F Key */ - LV3_10_00, /* Defeated Darknut in Fortress of Winds, Center Door 2F Darknut */ - LV3_11_00, /* Shot Arrows at Eyes in Fortress of Winds, Center Door 2F Eyes */ - LV3_12_CAP_0, /* Ezlo talks about bridge in Fortress of Winds, Center Door 2F Pit Hall Right */ - LV3_13_00, /* Defeated Wallmasters in Fortress of Winds, Center Door 2F Wallmasters */ - LV3_14_00, /* Buttons Hit in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_14_01, /* Door Open in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_14_02, /* Key Fallen in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_14_KEY, /* Obtained Key in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_15_00, /* Hit Button in Fortress of Winds, Center Door 2F Spike Traps */ - LV3_17_00, /* Defeated Stalfos in Fortress of Winds, Left Side 2F Stalfos */ - LV3_16_BOSSDIE, /* Defeated Mazaal in Fortress of Winds, Mazaal */ - LV3_16_GETUTSUWA, /* Obtained Heart Container in Fortress of Winds, Mazaal */ - LV3_18_00, /* Shot Arrow at Eye in Fortress of Winds, Left Side 2F Eye */ - LV3_18_00_BW00, /* Blew up wall in Fortress of Winds, Left Side 2F Eye */ - LV3_19_01, /* Left Eyegore Defeated in Fortress of Winds, Center Room 2F */ - LV3_19_02, /* Door Open in Fortress of Winds, Center Door 2F Left Door */ - LV3_19_03, /* Door Open in Fortress of Winds, Center Door 2F Right Door */ - LV3_19_04, /* Right Eyegore defeated in Fortress of Winds, Center Room 2F */ - LV3_19_T0, /* Map Chest Open in Fortress of Winds, Center Room 2F */ - LV3_1B_T0, /* Boss Key Chest Open in Fortress of Winds, Center Room 2F Boss Key */ - LV3_1D_00, /* Pulled Left Lever in Fortress of Winds, Right Side 2F */ - LV3_1D_01, /* Pulled Right Lever in Fortress of Winds, Right Side 2F */ - LV3_1D_T0, /* Blue L Kinstone Chest Open in Fortress of Winds, Right Side 2F Left Chest */ - LV3_1D_T1, /* Blue S Kinstone Chest Open in Fortress of Winds, Right Side 2F Right Chest */ - LV3_20_00, /* Obtained Key in Fortress of Winds, Left Door */ - LV3_20_CAP_0, /* Ezlo talks about Fortress of Winds in Fortress of Winds */ - LV3_22_00, /* Obtained Key in Fortress of Winds, Right Door */ - LV3_23_01, /* Defeated Wizzrobes in Fortress of Winds, Leftmost Door Wizzrobes */ - LV3_23_T0, /* 80 Shell Chest Open in Fortress of Winds, Leftmost Door Wizzrobes */ - LV3_24_T0, - LV3_OCARINA_FALL, /* Zeffa drops Ocarina on ground in Fortress of Winds, Ocarina of Wind Room */ - LV3_02_CAP_0, /* Ezlo talks about fallen Key in Fortress of Winds Right Side 3F Key */ - LV3_24_HK, /* Obtained Heart Piece in Fortress of Winds, Rightmost Heart Piece Room */ - LV3_10_01, /* Doors opened in Fortress of Winds, Center Door 2F Darknut */ - LV3_17_01, /* Doors opened in Fortress of Winds, Left Side 2F Stalfos */ + LV3_00_WALK, /* Visited Room in Fortress of Winds, Left Side 3F Eyegores */ + LV3_01_WALK, /* Visited Room in Fortress of Winds, Before Mazaal */ + LV3_02_WALK, /* Visited Room in Fortress of Winds, Right Side 3F Key */ + LV3_03_WALK, /* Visited Room in Fortress of Winds, Left Side 3F Pit Platforms */ + LV3_04_WALK, /* Visited Room in Fortress of Winds, Left Side 3F Key */ + LV3_05_WALK, + LV3_06_WALK, + LV3_10_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Darknut */ + LV3_11_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Eyes */ + LV3_12_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Pit Hall Left */ + LV3_13_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Wallmasters */ + LV3_14_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_15_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Spike Traps */ + LV3_16_WALK, /* Visited Room in Fortress of Winds, Mazaal */ + LV3_17_WALK, /* Visited Room in Fortress of Winds, Left Side 2F Stalfos */ + LV3_18_WALK, /* Visited Room in Fortress of Winds, Left Side 2F Eyes */ + LV3_19_WALK, /* Visited Room in Fortress of Winds, Center Door 2F */ + LV3_1A_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Minish Hole to Key */ + LV3_1B_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Boss Key */ + LV3_1C_WALK, /* Visited Room in Fortress of Winds, Left Side 2F */ + LV3_1D_WALK, /* Visited Room in Fortress of Winds, Right Side 2F */ + LV3_20_WALK, /* Visited Room in Fortress of Winds, Left Door */ + LV3_21_WALK, /* Visited Room in Fortress of Winds, Center Door */ + LV3_22_WALK, /* Visited Room in Fortress of Winds, Right Door */ + LV3_23_WALK, /* Visited Room in Fortress of Winds, Leftmost Door Wizzrobes */ + LV3_24_WALK, /* Visited Room in Fortress of Winds, Rightmost Door Heart Piece */ + LV3_00_00, /* Defeated Eyegores in Fortress of Winds, Left Side 3F Eyegores */ + LV3_00_T0, /* Compass Chest Open in Fortress of Winds, Left Side 3F Eyegores */ + LV3_02_00, /* Door Open in Fortress of Winds, Right Side Key Boss Key Side */ + LV3_02_01, /* Door Open in Fortress of Winds, Right Side 3F Key */ + LV3_02_02, /* Key drop animation has finished in Fortress of Winds, Right Side 3F Key */ + LV3_02_KEYFALL, /* Pulled Lever, Key falls in Fortress of Winds, Right Side 3F Key */ + LV3_03_00, /* Shot Arrows at Top Eyes in Fortress of Winds, Left Side 3F Eyes */ + LV3_03_01, /* Shot Arrows at East Eyes in Fortress of Winds, Left Side 3F Eyes */ + LV3_04_00, /* Key drop animation has finished in Fortress of Winds, Left Side 3F Key */ + LV3_04_KEYFALL, /* Pulled Lever, Key falls in Fortress of Winds, Left Side 3F Key */ + LV3_04_WARP_0, /* Red Portal Active in Fortress of Winds, Left Side 3F Key */ + LV3_04_BOSSDOOR, /* Boss Door Open in Fortress of Winds, Left Side 3F Key */ + LV3_10_00, /* Defeated Darknut in Fortress of Winds, Center Door 2F Darknut */ + LV3_11_00, /* Shot Arrows at Eyes in Fortress of Winds, Center Door 2F Eyes */ + LV3_12_CAP_0, /* Ezlo talks about bridge in Fortress of Winds, Center Door 2F Pit Hall Right */ + LV3_13_00, /* Defeated Wallmasters in Fortress of Winds, Center Door 2F Wallmasters */ + LV3_14_00, /* Buttons Hit in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_01, /* Door Open in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_02, /* Key Fallen in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_KEY, /* Obtained Key in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_15_00, /* Hit Button in Fortress of Winds, Center Door 2F Spike Traps */ + LV3_17_00, /* Defeated Stalfos in Fortress of Winds, Left Side 2F Stalfos */ + LV3_16_BOSSDIE, /* Defeated Mazaal in Fortress of Winds, Mazaal */ + LV3_16_GETUTSUWA, /* Obtained Heart Container in Fortress of Winds, Mazaal */ + LV3_18_00, /* Shot Arrow at Eye in Fortress of Winds, Left Side 2F Eye */ + LV3_18_00_BW00, /* Blew up wall in Fortress of Winds, Left Side 2F Eye */ + LV3_19_01, /* Left Eyegore Defeated in Fortress of Winds, Center Room 2F */ + LV3_19_02, /* Door Open in Fortress of Winds, Center Door 2F Left Door */ + LV3_19_03, /* Door Open in Fortress of Winds, Center Door 2F Right Door */ + LV3_19_04, /* Right Eyegore defeated in Fortress of Winds, Center Room 2F */ + LV3_19_T0, /* Map Chest Open in Fortress of Winds, Center Room 2F */ + LV3_1B_T0, /* Boss Key Chest Open in Fortress of Winds, Center Room 2F Boss Key */ + LV3_1D_00, /* Pulled Left Lever in Fortress of Winds, Right Side 2F */ + LV3_1D_01, /* Pulled Right Lever in Fortress of Winds, Right Side 2F */ + LV3_1D_T0, /* Blue L Kinstone Chest Open in Fortress of Winds, Right Side 2F Left Chest */ + LV3_1D_T1, /* Blue S Kinstone Chest Open in Fortress of Winds, Right Side 2F Right Chest */ + LV3_20_00, /* Obtained Key in Fortress of Winds, Left Door */ + LV3_20_CAP_0, /* Ezlo talks about Fortress of Winds in Fortress of Winds */ + LV3_22_00, /* Obtained Key in Fortress of Winds, Right Door */ + LV3_23_01, /* Defeated Wizzrobes in Fortress of Winds, Leftmost Door Wizzrobes */ + LV3_23_T0, /* 80 Shell Chest Open in Fortress of Winds, Leftmost Door Wizzrobes */ + LV3_24_T0, + LV3_OCARINA_FALL, /* Zeffa drops Ocarina on ground in Fortress of Winds, Ocarina of Wind Room */ + LV3_02_CAP_0, /* Ezlo talks about fallen Key in Fortress of Winds Right Side 3F Key */ + LV3_24_HK, /* Obtained Heart Piece in Fortress of Winds, Rightmost Heart Piece Room */ + LV3_10_01, /* Doors opened in Fortress of Winds, Center Door 2F Darknut */ + LV3_17_01, /* Doors opened in Fortress of Winds, Left Side 2F Stalfos */ END_7, } LocalFlags7; typedef enum { BEGIN_8, - LV4_00_WALK, /* Map Screen, Visited Room in Temple of Droplets West Hole to Boss Key */ - LV4_01_WALK, /* Map Screen, Visited Room in Temple of Droplets North Split to Keys */ - LV4_02_WALK, /* Map Screen, Visited Room in Temple of Droplets East Hole to Key */ - LV4_03_WALK, /* Map Screen, Visited Room in Temple of Droplets Entrance */ - LV4_04_WALK, /* Map Screen, Visited Room in Temple of Droplets Stairs to West Lever */ - LV4_05_WALK, /* Map Screen, Visited Room in Temple of Droplets Scissors Beetle Miniboss */ - LV4_06_WALK, /* Map Screen, Visited Room in Temple of Droplets West Waterfall Northwest */ - LV4_07_WALK, /* Map Screen, Visited Room in Temple of Droplets West Waterfall Northeast */ - LV4_08_WALK, /* Map Screen, Visited Room in Temple of Droplets Main Room */ - LV4_09_WALK, /* Map Screen, Visited Room in Temple of Droplets Corner from Beetle Miniboss */ - LV4_0A_WALK, /* Map Screen, Visited Room in Temple of Droplets Ice Pit Maze */ - LV4_0B_WALK, /* Map Screen, Visited Room in Temple of Droplets, Hole to Blue Chuchu Key */ - LV4_0C_WALK, /* Map Screen, Visited Room in Temple of Droplets West Waterfall Southwest */ - LV4_0D_WALK, /* Map Screen, Visited Room in Temple of Droplets West Waterfall Southeast */ - LV4_0E_WALK, /* Map Screen, Visited Room in Temple of Droplets, Big Octorok */ - LV4_0F_WALK, /* Map Screen, Visited Room in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_10_WALK, /* Map Screen, Visited Room in Temple of Droplets Big Blue Chuchu */ - LV4_11_WALK, /* Map Screen, Visited Room in Temple of Droplets Blue Chuchu Key */ - LV4_20_WALK, /* Map Screen, Visited Room in Temple of Droplets Boss Key Room */ - LV4_21_WALK, /* Map Screen, Visited Room in Temple of Droplets Key 1 Room */ - LV4_22_WALK, /* Map Screen, Visited Room in Temple of Droplets Block Clone Button Puzzle */ - LV4_23_WALK, /* Map Screen, Visited Room in Temple of Droplets Block Clone Puzzle 1 */ - LV4_24_WALK, /* Map Screen, Visited Room in Temple of Droplets Block Clone Ice Bridge */ - LV4_25_WALK, /* Map Screen, Visited Room in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_26_WALK, /* Map Screen, Visited Room in Temple of Droplets Spikebars after 9 Lantern */ - LV4_27_WALK, /* Map Screen, Visited Room in Temple of Droplets 9 Lantern Room */ - LV4_28_WALK, /* Map Screen, Visited Room in Temple of Droplets Lilypad Ice Blocks */ - LV4_29_WALK, /* Map Screen, Visited Room in Temple of Droplets The 1 Frame Roll */ - LV4_2A_WALK, /* Map Screen, Visited Room in Temple of Droplets Mulldozers & Firebars */ - LV4_2B_WALK, /* Map Screen, Visited Room in Temple of Droplets Dark Lantern Maze */ - LV4_2C_WALK, /* Map Screen, Visited Room in Temple of Droplets Twin Madderpillars */ - LV4_2D_WALK, /* Map Screen, Visited Room in Temple of Droplets After Twin Madderpillars */ - LV4_2E_WALK, /* Map Screen, Visited Room in Temple of Droplets Blue Chuchu Key Lever */ - LV4_2F_WALK, /* Map Screen, Visited Room in Temple of Droplets Mulldozer Key Room */ - LV4_30_WALK, /* Map Screen, Visited Room in Temple of Droplets Bombwall to Twin Madderpillars */ - LV4_31_WALK, /* Map Screen, Visited Room in Temple of Droplets Lilypad B2 West */ - LV4_32_WALK, /* Map Screen, Visited Room in Temple of Droplets Compass Room */ - LV4_33_WALK, /* Map Screen, Visited Room in Temple of Droplets 4 Lantern Scissors Beetles */ - LV4_34_WALK, /* Map Screen, Visited Room in Temple of Droplets Lilypad B2 Middle Room */ - LV4_35_WALK, /* Map Screen, Visited Room in Temple of Droplets Lilypad B2 East Madderpillar */ - LV4_INIT, /* Open Hole Setup Completed in Temple of Droplets West Hole to Boss Key */ - LV4_01_00, /* Door Open in Temple of Droplets North Split to Keys */ - LV4_03_CAP_0, /* Ezlo talks about Temple of Droplets in Temple of Droplets Entrance */ - LV4_03_BOSSDOOR, /* Boss Door Open in Temple of Droplets Entrance */ - LV4_05_00, - LV4_05_01, /* Defeated Scissors Beetles in Temple of Droplets Scissors Beetle Miniboss */ - LV4_06_00, - LV4_07_00, /* Opened Door to Lilypad in Temple of Droplets West Waterfall Northeast */ - LV4_08_00, /* Ice Block Melted in Temple of Droplets Main Room */ - LV4_08_01, - LV4_08_02, - LV4_08_RAY_HALF, /* East Lever Pushed in Temple of Droplets Main Room */ - LV4_08_RAY_HALF_E, /* East Ice Block Thawing Zone active in Temple of Droplets Main Room */ - LV4_08_RAY_FULL, /* West Lever Pushed in Temple of Droplets Main Room */ - LV4_08_RAY_FULL_E, /* Water Element Ice Melts in Temple of Droplets Main Room */ - LV4_09_T0, /* Blue L Kinstone Chest Open in Temple of Droplets Corner from Beetle Miniboss */ - LV4_0a_TSUBO, /* Green < Kinstone Taken From Pot in Temple of Droplets Ice Pit Maze */ - LV4_0a_T0, /* Blue S Kinstone Chest Open in Temple of Droplets Ice Pit Maze */ - LV4_0c_00, /* Hit Button in Temple of Droplets West Waterfall Southwest */ - LV4_0d_00, /* Hit Button in Temple of Droplets West Waterfall Southeast */ - LV4_0d_01, /* Blocking Pillars Down in Temple of Droplets West Waterfall Southeast */ - LV4_0d_02, - LV4_0d_T0, /* Map Chest Open in Temple of Droplets West Waterfall Southeast */ - LV4_0e_UTSUWA, /* Obtained Heart Container in Temple of Droplets, Big Octorok */ - LV4_0f_00, /* Door Open in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_0f_01, /* Melted Top Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_0f_02, /* Melted Bottom Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_0f_03, /* Melted Top Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_0f_04, /* Melted Bottom Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_10_RAY, /* Lever Pushed in Temple of Droplets Big Blue Chuchu */ - LV4_10_T0, /* Lantern Chest Open in Temple of Droplets Big Blue Chuchu */ - LV4_10_BOSSDIE, /* Defeated Big Blue Chuchu in Temple of Droplets Big Blue Chuchu */ - LV4_11_00, /* Ice Block Melts in Temple of Droplets Blue Chuchu Key */ - LV4_11_RAY /* Lever Turned in Blue Chuchu Key Room in Temple of Droplets West Hole to Boss Key */_SP, /* Thawing Zone Active in Temple of Droplets Blue Chuchu Key */ + LV4_00_WALK, /* Visited Room in Temple of Droplets West Hole to Boss Key */ + LV4_01_WALK, /* Visited Room in Temple of Droplets North Split to Keys */ + LV4_02_WALK, /* Visited Room in Temple of Droplets East Hole to Key */ + LV4_03_WALK, /* Visited Room in Temple of Droplets Entrance */ + LV4_04_WALK, /* Visited Room in Temple of Droplets Stairs to West Lever */ + LV4_05_WALK, /* Visited Room in Temple of Droplets Scissors Beetle Miniboss */ + LV4_06_WALK, /* Visited Room in Temple of Droplets West Waterfall Northwest */ + LV4_07_WALK, /* Visited Room in Temple of Droplets West Waterfall Northeast */ + LV4_08_WALK, /* Visited Room in Temple of Droplets Main Room */ + LV4_09_WALK, /* Visited Room in Temple of Droplets Corner from Beetle Miniboss */ + LV4_0A_WALK, /* Visited Room in Temple of Droplets Ice Pit Maze */ + LV4_0B_WALK, /* Visited Room in Temple of Droplets, Hole to Blue Chuchu Key */ + LV4_0C_WALK, /* Visited Room in Temple of Droplets West Waterfall Southwest */ + LV4_0D_WALK, /* Visited Room in Temple of Droplets West Waterfall Southeast */ + LV4_0E_WALK, /* Visited Room in Temple of Droplets, Big Octorok */ + LV4_0F_WALK, /* Visited Room in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_10_WALK, /* Visited Room in Temple of Droplets Big Blue Chuchu */ + LV4_11_WALK, /* Visited Room in Temple of Droplets Blue Chuchu Key */ + LV4_20_WALK, /* Visited Room in Temple of Droplets Boss Key Room */ + LV4_21_WALK, /* Visited Room in Temple of Droplets Key 1 Room */ + LV4_22_WALK, /* Visited Room in Temple of Droplets Block Clone Button Puzzle */ + LV4_23_WALK, /* Visited Room in Temple of Droplets Block Clone Puzzle 1 */ + LV4_24_WALK, /* Visited Room in Temple of Droplets Block Clone Ice Bridge */ + LV4_25_WALK, /* Visited Room in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_26_WALK, /* Visited Room in Temple of Droplets Spikebars after 9 Lantern */ + LV4_27_WALK, /* Visited Room in Temple of Droplets 9 Lantern Room */ + LV4_28_WALK, /* Visited Room in Temple of Droplets Lilypad Ice Blocks */ + LV4_29_WALK, /* Visited Room in Temple of Droplets The 1 Frame Roll */ + LV4_2A_WALK, /* Visited Room in Temple of Droplets Mulldozers & Firebars */ + LV4_2B_WALK, /* Visited Room in Temple of Droplets Dark Lantern Maze */ + LV4_2C_WALK, /* Visited Room in Temple of Droplets Twin Madderpillars */ + LV4_2D_WALK, /* Visited Room in Temple of Droplets After Twin Madderpillars */ + LV4_2E_WALK, /* Visited Room in Temple of Droplets Blue Chuchu Key Lever */ + LV4_2F_WALK, /* Visited Room in Temple of Droplets Mulldozer Key Room */ + LV4_30_WALK, /* Visited Room in Temple of Droplets Bombwall to Twin Madderpillars */ + LV4_31_WALK, /* Visited Room in Temple of Droplets Lilypad B2 West */ + LV4_32_WALK, /* Visited Room in Temple of Droplets Compass Room */ + LV4_33_WALK, /* Visited Room in Temple of Droplets 4 Lantern Scissors Beetles */ + LV4_34_WALK, /* Visited Room in Temple of Droplets Lilypad B2 Middle Room */ + LV4_35_WALK, /* Visited Room in Temple of Droplets Lilypad B2 East Madderpillar */ + LV4_INIT, /* Open Hole Setup Completed in Temple of Droplets West Hole to Boss Key */ + LV4_01_00, /* Door Open in Temple of Droplets North Split to Keys */ + LV4_03_CAP_0, /* Ezlo talks about Temple of Droplets in Temple of Droplets Entrance */ + LV4_03_BOSSDOOR, /* Boss Door Open in Temple of Droplets Entrance */ + LV4_05_00, + LV4_05_01, /* Defeated Scissors Beetles in Temple of Droplets Scissors Beetle Miniboss */ + LV4_06_00, + LV4_07_00, /* Opened Door to Lilypad in Temple of Droplets West Waterfall Northeast */ + LV4_08_00, /* Ice Block Melted in Temple of Droplets Main Room */ + LV4_08_01, + LV4_08_02, + LV4_08_RAY_HALF, /* East Lever Pushed in Temple of Droplets Main Room */ + LV4_08_RAY_HALF_E, /* East Ice Block Thawing Zone active in Temple of Droplets Main Room */ + LV4_08_RAY_FULL, /* West Lever Pushed in Temple of Droplets Main Room */ + LV4_08_RAY_FULL_E, /* Water Element Ice Melts in Temple of Droplets Main Room */ + LV4_09_T0, /* Blue L Kinstone Chest Open in Temple of Droplets Corner from Beetle Miniboss */ + LV4_0a_TSUBO, /* Green < Kinstone Taken From Pot in Temple of Droplets Ice Pit Maze */ + LV4_0a_T0, /* Blue S Kinstone Chest Open in Temple of Droplets Ice Pit Maze */ + LV4_0c_00, /* Hit Button in Temple of Droplets West Waterfall Southwest */ + LV4_0d_00, /* Hit Button in Temple of Droplets West Waterfall Southeast */ + LV4_0d_01, /* Blocking Pillars Down in Temple of Droplets West Waterfall Southeast */ + LV4_0d_02, + LV4_0d_T0, /* Map Chest Open in Temple of Droplets West Waterfall Southeast */ + LV4_0e_UTSUWA, /* Obtained Heart Container in Temple of Droplets, Big Octorok */ + LV4_0f_00, /* Door Open in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_01, /* Melted Top Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_02, /* Melted Bottom Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_03, /* Melted Top Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_04, /* Melted Bottom Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_10_RAY, /* Lever Pushed in Temple of Droplets Big Blue Chuchu */ + LV4_10_T0, /* Lantern Chest Open in Temple of Droplets Big Blue Chuchu */ + LV4_10_BOSSDIE, /* Defeated Big Blue Chuchu in Temple of Droplets Big Blue Chuchu */ + LV4_11_00, /* Ice Block Melts in Temple of Droplets Blue Chuchu Key */ + LV4_11_RAY /* Lever Turned in Blue Chuchu Key Room in Temple of Droplets West Hole to Boss Key */_SP, /* Thawing Zone Active in Temple of Droplets Blue Chuchu Key */ LV4_11_RAY, - LV4_11_T0, /* Obtained Key in Temple of Droplets Blue Chuchu Key Lever */ - LV4_20_00, - LV4_20_RAY, /* Turned Lever in Temple of Droplets Boss Key Room */ - LV4_20_BOSSKEY, /* Boss Key Ice Block Gone in Temple of Droplets Boss Key Room */ - LV4_21_00, /* Ezlo trigger active in Temple of Droplets Key 1 Room */ - LV4_21_RAY, /* Turned Lever in Temple of Droplets Key 1 Room */ - LV4_21_KEY, /* Obtained Key in Temple of Droplets Key 1 Room */ - LV4_21_CAP_0, /* Ezlo talks about sunlight in Temple of Droplets Key 1 Room */ - LV4_22_00, /* Door Open in Temple of Droplets Block Clone Button Puzzle */ - LV4_23_00, /* Door Open in Temple of Droplets Flamebar Block Puzzle */ - LV4_24_00, /* Melted Ice Block in Temple of Droplets Block Clone Ice Bridge */ - LV4_27_00, /* 9 Lanterns Lit in Temple of Droplets 9 Lantern Room */ - LV4_28_00, /* Hit Button in Temple of Droplets Lilypad Ice Blocks */ - LV4_28_01, /* Lilypad Ice Blocks Gate Stays Open in Temple of Droplets The 1 Frame Roll */ - LV4_28_T0, /* 100 Shell Chest Open (Frozen) in Temple of Droplets Lilypad Ice Blocks */ - LV4_28_T1, /* 50 Rupee Chest Open in Temple of Droplets Lilypad Ice Blocks */ - LV4_29_CAP_0, /* Ezlo talks about darkness in Temple of Droplets The 1 Frame Roll */ - LV4_2b_T0, /* Red W Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Right Chest */ - LV4_2b_T1, /* Red (> Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Left Chest */ - LV4_2b_T2, /* Red 3 Prong Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Bottom Chest */ - LV4_2b_BKABE, /* Blew up wall to Mulldozer Key Room in Temple of Droplets Dark Lantern Maze */ - LV4_2b_00, /* Lit Top Left Torch in Temple of Droplets Dark Lantern Maze */ - LV4_2b_01, /* Lit Top Right Torch in Temple of Droplets Dark Lantern Maze */ - LV4_2b_02, /* Door Open in Temple of Droplets Dark Lantern Maze */ - LV4_2b_03, /* Lit Middle Right Torch in Temple of Droplets Dark Lantern Maze */ - LV4_2b_04, /* Lit Bottom Right Torch in Temple of Droplets Dark Lantern Maze */ - LV4_2c_00, /* Defeated Twin Madderpillars in Temple of Droplets Twin Madderpillars */ - LV4_2c_02, /* Burnt Entrance Web in Temple of Droplets Twin Madderpillars */ - LV4_2c_T0, - LV4_2d_00, - LV4_2d_01, - LV4_2d_02, - LV4_2e_RAY, /* Turned Lever in Temple of Droplets Blue Chuchu Key Lever */ - LV4_2f_00, /* Defeated Mulldozers in Temple of Droplets Mulldozer Key Room */ - LV4_2f_01, /* Small Key Falls in Temple of Droplets Mulldozer Key Room */ - LV4_2f_KEY, /* Obtained Small Key in Temple of Droplets Mulldozer Key Room */ - LV4_30_00, /* Red Portal Activated in Temple of Droplets To Twin Madderpillars */ - LV4_30_BKABE, /* Blew up wall to Twin Madderpillars in Temple of Droplets To Twin Madderpillars */ - LV4_31_00, /* Hit Button in Temple of Droplets Lilypad B2 West */ - LV4_31_01, /* Lilypad Fallen to B2 in Temple of Droplets West Waterfall Southeast */ - LV4_32_00, /* Melted Left Ice Block in Temple of Droplets Compass Room */ - LV4_32_01, /* Melted Right Ice Block in Temple of Droplets Compass Room */ - LV4_32_T0, /* 100 Rupee Chest Open in Temple of Droplets Compass Room */ - LV4_32_T1, /* Compass Chest Open in Temple of Droplets Compass Room */ - LV4_33_01, /* Defeated Scissors Beetles in Temple of Droplets, 4 Lantern Scissors Beetles */ - LV4_34_00, /* Hit Button in Temple of Droplets Lilypad B2 Middle Room */ - LV4_34_01, /* Obtained Small Key in Temple of Droplets Lilypad B2 Middle Room */ - LV4_35_00, /* Defeated Madderpillar in Temple of Droplets Lilypad B2 East Madderpillar */ - LV4_35_01, /* Door Open in Temple of Droplets Lilypad B2 East Madderpillar */ - LV4_22_01, - LV4_2d_T0, /* Red 3 Prong Kinstone Chest Open (Frozen) in Temple of Droplets After Twin Madderpillars */ - LV4_03_CAP_1, /* Ezlo talks about slippery floor in Temple of Droplets Entrance */ - LV4_08_CAP_0, /* Ezlo talks about frozen Element in Temple of Droplets Main Room */ - LV4_08_CAP_1, /* Ezlo talks after pushing East Lever in Temple of Droplets Main Room */ - LV4_36_WALK, /* Map Screen, Visited Room in Temple of Droplets Flamebar Block Puzzle */ - LV4_36_T0, - LV4_21_CAP_1, /* Ezlo talks about frozen key in Temple of Droplets Key 1 Room */ - LV4_0d_03, /* Grabbed 1st Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_0d_04, /* Grabbed 2nd Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_0d_05, /* Grabbed 3rd Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_0d_06, /* Grabbed 4th Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_0d_07, /* Grabbed 5th Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_25_00, /* Grabbed 5th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_25_01, /* Grabbed 4th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_25_02, /* Grabbed 3rd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_25_03, /* Grabbed 2nd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_25_04, /* Grabbed 1st Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_31_02, /* Picked up upper left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_03, /* Picked up upper middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_04, /* Picked up upper right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_05, /* Picked up lower left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_06, /* Picked up lower middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_07, /* Picked up lower right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_06_01, /* Picked up upper left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_02, /* Picked up upper middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_03, /* Picked up upper right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_04, /* Picked up lower left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_05, /* Picked up lower middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_06, /* Picked up lower right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_08_OCT, /* Big Octo Sucked Element & Left Room in Temple of Droplets Main Room */ - LV4_05_02, /* Doors Open in Temple of Droplets Scissors Beetle Miniboss */ - LV4_28_02, /* Blocking Pillars Down in Temple of Droplets Lilypad Ice Blocks */ - LV4_2c_01, /* Door Open in Temple of Droplets Twin Madderpillars */ - LV4_33_02, /* Doors Open in Temple of Droplets, 4 Lantern Scissors Beetles */ - LV4_31_08, /* Gate Opened in Temple of Droplets Lilypad B2 West */ - LV4_34_02, /* Gate Opened in Temple of Droplets Lilypad B2 Middle Room */ - LV4_20_RAY_SW, /* Thawing zone active in Temple of Droplets Boss Key Room */ - LV4_21_RAY_SW, /* Thawing zone active in Temple of Droplets Key 1 Room */ + LV4_11_T0, /* Obtained Key in Temple of Droplets Blue Chuchu Key Lever */ + LV4_20_00, + LV4_20_RAY, /* Turned Lever in Temple of Droplets Boss Key Room */ + LV4_20_BOSSKEY, /* Boss Key Ice Block Gone in Temple of Droplets Boss Key Room */ + LV4_21_00, /* Ezlo trigger active in Temple of Droplets Key 1 Room */ + LV4_21_RAY, /* Turned Lever in Temple of Droplets Key 1 Room */ + LV4_21_KEY, /* Obtained Key in Temple of Droplets Key 1 Room */ + LV4_21_CAP_0, /* Ezlo talks about sunlight in Temple of Droplets Key 1 Room */ + LV4_22_00, /* Door Open in Temple of Droplets Block Clone Button Puzzle */ + LV4_23_00, /* Door Open in Temple of Droplets Flamebar Block Puzzle */ + LV4_24_00, /* Melted Ice Block in Temple of Droplets Block Clone Ice Bridge */ + LV4_27_00, /* 9 Lanterns Lit in Temple of Droplets 9 Lantern Room */ + LV4_28_00, /* Hit Button in Temple of Droplets Lilypad Ice Blocks */ + LV4_28_01, /* Lilypad Ice Blocks Gate Stays Open in Temple of Droplets The 1 Frame Roll */ + LV4_28_T0, /* 100 Shell Chest Open (Frozen) in Temple of Droplets Lilypad Ice Blocks */ + LV4_28_T1, /* 50 Rupee Chest Open in Temple of Droplets Lilypad Ice Blocks */ + LV4_29_CAP_0, /* Ezlo talks about darkness in Temple of Droplets The 1 Frame Roll */ + LV4_2b_T0, /* Red W Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Right Chest */ + LV4_2b_T1, /* Red (> Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Left Chest */ + LV4_2b_T2, /* Red 3 Prong Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Bottom Chest */ + LV4_2b_BKABE, /* Blew up wall to Mulldozer Key Room in Temple of Droplets Dark Lantern Maze */ + LV4_2b_00, /* Lit Top Left Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_01, /* Lit Top Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_02, /* Door Open in Temple of Droplets Dark Lantern Maze */ + LV4_2b_03, /* Lit Middle Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_04, /* Lit Bottom Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2c_00, /* Defeated Twin Madderpillars in Temple of Droplets Twin Madderpillars */ + LV4_2c_02, /* Burnt Entrance Web in Temple of Droplets Twin Madderpillars */ + LV4_2c_T0, + LV4_2d_00, + LV4_2d_01, + LV4_2d_02, + LV4_2e_RAY, /* Turned Lever in Temple of Droplets Blue Chuchu Key Lever */ + LV4_2f_00, /* Defeated Mulldozers in Temple of Droplets Mulldozer Key Room */ + LV4_2f_01, /* Small Key Falls in Temple of Droplets Mulldozer Key Room */ + LV4_2f_KEY, /* Obtained Small Key in Temple of Droplets Mulldozer Key Room */ + LV4_30_00, /* Red Portal Activated in Temple of Droplets To Twin Madderpillars */ + LV4_30_BKABE, /* Blew up wall to Twin Madderpillars in Temple of Droplets To Twin Madderpillars */ + LV4_31_00, /* Hit Button in Temple of Droplets Lilypad B2 West */ + LV4_31_01, /* Lilypad Fallen to B2 in Temple of Droplets West Waterfall Southeast */ + LV4_32_00, /* Melted Left Ice Block in Temple of Droplets Compass Room */ + LV4_32_01, /* Melted Right Ice Block in Temple of Droplets Compass Room */ + LV4_32_T0, /* 100 Rupee Chest Open in Temple of Droplets Compass Room */ + LV4_32_T1, /* Compass Chest Open in Temple of Droplets Compass Room */ + LV4_33_01, /* Defeated Scissors Beetles in Temple of Droplets, 4 Lantern Scissors Beetles */ + LV4_34_00, /* Hit Button in Temple of Droplets Lilypad B2 Middle Room */ + LV4_34_01, /* Obtained Small Key in Temple of Droplets Lilypad B2 Middle Room */ + LV4_35_00, /* Defeated Madderpillar in Temple of Droplets Lilypad B2 East Madderpillar */ + LV4_35_01, /* Door Open in Temple of Droplets Lilypad B2 East Madderpillar */ + LV4_22_01, + LV4_2d_T0, /* Red 3 Prong Kinstone Chest Open (Frozen) in Temple of Droplets After Twin Madderpillars */ + LV4_03_CAP_1, /* Ezlo talks about slippery floor in Temple of Droplets Entrance */ + LV4_08_CAP_0, /* Ezlo talks about frozen Element in Temple of Droplets Main Room */ + LV4_08_CAP_1, /* Ezlo talks after pushing East Lever in Temple of Droplets Main Room */ + LV4_36_WALK, /* Visited Room in Temple of Droplets Flamebar Block Puzzle */ + LV4_36_T0, + LV4_21_CAP_1, /* Ezlo talks about frozen key in Temple of Droplets Key 1 Room */ + LV4_0d_03, /* Grabbed 1st Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_04, /* Grabbed 2nd Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_05, /* Grabbed 3rd Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_06, /* Grabbed 4th Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_07, /* Grabbed 5th Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_25_00, /* Grabbed 5th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_01, /* Grabbed 4th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_02, /* Grabbed 3rd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_03, /* Grabbed 2nd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_04, /* Grabbed 1st Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_31_02, /* Picked up upper left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_03, /* Picked up upper middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_04, /* Picked up upper right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_05, /* Picked up lower left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_06, /* Picked up lower middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_07, /* Picked up lower right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_06_01, /* Picked up upper left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_02, /* Picked up upper middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_03, /* Picked up upper right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_04, /* Picked up lower left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_05, /* Picked up lower middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_06, /* Picked up lower right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_08_OCT, /* Big Octo Sucked Element & Left Room in Temple of Droplets Main Room */ + LV4_05_02, /* Doors Open in Temple of Droplets Scissors Beetle Miniboss */ + LV4_28_02, /* Blocking Pillars Down in Temple of Droplets Lilypad Ice Blocks */ + LV4_2c_01, /* Door Open in Temple of Droplets Twin Madderpillars */ + LV4_33_02, /* Doors Open in Temple of Droplets, 4 Lantern Scissors Beetles */ + LV4_31_08, /* Gate Opened in Temple of Droplets Lilypad B2 West */ + LV4_34_02, /* Gate Opened in Temple of Droplets Lilypad B2 Middle Room */ + LV4_20_RAY_SW, /* Thawing zone active in Temple of Droplets Boss Key Room */ + LV4_21_RAY_SW, /* Thawing zone active in Temple of Droplets Key 1 Room */ END_8, } LocalFlags8; typedef enum { BEGIN_9, - LV5_00_WALK, /* Map Screen, Visited Room in Palace of Winds 46 (Vortex to Gyorg) */ - LV5_01_WALK, /* Map Screen, Visited Room in Palace of Winds 24 (5F Boss Key Chest) */ - LV5_02_WALK, /* Map Screen, Visited Room in Palace of Winds 19 (5F Before Boss Door Hall) */ - LV5_03_WALK, /* Map Screen, Visited Room in Palace of Winds 44 (5F Real Boss Door) */ - LV5_04_WALK, /* Map Screen, Visited Room in Palace of Winds 5F East Kinstone Chest from Boss */ - LV5_05_WALK, /* Map Screen, Visited Room in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ - LV5_06_WALK, /* Map Screen, Visited Room in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ - LV5_07_WALK, /* Map Screen, Visited Room in Palace of Winds 21 (5F Key Chest & Blocks) */ - LV5_08_WALK, /* Map Screen, Visited Room in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_09_WALK, /* Map Screen, Visited Room in Palace of Winds 43 (5F Bombarossa Switch Maze) */ - LV5_0A_WALK, /* Map Screen, Visited Room in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ - LV5_0B_WALK, /* Map Screen, Visited Room in Palace of Winds 42 (5F North Corner) */ - LV5_0C_WALK, /* Map Screen, Visited Room in Palace of Winds 26 (1F Darknut Miniboss) */ - LV5_0D_WALK, /* Map Screen, Visited Room in Palace of Winds 40 (5F Gibdo Corner) */ - LV5_0E_WALK, /* Map Screen, Visited Room in Palace of Winds 41 (5F Outside Wall) */ - LV5_0F_WALK, /* Map Screen, Visited Room in Palace of Winds 18 (4F Cloud Jumps to 5F) */ - LV5_10_WALK, /* Map Screen, Visited Room in Palace of Winds 45 (4F Block Maze to Boss) */ - LV5_11_WALK, /* Map Screen, Visited Room in Palace of Winds 17 (4F Lakitu Platforms) */ - LV5_12_WALK, /* Map Screen, Visited Room in Palace of Winds 4F Bridge to Heart Piece */ - LV5_13_WALK, /* Map Screen, Visited Room in Palace of Winds 16 (4F Bridge & Fan) */ - LV5_14_WALK, /* Map Screen, Visited Room in Palace of Winds 15 (4F Moblin Corner) */ - LV5_15_WALK, /* Map Screen, Visited Room in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_16_WALK, /* Map Screen, Visited Room in Palace of Winds 8 (3F Northwest) */ - LV5_17_WALK, /* Map Screen, Visited Room in Palace of Winds 14 (3F Corner after Key) */ - LV5_18_WALK, /* Map Screen, Visited Room in Palace of Winds 9 (3F Southwest) */ - LV5_19_WALK, /* Map Screen, Visited Room in Palace of Winds 10 (3F Platform & Cloud to 4F) */ - LV5_1A_WALK, /* Map Screen, Visited Room in Palace of Winds 11 (3F Spike Bar & Pots) */ - LV5_1B_WALK, /* Map Screen, Visited Room in Palace of Winds 37 (3F Floormaster Lever) */ - LV5_1C_WALK, /* Map Screen, Visited Room in Palace of Winds 36 (3F Map Chest Fire Wizzrobes) */ - LV5_1D_WALK, /* Map Screen, Visited Room in Palace of Winds 13 (3F Key Switch Minish Portal) */ - LV5_1E_WALK, /* Map Screen, Visited Room in Palace of Winds 38 (3F Stairs to 4F) */ - LV5_1F_WALK, /* Map Screen, Visited Room in Palace of Winds 3F Hole to Kinstone Wizzrobe Fight */ - LV5_20_WALK, /* Map Screen, Visited Room in Palace of Winds 12 (3F Key Switch) */ - LV5_21_WALK, /* Map Screen, Visited Room in Palace of Winds 6 (2F West) */ - LV5_22_WALK, /* Map Screen, Visited Room in Palace of Winds 7 (2F East) */ - LV5_23_WALK, /* Map Screen, Visited Room in Palace of Winds 32 (2F Peahat Clone Switches) */ - LV5_24_WALK, /* Map Screen, Visited Room in Palace of Winds 34 (2F Bombarossa Whirlwinds) */ - LV5_25_WALK, /* Map Screen, Visited Room in Palace of Winds 30 (2F Stalfos Corner) */ - LV5_26_WALK, /* Map Screen, Visited Room in Palace of Winds 31 (2F Stalfos Firebars) */ - LV5_27_WALK, /* Map Screen, Visited Room in Palace of Winds (2F Shortcut Door Switches) */ - LV5_28_WALK, /* Map Screen, Visited Room in Palace of Winds 29 (2F Stairs) */ - LV5_29_WALK, /* Map Screen, Visited Room in Palace of Winds, Kinstone Wizzrobe Fight */ - LV5_2A_WALK, /* Map Screen, Visited Room in Palace of Winds 35 (2F Gibdo Corner) */ - LV5_2B_WALK, /* Map Screen, Visited Room in Palace of Winds 33 (2F Spikebar Key Chest) */ - LV5_2C_WALK, /* Map Screen, Visited Room in Palace of Winds 5 (Roc's Cape) */ - LV5_2D_WALK, /* Map Screen, Visited Room in Palace of Winds 4 (Firebar Bob-omb Grate) */ - LV5_2E_WALK, /* Map Screen, Visited Room in Palace of Winds 3 (Platform Ride Bombarossas) */ - LV5_2F_WALK, /* Map Screen, Visited Room in Palace of Winds 27 (1F Bridge after Darknut) */ - LV5_30_WALK, /* Map Screen, Visited Room in Palace of Winds 2 (Bridge Switches & Clone Block) */ - LV5_31_WALK, /* Map Screen, Visited Room in Palace of Winds Entrance */ - LV5_32_WALK, /* Map Screen, Visited Room in Palace of Winds 28 (1F Dark Room) */ - LV5_01_T0, /* Boss Key Chest Open in Palace of Winds 24 (5F Boss Key Chest) */ - LV5_03_T0, /* Small Key Chest Open in Palace of Winds 44, West of Boss Door */ - LV5_03_BOSSDOOR, /* Boss Door Open in Palace of Winds 44, Boss Door */ - LV5_04_T0, /* Red W Kinstone Chest Open in Palace of Winds, East Kinstone Chest from Boss */ - LV5_05_00, /* Hit Fan Floor Button in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ - LV5_05_01, - LV5_05_02, /* Defeated Moblins & Wizzrobes in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ - LV5_06_00, /* Door Open in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ - LV5_07_00, /* Door Open in Palace of Winds 21 (5F Key Chest & Blocks) */ - LV5_07_01, /* Hit Fan Floor Button in Palace of Winds 21 (5F Key Chest & Blocks) */ - LV5_07_T0, /* Small Key Chest Open in Palace of Winds 21 (5F Key Chest & Blocks) */ - LV5_08_00, /* Door Open in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_08_01, /* Defeated Ball & Chain Soldiers in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_08_KEY, /* Obtained Key in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_08_BOSSDOOR, /* Boss Door Open in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_0b_B0, /* Top Block Destroyed in Palace of Winds 42 (5F North Corner) */ - LV5_0b_B1, /* Bottom Block Destroyed in Palace of Winds 42 (5F North Corner) */ - LV5_0d_00, /* Blew up wall in Palace of Winds 40 (5F Gibdo Corner) */ - LV5_0e_00, /* Blew up wall in Palace of Winds 41 (5F Outside Wall) */ - LV5_0f_T0, /* Blue L Kinstone Chest Open in Palace of Winds 18 (4F Cloud Jumps to 5F) */ - LV5_0f_T1, - LV5_10_T0, /* Blue S Kinstone Chest Open in Palace of Winds 45 (4F Block Maze to Boss) */ - LV5_15_00, /* North Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_01, /* East Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_02, /* Switch Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_03, /* Lit Left Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_04, /* Lit Right Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_T0, /* 200 Rupee Chest Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_B0, /* Top Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_B1, /* Bottom Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_1a_00, /* Hit 3 Switches in Palace of Winds 11 (3F Spike Bar & Pots) */ - LV5_1a_01, /* Door Open in Palace of Winds 11 (3F Spike Bar & Pots) */ - LV5_1b_00, /* Door Open in Palace of Winds 36 (3F Floormaster Lever) */ - LV5_1b_T0, - LV5_1c_00, /* Defeated Fire Wizzrobes in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ - LV5_1c_T0, /* Map Chest Open in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ - LV5_20_00, /* Hit Key Switch in Palace of Winds 12 (3F Key Switch) */ - LV5_20_01, /* Obtained Key in Palace of Winds 12 (3F Key Switch) */ - LV5_21_00, /* Grabbed Top Left Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_01, /* Grabbed Top Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_02, /* Grabbed Bottom Left Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_03, /* Grabbed Bottom Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_04, /* Grabbed Bottom Right Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_05, - LV5_21_06, - LV5_21_07, - LV5_21_08, - LV5_21_09, - LV5_21_0a, - LV5_21_CAP_0, /* Ezlo talks about grates in Palace of Winds 6 (2F West) */ - LV5_22_00, - LV5_22_01, /* Defeated Spinies in Palace of Winds 7 (2F East) */ - LV5_22_CAP_0, /* Ezlo talks about fans in Palace of Winds 7 (2F East) */ - LV5_23_00, /* Hit Switches in Palace of Winds 31 (2F Peahat Clone Switches) */ - LV5_23_01, /* Locked Door Open in Palace of Winds 31 (2F Peahat Clone Switches) */ - LV5_27_00, /* Hit Switches in Palace of Winds (2F Shortcut Door Switches) */ - LV5_29_00, - LV5_29_01, /* Defeated Wizzrobes in Palace of Winds, Kinstone Wizzrobe Fight */ - LV5_29_T0, /* Red (> Kinstone Chest Open in Palace of Winds, Kinstone Wizzrobe Fight */ - LV5_2b_T0, /* Small Key Chest Open in Palace of Winds 32 (2F Spikebar Key Chest) */ - LV5_2c_00, /* Defeated Wizzrobes in Palace of Winds 5 (Roc's Cape) */ - LV5_2c_01, - LV5_2c_02, - LV5_2c_03, - LV5_2c_T0, /* Roc's Cape Chest Open in Palace of Winds 5 (Roc's Cape) */ - LV5_2c_CAP_0, /* Ezlo talks about clouds in Palace of Winds 5 (Roc's Cape) */ - LV5_2d_T0, /* Red 3 Prong Kinstone Chest Open in Palace of Winds 4 (Firebar Bob-omb Grate) */ - LV5_31_CAP_0, /* Ezlo talks about Palace of Winds in Palace of Winds Entrance */ - LV5_32_CAP_0, /* Ezlo talks about dark room in Palace of Winds 28 (1F Dark Room) */ - LV5_32_T0, /* Compass Chest Open in Palace of Winds 28 (1F Dark Room) */ - LV5_32_T1, /* Small Key Chest Open in Palace of Winds 28 (1F Dark Room) */ - LV5_BOSSDIE, /* Vortex to Gyorg Removed + Receive Element in Palace of Winds 46 (Vortex to Gyorg) */ - LV5_MBOSSDIE, - LV5_00_UTSUWA, /* Obtained Heart Container in Palace of Winds 46 (Vortex to Gyorg) */ - LV5_0c_00, /* Defeated Red Darknut in Palace of Winds 26 (1F Darknut Miniboss) */ - LV5_0A_CAP_0, /* Ezlo talks about hole in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ - LV5_0f_HK, /* Obtained Heart Piece in Palace of Winds 18 (4F Cloud Jumps to 5F) */ - LV5_05_03, /* Door Open in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ - LV5_08_02, /* Key Falls in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_0c_01, - LV5_0c_02, /* Blue Portal & Bridge Appeared in Palace of Winds 26 (1F Darknut Miniboss) */ - LV5_22_02, /* Door Open after Spinies in Palace of Winds 7 (2F East) */ - LV5_15_05, /* Red Portal Active in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_20_02, /* Key Falls & Door Open in Palace of Winds 12 (3F Key Switch) */ + LV5_00_WALK, /* Visited Room in Palace of Winds 46 (Vortex to Gyorg) */ + LV5_01_WALK, /* Visited Room in Palace of Winds 24 (5F Boss Key Chest) */ + LV5_02_WALK, /* Visited Room in Palace of Winds 19 (5F Before Boss Door Hall) */ + LV5_03_WALK, /* Visited Room in Palace of Winds 44 (5F Real Boss Door) */ + LV5_04_WALK, /* Visited Room in Palace of Winds 5F East Kinstone Chest from Boss */ + LV5_05_WALK, /* Visited Room in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_06_WALK, /* Visited Room in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ + LV5_07_WALK, /* Visited Room in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_08_WALK, /* Visited Room in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_09_WALK, /* Visited Room in Palace of Winds 43 (5F Bombarossa Switch Maze) */ + LV5_0A_WALK, /* Visited Room in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ + LV5_0B_WALK, /* Visited Room in Palace of Winds 42 (5F North Corner) */ + LV5_0C_WALK, /* Visited Room in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_0D_WALK, /* Visited Room in Palace of Winds 40 (5F Gibdo Corner) */ + LV5_0E_WALK, /* Visited Room in Palace of Winds 41 (5F Outside Wall) */ + LV5_0F_WALK, /* Visited Room in Palace of Winds 18 (4F Cloud Jumps to 5F) */ + LV5_10_WALK, /* Visited Room in Palace of Winds 45 (4F Block Maze to Boss) */ + LV5_11_WALK, /* Visited Room in Palace of Winds 17 (4F Lakitu Platforms) */ + LV5_12_WALK, /* Visited Room in Palace of Winds 4F Bridge to Heart Piece */ + LV5_13_WALK, /* Visited Room in Palace of Winds 16 (4F Bridge & Fan) */ + LV5_14_WALK, /* Visited Room in Palace of Winds 15 (4F Moblin Corner) */ + LV5_15_WALK, /* Visited Room in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_16_WALK, /* Visited Room in Palace of Winds 8 (3F Northwest) */ + LV5_17_WALK, /* Visited Room in Palace of Winds 14 (3F Corner after Key) */ + LV5_18_WALK, /* Visited Room in Palace of Winds 9 (3F Southwest) */ + LV5_19_WALK, /* Visited Room in Palace of Winds 10 (3F Platform & Cloud to 4F) */ + LV5_1A_WALK, /* Visited Room in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1B_WALK, /* Visited Room in Palace of Winds 37 (3F Floormaster Lever) */ + LV5_1C_WALK, /* Visited Room in Palace of Winds 36 (3F Map Chest Fire Wizzrobes) */ + LV5_1D_WALK, /* Visited Room in Palace of Winds 13 (3F Key Switch Minish Portal) */ + LV5_1E_WALK, /* Visited Room in Palace of Winds 38 (3F Stairs to 4F) */ + LV5_1F_WALK, /* Visited Room in Palace of Winds 3F Hole to Kinstone Wizzrobe Fight */ + LV5_20_WALK, /* Visited Room in Palace of Winds 12 (3F Key Switch) */ + LV5_21_WALK, /* Visited Room in Palace of Winds 6 (2F West) */ + LV5_22_WALK, /* Visited Room in Palace of Winds 7 (2F East) */ + LV5_23_WALK, /* Visited Room in Palace of Winds 32 (2F Peahat Clone Switches) */ + LV5_24_WALK, /* Visited Room in Palace of Winds 34 (2F Bombarossa Whirlwinds) */ + LV5_25_WALK, /* Visited Room in Palace of Winds 30 (2F Stalfos Corner) */ + LV5_26_WALK, /* Visited Room in Palace of Winds 31 (2F Stalfos Firebars) */ + LV5_27_WALK, /* Visited Room in Palace of Winds (2F Shortcut Door Switches) */ + LV5_28_WALK, /* Visited Room in Palace of Winds 29 (2F Stairs) */ + LV5_29_WALK, /* Visited Room in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_2A_WALK, /* Visited Room in Palace of Winds 35 (2F Gibdo Corner) */ + LV5_2B_WALK, /* Visited Room in Palace of Winds 33 (2F Spikebar Key Chest) */ + LV5_2C_WALK, /* Visited Room in Palace of Winds 5 (Roc's Cape) */ + LV5_2D_WALK, /* Visited Room in Palace of Winds 4 (Firebar Bob-omb Grate) */ + LV5_2E_WALK, /* Visited Room in Palace of Winds 3 (Platform Ride Bombarossas) */ + LV5_2F_WALK, /* Visited Room in Palace of Winds 27 (1F Bridge after Darknut) */ + LV5_30_WALK, /* Visited Room in Palace of Winds 2 (Bridge Switches & Clone Block) */ + LV5_31_WALK, /* Visited Room in Palace of Winds Entrance */ + LV5_32_WALK, /* Visited Room in Palace of Winds 28 (1F Dark Room) */ + LV5_01_T0, /* Boss Key Chest Open in Palace of Winds 24 (5F Boss Key Chest) */ + LV5_03_T0, /* Small Key Chest Open in Palace of Winds 44, West of Boss Door */ + LV5_03_BOSSDOOR, /* Boss Door Open in Palace of Winds 44, Boss Door */ + LV5_04_T0, /* Red W Kinstone Chest Open in Palace of Winds, East Kinstone Chest from Boss */ + LV5_05_00, /* Hit Fan Floor Button in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_05_01, + LV5_05_02, /* Defeated Moblins & Wizzrobes in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_06_00, /* Door Open in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ + LV5_07_00, /* Door Open in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_07_01, /* Hit Fan Floor Button in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_07_T0, /* Small Key Chest Open in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_08_00, /* Door Open in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_01, /* Defeated Ball & Chain Soldiers in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_KEY, /* Obtained Key in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_BOSSDOOR, /* Boss Door Open in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_0b_B0, /* Top Block Destroyed in Palace of Winds 42 (5F North Corner) */ + LV5_0b_B1, /* Bottom Block Destroyed in Palace of Winds 42 (5F North Corner) */ + LV5_0d_00, /* Blew up wall in Palace of Winds 40 (5F Gibdo Corner) */ + LV5_0e_00, /* Blew up wall in Palace of Winds 41 (5F Outside Wall) */ + LV5_0f_T0, /* Blue L Kinstone Chest Open in Palace of Winds 18 (4F Cloud Jumps to 5F) */ + LV5_0f_T1, + LV5_10_T0, /* Blue S Kinstone Chest Open in Palace of Winds 45 (4F Block Maze to Boss) */ + LV5_15_00, /* North Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_01, /* East Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_02, /* Switch Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_03, /* Lit Left Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_04, /* Lit Right Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_T0, /* 200 Rupee Chest Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_B0, /* Top Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_B1, /* Bottom Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_1a_00, /* Hit 3 Switches in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1a_01, /* Door Open in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1b_00, /* Door Open in Palace of Winds 36 (3F Floormaster Lever) */ + LV5_1b_T0, + LV5_1c_00, /* Defeated Fire Wizzrobes in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ + LV5_1c_T0, /* Map Chest Open in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ + LV5_20_00, /* Hit Key Switch in Palace of Winds 12 (3F Key Switch) */ + LV5_20_01, /* Obtained Key in Palace of Winds 12 (3F Key Switch) */ + LV5_21_00, /* Grabbed Top Left Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_01, /* Grabbed Top Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_02, /* Grabbed Bottom Left Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_03, /* Grabbed Bottom Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_04, /* Grabbed Bottom Right Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_05, + LV5_21_06, + LV5_21_07, + LV5_21_08, + LV5_21_09, + LV5_21_0a, + LV5_21_CAP_0, /* Ezlo talks about grates in Palace of Winds 6 (2F West) */ + LV5_22_00, + LV5_22_01, /* Defeated Spinies in Palace of Winds 7 (2F East) */ + LV5_22_CAP_0, /* Ezlo talks about fans in Palace of Winds 7 (2F East) */ + LV5_23_00, /* Hit Switches in Palace of Winds 31 (2F Peahat Clone Switches) */ + LV5_23_01, /* Locked Door Open in Palace of Winds 31 (2F Peahat Clone Switches) */ + LV5_27_00, /* Hit Switches in Palace of Winds (2F Shortcut Door Switches) */ + LV5_29_00, + LV5_29_01, /* Defeated Wizzrobes in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_29_T0, /* Red (> Kinstone Chest Open in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_2b_T0, /* Small Key Chest Open in Palace of Winds 32 (2F Spikebar Key Chest) */ + LV5_2c_00, /* Defeated Wizzrobes in Palace of Winds 5 (Roc's Cape) */ + LV5_2c_01, + LV5_2c_02, + LV5_2c_03, + LV5_2c_T0, /* Roc's Cape Chest Open in Palace of Winds 5 (Roc's Cape) */ + LV5_2c_CAP_0, /* Ezlo talks about clouds in Palace of Winds 5 (Roc's Cape) */ + LV5_2d_T0, /* Red 3 Prong Kinstone Chest Open in Palace of Winds 4 (Firebar Bob-omb Grate) */ + LV5_31_CAP_0, /* Ezlo talks about Palace of Winds in Palace of Winds Entrance */ + LV5_32_CAP_0, /* Ezlo talks about dark room in Palace of Winds 28 (1F Dark Room) */ + LV5_32_T0, /* Compass Chest Open in Palace of Winds 28 (1F Dark Room) */ + LV5_32_T1, /* Small Key Chest Open in Palace of Winds 28 (1F Dark Room) */ + LV5_BOSSDIE, /* Vortex to Gyorg Removed + Receive Element in Palace of Winds 46 (Vortex to Gyorg) */ + LV5_MBOSSDIE, + LV5_00_UTSUWA, /* Obtained Heart Container in Palace of Winds 46 (Vortex to Gyorg) */ + LV5_0c_00, /* Defeated Red Darknut in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_0A_CAP_0, /* Ezlo talks about hole in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ + LV5_0f_HK, /* Obtained Heart Piece in Palace of Winds 18 (4F Cloud Jumps to 5F) */ + LV5_05_03, /* Door Open in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_08_02, /* Key Falls in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_0c_01, + LV5_0c_02, /* Blue Portal & Bridge Appeared in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_22_02, /* Door Open after Spinies in Palace of Winds 7 (2F East) */ + LV5_15_05, /* Red Portal Active in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_20_02, /* Key Falls & Door Open in Palace of Winds 12 (3F Key Switch) */ END_9, } LocalFlags9; typedef enum { BEGIN_10, - LV6_00_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 10 (1F Entrance) */ - LV6_01_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ - LV6_02_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ - LV6_03_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ - LV6_04_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ - LV6_05_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ - LV6_06_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_07_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 50 (2F Northwest Corner) */ - LV6_08_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ - LV6_09_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_0A_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 37 (2F North Darknut) */ - LV6_0B_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 40 (2F Northeast Ghini) */ - LV6_0C_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 39 (2F Northeast Firebar) */ - LV6_0D_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 29 (2F Northeast Corner) */ - LV6_0E_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 35 (2F Center Northwest) */ - LV6_0F_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 36 (2F Center North, Sparks) */ - LV6_10_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 38 (2F Center Northeast) */ - LV6_11_WALK, - LV6_12_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 30/34 (2F Center East/Center West) */ - LV6_13_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 33 (2F Center Southwest) */ - LV6_14_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ - LV6_15_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 42 (2F Center Southeast) */ - LV6_16_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ - LV6_17_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 31 (2F South Entrance) */ - LV6_18_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ - LV6_19_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 48 (2F Southwest Corner) */ - LV6_1A_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 47 (2F Southwest Ghini) */ - LV6_1B_WALK, - LV6_1C_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ - LV6_1D_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 44 (2F Southeast Corner) */ - LV6_1E_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle (1F Northwest Gibdo Corner) */ - LV6_1F_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 24 (1F Throne Room) */ - LV6_20_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 27 (1F Compass Room) */ - LV6_21_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 28 (1F Stairs to 2F) */ - LV6_22_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 23 (1F Entrance to Throne Room) */ - LV6_23_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 14 (1F Center Northwest) */ - LV6_24_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 15 (1F Center North) */ - LV6_25_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 16 (1F Center Northeast) */ - LV6_26_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 13 (1F Center West) */ - LV6_27_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 17 (1F Center East) */ - LV6_28_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 12 (1F Center Southwest) */ - LV6_29_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 11 (1F Center South) */ - LV6_2A_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 18 (1F Center Southeast) */ - LV6_2B_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle (1F Pot Corner) */ - LV6_2C_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle (1F Southeast Gibdo Corner) */ - LV6_2D_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 25 (B1 Dark Hall West) */ - LV6_2E_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 26 (B1 Dark Hall East) */ - LV6_2F_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 22 (B1 North Stairs) */ - LV6_30_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 4 (B1 Center Northwest, Stairs to B2) */ - LV6_31_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 5 (B1 Center North, Minish Portal) */ - LV6_32_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ - LV6_33_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 3 (B1 Center West, Firebars) */ - LV6_34_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 20 (B1 Center East, Cannons) */ - LV6_35_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 2 (B1 Center Southwest) */ - LV6_36_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 19 (B1 Center East) */ - LV6_37_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 9 (B1 South Stairs) */ - LV6_38_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 7 (B2 Prison West) */ - LV6_39_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_3A_WALK, /* Map Screen, Visited Room in Dark Hyrule Castle 6 (B2 Prison Southwest) */ - LV6_3B_WALK, - LV6_00_00, /* Locked Door Open in Dark Hyrule Castle 10 (1F Entrance) */ - LV6_01_T0, /* Small Key Chest Open in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ - LV6_02_T0, /* Small Key Chest Open in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ - LV6_03_T0, /* Small Key Chest Open in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ - LV6_04_T0, /* Small Key Chest Open in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ - LV6_07_00, /* Hit Door Button in Dark Hyrule Castle 50 (2F Northwest Corner) */ - LV6_09_T0, /* Boss Key Chest Open in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_09_KB0, /* Opened Top Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_09_KB1, /* Opened Top Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_09_KB2, /* Opened Bottom Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_09_KB3, /* Opened Bottom Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_0a_01, /* Defeated Darknut in Dark Hyrule Castle 37 (2F North Darknut) */ - LV6_0b_00, /* Defeated Ghini in Dark Hyrule Castle 40 (2F Northeast Ghini) */ - LV6_0c_00, /* All Torches Lit in Dark Hyrule Castle 39 (2F Northeast Firebar) */ - LV6_0c_01, /* Door Open in Dark Hyrule Castle 39 (2F Northeast Firebar) */ - LV6_0e_00, /* Door Open & Camera Moves in Dark Hyrule Castle 35 (2F Center Northwest) */ - LV6_10_00, /* Doors Open & Camera Moves in Dark Hyrule Castle 38 (2F Center Northeast) */ - LV6_11_00, /* Hit Left Switch in Dark Hyrule Castle 34 (2F Center West) */ - LV6_11_01, /* Hit Right Switch in Dark Hyrule Castle 34 (2F Center West) */ - LV6_11_B0, /* Blew up left block in Dark Hyrule Castle 34 (2F Center West) */ - LV6_11_B1, /* Blew up middle block in Dark Hyrule Castle 34 (2F Center West) */ - LV6_11_B2, /* Blew up right block in Dark Hyrule Castle 34 (2F Center West) */ - LV6_13_00, /* Door Open & Camera Moves in Dark Hyrule Castle 33 (2F Center Southwest) */ - LV6_14_00, /* Defeated Ball and Chain Soldiers in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ - LV6_14_BOSSDOOR, /* Boss Door Open in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ - LV6_15_00, /* Door Open & Camera Moves in Dark Hyrule Castle 42 (2F Center Southeast) */ - LV6_16_00, /* Door Open in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ - LV6_17_00, /* Hit Switches in Dark Hyrule Castle 31 (2F South Entrance) */ - LV6_17_01, /* Door Open in Dark Hyrule Castle 31 (2F South Entrance) */ - LV6_18_00, /* Hit Switches in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ - LV6_1a_00, /* Defeated Ghini in Dark Hyrule Castle 47 (2F Southwest Ghini) */ - LV6_1c_CAP_0, /* Ezlo talks about Dark Hyrule Castle in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ - LV6_1d_00, /* Hit Door Button in Dark Hyrule Castle 44 (2F Southeast Corner) */ - LV6_1f_00, /* Defeated Darknut in Dark Hyrule Castle 24 (1F Throne Room) */ - LV6_20_T0, /* Compass Chest Open in Dark Hyrule Castle, Compass Room */ - LV6_24_00, /* Tile Puzzle Complete in Dark Hyrule Castle 15 (1F Center North) */ - LV6_26_00, /* Cannons Destroyed in Dark Hyrule Castle 12 (1F Center West) */ - LV6_26_01, /* Pillars Down in Dark Hyrule Castle 12 (1F Center West) */ - LV6_26_CAP_0, /* Ezlo talks about cannons in Dark Hyrule Castle 12 (1F Center West) */ - LV6_27_00, /* Small Key Chest Appeared in Dark Hyrule Castle 17 (1F Center East) */ - LV6_27_T0, /* Small Key Chest Open in Dark Hyrule Castle 17 (1F Center East) */ - LV6_30_00, /* Blew up wall in Dark Hyrule Castle 4 (B1 Stairs to B2) */ - LV6_32_00, /* Blew up wall in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ - LV6_34_00, /* Cannons Destroyed in Dark Hyrule Castle 20 (B1 Center East) */ - LV6_34_01, /* Pillars Down in Dark Hyrule Castle 20 (B1 Center East) */ - LV6_35_00, /* Locked Door Open in Dark Hyrule Castle 2 (B1 Center Southwest) */ - LV6_37_T0, /* Map Chest Open in Dark Hyrule Castle 9 (B1 South Stairs) */ - LV6_39_00, - LV6_39_01, /* Hit Button in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_39_02, - LV6_1f_CHAIR_L, /* Moved Throne in Dark Hyrule Castle 24 (1F Throne Room) */ - LV6_1f_CHAIR_R, - LV6_1d_KEYGET, /* Obtained Small Key from Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_1b_TAREMAKU, - LV6SOTO_01_KAIJO, /* Soldier moves out of the way in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_SEKIKA_END, - LV6_GUFUU1_FIGURE, /* Entered Vaati 1 boss room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_GUFUU2_FIGURE, /* Auto walk after defeating Vaati? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_GUFUU1_GISHIKI, /* Falling in pit in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_GUFUU1_DEMO, /* Started Vaati 1? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_ZELDA_DISCURSE, /* Transition to castle escape start in Dark Hyrule Castle (Zelda) */ - LV6_00_ESCAPE, /* Ezlo talks about entrance being blocked in Dark Hyrule Castle 10 (1F Entrance) */ - LV6_GUFUU2_DEAD, /* Defeated Vaati 2? in Dark Hyrule Castle Boss (Vaati 2) */ - LV6_KANE_START, /* Ezlo talks about bell in Dark Hyrule Castle Boss (Ball & Chain Soldier) */ - LV6_KANE_1ST, /* Ezlo talks about bell again in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ - LV6_KANE_2ND, /* Ezlo talks about bell yet again in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_SOTO_ENDING, /* Warped back to garden? in Dark Hyrule Castle Boss (Vaati 3) */ - LV6_08_00, /* Hit Eye Switches in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ - LV6_39_03, /* Prison Doors Open in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_SOTO_06_00, /* Hit East Bridge Switch in Dark Hyrule Castle Outside 2F South */ - LV6_SOTO_06_01, /* Hit West Bridge Switch in Dark Hyrule Castle Outside 2F South */ - LV6_0A_CAP_0, - LV6SOTO_01_CAP_0, /* Ezlo talks about frozen people in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_0a_00, /* Doors Open & Blue Portal Activated in Dark Hyrule Castle 37 (2F North Darknut) */ - LV6_0b_01, /* Door Open in Dark Hyrule Castle 40 (2F Northeast Ghini) */ - LV6_0e_01, /* Big Door Open in Dark Hyrule Castle 35 (2F Center Northwest) */ - LV6_10_01, /* Doors Open in Dark Hyrule Castle 38 (2F Center Northeast) */ - LV6_13_01, /* Big Door Open in Dark Hyrule Castle 33 (2F Center Southwest) */ - LV6_14_01, /* Doors Open & Red Portal Activated in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ - LV6_15_01, /* Big Door Open in Dark Hyrule Castle 42 (2F Center Southeast) */ - LV6_1a_01, /* Door Open in Dark Hyrule Castle 47 (2F Southwest Ghini) */ - LV6_1f_01, /* Doors Open in Dark Hyrule Castle 24 (1F Throne Room) */ - LV6_39_04, /* Camera moves to middle in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_17_02, /* Camera moves to door in Dark Hyrule Castle 31 (2F South Entrance) */ - LV6_18_01, /* Door Open in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ - LV6_08_01, /* Door Open in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ - LV6_SOTO_01_00, /* Unfroze Minister Potho in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_SOTO_01_01, /* Unfroze Left Soldier in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_SOTO_01_02, /* Unfroze Bottom Soldier in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_39_KING, /* Unfroze King Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_00_WALK, /* Visited Room in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_01_WALK, /* Visited Room in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ + LV6_02_WALK, /* Visited Room in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ + LV6_03_WALK, /* Visited Room in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ + LV6_04_WALK, /* Visited Room in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ + LV6_05_WALK, /* Visited Room in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ + LV6_06_WALK, /* Visited Room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_07_WALK, /* Visited Room in Dark Hyrule Castle 50 (2F Northwest Corner) */ + LV6_08_WALK, /* Visited Room in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_09_WALK, /* Visited Room in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_0A_WALK, /* Visited Room in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0B_WALK, /* Visited Room in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0C_WALK, /* Visited Room in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0D_WALK, /* Visited Room in Dark Hyrule Castle 29 (2F Northeast Corner) */ + LV6_0E_WALK, /* Visited Room in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_0F_WALK, /* Visited Room in Dark Hyrule Castle 36 (2F Center North, Sparks) */ + LV6_10_WALK, /* Visited Room in Dark Hyrule Castle 38 (2F Center Northeast) */ + LV6_11_WALK, + LV6_12_WALK, /* Visited Room in Dark Hyrule Castle 30/34 (2F Center East/Center West) */ + LV6_13_WALK, /* Visited Room in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_WALK, /* Visited Room in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_WALK, /* Visited Room in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_16_WALK, /* Visited Room in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ + LV6_17_WALK, /* Visited Room in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_WALK, /* Visited Room in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_19_WALK, /* Visited Room in Dark Hyrule Castle 48 (2F Southwest Corner) */ + LV6_1A_WALK, /* Visited Room in Dark Hyrule Castle 47 (2F Southwest Ghini) */ + LV6_1B_WALK, + LV6_1C_WALK, /* Visited Room in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ + LV6_1D_WALK, /* Visited Room in Dark Hyrule Castle 44 (2F Southeast Corner) */ + LV6_1E_WALK, /* Visited Room in Dark Hyrule Castle (1F Northwest Gibdo Corner) */ + LV6_1F_WALK, /* Visited Room in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_20_WALK, /* Visited Room in Dark Hyrule Castle 27 (1F Compass Room) */ + LV6_21_WALK, /* Visited Room in Dark Hyrule Castle 28 (1F Stairs to 2F) */ + LV6_22_WALK, /* Visited Room in Dark Hyrule Castle 23 (1F Entrance to Throne Room) */ + LV6_23_WALK, /* Visited Room in Dark Hyrule Castle 14 (1F Center Northwest) */ + LV6_24_WALK, /* Visited Room in Dark Hyrule Castle 15 (1F Center North) */ + LV6_25_WALK, /* Visited Room in Dark Hyrule Castle 16 (1F Center Northeast) */ + LV6_26_WALK, /* Visited Room in Dark Hyrule Castle 13 (1F Center West) */ + LV6_27_WALK, /* Visited Room in Dark Hyrule Castle 17 (1F Center East) */ + LV6_28_WALK, /* Visited Room in Dark Hyrule Castle 12 (1F Center Southwest) */ + LV6_29_WALK, /* Visited Room in Dark Hyrule Castle 11 (1F Center South) */ + LV6_2A_WALK, /* Visited Room in Dark Hyrule Castle 18 (1F Center Southeast) */ + LV6_2B_WALK, /* Visited Room in Dark Hyrule Castle (1F Pot Corner) */ + LV6_2C_WALK, /* Visited Room in Dark Hyrule Castle (1F Southeast Gibdo Corner) */ + LV6_2D_WALK, /* Visited Room in Dark Hyrule Castle 25 (B1 Dark Hall West) */ + LV6_2E_WALK, /* Visited Room in Dark Hyrule Castle 26 (B1 Dark Hall East) */ + LV6_2F_WALK, /* Visited Room in Dark Hyrule Castle 22 (B1 North Stairs) */ + LV6_30_WALK, /* Visited Room in Dark Hyrule Castle 4 (B1 Center Northwest, Stairs to B2) */ + LV6_31_WALK, /* Visited Room in Dark Hyrule Castle 5 (B1 Center North, Minish Portal) */ + LV6_32_WALK, /* Visited Room in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ + LV6_33_WALK, /* Visited Room in Dark Hyrule Castle 3 (B1 Center West, Firebars) */ + LV6_34_WALK, /* Visited Room in Dark Hyrule Castle 20 (B1 Center East, Cannons) */ + LV6_35_WALK, /* Visited Room in Dark Hyrule Castle 2 (B1 Center Southwest) */ + LV6_36_WALK, /* Visited Room in Dark Hyrule Castle 19 (B1 Center East) */ + LV6_37_WALK, /* Visited Room in Dark Hyrule Castle 9 (B1 South Stairs) */ + LV6_38_WALK, /* Visited Room in Dark Hyrule Castle 7 (B2 Prison West) */ + LV6_39_WALK, /* Visited Room in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_3A_WALK, /* Visited Room in Dark Hyrule Castle 6 (B2 Prison Southwest) */ + LV6_3B_WALK, + LV6_00_00, /* Locked Door Open in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_01_T0, /* Small Key Chest Open in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ + LV6_02_T0, /* Small Key Chest Open in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ + LV6_03_T0, /* Small Key Chest Open in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ + LV6_04_T0, /* Small Key Chest Open in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ + LV6_07_00, /* Hit Door Button in Dark Hyrule Castle 50 (2F Northwest Corner) */ + LV6_09_T0, /* Boss Key Chest Open in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB0, /* Opened Top Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB1, /* Opened Top Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB2, /* Opened Bottom Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB3, /* Opened Bottom Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_0a_01, /* Defeated Darknut in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0b_00, /* Defeated Ghini in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0c_00, /* All Torches Lit in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0c_01, /* Door Open in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0e_00, /* Door Open & Camera Moves in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_10_00, /* Doors Open & Camera Moves in Dark Hyrule Castle 38 (2F Center Northeast) */ + LV6_11_00, /* Hit Left Switch in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_01, /* Hit Right Switch in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B0, /* Blew up left block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B1, /* Blew up middle block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B2, /* Blew up right block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_13_00, /* Door Open & Camera Moves in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_00, /* Defeated Ball and Chain Soldiers in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_14_BOSSDOOR, /* Boss Door Open in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_00, /* Door Open & Camera Moves in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_16_00, /* Door Open in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ + LV6_17_00, /* Hit Switches in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_17_01, /* Door Open in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_00, /* Hit Switches in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_1a_00, /* Defeated Ghini in Dark Hyrule Castle 47 (2F Southwest Ghini) */ + LV6_1c_CAP_0, /* Ezlo talks about Dark Hyrule Castle in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ + LV6_1d_00, /* Hit Door Button in Dark Hyrule Castle 44 (2F Southeast Corner) */ + LV6_1f_00, /* Defeated Darknut in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_20_T0, /* Compass Chest Open in Dark Hyrule Castle, Compass Room */ + LV6_24_00, /* Tile Puzzle Complete in Dark Hyrule Castle 15 (1F Center North) */ + LV6_26_00, /* Cannons Destroyed in Dark Hyrule Castle 12 (1F Center West) */ + LV6_26_01, /* Pillars Down in Dark Hyrule Castle 12 (1F Center West) */ + LV6_26_CAP_0, /* Ezlo talks about cannons in Dark Hyrule Castle 12 (1F Center West) */ + LV6_27_00, /* Small Key Chest Appeared in Dark Hyrule Castle 17 (1F Center East) */ + LV6_27_T0, /* Small Key Chest Open in Dark Hyrule Castle 17 (1F Center East) */ + LV6_30_00, /* Blew up wall in Dark Hyrule Castle 4 (B1 Stairs to B2) */ + LV6_32_00, /* Blew up wall in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ + LV6_34_00, /* Cannons Destroyed in Dark Hyrule Castle 20 (B1 Center East) */ + LV6_34_01, /* Pillars Down in Dark Hyrule Castle 20 (B1 Center East) */ + LV6_35_00, /* Locked Door Open in Dark Hyrule Castle 2 (B1 Center Southwest) */ + LV6_37_T0, /* Map Chest Open in Dark Hyrule Castle 9 (B1 South Stairs) */ + LV6_39_00, + LV6_39_01, /* Hit Button in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_39_02, + LV6_1f_CHAIR_L, /* Moved Throne in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_1f_CHAIR_R, + LV6_1d_KEYGET, /* Obtained Small Key from Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_1b_TAREMAKU, + LV6SOTO_01_KAIJO, /* Soldier moves out of the way in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_SEKIKA_END, + LV6_GUFUU1_FIGURE, /* Entered Vaati 1 boss room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU2_FIGURE, /* Auto walk after defeating Vaati? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU1_GISHIKI, /* Falling in pit in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU1_DEMO, /* Started Vaati 1? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_ZELDA_DISCURSE, /* Transition to castle escape start in Dark Hyrule Castle (Zelda) */ + LV6_00_ESCAPE, /* Ezlo talks about entrance being blocked in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_GUFUU2_DEAD, /* Defeated Vaati 2? in Dark Hyrule Castle Boss (Vaati 2) */ + LV6_KANE_START, /* Ezlo talks about bell in Dark Hyrule Castle Boss (Ball & Chain Soldier) */ + LV6_KANE_1ST, /* Ezlo talks about bell again in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ + LV6_KANE_2ND, /* Ezlo talks about bell yet again in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_SOTO_ENDING, /* Warped back to garden? in Dark Hyrule Castle Boss (Vaati 3) */ + LV6_08_00, /* Hit Eye Switches in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_39_03, /* Prison Doors Open in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_SOTO_06_00, /* Hit East Bridge Switch in Dark Hyrule Castle Outside 2F South */ + LV6_SOTO_06_01, /* Hit West Bridge Switch in Dark Hyrule Castle Outside 2F South */ + LV6_0A_CAP_0, + LV6SOTO_01_CAP_0, /* Ezlo talks about frozen people in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_0a_00, /* Doors Open & Blue Portal Activated in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0b_01, /* Door Open in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0e_01, /* Big Door Open in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_10_01, /* Doors Open in Dark Hyrule Castle 38 (2F Center Northeast) */ + LV6_13_01, /* Big Door Open in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_01, /* Doors Open & Red Portal Activated in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_01, /* Big Door Open in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_1a_01, /* Door Open in Dark Hyrule Castle 47 (2F Southwest Ghini) */ + LV6_1f_01, /* Doors Open in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_39_04, /* Camera moves to middle in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_17_02, /* Camera moves to door in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_01, /* Door Open in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_08_01, /* Door Open in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_SOTO_01_00, /* Unfroze Minister Potho in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_SOTO_01_01, /* Unfroze Left Soldier in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_SOTO_01_02, /* Unfroze Bottom Soldier in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_39_KING, /* Unfroze King Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ END_10, } LocalFlags10; @@ -1762,4 +1762,4 @@ typedef enum { END_12, } LocalFlags12; -#endif // FLAGS_H +#endif // FLAGS_H \ No newline at end of file From 094e984b8f041a791b8abf8ca67f713106e6f153 Mon Sep 17 00:00:00 2001 From: TomRiddle01 Date: Wed, 11 Jan 2023 18:40:10 +0100 Subject: [PATCH 43/86] update --- include/flags.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/flags.h b/include/flags.h index 2a7e5ef6..39861ee1 100644 --- a/include/flags.h +++ b/include/flags.h @@ -1762,4 +1762,4 @@ typedef enum { END_12, } LocalFlags12; -#endif // FLAGS_H \ No newline at end of file +#endif // FLAGS_H From bb20fa084c42104f0b2aa5c15e4ce021f2e00287 Mon Sep 17 00:00:00 2001 From: TomRiddle01 Date: Thu, 12 Jan 2023 20:53:22 +0100 Subject: [PATCH 44/86] fix wrongly replaced lines --- include/flags.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/flags.h b/include/flags.h index 39861ee1..0d5c331a 100644 --- a/include/flags.h +++ b/include/flags.h @@ -396,14 +396,14 @@ typedef enum { KAKERA_TAKARA_X, /* 200 Rupee Chest Open in Crenel base */ KAKERA_TAKARA_Y, /* 200 Shell Chest Open in Wind Ruins Tektite Room */ KAKERA_TAKARA_Z, - MACHI_02_HEISHI /* Showed Spin Attack to Westside Soldier in Hyrule Town */_TALK, /* Spoke to Westside Soldier in Hyrule Town */ + MACHI_02_HEISHI_TALK, /* Spoke to Westside Soldier in Hyrule Town */ MACHI00_00, /* Flipped Minish Pot in Hyrule Town, Top of Library */ MACHI00_02, /* Un-Flipped Minish Pot in Hyrule Town, Top of School */ MACHI00_03, /* Pushed box in the minish cat path in Hyrule Town */ MACHI_00_T00, /* Red > Kinstone Chest Open in Hyrule Town, Happy Hearth Balcony */ MACHI_00_T01, /* Opened Red W Kinstone Chest in Hyrule Town, Top of School */ MACHI_01_DEMO, /* Lolly and Candy Moved in Hyrule Town, Festival */ - MACHI_02_HEISHI, + MACHI_02_HEISHI, /* Showed Spin Attack to Westside Soldier in Hyrule Town */ MACHI_02_DOG, /* Talk to dog as minish */ MACHI_07_BELL, /* Obtained Heart Piece in Bell in Hyrule Town */ SHOP05_OPEN, /* Figurine House Open in Hyrule Town */ @@ -659,8 +659,8 @@ typedef enum { KOBITOYAMA_00_R05, /* Hidden Green [ Kinstone Obtained in Melari's Mine */ KOBITOYAMA_00_R06, /* Hidden Red Rupee Obtained in Melari's Mine */ KOBITOYAMA_00_R07, /* Hidden Red W Kinstone Obtained in Melari's Mine */ - KOBITO_MORI_00_H0 /* Obtained Heart Piece in Minish Village */0, - KOBITO_MORI_00_H0, + KOBITO_MORI_00_H00, + KOBITO_MORI_00_H0, /* Obtained Heart Piece in Minish Village */ CAFE_01_CAP_0, /* Ezlo talks after Pot Minish Cutscene in Hyrule Town */ BILL_00_CAP_0, /* Ezlo talks about Mayor's House in Mayor's House */ BILL_02_CAP_0, /* Ezlo talks about books in Hyrule Town Library 2F, bottom right bookshelf */ @@ -1364,8 +1364,8 @@ typedef enum { LV4_10_T0, /* Lantern Chest Open in Temple of Droplets Big Blue Chuchu */ LV4_10_BOSSDIE, /* Defeated Big Blue Chuchu in Temple of Droplets Big Blue Chuchu */ LV4_11_00, /* Ice Block Melts in Temple of Droplets Blue Chuchu Key */ - LV4_11_RAY /* Lever Turned in Blue Chuchu Key Room in Temple of Droplets West Hole to Boss Key */_SP, /* Thawing Zone Active in Temple of Droplets Blue Chuchu Key */ - LV4_11_RAY, + LV4_11_RAY_SP, /* Thawing Zone Active in Temple of Droplets Blue Chuchu Key */ + LV4_11_RAY, /* Lever Turned in Blue Chuchu Key Room in Temple of Droplets West Hole to Boss Key */ LV4_11_T0, /* Obtained Key in Temple of Droplets Blue Chuchu Key Lever */ LV4_20_00, LV4_20_RAY, /* Turned Lever in Temple of Droplets Boss Key Room */ From 27fc1b4ac8fabd72f0778bb4a8594d7c89e557e8 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sun, 26 Feb 2023 03:41:25 +0100 Subject: [PATCH 45/86] new Makefile big commit, but should be working ok now --- GBA.mk | 163 ++++++++++++++++ Jenkinsfile | 4 +- Makefile | 303 +++--------------------------- Toolchain.mk | 32 ++++ data/animations/npc/sturgeon.s | 2 +- linker.ld | 2 +- tools/src/scaninc/asm_file.cpp | 6 +- tools/src/scaninc/c_file.cpp | 4 +- tools/src/scaninc/source_file.cpp | 4 +- 9 files changed, 229 insertions(+), 291 deletions(-) create mode 100644 GBA.mk create mode 100644 Toolchain.mk diff --git a/GBA.mk b/GBA.mk new file mode 100644 index 00000000..62221d21 --- /dev/null +++ b/GBA.mk @@ -0,0 +1,163 @@ +.PHONY: default +default: + @echo do not use this directly + +include Toolchain.mk + +GAME_VERSION ?= USA +BUILD_DIR = build/$(GAME_VERSION) + +TITLE := GBAZELDA MC +MAKER_CODE := 01 +REVISION := 0 + +ifeq ($(GAME_VERSION), EU) +GAME_CODE := BZMP +BUILD_NAME := tmc_eu +GAME_LANGUAGE := ENGLISH +TRANSLATIONS := translations/English.bin translations/French.bin translations/German.bin translations/Spanish.bin translations/Italian.bin +else ifeq ($(GAME_VERSION), JP) +GAME_CODE := BZMJ +BUILD_NAME := tmc_jp +GAME_LANGUAGE := JAPANESE +TRANSLATIONS := +else ifeq ($(GAME_VERSION), USA) +GAME_CODE := BZME +BUILD_NAME := tmc +GAME_LANGUAGE := ENGLISH +TRANSLATIONS := translations/USA.bin +else ifeq ($(GAME_VERSION), DEMO_USA) +GAME_CODE := BZHE +BUILD_NAME := tmc_demo_usa +GAME_LANGUAGE := ENGLISH +TRANSLATIONS := translations/USA.bin +else ifeq ($(GAME_VERSION), DEMO_JP) +GAME_CODE := BZMJ +BUILD_NAME := tmc_demo_jp +GAME_LANGUAGE := JAPANESE +TRANSLATIONS := +else +$(error unknown version $(GAME_VERSION)) +endif + +ROM = $(BUILD_NAME).gba +ELF = $(BUILD_NAME).elf + +# Clear the default suffixes +.SUFFIXES: +# Don't delete intermediate files +.SECONDARY: +# Delete files that weren't built properly +.DELETE_ON_ERROR: +# Secondary expansion is required for dependency variables in object rules. +.SECONDEXPANSION: + +# ================== +# entrypoint targets +# ================== +CUSTOM ?= +COMPARE ?= $(if $(CUSTOM),0,1) + +.PHONY: build extract_assets build_assets +build: $(if $(CUSTOM), build_assets, $(BUILD_DIR)/extracted_assets_$(GAME_VERSION)) + @$(MAKE) -f GBA.mk $(ROM) +ifeq ($(COMPARE), 1) + @$(SHA1) $(BUILD_NAME).sha1 +endif +extract_assets: $(BUILD_DIR)/converted_assets_$(GAME_VERSION) +# TODO this is slow, especially on builds with minor/no changes +build_assets: $(BUILD_DIR)/converted_assets_$(GAME_VERSION) + $(ASSET_PROCESSOR) build $(GAME_VERSION) $(BUILD_DIR)/assets + +.PHONY: clean +clean: + rm -rf build + rm -f t*.gba + rm -f t*.elf + +# =============== +# build ASM files +# =============== + +ASINCLUDE := -I $(BUILD_DIR)/assets -I $(BUILD_DIR)/enum_include +ASFLAGS := -mcpu=arm7tdmi --defsym $(GAME_VERSION)=1 --defsym REVISION=$(REVISION) --defsym $(GAME_LANGUAGE)=1 $(ASINCLUDE) + +# TODO try solve this without the glob +ENUM_ASM_SRCS := $(wildcard include/*.h) +ENUM_ASM_HEADERS := $(patsubst include/%.h,$(BUILD_DIR)/enum_include/%.inc,$(ENUM_ASM_SRCS)) + +# if this is too broad dependency scanning will clash with C file +$(BUILD_DIR)/asm/%.o: deps = $(shell $(SCANINC) -I . $(ASINCLUDE) $*.s) +$(BUILD_DIR)/data/%.o: deps = $(shell $(SCANINC) -I . $(ASINCLUDE) $*.s) +$(BUILD_DIR)/%.o: %.s $$(deps) $(ENUM_ASM_HEADERS) + @mkdir -p $(dir $@) + $(PREPROC) $(BUILD_NAME) $< -- $(ASINCLUDE) | $(AS) $(ASFLAGS) -o $@ + +$(BUILD_DIR)/enum_include/%.inc: include/%.h + @mkdir -p $(dir $@) + $(ENUM_PROCESSOR) $< $(CC) "-D__attribute__(x)=" "-D$(GAME_VERSION)" "-E" "-nostdinc" "-Itools/agbcc" "-Itools/agbcc/include" "-iquote include" > $@ + +# ============= +# build C files +# ============= + +# agbcc includes are separate because we don't want dependency scanning on them +CINCLUDE := -I include -I $(BUILD_DIR) +CPPFLAGS := -I tools/agbcc -I tools/agbcc/include $(CINCLUDE) -nostdinc -undef -D$(GAME_VERSION) -DREVISION=$(REVISION) -D$(GAME_LANGUAGE) +CFLAGS := -O2 -Wimplicit -Wparentheses -Werror -Wno-multichar -g3 + +interwork := $(BUILD_DIR)/src/interrupts.o \ +$(BUILD_DIR)/src/collision.o \ +$(BUILD_DIR)/src/playerItem.o \ +$(BUILD_DIR)/src/object.o \ +$(BUILD_DIR)/src/manager.o \ +$(BUILD_DIR)/src/npc.o \ +$(BUILD_DIR)/src/gba/m4a.o + +$(interwork): CFLAGS += -mthumb-interwork +$(BUILD_DIR)/src/eeprom.o: CFLAGS += -O1 -mthumb-interwork + +# if this is too broad dependency scanning will clash with ASM file +$(BUILD_DIR)/src/%.o: deps = $(shell $(SCANINC) $(CINCLUDE) $*.c) +$(BUILD_DIR)/%.o : %.c $$(deps) + @mkdir -p $(dir $@) + $(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i + $(CC1) $(CFLAGS) -o $(BUILD_DIR)/$*.s $(BUILD_DIR)/$*.i + @echo "\t.text\n\t.align\t2, 0 @ Don't pad with nop\n" >> $(BUILD_DIR)/$*.s + $(AS) $(ASFLAGS) -o $@ $(BUILD_DIR)/$*.s + +# ============== +# build binaries +# ============== + +LDFLAGS = -Map ../../$(BUILD_DIR)/$(BUILD_NAME).map +LIB := -L ../../tools/agbcc/lib -lc + +$(ROM): $(ELF) + $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ + +$(ELF): objs = $(shell grep -o -E "(\w|/)+\.o" linker.ld) +$(ELF): $(BUILD_DIR)/linker.ld $$(addprefix $(BUILD_DIR)/, $$(objs)) + cd $(BUILD_DIR) && $(LD) $(LDFLAGS) -n -T linker.ld -o ../../$@ $(LIB) + $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent + +$(BUILD_DIR)/linker.ld: linker.ld + @mkdir -p $(BUILD_DIR) + $(CPP) $(CPPFLAGS) -x c linker.ld | grep -v '^#' >$(BUILD_DIR)/linker.ld + +# ====== +# assets +# ====== + +$(BUILD_DIR)/extracted_assets_%: assets/assets.json assets/gfx.json assets/map.json assets/samples.json assets/sounds.json $(TRANSLATIONS) + @mkdir -p $(dir $@) + $(ASSET_PROCESSOR) extract $(GAME_VERSION) $(BUILD_DIR)/assets + touch $@ + +$(BUILD_DIR)/converted_assets_%: $(BUILD_DIR)/extracted_assets_% + @mkdir -p $(dir $@) + $(ASSET_PROCESSOR) convert $(GAME_VERSION) $(BUILD_DIR)/assets + touch $@ + +translations/%.bin: translations/%.json + tools/bin/tmc_strings -p --source $< --dest $@ diff --git a/Jenkinsfile b/Jenkinsfile index 603ff83a..e54bf2fb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,12 +12,12 @@ pipeline { sh 'cp /usr/local/etc/roms/tmc.demo.jp.gba baserom_demo_jp.gba' sh 'cp /usr/local/etc/roms/tmc.jp.gba baserom_jp.gba' sh 'cp /usr/local/etc/roms/tmc.eu.gba baserom_eu.gba' - sh 'make -j setup' + sh 'make setup' } } stage('Build') { steps { - sh 'make usa demo_usa jp demo_jp eu -j' + sh 'make all -j' } } stage('Report Progress') { diff --git a/Makefile b/Makefile index cdf51352..afa20588 100644 --- a/Makefile +++ b/Makefile @@ -1,294 +1,37 @@ -include $(DEVKITARM)/base_tools - -COMPARE ?= 0 - -CPP := $(CC) -E -LD := $(DEVKITARM)/bin/arm-none-eabi-ld - -GAME_VERSION ?= USA -REVISION := 0 -GAME_LANGUAGE := ENGLISH - -TITLE := GBAZELDA MC -MAKER_CODE := 01 - -ifeq ($(GAME_VERSION), USA) -GAME_CODE := BZME -BUILD_NAME := tmc -else -ifeq ($(GAME_VERSION), DEMO_USA) -GAME_CODE := BZHE -BUILD_NAME := tmc_demo_usa -else -ifeq ($(GAME_VERSION), JP) -GAME_CODE := BZMJ -BUILD_NAME := tmc_jp -GAME_LANGUAGE := JAPANESE -else -ifeq ($(GAME_VERSION), DEMO_JP) -GAME_CODE := BZMJ -BUILD_NAME := tmc_demo_jp -GAME_LANGUAGE := JAPANESE -else -ifeq ($(GAME_VERSION), EU) -GAME_CODE := BZMP -BUILD_NAME := tmc_eu -else -$(error unknown version $(GAME_VERSION)) -endif -endif -endif -endif -endif - -SHELL := /bin/bash -o pipefail - - -ROM := $(BUILD_NAME).gba -OBJ_DIR := build/$(BUILD_NAME) - -ELF = $(ROM:.gba=.elf) -MAP = $(ROM:.gba=.map) - -C_SUBDIR = src -DATA_C_SUBDIR = src/data -ASM_SUBDIR = asm -DATA_ASM_SUBDIR = data -SONG_SUBDIR = sound/songs -MID_SUBDIR = sound/songs/midi -ASSET_SUBDIR = assets -ENUM_INCLUDE_SUBDIR = enum_include - -C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR) -ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) -ASM_ENUM_INCLUDE_DIR = $(ASM_BUILDDIR)/$(ENUM_INCLUDE_SUBDIR) -DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) -SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR) -MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR) -ASSET_BUILDDIR = $(OBJ_DIR)/$(ASSET_SUBDIR) -PREPROC_INC_PATHS = $(ASSET_BUILDDIR) $(ASM_ENUM_INCLUDE_DIR) - -ASFLAGS := -mcpu=arm7tdmi --defsym $(GAME_VERSION)=1 --defsym REVISION=$(REVISION) --defsym $(GAME_LANGUAGE)=1 -I $(ASSET_SUBDIR) -I $(ASSET_BUILDDIR) -I $(ASM_ENUM_INCLUDE_DIR) - -CC1 := tools/agbcc/bin/agbcc -override CFLAGS += -O2 -Wimplicit -Wparentheses -Werror -Wno-multichar -g3 -# -fhex-asm - -# ifeq ($(DINFO),1) -# override CFLAGS += -g -# endif - -CPPFLAGS := -I tools/agbcc -I tools/agbcc/include -iquote include -nostdinc -undef -D$(GAME_VERSION) -DREVISION=$(REVISION) -D$(GAME_LANGUAGE) -I $(OBJ_DIR) - -LDFLAGS = -Map ../../$(MAP) - -LIB := -L ../../tools/agbcc/lib -lc - -SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c -GFX := tools/bin/gbagfx -AIF := tools/bin/aif2pcm -MID := tools/bin/mid2agb -SCANINC := tools/bin/scaninc -# TODO: use charmap? -PREPROC := tools/bin/preproc -FIX := tools/bin/gbafix -ASSET_PROCESSOR := tools/bin/asset_processor -ENUM_PROCESSOR := tools/extract_include_enum.py - -ASSET_CONFIGS = assets/assets.json assets/gfx.json assets/map.json assets/samples.json assets/sounds.json -TRANSLATIONS = translations/USA.bin translations/English.bin translations/French.bin translations/German.bin translations/Spanish.bin translations/Italian.bin - -# Clear the default suffixes -.SUFFIXES: -# Don't delete intermediate files -.SECONDARY: -# Delete files that weren't built properly -.DELETE_ON_ERROR: -# Secondary expansion is required for dependency variables in object rules. -.SECONDEXPANSION: - - -$(shell mkdir -p $(C_BUILDDIR) $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR) $(SONG_BUILDDIR) $(MID_BUILDDIR)) - -infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) - -# Build tools when building the rom -# Disable dependency scanning for clean/tidy/tools -ifeq (,$(filter-out all compare target,$(MAKECMDGOALS))) -$(call infoshell, $(MAKE) tools) -else -NODEP := 1 -endif - -interwork := $(C_BUILDDIR)/interrupts.o \ -$(C_BUILDDIR)/collision.o \ -$(C_BUILDDIR)/playerItem.o \ -$(C_BUILDDIR)/object.o \ -$(C_BUILDDIR)/manager.o \ -$(C_BUILDDIR)/npc.o - -$(interwork): CFLAGS += -mthumb-interwork -$(C_BUILDDIR)/gba/m4a.o: CFLAGS = -O2 -mthumb-interwork -Wimplicit -Wparentheses -Werror -Wno-multichar -$(C_BUILDDIR)/eeprom.o: CFLAGS = -O1 -mthumb-interwork -Wimplicit -Wparentheses -Werror -Wno-multichar - -C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c) -C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) - -ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s $(ASM_SUBDIR)/*/*.s) -ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) $(patsubst $(ASM_SUBDIR)/*/%.s,$(ASM_BUILDDIR)/**/%.o,$(ASM_SRCS)) - -DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s $(DATA_ASM_SUBDIR)/**/*.s $(DATA_ASM_SUBDIR)/**/**/*.s) -DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) - -SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s) -SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS)) - -MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid) -MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS)) - -ENUM_ASM_SRCS := $(wildcard include/*.h) -ENUM_ASM_HEADERS := $(patsubst include/%.h,$(ASM_ENUM_INCLUDE_DIR)/%.inc,$(ENUM_ASM_SRCS)) - -OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS) -OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) - -SUBDIRS := $(sort $(dir $(OBJS) $(ENUM_ASM_HEADERS))) - -$(shell mkdir -p $(SUBDIRS)) - -.PHONY: all setup clean-tools mostlyclean clean tidy tools extractassets buildassets custom +.PHONY: default all +default: build +all: eu jp usa demo_jp demo_usa MAKEFLAGS += --no-print-directory -AUTO_GEN_TARGETS := +.PHONY: build eu jp usa demo_jp demo_usa custom +build: GAME_VERSION ?=USA +build: tools + @$(MAKE) -f GBA.mk build GAME_VERSION=$(GAME_VERSION) -# TODO do we really need this extra step just so that the assets are always extracted at first? -all: build/extracted_assets_$(GAME_VERSION) - @$(MAKE) target GAME_VERSION=$(GAME_VERSION) +eu: GAME_VERSION=EU +jp: GAME_VERSION=JP +usa: GAME_VERSION=USA +demo_jp: GAME_VERSION=DEMO_JP +demo_usa: GAME_VERSION=DEMO_USA +eu jp usa demo_jp demo_usa: + @$(MAKE) GAME_VERSION=$(GAME_VERSION) -target: $(ROM) - @$(SHA1) $(BUILD_NAME).sha1 +custom: tools + @$(MAKE) GAME_VERSION=USA CUSTOM=1 -custom: buildassets - @$(MAKE) target GAME_VERSION=$(GAME_VERSION) +.PHONY: tools +tools: tools/bin -# kept for backwards compat -compare: $(ROM) - @$(SHA1) $(BUILD_NAME).sha1 - -setup: tools - -# all tools are build at once -# FIXME figure out why make builds multiple times when specifying all tools here -tools: $(GFX) - -$(GFX) $(AIF) $(MID) $(SCANINC) $(PREPROC) $(FIX) $(ASSET_PROCESSOR) tools/bin/agb2mid tools/bin/tmc_strings tools/bin/bin2c &: +tools/bin: mkdir -p tools/cmake-build - unset CC CXX AS LD LDFLAGS && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=tools -S tools -B tools/cmake-build + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=tools -S tools -B tools/cmake-build cmake --build tools/cmake-build -j --target install -# Automatically extract binary data -build/extracted_assets_%: $(ASSET_CONFIGS) $(TRANSLATIONS) - $(ASSET_PROCESSOR) extract $(GAME_VERSION) $(ASSET_BUILDDIR) - touch $@ - -# Extract assets to human readable form -extractassets: - $(ASSET_PROCESSOR) convert $(GAME_VERSION) $(ASSET_BUILDDIR) - -# Build the assets from the human readable form -buildassets: - $(ASSET_PROCESSOR) build $(GAME_VERSION) $(ASSET_BUILDDIR) - -mostlyclean: tidy - rm -f sound/direct_sound_samples/*.bin - rm -f $(SONG_OBJS) $(MID_SUBDIR)/*.s - find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + - rm -f $(AUTO_GEN_TARGETS) +.PHONY: clean clean-tools +clean: + @$(MAKE) -f GBA.mk clean clean-tools: rm -rf tools/bin rm -rf tools/cmake-build - -clean: mostlyclean clean-tools - -tidy: - rm -f tmc.gba tmc.elf tmc.map - rm -f tmc_demo_usa.gba tmc_demo_usa.elf tmc_demo_usa.map - rm -f tmc_jp.gba tmc_jp.elf tmc_jp.map - rm -f tmc_demo_jp.gba tmc_demo_jp.elf tmc_demo_jp.map - rm -f tmc_eu.gba tmc_eu.elf tmc_eu.map - rm -r build/* - - -%.s: ; -%.png: ; -%.pal: ; -%.aif: ; - -%.1bpp: %.png ; $(GFX) $< $@ -%.4bpp: %.png ; $(GFX) $< $@ -%.8bpp: %.png ; $(GFX) $< $@ -%.gbapal: %.pal ; $(GFX) $< $@ -%.gbapal: %.png ; $(GFX) $< $@ -%.lz: % ; $(GFX) $< $@ -%.rl: % ; $(GFX) $< $@ - cd $(@D) && ../../$(MID) $(> $(C_BUILDDIR)/$*.s - $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s - -ifeq ($(NODEP),1) -$(ASM_BUILDDIR)/%.o: asm_dep := -else -$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) -I . $(ASM_SUBDIR)/$*.s) -endif - -$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) - $(PREPROC) $(BUILD_NAME) $< -- $(PREPROC_INC_PATHS) | $(AS) $(ASFLAGS) -o $@ - -$(ASM_ENUM_INCLUDE_DIR)/%.inc: include/%.h - $(ENUM_PROCESSOR) $< $(CC) "-D__attribute__(x)=" "-D$(GAME_VERSION)" "-E" "-nostdinc" "-Itools/agbcc" "-Itools/agbcc/include" "-iquote include" > $@ - -ifeq ($(NODEP),1) -$(DATA_ASM_BUILDDIR)/%.o: data_dep := -else -$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I . -I $(ASSET_SUBDIR) -I $(ASSET_BUILDDIR) -I $(ASM_ENUM_INCLUDE_DIR) $(DATA_ASM_SUBDIR)/$*.s) -endif - -$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) $(ENUM_ASM_HEADERS) - $(PREPROC) $(BUILD_NAME) $< charmap.txt -- $(PREPROC_INC_PATHS) | $(CPP) -I include -nostdinc -undef -Wno-unicode - | $(AS) $(ASFLAGS) -o $@ - -$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s - $(AS) $(ASFLAGS) -I sound -o $@ $< - -$(OBJ_DIR)/linker.ld: linker.ld - $(CPP) $(CPPFLAGS) -x c linker.ld | grep -v '^#' >$(OBJ_DIR)/linker.ld - -$(ELF): $(OBJS) $(OBJ_DIR)/linker.ld - cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -n -T linker.ld -o ../../$@ $(LIB) - $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent - -$(ROM): $(ELF) - $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ - -usa: ; @$(MAKE) GAME_VERSION=USA -demo_usa: ; @$(MAKE) GAME_VERSION=DEMO_USA -jp: ; @$(MAKE) GAME_VERSION=JP -demo_jp: ; @$(MAKE) GAME_VERSION=DEMO_JP -eu: ; @$(MAKE) GAME_VERSION=EU diff --git a/Toolchain.mk b/Toolchain.mk new file mode 100644 index 00000000..4adb9f3e --- /dev/null +++ b/Toolchain.mk @@ -0,0 +1,32 @@ +# ======== +# compiler +# ======== + +ifneq (,$(shell which arm-none-eabi-gcc)) +PREFIX := +else ifdef DEVKITARM +PREFIX := $(DEVKITARM)/bin/ +else +$(error arm-none-eabi-gcc not found, please install (devkitPro supported)) +endif + + +CC := $(PREFIX)arm-none-eabi-gcc +CPP := $(CC) -E +CXX := $(PREFIX)arm-none-eabi-g++ +AS := $(PREFIX)arm-none-eabi-as +LD := $(PREFIX)arm-none-eabi-ld +OBJCOPY := $(PREFIX)arm-none-eabi-objcopy + +# ============ +# custom tools +# ============ + +CC1 := tools/agbcc/bin/agbcc +SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c + +SCANINC := tools/bin/scaninc +PREPROC := tools/bin/preproc +ASSET_PROCESSOR := tools/bin/asset_processor +ENUM_PROCESSOR := tools/extract_include_enum.py +FIX := tools/bin/gbafix diff --git a/data/animations/npc/sturgeon.s b/data/animations/npc/sturgeon.s index a4fa9b14..dc4be7fd 100644 --- a/data/animations/npc/sturgeon.s +++ b/data/animations/npc/sturgeon.s @@ -45,4 +45,4 @@ gSpriteAnimations_Sturgeon:: @ 0810FBD0 .4byte gSpriteAnimations_Sturgeon_7 .4byte gSpriteAnimations_Sturgeon_8 .4byte gSpriteAnimations_Sturgeon_9 - .4byte 00000000 \ No newline at end of file + .4byte 00000000 diff --git a/linker.ld b/linker.ld index 50a77389..ab7e510a 100644 --- a/linker.ld +++ b/linker.ld @@ -880,7 +880,7 @@ SECTIONS { src/gba/m4a.o(.text); asm/lib/libagbsyscall.o(.text); src/eeprom.o(.text); - *libc.a:memcpy.o(.text); + libc.a(.text); /* handwritten assembly in arm mode */ asm/src/intr.o(.text); diff --git a/tools/src/scaninc/asm_file.cpp b/tools/src/scaninc/asm_file.cpp index f53777bc..18b1e956 100644 --- a/tools/src/scaninc/asm_file.cpp +++ b/tools/src/scaninc/asm_file.cpp @@ -29,7 +29,7 @@ AsmFile::AsmFile(std::string path) { FILE* fp = std::fopen(path.c_str(), "rb"); if (fp == NULL) - fatal_error("Failed to open \"%s\" for reading.\n", path.c_str()); + fatal_error("Failed to open \"{}\" for reading.\n", path.c_str()); std::fseek(fp, 0, SEEK_END); @@ -40,7 +40,7 @@ AsmFile::AsmFile(std::string path) { std::rewind(fp); if (std::fread(m_buffer, m_size, 1, fp) != 1) - fatal_error("Failed to read \"%s\".\n", path.c_str()); + fatal_error("Failed to read \"{}\".\n", path.c_str()); std::fclose(fp); @@ -159,7 +159,7 @@ void AsmFile::SkipString() { fatal_error(INPUT_ERROR_MESSAGE("unexpected EOF in string\n")); if (c == '\\') { - c = GetChar(); + c = GetChar(); } } } diff --git a/tools/src/scaninc/c_file.cpp b/tools/src/scaninc/c_file.cpp index a8ff921f..fc5ed555 100644 --- a/tools/src/scaninc/c_file.cpp +++ b/tools/src/scaninc/c_file.cpp @@ -26,7 +26,7 @@ CFile::CFile(std::string path) { FILE* fp = std::fopen(path.c_str(), "rb"); if (fp == NULL) - fatal_error("Failed to open \"%s\" for reading.\n", path.c_str()); + fatal_error("Failed to open \"{}\" for reading.\n", path.c_str()); std::fseek(fp, 0, SEEK_END); @@ -38,7 +38,7 @@ CFile::CFile(std::string path) { std::rewind(fp); if (std::fread(m_buffer, m_size, 1, fp) != 1) - fatal_error("Failed to read \"%s\".\n", path.c_str()); + fatal_error("Failed to read \"{}\".\n", path.c_str()); std::fclose(fp); diff --git a/tools/src/scaninc/source_file.cpp b/tools/src/scaninc/source_file.cpp index 0cefc9f1..107396b0 100644 --- a/tools/src/scaninc/source_file.cpp +++ b/tools/src/scaninc/source_file.cpp @@ -25,7 +25,7 @@ SourceFileType GetFileType(std::string& path) { std::size_t pos = path.find_last_of('.'); if (pos == std::string::npos) - fatal_error("no file extension in path \"%s\"\n", path.c_str()); + fatal_error("no file extension in path \"{}\"\n", path.c_str()); std::string extension = path.substr(pos + 1); @@ -38,7 +38,7 @@ SourceFileType GetFileType(std::string& path) { else if (extension == "inc") return SourceFileType::Inc; else - fatal_error("Unrecognized extension \"%s\"\n", extension.c_str()); + fatal_error("Unrecognized extension \"{}\"\n", extension.c_str()); // Unreachable return SourceFileType::Cpp; From 716098ec4eb7bee0d398ccec5226a1b1d5192db2 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sun, 26 Feb 2023 03:56:51 +0100 Subject: [PATCH 46/86] fix Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index e54bf2fb..e4aba2b1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,7 +12,7 @@ pipeline { sh 'cp /usr/local/etc/roms/tmc.demo.jp.gba baserom_demo_jp.gba' sh 'cp /usr/local/etc/roms/tmc.jp.gba baserom_jp.gba' sh 'cp /usr/local/etc/roms/tmc.eu.gba baserom_eu.gba' - sh 'make setup' + sh 'make tools' } } stage('Build') { From 9924c4086ab68988afcb808218ddfb7ccab0ae3f Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sun, 26 Feb 2023 04:02:51 +0100 Subject: [PATCH 47/86] expose extract_assets target in top level Makefile --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index afa20588..e79a3d26 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,10 @@ eu jp usa demo_jp demo_usa: custom: tools @$(MAKE) GAME_VERSION=USA CUSTOM=1 +.PHONY: extract_assets +extract_assets: + @$(MAKE) -f GBA.mk extract_assets + .PHONY: tools tools: tools/bin From 54fc93770ccb9dec9483308a4405155605d8b851 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sun, 26 Feb 2023 14:20:26 +0100 Subject: [PATCH 48/86] make TOOLCHAIN_PATH configurable --- Toolchain.mk | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Toolchain.mk b/Toolchain.mk index 4adb9f3e..76e2a871 100644 --- a/Toolchain.mk +++ b/Toolchain.mk @@ -2,21 +2,27 @@ # compiler # ======== +ifndef TOOLCHAIN_PATH ifneq (,$(shell which arm-none-eabi-gcc)) -PREFIX := +TOOLCHAIN_PATH := else ifdef DEVKITARM -PREFIX := $(DEVKITARM)/bin/ +TOOLCHAIN_PATH := $(DEVKITARM)/bin/ else $(error arm-none-eabi-gcc not found, please install (devkitPro supported)) endif +endif +# ensure trailing slash +ifneq ($(TOOLCHAIN_PATH),) +override TOOLCHAIN_PATH:=$(TOOLCHAIN_PATH)/ +endif -CC := $(PREFIX)arm-none-eabi-gcc +CC := $(TOOLCHAIN_PATH)arm-none-eabi-gcc CPP := $(CC) -E -CXX := $(PREFIX)arm-none-eabi-g++ -AS := $(PREFIX)arm-none-eabi-as -LD := $(PREFIX)arm-none-eabi-ld -OBJCOPY := $(PREFIX)arm-none-eabi-objcopy +CXX := $(TOOLCHAIN_PATH)arm-none-eabi-g++ +AS := $(TOOLCHAIN_PATH)arm-none-eabi-as +LD := $(TOOLCHAIN_PATH)arm-none-eabi-ld +OBJCOPY := $(TOOLCHAIN_PATH)arm-none-eabi-objcopy # ============ # custom tools From f9fcc589d0cc96a9ac6016a706154d7ad9eb87b5 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sun, 26 Feb 2023 14:21:17 +0100 Subject: [PATCH 49/86] update information in INSTALL --- INSTALL.md | 86 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 50 insertions(+), 36 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index a9cedf71..398d07f0 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,14 +1,22 @@ # Install -First, you must put a The Legend of Zelda: The Minish Cap (U) ROM (with SHA1: `b4bd50e4131b027c334547b4524e2dbbd4227130`) in the root directory of the repository and name it `baserom.gba`. +This repository does not include any of the games assets. +To build the game using the decomp you need an original baserom for each version you want to build. +Put them with the appropriate filename into the repository root directory. +The supported versions are: -## Building other variants -To build other variants, you need to place the corresponding baserom before building, e.g. `baserom_jp.gba` for JP. +| Version | Filename | SHA1 | +|-----------------------|------------------------|--------------------------------------------| +| USA (project default) | `baserom.gba` | `b4bd50e4131b027c334547b4524e2dbbd4227130` | +| EU | `baserom_eu.gba` | `cff199b36ff173fb6faf152653d1bccf87c26fb7` | +| JP | `baserom_jp.gba` | `6c5404a1effb17f481f352181d0f1c61a2765c5d` | +| USA (Demo) | `baserom_demo_usa.gba` | `63fcad218f9047b6a9edbb68c98bd0dec322d7a1` | +| JP (Demo) | `baserom_demo_jp.gba` | `9cdb56fa79bba13158b81925c1f3641251326412` | ## Prerequisites -| Linux | macOS | Windows 10 (build 18917+) | Windows 10 (1709+) | Windows 8, 8.1, and 10 (1507, 1511, 1607, 1703) -| ----- | ----- | ------------------------- | ------------------ | --------------------------------------------------------- -| none | [Xcode Command Line Tools package][xcode] | [Windows Subsystem for Linux 2][wsl2] | [Windows Subsystem for Linux][wsl] | [Cygwin][cygwin] +| Linux | macOS | Windows 10 (build 18917+) | Windows 10 (1709+) | Windows 8, 8.1, and 10 (1507, 1511, 1607, 1703) | +|-------|-------------------------------------------|---------------------------------------|------------------------------------|-------------------------------------------------| +| none | [Xcode Command Line Tools package][xcode] | [Windows Subsystem for Linux 2][wsl2] | [Windows Subsystem for Linux][wsl] | [Cygwin][cygwin] | [xcode]: https://developer.apple.com/library/archive/technotes/tn2339/_index.html#//apple_ref/doc/uid/DTS40014588-CH1-DOWNLOADING_COMMAND_LINE_TOOLS_IS_NOT_AVAILABLE_IN_XCODE_FOR_MACOS_10_9__HOW_CAN_I_INSTALL_THEM_ON_MY_MACHINE_ [wsl2]: https://docs.microsoft.com/windows/wsl/wsl2-install @@ -17,53 +25,59 @@ To build other variants, you need to place the corresponding baserom before buil The [prerelease version of the Linux subsystem](https://docs.microsoft.com/windows/wsl/install-legacy) available in the 1607 and 1703 releases of Windows 10 is obsolete so consider uninstalling it. -Make sure that the `build-essential`, `git`, `python3`, `python3-pip`, `cmake` and `libpng-dev` packages are installed. The `build-essential` package includes the `make`, `gcc-core`, and `g++` packages so they do not have to be obtained separately. +Make sure that the `build-essential`, `git`, `python3`, `python3-pip`, `cmake` and `libpng-dev` packages are installed. The `build-essential` package includes the `make`, `gcc-core`, and `g++` packages, so they do not have to be obtained separately. In the case of Cygwin, [include](https://cygwin.com/cygwin-ug-net/setup-net.html#setup-packages) the `make`, `git`, `gcc-core`, `gcc-g++`, and `libpng-devel` packages. -Install the **devkitARM** toolchain of [devkitPro](https://devkitpro.org/wiki/Getting_Started) and add its environment variables. For Windows versions without the Linux subsystem, the devkitPro [graphical installer](https://github.com/devkitPro/installer/releases) includes a preconfigured MSYS2 environment, thus the steps below are not required. +To build the games code, the `arm-none-eabi-gcc` compiler is required. +Both a standalone installation and [devkitPro](https://devkitpro.org/wiki/Getting_Started) are supported. +For devkitPro, install the `gba-dev` package. - sudo (dkp-)pacman -S gba-dev - export DEVKITPRO=/opt/devkitpro - echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc - export DEVKITARM=$DEVKITPRO/devkitARM - echo "export DEVKITARM=$DEVKITARM" >> ~/.bashrc +If `arm-none-eabi-gcc` is not available through `PATH` use `TOOLCHAIN_PATH=` to indicate its location. +This is not required for devkitPro, the `DEVKITARM` environment variable is used for auto-detection. -Install the pycparser python package: - pip3 install pycparser +Install `python3` and the `pycparser` python package: +`pip3 install pycparser` ## Installation To set up the repository: +```shell +git clone https://github.com/zeldaret/tmc +git clone https://github.com/pret/agbcc - git clone https://github.com/zeldaret/tmc - git clone https://github.com/pret/agbcc +cd ./agbcc +sh build.sh +sh install.sh ../tmc - cd ./agbcc - sh build.sh - sh install.sh ../tmc +cd ../tmc +make tools +``` +To build `tmc.gba`: +```shell +make -j$(nproc) +``` +>**Note:** If the build command is not recognized on Linux, including the Linux environment used within Windows, run `nproc` and replace `$(nproc)` with the returned value (e.g.: `make -j4`). Because `nproc` is not available on macOS, the alternative is `sysctl -n hw.ncpu`. - cd ../tmc - make setup +You can configure the game version built by using the `GAME_VERSION` variable (ie. `make GAME_VERSION=EU`). +Convenience targets for all 5 versions exist (`make usa eu jp demo_usa demo_jp`). +`make all` builds all 5 versions. -To build **tmc.gba**: +If you modify the game you need to do a custom build. +Use `CUSTOM=1` for that (any nonempty value will enable it, so `CUSTOM=0` will NOT disable it). +There is a convenience target `make custom` that does a custom USA build. - make -j$(nproc) - -If only `.c` or `.s` files were changed, turn off the dependency scanning temporarily. Changes to any other files will be ignored and the build will either fail or not reflect those changes. - - make -j$(nproc) NODEP=1 - -**Note:** If the build command is not recognized on Linux, including the Linux environment used within Windows, run `nproc` and replace `$(nproc)` with the returned value (e.g.: `make -j4`). Because `nproc` is not available on macOS, the alternative is `sysctl -n hw.ncpu`. +The `COMPARE` variable controls the SHA1 verification check. +It is enabled (`1`) for normal builds and disabled (`0`) for custom builds by default. ### Note for Mac users The BSD make that comes with Mac XCode can be buggy, so obtain GNU make and sed using [Homebrew](https://brew.sh): - - brew install make gnu-sed - +```shell +brew install make gnu-sed +``` When compiling agbcc, substitute the `build.sh` line for - - gsed 's/^make/gmake/g' build.sh | sh - +```shell +gsed 's/^make/gmake/g' build.sh | sh +``` Finally, use `gmake` instead of `make` to compile the ROM(s). From 65d861a5c2fb1bc93f5bf84a991bdd21f23be3dd Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 1 Mar 2023 19:34:10 +0100 Subject: [PATCH 50/86] add dependency to tools to more helper targets fixes asset extraction and parallel multi version builds without manually building tools first --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e79a3d26..394eacea 100644 --- a/Makefile +++ b/Makefile @@ -14,14 +14,14 @@ jp: GAME_VERSION=JP usa: GAME_VERSION=USA demo_jp: GAME_VERSION=DEMO_JP demo_usa: GAME_VERSION=DEMO_USA -eu jp usa demo_jp demo_usa: +eu jp usa demo_jp demo_usa: tools @$(MAKE) GAME_VERSION=$(GAME_VERSION) custom: tools @$(MAKE) GAME_VERSION=USA CUSTOM=1 .PHONY: extract_assets -extract_assets: +extract_assets: tools @$(MAKE) -f GBA.mk extract_assets .PHONY: tools From 12511f572ee797e77c013f670b8a1f1e5fe6c22a Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 22 Apr 2023 08:52:18 +0300 Subject: [PATCH 51/86] Add cmake generated files to gitignore --- tools/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/.gitignore b/tools/.gitignore index 633ffe46..e305c308 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -1,2 +1,4 @@ bin cmake-build* +*.cmake +json*.hpp \ No newline at end of file From 9e8c1921d0f40c8adf3c8cbff2906f889e5ca84b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 22 Apr 2023 08:52:24 +0300 Subject: [PATCH 52/86] Match sub_080622F4 --- src/npc/kid.c | 133 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 119 insertions(+), 14 deletions(-) diff --git a/src/npc/kid.c b/src/npc/kid.c index c9ddc000..c43cdedd 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -76,6 +76,7 @@ void sub_080620F4(Entity*); void sub_08062130(Entity*); void sub_08062194(Entity*); void (*const gUnk_0810BE0C[])(Entity*) = { sub_080620F4, sub_08062130, sub_08062194 }; +extern s32 sub_080041E8(s32 x1, s32 y1, s32 x2, s32 y2); void sub_08062194(Entity*); const Dialog gUnk_0810BE10[] = { @@ -182,17 +183,21 @@ void sub_080622F4(Entity*); void sub_0806265C(Entity*, ScriptExecutionContext*); void sub_0806252C(Entity*); -typedef struct { - u16 x; - u16 y; - u16 z; - u8 framestate; - u8 animationState : 6; - u8 collisionLayer : 2; +typedef union { + struct { + s16 x; + s16 y; + s16 z; + u8 framestate; + u8 animationState : 6; + u8 collisionLayer : 2; + } FIELDS; + u64 DWORD; } KidHeapItem; #define KID_HEAP_COUNT 0x14 typedef KidHeapItem KidHeap[KID_HEAP_COUNT]; +#define KID_HEAP ((KidHeapItem*)this->myHeap) void Kid(Entity* this) { if ((this->flags & ENT_SCRIPTED) != 0) { @@ -307,7 +312,107 @@ void sub_080621AC(Entity* this) { } } -ASM_FUNC("asm/non_matching/kid/sub_080622F4.inc", void sub_080622F4(Entity* this)) +#define KID_HEAP_SHIFT_RIGHT(this) \ + heapPtr = KID_HEAP; \ + heapPtr += (KID_HEAP_COUNT - 2); \ + for (i = 0; i < (KID_HEAP_COUNT - 1); i++) { \ + heapPtr[1] = heapPtr[0]; \ + heapPtr--; \ + } + +void sub_080622F4(Entity* this) { + s32 dx; + s32 dy; + s32 dist; + s32 i; + + u32 animIndex; // used as 2nd param of InitAnimationForceUpdate + u32 animIndexTmp; + + KidHeapItem* heapPtr; + KidHeapItem item; + + // Prepended heap item is initialized from player's current state. + item.FIELDS.x = gPlayerEntity.x.HALF_U.HI; + item.FIELDS.y = gPlayerEntity.y.HALF_U.HI; + item.FIELDS.z = gPlayerEntity.z.HALF_U.HI; + item.FIELDS.framestate = gPlayerState.framestate; + item.FIELDS.animationState = gPlayerEntity.animationState; + item.FIELDS.collisionLayer = gPlayerEntity.collisionLayer; + + heapPtr = this->myHeap; + if (heapPtr->FIELDS.framestate == 0x16 && item.FIELDS.framestate != 0x16) { + dx = this->x.HALF.HI - gPlayerEntity.x.HALF.HI; + dy = this->y.HALF.HI - gPlayerEntity.y.HALF.HI; + + if (dx < 0) + dx = -dx; + if (dy < 0) + dy = -dy; + + if (dx > 120 || dy > 80) { + this->field_0x68.HALF.LO = 0; + return; + } + + sub_0806252C(this); + } + + animIndex = 0; + + if (item.DWORD != heapPtr->DWORD) { + KID_HEAP_SHIFT_RIGHT(this); + heapPtr = KID_HEAP; + heapPtr[0] = item; + + animIndex = 0x4; + if ((s8)this->field_0x68.HALF.HI > 0) { + this->field_0x68.HALF.HI = this->field_0x68.HALF.HI - 1; + } + } else { + heapPtr += KID_HEAP_COUNT - 1; + if (heapPtr->FIELDS.z < 0) { + KID_HEAP_SHIFT_RIGHT(this); + animIndex = 0x4; + } else { + dist = sub_080041E8(gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, (u16)heapPtr->FIELDS.x, + (u16)heapPtr->FIELDS.y); + dist = ((u32)dist) >> 0x4; + if (dist > 0x18) { + + KID_HEAP_SHIFT_RIGHT(this); + animIndex = 0x4; + } + } + } + heapPtr = KID_HEAP; + heapPtr += +KID_HEAP_COUNT - 1; + this->x.HALF.HI = heapPtr->FIELDS.x; + this->y.HALF.HI = heapPtr->FIELDS.y; + this->z.HALF.HI = heapPtr->FIELDS.z; + this->animationState = heapPtr->FIELDS.animationState; + this->collisionLayer = heapPtr->FIELDS.collisionLayer; + + if (((s8)this->field_0x68.HALF.HI) > 0) { + this->field_0x68.HALF.HI = this->field_0x68.HALF.HI - 1; + } + + animIndexTmp = animIndex; + animIndex += this->animationState >> 1; + if (this->type == OBJECT) { + animIndex += 0x10; + } + + if (!(animIndex == this->animIndex || (animIndexTmp == 0 && ((s8)this->field_0x68.HALF.HI) > 0))) { + InitAnimationForceUpdate(this, animIndex); + this->field_0x68.HALF.HI = 0x1e; + } else { + UpdateAnimationSingleFrame(this); + } + + sub_0800451C(this); + return; +} void sub_08062500(Entity* this) { this->myHeap = zMalloc(sizeof(KidHeap)); @@ -388,12 +493,12 @@ void sub_0806252C(Entity* this) { x = 0; for (loopVar = KID_HEAP_COUNT - 1; loopVar >= 0; loopVar--) { - item->x = r5 - (x >> 8); - item->y = (r5 >> 0x10) - (y >> 8); - item->z = r6; - item->framestate = r6 >> 0x10; - item->animationState = this->animationState & 0x3f; - item->collisionLayer = this->collisionLayer; + item->FIELDS.x = r5 - (x >> 8); + item->FIELDS.y = (r5 >> 0x10) - (y >> 8); + item->FIELDS.z = r6; + item->FIELDS.framestate = r6 >> 0x10; + item->FIELDS.animationState = this->animationState & 0x3f; + item->FIELDS.collisionLayer = this->collisionLayer; item++; y = y + r8; x = x + r10; From 77732aac232567bba9cc9265163385b5b08a8d8b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 22 Apr 2023 08:58:22 +0300 Subject: [PATCH 53/86] Disabling clang format for flags.h --- include/flags.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/flags.h b/include/flags.h index 0d5c331a..aceb9f9a 100644 --- a/include/flags.h +++ b/include/flags.h @@ -3,6 +3,8 @@ #include "global.h" +// clang-format off + bool32 CheckFlags(u32); bool32 CheckGlobalFlag(u32); bool32 CheckGlobalFlags(u32, u32); @@ -1762,4 +1764,6 @@ typedef enum { END_12, } LocalFlags12; +// clang-format on + #endif // FLAGS_H From 5b5c26f703ac481a2d2085ebe162695f1fcaf85d Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 23 Apr 2023 08:40:57 +0300 Subject: [PATCH 54/86] Remove parameter from KID_HEAP_SHIFT_RIGHT --- src/npc/kid.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/npc/kid.c b/src/npc/kid.c index c43cdedd..870b7744 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -312,7 +312,7 @@ void sub_080621AC(Entity* this) { } } -#define KID_HEAP_SHIFT_RIGHT(this) \ +#define KID_HEAP_SHIFT_RIGHT \ heapPtr = KID_HEAP; \ heapPtr += (KID_HEAP_COUNT - 2); \ for (i = 0; i < (KID_HEAP_COUNT - 1); i++) { \ @@ -361,7 +361,7 @@ void sub_080622F4(Entity* this) { animIndex = 0; if (item.DWORD != heapPtr->DWORD) { - KID_HEAP_SHIFT_RIGHT(this); + KID_HEAP_SHIFT_RIGHT; heapPtr = KID_HEAP; heapPtr[0] = item; @@ -372,7 +372,7 @@ void sub_080622F4(Entity* this) { } else { heapPtr += KID_HEAP_COUNT - 1; if (heapPtr->FIELDS.z < 0) { - KID_HEAP_SHIFT_RIGHT(this); + KID_HEAP_SHIFT_RIGHT; animIndex = 0x4; } else { dist = sub_080041E8(gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, (u16)heapPtr->FIELDS.x, @@ -380,7 +380,7 @@ void sub_080622F4(Entity* this) { dist = ((u32)dist) >> 0x4; if (dist > 0x18) { - KID_HEAP_SHIFT_RIGHT(this); + KID_HEAP_SHIFT_RIGHT; animIndex = 0x4; } } From 2d20f33494927e59dca1eeb662622be28fbb7e9d Mon Sep 17 00:00:00 2001 From: Elmyr de Hory <85423474+Elmyr-de-Hory@users.noreply.github.com> Date: Sun, 23 Apr 2023 12:33:09 -0700 Subject: [PATCH 55/86] matched sub_08068318 --- .../zeldaFollower/sub_08068318.inc | 287 ------------------ src/npc/zeldaFollower.c | 141 ++++++++- 2 files changed, 125 insertions(+), 303 deletions(-) delete mode 100644 asm/non_matching/zeldaFollower/sub_08068318.inc diff --git a/asm/non_matching/zeldaFollower/sub_08068318.inc b/asm/non_matching/zeldaFollower/sub_08068318.inc deleted file mode 100644 index 620448a5..00000000 --- a/asm/non_matching/zeldaFollower/sub_08068318.inc +++ /dev/null @@ -1,287 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - mov r8, r0 - ldr r4, _08068414 @ =gPlayerEntity - ldrh r1, [r4, #0x2e] - ldr r3, _08068418 @ =0xFFFF0000 - adds r0, r3, #0 - ands r0, r6 - orrs r0, r1 - ldrh r1, [r4, #0x32] - lsls r1, r1, #0x10 - ldr r2, _0806841C @ =0x0000FFFF - ands r0, r2 - adds r6, r0, #0 - orrs r6, r1 - ldrh r0, [r4, #0x36] - ands r3, r7 - orrs r3, r0 - adds r7, r3, #0 - ldr r0, _08068420 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - lsls r0, r0, #0x10 - ldr r2, _08068424 @ =0xFF00FFFF - ands r2, r3 - orrs r2, r0 - adds r7, r2, #0 - ldrb r1, [r4, #0x14] - movs r0, #0x3f - ands r1, r0 - lsls r1, r1, #0x18 - ldr r0, _08068428 @ =0xC0FFFFFF - ands r0, r2 - orrs r0, r1 - adds r7, r0, #0 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #0x1e - ldr r2, _0806842C @ =0x3FFFFFFF - ands r0, r2 - adds r7, r0, #0 - orrs r7, r1 - mov r0, r8 - ldr r5, [r0, #0x64] - ldrb r1, [r5, #6] - cmp r1, #0xa - bne _08068386 - lsrs r0, r7, #0x10 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xa - bne _08068394 -_08068386: - cmp r1, #0x16 - bne _080683B4 - lsrs r0, r7, #0x10 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x16 - beq _080683B4 -_08068394: - ldrh r0, [r4, #0x2e] - mov r1, r8 - strh r0, [r1, #0x2e] - ldrh r0, [r4, #0x32] - strh r0, [r1, #0x32] - ldrb r1, [r1, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - mov r2, r8 - strb r0, [r2, #0x18] - mov r0, r8 - bl sub_08068578 -_080683B4: - movs r3, #0 - mov sb, r3 - ldr r0, [r5] - cmp r6, r0 - bne _080683D0 - ldr r0, [r5, #4] - cmp r7, r0 - bne _080683D0 - lsls r1, r7, #8 - lsrs r0, r1, #0x18 - cmp r0, #0x16 - beq _080683D0 - cmp r0, #0xa - bne _08068430 -_080683D0: - mov r0, r8 - ldr r5, [r0, #0x64] - adds r5, #0x90 - mov r4, r8 - adds r4, #0x69 - mov r3, r8 - adds r3, #0x38 - movs r1, #0x58 - add r1, r8 - mov ip, r1 - movs r2, #0x12 -_080683E6: - ldr r0, [r5] - ldr r1, [r5, #4] - str r0, [r5, #8] - str r1, [r5, #0xc] - subs r5, #8 - subs r2, #1 - cmp r2, #0 - bge _080683E6 - mov r2, r8 - ldr r5, [r2, #0x64] - str r6, [r5] - str r7, [r5, #4] - movs r0, #4 - mov sb, r0 - ldrb r1, [r4] - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - ble _080684A8 - subs r0, r1, #1 - strb r0, [r4] - b _080684A8 - .align 2, 0 -_08068414: .4byte gPlayerEntity -_08068418: .4byte 0xFFFF0000 -_0806841C: .4byte 0x0000FFFF -_08068420: .4byte gPlayerState -_08068424: .4byte 0xFF00FFFF -_08068428: .4byte 0xC0FFFFFF -_0806842C: .4byte 0x3FFFFFFF -_08068430: - adds r5, #0x98 - movs r1, #4 - ldrsh r0, [r5, r1] - cmp r0, #0 - bge _08068466 - mov r2, r8 - ldr r5, [r2, #0x64] - adds r5, #0x90 - mov r4, r8 - adds r4, #0x69 - mov r3, r8 - adds r3, #0x38 - movs r0, #0x58 - add r0, r8 - mov ip, r0 - movs r2, #0x12 -_08068450: - ldr r0, [r5] - ldr r1, [r5, #4] - str r0, [r5, #8] - str r1, [r5, #0xc] - subs r5, #8 - subs r2, #1 - cmp r2, #0 - bge _08068450 - movs r1, #4 - mov sb, r1 - b _080684A8 -_08068466: - ldr r1, _0806851C @ =gPlayerEntity - movs r2, #0x2e - ldrsh r0, [r1, r2] - movs r3, #0x32 - ldrsh r1, [r1, r3] - ldrh r2, [r5] - ldrh r3, [r5, #2] - bl sub_080041E8 - lsrs r0, r0, #4 - mov r4, r8 - adds r4, #0x69 - mov r3, r8 - adds r3, #0x38 - movs r1, #0x58 - add r1, r8 - mov ip, r1 - cmp r0, #0x18 - ble _080684A8 - mov r2, r8 - ldr r5, [r2, #0x64] - adds r5, #0x90 - movs r2, #0x12 -_08068494: - ldr r0, [r5] - ldr r1, [r5, #4] - str r0, [r5, #8] - str r1, [r5, #0xc] - subs r5, #8 - subs r2, #1 - cmp r2, #0 - bge _08068494 - movs r0, #4 - mov sb, r0 -_080684A8: - mov r1, r8 - ldr r5, [r1, #0x64] - adds r5, #0x98 - ldrh r0, [r5] - strh r0, [r1, #0x2e] - ldrh r0, [r5, #2] - strh r0, [r1, #0x32] - ldrh r0, [r5, #4] - strh r0, [r1, #0x36] - ldrb r0, [r5, #7] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x1a - strb r0, [r1, #0x14] - ldrb r0, [r5, #7] - lsrs r0, r0, #6 - strb r0, [r3] - ldrb r0, [r5, #6] - cmp r0, #0x16 - beq _080684D2 - cmp r0, #0xa - bne _080684DE -_080684D2: - mov r2, r8 - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2, #0x18] -_080684DE: - adds r1, r4, #0 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - ble _080684EE - subs r0, r2, #1 - strb r0, [r1] -_080684EE: - mov r2, sb - mov r3, r8 - ldrb r0, [r3, #0x14] - lsrs r0, r0, #1 - add sb, r0 - mov r0, ip - ldrb r0, [r0] - cmp sb, r0 - beq _08068520 - cmp r2, #0 - bne _0806850C - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - bgt _08068520 -_0806850C: - mov r0, r8 - mov r1, sb - bl InitAnimationForceUpdate - movs r0, #0x1e - strb r0, [r4] - b _08068526 - .align 2, 0 -_0806851C: .4byte gPlayerEntity -_08068520: - mov r0, r8 - bl UpdateAnimationSingleFrame -_08068526: - mov r0, r8 - bl sub_0800451C - mov r1, r8 - movs r2, #0x36 - ldrsh r0, [r1, r2] - cmp r0, #0 - bge _08068542 - movs r2, #0xc - rsbs r2, r2, #0 - mov r0, r8 - movs r1, #0 - bl sub_0806F854 -_08068542: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index ae67fcba..24d9c30c 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -3,16 +3,36 @@ #include "functions.h" #include "common.h" -typedef struct { - u16 x; - u16 y; - u16 z; - u8 framestate; - u8 animationState : 6; - u8 collisionLayer : 2; +extern s32 sub_080041E8(s32 x1, s32 y1, s32 x2, s32 y2); + +typedef union { + struct { + u16 x; + u16 y; + u16 z; + u8 framestate; + u8 animationState : 6; + u8 collisionLayer : 2; + } FIELDS; + u64 DWORD; } ZeldaFollowerItem; -typedef ZeldaFollowerItem ZeldaFollowerHeap[20]; +#define ZELDA_FOLLOWER_HEAP_LEN 20 + +#define ZELDA_FOLLOWER_HEAP ((ZeldaFollowerItem *)this->myHeap) +#define ZELDA_FOLLOWER_HEAP_END ((ZeldaFollowerItem *)this->myHeap + (ZELDA_FOLLOWER_HEAP_LEN - 1)) + +#define ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr) \ + do { \ + int i; \ + heapPtr = ((ZeldaFollowerItem*)this->myHeap); \ + heapPtr += (ZELDA_FOLLOWER_HEAP_LEN - 2); \ + for ( i = 0; i < (ZELDA_FOLLOWER_HEAP_LEN - 1); i++) { \ + heapPtr[1] = heapPtr[0]; \ + heapPtr--; \ + } \ + } while (0) + void sub_08068318(Entity*); void sub_0806854C(Entity*, u32*); @@ -36,10 +56,99 @@ void ZeldaFollower(Entity* this) { } } -ASM_FUNC("asm/non_matching/zeldaFollower/sub_08068318.inc", void sub_08068318(Entity* this)) +void sub_08068318(Entity* this) { + s32 dist; + s16 z; + + u32 animIndex; + u32 animIndexTmp; + + ZeldaFollowerItem* heapPtr; + ZeldaFollowerItem item; + + item.FIELDS.x = gPlayerEntity.x.HALF_U.HI; + item.FIELDS.y = gPlayerEntity.y.HALF_U.HI; + item.FIELDS.z = gPlayerEntity.z.HALF_U.HI; + item.FIELDS.framestate = gPlayerState.framestate; + item.FIELDS.animationState = gPlayerEntity.animationState; + item.FIELDS.collisionLayer = gPlayerEntity.collisionLayer; + + heapPtr = this->myHeap; + + if ( (heapPtr->FIELDS.framestate == 0xa && item.FIELDS.framestate != 0xa) || + (heapPtr->FIELDS.framestate == 0x16 && item.FIELDS.framestate != 0x16)) { + this->x.HALF.HI = gPlayerEntity.x.HALF.HI; + this->y.HALF.HI = gPlayerEntity.y.HALF.HI; + this->spriteSettings.draw = 1; + sub_08068578(this); + } + + animIndex = 0; + if (item.DWORD != heapPtr->DWORD || item.FIELDS.framestate == 0x16 || item.FIELDS.framestate == 0xa ) { + ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); + heapPtr = ZELDA_FOLLOWER_HEAP; + heapPtr[0] = item; + animIndex = 0x4; + + if ((s8)this->field_0x68.HALF.HI > 0) { + this->field_0x68.HALF.HI = this->field_0x68.HALF.HI - 1; + } + } else { + heapPtr += ZELDA_FOLLOWER_HEAP_LEN - 1; + z = heapPtr->FIELDS.z; + + if (z < 0) { + ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); + animIndex = 0x4; + } else { + dist = sub_080041E8( + gPlayerEntity.x.HALF.HI, + gPlayerEntity.y.HALF.HI, + (u16) heapPtr->FIELDS.x, + (u16) heapPtr->FIELDS.y + ); + dist = ((u32)dist) >> 0x4; + if (dist > 0x18) { + ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); + animIndex = 0x4; + } + } + } + + heapPtr = ZELDA_FOLLOWER_HEAP; + heapPtr += ZELDA_FOLLOWER_HEAP_LEN - 1; + this->x.HALF.HI = heapPtr->FIELDS.x; + this->y.HALF.HI = heapPtr->FIELDS.y; + this->z.HALF.HI = heapPtr->FIELDS.z; + this->animationState = heapPtr->FIELDS.animationState; + this->collisionLayer = heapPtr->FIELDS.collisionLayer; + + if (heapPtr->FIELDS.framestate == 0x16 || heapPtr->FIELDS.framestate == 0xa) { + this->spriteSettings.draw = 0; + } + + if (((s8)this->field_0x68.HALF.HI) > 0) { + this->field_0x68.HALF.HI = this->field_0x68.HALF.HI - 1; + } + + animIndexTmp = animIndex; + animIndex += this->animationState >> 1; + + if (!(animIndex == this->animIndex || (animIndexTmp == 0 && ((s8)this->field_0x68.HALF.HI) > 0))) { + InitAnimationForceUpdate(this, animIndex); + this->field_0x68.HALF.HI = 0x1e; + } else { + UpdateAnimationSingleFrame(this); + } + + sub_0800451C(this); + if (this->z.HALF.HI < 0) { + sub_0806F854(this, 0x0, -0xc); + } +} void sub_0806854C(Entity* this, u32* none) { - this->myHeap = zMalloc(sizeof(ZeldaFollowerHeap)); + this->myHeap = zMalloc(sizeof(ZeldaFollowerItem[ZELDA_FOLLOWER_HEAP_LEN])); if (this->myHeap != NULL) { this->field_0x68.HALF.LO = 1; sub_080788E0(this); @@ -157,12 +266,12 @@ void sub_08068578(Entity* this) { // Down here the u32 are suddendly accessed correctly as u16 and bitfields? // How are the results of above u32 calculations used? for (index = 0x13; index >= 0; index--) { - item->x = r5 - (x >> 8); - item->y = (r5 >> 0x10) - (y >> 8); - item->z = r6; - item->framestate = r6 >> 0x10; - item->animationState = this->animationState & 0x3f; - item->collisionLayer = this->collisionLayer; + item->FIELDS.x = r5 - (x >> 8); + item->FIELDS.y = (r5 >> 0x10) - (y >> 8); + item->FIELDS.z = r6; + item->FIELDS.framestate = r6 >> 0x10; + item->FIELDS.animationState = this->animationState & 0x3f; + item->FIELDS.collisionLayer = this->collisionLayer; item++; y = y + r8; x = x + r10; From e59630f2022059add2723949fbe38d7ae000bd43 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Mon, 24 Apr 2023 16:31:06 +0200 Subject: [PATCH 56/86] Fix dungeon item mixup --- asm/non_matching/playerUtils/sub_080784E4.inc | 4 +-- include/game.h | 30 +++++++++---------- src/beanstalkSubtask.c | 2 +- src/common.c | 6 ++-- src/gameUtils.c | 10 +++---- src/menu/pauseMenu.c | 6 ++-- src/script.c | 16 +++++----- 7 files changed, 36 insertions(+), 38 deletions(-) diff --git a/asm/non_matching/playerUtils/sub_080784E4.inc b/asm/non_matching/playerUtils/sub_080784E4.inc index 109b7fd3..40c47409 100644 --- a/asm/non_matching/playerUtils/sub_080784E4.inc +++ b/asm/non_matching/playerUtils/sub_080784E4.inc @@ -88,13 +88,13 @@ _080785B0: ands r0, r1 cmp r0, #0 bne _080785F0 - bl HasDungeonMap + bl HasDungeonSmallKey cmp r0, #0 beq _080785C4 movs r0, #1 _080785C4: adds r7, r0, #0 - bl HasDungeonCompass + bl HasDungeonBigKey cmp r0, #0 beq _080785D2 movs r0, #2 diff --git a/include/game.h b/include/game.h index 0bdc45e2..62584fe1 100644 --- a/include/game.h +++ b/include/game.h @@ -90,32 +90,32 @@ void sub_08052878(void); void ModDungeonKeys(s32 keys); /** - * Check if the current dungeon has a map item. + * Check if the player has at least one small key for the current dungeon. * - * @return True if the current dungeon has a map item. + * @return True if the player has a small key. */ -bool32 HasDungeonMap(void); +bool32 HasDungeonSmallKey(void); /** - * Check if the current dungeon has a compass item. + * Check if the player has the big key for the current dungeon. * - * @return True if the current dungeon has a compass item. - */ -bool32 HasDungeonCompass(void); - -/** - * Check if the current dungeon has a big key item. - * - * @return True if the current dungeon has a big key item. + * @return True if the player has the big key. */ bool32 HasDungeonBigKey(void); /** - * Check if the current dungeon has a small key item. + * Check if the player has the compass for the current dungeon. * - * @return True if the current dungeon has a small key item. + * @return True if the player has the compass. */ -bool32 HasDungeonSmallKey(void); +bool32 HasDungeonCompass(void); + +/** + * Check if the player has the map for the current dungeon. + * + * @return True if the player has the map. + */ +bool32 HasDungeonMap(void); /** * @brief Check if item is a sword. diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index d09ea3cd..42f6943b 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -332,7 +332,7 @@ u32 UpdatePlayerCollision(void) { OpenSmallChest(position, gPlayerEntity.collisionLayer); return 2; case 0x71: - if (HasDungeonMap() == 0) { + if (HasDungeonSmallKey() == 0) { return 0; } gUnk_0200AF00.unk_2d = 6; diff --git a/src/common.c b/src/common.c index 64543bd9..d55dbf54 100644 --- a/src/common.c +++ b/src/common.c @@ -444,7 +444,7 @@ void DrawDungeonMap(u32 floor, DungeonMapObject* specialData, u32 size) { floorMapData++; } else { flagBankOffset = sub_0801DF10(floorMapData); - if (HasDungeonBigKey()) { + if (HasDungeonCompass()) { while (tileEntity->type != 0) { switch (tileEntity->type) { case SMALL_CHEST: @@ -468,7 +468,7 @@ void DrawDungeonMap(u32 floor, DungeonMapObject* specialData, u32 size) { tileEntity++; } } - if ((HasDungeonBigKey() && ((floorMapData->unk_2 & 2) != 0)) && (!CheckGlobalFlag(gArea.dungeon_idx + 1))) { + if ((HasDungeonCompass() && ((floorMapData->unk_2 & 2) != 0)) && (!CheckGlobalFlag(gArea.dungeon_idx + 1))) { roomHeader = gAreaRoomHeaders[floorMapData->area] + floorMapData->room; specialData->type = DMO_TYPE_BOSS; tmp1 = ((roomHeader->pixel_width / 2) + roomHeader->map_x) / 16; @@ -536,7 +536,7 @@ void DrawDungeonFeatures(u32 floor, void* data, u32 size) { if (layout->area == gUI.roomControls.area && layout->room == gUI.roomControls.room) { features = 8; } else { - if (HasDungeonSmallKey()) { + if (HasDungeonMap()) { features = 2; } if (IsRoomVisited(tileEntity, bankOffset)) { diff --git a/src/gameUtils.c b/src/gameUtils.c index 4f615950..8f9e9ace 100644 --- a/src/gameUtils.c +++ b/src/gameUtils.c @@ -243,7 +243,7 @@ bool32 AreaHasKeys(void) { return (gArea.areaMetadata >> 1) & 1; } -bool32 HasDungeonMap(void) { +bool32 HasDungeonSmallKey(void) { u32 tmp; if (AreaHasKeys()) @@ -251,7 +251,7 @@ bool32 HasDungeonMap(void) { return tmp ? 1 : 0; } -bool32 HasDungeonCompass(void) { +bool32 HasDungeonBigKey(void) { u32 tmp; if (AreaHasKeys()) @@ -259,15 +259,13 @@ bool32 HasDungeonCompass(void) { return tmp ? 1 : 0; } -bool32 HasDungeonBigKey(void) { +bool32 HasDungeonCompass(void) { if (!AreaHasKeys()) return 0; return (gSave.dungeonItems[gArea.dungeon_idx] >> 1) & 1; } -bool32 HasDungeonSmallKey(void) { - u32 tmp; - +bool32 HasDungeonMap(void) { if (!AreaHasKeys()) return 0; return gSave.dungeonItems[gArea.dungeon_idx] & 1; diff --git a/src/menu/pauseMenu.c b/src/menu/pauseMenu.c index 0b76815b..c36dbb9a 100644 --- a/src/menu/pauseMenu.c +++ b/src/menu/pauseMenu.c @@ -1153,17 +1153,17 @@ void sub_080A5D1C(void) { DrawDirect(DRAW_DIRECT_SPRITE_INDEX, (gMain.ticks & 0x20) != 0 ? 0x78 : 0x79); gOamCmd.y = 0x7e; gOamCmd._8 = 0x4380; - if (HasDungeonSmallKey()) { + if (HasDungeonMap()) { gOamCmd.x = 0x18; frameIndex = gSpriteAnimations_322[0x50]->index; DrawDirect(SUB_080A5D1C_SPRITE_INDEX, frameIndex); } - if (HasDungeonCompass()) { + if (HasDungeonBigKey()) { gOamCmd.x = 0x2e; frameIndex = gSpriteAnimations_322[0x52]->index; DrawDirect(SUB_080A5D1C_SPRITE_INDEX, frameIndex); } - if (HasDungeonBigKey()) { + if (HasDungeonCompass()) { gOamCmd.x = 0x45; gOamCmd._8 = 0x380; frameIndex = gSpriteAnimations_322[0x51]->index; diff --git a/src/script.c b/src/script.c index 1f14de5f..91bc5e95 100644 --- a/src/script.c +++ b/src/script.c @@ -721,17 +721,17 @@ void ScriptCommand_CheckInventory1(Entity* entity, ScriptExecutionContext* conte u32 tmp; u32 tmp2 = GetNextScriptCommandHalfwordAfterCommandMetadata(context->scriptInstructionPointer); switch (tmp2) { - case 0x53: - tmp = HasDungeonMap(); + case ITEM_SMALL_KEY: + tmp = HasDungeonSmallKey(); break; - case 0x52: - tmp = HasDungeonCompass(); - break; - case 0x51: + case ITEM_BIG_KEY: tmp = HasDungeonBigKey(); break; - case 0x50: - tmp = HasDungeonSmallKey(); + case ITEM_COMPASS: + tmp = HasDungeonCompass(); + break; + case ITEM_DUNGEON_MAP: + tmp = HasDungeonMap(); break; default: tmp = GetInventoryValue(tmp2); From 65304904d34cdcc47f24ea2fe21c94d05834706a Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Mon, 24 Apr 2023 16:50:53 +0200 Subject: [PATCH 57/86] Fix Kinstone drops mixup --- include/droptables.h | 4 +- src/droptables.c | 244 +++++++++++++++++++++---------------------- 2 files changed, 124 insertions(+), 124 deletions(-) diff --git a/include/droptables.h b/include/droptables.h index 63213f98..1d7b2bcf 100644 --- a/include/droptables.h +++ b/include/droptables.h @@ -14,9 +14,9 @@ typedef union { s16 bombs; s16 arrows; s16 mysteriousShells; - s16 kinstoneGreen; - s16 kinstoneBlue; s16 kinstoneRed; + s16 kinstoneBlue; + s16 kinstoneGreen; s16 none2; s16 none3; s16 none4; diff --git a/src/droptables.c b/src/droptables.c index d239a80d..aafd0879 100644 --- a/src/droptables.c +++ b/src/droptables.c @@ -12,9 +12,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -30,9 +30,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -48,9 +48,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -66,9 +66,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -84,9 +84,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = 5, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -102,9 +102,9 @@ const Droptable gEnemyDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = -999, .none3 = 0, .none4 = 0, @@ -120,9 +120,9 @@ const Droptable gEnemyDroptables[] = { .bombs = 1, .arrows = 1, .mysteriousShells = 0, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -138,9 +138,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, + .kinstoneRed = -999, .kinstoneBlue = -999, - .kinstoneRed = 10, + .kinstoneGreen = 10, .none2 = -999, .none3 = 0, .none4 = 0, @@ -156,9 +156,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, + .kinstoneRed = -999, .kinstoneBlue = -999, - .kinstoneRed = 15, + .kinstoneGreen = 15, .none2 = -999, .none3 = 0, .none4 = 0, @@ -174,9 +174,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = 50, .mysteriousShells = 0, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -192,9 +192,9 @@ const Droptable gEnemyDroptables[] = { .bombs = 100, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -210,9 +210,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = 10, - .kinstoneGreen = 2, + .kinstoneRed = 2, .kinstoneBlue = 3, - .kinstoneRed = 10, + .kinstoneGreen = 10, .none2 = -999, .none3 = 0, .none4 = 0, @@ -228,9 +228,9 @@ const Droptable gEnemyDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -246,9 +246,9 @@ const Droptable gEnemyDroptables[] = { .bombs = 1, .arrows = 1, .mysteriousShells = 0, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -264,9 +264,9 @@ const Droptable gEnemyDroptables[] = { .bombs = 20, .arrows = -999, .mysteriousShells = 0, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -282,9 +282,9 @@ const Droptable gEnemyDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = -999, .none3 = 0, .none4 = 0, @@ -300,9 +300,9 @@ const Droptable gEnemyDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 2, + .kinstoneRed = 2, .kinstoneBlue = 5, - .kinstoneRed = 10, + .kinstoneGreen = 10, .none2 = 0, .none3 = 0, .none4 = 0, @@ -318,9 +318,9 @@ const Droptable gEnemyDroptables[] = { .bombs = 9, .arrows = 9, .mysteriousShells = 40, - .kinstoneGreen = 9, + .kinstoneRed = 9, .kinstoneBlue = 12, - .kinstoneRed = 16, + .kinstoneGreen = 16, .none2 = 9, .none3 = 0, .none4 = 0, @@ -339,9 +339,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 10, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -357,9 +357,9 @@ const Droptable gAreaDroptables[] = { .bombs = 200, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = 0, .none3 = 0, .none4 = 0, @@ -375,9 +375,9 @@ const Droptable gAreaDroptables[] = { .bombs = 35, .arrows = 4, .mysteriousShells = 4, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 3, + .kinstoneGreen = 3, .none2 = 0, .none3 = 0, .none4 = 0, @@ -393,9 +393,9 @@ const Droptable gAreaDroptables[] = { .bombs = 7, .arrows = 25, .mysteriousShells = 3, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 9, + .kinstoneGreen = 9, .none2 = 0, .none3 = 0, .none4 = 0, @@ -411,9 +411,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 23, .mysteriousShells = 2, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 28, + .kinstoneGreen = 28, .none2 = 0, .none3 = 0, .none4 = 0, @@ -429,9 +429,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 6, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 11, + .kinstoneGreen = 11, .none2 = 0, .none3 = 0, .none4 = 0, @@ -447,9 +447,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 33, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 6, + .kinstoneGreen = 6, .none2 = 0, .none3 = 0, .none4 = 0, @@ -465,9 +465,9 @@ const Droptable gAreaDroptables[] = { .bombs = 4, .arrows = 4, .mysteriousShells = 3, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 6, + .kinstoneGreen = 6, .none2 = 20, .none3 = 0, .none4 = 0, @@ -483,9 +483,9 @@ const Droptable gAreaDroptables[] = { .bombs = 1, .arrows = 1, .mysteriousShells = 1, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 6, + .kinstoneGreen = 6, .none2 = 0, .none3 = 0, .none4 = 0, @@ -501,9 +501,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 18, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 5, + .kinstoneGreen = 5, .none2 = 15, .none3 = 0, .none4 = 0, @@ -523,9 +523,9 @@ const Droptable gAreaDroptables[] = { .bombs = 1, .arrows = 1, .mysteriousShells = 40, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 5, + .kinstoneGreen = 5, .none2 = 0, .none3 = 0, .none4 = 0, @@ -541,9 +541,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 19, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 15, + .kinstoneGreen = 15, .none2 = 28, .none3 = 0, .none4 = 0, @@ -559,9 +559,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 9, + .kinstoneGreen = 9, .none2 = 0, .none3 = 0, .none4 = 0, @@ -577,9 +577,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 1, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 15, + .kinstoneGreen = 15, .none2 = 0, .none3 = 0, .none4 = 0, @@ -595,9 +595,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 25, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 4, + .kinstoneGreen = 4, .none2 = 0, .none3 = 0, .none4 = 0, @@ -613,9 +613,9 @@ const Droptable gAreaDroptables[] = { .bombs = 20, .arrows = 0, .mysteriousShells = 15, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 10, + .kinstoneGreen = 10, .none2 = -999, .none3 = 0, .none4 = 0, @@ -631,9 +631,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = -999, .mysteriousShells = 0, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 10, + .kinstoneGreen = 10, .none2 = -999, .none3 = 0, .none4 = 0, @@ -649,9 +649,9 @@ const Droptable gAreaDroptables[] = { .bombs = -999, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, + .kinstoneRed = 0, .kinstoneBlue = 0, - .kinstoneRed = 10, + .kinstoneGreen = 10, .none2 = -999, .none3 = 0, .none4 = 0, @@ -667,9 +667,9 @@ const Droptable gAreaDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -687,9 +687,9 @@ const Droptable gObjectDroptables[] = { .bombs = -100, .arrows = -100, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = -999, .none3 = 0, .none4 = 0, @@ -705,9 +705,9 @@ const Droptable gObjectDroptables[] = { .bombs = 1, .arrows = 1, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 1, .none3 = 0, .none4 = 0, @@ -723,9 +723,9 @@ const Droptable gObjectDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 140, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 20, .none3 = 0, .none4 = 0, @@ -741,9 +741,9 @@ const Droptable gObjectDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 0, .none3 = 0, .none4 = 0, @@ -759,9 +759,9 @@ const Droptable gObjectDroptables[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -777,9 +777,9 @@ const Droptable gObjectDroptables[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = -999, .none3 = 0, .none4 = 0, @@ -796,9 +796,9 @@ const Droptable gObjectDroptables[] = { .bombs = -999, .arrows = 250, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -815,9 +815,9 @@ const Droptable gObjectDroptables[] = { .bombs = -10, .arrows = -10, .mysteriousShells = 12, - .kinstoneGreen = 1, + .kinstoneRed = 1, .kinstoneBlue = 2, - .kinstoneRed = 10, + .kinstoneGreen = 10, .none2 = 30, .none3 = 0, .none4 = 0, @@ -833,9 +833,9 @@ const Droptable gObjectDroptables[] = { .bombs = -10, .arrows = -10, .mysteriousShells = 24, - .kinstoneGreen = 2, + .kinstoneRed = 2, .kinstoneBlue = 4, - .kinstoneRed = 20, + .kinstoneGreen = 20, .none2 = 10, .none3 = 0, .none4 = 0, @@ -854,9 +854,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 0, .none3 = 0, .none4 = 0, @@ -872,9 +872,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 0, .none3 = 0, .none4 = 0, @@ -890,9 +890,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 0, .none3 = 0, .none4 = 0, @@ -908,9 +908,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 0, .none3 = 0, .none4 = 0, @@ -927,9 +927,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 20, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -945,9 +945,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 20, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -964,9 +964,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = -999, .none3 = 0, .none4 = 0, @@ -982,9 +982,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = -999, .none3 = 0, .none4 = 0, @@ -1000,9 +1000,9 @@ const Droptable gUnk_0800191C[] = { .bombs = -999, .arrows = -999, .mysteriousShells = -999, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = -999, .none3 = 0, .none4 = 0, @@ -1018,9 +1018,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 250, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = -999, .none3 = 0, .none4 = 0, @@ -1036,9 +1036,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 125, .arrows = 125, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = -999, .none3 = 0, .none4 = 0, @@ -1054,9 +1054,9 @@ const Droptable gUnk_0800191C[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 20, + .kinstoneRed = 20, .kinstoneBlue = 40, - .kinstoneRed = 190, + .kinstoneGreen = 190, .none2 = -999, .none3 = 0, .none4 = 0, @@ -1077,9 +1077,9 @@ const Droptable gDroptableModifiers[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 0, .none3 = 0, .none4 = 0, @@ -1096,9 +1096,9 @@ const Droptable gDroptableModifiers[] = { .bombs = 2, .arrows = 2, .mysteriousShells = -999, - .kinstoneGreen = 0, - .kinstoneBlue = 0, .kinstoneRed = 0, + .kinstoneBlue = 0, + .kinstoneGreen = 0, .none2 = 0, .none3 = 0, .none4 = 0, @@ -1115,9 +1115,9 @@ const Droptable gDroptableModifiers[] = { .bombs = 0, .arrows = 0, .mysteriousShells = 0, - .kinstoneGreen = -999, - .kinstoneBlue = -999, .kinstoneRed = -999, + .kinstoneBlue = -999, + .kinstoneGreen = -999, .none2 = 0, .none3 = 0, .none4 = 0, From b079dee500f7e6fb9fab92b4df2b0874f81a9fae Mon Sep 17 00:00:00 2001 From: hatal175 Date: Mon, 24 Apr 2023 10:17:53 +0000 Subject: [PATCH 58/86] Match sub_080AC5E4 --- asm/non_matching/gyorgTail/sub_080AC5E4.inc | 134 -------------------- src/projectile/gyorgTail.c | 46 ++++--- 2 files changed, 26 insertions(+), 154 deletions(-) delete mode 100644 asm/non_matching/gyorgTail/sub_080AC5E4.inc diff --git a/asm/non_matching/gyorgTail/sub_080AC5E4.inc b/asm/non_matching/gyorgTail/sub_080AC5E4.inc deleted file mode 100644 index 1bd2d4b8..00000000 --- a/asm/non_matching/gyorgTail/sub_080AC5E4.inc +++ /dev/null @@ -1,134 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - ldrb r4, [r5, #0xa] - cmp r4, #0 - bne _080AC668 - ldr r0, _080AC664 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x43 - bhi _080AC670 - adds r1, r5, #0 - adds r1, #0x79 - movs r0, #0x11 - strb r0, [r1] - movs r0, #0x22 - bl CreateProjectile - adds r6, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r6, #0xa] - movs r0, #1 - strb r0, [r6, #0xb] - ldr r0, [r5, #0x50] - str r0, [r6, #0x50] - adds r1, r6, #0 - adds r1, #0x79 - movs r0, #0x12 - strb r0, [r1] - str r6, [r5, #0x54] - movs r0, #0x22 - bl CreateProjectile - adds r7, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r7, #0xa] - movs r0, #2 - strb r0, [r7, #0xb] - ldr r0, [r5, #0x50] - str r0, [r7, #0x50] - adds r0, r7, #0 - adds r0, #0x79 - movs r1, #0x14 - mov r8, r1 - mov r1, r8 - strb r1, [r0] - str r7, [r6, #0x54] - movs r0, #0x22 - bl CreateProjectile - ldrb r1, [r5, #0xa] - strb r1, [r0, #0xa] - movs r1, #3 - strb r1, [r0, #0xb] - ldr r1, [r5, #0x50] - str r1, [r0, #0x50] - str r4, [r0, #0x54] - adds r1, r0, #0 - adds r1, #0x79 - strb r4, [r1] - str r0, [r7, #0x54] - b _080AC6C8 - .align 2, 0 -_080AC664: .4byte gEntCount -_080AC668: - ldr r0, _080AC674 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x44 - bls _080AC678 -_080AC670: - movs r0, #0 - b _080AC6E8 - .align 2, 0 -_080AC674: .4byte gEntCount -_080AC678: - adds r1, r5, #0 - adds r1, #0x79 - movs r0, #0 - mov sb, r0 - movs r0, #0xf - strb r0, [r1] - movs r0, #0x22 - bl CreateProjectile - adds r6, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r6, #0xa] - movs r0, #1 - strb r0, [r6, #0xb] - ldr r0, [r5, #0x50] - str r0, [r6, #0x50] - adds r0, r6, #0 - adds r0, #0x79 - movs r1, #0x10 - mov r8, r1 - mov r1, r8 - strb r1, [r0] - str r6, [r5, #0x54] - movs r0, #0x22 - bl CreateProjectile - adds r7, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r7, #0xa] - movs r0, #2 - strb r0, [r7, #0xb] - ldr r0, [r5, #0x50] - str r0, [r7, #0x50] - mov r0, sb - str r0, [r7, #0x54] - adds r1, r7, #0 - adds r1, #0x79 - movs r0, #0x20 - strb r0, [r1] - str r7, [r6, #0x54] -_080AC6C8: - movs r0, #0x22 - bl CreateProjectile - adds r6, r0, #0 - ldrb r0, [r5, #0xa] - strb r0, [r6, #0xa] - movs r0, #4 - strb r0, [r6, #0xb] - ldr r0, [r5, #0x50] - str r0, [r6, #0x50] - str r5, [r6, #0x54] - adds r0, r6, #0 - adds r0, #0x79 - mov r1, r8 - strb r1, [r0] - movs r0, #1 -_080AC6E8: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .syntax divided diff --git a/src/projectile/gyorgTail.c b/src/projectile/gyorgTail.c index c3657692..1f191f7a 100644 --- a/src/projectile/gyorgTail.c +++ b/src/projectile/gyorgTail.c @@ -169,70 +169,76 @@ void sub_080AC560(Entity* this) { this->y.WORD = entity->y.WORD - gSineTable[entity->direction + 0x40] * factor; } -NONMATCH("asm/non_matching/gyorgTail/sub_080AC5E4.inc", bool32 sub_080AC5E4(Entity* this)) { +bool32 sub_080AC5E4(Entity* this) { // TODO regalloc Entity* entity; + Entity* new_var2; Entity* entity2; Entity* entity3; Entity* entity4; - u8 uVar3; if (this->type == 0) { - if (0x43 < gEntCount) { + if (gEntCount > 0x43) { return FALSE; } this->field_0x78.HALF.HI = 0x11; - entity = CreateProjectile(0x22); + entity = CreateProjectile(GYORG_TAIL); entity->type = this->type; entity->type2 = 1; entity->parent = this->parent; entity->field_0x78.HALF.HI = 0x12; this->child = entity; - entity2 = CreateProjectile(0x22); + + entity2 = CreateProjectile(GYORG_TAIL); entity2->type = this->type; entity2->type2 = 2; entity2->parent = this->parent; entity2->field_0x78.HALF.HI = 0x14; - uVar3 = entity2->field_0x78.HALF.HI; - entity2->field_0x78.HALF.HI = uVar3; entity->child = entity2; - entity3 = CreateProjectile(0x22); + + entity3 = CreateProjectile(GYORG_TAIL); entity3->type = this->type; entity3->type2 = 3; entity3->parent = this->parent; entity3->child = NULL; entity3->field_0x78.HALF.HI = 0; entity2->child = entity3; + + entity = CreateProjectile(GYORG_TAIL); + entity->type = this->type; + entity->type2 = 4; + entity->parent = this->parent; + entity->child = this; + entity->field_0x78.HALF.HI = 0x14; } else { - if (0x44 < gEntCount) { + if (gEntCount > 0x44) { return FALSE; } this->field_0x78.HALF.HI = 0xf; - entity = CreateProjectile(0x22); + entity = CreateProjectile(GYORG_TAIL); entity->type = this->type; entity->type2 = 1; entity->parent = this->parent; entity->field_0x78.HALF.HI = 0x10; - uVar3 = entity->field_0x78.HALF.HI; - entity->field_0x78.HALF.HI = uVar3; this->child = entity; - entity2 = CreateProjectile(0x22); + + entity2 = CreateProjectile(GYORG_TAIL); entity2->type = this->type; entity2->type2 = 2; entity2->parent = this->parent; entity2->child = NULL; entity2->field_0x78.HALF.HI = 0x20; entity->child = entity2; + + entity = CreateProjectile(GYORG_TAIL); + entity->type = this->type; + entity->type2 = 4; + entity->parent = this->parent; + entity->child = this; + entity->field_0x78.HALF.HI = 0x10; } - entity = CreateProjectile(0x22); - entity->type = this->type; - entity->type2 = 4; - entity->parent = this->parent; - entity->child = this; - entity->field_0x78.HALF.HI = uVar3; return TRUE; } -END_NONMATCH void sub_080AC6F0(Entity* this) { static const u8 gUnk_0812A9C0[] = { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, From 802338f3a9553a71e39db60311a7d86464779d88 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Wed, 26 Apr 2023 13:48:54 +0200 Subject: [PATCH 59/86] fix progress.py for new makefile --- progress.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/progress.py b/progress.py index bd248d2e..f0b8fdf2 100755 --- a/progress.py +++ b/progress.py @@ -2,7 +2,6 @@ import argparse import json -import git import os import re @@ -26,7 +25,7 @@ def parse_map(non_matching_funcs): data = 0 non_matching = 0 - with open('tmc.map', 'r') as map: + with open('build/USA/tmc.map', 'r') as map: # Skip to the linker script section line = map.readline() while not line.startswith('Linker script and memory map'): @@ -119,6 +118,7 @@ def main(): if args.format == 'csv': + import git version = 2 git_object = git.Repo().head.object timestamp = str(git_object.committed_date) From a822374f7634a41a21fa7578565fc263e0672445 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:06:21 +0200 Subject: [PATCH 60/86] Fix a few comments with offsets in structs --- include/player.h | 14 +++++++------- include/save.h | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/player.h b/include/player.h index 6c31cf38..34c4b70e 100644 --- a/include/player.h +++ b/include/player.h @@ -254,12 +254,12 @@ typedef enum { } PlayerInputState; typedef struct { - /*0x90*/ u16 heldInput; /**< Input currently held @see PlayerInputState */ - /*0x92*/ u16 newInput; /**< New input this frame @see PlayerInputState */ - /*0x94*/ u32 field_0x94; - /*0x98*/ u16 playerMacroWaiting; - /*0x9a*/ u16 playerMacroHeldKeys; - /*0x9c*/ PlayerMacroEntry* playerMacro; + /*0x0*/ u16 heldInput; /**< Input currently held @see PlayerInputState */ + /*0x2*/ u16 newInput; /**< New input this frame @see PlayerInputState */ + /*0x4*/ u32 field_0x94; + /*0x8*/ u16 playerMacroWaiting; + /*0xa*/ u16 playerMacroHeldKeys; + /*0xc*/ PlayerMacroEntry* playerMacro; } PlayerInput; typedef enum { @@ -276,7 +276,7 @@ typedef enum { typedef struct { /*0x00*/ u8 prevAnim; - /*0x00*/ u8 grab_status; + /*0x01*/ u8 grab_status; /*0x02*/ u8 jump_status; /*0x03*/ u8 shield_status; /*0x04*/ u8 attack_status; diff --git a/include/save.h b/include/save.h index 5193e692..aa206fe5 100644 --- a/include/save.h +++ b/include/save.h @@ -34,7 +34,7 @@ extern SaveResult HandleSave(u32 idx); */ typedef struct { /*0x000*/ u8 invalid; /**< File is invalid. */ - /*0x000*/ u8 initialized; /**< File is initialized. */ + /*0x001*/ u8 initialized; /**< File is initialized. */ /*0x002*/ u8 msg_speed; /**< Message speed. */ /*0x003*/ u8 brightness; /**< Brightness. */ /*0x004*/ u8 filler4[0x2]; @@ -69,7 +69,7 @@ typedef struct { /*0x25C*/ u8 flags[0x200]; /**< Flags. */ /*0x45C*/ u8 dungeonKeys[0x10]; // TODO Indexed by dungeon id, keys per dungeon /*0x46C*/ u8 dungeonItems[0x10]; // TODO items in the dungeon. 4: compass, 2: big key, 1: small key - /*0x46C*/ u8 dungeonWarps[0x10]; // TODO indexed by dungeon id, EnableDungeonWarp, IsDungeonWarpActive + /*0x47C*/ u8 dungeonWarps[0x10]; // TODO indexed by dungeon id, EnableDungeonWarp, IsDungeonWarpActive /*0x48C*/ u32 timers[7]; /*0x4A8*/ u32 demo_timer; /**< Demo timer. */ /*0x4AC*/ u8 filler4ac[0x8]; From aa477e7ad06389d85be87e8c9328d0a6b7f6a38b Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Thu, 27 Apr 2023 02:29:50 +0200 Subject: [PATCH 61/86] Gold Kinstone Fusion names --- data/scripts/unused/script_08016384.inc | 2 +- data/scripts/unused/script_08016482.inc | 2 +- ...pt_MinishVillageObjectLeftStoneOpening.inc | 2 +- ...t_MinishVillageObjectRightStoneOpening.inc | 2 +- .../veilFalls/script_NPC4ESourceOfTheFlow.inc | 6 +++--- include/kinstone.h | 17 +++++++++------ src/kinstone.c | 2 +- src/npc/npc4E.c | 21 ++++++++++--------- 8 files changed, 30 insertions(+), 24 deletions(-) diff --git a/data/scripts/unused/script_08016384.inc b/data/scripts/unused/script_08016384.inc index b1975a48..0a5eeacf 100644 --- a/data/scripts/unused/script_08016384.inc +++ b/data/scripts/unused/script_08016384.inc @@ -27,7 +27,7 @@ SCRIPT_START script_08016384 FacePlayerAndCheckDist HasRupees 200 CheckTextboxResult - CheckKinstoneFused KINSTONE_1 + CheckKinstoneFused KINSTONE_MYSTERIOUS_CLOUD_TOP_RIGHT BuyItem ITEM_BOMBS10, 0x0000 CheckBottleContaining ITEM_BOTTLE_EMPTY VariableBitSet 0x00000000 diff --git a/data/scripts/unused/script_08016482.inc b/data/scripts/unused/script_08016482.inc index be00febe..70f9b944 100644 --- a/data/scripts/unused/script_08016482.inc +++ b/data/scripts/unused/script_08016482.inc @@ -28,7 +28,7 @@ SCRIPT_START script_08016482 _0807E9D4 _0807E9DC _0807E9E4 0x0000 - _0807EA88 0x0001 + _0807EA88 KINSTONE_MYSTERIOUS_CLOUD_TOP_RIGHT WaitUntilTextboxCloses MessageFromTarget TEXT_LOCATIONS, 0x01 MessageNoOverlap 0x0601 diff --git a/data/scripts/veilFalls/script_MinishVillageObjectLeftStoneOpening.inc b/data/scripts/veilFalls/script_MinishVillageObjectLeftStoneOpening.inc index 3d552cdb..3f5ac7fb 100644 --- a/data/scripts/veilFalls/script_MinishVillageObjectLeftStoneOpening.inc +++ b/data/scripts/veilFalls/script_MinishVillageObjectLeftStoneOpening.inc @@ -1,7 +1,7 @@ @ Waterfalls MINISH_VILLAGE_OBJECT during kinstone cutscene? SCRIPT_START script_MinishVillageObjectLeftStoneOpening BeginBlock - CheckKinstoneFused KINSTONE_9 + CheckKinstoneFused KINSTONE_SOURCE_FLOW JumpIf script_MinishVillageObjectLeftStone EndBlock WaitForSyncFlagAndClear 0x00000001 diff --git a/data/scripts/veilFalls/script_MinishVillageObjectRightStoneOpening.inc b/data/scripts/veilFalls/script_MinishVillageObjectRightStoneOpening.inc index f5194dff..76ea1d57 100644 --- a/data/scripts/veilFalls/script_MinishVillageObjectRightStoneOpening.inc +++ b/data/scripts/veilFalls/script_MinishVillageObjectRightStoneOpening.inc @@ -1,7 +1,7 @@ @ Waterfalls MINISH_VILLAGE_OBJECT during kinstone cutscene? SCRIPT_START script_MinishVillageObjectRightStoneOpening BeginBlock - CheckKinstoneFused KINSTONE_9 + CheckKinstoneFused KINSTONE_SOURCE_FLOW JumpIf script_MinishVillageObjectRightStone EndBlock WaitForSyncFlagAndClear 0x00000002 diff --git a/data/scripts/veilFalls/script_NPC4ESourceOfTheFlow.inc b/data/scripts/veilFalls/script_NPC4ESourceOfTheFlow.inc index 6bac4d40..efda3b1e 100644 --- a/data/scripts/veilFalls/script_NPC4ESourceOfTheFlow.inc +++ b/data/scripts/veilFalls/script_NPC4ESourceOfTheFlow.inc @@ -2,9 +2,9 @@ SCRIPT_START script_NPC4ESourceOfTheFlow BeginBlock Call sub_0806DB84 - CheckKinstoneFused KINSTONE_9 + CheckKinstoneFused KINSTONE_SOURCE_FLOW JumpIf script_08016028 - _0807EA88 0x0009 + _0807EA88 KINSTONE_SOURCE_FLOW CallWithArg sub_0806DA04, 0x00000007 DoPostScriptAction 0x000a EndBlock @@ -12,7 +12,7 @@ script_08015FE4: _0807EA4C _0807E9F0 SetPlayerIdle - CheckKinstoneFused KINSTONE_9 + CheckKinstoneFused KINSTONE_SOURCE_FLOW JumpIf script_08015FFE Call EnablePauseMenu EnablePlayerControl diff --git a/include/kinstone.h b/include/kinstone.h index a5c20d44..e05c815e 100644 --- a/include/kinstone.h +++ b/include/kinstone.h @@ -36,15 +36,15 @@ extern const KinstoneWorldEvent gKinstoneWorldEvents[]; typedef enum { KINSTONE_0, - KINSTONE_1, - KINSTONE_2, - KINSTONE_3, - KINSTONE_4, - KINSTONE_5, + KINSTONE_MYSTERIOUS_CLOUD_TOP_RIGHT, + KINSTONE_MYSTERIOUS_CLOUD_BOTTOM_LEFT, + KINSTONE_MYSTERIOUS_CLOUD_TOP_LEFT, + KINSTONE_MYSTERIOUS_CLOUD_MIDDLE, + KINSTONE_MYSTERIOUS_CLOUD_BOTTOM_RIGHT, KINSTONE_CASTOR_WILDS_STATUE_LEFT, KINSTONE_CASTOR_WILDS_STATUE_MIDDLE, KINSTONE_CASTOR_WILDS_STATUE_RIGHT, - KINSTONE_9, + KINSTONE_SOURCE_FLOW, KINSTONE_A, KINSTONE_B, KINSTONE_C, @@ -131,6 +131,11 @@ typedef enum { KINSTONE_5D, KINSTONE_5E, KINSTONE_5F, + KINSTONE_60, + KINSTONE_61, + KINSTONE_62, + KINSTONE_63, + KINSTONE_64, } KinstoneId; typedef struct { diff --git a/src/kinstone.c b/src/kinstone.c index 1be80aa3..e6b8f054 100644 --- a/src/kinstone.c +++ b/src/kinstone.c @@ -110,7 +110,7 @@ const struct_gUnk_080B3D20 gUnk_080B3D20[] = { { CHECK_ITEM, ITEM_BLUE_SWORD, 4, 1 }, { LOCAL_BANK_3, LV4_HAKA_08_CAP_0, 4, 2 }, { LOCAL_BANK_3, OUBO_KAKERA, 4, 3 }, - { CHECK_KINSTONE, KINSTONE_9, 4, 4 }, + { CHECK_KINSTONE, KINSTONE_SOURCE_FLOW, 4, 4 }, { LOCAL_BANK_0, TATSUMAKI, 4, 5 }, { LOCAL_BANK_2, SORA_YAKATA_ENTER, 4, 6 }, { LOCAL_BANK_2, SORA_CHIEF_TALK, 4, 7 }, diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 42c3b02d..8baf84d3 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -4,6 +4,7 @@ #include "game.h" #include "hitbox.h" #include "item.h" +#include "kinstone.h" #include "npc.h" #include "object.h" #include "save.h" @@ -53,30 +54,30 @@ void NPC4E_DoScreenTransition(Entity* this, ScriptExecutionContext* context) { } // Returns the kinstone id? -u8 sub_0806DA3C(Entity* this) { +u8 NPC4E_GetKinstoneId(Entity* this) { u32 result; switch (this->type) { default: - result = 0; + result = KINSTONE_0; break; case 1: - result = 1; + result = KINSTONE_MYSTERIOUS_CLOUD_TOP_RIGHT; break; case 2: - result = 2; + result = KINSTONE_MYSTERIOUS_CLOUD_BOTTOM_LEFT; break; case 3: - result = 3; + result = KINSTONE_MYSTERIOUS_CLOUD_TOP_LEFT; break; case 4: - result = 4; + result = KINSTONE_MYSTERIOUS_CLOUD_MIDDLE; break; case 5: - result = 5; + result = KINSTONE_MYSTERIOUS_CLOUD_BOTTOM_RIGHT; break; case 11: - result = 9; + result = KINSTONE_SOURCE_FLOW; break; case 6: case 7: @@ -91,13 +92,13 @@ u8 sub_0806DA3C(Entity* this) { // Check whether a kinstone fusion is possible and store the result somewhere in param_2? void sub_0806DAAC(Entity* this, ScriptExecutionContext* context) { - context->condition = CheckKinstoneFused(sub_0806DA3C(this)); + context->condition = CheckKinstoneFused(NPC4E_GetKinstoneId(this)); gActiveScriptInfo.flags |= 1; } // maybe actually execute the kinstone fusion? void sub_0806DAD0(Entity* this) { - sub_08078790(this, sub_0806DA3C(this)); + sub_08078790(this, NPC4E_GetKinstoneId(this)); } void sub_0806DAE8(Entity* this) { From b25f36e736d6e9a5935a2701b669f3bf00270ae5 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:14:29 +0200 Subject: [PATCH 62/86] struct_03003DF0 seems to use struct_03003DF8 --- include/structures.h | 2 +- src/menu/kinstoneMenu.c | 2 +- src/object/cameraTarget.c | 27 ++++++++++++++------------- src/playerUtils.c | 14 +++++++------- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/include/structures.h b/include/structures.h index 8de98b91..49282475 100644 --- a/include/structures.h +++ b/include/structures.h @@ -272,7 +272,7 @@ typedef struct { /*0x01*/ u8 unk_1; /*0x02*/ u8 unk_2; // TODO kinstoneId, sub_0801DFB4 /*0x03*/ u8 unk_3; - /*0x04*/ u8* unk_4; + /*0x04*/ struct_03003DF8* unk_4; /*0x08*/ struct_03003DF8 array[0x20]; } struct_03003DF0; diff --git a/src/menu/kinstoneMenu.c b/src/menu/kinstoneMenu.c index 62621f7e..8fa799bb 100644 --- a/src/menu/kinstoneMenu.c +++ b/src/menu/kinstoneMenu.c @@ -607,7 +607,7 @@ u32 sub_080A4418(u32 param_1, u32 param_2) { void KinstoneMenu_080A4468(void) { gUnk_03003DF0.unk_2 = 0; - gUnk_03003DF0.unk_4[3] = 0; + gUnk_03003DF0.unk_4->unk_3 = 0; NotifyFusersOnFusionDone(gFuseInfo.kinstoneId); RemoveKinstoneFromBag(gKinstoneMenu.unk2a); } diff --git a/src/object/cameraTarget.c b/src/object/cameraTarget.c index 86321cbb..c86735ac 100644 --- a/src/object/cameraTarget.c +++ b/src/object/cameraTarget.c @@ -53,16 +53,17 @@ void CameraTarget(Entity* this) { case 0: case 1: case 2: - if ((gMessage.doTextBox & 0x7f) != 0) { - default: - if (gUnk_03003DF0.unk_4[3] == 50) { - if (CheckKinstoneFused(KINSTONE_32) == 0) { - uVar2 = 0; - break; - } - } - uVar2 = 1; + if ((gMessage.doTextBox & 0x7f) == 0) { + break; } + default: + if (gUnk_03003DF0.unk_4->unk_3 == KINSTONE_32) { + if (CheckKinstoneFused(KINSTONE_32) == 0) { + uVar2 = 0; + break; + } + } + uVar2 = 1; break; } @@ -102,8 +103,8 @@ void CameraTarget_Action1(Entity* this) { if (this->timer) { this->timer--; } else { - if ((*(Entity**)(gUnk_03003DF0.unk_4 + 8) != NULL) && ((u8)(gUnk_03003DF0.unk_4[3] - 1) < 100)) { - this->child = *(Entity**)(gUnk_03003DF0.unk_4 + 8); + if ((gUnk_03003DF0.unk_4->entity != NULL) && ((u8)(gUnk_03003DF0.unk_4->unk_3 - 1) < 100)) { + this->child = gUnk_03003DF0.unk_4->entity; this->interactType = gUnk_03003DF0.unk_3; sub_08083A40(this); } @@ -119,7 +120,7 @@ void CameraTarget_Action2(Entity* this) { const KinstoneWorldEvent* ptr; if ((this->type != 1) && - (((u8)(gUnk_03003DF0.unk_4[3] - 1) >= 100 || (this->child != *(Entity**)(gUnk_03003DF0.unk_4 + 8))))) { + (((u8)(gUnk_03003DF0.unk_4->unk_3 - 1) >= 100 || (this->child != gUnk_03003DF0.unk_4->entity)))) { sub_080838DC(this); } else { this->x = this->child->x; @@ -128,7 +129,7 @@ void CameraTarget_Action2(Entity* this) { if (this->frame == 1) { this->frame = 0; if (this->type == 0) { - bVar2 = gUnk_03003DF0.unk_4[3]; + bVar2 = gUnk_03003DF0.unk_4->unk_3; } else { bVar2 = this->type2; } diff --git a/src/playerUtils.c b/src/playerUtils.c index 30d37295..c8ed16b7 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -658,8 +658,8 @@ bool32 (*const gPlayerChargeActions[])(ChargeState*) = { sub_08078008, sub_08078124, sub_08078140, sub_08078070, sub_080780E0, sub_08078108, }; -const u8 gUnk_0811C000[] = { - 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +const struct_03003DF8 gUnk_0811C000 = { + 0, 255, 0, 0, 0, 0, }; const u8 gUnk_0811C00C[] = { 0, 238, 14, 255, 0, 10, 241, 255, @@ -1088,11 +1088,11 @@ bool32 sub_080782C0(void) { return FALSE; } } - if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && ((u8)(gUnk_03003DF0.unk_4[3] - 1) < 100)) { + if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && ((u8)(gUnk_03003DF0.unk_4->unk_3 - 1) < 100)) { AddKinstoneToBag(0); if (gSave.kinstoneAmounts[0] != 0) { - gUnk_03003DF0.unk_2 = gUnk_03003DF0.unk_4[3]; - *(u8*)(*(int*)(gUnk_03003DF0.unk_4 + 8) + 0x39) = 2; + gUnk_03003DF0.unk_2 = gUnk_03003DF0.unk_4->unk_3; + gUnk_03003DF0.unk_4->entity->interactType = 2; gPlayerState.queued_action = PLAYER_08070E9C; } else { CreateEzloHint(TEXT_INDEX(TEXT_EZLO, 0x65), 0); @@ -1103,7 +1103,7 @@ bool32 sub_080782C0(void) { if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0) { return FALSE; } - switch (gUnk_03003DF0.unk_4[1]) { + switch (gUnk_03003DF0.unk_4->unk_1) { default: case 0: return TRUE; @@ -1133,7 +1133,7 @@ bool32 sub_080782C0(void) { void sub_080784C8(void) { MemClear(&gUnk_03003DF0, sizeof(gUnk_03003DF0)); - gUnk_03003DF0.unk_4 = (u8*)gUnk_0811C000; + gUnk_03003DF0.unk_4 = (struct_03003DF8*)&gUnk_0811C000; } ASM_FUNC("asm/non_matching/playerUtils/sub_080784E4.inc", struct_03003DF8* sub_080784E4(void)) From 04f4272b14eaa9401f37af791065e81b3bdc222d Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Fri, 28 Apr 2023 20:20:29 +0200 Subject: [PATCH 63/86] Document structs for interacting with entities --- asm/non_matching/playerUtils/sub_080784E4.inc | 32 +++++----- include/structures.h | 30 ++++----- linker.ld | 4 +- src/common.c | 6 +- src/interrupts.c | 2 +- src/menu/kinstoneMenu.c | 4 +- src/object/bossDoor.c | 4 +- src/object/cameraTarget.c | 12 ++-- src/object/itemForSale.c | 2 +- src/object/lockedDoor.c | 4 +- src/playerUtils.c | 61 ++++++++++--------- 11 files changed, 82 insertions(+), 79 deletions(-) diff --git a/asm/non_matching/playerUtils/sub_080784E4.inc b/asm/non_matching/playerUtils/sub_080784E4.inc index 40c47409..14b6afbb 100644 --- a/asm/non_matching/playerUtils/sub_080784E4.inc +++ b/asm/non_matching/playerUtils/sub_080784E4.inc @@ -4,7 +4,7 @@ mov r6, sb mov r5, r8 push {r5, r6, r7} - ldr r0, _080784FC @ =gUnk_03003DF0 + ldr r0, _080784FC @ =gPossibleInteraction ldrb r1, [r0] mov r8, r0 cmp r1, #0 @@ -12,7 +12,7 @@ ldr r0, [r0, #4] b _0807876A .align 2, 0 -_080784FC: .4byte gUnk_03003DF0 +_080784FC: .4byte gPossibleInteraction _08078500: ldr r2, _08078528 @ =gPlayerState adds r0, r2, #0 @@ -74,14 +74,14 @@ _08078598: movs r0, #0xff mov r1, r8 strb r0, [r1, #3] - ldr r0, _080785AC @ =gUnk_0811C000 + ldr r0, _080785AC @ =gNoInteraction str r0, [r1, #4] movs r1, #1 mov r2, r8 strb r1, [r2] b _0807876A .align 2, 0 -_080785AC: .4byte gUnk_0811C000 +_080785AC: .4byte gNoInteraction _080785B0: ldr r0, [r2, #0x30] movs r1, #0x80 @@ -104,21 +104,21 @@ _080785D2: ldrb r0, [r3, #0x14] movs r1, #6 ands r1, r0 - ldr r0, _080785E8 @ =gUnk_0811C00C + ldr r0, _080785E8 @ =gPlayerInteractHitboxOffsetNormal adds r2, r1, r0 - ldr r5, _080785EC @ =gUnk_03003DF0 + ldr r5, _080785EC @ =gPossibleInteraction mov r8, r5 b _080785FE .align 2, 0 _080785E4: .4byte gPlayerEntity -_080785E8: .4byte gUnk_0811C00C -_080785EC: .4byte gUnk_03003DF0 +_080785E8: .4byte gPlayerInteractHitboxOffsetNormal +_080785EC: .4byte gPossibleInteraction _080785F0: ldr r3, _08078624 @ =gPlayerEntity ldrb r0, [r3, #0x14] movs r1, #6 ands r1, r0 - ldr r0, _08078628 @ =gUnk_0811C014 + ldr r0, _08078628 @ =gPlayerInteractHitboxOffsetMinish adds r2, r1, r0 movs r7, #0 _080785FE: @@ -138,12 +138,12 @@ _080785FE: adds r1, r1, r0 mov sb, r1 movs r6, #0 - ldr r5, _0807862C @ =gUnk_03003DF8 + ldr r5, _0807862C @ =gInteractableObjects b _08078724 .align 2, 0 _08078624: .4byte gPlayerEntity -_08078628: .4byte gUnk_0811C014 -_0807862C: .4byte gUnk_03003DF8 +_08078628: .4byte gPlayerInteractHitboxOffsetMinish +_0807862C: .4byte gInteractableObjects _08078630: ldrb r1, [r5] movs r3, #1 @@ -264,7 +264,7 @@ _08078714: lsls r0, r6, #1 adds r0, r0, r6 lsls r0, r0, #2 - ldr r3, _08078754 @ =gUnk_03003DF8 + ldr r3, _08078754 @ =gInteractableObjects adds r5, r0, r3 _08078724: ldr r2, [r5, #8] @@ -292,12 +292,12 @@ _0807873A: str r0, [r5, #4] b _08078762 .align 2, 0 -_08078754: .4byte gUnk_03003DF8 +_08078754: .4byte gInteractableObjects _08078758: movs r0, #0xff mov r1, r8 strb r0, [r1, #3] - ldr r0, _08078774 @ =gUnk_0811C000 + ldr r0, _08078774 @ =gNoInteraction str r0, [r1, #4] _08078762: movs r0, #1 @@ -311,5 +311,5 @@ _0807876A: mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 -_08078774: .4byte gUnk_0811C000 +_08078774: .4byte gNoInteraction .syntax divided diff --git a/include/structures.h b/include/structures.h index 49282475..9a50b897 100644 --- a/include/structures.h +++ b/include/structures.h @@ -259,26 +259,26 @@ typedef struct { } struct_020227E8; typedef struct { - /*0x00*/ u8 unk_0; - /*0x01*/ u8 unk_1; - /*0x02*/ u8 unk_2; - /*0x03*/ u8 unk_3; - /*0x04*/ const u8* unk_4; + /*0x00*/ u8 ignoreLayer; /* if bit 0 set, skip layer check for collision */ + /*0x01*/ u8 interactCondition; + /*0x02*/ u8 interactDirections; /* lower 4 bits determine Link's allowed facing directions to interact, 0 to allow (0000WSEN) */ + /*0x03*/ u8 kinstoneId; + /*0x04*/ const u8* customHitbox; /* if set, array contains x, y, width and height */ /*0x08*/ Entity* entity; -} struct_03003DF8; +} InteractableObject; typedef struct { - /*0x00*/ u8 unk_0; - /*0x01*/ u8 unk_1; - /*0x02*/ u8 unk_2; // TODO kinstoneId, sub_0801DFB4 - /*0x03*/ u8 unk_3; - /*0x04*/ struct_03003DF8* unk_4; - /*0x08*/ struct_03003DF8 array[0x20]; -} struct_03003DF0; + /*0x00*/ u8 isUpdated; + /*0x01*/ u8 unused; + /*0x02*/ u8 kinstoneId; + /*0x03*/ u8 currentIndex; /* index of currentObject in canditate list, or 0xFF */ + /*0x04*/ InteractableObject* currentObject; + /*0x08*/ InteractableObject candidates[0x20]; /* contains the loaded NPCs, key doors, windcrests and other objects */ +} PossibleInteraction; -static_assert(sizeof(struct_03003DF0) == 0x188); +static_assert(sizeof(PossibleInteraction) == 0x188); -extern struct_03003DF0 gUnk_03003DF0; +extern PossibleInteraction gPossibleInteraction; typedef struct { u8 numTiles; diff --git a/linker.ld b/linker.ld index 17221aa0..479e7328 100644 --- a/linker.ld +++ b/linker.ld @@ -143,8 +143,8 @@ SECTIONS { . = 0x00003DD0; gUpdateContext = .; . = 0x00003DE0; gUnk_03003DE0 = .; . = 0x00003DE4; gUnk_03003DE4 = .; - . = 0x00003DF0; gUnk_03003DF0 = .; - . = 0x00003DF8; gUnk_03003DF8 = .; + . = 0x00003DF0; gPossibleInteraction = .; + . = 0x00003DF8; gInteractableObjects = .; . = 0x00003F80; gPlayerState = .; . = 0x00004030; gDiggingCaveEntranceTransition = .; . = 0x00004040; gPlayerClones = .; diff --git a/src/common.c b/src/common.c index d55dbf54..24dba48d 100644 --- a/src/common.c +++ b/src/common.c @@ -624,7 +624,7 @@ void sub_0801DFB4(Entity* entity, u32 textIndex, u32 a3, u32 a4) { gFuseInfo._8 = a3; gFuseInfo._a = a4; gFuseInfo.ent = entity; - gFuseInfo.kinstoneId = gUnk_03003DF0.unk_2; + gFuseInfo.kinstoneId = gPossibleInteraction.kinstoneId; if (entity != NULL) { gFuseInfo.prevUpdatePriority = entity->updatePriority; entity->updatePriority = 2; @@ -845,8 +845,8 @@ void NotifyFusersOnFusionDone(u32 kinstoneId) { gSave.fuserOffers[tmp] = 0xf2; } for (index = 0; index < 0x20; index++) { - if (kinstoneId == gUnk_03003DF0.array[index].unk_3) { - gUnk_03003DF0.array[index].unk_3 = 0xf1; + if (kinstoneId == gPossibleInteraction.candidates[index].kinstoneId) { + gPossibleInteraction.candidates[index].kinstoneId = 0xf1; } } } diff --git a/src/interrupts.c b/src/interrupts.c index 33a7d5e7..63abe0ea 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -240,7 +240,7 @@ static void HandlePlayerLife(Entity* this) { if (sub_08079B24() == 0) sub_08079708(this); - gUnk_03003DF0.unk_0 = 0; + gPossibleInteraction.isUpdated = 0; if (gPlayerState.field_0x27[0] != 0) gPlayerState.field_0x27[0]--; diff --git a/src/menu/kinstoneMenu.c b/src/menu/kinstoneMenu.c index 8fa799bb..97d49044 100644 --- a/src/menu/kinstoneMenu.c +++ b/src/menu/kinstoneMenu.c @@ -606,8 +606,8 @@ u32 sub_080A4418(u32 param_1, u32 param_2) { } void KinstoneMenu_080A4468(void) { - gUnk_03003DF0.unk_2 = 0; - gUnk_03003DF0.unk_4->unk_3 = 0; + gPossibleInteraction.kinstoneId = 0; + gPossibleInteraction.currentObject->kinstoneId = 0; NotifyFusersOnFusionDone(gFuseInfo.kinstoneId); RemoveKinstoneFromBag(gKinstoneMenu.unk2a); } diff --git a/src/object/bossDoor.c b/src/object/bossDoor.c index 4f9a5220..62ce4aeb 100644 --- a/src/object/bossDoor.c +++ b/src/object/bossDoor.c @@ -27,7 +27,7 @@ typedef struct { } BossDoorEntity; extern bool32 gUnk_02036BB8; -extern const u8 gUnk_0811F740[]; +extern const u8 gLockedDoorInteractDirections[]; void sub_0808C500(BossDoorEntity*); void sub_0808C4BC(BossDoorEntity*); @@ -70,7 +70,7 @@ void BossDoor_Init(BossDoorEntity* this) { super->spriteSettings.draw = 1; sub_0808C500(this); sub_08078800(super); - sub_08078850(super, 0, gUnk_0811F740[this->unk_76], 0); + sub_08078850(super, 0, gLockedDoorInteractDirections[this->unk_76], 0); break; case 1: super->action = 4; diff --git a/src/object/cameraTarget.c b/src/object/cameraTarget.c index c86735ac..88831f94 100644 --- a/src/object/cameraTarget.c +++ b/src/object/cameraTarget.c @@ -57,7 +57,7 @@ void CameraTarget(Entity* this) { break; } default: - if (gUnk_03003DF0.unk_4->unk_3 == KINSTONE_32) { + if (gPossibleInteraction.currentObject->kinstoneId == KINSTONE_32) { if (CheckKinstoneFused(KINSTONE_32) == 0) { uVar2 = 0; break; @@ -103,9 +103,9 @@ void CameraTarget_Action1(Entity* this) { if (this->timer) { this->timer--; } else { - if ((gUnk_03003DF0.unk_4->entity != NULL) && ((u8)(gUnk_03003DF0.unk_4->unk_3 - 1) < 100)) { - this->child = gUnk_03003DF0.unk_4->entity; - this->interactType = gUnk_03003DF0.unk_3; + if ((gPossibleInteraction.currentObject->entity != NULL) && ((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) { + this->child = gPossibleInteraction.currentObject->entity; + this->interactType = gPossibleInteraction.currentIndex; sub_08083A40(this); } } @@ -120,7 +120,7 @@ void CameraTarget_Action2(Entity* this) { const KinstoneWorldEvent* ptr; if ((this->type != 1) && - (((u8)(gUnk_03003DF0.unk_4->unk_3 - 1) >= 100 || (this->child != gUnk_03003DF0.unk_4->entity)))) { + (((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) >= 100 || (this->child != gPossibleInteraction.currentObject->entity)))) { sub_080838DC(this); } else { this->x = this->child->x; @@ -129,7 +129,7 @@ void CameraTarget_Action2(Entity* this) { if (this->frame == 1) { this->frame = 0; if (this->type == 0) { - bVar2 = gUnk_03003DF0.unk_4->unk_3; + bVar2 = gPossibleInteraction.currentObject->kinstoneId; } else { bVar2 = this->type2; } diff --git a/src/object/itemForSale.c b/src/object/itemForSale.c index e4629fa1..342ba851 100644 --- a/src/object/itemForSale.c +++ b/src/object/itemForSale.c @@ -160,7 +160,7 @@ void sub_080819B4(ItemForSaleEntity* this) { void sub_08081A5C(ItemForSaleEntity* this) { u32 tmp = sub_080787D8(super); if (super->timer == 1) { - gUnk_03003DF0.array[tmp].unk_2 = 0; + gPossibleInteraction.candidates[tmp].interactDirections = 0; } } diff --git a/src/object/lockedDoor.c b/src/object/lockedDoor.c index 1b704f50..91cc9ea7 100644 --- a/src/object/lockedDoor.c +++ b/src/object/lockedDoor.c @@ -81,7 +81,7 @@ const struct_0811F730 gUnk_0811F730[] = { { { 8, 8 }, { 8, -8 } }, }; -const u8 gUnk_0811F740[] = { +const u8 gLockedDoorInteractDirections[] = { 0xBE, 0x7D, 0xEB, @@ -134,7 +134,7 @@ void LockedDoor_Init(Entity* this) { } else { this->action = 8; sub_080787CC(this); - sub_08078850(this, 0, gUnk_0811F740[this->field_0x7c.BYTES.byte2], 0); + sub_08078850(this, 0, gLockedDoorInteractDirections[this->field_0x7c.BYTES.byte2], 0); } } else { DeleteThisEntity(); diff --git a/src/playerUtils.c b/src/playerUtils.c index c8ed16b7..f6745116 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -73,7 +73,7 @@ bool32 sub_0807BF88(u32, u32, RoomResInfo*); void sub_0807BFD0(void); void ForceSetPlayerState(u32 framestate); -struct_03003DF8* sub_080784E4(void); +InteractableObject* sub_080784E4(void); u32 sub_08079778(void); u32 GetPlayerTilePos(void); @@ -658,14 +658,17 @@ bool32 (*const gPlayerChargeActions[])(ChargeState*) = { sub_08078008, sub_08078124, sub_08078140, sub_08078070, sub_080780E0, sub_08078108, }; -const struct_03003DF8 gUnk_0811C000 = { - 0, 255, 0, 0, 0, 0, +const InteractableObject gNoInteraction = { + 0, 0xFF, 0, 0, 0, 0, }; -const u8 gUnk_0811C00C[] = { - 0, 238, 14, 255, 0, 10, 241, 255, + +// for shifting the hitbox in which entities can be interacted with in Link's facing direction +// from left to right: north, east, south and west in x, y pairs +const s8 gPlayerInteractHitboxOffsetNormal[] = { + 0, -18, 14, -1, 0, 10, -15, -1, }; -const u8 gUnk_0811C014[] = { - 0, 242, 10, 255, 0, 6, 245, 255, +const s8 gPlayerInteractHitboxOffsetMinish[] = { + 0, -14, 10, -1, 0, 6, -11, -1, }; const u8 gUnk_0811C01C[] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 3, 4, 3, 0, 1, 2, 0, 3, 3, 4, 3, 10, 15, 0, 0, 0, @@ -971,7 +974,7 @@ void ForceSetPlayerState(u32 framestate) { void sub_08078180(void) { u8 uVar1; u8 uVar3; - struct_03003DF8* ptr; + InteractableObject* ptr; if (gUnk_0200AF00.unk_2f != 0) return; @@ -992,7 +995,7 @@ void sub_08078180(void) { ptr = sub_080784E4(); if (ptr->entity->interactType == 0) { - switch (ptr->unk_1) { + switch (ptr->interactCondition) { case 1: case 7: uVar1 = 7; @@ -1088,11 +1091,11 @@ bool32 sub_080782C0(void) { return FALSE; } } - if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && ((u8)(gUnk_03003DF0.unk_4->unk_3 - 1) < 100)) { + if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && ((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) { AddKinstoneToBag(0); if (gSave.kinstoneAmounts[0] != 0) { - gUnk_03003DF0.unk_2 = gUnk_03003DF0.unk_4->unk_3; - gUnk_03003DF0.unk_4->entity->interactType = 2; + gPossibleInteraction.kinstoneId = gPossibleInteraction.currentObject->kinstoneId; + gPossibleInteraction.currentObject->entity->interactType = 2; gPlayerState.queued_action = PLAYER_08070E9C; } else { CreateEzloHint(TEXT_INDEX(TEXT_EZLO, 0x65), 0); @@ -1103,7 +1106,7 @@ bool32 sub_080782C0(void) { if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0) { return FALSE; } - switch (gUnk_03003DF0.unk_4->unk_1) { + switch (gPossibleInteraction.currentObject->interactCondition) { default: case 0: return TRUE; @@ -1117,7 +1120,7 @@ bool32 sub_080782C0(void) { case 5: case 7: entity->interactType = 1; - gUnk_03003DF0.unk_2 = 0; + gPossibleInteraction.kinstoneId = 0; return TRUE; case 8: if (gRoomVars.shopItemType == 0) { @@ -1132,11 +1135,11 @@ bool32 sub_080782C0(void) { } void sub_080784C8(void) { - MemClear(&gUnk_03003DF0, sizeof(gUnk_03003DF0)); - gUnk_03003DF0.unk_4 = (struct_03003DF8*)&gUnk_0811C000; + MemClear(&gPossibleInteraction, sizeof(gPossibleInteraction)); + gPossibleInteraction.currentObject = (InteractableObject*)&gNoInteraction; } -ASM_FUNC("asm/non_matching/playerUtils/sub_080784E4.inc", struct_03003DF8* sub_080784E4(void)) +ASM_FUNC("asm/non_matching/playerUtils/sub_080784E4.inc", InteractableObject* sub_080784E4(void)) void sub_08078778(Entity* ent) { sub_0807887C(ent, 1, 0); @@ -1175,7 +1178,7 @@ s32 sub_080787D8(Entity* ent) { iVar1 = sub_0807887C(ent, 8, 0); if (iVar1 >= 0) { - gUnk_03003DF0.array[iVar1].unk_2 = 0xbe; + gPossibleInteraction.candidates[iVar1].interactDirections = 0xbe; } return iVar1; } @@ -1185,7 +1188,7 @@ s32 sub_08078800(Entity* ent) { iVar1 = sub_0807887C(ent, 6, 0); if (iVar1 >= 0) { - gUnk_03003DF0.array[iVar1].unk_2 = 0xbe; + gPossibleInteraction.candidates[iVar1].interactDirections = 0xbe; } return iVar1; } @@ -1195,7 +1198,7 @@ s32 sub_08078828(Entity* ent) { iVar1 = sub_0807887C(ent, 3, 0); if (iVar1 >= 0) { - gUnk_03003DF0.array[iVar1].unk_2 = 0xbe; + gPossibleInteraction.candidates[iVar1].interactDirections = 0xbe; } return iVar1; } @@ -1205,9 +1208,9 @@ void sub_08078850(Entity* arg0, u32 arg1, u32 arg2, const void* arg3) { iVar1 = sub_08078904(arg0); if (iVar1 >= 0) { - gUnk_03003DF0.array[iVar1].unk_0 = arg1; - gUnk_03003DF0.array[iVar1].unk_2 = arg2; - gUnk_03003DF0.array[iVar1].unk_4 = arg3; + gPossibleInteraction.candidates[iVar1].ignoreLayer = arg1; + gPossibleInteraction.candidates[iVar1].interactDirections = arg2; + gPossibleInteraction.candidates[iVar1].customHitbox = arg3; } } @@ -1219,9 +1222,9 @@ s32 sub_0807887C(Entity* entity, u32 param_2, u32 param_3) { index = sub_08078904(0); } if (index >= 0) { - gUnk_03003DF0.array[index].entity = entity; - gUnk_03003DF0.array[index].unk_1 = param_2; - gUnk_03003DF0.array[index].unk_3 = param_3; + gPossibleInteraction.candidates[index].entity = entity; + gPossibleInteraction.candidates[index].interactCondition = param_2; + gPossibleInteraction.candidates[index].kinstoneId = param_3; } if (param_3 != 0) { Entity* entity = FindEntityByID(OBJECT, CAMERA_TARGET, 6); @@ -1236,7 +1239,7 @@ s32 sub_0807887C(Entity* entity, u32 param_2, u32 param_3) { void sub_080788E0(Entity* entity) { s32 index = sub_08078904(entity); if (index > -1) { - MemClear(&gUnk_03003DF0.array[index], 0xc); + MemClear(&gPossibleInteraction.candidates[index], sizeof(InteractableObject)); } } @@ -1244,7 +1247,7 @@ void sub_080788E0(Entity* entity) { s32 sub_08078904(Entity* entity) { u32 index; for (index = 0; index < 0x20; index++) { - if (entity == gUnk_03003DF0.array[index].entity) { + if (entity == gPossibleInteraction.candidates[index].entity) { return index; } } @@ -1376,7 +1379,7 @@ void ClearPlayerState(void) { gPlayerState.spriteOffsetY = 0; gPlayerState.field_0x3c = 0; MemFill32(0xffffffff, gPlayerState.path_memory, 0x40); - MemClear(&gUnk_03003DF0, sizeof(gUnk_03003DF0)); + MemClear(&gPossibleInteraction, sizeof(gPossibleInteraction)); } void UpdateCarriedObject(void) { From d5afe1f2dd8721791779bfa790eaefd7c5bc42ab Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Fri, 28 Apr 2023 23:36:33 +0200 Subject: [PATCH 64/86] Name a lot of functions about interactable objects --- .../cloudTops/script_GregalHealthy.inc | 2 +- .../cloudTops/script_Npc4EFirstCloud.inc | 2 +- data/scripts/cloudTops/script_Siroc.inc | 2 +- .../cloudTops/script_WindTribespeople1.inc | 2 +- .../cloudTops/script_WindTribespeople2.inc | 2 +- .../cloudTops/script_WindTribespeople3.inc | 2 +- .../cloudTops/script_WindTribespeople4.inc | 2 +- .../cloudTops/script_WindTribespeople5.inc | 2 +- .../cloudTops/script_WindTribespeople7.inc | 2 +- .../script_HurdyGurdyManFirstKinstone.inc | 2 +- .../dhc/script_MinishterPothoStone.inc | 2 +- data/scripts/dhc/script_MinisterPothoCell.inc | 2 +- .../scripts/graveyard/script_DampeInside2.inc | 2 +- data/scripts/graveyard/script_DampeOuside.inc | 2 +- .../graveyard/script_GhostBrothers.inc | 2 +- .../hyruleCastle/script_KingDaltus.inc | 2 +- .../hyruleCastle/script_MinisterPotho.inc | 2 +- data/scripts/hyruleTown/script_Anju.inc | 2 +- data/scripts/hyruleTown/script_Brocco.inc | 2 +- data/scripts/hyruleTown/script_Carpenter.inc | 2 +- data/scripts/hyruleTown/script_CatPerson.inc | 2 +- .../script_CatPersonTalkingToDogPerson.inc | 2 +- data/scripts/hyruleTown/script_Din.inc | 2 +- data/scripts/hyruleTown/script_Din2.inc | 2 +- data/scripts/hyruleTown/script_DinAlone.inc | 2 +- data/scripts/hyruleTown/script_DinMovedIn.inc | 2 +- .../hyruleTown/script_DogPersonInCatHouse.inc | 4 +- data/scripts/hyruleTown/script_Farore.inc | 2 +- data/scripts/hyruleTown/script_Farore2.inc | 2 +- .../scripts/hyruleTown/script_FaroreAlone.inc | 2 +- .../hyruleTown/script_FaroreMovedIn.inc | 2 +- .../hyruleTown/script_ForestMinish11.inc | 2 +- .../hyruleTown/script_HurdyGurdyMan.inc | 2 +- data/scripts/hyruleTown/script_Kid1.inc | 2 +- data/scripts/hyruleTown/script_Kid2.inc | 2 +- data/scripts/hyruleTown/script_Kid4.inc | 2 +- data/scripts/hyruleTown/script_Kid5.inc | 2 +- data/scripts/hyruleTown/script_KidInn.inc | 2 +- .../hyruleTown/script_LibraryVisitor.inc | 2 +- data/scripts/hyruleTown/script_Mama.inc | 2 +- data/scripts/hyruleTown/script_Mayor.inc | 2 +- .../scripts/hyruleTown/script_MutohInMill.inc | 2 +- data/scripts/hyruleTown/script_Nayru.inc | 2 +- data/scripts/hyruleTown/script_Nayru2.inc | 2 +- data/scripts/hyruleTown/script_NayruAlone.inc | 2 +- .../hyruleTown/script_NayruMovedIn.inc | 2 +- .../hyruleTown/script_OldLadyCatHouse1.inc | 2 +- .../hyruleTown/script_OldLadyCatHouse2.inc | 2 +- data/scripts/hyruleTown/script_Phonograph.inc | 2 +- data/scripts/hyruleTown/script_Pina.inc | 2 +- data/scripts/hyruleTown/script_Postman.inc | 2 +- data/scripts/hyruleTown/script_Rem.inc | 2 +- .../hyruleTown/script_SittingPerson.inc | 2 +- .../hyruleTown/script_SmallTownMinish.inc | 2 +- data/scripts/hyruleTown/script_Sturgeon.inc | 2 +- data/scripts/hyruleTown/script_Teachers.inc | 2 +- .../scripts/hyruleTown/script_TownMinish1.inc | 2 +- .../hyruleTown/script_Townsperson1.inc | 2 +- .../hyruleTown/script_Townsperson2.inc | 2 +- .../script_TownspersonInDogHouse.inc | 2 +- .../script_WindTribespeopleVisitor.inc | 2 +- .../lakeHylia/script_ForestMinish3.inc | 2 +- .../lonLonRanch/script_GoronPunching.inc | 2 +- .../scripts/minishWoods/script_BombMinish.inc | 2 +- .../script_CutsceneOrchestratorPotionBlue.inc | 2 +- .../script_CutsceneOrchestratorPotionRed.inc | 2 +- .../minishWoods/script_ForestMinish10.inc | 2 +- .../minishWoods/script_ForestMinish4.inc | 2 +- data/scripts/mtCrenel/script_CrenelHermit.inc | 2 +- data/scripts/mtCrenel/script_MelariInRoom.inc | 2 +- .../mtCrenel/script_MountainMinish1.inc | 2 +- .../mtCrenel/script_MountainMinish2.inc | 2 +- .../mtCrenel/script_MountainMinish4.inc | 2 +- .../mtCrenel/script_MountainMinish5.inc | 4 +- .../script_CarpenterOutsideTown.inc | 2 +- .../script_MutohOutsideTown.inc | 2 +- data/scripts/npc/script_Farmer.inc | 2 +- data/scripts/npc/script_MysteriousWall.inc | 2 +- data/scripts/npc/script_TingleSiblings.inc | 2 +- data/scripts/npc/script_Windcrest.inc | 4 +- .../script_CutsceneMiscObjectTextBoard.inc | 2 +- .../script_Npc4ELookAtPictureAgain.inc | 2 +- .../sanctuary/script_Npc4EPedestal.inc | 2 +- .../sanctuary/script_Npc4ESecondSanctuary.inc | 2 +- .../sanctuary/script_Npc4EThirdSanctuary.inc | 2 +- .../southHyruleField/script_ForestMinish2.inc | 2 +- .../script_SmithAtLinksHouse.inc | 4 +- data/scripts/unused/script_08013D04.inc | 2 +- data/scripts/unused/script_08013D44.inc | 2 +- data/scripts/unused/script_08013D84.inc | 2 +- data/scripts/unused/script_08013DC4.inc | 2 +- .../westernWood/script_ForestMinish1.inc | 2 +- .../westernWood/script_PercyInside.inc | 2 +- .../westernWood/script_PercyOutside.inc | 2 +- .../script_Npc4EWindRuinsTextBoard.inc | 2 +- include/npc.h | 6 +- include/object.h | 4 +- include/player.h | 18 ++-- include/structures.h | 2 +- src/enemy/businessScrub.c | 2 +- src/entity.c | 2 +- src/gameUtils.c | 2 +- src/npc/anju.c | 4 +- src/npc/beedle.c | 8 +- src/npc/bladeBrothers.c | 4 +- src/npc/brocco.c | 6 +- src/npc/carpenter.c | 4 +- src/npc/cat.c | 8 +- src/npc/cow.c | 4 +- src/npc/cucco.c | 2 +- src/npc/cuccoChick.c | 2 +- src/npc/dampe.c | 4 +- src/npc/din.c | 4 +- src/npc/dog.c | 6 +- src/npc/drLeft.c | 2 +- src/npc/epona.c | 4 +- src/npc/farmers.c | 4 +- src/npc/farore.c | 4 +- src/npc/festari.c | 2 +- src/npc/forestMinish.c | 4 +- src/npc/gentari.c | 2 +- src/npc/ghostBrothers.c | 6 +- src/npc/gina.c | 2 +- src/npc/gorman.c | 2 +- src/npc/goron.c | 8 +- src/npc/gregal.c | 8 +- src/npc/guard.c | 2 +- src/npc/hurdyGurdyMan.c | 4 +- src/npc/kid.c | 8 +- src/npc/kingDaltus.c | 6 +- src/npc/librari.c | 2 +- src/npc/malon.c | 2 +- src/npc/mama.c | 4 +- src/npc/mayorHagen.c | 6 +- src/npc/melari.c | 6 +- src/npc/ministerPotho.c | 6 +- src/npc/mountainMinish.c | 6 +- src/npc/mutoh.c | 4 +- src/npc/nayru.c | 4 +- src/npc/npc23.c | 4 +- src/npc/npc26.c | 2 +- src/npc/npc4E.c | 7 +- src/npc/npc5.c | 2 +- src/npc/npc9.c | 2 +- src/npc/percy.c | 6 +- src/npc/picolyteBottle.c | 6 +- src/npc/pina.c | 6 +- src/npc/postman.c | 12 +-- src/npc/rem.c | 6 +- src/npc/sittingPerson.c | 4 +- src/npc/smallTownMinish.c | 2 +- src/npc/smith.c | 8 +- src/npc/stamp.c | 2 +- src/npc/stockwell.c | 4 +- src/npc/sturgeon.c | 8 +- src/npc/talon.c | 4 +- src/npc/teachers.c | 4 +- src/npc/tingleSiblings.c | 4 +- src/npc/townMinish.c | 6 +- src/npc/townsperson.c | 12 +-- src/npc/windTribespeople.c | 4 +- src/npc/zeldaFollower.c | 2 +- src/object/bossDoor.c | 6 +- src/object/chestSpawner.c | 6 +- src/object/cutsceneMiscObject.c | 12 +-- src/object/figurineDevice.c | 6 +- src/object/itemForSale.c | 12 +-- src/object/lockedDoor.c | 4 +- src/object/objectA.c | 2 +- src/object/specialChest.c | 4 +- src/object/swordsmanNewsletter.c | 4 +- src/object/windcrest.c | 4 +- src/playerUtils.c | 97 ++++++++++--------- src/script.c | 44 ++++----- 174 files changed, 359 insertions(+), 357 deletions(-) diff --git a/data/scripts/cloudTops/script_GregalHealthy.inc b/data/scripts/cloudTops/script_GregalHealthy.inc index cbd342aa..10e0f160 100644 --- a/data/scripts/cloudTops/script_GregalHealthy.inc +++ b/data/scripts/cloudTops/script_GregalHealthy.inc @@ -1,7 +1,7 @@ @ Cloud Tops Gregal healthy SCRIPT_START script_GregalHealthy BeginBlock - Call sub_0806CD58 + Call Gregal_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 SetAnimation 0x0006 diff --git a/data/scripts/cloudTops/script_Npc4EFirstCloud.inc b/data/scripts/cloudTops/script_Npc4EFirstCloud.inc index 126ad33e..b5245520 100644 --- a/data/scripts/cloudTops/script_Npc4EFirstCloud.inc +++ b/data/scripts/cloudTops/script_Npc4EFirstCloud.inc @@ -7,7 +7,7 @@ SCRIPT_START script_Npc4EFirstCloud DoPostScriptAction 0x0008 Call sub_0806DAAC JumpIf script_0800D6AE - Call sub_0806DAD0 + Call NPC4E_MakeFuserInteractable CallWithArg sub_0806DA04, 0x00000002 EndBlock script_0800D636: diff --git a/data/scripts/cloudTops/script_Siroc.inc b/data/scripts/cloudTops/script_Siroc.inc index ba0c3e98..55efc778 100644 --- a/data/scripts/cloudTops/script_Siroc.inc +++ b/data/scripts/cloudTops/script_Siroc.inc @@ -1,7 +1,7 @@ @ Cloud Tops Windtribespeople Leader Siroc SCRIPT_START script_Siroc BeginBlock - Call sub_0806C870 + Call WindTribespeople_MakeInteractable DoPostScriptAction 0x000a EndBlock script_08014AD2: diff --git a/data/scripts/cloudTops/script_WindTribespeople1.inc b/data/scripts/cloudTops/script_WindTribespeople1.inc index 4b962633..e39b027f 100644 --- a/data/scripts/cloudTops/script_WindTribespeople1.inc +++ b/data/scripts/cloudTops/script_WindTribespeople1.inc @@ -1,7 +1,7 @@ @ Cloud Tops WindTribespeople blocking exit SCRIPT_START script_WindTribespeople1 BeginBlock - Call sub_0806C870 + Call WindTribespeople_MakeInteractable DoPostScriptAction 0x000a CheckGlobalFlag WARP_EVENT_END JumpIf script_08014976 diff --git a/data/scripts/cloudTops/script_WindTribespeople2.inc b/data/scripts/cloudTops/script_WindTribespeople2.inc index 37a99ee1..3eb9d71b 100644 --- a/data/scripts/cloudTops/script_WindTribespeople2.inc +++ b/data/scripts/cloudTops/script_WindTribespeople2.inc @@ -1,7 +1,7 @@ @ Cloud Top Windtribespeople woman on first floor SCRIPT_START script_WindTribespeople2 BeginBlock - Call sub_0806C870 + Call WindTribespeople_MakeInteractable DoPostScriptAction 0x000a CheckGlobalFlag WARP_EVENT_END JumpIfNot script_080149C6 diff --git a/data/scripts/cloudTops/script_WindTribespeople3.inc b/data/scripts/cloudTops/script_WindTribespeople3.inc index 84c60935..ba5b01cc 100644 --- a/data/scripts/cloudTops/script_WindTribespeople3.inc +++ b/data/scripts/cloudTops/script_WindTribespeople3.inc @@ -2,7 +2,7 @@ SCRIPT_START script_WindTribespeople3 BeginBlock SetEntitySpeed 0x0080 - Call sub_0806C870 + Call WindTribespeople_MakeInteractable DoPostScriptAction 0x000a EndBlock script_080149DE: diff --git a/data/scripts/cloudTops/script_WindTribespeople4.inc b/data/scripts/cloudTops/script_WindTribespeople4.inc index ba6fb854..33f31fe1 100644 --- a/data/scripts/cloudTops/script_WindTribespeople4.inc +++ b/data/scripts/cloudTops/script_WindTribespeople4.inc @@ -1,7 +1,7 @@ @ Cloud Tops Windtribespeople blocking way up SCRIPT_START script_WindTribespeople4 BeginBlock - Call sub_0806C870 + Call WindTribespeople_MakeInteractable DoPostScriptAction 0x000a EndBlock script_08014A36: diff --git a/data/scripts/cloudTops/script_WindTribespeople5.inc b/data/scripts/cloudTops/script_WindTribespeople5.inc index 698f9bb2..cb93bd49 100644 --- a/data/scripts/cloudTops/script_WindTribespeople5.inc +++ b/data/scripts/cloudTops/script_WindTribespeople5.inc @@ -1,7 +1,7 @@ @ Cloud Tops Windtribespeople at the bed SCRIPT_START script_WindTribespeople5 BeginBlock - Call sub_0806C870 + Call WindTribespeople_MakeInteractable DoPostScriptAction 0x000a EndBlock script_08014A62: diff --git a/data/scripts/cloudTops/script_WindTribespeople7.inc b/data/scripts/cloudTops/script_WindTribespeople7.inc index 36fc4fed..eb33c128 100644 --- a/data/scripts/cloudTops/script_WindTribespeople7.inc +++ b/data/scripts/cloudTops/script_WindTribespeople7.inc @@ -3,7 +3,7 @@ SCRIPT_START script_WindTribespeople7 BeginBlock CheckGlobalFlag KUMOTATSUMAKI JumpIf script_08014CD4 - Call sub_0806C870 + Call WindTribespeople_MakeInteractable DoPostScriptAction 0x000a DoPostScriptAction 0x0000 EndBlock diff --git a/data/scripts/cutscene/kinstones/script_HurdyGurdyManFirstKinstone.inc b/data/scripts/cutscene/kinstones/script_HurdyGurdyManFirstKinstone.inc index fa1a008d..101f2432 100644 --- a/data/scripts/cutscene/kinstones/script_HurdyGurdyManFirstKinstone.inc +++ b/data/scripts/cutscene/kinstones/script_HurdyGurdyManFirstKinstone.inc @@ -17,7 +17,7 @@ SCRIPT_START script_HurdyGurdyManFirstKinstone _0807E8E4_0 SetSyncFlag 0x00000040 WaitForSyncFlagAndClear 0x00000002 - Call sub_0806E440 + Call HurdyGurdyMan_MakeInteractable Wait 0x0078 SetSyncFlag 0x00000040 WaitForSyncFlagAndClear 0x00000002 diff --git a/data/scripts/dhc/script_MinishterPothoStone.inc b/data/scripts/dhc/script_MinishterPothoStone.inc index b4fa78a8..d09d7a9b 100644 --- a/data/scripts/dhc/script_MinishterPothoStone.inc +++ b/data/scripts/dhc/script_MinishterPothoStone.inc @@ -32,7 +32,7 @@ script_0800E0DE: WaitUntilTextboxCloses SetLocalFlag 0x0093 script_0800E12E: - Call sub_080668F0 + Call MinisterPotho_MakeInteractable EnablePlayerControl EndBlock script_0800E138: diff --git a/data/scripts/dhc/script_MinisterPothoCell.inc b/data/scripts/dhc/script_MinisterPothoCell.inc index 4fabc7ad..428097ae 100644 --- a/data/scripts/dhc/script_MinisterPothoCell.inc +++ b/data/scripts/dhc/script_MinisterPothoCell.inc @@ -3,7 +3,7 @@ SCRIPT_START script_MinisterPothoCell BeginBlock SetAnimationState 0x0002 DoPostScriptAction 0x000a - Call sub_080668F0 + Call MinisterPotho_MakeInteractable EndBlock script_0800E41A: CheckEntityInteractType diff --git a/data/scripts/graveyard/script_DampeInside2.inc b/data/scripts/graveyard/script_DampeInside2.inc index fba10fd3..eb800d94 100644 --- a/data/scripts/graveyard/script_DampeInside2.inc +++ b/data/scripts/graveyard/script_DampeInside2.inc @@ -1,7 +1,7 @@ @ Graveyard Dampe in house 2? SCRIPT_START script_DampeInside2 BeginBlock - Call sub_0806BE3C + Call Dampe_MakeInteractable DoPostScriptAction 0x000a DoPostScriptAction 0x0007 EndBlock diff --git a/data/scripts/graveyard/script_DampeOuside.inc b/data/scripts/graveyard/script_DampeOuside.inc index b1cede54..ff39fe74 100644 --- a/data/scripts/graveyard/script_DampeOuside.inc +++ b/data/scripts/graveyard/script_DampeOuside.inc @@ -14,7 +14,7 @@ script_08009646: Call sub_0806BF44 JumpIf script_08009646 EndBlock - Call sub_0806BE3C + Call Dampe_MakeInteractable DoPostScriptAction 0x000a DoPostScriptAction 0x0007 script_08009660: diff --git a/data/scripts/graveyard/script_GhostBrothers.inc b/data/scripts/graveyard/script_GhostBrothers.inc index b9fed2f1..5f9c6d81 100644 --- a/data/scripts/graveyard/script_GhostBrothers.inc +++ b/data/scripts/graveyard/script_GhostBrothers.inc @@ -1,7 +1,7 @@ @ Graveyard GhostBrothers SCRIPT_START script_GhostBrothers BeginBlock - Call sub_08065D00 + Call GhostBrothers_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0000 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleCastle/script_KingDaltus.inc b/data/scripts/hyruleCastle/script_KingDaltus.inc index 09965292..d62653a3 100644 --- a/data/scripts/hyruleCastle/script_KingDaltus.inc +++ b/data/scripts/hyruleCastle/script_KingDaltus.inc @@ -3,7 +3,7 @@ SCRIPT_START script_KingDaltus BeginBlock SetAnimationState 0x0004 DoPostScriptAction 0x0000 - Call sub_0806672C + Call KingDaltus_MakeInteractable DoPostScriptAction 0x000a EndBlock Jump script_0800917C diff --git a/data/scripts/hyruleCastle/script_MinisterPotho.inc b/data/scripts/hyruleCastle/script_MinisterPotho.inc index 6bd64932..a5b4e11c 100644 --- a/data/scripts/hyruleCastle/script_MinisterPotho.inc +++ b/data/scripts/hyruleCastle/script_MinisterPotho.inc @@ -4,7 +4,7 @@ SCRIPT_START script_MinisterPotho SetAnimationState 0x0004 DoPostScriptAction 0x0000 script_0800927E: - Call sub_080668F0 + Call MinisterPotho_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800928A: diff --git a/data/scripts/hyruleTown/script_Anju.inc b/data/scripts/hyruleTown/script_Anju.inc index 09bf74c8..bf743b41 100644 --- a/data/scripts/hyruleTown/script_Anju.inc +++ b/data/scripts/hyruleTown/script_Anju.inc @@ -2,7 +2,7 @@ SCRIPT_START script_Anju BeginBlock DoPostScriptAction 0x0001 - Call sub_0806C354 + Call Anju_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0801015A: diff --git a/data/scripts/hyruleTown/script_Brocco.inc b/data/scripts/hyruleTown/script_Brocco.inc index f01bc951..3637207a 100644 --- a/data/scripts/hyruleTown/script_Brocco.inc +++ b/data/scripts/hyruleTown/script_Brocco.inc @@ -3,7 +3,7 @@ SCRIPT_START script_Brocco BeginBlock SetAnimationState 0x0004 SetAnimation 0x0000 - Call sub_080636F4 + Call Brocco_MakeInteractable DoPostScriptAction 0x000a Call SetPriorityMessage EndBlock diff --git a/data/scripts/hyruleTown/script_Carpenter.inc b/data/scripts/hyruleTown/script_Carpenter.inc index 9a29615b..3358f344 100644 --- a/data/scripts/hyruleTown/script_Carpenter.inc +++ b/data/scripts/hyruleTown/script_Carpenter.inc @@ -4,7 +4,7 @@ SCRIPT_START script_Carpenter SetAnimationState 0x0004 CallWithArg sub_080672B0, 0x00000000 DoPostScriptAction 0x000a - Call sub_08067314 + Call Carpenter_MakeInteractable EndBlock script_08010AB4: CheckEntityInteractType diff --git a/data/scripts/hyruleTown/script_CatPerson.inc b/data/scripts/hyruleTown/script_CatPerson.inc index 73cfba96..975ff68d 100644 --- a/data/scripts/hyruleTown/script_CatPerson.inc +++ b/data/scripts/hyruleTown/script_CatPerson.inc @@ -1,7 +1,7 @@ @ Hyrule Townsperson house with cat SCRIPT_START script_CatPerson BeginBlock - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 Call sub_08061FD8 diff --git a/data/scripts/hyruleTown/script_CatPersonTalkingToDogPerson.inc b/data/scripts/hyruleTown/script_CatPersonTalkingToDogPerson.inc index f81c9e64..2ef2df5a 100644 --- a/data/scripts/hyruleTown/script_CatPersonTalkingToDogPerson.inc +++ b/data/scripts/hyruleTown/script_CatPersonTalkingToDogPerson.inc @@ -1,7 +1,7 @@ @ Hyrule Town Cat person talking to Dog person SCRIPT_START script_CatPersonTalkingToDogPerson BeginBlock - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0002 Call sub_08061FD8 diff --git a/data/scripts/hyruleTown/script_Din.inc b/data/scripts/hyruleTown/script_Din.inc index 3382477f..64cce82b 100644 --- a/data/scripts/hyruleTown/script_Din.inc +++ b/data/scripts/hyruleTown/script_Din.inc @@ -1,7 +1,7 @@ @ Hyrule Town Din SCRIPT_START script_Din BeginBlock - Call sub_08064828 + Call Din_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_Din2.inc b/data/scripts/hyruleTown/script_Din2.inc index cf4f02a1..19993357 100644 --- a/data/scripts/hyruleTown/script_Din2.inc +++ b/data/scripts/hyruleTown/script_Din2.inc @@ -1,7 +1,7 @@ @ Hyrule Town Din when one of them has moved in SCRIPT_START script_Din2 BeginBlock - Call sub_08064828 + Call Din_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_DinAlone.inc b/data/scripts/hyruleTown/script_DinAlone.inc index 61ddd2c3..1e035f0a 100644 --- a/data/scripts/hyruleTown/script_DinAlone.inc +++ b/data/scripts/hyruleTown/script_DinAlone.inc @@ -1,7 +1,7 @@ @ Din completely alone SCRIPT_START script_DinAlone BeginBlock - Call sub_08064828 + Call Din_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_DinMovedIn.inc b/data/scripts/hyruleTown/script_DinMovedIn.inc index 578f3182..e4b269a1 100644 --- a/data/scripts/hyruleTown/script_DinMovedIn.inc +++ b/data/scripts/hyruleTown/script_DinMovedIn.inc @@ -1,7 +1,7 @@ @ Hyrule Town Din moved in SCRIPT_START script_DinMovedIn BeginBlock - Call sub_08064828 + Call Din_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_DogPersonInCatHouse.inc b/data/scripts/hyruleTown/script_DogPersonInCatHouse.inc index 2cc56734..ddb3beef 100644 --- a/data/scripts/hyruleTown/script_DogPersonInCatHouse.inc +++ b/data/scripts/hyruleTown/script_DogPersonInCatHouse.inc @@ -1,7 +1,7 @@ @ Hyrule Town Dog person talking to Cat person SCRIPT_START script_DogPersonInCatHouse BeginBlock - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0006 Call sub_08061FD8 @@ -19,7 +19,7 @@ script_0800EB7C: Call sub_08061FD8 Jump script_0800EB7C BeginBlock - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0002 Call sub_08061FD8 diff --git a/data/scripts/hyruleTown/script_Farore.inc b/data/scripts/hyruleTown/script_Farore.inc index 3477a9fb..5fc0a12b 100644 --- a/data/scripts/hyruleTown/script_Farore.inc +++ b/data/scripts/hyruleTown/script_Farore.inc @@ -1,7 +1,7 @@ @ Hyrule Town Farore SCRIPT_START script_Farore BeginBlock - Call sub_08064A28 + Call Farore_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_Farore2.inc b/data/scripts/hyruleTown/script_Farore2.inc index 0f3e9303..252b83c8 100644 --- a/data/scripts/hyruleTown/script_Farore2.inc +++ b/data/scripts/hyruleTown/script_Farore2.inc @@ -1,7 +1,7 @@ @ Hyrule Town Farore when one of them has moved in SCRIPT_START script_Farore2 BeginBlock - Call sub_08064A28 + Call Farore_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_FaroreAlone.inc b/data/scripts/hyruleTown/script_FaroreAlone.inc index 03a869de..30b0b454 100644 --- a/data/scripts/hyruleTown/script_FaroreAlone.inc +++ b/data/scripts/hyruleTown/script_FaroreAlone.inc @@ -1,7 +1,7 @@ @ Farore completely alone SCRIPT_START script_FaroreAlone BeginBlock - Call sub_08064A28 + Call Farore_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_FaroreMovedIn.inc b/data/scripts/hyruleTown/script_FaroreMovedIn.inc index 1ea10abe..5437e6ef 100644 --- a/data/scripts/hyruleTown/script_FaroreMovedIn.inc +++ b/data/scripts/hyruleTown/script_FaroreMovedIn.inc @@ -1,7 +1,7 @@ @ Farore moved in SCRIPT_START script_FaroreMovedIn BeginBlock - Call sub_08064A28 + Call Farore_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_ForestMinish11.inc b/data/scripts/hyruleTown/script_ForestMinish11.inc index 9d5214c7..48fed47e 100644 --- a/data/scripts/hyruleTown/script_ForestMinish11.inc +++ b/data/scripts/hyruleTown/script_ForestMinish11.inc @@ -1,7 +1,7 @@ @ Forest Minish above cafe SCRIPT_START script_ForestMinish11 BeginBlock - Call sub_08060090 + Call ForestMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800E6BE: diff --git a/data/scripts/hyruleTown/script_HurdyGurdyMan.inc b/data/scripts/hyruleTown/script_HurdyGurdyMan.inc index 7daf6e2c..1ebc20b4 100644 --- a/data/scripts/hyruleTown/script_HurdyGurdyMan.inc +++ b/data/scripts/hyruleTown/script_HurdyGurdyMan.inc @@ -4,7 +4,7 @@ SCRIPT_START script_HurdyGurdyMan DoPostScriptAction 0x000a SetAnimationState 0x0004 SetAnimation 0x0008 - Call sub_0806E440 + Call HurdyGurdyMan_MakeInteractable EndBlock script_08010BCA: CheckEntityInteractType diff --git a/data/scripts/hyruleTown/script_Kid1.inc b/data/scripts/hyruleTown/script_Kid1.inc index 732289b5..1b1af5dd 100644 --- a/data/scripts/hyruleTown/script_Kid1.inc +++ b/data/scripts/hyruleTown/script_Kid1.inc @@ -2,7 +2,7 @@ SCRIPT_START script_Kid1 BeginBlock DoPostScriptAction 0x0000 - Call sub_08062A48 + Call Kid_MakeInteractable DoPostScriptAction 0x000a EndBlock script_080102A6: diff --git a/data/scripts/hyruleTown/script_Kid2.inc b/data/scripts/hyruleTown/script_Kid2.inc index 65a9125b..a0c65639 100644 --- a/data/scripts/hyruleTown/script_Kid2.inc +++ b/data/scripts/hyruleTown/script_Kid2.inc @@ -2,7 +2,7 @@ SCRIPT_START script_Kid2 BeginBlock DoPostScriptAction 0x0000 - Call sub_08062A48 + Call Kid_MakeInteractable DoPostScriptAction 0x000a EndBlock script_080102F2: diff --git a/data/scripts/hyruleTown/script_Kid4.inc b/data/scripts/hyruleTown/script_Kid4.inc index da188edd..4b15c564 100644 --- a/data/scripts/hyruleTown/script_Kid4.inc +++ b/data/scripts/hyruleTown/script_Kid4.inc @@ -2,7 +2,7 @@ SCRIPT_START script_Kid4 BeginBlock DoPostScriptAction 0x0000 - Call sub_08062A48 + Call Kid_MakeInteractable DoPostScriptAction 0x000a EndBlock script_080103C2: diff --git a/data/scripts/hyruleTown/script_Kid5.inc b/data/scripts/hyruleTown/script_Kid5.inc index 4465b197..ac7006a4 100644 --- a/data/scripts/hyruleTown/script_Kid5.inc +++ b/data/scripts/hyruleTown/script_Kid5.inc @@ -3,7 +3,7 @@ SCRIPT_START script_Kid5 BeginBlock SetAnimation 0x0008 script_08010622: - Call sub_08062A48 + Call Kid_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0801062E: diff --git a/data/scripts/hyruleTown/script_KidInn.inc b/data/scripts/hyruleTown/script_KidInn.inc index 43a709a2..1ba953ad 100644 --- a/data/scripts/hyruleTown/script_KidInn.inc +++ b/data/scripts/hyruleTown/script_KidInn.inc @@ -2,7 +2,7 @@ SCRIPT_START script_KidInn BeginBlock DoPostScriptAction 0x000a - Call sub_08062A48 + Call Kid_MakeInteractable DoPostScriptAction 0x0000 script_0800D5AC: EndBlock diff --git a/data/scripts/hyruleTown/script_LibraryVisitor.inc b/data/scripts/hyruleTown/script_LibraryVisitor.inc index 1d0d7132..680ac8e4 100644 --- a/data/scripts/hyruleTown/script_LibraryVisitor.inc +++ b/data/scripts/hyruleTown/script_LibraryVisitor.inc @@ -2,7 +2,7 @@ SCRIPT_START script_LibraryVisitor BeginBlock Call sub_08061FD8 - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a EndBlock script_08008DA0: diff --git a/data/scripts/hyruleTown/script_Mama.inc b/data/scripts/hyruleTown/script_Mama.inc index c286a0d2..f8ab1a20 100644 --- a/data/scripts/hyruleTown/script_Mama.inc +++ b/data/scripts/hyruleTown/script_Mama.inc @@ -1,7 +1,7 @@ @ Hyrule Town Mama SCRIPT_START script_Mama BeginBlock - Call sub_0806C4F8 + Call Mama_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0000 EndBlock diff --git a/data/scripts/hyruleTown/script_Mayor.inc b/data/scripts/hyruleTown/script_Mayor.inc index 1761b2cf..5b04586a 100644 --- a/data/scripts/hyruleTown/script_Mayor.inc +++ b/data/scripts/hyruleTown/script_Mayor.inc @@ -1,7 +1,7 @@ @ Hyrule Town Mayor Hagen SCRIPT_START script_Mayor BeginBlock - Call sub_0806CE5C + Call MayorHagen_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 SetAnimation 0x0008 diff --git a/data/scripts/hyruleTown/script_MutohInMill.inc b/data/scripts/hyruleTown/script_MutohInMill.inc index ee10eeba..ef84ee3e 100644 --- a/data/scripts/hyruleTown/script_MutohInMill.inc +++ b/data/scripts/hyruleTown/script_MutohInMill.inc @@ -1,7 +1,7 @@ @ Hyrule Town Mutoh SCRIPT_START script_MutohInMill BeginBlock - Call sub_08067100 + Call Mutoh_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 DoPostScriptAction 0x0000 diff --git a/data/scripts/hyruleTown/script_Nayru.inc b/data/scripts/hyruleTown/script_Nayru.inc index e311efcc..6798b860 100644 --- a/data/scripts/hyruleTown/script_Nayru.inc +++ b/data/scripts/hyruleTown/script_Nayru.inc @@ -1,7 +1,7 @@ @ Hyrule Town Nayru SCRIPT_START script_Nayru BeginBlock - Call sub_08064928 + Call Nayru_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_Nayru2.inc b/data/scripts/hyruleTown/script_Nayru2.inc index ab085b28..b4555057 100644 --- a/data/scripts/hyruleTown/script_Nayru2.inc +++ b/data/scripts/hyruleTown/script_Nayru2.inc @@ -1,7 +1,7 @@ @ Hyrule Town Nayru when one of them has moved in SCRIPT_START script_Nayru2 BeginBlock - Call sub_08064928 + Call Nayru_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_NayruAlone.inc b/data/scripts/hyruleTown/script_NayruAlone.inc index 6fbd687d..9b72c947 100644 --- a/data/scripts/hyruleTown/script_NayruAlone.inc +++ b/data/scripts/hyruleTown/script_NayruAlone.inc @@ -1,7 +1,7 @@ @ Nayru completely alone SCRIPT_START script_NayruAlone BeginBlock - Call sub_08064928 + Call Nayru_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_NayruMovedIn.inc b/data/scripts/hyruleTown/script_NayruMovedIn.inc index 8a143338..50645ef0 100644 --- a/data/scripts/hyruleTown/script_NayruMovedIn.inc +++ b/data/scripts/hyruleTown/script_NayruMovedIn.inc @@ -1,7 +1,7 @@ @ Nayru moved in SCRIPT_START script_NayruMovedIn BeginBlock - Call sub_08064928 + Call Nayru_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0001 DoPostScriptAction 0x000a diff --git a/data/scripts/hyruleTown/script_OldLadyCatHouse1.inc b/data/scripts/hyruleTown/script_OldLadyCatHouse1.inc index c5905a83..3f6dcb4a 100644 --- a/data/scripts/hyruleTown/script_OldLadyCatHouse1.inc +++ b/data/scripts/hyruleTown/script_OldLadyCatHouse1.inc @@ -1,7 +1,7 @@ @ Older lady in cat persons house SCRIPT_START script_OldLadyCatHouse1 BeginBlock - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 Call sub_08061FD8 diff --git a/data/scripts/hyruleTown/script_OldLadyCatHouse2.inc b/data/scripts/hyruleTown/script_OldLadyCatHouse2.inc index edaf3a11..1c1ce611 100644 --- a/data/scripts/hyruleTown/script_OldLadyCatHouse2.inc +++ b/data/scripts/hyruleTown/script_OldLadyCatHouse2.inc @@ -1,7 +1,7 @@ @ Older lady in cat persons house SCRIPT_START script_OldLadyCatHouse2 BeginBlock - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0006 Call sub_08061FD8 diff --git a/data/scripts/hyruleTown/script_Phonograph.inc b/data/scripts/hyruleTown/script_Phonograph.inc index 12071bc5..ae6c6ed3 100644 --- a/data/scripts/hyruleTown/script_Phonograph.inc +++ b/data/scripts/hyruleTown/script_Phonograph.inc @@ -1,7 +1,7 @@ @ Phonograph SCRIPT_START script_Phonograph BeginBlock - Call sub_0807F934 + Call MakeCheckableObjectInteractable EndBlock script_0800BA46: CheckEntityInteractType diff --git a/data/scripts/hyruleTown/script_Pina.inc b/data/scripts/hyruleTown/script_Pina.inc index 866ef334..8cfc8f8d 100644 --- a/data/scripts/hyruleTown/script_Pina.inc +++ b/data/scripts/hyruleTown/script_Pina.inc @@ -3,7 +3,7 @@ SCRIPT_START script_Pina BeginBlock SetAnimationState 0x0004 SetAnimation 0x0000 - Call sub_08063CAC + Call Pina_MakeInteractable DoPostScriptAction 0x000a Call SetPriorityMessage EndBlock diff --git a/data/scripts/hyruleTown/script_Postman.inc b/data/scripts/hyruleTown/script_Postman.inc index 1aff3231..36f3a400 100644 --- a/data/scripts/hyruleTown/script_Postman.inc +++ b/data/scripts/hyruleTown/script_Postman.inc @@ -10,7 +10,7 @@ SCRIPT_START script_Postman Call sub_0806075C EndBlock WaitUntilTextboxCloses - Call sub_080606C0 + Call Postman_MakeInteractable script_08010B10: EndBlock Call sub_0806076C diff --git a/data/scripts/hyruleTown/script_Rem.inc b/data/scripts/hyruleTown/script_Rem.inc index fa58f73d..a7384e2a 100644 --- a/data/scripts/hyruleTown/script_Rem.inc +++ b/data/scripts/hyruleTown/script_Rem.inc @@ -1,7 +1,7 @@ @ Hyrule Town Rem SCRIPT_START script_Rem BeginBlock - CallWithArg sub_0806A93C, 0x12345678 + CallWithArg Rem_MakeInteractable, 0x12345678 SetAnimationState 0x0004 SetAnimation 0x0002 CheckInventory1 ITEM_PEGASUS_BOOTS diff --git a/data/scripts/hyruleTown/script_SittingPerson.inc b/data/scripts/hyruleTown/script_SittingPerson.inc index f61560d7..3fecc6df 100644 --- a/data/scripts/hyruleTown/script_SittingPerson.inc +++ b/data/scripts/hyruleTown/script_SittingPerson.inc @@ -1,7 +1,7 @@ @ Hyrule Town SittingPerson SCRIPT_START script_SittingPerson BeginBlock - Call sub_080639D0 + Call SittingPerson_MakeInteractable DoPostScriptAction 0x000a EndBlock BeginBlock diff --git a/data/scripts/hyruleTown/script_SmallTownMinish.inc b/data/scripts/hyruleTown/script_SmallTownMinish.inc index d97d0801..8c3b2727 100644 --- a/data/scripts/hyruleTown/script_SmallTownMinish.inc +++ b/data/scripts/hyruleTown/script_SmallTownMinish.inc @@ -3,7 +3,7 @@ SCRIPT_START script_SmallTownMinish BeginBlock CheckPlayerMinish JumpIfNot script_08010BAC - Call sub_0807F924 + Call MakeInteractableAsMinish SetAnimationState 0x0004 DoPostScriptAction 0x0000 DoPostScriptAction 0x0007 diff --git a/data/scripts/hyruleTown/script_Sturgeon.inc b/data/scripts/hyruleTown/script_Sturgeon.inc index db91eb49..a73997bd 100644 --- a/data/scripts/hyruleTown/script_Sturgeon.inc +++ b/data/scripts/hyruleTown/script_Sturgeon.inc @@ -1,7 +1,7 @@ @ Library Sturgeon SCRIPT_START script_Sturgeon BeginBlock - Call sub_08064CC0 + Call Sturgeon_MakeInteractable DoPostScriptAction 0x000a DoPostScriptAction 0x0007 SetAnimationState 0x0002 diff --git a/data/scripts/hyruleTown/script_Teachers.inc b/data/scripts/hyruleTown/script_Teachers.inc index b7898239..202a48dc 100644 --- a/data/scripts/hyruleTown/script_Teachers.inc +++ b/data/scripts/hyruleTown/script_Teachers.inc @@ -1,7 +1,7 @@ @ Hyrule Town Teachers SCRIPT_START script_Teachers BeginBlock - Call sub_0806C674 + Call Teachers_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 EndBlock diff --git a/data/scripts/hyruleTown/script_TownMinish1.inc b/data/scripts/hyruleTown/script_TownMinish1.inc index 248f4c2d..30be6472 100644 --- a/data/scripts/hyruleTown/script_TownMinish1.inc +++ b/data/scripts/hyruleTown/script_TownMinish1.inc @@ -2,7 +2,7 @@ @ also in library, cafe SCRIPT_START script_TownMinish1 BeginBlock - Call sub_0806ADFC + Call TownMinish_MakeInteractable DoPostScriptAction 0x000a script_0800E6F4: EndBlock diff --git a/data/scripts/hyruleTown/script_Townsperson1.inc b/data/scripts/hyruleTown/script_Townsperson1.inc index 259d47b4..55bebc1f 100644 --- a/data/scripts/hyruleTown/script_Townsperson1.inc +++ b/data/scripts/hyruleTown/script_Townsperson1.inc @@ -2,7 +2,7 @@ SCRIPT_START script_Townsperson1 BeginBlock Call sub_08061FE4 - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a EndBlock script_080100DC: diff --git a/data/scripts/hyruleTown/script_Townsperson2.inc b/data/scripts/hyruleTown/script_Townsperson2.inc index 535ade2e..f0b2e9ad 100644 --- a/data/scripts/hyruleTown/script_Townsperson2.inc +++ b/data/scripts/hyruleTown/script_Townsperson2.inc @@ -2,7 +2,7 @@ SCRIPT_START script_Townsperson2 BeginBlock Call sub_08061FE4 - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a EndBlock script_08010110: diff --git a/data/scripts/hyruleTown/script_TownspersonInDogHouse.inc b/data/scripts/hyruleTown/script_TownspersonInDogHouse.inc index 7be84de5..a3da4d63 100644 --- a/data/scripts/hyruleTown/script_TownspersonInDogHouse.inc +++ b/data/scripts/hyruleTown/script_TownspersonInDogHouse.inc @@ -1,7 +1,7 @@ @ Hyrule Townsperson house with dog SCRIPT_START script_TownspersonInDogHouse BeginBlock - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 Call sub_08061FD8 diff --git a/data/scripts/hyruleTown/script_WindTribespeopleVisitor.inc b/data/scripts/hyruleTown/script_WindTribespeopleVisitor.inc index ce39d48f..a1346c00 100644 --- a/data/scripts/hyruleTown/script_WindTribespeopleVisitor.inc +++ b/data/scripts/hyruleTown/script_WindTribespeopleVisitor.inc @@ -1,7 +1,7 @@ @ Hyrule Town Windstribepeople in house SCRIPT_START script_WindTribespeopleVisitor BeginBlock - Call sub_0806C870 + Call WindTribespeople_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 SetAnimation 0x0000 diff --git a/data/scripts/lakeHylia/script_ForestMinish3.inc b/data/scripts/lakeHylia/script_ForestMinish3.inc index 26ad3f5a..4a0ab477 100644 --- a/data/scripts/lakeHylia/script_ForestMinish3.inc +++ b/data/scripts/lakeHylia/script_ForestMinish3.inc @@ -1,7 +1,7 @@ @ Lake Hylia Forest Minish telling us to go to the library SCRIPT_START script_ForestMinish3 BeginBlock - Call sub_08060090 + Call ForestMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800C5D6: diff --git a/data/scripts/lonLonRanch/script_GoronPunching.inc b/data/scripts/lonLonRanch/script_GoronPunching.inc index ebe77add..992ee9eb 100644 --- a/data/scripts/lonLonRanch/script_GoronPunching.inc +++ b/data/scripts/lonLonRanch/script_GoronPunching.inc @@ -4,7 +4,7 @@ SCRIPT_START script_GoronPunching _0807E9D4 Call sub_080694EC DoPostScriptAction 0x000a - Call sub_080694B0 + Call Goron_MakeInteractable EndBlock script_0800B9CA: Call CheckInteractType diff --git a/data/scripts/minishWoods/script_BombMinish.inc b/data/scripts/minishWoods/script_BombMinish.inc index 2be316b6..5f2b461a 100644 --- a/data/scripts/minishWoods/script_BombMinish.inc +++ b/data/scripts/minishWoods/script_BombMinish.inc @@ -2,7 +2,7 @@ SCRIPT_START script_BombMinish BeginBlock SetAnimationState 0x0004 - Call sub_08060090 + Call ForestMinish_MakeInteractable DoPostScriptAction 0x000a CheckKinstoneFused KINSTONE_1C JumpIf script_08009FD2 diff --git a/data/scripts/minishWoods/script_CutsceneOrchestratorPotionBlue.inc b/data/scripts/minishWoods/script_CutsceneOrchestratorPotionBlue.inc index 3856ef0a..ea855b06 100644 --- a/data/scripts/minishWoods/script_CutsceneOrchestratorPotionBlue.inc +++ b/data/scripts/minishWoods/script_CutsceneOrchestratorPotionBlue.inc @@ -1,7 +1,7 @@ @ Syrup CUTSCENE_ORCHESTRATOR Potion SCRIPT_START script_CutsceneOrchestratorPotionBlue BeginBlock - Call sub_080787B4 + Call AddInteractableCheckableObject EndBlock script_08016146: CheckEntityInteractType diff --git a/data/scripts/minishWoods/script_CutsceneOrchestratorPotionRed.inc b/data/scripts/minishWoods/script_CutsceneOrchestratorPotionRed.inc index 4000dbfb..17b15a7b 100644 --- a/data/scripts/minishWoods/script_CutsceneOrchestratorPotionRed.inc +++ b/data/scripts/minishWoods/script_CutsceneOrchestratorPotionRed.inc @@ -1,7 +1,7 @@ @ CUTSCENE_ORCHESTRATOR in witch hut? SCRIPT_START script_CutsceneOrchestratorPotionRed BeginBlock - Call sub_080787B4 + Call AddInteractableCheckableObject EndBlock script_0801619A: CheckEntityInteractType diff --git a/data/scripts/minishWoods/script_ForestMinish10.inc b/data/scripts/minishWoods/script_ForestMinish10.inc index 9ee0b042..6c3c5fa8 100644 --- a/data/scripts/minishWoods/script_ForestMinish10.inc +++ b/data/scripts/minishWoods/script_ForestMinish10.inc @@ -3,7 +3,7 @@ SCRIPT_START script_ForestMinish10 BeginBlock CheckInventory1 ITEM_JABBERNUT JumpIfNot script_0800C5FE - Call sub_08060090 + Call ForestMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800CD92: diff --git a/data/scripts/minishWoods/script_ForestMinish4.inc b/data/scripts/minishWoods/script_ForestMinish4.inc index 2663d585..3008312b 100644 --- a/data/scripts/minishWoods/script_ForestMinish4.inc +++ b/data/scripts/minishWoods/script_ForestMinish4.inc @@ -2,7 +2,7 @@ SCRIPT_START script_ForestMinish4 BeginBlock script_0800C5FE: - Call sub_08060090 + Call ForestMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800C60A: diff --git a/data/scripts/mtCrenel/script_CrenelHermit.inc b/data/scripts/mtCrenel/script_CrenelHermit.inc index 91d499ad..59430538 100644 --- a/data/scripts/mtCrenel/script_CrenelHermit.inc +++ b/data/scripts/mtCrenel/script_CrenelHermit.inc @@ -1,7 +1,7 @@ @ Crenel Hermit SCRIPT_START script_CrenelHermit BeginBlock - Call sub_08061E70 + Call Townsperson_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 Call sub_08061FD8 diff --git a/data/scripts/mtCrenel/script_MelariInRoom.inc b/data/scripts/mtCrenel/script_MelariInRoom.inc index 3e5b9e8a..b0581826 100644 --- a/data/scripts/mtCrenel/script_MelariInRoom.inc +++ b/data/scripts/mtCrenel/script_MelariInRoom.inc @@ -1,7 +1,7 @@ @ Mines Melari in his room SCRIPT_START script_MelariInRoom BeginBlock - Call sub_08068884 + Call Melari_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 SetAnimation 0x0000 diff --git a/data/scripts/mtCrenel/script_MountainMinish1.inc b/data/scripts/mtCrenel/script_MountainMinish1.inc index 20e946d1..e745e8dd 100644 --- a/data/scripts/mtCrenel/script_MountainMinish1.inc +++ b/data/scripts/mtCrenel/script_MountainMinish1.inc @@ -1,7 +1,7 @@ @ Mines Mountain Minish before beds SCRIPT_START script_MountainMinish1 BeginBlock - Call sub_08068104 + Call MountainMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800CF5E: diff --git a/data/scripts/mtCrenel/script_MountainMinish2.inc b/data/scripts/mtCrenel/script_MountainMinish2.inc index de34aca9..cdf4e14d 100644 --- a/data/scripts/mtCrenel/script_MountainMinish2.inc +++ b/data/scripts/mtCrenel/script_MountainMinish2.inc @@ -1,7 +1,7 @@ @ Mines Mountain Minish SCRIPT_START script_MountainMinish2 BeginBlock - Call sub_08068104 + Call MountainMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800CF96: diff --git a/data/scripts/mtCrenel/script_MountainMinish4.inc b/data/scripts/mtCrenel/script_MountainMinish4.inc index f1689e97..1716194d 100644 --- a/data/scripts/mtCrenel/script_MountainMinish4.inc +++ b/data/scripts/mtCrenel/script_MountainMinish4.inc @@ -1,7 +1,7 @@ @ Mines Mountain Minish at exit SCRIPT_START script_MountainMinish4 BeginBlock - Call sub_08068104 + Call MountainMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800D35E: diff --git a/data/scripts/mtCrenel/script_MountainMinish5.inc b/data/scripts/mtCrenel/script_MountainMinish5.inc index edbf2f01..2d54f64e 100644 --- a/data/scripts/mtCrenel/script_MountainMinish5.inc +++ b/data/scripts/mtCrenel/script_MountainMinish5.inc @@ -2,7 +2,7 @@ SCRIPT_START script_MountainMinish5 BeginBlock SetEntitySpeed 0x0100 - Call sub_08068104 + Call MountainMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800D426: @@ -42,7 +42,7 @@ script_0800D426: .2byte 0x0000 BeginBlock DoPostScriptAction 0x000a - Call sub_08062A48 + Call Kid_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0000 script_0800D4E4: diff --git a/data/scripts/northHyruleField/script_CarpenterOutsideTown.inc b/data/scripts/northHyruleField/script_CarpenterOutsideTown.inc index e9af8375..49beaa01 100644 --- a/data/scripts/northHyruleField/script_CarpenterOutsideTown.inc +++ b/data/scripts/northHyruleField/script_CarpenterOutsideTown.inc @@ -2,7 +2,7 @@ @ Hyrule Town Carpenter SCRIPT_START script_CarpenterOutsideTown BeginBlock - Call sub_08067314 + Call Carpenter_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 SetIntVariable 0x00000000 diff --git a/data/scripts/northHyruleField/script_MutohOutsideTown.inc b/data/scripts/northHyruleField/script_MutohOutsideTown.inc index 72f84118..a5f0a4f3 100644 --- a/data/scripts/northHyruleField/script_MutohOutsideTown.inc +++ b/data/scripts/northHyruleField/script_MutohOutsideTown.inc @@ -1,7 +1,7 @@ @ Outside Castle Mutoh SCRIPT_START script_MutohOutsideTown BeginBlock - Call sub_08067100 + Call Mutoh_MakeInteractable DoPostScriptAction 0x000a SetAnimationState 0x0004 DoPostScriptAction 0x0000 diff --git a/data/scripts/npc/script_Farmer.inc b/data/scripts/npc/script_Farmer.inc index 9d281c12..51eaf67e 100644 --- a/data/scripts/npc/script_Farmer.inc +++ b/data/scripts/npc/script_Farmer.inc @@ -1,7 +1,7 @@ @ Farmer SCRIPT_START script_Farmer BeginBlock - Call sub_0806BCD4 + Call Farmers_MakeInteractable DoPostScriptAction 0x000a CallWithArg sub_0806BC94, 0x00000000 EndBlock diff --git a/data/scripts/npc/script_MysteriousWall.inc b/data/scripts/npc/script_MysteriousWall.inc index aa780c91..0c03e624 100644 --- a/data/scripts/npc/script_MysteriousWall.inc +++ b/data/scripts/npc/script_MysteriousWall.inc @@ -5,7 +5,7 @@ SCRIPT_START script_MysteriousWall DoPostScriptAction 0x0008 Call sub_0806DAAC JumpIf script_0800B9AC - Call sub_0806DAD0 + Call NPC4E_MakeFuserInteractable CallWithArg sub_0806DA04, 0x00000005 EndBlock script_0800B98A: diff --git a/data/scripts/npc/script_TingleSiblings.inc b/data/scripts/npc/script_TingleSiblings.inc index d5ea4160..0719e620 100644 --- a/data/scripts/npc/script_TingleSiblings.inc +++ b/data/scripts/npc/script_TingleSiblings.inc @@ -1,7 +1,7 @@ @ Tingle Siblings SCRIPT_START script_TingleSiblings BeginBlock - Call sub_08064EA4 + Call TingleSiblings_MakeInteractable SetAnimationState 0x0004 DoPostScriptAction 0x0000 DoPostScriptAction 0x000a diff --git a/data/scripts/npc/script_Windcrest.inc b/data/scripts/npc/script_Windcrest.inc index 130ad98a..37417368 100644 --- a/data/scripts/npc/script_Windcrest.inc +++ b/data/scripts/npc/script_Windcrest.inc @@ -1,8 +1,8 @@ @ All Windcrests SCRIPT_START script_Windcrest BeginBlock - Call sub_0807F934 - Call sub_080A2124 + Call MakeCheckableObjectInteractable + Call Windcrest_ChangeInteractableHitbox DoPostScriptAction 0x000a DoPostScriptAction 0x0007 EndBlock diff --git a/data/scripts/sanctuary/script_CutsceneMiscObjectTextBoard.inc b/data/scripts/sanctuary/script_CutsceneMiscObjectTextBoard.inc index 520adfe2..54bf63fb 100644 --- a/data/scripts/sanctuary/script_CutsceneMiscObjectTextBoard.inc +++ b/data/scripts/sanctuary/script_CutsceneMiscObjectTextBoard.inc @@ -23,7 +23,7 @@ script_08013C2A: script_08013C32: BeginBlock DoPostScriptAction 0x0007 - Call sub_0807F934 + Call MakeCheckableObjectInteractable DoPostScriptAction 0x000a CallWithArg sub_080962F8, 0x00000000 .ifndef EU diff --git a/data/scripts/sanctuary/script_Npc4ELookAtPictureAgain.inc b/data/scripts/sanctuary/script_Npc4ELookAtPictureAgain.inc index 50f58794..f8734547 100644 --- a/data/scripts/sanctuary/script_Npc4ELookAtPictureAgain.inc +++ b/data/scripts/sanctuary/script_Npc4ELookAtPictureAgain.inc @@ -7,7 +7,7 @@ script_0801427C: CheckLocalFlag 0x0078 JumpIfNot script_0801427C BeginBlock - Call sub_0807F934 + Call MakeCheckableObjectInteractable CallWithArg sub_0806DA04, 0x00000008 EndBlock script_08014298: diff --git a/data/scripts/sanctuary/script_Npc4EPedestal.inc b/data/scripts/sanctuary/script_Npc4EPedestal.inc index 12cce538..ec28c798 100644 --- a/data/scripts/sanctuary/script_Npc4EPedestal.inc +++ b/data/scripts/sanctuary/script_Npc4EPedestal.inc @@ -4,7 +4,7 @@ SCRIPT_START script_Npc4EPedestal DoPostScriptAction 0x0008 EndBlock BeginBlock - Call sub_0807F92C + Call MakePedestalInteractable CallWithArg sub_0806DA04, 0x00000003 EndBlock script_080134F8: diff --git a/data/scripts/sanctuary/script_Npc4ESecondSanctuary.inc b/data/scripts/sanctuary/script_Npc4ESecondSanctuary.inc index 5da4a9ad..4f456f91 100644 --- a/data/scripts/sanctuary/script_Npc4ESecondSanctuary.inc +++ b/data/scripts/sanctuary/script_Npc4ESecondSanctuary.inc @@ -4,7 +4,7 @@ SCRIPT_START script_Npc4ESecondSanctuary DoPostScriptAction 0x0008 EndBlock BeginBlock - Call sub_0807F92C + Call MakePedestalInteractable CallWithArg sub_0806DA04, 0x00000003 EndBlock script_0801373C: diff --git a/data/scripts/sanctuary/script_Npc4EThirdSanctuary.inc b/data/scripts/sanctuary/script_Npc4EThirdSanctuary.inc index abe02e5b..c88ca358 100644 --- a/data/scripts/sanctuary/script_Npc4EThirdSanctuary.inc +++ b/data/scripts/sanctuary/script_Npc4EThirdSanctuary.inc @@ -4,7 +4,7 @@ SCRIPT_START script_Npc4EThirdSanctuary DoPostScriptAction 0x0008 EndBlock BeginBlock - Call sub_0807F92C + Call MakePedestalInteractable CallWithArg sub_0806DA04, 0x00000003 EndBlock script_080138D0: diff --git a/data/scripts/southHyruleField/script_ForestMinish2.inc b/data/scripts/southHyruleField/script_ForestMinish2.inc index 5fa3a178..3919af08 100644 --- a/data/scripts/southHyruleField/script_ForestMinish2.inc +++ b/data/scripts/southHyruleField/script_ForestMinish2.inc @@ -1,7 +1,7 @@ @ Hyrule Fields? ForestMinish with Beanstock left to Minish Woods SCRIPT_START script_ForestMinish2 BeginBlock - Call sub_08060090 + Call ForestMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800C592: diff --git a/data/scripts/southHyruleField/script_SmithAtLinksHouse.inc b/data/scripts/southHyruleField/script_SmithAtLinksHouse.inc index 91e708c4..ce69f63d 100644 --- a/data/scripts/southHyruleField/script_SmithAtLinksHouse.inc +++ b/data/scripts/southHyruleField/script_SmithAtLinksHouse.inc @@ -2,8 +2,8 @@ SCRIPT_START script_SmithAtLinksHouse BeginBlock Call SetPriorityMessage - Call sub_08066288 - Call sub_08066274 + Call Smith_MakeInteractable + Call Smith_ChangeInteractableHitbox DoPostScriptAction 0x000a SetAnimation 0x000c SetAction 0x0003 diff --git a/data/scripts/unused/script_08013D04.inc b/data/scripts/unused/script_08013D04.inc index 42887fa3..d65b8f3d 100644 --- a/data/scripts/unused/script_08013D04.inc +++ b/data/scripts/unused/script_08013D04.inc @@ -1,7 +1,7 @@ @ TODO UNUSED? SCRIPT_START script_08013D04 BeginBlock - Call sub_0807F92C + Call MakePedestalInteractable DoPostScriptAction 0x0008 CallWithArg sub_0806DA04, 0x00000004 EndBlock diff --git a/data/scripts/unused/script_08013D44.inc b/data/scripts/unused/script_08013D44.inc index 98c44d0d..e8ea0b64 100644 --- a/data/scripts/unused/script_08013D44.inc +++ b/data/scripts/unused/script_08013D44.inc @@ -1,7 +1,7 @@ @ TODO UNUSED? SCRIPT_START script_08013D44 BeginBlock - Call sub_0807F92C + Call MakePedestalInteractable DoPostScriptAction 0x0008 CallWithArg sub_0806DA04, 0x00000004 EndBlock diff --git a/data/scripts/unused/script_08013D84.inc b/data/scripts/unused/script_08013D84.inc index bc67ff99..5eef78d1 100644 --- a/data/scripts/unused/script_08013D84.inc +++ b/data/scripts/unused/script_08013D84.inc @@ -1,7 +1,7 @@ @ TODO UNUSED? SCRIPT_START script_08013D84 BeginBlock - Call sub_0807F92C + Call MakePedestalInteractable DoPostScriptAction 0x0008 CallWithArg sub_0806DA04, 0x00000004 EndBlock diff --git a/data/scripts/unused/script_08013DC4.inc b/data/scripts/unused/script_08013DC4.inc index ac92c6db..3a744cbe 100644 --- a/data/scripts/unused/script_08013DC4.inc +++ b/data/scripts/unused/script_08013DC4.inc @@ -1,7 +1,7 @@ @ TODO UNUSED? SCRIPT_START script_08013DC4 BeginBlock - Call sub_0807F92C + Call MakePedestalInteractable DoPostScriptAction 0x0008 CallWithArg sub_0806DA04, 0x00000004 EndBlock diff --git a/data/scripts/westernWood/script_ForestMinish1.inc b/data/scripts/westernWood/script_ForestMinish1.inc index 3e681372..62197602 100644 --- a/data/scripts/westernWood/script_ForestMinish1.inc +++ b/data/scripts/westernWood/script_ForestMinish1.inc @@ -1,7 +1,7 @@ @ Western Wood Forest Minish SCRIPT_START script_ForestMinish1 BeginBlock - Call sub_08060090 + Call ForestMinish_MakeInteractable DoPostScriptAction 0x000a EndBlock script_0800C55E: diff --git a/data/scripts/westernWood/script_PercyInside.inc b/data/scripts/westernWood/script_PercyInside.inc index e1c5666a..a6a04076 100644 --- a/data/scripts/westernWood/script_PercyInside.inc +++ b/data/scripts/westernWood/script_PercyInside.inc @@ -4,7 +4,7 @@ SCRIPT_START script_PercyInside SetAnimationState 0x0004 DoPostScriptAction 0x0000 DoPostScriptAction 0x000a - Call sub_0806B60C + Call Percy_MakeInteractable EndBlock script_08012E9E: CheckEntityInteractType diff --git a/data/scripts/westernWood/script_PercyOutside.inc b/data/scripts/westernWood/script_PercyOutside.inc index 612d4b1a..a0f02b15 100644 --- a/data/scripts/westernWood/script_PercyOutside.inc +++ b/data/scripts/westernWood/script_PercyOutside.inc @@ -4,7 +4,7 @@ SCRIPT_START script_PercyOutside SetAnimationState 0x0004 CallWithArg sub_0807F3D8, 0x00000008 DoPostScriptAction 0x000a - Call sub_0806B60C + Call Percy_MakeInteractable EndBlock script_08012EDC: CheckEntityInteractType diff --git a/data/scripts/windRuins/script_Npc4EWindRuinsTextBoard.inc b/data/scripts/windRuins/script_Npc4EWindRuinsTextBoard.inc index 84713eee..6dd84635 100644 --- a/data/scripts/windRuins/script_Npc4EWindRuinsTextBoard.inc +++ b/data/scripts/windRuins/script_Npc4EWindRuinsTextBoard.inc @@ -1,7 +1,7 @@ @ After Mazaal NPC4E text board SCRIPT_START script_Npc4EWindRuinsTextBoard BeginBlock - Call sub_0807F934 + Call MakeCheckableObjectInteractable DoPostScriptAction 0x0008 SetIntVariable 0x00000001 Call sub_0806DA04 diff --git a/include/npc.h b/include/npc.h index 6588f1d4..d81ea4a7 100644 --- a/include/npc.h +++ b/include/npc.h @@ -84,12 +84,12 @@ void NPCInit(Entity* ent); void CollideFollowers(void); // TODO move? -void sub_08078784(Entity* ent, u32 arg1); +void AddInteractableWhenBigFuser(Entity* ent, u32 arg1); u32 sub_0806F5A4(u32); u32 GetFusionToOffer(Entity*); -void sub_08078778(Entity*); +void AddInteractableWhenBigObject(Entity*); void sub_0807000C(Entity*); -void sub_080787A8(Entity*, u32); +void AddInteractableAsMinishFuser(Entity*, u32); enum NPC { /*0x00*/ NPC_NONE_0, diff --git a/include/object.h b/include/object.h index 4d312d43..34160b18 100644 --- a/include/object.h +++ b/include/object.h @@ -14,8 +14,8 @@ #include "entity.h" #include "player.h" -void sub_080787C0(Entity*); -void sub_080787B4(Entity*); +void AddInteractablePedestal(Entity*); +void AddInteractableCheckableObject(Entity*); void sub_0808C650(Entity*, u32); u32 sub_0808C67C(void); void sub_0808C688(void); diff --git a/include/player.h b/include/player.h index 34c4b70e..1139d5f9 100644 --- a/include/player.h +++ b/include/player.h @@ -469,13 +469,13 @@ void UpdatePlayerSkills(void); u32 sub_0807AC54(Entity*); void sub_080792D8(void); u32 sub_08078F74(Entity*); -void sub_0807879C(Entity*); +void AddInteractableAsMinishObject(Entity*); void sub_08078D60(void); void PlayerSetNormalAndCollide(void); bool32 PlayerTryDropObject(ItemBehavior* arg0, u32 unk); void InitItemGetSequence(u32, u32, u32); void sub_0807B7D8(u32, u32, u32); -void sub_08078850(Entity*, u32, u32, const void*); +void SetInteractableObjectCollision(Entity*, u32, u32, const void*); void sub_08079D84(void); u32 sub_0807953C(void); void sub_0807BB68(const s16*, u32, u32); @@ -504,13 +504,13 @@ bool32 IsItemActivatedThisFrame(ItemBehavior*); bool32 IsItemActiveByInput(ItemBehavior*, PlayerInputState); bool32 sub_08077FEC(u32); void sub_08078180(void); -void sub_080784C8(); -void sub_08078790(Entity*, u32); -void sub_080787CC(Entity*); -s32 sub_08078800(Entity*); -s32 sub_0807887C(Entity*, u32, u32); -void sub_080788E0(Entity*); -s32 sub_08078904(); +void ResetPossibleInteraction(); +void AddInteractableFuser(Entity*, u32); +void AddInteractableSmallKeyLock(Entity*); +s32 AddInteractableBossDoor(Entity*); +s32 AddInteractableObject(Entity*, u32, u32); +void RemoveInteractableObject(Entity*); +s32 GetInteractableObjectIndex(); void sub_08078AC0(u32, u32, u32); void sub_08078B48(void); void sub_08078E84(Entity*, Entity*); diff --git a/include/structures.h b/include/structures.h index 9a50b897..eded84c7 100644 --- a/include/structures.h +++ b/include/structures.h @@ -260,7 +260,7 @@ typedef struct { typedef struct { /*0x00*/ u8 ignoreLayer; /* if bit 0 set, skip layer check for collision */ - /*0x01*/ u8 interactCondition; + /*0x01*/ u8 type; /*0x02*/ u8 interactDirections; /* lower 4 bits determine Link's allowed facing directions to interact, 0 to allow (0000WSEN) */ /*0x03*/ u8 kinstoneId; /*0x04*/ const u8* customHitbox; /* if set, array contains x, y, width and height */ diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index d1333784..97f67813 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -547,7 +547,7 @@ void sub_0802922C(Entity* this) { } void sub_0802925C(Entity* this) { - sub_08078784(this, GetFusionToOffer(this)); + AddInteractableWhenBigFuser(this, GetFusionToOffer(this)); } void sub_08029270(Entity* this) { diff --git a/src/entity.c b/src/entity.c index 18f11f75..2ac2b37f 100644 --- a/src/entity.c +++ b/src/entity.c @@ -351,7 +351,7 @@ void DeleteEntity(Entity* ent) { UnloadGFXSlots(ent); UnloadOBJPalette(ent); UnloadOBJPalette2(ent); - sub_080788E0(ent); + RemoveInteractableObject(ent); FreeCarryEntity(ent); sub_0805EC60(ent); sub_08017744(ent); diff --git a/src/gameUtils.c b/src/gameUtils.c index 8f9e9ace..eb2eb7fb 100644 --- a/src/gameUtils.c +++ b/src/gameUtils.c @@ -108,7 +108,7 @@ void InitializePlayer(void) { Entity* pl; - sub_080784C8(); + ResetPossibleInteraction(); MemClear(&gActiveItems, sizeof(gActiveItems)); MemClear(&gPlayerState, sizeof(gPlayerState)); MemFill32(0xffffffff, &gPlayerState.path_memory, sizeof(gPlayerState.path_memory)); diff --git a/src/npc/anju.c b/src/npc/anju.c index 59fa7ce1..fa66f537 100644 --- a/src/npc/anju.c +++ b/src/npc/anju.c @@ -28,9 +28,9 @@ void Anju(Entity* this) { } } -void sub_0806C354(Entity* this) { +void Anju_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Anju_Fusion(Entity* this) { diff --git a/src/npc/beedle.c b/src/npc/beedle.c index 351a53fb..28e124c6 100644 --- a/src/npc/beedle.c +++ b/src/npc/beedle.c @@ -72,7 +72,7 @@ void sub_080632C8(Entity* this) { void sub_080632E0(Entity* this) { if (LoadExtraSpriteData(this, gUnk_0810C8D4)) { InitializeAnimation(this, 0); - sub_08078778(this); + AddInteractableWhenBigObject(this); this->spriteSettings.draw = 1; this->action = 1; } @@ -103,7 +103,7 @@ void sub_08063390(Entity* this) { if (this->frame & ANIM_DONE) { this->action = 1; InitializeAnimation(this, GetAnimationState(this)); - sub_08078778(this); + AddInteractableWhenBigObject(this); } sub_0806ED78(this); } @@ -136,7 +136,7 @@ void sub_08063410(Entity* this) { this->type2 = 0; } sub_0807DD64(this); - sub_08078778(this); + AddInteractableWhenBigObject(this); } if (this->type != 0) { sub_0806346C(this); @@ -217,7 +217,7 @@ void sub_0806346C(Entity* this) { bVar1 = gUnk_0810C8F0[iVar2][iVar3][gPlayerEntity.animationState >> 1]; if (bVar1 != this->type2) { const gUnk_0810C89C_struct* temp = &gUnk_0810C89C[bVar1]; - sub_08078850(this, 1, temp->unk_04, temp); + SetInteractableObjectCollision(this, 1, temp->unk_04, temp); this->type2 = bVar1; } } diff --git a/src/npc/bladeBrothers.c b/src/npc/bladeBrothers.c index 93dbfccc..4532cfaf 100644 --- a/src/npc/bladeBrothers.c +++ b/src/npc/bladeBrothers.c @@ -235,7 +235,7 @@ void sub_08068A1C(Entity* this) { bVar1 = 3; } else { - sub_08078778(this); + AddInteractableWhenBigObject(this); offset = 2; bVar1 = 1; } @@ -292,7 +292,7 @@ void sub_08068AFC(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); sub_0807DD50(this); } diff --git a/src/npc/brocco.c b/src/npc/brocco.c index 28edb9a2..e02ca622 100644 --- a/src/npc/brocco.c +++ b/src/npc/brocco.c @@ -30,7 +30,7 @@ void sub_0806355C(Entity* this) { this->action = this->action + 1; this->spriteSettings.draw = 1; InitAnimationForceUpdate(this, 4); - sub_08078778(this); + AddInteractableWhenBigObject(this); } void sub_08063584(Entity* this) { @@ -114,9 +114,9 @@ void sub_080636D8(Entity* this) { ShowNPCDialogue(this, &gUnk_0810CAAC[gSave.global_progress]); } -void sub_080636F4(Entity* this) { +void Brocco_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Brocco_Fusion(Entity* this) { diff --git a/src/npc/carpenter.c b/src/npc/carpenter.c index e7781a50..f54795e0 100644 --- a/src/npc/carpenter.c +++ b/src/npc/carpenter.c @@ -91,9 +91,9 @@ void sub_08067304(Entity* this) { ShowNPCDialogue(this, &dialog); } -void sub_08067314(Entity* this) { +void Carpenter_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Carpenter_Fusion(Entity* this) { diff --git a/src/npc/cat.c b/src/npc/cat.c index 7eebb148..33586cb9 100644 --- a/src/npc/cat.c +++ b/src/npc/cat.c @@ -281,7 +281,7 @@ void sub_08067AAC(Entity* this) { this->spriteSettings.flipX = this->direction >> 4 ^ 1; sub_08067DCC(this, 3); - sub_08078850(this, 0, gUnk_0811110C[2], gUnk_0811110F); + SetInteractableObjectCollision(this, 0, gUnk_0811110C[2], gUnk_0811110F); } void sub_08067B08(Entity* this) { @@ -293,7 +293,7 @@ void sub_08067B08(Entity* this) { void sub_08067B34(Entity* this) { sub_08067DCC(this, 0); this->frameDuration = (Random() & 0x30) + 0xb4; - sub_08078850(this, 0, gUnk_0811110C[this->spriteSettings.flipX], gUnk_0811110F); + SetInteractableObjectCollision(this, 0, gUnk_0811110C[this->spriteSettings.flipX], gUnk_0811110F); } void sub_08067B70(Entity* this) { @@ -350,9 +350,9 @@ void sub_08067C44(Entity* this) { if (uVar5 != this->field_0x68.HALF.HI) { if (uVar5 == 0) { - sub_08078778(this); + AddInteractableWhenBigObject(this); } else { - sub_080787A8(this, this->field_0x68.HALF.LO); + AddInteractableAsMinishFuser(this, this->field_0x68.HALF.LO); } } diff --git a/src/npc/cow.c b/src/npc/cow.c index 7c99efb9..e74ed30a 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -209,9 +209,9 @@ void sub_0806920C(Entity* ent) { if (var1 != ent->field_0x6c.HALF.HI) { if (var1 == 0) { - sub_08078778(ent); + AddInteractableWhenBigObject(ent); } else { - sub_080787A8(ent, ent->field_0x6c.HALF.LO); + AddInteractableAsMinishFuser(ent, ent->field_0x6c.HALF.LO); } } diff --git a/src/npc/cucco.c b/src/npc/cucco.c index 5710d40a..7f1ad66a 100644 --- a/src/npc/cucco.c +++ b/src/npc/cucco.c @@ -16,7 +16,7 @@ void Cucco(Entity* this) { void Cucco_Init(Entity* this) { this->action++; this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_080787A8(this, this->field_0x68.HALF.LO); + AddInteractableAsMinishFuser(this, this->field_0x68.HALF.LO); SetDefaultPriority(this, PRIO_MESSAGE); this->subAction = 0; sub_0806E4EC(this); diff --git a/src/npc/cuccoChick.c b/src/npc/cuccoChick.c index 22d29486..75ccdce3 100644 --- a/src/npc/cuccoChick.c +++ b/src/npc/cuccoChick.c @@ -24,7 +24,7 @@ void CuccoChick(Entity* this) { void CuccoChick_Init(Entity* this) { this->action++; this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_080787A8(this, this->field_0x68.HALF.LO); + AddInteractableAsMinishFuser(this, this->field_0x68.HALF.LO); SetDefaultPriority(this, PRIO_MESSAGE); this->subAction = 0; sub_0806E764(this); diff --git a/src/npc/dampe.c b/src/npc/dampe.c index 6c587232..fad25893 100644 --- a/src/npc/dampe.c +++ b/src/npc/dampe.c @@ -33,9 +33,9 @@ void Dampe(Entity* this) { } } -void sub_0806BE3C(Entity* this) { +void Dampe_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Dampe_Fusion(Entity* this) { diff --git a/src/npc/din.c b/src/npc/din.c index b803d9a2..735f4282 100644 --- a/src/npc/din.c +++ b/src/npc/din.c @@ -29,12 +29,12 @@ void Din(Entity* this) { } } -void sub_08064828(Entity* this) { +void Din_MakeInteractable(Entity* this) { u32 tmp = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } - sub_08078784(this, tmp); + AddInteractableWhenBigFuser(this, tmp); } void Din_Fusion(Entity* this) { diff --git a/src/npc/dog.c b/src/npc/dog.c index e3c287d9..10427419 100644 --- a/src/npc/dog.c +++ b/src/npc/dog.c @@ -351,7 +351,7 @@ void sub_08069E50(Entity* this) { if (GetInventoryValue(ITEM_QST_DOGFOOD) == 2) { this->action = 7; InitAnimationForceUpdate(this, 0x29); - sub_080788E0(this); + RemoveInteractableObject(this); EnqueueSFX(SFX_VO_DOG); EnqueueSFX(SFX_TASK_COMPLETE); } @@ -432,9 +432,9 @@ void sub_08069FE8(Entity* this) { if (tmp != this->field_0x6a.HALF.LO) { if (tmp == 0) { - sub_08078778(this); + AddInteractableWhenBigObject(this); } else { - sub_080787A8(this, this->field_0x74.HALF.LO); + AddInteractableAsMinishFuser(this, this->field_0x74.HALF.LO); } } this->field_0x6a.HALF.LO = tmp; diff --git a/src/npc/drLeft.c b/src/npc/drLeft.c index d991340e..f8398668 100644 --- a/src/npc/drLeft.c +++ b/src/npc/drLeft.c @@ -83,5 +83,5 @@ void sub_0806C09C(Entity* this) { 8, 12, }; - sub_08078850(this, 1, 0, &gUnk_081133B4); + SetInteractableObjectCollision(this, 1, 0, &gUnk_081133B4); } diff --git a/src/npc/epona.c b/src/npc/epona.c index 544a749d..b06a7777 100644 --- a/src/npc/epona.c +++ b/src/npc/epona.c @@ -73,9 +73,9 @@ void sub_08065A64(Entity* this) { if (uVar2 != this->field_0x68.HALF.HI) { if (uVar2 == 0) { - sub_08078778(this); + AddInteractableWhenBigObject(this); } else { - sub_080787A8(this, this->field_0x68.HALF.LO); + AddInteractableAsMinishFuser(this, this->field_0x68.HALF.LO); } } this->field_0x68.HALF.HI = uVar2; diff --git a/src/npc/farmers.c b/src/npc/farmers.c index 1fa4357c..d3ccf5fd 100644 --- a/src/npc/farmers.c +++ b/src/npc/farmers.c @@ -59,8 +59,8 @@ void sub_0806BCC0(Entity* this) { } } -void sub_0806BCD4(Entity* this) { - sub_08078784(this, GetFusionToOffer(this)); +void Farmers_MakeInteractable(Entity* this) { + AddInteractableWhenBigFuser(this, GetFusionToOffer(this)); } void sub_0806BCE8(Entity* this) { diff --git a/src/npc/farore.c b/src/npc/farore.c index fa5f25c3..fc68d782 100644 --- a/src/npc/farore.c +++ b/src/npc/farore.c @@ -29,12 +29,12 @@ void Farore(Entity* this) { } } -void sub_08064A28(Entity* this) { +void Farore_MakeInteractable(Entity* this) { u32 tmp = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } - sub_08078784(this, tmp); + AddInteractableWhenBigFuser(this, tmp); } void Farore_Fusion(Entity* this) { diff --git a/src/npc/festari.c b/src/npc/festari.c index 781cc9cf..f9e0cb57 100644 --- a/src/npc/festari.c +++ b/src/npc/festari.c @@ -22,7 +22,7 @@ void sub_0805FE10(Entity* this) { this->spriteSettings.draw = TRUE; SetDefaultPriority(this, PRIO_MESSAGE); this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); sub_0807DD50(this); } diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index 9a898c67..b002d976 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -534,9 +534,9 @@ void ForestMinish(Entity* this) { } } -void sub_08060090(Entity* this) { +void ForestMinish_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void ForestMinish_Head(Entity* this) { diff --git a/src/npc/gentari.c b/src/npc/gentari.c index 3ba91821..d2d36028 100644 --- a/src/npc/gentari.c +++ b/src/npc/gentari.c @@ -9,7 +9,7 @@ void Gentari(Entity* this) { this->spriteSettings.draw = TRUE; SetDefaultPriority(this, PRIO_MESSAGE); this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); sub_0807DD50(this); break; case 1: diff --git a/src/npc/ghostBrothers.c b/src/npc/ghostBrothers.c index afcb7f2b..2fe80a97 100644 --- a/src/npc/ghostBrothers.c +++ b/src/npc/ghostBrothers.c @@ -110,9 +110,9 @@ void sub_08065CCC(Entity* this) { gScreen.controls.alphaBlend = 0x10; } -void sub_08065D00(Entity* this) { +void GhostBrothers_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void sub_08065D18(Entity* this) { @@ -219,7 +219,7 @@ void sub_08065EDC(Entity* this) { *(u16**)&this->field_0x6c = (++puVar3); } else { this->action++; - sub_08078778(this); + AddInteractableWhenBigObject(this); } } } diff --git a/src/npc/gina.c b/src/npc/gina.c index 0bb49f92..0095f7b3 100644 --- a/src/npc/gina.c +++ b/src/npc/gina.c @@ -10,7 +10,7 @@ void Gina(Entity* this) { this->spriteSettings.draw = 1; this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); sub_0807DD50(this); break; case 1: diff --git a/src/npc/gorman.c b/src/npc/gorman.c index bec184f5..abec9aae 100644 --- a/src/npc/gorman.c +++ b/src/npc/gorman.c @@ -70,7 +70,7 @@ void sub_080697C4(Entity* this) { if (LoadExtraSpriteData(this, gUnk_08111C3C)) { this->action = 1; InitializeAnimation(this, 2); - sub_08078778(this); + AddInteractableWhenBigObject(this); } } diff --git a/src/npc/goron.c b/src/npc/goron.c index 8056bf52..ce2fb731 100644 --- a/src/npc/goron.c +++ b/src/npc/goron.c @@ -30,7 +30,7 @@ void Goron(Entity* this) { } void sub_08069310(Entity* this) { - sub_08078778(this); + AddInteractableWhenBigObject(this); this->action = 1; InitAnimationForceUpdate(this, 2); } @@ -113,12 +113,12 @@ void sub_0806948C(Entity* this, ScriptExecutionContext* context) { gActiveScriptInfo.flags |= 1; } -void sub_080694B0(Entity* this) { +void Goron_MakeInteractable(Entity* this) { u32 kinstone = (u8)sub_08069480(this); if (CheckKinstoneFused(kinstone)) { - sub_08078778(this); + AddInteractableWhenBigObject(this); } else { - sub_08078784(this, kinstone); + AddInteractableWhenBigFuser(this, kinstone); } } diff --git a/src/npc/gregal.c b/src/npc/gregal.c index 7d867bf0..8a279a06 100644 --- a/src/npc/gregal.c +++ b/src/npc/gregal.c @@ -42,8 +42,8 @@ void sub_0806CAF4(Entity* this) { SortEntityAbove(this, npc); } sub_0807DD64(this); - sub_08078778(this); - sub_08078850(this, 1, (u8)gUnk_08113D84[1], gUnk_08113D84); + AddInteractableWhenBigObject(this); + SetInteractableObjectCollision(this, 1, (u8)gUnk_08113D84[1], gUnk_08113D84); } ExecuteScriptForEntity(this, NULL); HandleEntity0x82Actions(this); @@ -154,9 +154,9 @@ void sub_0806CD4C(Entity* this) { ChangeObjPalette(this, 0x110); } -void sub_0806CD58(Entity* this) { +void Gregal_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Gregal_Fusion(Entity* this) { diff --git a/src/npc/guard.c b/src/npc/guard.c index 661739ee..834c2f1b 100644 --- a/src/npc/guard.c +++ b/src/npc/guard.c @@ -294,7 +294,7 @@ void sub_08063D44(Entity* this) { ent->subtimer = 60; break; case 4 ... 5: - sub_08078778(this); + AddInteractableWhenBigObject(this); break; } this->action++; diff --git a/src/npc/hurdyGurdyMan.c b/src/npc/hurdyGurdyMan.c index 46ee55f0..1c45bbf3 100644 --- a/src/npc/hurdyGurdyMan.c +++ b/src/npc/hurdyGurdyMan.c @@ -100,9 +100,9 @@ void sub_0806E418(Entity* this) { ShowNPCDialogue(this, &dialogs[tmp]); } -void sub_0806E440(Entity* this) { +void HurdyGurdyMan_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void HurdyGurdyMan_Fusion(Entity* this) { diff --git a/src/npc/kid.c b/src/npc/kid.c index c9ddc000..fe03c2ef 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -208,7 +208,7 @@ void sub_080620F4(Entity* this) { this->field_0x68.HALF.LO = 0; this->action = 1; InitAnimationForceUpdate(this, 2); - sub_08078778(this); + AddInteractableWhenBigObject(this); } } @@ -313,7 +313,7 @@ void sub_08062500(Entity* this) { this->myHeap = zMalloc(sizeof(KidHeap)); if (this->myHeap != NULL) { this->field_0x68.HALF.LO = 1; - sub_080788E0(this); + RemoveInteractableObject(this); this->hitbox = NULL; sub_0806252C(this); } @@ -596,9 +596,9 @@ void sub_08062948(Entity* this, ScriptExecutionContext* context) { } } -void sub_08062A48(Entity* this, ScriptExecutionContext* context) { +void Kid_MakeInteractable(Entity* this, ScriptExecutionContext* context) { this->field_0x6a.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x6a.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x6a.HALF.LO); } void Kid_Fusion(Entity* this) { diff --git a/src/npc/kingDaltus.c b/src/npc/kingDaltus.c index 2d9c2989..3bdf60a2 100644 --- a/src/npc/kingDaltus.c +++ b/src/npc/kingDaltus.c @@ -40,7 +40,7 @@ void sub_08066654(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); InitAnimationForceUpdate(this, 2); } @@ -86,8 +86,8 @@ void sub_08066718(Entity* this) { } } -void sub_0806672C(Entity* this) { - sub_08078784(this, this->field_0x68.HALF.LO); +void KingDaltus_MakeInteractable(Entity* this) { + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void sub_0806673C(Entity* this) { diff --git a/src/npc/librari.c b/src/npc/librari.c index 819b5a61..e725b669 100644 --- a/src/npc/librari.c +++ b/src/npc/librari.c @@ -10,7 +10,7 @@ void Librari(Entity* this) { this->spriteSettings.draw = TRUE; this->animationState = this->timer; this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); SetDefaultPriority(this, PRIO_MESSAGE); sub_0807DD50(this); break; diff --git a/src/npc/malon.c b/src/npc/malon.c index 0270006d..1ab967c0 100644 --- a/src/npc/malon.c +++ b/src/npc/malon.c @@ -44,7 +44,7 @@ void sub_08065888(Entity* this) { this->spriteSettings.draw = 1; this->animationState = 4; this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); sub_0807DD50(this); } diff --git a/src/npc/mama.c b/src/npc/mama.c index 95758b1c..0e2b7620 100644 --- a/src/npc/mama.c +++ b/src/npc/mama.c @@ -92,9 +92,9 @@ void sub_0806C4DC(Entity* this) { ShowNPCDialogue(this, &dialogs[gSave.global_progress]); } -void sub_0806C4F8(Entity* this) { +void Mama_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Mama_Fusion(Entity* this) { diff --git a/src/npc/mayorHagen.c b/src/npc/mayorHagen.c index 1cef31bc..f2d8b0ee 100644 --- a/src/npc/mayorHagen.c +++ b/src/npc/mayorHagen.c @@ -37,15 +37,15 @@ void MayorHagen(Entity* this) { } } -void sub_0806CE5C(Entity* this) { +void MayorHagen_MakeInteractable(Entity* this) { static const u8 gUnk_08113F44[] = { 0, 8, 8, 16, }; - sub_08078784(this, GetFusionToOffer(this)); - sub_08078850(this, 1, 0, gUnk_08113F44); + AddInteractableWhenBigFuser(this, GetFusionToOffer(this)); + SetInteractableObjectCollision(this, 1, 0, gUnk_08113F44); } void sub_0806CE80(Entity* this) { diff --git a/src/npc/melari.c b/src/npc/melari.c index 5c72230b..59760a78 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -29,7 +29,7 @@ void sub_08068708(Entity* this) { if (LoadExtraSpriteData(this, gUnk_08111520)) { this->action = 1; InitializeAnimation(this, 0); - sub_08078778(this); + AddInteractableWhenBigObject(this); } } @@ -100,9 +100,9 @@ void sub_08068780(Entity* this) { } } -void sub_08068884(Entity* this) { +void Melari_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Melari_Head(Entity* this) { diff --git a/src/npc/ministerPotho.c b/src/npc/ministerPotho.c index 9ee87713..fe5806c1 100644 --- a/src/npc/ministerPotho.c +++ b/src/npc/ministerPotho.c @@ -27,7 +27,7 @@ void sub_080667E4(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; InitAnimationForceUpdate(this, 2); - sub_08078778(this); + AddInteractableWhenBigObject(this); } void sub_08066808(Entity* this) { @@ -81,8 +81,8 @@ void sub_08066864(Entity* this) { } } -void sub_080668F0(Entity* this) { - sub_08078784(this, GetFusionToOffer(this)); +void MinisterPotho_MakeInteractable(Entity* this) { + AddInteractableWhenBigFuser(this, GetFusionToOffer(this)); } void sub_08066904(Entity* this) { diff --git a/src/npc/mountainMinish.c b/src/npc/mountainMinish.c index ca0d3574..bfa0e17c 100644 --- a/src/npc/mountainMinish.c +++ b/src/npc/mountainMinish.c @@ -57,7 +57,7 @@ void MountainMinish(Entity* this) { void sub_08067E60(Entity* this) { if (LoadExtraSpriteData(this, gUnk_08111358)) { this->action = 1; - sub_08078778(this); + AddInteractableWhenBigObject(this); InitializeAnimation(this, 2); } } @@ -179,9 +179,9 @@ void sub_08067EF0(Entity* this) { } } -void sub_08068104(Entity* this) { +void MountainMinish_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void sub_0806811C(Entity* this) { diff --git a/src/npc/mutoh.c b/src/npc/mutoh.c index 5cb1691e..a93b7258 100644 --- a/src/npc/mutoh.c +++ b/src/npc/mutoh.c @@ -82,9 +82,9 @@ void sub_080670E4(Entity* this) { ShowNPCDialogue(this, &dialogs[gSave.global_progress]); } -void sub_08067100(Entity* this) { +void Mutoh_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Mutoh_Fusion(Entity* this) { diff --git a/src/npc/nayru.c b/src/npc/nayru.c index 35176f0b..f0949f24 100644 --- a/src/npc/nayru.c +++ b/src/npc/nayru.c @@ -29,12 +29,12 @@ void Nayru(Entity* this) { } } -void sub_08064928(Entity* this) { +void Nayru_MakeInteractable(Entity* this) { u32 tmp = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } - sub_08078784(this, tmp); + AddInteractableWhenBigFuser(this, tmp); } void Nayru_Fusion(Entity* this) { diff --git a/src/npc/npc23.c b/src/npc/npc23.c index eccd933c..a07b14b1 100644 --- a/src/npc/npc23.c +++ b/src/npc/npc23.c @@ -38,7 +38,7 @@ void sub_080662F8(Entity* this) { this->parent = &gPlayerEntity; this->cutsceneBeh.HWORD = 0; sub_08066490(this, this->parent); - sub_08078778(this); + AddInteractableWhenBigObject(this); } void sub_08066358(Entity* this) { @@ -56,7 +56,7 @@ void sub_08066358(Entity* this) { this->speed = 0x80; this->cutsceneBeh.HWORD = 1; gPauseMenuOptions.disabled = 1; - sub_080788E0(this); + RemoveInteractableObject(this); } } else { sub_08066490(this, this->parent); diff --git a/src/npc/npc26.c b/src/npc/npc26.c index a9c19cf2..fddbf460 100644 --- a/src/npc/npc26.c +++ b/src/npc/npc26.c @@ -18,7 +18,7 @@ static void sub_080669B8(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; InitAnimationForceUpdate(this, 2); - sub_08078778(this); + AddInteractableWhenBigObject(this); } static void sub_080669DC(Entity* this) { diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 8baf84d3..18caefb0 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -46,14 +46,13 @@ void sub_0806DA04(Entity* this, ScriptExecutionContext* context) { // TODO gUnk_0811415C should be a gUnk_0810C89C_struct[], but then a lot of bytes everywhere are wrong? gUnk_0810C89C_struct* a = (gUnk_0810C89C_struct*)&( (gUnk_0810C89C_struct*)gUnk_0811415C)[context->intVariable]; // cast necessary to no longer make it a const* ? - sub_08078850(this, 1, (u8)a->unk_04, a); + SetInteractableObjectCollision(this, 1, (u8)a->unk_04, a); } void NPC4E_DoScreenTransition(Entity* this, ScriptExecutionContext* context) { sub_0808091C(gNpc4ETransitions[context->intVariable], gNpc4ETransitionTypes[context->intVariable]); } -// Returns the kinstone id? u8 NPC4E_GetKinstoneId(Entity* this) { u32 result; @@ -97,8 +96,8 @@ void sub_0806DAAC(Entity* this, ScriptExecutionContext* context) { } // maybe actually execute the kinstone fusion? -void sub_0806DAD0(Entity* this) { - sub_08078790(this, NPC4E_GetKinstoneId(this)); +void NPC4E_MakeFuserInteractable(Entity* this) { + AddInteractableFuser(this, NPC4E_GetKinstoneId(this)); } void sub_0806DAE8(Entity* this) { diff --git a/src/npc/npc5.c b/src/npc/npc5.c index 2a78cc26..f8e6707e 100644 --- a/src/npc/npc5.c +++ b/src/npc/npc5.c @@ -875,7 +875,7 @@ void sub_08061ACC(Entity* this) { this->subAction = 0xff; this->timer = 0; this->followerFlag = this->followerFlag & 0xfe; - sub_08078778(this); + AddInteractableWhenBigObject(this); sub_08061AFC(this); } diff --git a/src/npc/npc9.c b/src/npc/npc9.c index 76a69b93..a8361648 100644 --- a/src/npc/npc9.c +++ b/src/npc/npc9.c @@ -22,7 +22,7 @@ void sub_08062AF0(Entity* this) { this->action = 1; this->spriteSettings.draw = TRUE; InitializeAnimation(this, 0); - sub_08078778(this); + AddInteractableWhenBigObject(this); } void sub_08062B14(Entity* this) { diff --git a/src/npc/percy.c b/src/npc/percy.c index 22753a85..21a205f4 100644 --- a/src/npc/percy.c +++ b/src/npc/percy.c @@ -41,7 +41,7 @@ void sub_0806B3CC(Entity* this) { } this->action = 1; InitializeAnimation(this, 0); - sub_08078778(this); + AddInteractableWhenBigObject(this); } GetNextFrame(this); if (this->interactType != 0) { @@ -161,9 +161,9 @@ void sub_0806B540(Entity* this) { gActiveScriptInfo.commandSize = 0; } -void sub_0806B60C(Entity* this) { +void Percy_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Percy_Fusion(Entity* this) { diff --git a/src/npc/picolyteBottle.c b/src/npc/picolyteBottle.c index be49c2f3..80ebfc0a 100644 --- a/src/npc/picolyteBottle.c +++ b/src/npc/picolyteBottle.c @@ -26,7 +26,7 @@ void PicolyteBottle_Action1(PicolyteBottleEntity* this); void PicolyteBottle_Action2(PicolyteBottleEntity* this); void nullsub_111(PicolyteBottleEntity* this); -extern void sub_08078828(Entity*); +extern void AddInteractableChest(Entity*); void PicolyteBottle(Entity* this) { static void (*const PicolyteBottle_Actions[])(PicolyteBottleEntity*) = { @@ -97,7 +97,7 @@ void PicolyteBottle_Action2(PicolyteBottleEntity* this) { super->child = obj; CopyPosition(super, obj); } - sub_080788E0(super); + RemoveInteractableObject(super); sub_0807B7D8(0x74, this->unk76, 2); } } @@ -149,7 +149,7 @@ void sub_0806E0DC(PicolyteBottleEntity* this) { DeleteEntity(super->child); super->child = NULL; } - sub_08078828(super); + AddInteractableChest(super); sub_0807B7D8(0x73, this->unk76, 2); } else { super->action = 3; diff --git a/src/npc/pina.c b/src/npc/pina.c index 00d73a13..f11cbdd9 100644 --- a/src/npc/pina.c +++ b/src/npc/pina.c @@ -32,7 +32,7 @@ void sub_08063A98(Entity* this) { this->action++; this->spriteSettings.draw = 1; InitAnimationForceUpdate(this, 4); - sub_08078778(this); + AddInteractableWhenBigObject(this); } void sub_08063AC0(Entity* this) { @@ -150,9 +150,9 @@ void sub_08063C90(Entity* this) { ShowNPCDialogue(this, &gUnk_0810CE04[gSave.global_progress]); } -void sub_08063CAC(Entity* this) { +void Pina_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Pina_Fusion(Entity* this) { diff --git a/src/npc/postman.c b/src/npc/postman.c index 06fa095c..9e7ce529 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -8,7 +8,7 @@ extern void sub_08060528(Entity*); extern void sub_080604DC(Entity*); extern void sub_080606D8(Entity*); -extern void sub_080606C0(Entity*); +extern void Postman_MakeInteractable(Entity*); const Coords gUnk_0810A66C[] = { { .HALF = { 0x0, 0x0 } }, { .HALF = { 0x48, 0xa8 } }, { .HALF = { 0x0, 0xf0 } }, @@ -274,7 +274,7 @@ void sub_08060528(Entity* this) { this->field_0x6a.HWORD = 0; this->zVelocity = Q_16_16(2.0); this->field_0x6c.HALF.HI = 1; - sub_080788E0(this); + RemoveInteractableObject(this); EnqueueSFX(SFX_PLY_JUMP); } else { this->field_0x6a.HWORD--; @@ -283,7 +283,7 @@ void sub_08060528(Entity* this) { GravityUpdate(this, Q_8_8(24.0)); if (((this->field_0x6c.HALF.HI != 0) && (this->zVelocity == 0)) && this->z.WORD == 0) { this->field_0x6c.HALF.HI = 0; - sub_080606C0(this); + Postman_MakeInteractable(this); } if (this->z.WORD >= 0 && ((gPlayerEntity.collisionLayer == 0 || (this->collisionLayer == gPlayerEntity.collisionLayer)))) { @@ -292,9 +292,9 @@ void sub_08060528(Entity* this) { sub_0800451C(this); } -void sub_080606C0(Entity* this) { +void Postman_MakeInteractable(Entity* this) { this->field_0x6c.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x6c.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x6c.HALF.LO); } void sub_080606D8(Entity* this) { @@ -336,7 +336,7 @@ void sub_0806076C(Entity* this, ScriptExecutionContext* context) { } this->field_0x68.HALF.HI++; this->collisionLayer = 1; - sub_080606C0(this); + Postman_MakeInteractable(this); pbVar10 = gUnk_0810A918[(s8)this->field_0x68.HALF.LO]; pbVar10 += (s8)this->field_0x68.HALF.HI; do { diff --git a/src/npc/rem.c b/src/npc/rem.c index c8834192..b9b5f61e 100644 --- a/src/npc/rem.c +++ b/src/npc/rem.c @@ -328,10 +328,10 @@ void sub_0806A914(Entity* this) { } } -void sub_0806A93C(Entity* this) { +void Rem_MakeInteractable(Entity* this) { static const u8 gUnk_0811229C[] = { 0, 6, 10, 16 }; - sub_08078778(this); - sub_08078850(this, 0, 0, &gUnk_0811229C); + AddInteractableWhenBigObject(this); + SetInteractableObjectCollision(this, 0, 0, &gUnk_0811229C); } void sub_0806A958(Entity* this) { diff --git a/src/npc/sittingPerson.c b/src/npc/sittingPerson.c index b7f7af0c..c5f63d07 100644 --- a/src/npc/sittingPerson.c +++ b/src/npc/sittingPerson.c @@ -235,9 +235,9 @@ void SittingPerson_Head(Entity* this) { sub_0807000C(this); } -void sub_080639D0(Entity* this) { +void SittingPerson_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void SittingPerson_Fusion(Entity* this) { diff --git a/src/npc/smallTownMinish.c b/src/npc/smallTownMinish.c index 96e4d1b4..7c35917d 100644 --- a/src/npc/smallTownMinish.c +++ b/src/npc/smallTownMinish.c @@ -14,7 +14,7 @@ void SmallTownMinish(Entity* this) { this->action++; this->hitbox = (Hitbox*)&gUnk_081142FC; sub_0807DD50(this); - sub_08078850(this, 1, 0, gUnk_08114304); + SetInteractableObjectCollision(this, 1, 0, gUnk_08114304); } else { sub_0807DD94(this, NULL); } diff --git a/src/npc/smith.c b/src/npc/smith.c index 08013aa7..df3bf7c4 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -205,18 +205,18 @@ void sub_08066258(void) { SoundReq(hammerSounds[Random() & 7]); } -void sub_08066274(Entity* this) { +void Smith_ChangeInteractableHitbox(Entity* this) { static const u8 gUnk_081103E0[] = { 0, 6, 8, 12, }; - sub_08078850(this, 1, 0, &gUnk_081103E0); + SetInteractableObjectCollision(this, 1, 0, &gUnk_081103E0); } -void sub_08066288(Entity* this) { - sub_08078784(this, this->field_0x68.HALF.LO); +void Smith_MakeInteractable(Entity* this) { + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Smith_Fusion(Entity* this) { diff --git a/src/npc/stamp.c b/src/npc/stamp.c index 3c932d97..0ac805ec 100644 --- a/src/npc/stamp.c +++ b/src/npc/stamp.c @@ -35,7 +35,7 @@ void sub_08062BD4(Entity* ent) { ent->action = 1; ent->spriteSettings.draw = 1; InitializeAnimation(ent, 0); - sub_08078778(ent); + AddInteractableWhenBigObject(ent); } void sub_08062BF8(Entity* ent) { diff --git a/src/npc/stockwell.c b/src/npc/stockwell.c index d7187ee3..b3480117 100644 --- a/src/npc/stockwell.c +++ b/src/npc/stockwell.c @@ -48,9 +48,9 @@ void sub_08065080(Entity* this) { this->spriteSettings.draw = 1; SetDefaultPriority(this, PRIO_MESSAGE); InitializeAnimation(this, 4); - sub_08078778(this); + AddInteractableWhenBigObject(this); #ifndef EU - sub_08078850(this, 0, 0, &gUnk_0810FDA0); + SetInteractableObjectCollision(this, 0, 0, &gUnk_0810FDA0); #endif context = StartCutscene(this, &script_Stockwell); *(ScriptExecutionContext**)&this->cutsceneBeh = context; diff --git a/src/npc/sturgeon.c b/src/npc/sturgeon.c index d4902142..05416de9 100644 --- a/src/npc/sturgeon.c +++ b/src/npc/sturgeon.c @@ -28,7 +28,7 @@ extern const u16 gUnk_0810FA54[]; // }; extern u32 gUnk_0810FA5A; // TODO second parameter of sub_0806EE04 -void sub_08064CC0(Entity* this); +void Sturgeon_MakeInteractable(Entity* this); void sub_08064C9C(Entity* this); void sub_08064CD8(Entity* this); @@ -68,7 +68,7 @@ void sub_08064B44(Entity* this) { if (LoadExtraSpriteData(this, gUnk_0810FA38)) { InitializeAnimation(this, 2); sub_0806EE04(this, &gUnk_0810FA5A, 0); - sub_08064CC0(this); + Sturgeon_MakeInteractable(this); this->action = 1; this->subAction = 0; this->spriteSettings.draw = 1; @@ -140,9 +140,9 @@ void sub_08064C9C(Entity* this) { } } -void sub_08064CC0(Entity* this) { +void Sturgeon_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void sub_08064CD8(Entity* this) { diff --git a/src/npc/talon.c b/src/npc/talon.c index b2d99ca8..dc86ba85 100644 --- a/src/npc/talon.c +++ b/src/npc/talon.c @@ -37,7 +37,7 @@ void Talon(Entity* this) { void sub_08065570(Entity* this) { if (LoadExtraSpriteData(this, gUnk_0810FEB0)) { InitializeAnimation(this, 0); - sub_08078778(this); + AddInteractableWhenBigObject(this); this->action = 1; this->subtimer = 1; this->animationState = 2; @@ -79,7 +79,7 @@ void sub_08065608(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); sub_0807DD50(this); } } diff --git a/src/npc/teachers.c b/src/npc/teachers.c index 763bf448..05e0d3f6 100644 --- a/src/npc/teachers.c +++ b/src/npc/teachers.c @@ -42,9 +42,9 @@ void Teachers(Entity* this) { } } -void sub_0806C674(Entity* this) { +void Teachers_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void Teachers_Head(Entity* this) { diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c index cb22cf1d..1d5cfabf 100644 --- a/src/npc/tingleSiblings.c +++ b/src/npc/tingleSiblings.c @@ -83,7 +83,7 @@ void sub_08064DE4(Entity* this) { } } -void sub_08064EA4(Entity* this) { +void TingleSiblings_MakeInteractable(Entity* this) { this->field_0x68.HALF.LO = GetFusionToOffer(this); switch (this->type) { case 0: @@ -99,7 +99,7 @@ void sub_08064EA4(Entity* this) { default: break; } - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void sub_08064EE8(Entity* this) { diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index 69f729d7..6cf3aa45 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -228,7 +228,7 @@ void sub_0806ACC4(Entity* this) { } if (this->type == 1) { u8 idx = gPlayerEntity.animationState >> 1; - sub_08078850(this, 1, gUnk_081126E4[idx], gUnk_081126D4[idx]); + SetInteractableObjectCollision(this, 1, gUnk_081126E4[idx], gUnk_081126D4[idx]); } } break; @@ -250,8 +250,8 @@ void sub_0806ACC4(Entity* this) { } } -void sub_0806ADFC(Entity* this) { - sub_08078784(this, this->field_0x68.HALF.LO); +void TownMinish_MakeInteractable(Entity* this) { + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void TownMinish_Head(Entity* this) { diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index 862e00f5..adb973cb 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -15,8 +15,8 @@ extern void sub_08062048(Entity*); extern struct_0810B680 gUnk_0810B680[]; extern SpriteLoadData* gUnk_0810B6EC[]; -extern u32 gUnk_0810B740[]; // TODO fourth parameter of sub_08078850 -extern u8 gUnk_0810B748[]; // TODO third parameter of sub_08078850 +extern u32 gUnk_0810B740[]; // TODO fourth parameter of SetInteractableObjectCollision +extern u8 gUnk_0810B748[]; // TODO third parameter of SetInteractableObjectCollision extern u16 gUnk_0810B74A[]; extern void (*const gUnk_0810B774[])(Entity*); extern void (*const gUnk_0810B77C[])(Entity*); @@ -150,11 +150,11 @@ void sub_08061E50(Entity* this) { } } -void sub_08061E70(Entity* this) { +void Townsperson_MakeInteractable(Entity* this) { if (this->id == 6) { - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } else { - sub_08078778(this); + AddInteractableWhenBigObject(this); } } @@ -236,7 +236,7 @@ void sub_08061FB0(Entity* this) { void sub_08061FB8(Entity* this, ScriptExecutionContext* context) { u8* temp = gUnk_0810B748; - sub_08078850(this, 1, temp[context->intVariable], &gUnk_0810B740[context->intVariable]); + SetInteractableObjectCollision(this, 1, temp[context->intVariable], &gUnk_0810B740[context->intVariable]); } void sub_08061FD8(Entity* this) { diff --git a/src/npc/windTribespeople.c b/src/npc/windTribespeople.c index d60e0b37..aa4f9b31 100644 --- a/src/npc/windTribespeople.c +++ b/src/npc/windTribespeople.c @@ -78,12 +78,12 @@ void sub_0806C85C(Entity* this) { } } -void sub_0806C870(Entity* this) { +void WindTribespeople_MakeInteractable(Entity* this) { u8 bVar1; bVar1 = GetFusionToOffer(this); this->field_0x68.HALF.LO = bVar1; - sub_08078784(this, this->field_0x68.HALF.LO); + AddInteractableWhenBigFuser(this, this->field_0x68.HALF.LO); } void WindTribespeople_Head(Entity* this) { diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index ae67fcba..38a89062 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -42,7 +42,7 @@ void sub_0806854C(Entity* this, u32* none) { this->myHeap = zMalloc(sizeof(ZeldaFollowerHeap)); if (this->myHeap != NULL) { this->field_0x68.HALF.LO = 1; - sub_080788E0(this); + RemoveInteractableObject(this); this->hitbox = NULL; sub_08068578(this); } diff --git a/src/object/bossDoor.c b/src/object/bossDoor.c index 62ce4aeb..c1b3bcff 100644 --- a/src/object/bossDoor.c +++ b/src/object/bossDoor.c @@ -69,8 +69,8 @@ void BossDoor_Init(BossDoorEntity* this) { super->action = 1; super->spriteSettings.draw = 1; sub_0808C500(this); - sub_08078800(super); - sub_08078850(super, 0, gLockedDoorInteractDirections[this->unk_76], 0); + AddInteractableBossDoor(super); + SetInteractableObjectCollision(super, 0, gLockedDoorInteractDirections[this->unk_76], NULL); break; case 1: super->action = 4; @@ -87,7 +87,7 @@ void BossDoor_Init(BossDoorEntity* this) { void BossDoor_Action1(BossDoorEntity* this) { if (super->interactType != 0) { super->action = 2; - sub_080788E0(super); + RemoveInteractableObject(super); SetFlag(this->unk_86); } } diff --git a/src/object/chestSpawner.c b/src/object/chestSpawner.c index dfe03a92..8a721a58 100644 --- a/src/object/chestSpawner.c +++ b/src/object/chestSpawner.c @@ -26,7 +26,7 @@ extern const Hitbox gUnk_0811F8A8; extern const Hitbox gUnk_0811F8B0; void sub_080842D8(ChestSpawnerEntity*); -void sub_08078828(ChestSpawnerEntity*); +void AddInteractableChest(ChestSpawnerEntity*); void sub_08083E20(ChestSpawnerEntity*); void sub_08084074(u32); void sub_080840A8(s32, s32); @@ -76,7 +76,7 @@ void sub_08083E20(ChestSpawnerEntity* this) { super->spriteSettings.draw = 1; super->spriteRendering.alphaBlend = 0; sub_080842D8(this); - sub_08078828(this); + AddInteractableChest(this); } void ChestSpawner_Type2Init(ChestSpawnerEntity* this) { super->hitbox = (Hitbox*)&gUnk_0811F8B0; @@ -153,7 +153,7 @@ void ChestSpawner_Type2Action3(ChestSpawnerEntity* this) { if (super->interactType != 0) { super->action = 4; super->subtimer = 30; - sub_080788E0(super); + RemoveInteractableObject(super); RequestPriorityDuration(super, 60); SoundReq(SFX_CHEST_OPEN); } diff --git a/src/object/cutsceneMiscObject.c b/src/object/cutsceneMiscObject.c index 75911fe8..54423cc0 100644 --- a/src/object/cutsceneMiscObject.c +++ b/src/object/cutsceneMiscObject.c @@ -22,7 +22,7 @@ extern u16 gUnk_08122B1E[]; extern Coords8 gUnk_08122B2E[]; // TODO struct xy typedef struct { Hitbox hit; - u8 _8[4]; // TODO fourth param of sub_08078850 + u8 _8[4]; // TODO fourth param of SetInteractableObjectCollision u8 _c; } HitboxCfg; extern HitboxCfg gUnk_08122B3C[]; @@ -395,13 +395,13 @@ void sub_08094FA8(CutsceneMiscObjectEntity* this) { super->action = 1; super->frameIndex = 0; super->spritePriority.b0 = 7; - sub_080787B4(super); + AddInteractableCheckableObject(super); break; case 1: if (super->interactType != 0) { super->interactType = 0; super->action = 2; - sub_080788E0(super); + RemoveInteractableObject(super); gPlayerState.queued_action = PLAYER_EMPTYBOTTLE; gPlayerState.field_0x38 = 54; #ifndef EU @@ -449,13 +449,13 @@ void sub_08095088(CutsceneMiscObjectEntity* this) { DeleteThisEntity(); super->action = 1; super->spritePriority.b0 = 7; - sub_080787B4(super); + AddInteractableCheckableObject(super); break; case 1: if (super->interactType != 0) { super->interactType = 0; super->action = 2; - sub_080788E0(super); + RemoveInteractableObject(super); CreateEzloHint(TEXT_INDEX(TEXT_BELARI, 0x1F), 0); } break; @@ -1322,6 +1322,6 @@ void sub_080962E8(CutsceneMiscObjectEntity* this) { void sub_080962F8(CutsceneMiscObjectEntity* this, ScriptExecutionContext* ctx) { HitboxCfg* cfg = &gUnk_08122B3C[ctx->intVariable]; - sub_08078850(super, 1, cfg->_c, cfg->_8); + SetInteractableObjectCollision(super, 1, cfg->_c, cfg->_8); super->hitbox = &cfg->hit; } diff --git a/src/object/figurineDevice.c b/src/object/figurineDevice.c index d52ac049..bf406be3 100644 --- a/src/object/figurineDevice.c +++ b/src/object/figurineDevice.c @@ -79,7 +79,7 @@ void FigurineDevice_Init(FigurineDeviceEntity* this) { case 0: if (CheckLocalFlag(SHOP07_TANA)) { this->unk_7a = 1; - sub_080787B4(super); + AddInteractableCheckableObject(super); } else { this->unk_7a = 0; } @@ -123,7 +123,7 @@ void FigurineDevice_Action1(FigurineDeviceEntity* this) { switch (this->unk_7a) { case 0: this->unk_7a = 1; - sub_080787B4(super); + AddInteractableCheckableObject(super); break; case 1: if (super->interactType != 0) { @@ -142,7 +142,7 @@ void FigurineDevice_Action1(FigurineDeviceEntity* this) { default: if (CheckRoomFlag(2) == 0) { this->unk_7a = 1; - sub_080787B4(super); + AddInteractableCheckableObject(super); } break; } diff --git a/src/object/itemForSale.c b/src/object/itemForSale.c index 342ba851..0f4b1fa5 100644 --- a/src/object/itemForSale.c +++ b/src/object/itemForSale.c @@ -27,14 +27,14 @@ typedef struct { // not match. } ModifiedParentEntity; -extern u32 sub_080787D8(Entity*); +extern u32 AddInteractableShopItem(Entity*); extern void* sub_080784E4(void); void ItemForSale_Init(ItemForSaleEntity*); void ItemForSale_Action1(ItemForSaleEntity*); void ItemForSale_Action2(ItemForSaleEntity*); void ItemForSale_Action3(ItemForSaleEntity*); -void sub_08081A5C(ItemForSaleEntity*); +void ItemForSale_MakeInteractable(ItemForSaleEntity*); void sub_080819B4(ItemForSaleEntity*); void sub_08081AB0(void); @@ -71,7 +71,7 @@ void ItemForSale_Init(ItemForSaleEntity* this) { SetDefaultPriority(super, 6); #endif super->child = super; - sub_08081A5C(this); + ItemForSale_MakeInteractable(this); switch (super->timer) { case 0: super->hitbox = (Hitbox*)&gUnk_080FD328; @@ -154,11 +154,11 @@ void sub_080819B4(ItemForSaleEntity* this) { super->collisionLayer = 1; super->spritePriority.b0 = 4; UpdateSpriteForCollisionLayer(super); - sub_08081A5C(this); + ItemForSale_MakeInteractable(this); } -void sub_08081A5C(ItemForSaleEntity* this) { - u32 tmp = sub_080787D8(super); +void ItemForSale_MakeInteractable(ItemForSaleEntity* this) { + u32 tmp = AddInteractableShopItem(super); if (super->timer == 1) { gPossibleInteraction.candidates[tmp].interactDirections = 0; } diff --git a/src/object/lockedDoor.c b/src/object/lockedDoor.c index 91cc9ea7..c4d3d8bf 100644 --- a/src/object/lockedDoor.c +++ b/src/object/lockedDoor.c @@ -133,8 +133,8 @@ void LockedDoor_Init(Entity* this) { this->action = 5; } else { this->action = 8; - sub_080787CC(this); - sub_08078850(this, 0, gLockedDoorInteractDirections[this->field_0x7c.BYTES.byte2], 0); + AddInteractableSmallKeyLock(this); + SetInteractableObjectCollision(this, 0, gLockedDoorInteractDirections[this->field_0x7c.BYTES.byte2], NULL); } } else { DeleteThisEntity(); diff --git a/src/object/objectA.c b/src/object/objectA.c index f9db55e0..77622f1f 100644 --- a/src/object/objectA.c +++ b/src/object/objectA.c @@ -34,7 +34,7 @@ void ObjectA(Entity* this) { } DeleteThisEntity(); } else { - sub_080787CC(this); + AddInteractableSmallKeyLock(this); } } else if (this->interactType != 0) { SetTileType(*(u16*)&this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); diff --git a/src/object/specialChest.c b/src/object/specialChest.c index 2d0264be..8d8fd2f1 100644 --- a/src/object/specialChest.c +++ b/src/object/specialChest.c @@ -9,7 +9,7 @@ #include "flags.h" #include "room.h" -extern void sub_08078828(Entity*); +extern void AddInteractableChest(Entity*); extern void OpenSmallChest(u32 pos, u32 layer); void SpecialChest(Entity* this) { @@ -19,7 +19,7 @@ void SpecialChest(Entity* this) { } this->action = 1; this->collisionLayer = 1; - sub_08078828(this); + AddInteractableChest(this); } if (this->interactType != 0) { OpenSmallChest(COORD_TO_TILE(this), 2); diff --git a/src/object/swordsmanNewsletter.c b/src/object/swordsmanNewsletter.c index f296de5a..15f8eef5 100644 --- a/src/object/swordsmanNewsletter.c +++ b/src/object/swordsmanNewsletter.c @@ -8,7 +8,7 @@ #include "global.h" #include "message.h" -extern void sub_080787B4(Entity*); +extern void AddInteractableCheckableObject(Entity*); void SwordsmanNewsletter_Init(Entity*); void SwordsmanNewsletter_Action1(Entity*); @@ -27,7 +27,7 @@ void SwordsmanNewsletter_Init(Entity* this) { this->frameIndex = this->type; UpdateSpriteForCollisionLayer(this); this->hitbox = (Hitbox*)&gUnk_081228A8; - sub_080787B4(this); + AddInteractableCheckableObject(this); } void SwordsmanNewsletter_Action1(Entity* this) { diff --git a/src/object/windcrest.c b/src/object/windcrest.c index 56bc6459..e552126d 100644 --- a/src/object/windcrest.c +++ b/src/object/windcrest.c @@ -22,9 +22,9 @@ void Windcrest(Entity* this) { HandleEntity0x82Actions(this); } -void sub_080A2124(Entity* this) { +void Windcrest_ChangeInteractableHitbox(Entity* this) { static const u8 gUnk_08125010[] = { 0, 0, 12, 12 }; - sub_08078850(this, 1, 0xe, gUnk_08125010); + SetInteractableObjectCollision(this, 1, 0xe, gUnk_08125010); } void Windcrest_Unlock(Entity* this) { diff --git a/src/playerUtils.c b/src/playerUtils.c index f6745116..67555c86 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -995,7 +995,7 @@ void sub_08078180(void) { ptr = sub_080784E4(); if (ptr->entity->interactType == 0) { - switch (ptr->interactCondition) { + switch (ptr->type) { case 1: case 7: uVar1 = 7; @@ -1106,7 +1106,7 @@ bool32 sub_080782C0(void) { if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0) { return FALSE; } - switch (gPossibleInteraction.currentObject->interactCondition) { + switch (gPossibleInteraction.currentObject->type) { default: case 0: return TRUE; @@ -1134,99 +1134,102 @@ bool32 sub_080782C0(void) { return TRUE; } -void sub_080784C8(void) { +void ResetPossibleInteraction(void) { MemClear(&gPossibleInteraction, sizeof(gPossibleInteraction)); gPossibleInteraction.currentObject = (InteractableObject*)&gNoInteraction; } +// determines which (if any) object the player is currently able to interact with ASM_FUNC("asm/non_matching/playerUtils/sub_080784E4.inc", InteractableObject* sub_080784E4(void)) -void sub_08078778(Entity* ent) { - sub_0807887C(ent, 1, 0); +void AddInteractableWhenBigObject(Entity* ent) { + AddInteractableObject(ent, 1, 0); } -void sub_08078784(Entity* ent, u32 arg1) { - sub_0807887C(ent, 1, arg1); +void AddInteractableWhenBigFuser(Entity* ent, u32 kinstoneId) { + AddInteractableObject(ent, 1, kinstoneId); } -void sub_08078790(Entity* ent, u32 arg1) { - sub_0807887C(ent, 2, arg1); +void AddInteractableFuser(Entity* ent, u32 kinstoneId) { + AddInteractableObject(ent, 2, kinstoneId); } -void sub_0807879C(Entity* ent) { - sub_0807887C(ent, 7, 0); +void AddInteractableAsMinishObject(Entity* ent) { + AddInteractableObject(ent, 7, 0); } -void sub_080787A8(Entity* ent, u32 arg1) { - sub_0807887C(ent, 7, arg1); +void AddInteractableAsMinishFuser(Entity* ent, u32 kinstoneId) { + AddInteractableObject(ent, 7, kinstoneId); } -void sub_080787B4(Entity* ent) { - sub_0807887C(ent, 9, 0); +void AddInteractableCheckableObject(Entity* ent) { + AddInteractableObject(ent, 9, 0); } -void sub_080787C0(Entity* ent) { - sub_0807887C(ent, 10, 0); +void AddInteractablePedestal(Entity* ent) { + AddInteractableObject(ent, 10, 0); } -void sub_080787CC(Entity* ent) { - sub_0807887C(ent, 5, 0); +void AddInteractableSmallKeyLock(Entity* ent) { + AddInteractableObject(ent, 5, 0); } -s32 sub_080787D8(Entity* ent) { +s32 AddInteractableShopItem(Entity* ent) { s32 iVar1; - iVar1 = sub_0807887C(ent, 8, 0); + iVar1 = AddInteractableObject(ent, 8, 0); if (iVar1 >= 0) { gPossibleInteraction.candidates[iVar1].interactDirections = 0xbe; } return iVar1; } -s32 sub_08078800(Entity* ent) { +s32 AddInteractableBossDoor(Entity* ent) { s32 iVar1; - iVar1 = sub_0807887C(ent, 6, 0); + iVar1 = AddInteractableObject(ent, 6, 0); + if (iVar1 >= 0) { + // weird, this line assumes it's a north door, and is unnecessary + // anyway because this is overwritten right after returning + gPossibleInteraction.candidates[iVar1].interactDirections = 0xbe; + } + return iVar1; +} + +s32 AddInteractableChest(Entity* ent) { + s32 iVar1; + + iVar1 = AddInteractableObject(ent, 3, 0); if (iVar1 >= 0) { gPossibleInteraction.candidates[iVar1].interactDirections = 0xbe; } return iVar1; } -s32 sub_08078828(Entity* ent) { +void SetInteractableObjectCollision(Entity* arg0, u32 ignoreLayer, u32 interactDirections, const void* customHitbox) { s32 iVar1; - iVar1 = sub_0807887C(ent, 3, 0); + iVar1 = GetInteractableObjectIndex(arg0); if (iVar1 >= 0) { - gPossibleInteraction.candidates[iVar1].interactDirections = 0xbe; - } - return iVar1; -} - -void sub_08078850(Entity* arg0, u32 arg1, u32 arg2, const void* arg3) { - s32 iVar1; - - iVar1 = sub_08078904(arg0); - if (iVar1 >= 0) { - gPossibleInteraction.candidates[iVar1].ignoreLayer = arg1; - gPossibleInteraction.candidates[iVar1].interactDirections = arg2; - gPossibleInteraction.candidates[iVar1].customHitbox = arg3; + gPossibleInteraction.candidates[iVar1].ignoreLayer = ignoreLayer; + gPossibleInteraction.candidates[iVar1].interactDirections = interactDirections; + gPossibleInteraction.candidates[iVar1].customHitbox = customHitbox; } } -s32 sub_0807887C(Entity* entity, u32 param_2, u32 param_3) { +s32 AddInteractableObject(Entity* entity, u32 type, u32 kinstoneId) { s32 index; entity->interactType = 0; - index = sub_08078904(entity); + index = GetInteractableObjectIndex(entity); if (index < 0) { - index = sub_08078904(0); + index = GetInteractableObjectIndex(0); } if (index >= 0) { gPossibleInteraction.candidates[index].entity = entity; - gPossibleInteraction.candidates[index].interactCondition = param_2; - gPossibleInteraction.candidates[index].kinstoneId = param_3; + gPossibleInteraction.candidates[index].type = type; + gPossibleInteraction.candidates[index].kinstoneId = kinstoneId; } - if (param_3 != 0) { + if (kinstoneId != 0) { Entity* entity = FindEntityByID(OBJECT, CAMERA_TARGET, 6); if (entity == NULL) { CreateObject(CAMERA_TARGET, 0, 0); @@ -1236,15 +1239,15 @@ s32 sub_0807887C(Entity* entity, u32 param_2, u32 param_3) { } /** Clear entry for Entity. */ -void sub_080788E0(Entity* entity) { - s32 index = sub_08078904(entity); +void RemoveInteractableObject(Entity* entity) { + s32 index = GetInteractableObjectIndex(entity); if (index > -1) { MemClear(&gPossibleInteraction.candidates[index], sizeof(InteractableObject)); } } /** Find entry for Entity. */ -s32 sub_08078904(Entity* entity) { +s32 GetInteractableObjectIndex(Entity* entity) { u32 index; for (index = 0; index < 0x20; index++) { if (entity == gPossibleInteraction.candidates[index].entity) { diff --git a/src/script.c b/src/script.c index 91bc5e95..23387340 100644 --- a/src/script.c +++ b/src/script.c @@ -94,12 +94,12 @@ void ScriptCommand_SetVariableToFrame(Entity* entity, ScriptExecutionContext* co void ScriptCommand_SetAnimation(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_TriggerInteract(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_0807E974(Entity* entity, ScriptExecutionContext* context); -void ScriptCommand_0807E9D4(Entity* entity, ScriptExecutionContext* context); -void ScriptCommand_0807E9DC(Entity* entity, ScriptExecutionContext* context); -void ScriptCommand_0807E9E4(Entity* entity, ScriptExecutionContext* context); +void ScriptCommand_AddInteractableWhenBigObject(Entity* entity, ScriptExecutionContext* context); +void ScriptCommand_RemoveInteractableObject(Entity* entity, ScriptExecutionContext* context); +void ScriptCommand_AddInteractableWhenBigFuser(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_0807E9F0(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_0807EA4C(Entity* entity, ScriptExecutionContext* context); -void ScriptCommand_0807EA88(Entity* entity, ScriptExecutionContext* context); +void ScriptCommand_AddInteractableFuser(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_WaitUntilTextboxCloses(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_MessageFromTarget(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_MessageNoOverlap(Entity* entity, ScriptExecutionContext* context); @@ -543,12 +543,12 @@ void ExecuteScript(Entity* entity, ScriptExecutionContext* context) { ScriptCommand_SetAnimation, ScriptCommand_TriggerInteract, ScriptCommand_0807E974, - ScriptCommand_0807E9D4, - ScriptCommand_0807E9DC, - ScriptCommand_0807E9E4, + ScriptCommand_AddInteractableWhenBigObject, + ScriptCommand_RemoveInteractableObject, + ScriptCommand_AddInteractableWhenBigFuser, ScriptCommand_0807E9F0, ScriptCommand_0807EA4C, - ScriptCommand_0807EA88, + ScriptCommand_AddInteractableFuser, ScriptCommand_WaitUntilTextboxCloses, ScriptCommand_MessageFromTarget, ScriptCommand_MessageNoOverlap, @@ -1136,16 +1136,16 @@ void ScriptCommand_0807E974(Entity* entity, ScriptExecutionContext* context) { gActiveScriptInfo.commandSize = 0; } -void ScriptCommand_0807E9D4(Entity* entity, ScriptExecutionContext* context) { - sub_08078778(entity); +void ScriptCommand_AddInteractableWhenBigObject(Entity* entity, ScriptExecutionContext* context) { + AddInteractableWhenBigObject(entity); } -void ScriptCommand_0807E9DC(Entity* entity, ScriptExecutionContext* context) { - sub_080788E0(entity); +void ScriptCommand_RemoveInteractableObject(Entity* entity, ScriptExecutionContext* context) { + RemoveInteractableObject(entity); } -void ScriptCommand_0807E9E4(Entity* entity, ScriptExecutionContext* context) { - sub_08078784(entity, context->scriptInstructionPointer[1]); +void ScriptCommand_AddInteractableWhenBigFuser(Entity* entity, ScriptExecutionContext* context) { + AddInteractableWhenBigFuser(entity, context->scriptInstructionPointer[1]); } void ScriptCommand_0807E9F0(Entity* entity, ScriptExecutionContext* context) { @@ -1184,8 +1184,8 @@ void ScriptCommand_0807EA4C(Entity* entity, ScriptExecutionContext* context) { } } -void ScriptCommand_0807EA88(Entity* entity, ScriptExecutionContext* context) { - sub_08078790(entity, context->scriptInstructionPointer[1]); +void ScriptCommand_AddInteractableFuser(Entity* entity, ScriptExecutionContext* context) { + AddInteractableFuser(entity, context->scriptInstructionPointer[1]); } void ScriptCommand_WaitUntilTextboxCloses(Entity* entity, ScriptExecutionContext* context) { @@ -1966,16 +1966,16 @@ void PutItemAnySlot(Entity* entity, ScriptExecutionContext* context) { PutItemOnSlot(context->intVariable); } -void sub_0807F924(Entity* entity, ScriptExecutionContext* context) { - sub_0807879C(entity); +void MakeInteractableAsMinish(Entity* entity, ScriptExecutionContext* context) { + AddInteractableAsMinishObject(entity); } -void sub_0807F92C(Entity* entity, ScriptExecutionContext* context) { - sub_080787C0(entity); +void MakePedestalInteractable(Entity* entity, ScriptExecutionContext* context) { + AddInteractablePedestal(entity); } -void sub_0807F934(Entity* entity, ScriptExecutionContext* context) { - sub_080787B4(entity); +void MakeCheckableObjectInteractable(Entity* entity, ScriptExecutionContext* context) { + AddInteractableCheckableObject(entity); } void sub_0807F93C(Entity* entity, ScriptExecutionContext* context) { From 2e21fde027c86ab7ec5eeb8507ff7cbfc0a9aadc Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 29 Apr 2023 00:32:15 +0200 Subject: [PATCH 65/86] Name the interaction types --- include/player.h | 14 ++++++++++++++ src/playerUtils.c | 42 +++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/include/player.h b/include/player.h index 1139d5f9..aa3fc160 100644 --- a/include/player.h +++ b/include/player.h @@ -437,6 +437,20 @@ s32 ModHealth(s32 delta); void ModRupees(s32 delta); void ModBombs(s32 delta); +typedef enum { + INTERACTION_NONE, + INTERACTION_TALK, + INTERACTION_FUSE, + INTERACTION_OPEN_CHEST, + INTERACTION_UNUSED, + INTERACTION_USE_SMALL_KEY, + INTERACTION_USE_BIG_KEY, + INTERACTION_TALK_MINISH, + INTERACTION_LIFT_SHOP_ITEM, + INTERACTION_CHECK, + INTERACTION_DROP_PEDESTAL, +} InteractionType; + // playerUtils.c void DeleteClones(void); void CreateItemEquippedAtSlot(/*EquipSlot*/ u32 equipSlot); diff --git a/src/playerUtils.c b/src/playerUtils.c index 67555c86..705cd02e 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -996,24 +996,24 @@ void sub_08078180(void) { if (ptr->entity->interactType == 0) { switch (ptr->type) { - case 1: - case 7: + case INTERACTION_TALK: + case INTERACTION_TALK_MINISH: uVar1 = 7; break; - case 8: + case INTERACTION_LIFT_SHOP_ITEM: if (gRoomVars.shopItemType == ITEM_NONE) { uVar1 = 9; } break; - case 3: - case 5: - case 6: + case INTERACTION_OPEN_CHEST: + case INTERACTION_USE_SMALL_KEY: + case INTERACTION_USE_BIG_KEY: uVar1 = 6; break; - case 9: + case INTERACTION_CHECK: uVar1 = 5; break; - case 10: + case INTERACTION_DROP_PEDESTAL: uVar1 = 2; break; } @@ -1108,21 +1108,21 @@ bool32 sub_080782C0(void) { } switch (gPossibleInteraction.currentObject->type) { default: - case 0: + case INTERACTION_NONE: return TRUE; - case 1: - case 6: - case 9: - case 0xa: + case INTERACTION_TALK: + case INTERACTION_USE_BIG_KEY: + case INTERACTION_CHECK: + case INTERACTION_DROP_PEDESTAL: gPlayerState.queued_action = PLAYER_08070E9C; ForceSetPlayerState(PL_STATE_TALKEZLO); - case 3: - case 5: - case 7: + case INTERACTION_OPEN_CHEST: + case INTERACTION_USE_SMALL_KEY: + case INTERACTION_TALK_MINISH: entity->interactType = 1; gPossibleInteraction.kinstoneId = 0; return TRUE; - case 8: + case INTERACTION_LIFT_SHOP_ITEM: if (gRoomVars.shopItemType == 0) { entity->interactType = 1; gRoomVars.shopItemType = entity->type; @@ -1146,11 +1146,11 @@ void AddInteractableWhenBigObject(Entity* ent) { AddInteractableObject(ent, 1, 0); } -void AddInteractableWhenBigFuser(Entity* ent, u32 kinstoneId) { +void AddInteractableWhenBigFuser(Entity* ent, KinstoneId kinstoneId) { AddInteractableObject(ent, 1, kinstoneId); } -void AddInteractableFuser(Entity* ent, u32 kinstoneId) { +void AddInteractableFuser(Entity* ent, KinstoneId kinstoneId) { AddInteractableObject(ent, 2, kinstoneId); } @@ -1158,7 +1158,7 @@ void AddInteractableAsMinishObject(Entity* ent) { AddInteractableObject(ent, 7, 0); } -void AddInteractableAsMinishFuser(Entity* ent, u32 kinstoneId) { +void AddInteractableAsMinishFuser(Entity* ent, KinstoneId kinstoneId) { AddInteractableObject(ent, 7, kinstoneId); } @@ -1217,7 +1217,7 @@ void SetInteractableObjectCollision(Entity* arg0, u32 ignoreLayer, u32 interactD } } -s32 AddInteractableObject(Entity* entity, u32 type, u32 kinstoneId) { +s32 AddInteractableObject(Entity* entity, InteractionType type, KinstoneId kinstoneId) { s32 index; entity->interactType = 0; index = GetInteractableObjectIndex(entity); From a82ad2951a2d78533fb18bf08203cb4b3256a2f1 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 29 Apr 2023 01:25:31 +0200 Subject: [PATCH 66/86] Name some things with NPC4E --- .../cloudTops/script_Npc4EFirstCloud.inc | 8 ++--- data/scripts/npc/script_MysteriousWall.inc | 2 +- src/npc/npc4E.c | 36 +++++++++---------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/data/scripts/cloudTops/script_Npc4EFirstCloud.inc b/data/scripts/cloudTops/script_Npc4EFirstCloud.inc index b5245520..11010e65 100644 --- a/data/scripts/cloudTops/script_Npc4EFirstCloud.inc +++ b/data/scripts/cloudTops/script_Npc4EFirstCloud.inc @@ -5,7 +5,7 @@ SCRIPT_START script_Npc4EFirstCloud SetAnimationState 0x0004 DoPostScriptAction 0x000b DoPostScriptAction 0x0008 - Call sub_0806DAAC + Call NPC4E_IsKinstoneFused JumpIf script_0800D6AE Call NPC4E_MakeFuserInteractable CallWithArg sub_0806DA04, 0x00000002 @@ -13,7 +13,7 @@ SCRIPT_START script_Npc4EFirstCloud script_0800D636: _0807EA4C _0807E9F0 - Call sub_0806DAAC + Call NPC4E_IsKinstoneFused JumpIf script_0800D650 Call EnablePauseMenu EnablePlayerControl @@ -28,9 +28,9 @@ script_0800D650: CameraTargetEntity _0807EDD4 0x01e8, 0x01b8 Wait 0x003c - Call sub_0806DAE8 + Call NPC4E_SetPinwheelFlag Wait 0x0078 - Call sub_0806DB44 + Call NPC4E_IsEveryPinwheelActivated JumpIfNot script_Npc4EKinstoneFused LoadRoomEntityList gUnk_080DD730 DoPostScriptAction 0x0006 diff --git a/data/scripts/npc/script_MysteriousWall.inc b/data/scripts/npc/script_MysteriousWall.inc index 0c03e624..4775eb3c 100644 --- a/data/scripts/npc/script_MysteriousWall.inc +++ b/data/scripts/npc/script_MysteriousWall.inc @@ -3,7 +3,7 @@ SCRIPT_START script_MysteriousWall BeginBlock DoPostScriptAction 0x000b DoPostScriptAction 0x0008 - Call sub_0806DAAC + Call NPC4E_IsKinstoneFused JumpIf script_0800B9AC Call NPC4E_MakeFuserInteractable CallWithArg sub_0806DA04, 0x00000005 diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 18caefb0..b4967940 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -90,7 +90,7 @@ u8 NPC4E_GetKinstoneId(Entity* this) { } // Check whether a kinstone fusion is possible and store the result somewhere in param_2? -void sub_0806DAAC(Entity* this, ScriptExecutionContext* context) { +void NPC4E_IsKinstoneFused(Entity* this, ScriptExecutionContext* context) { context->condition = CheckKinstoneFused(NPC4E_GetKinstoneId(this)); gActiveScriptInfo.flags |= 1; } @@ -100,7 +100,7 @@ void NPC4E_MakeFuserInteractable(Entity* this) { AddInteractableFuser(this, NPC4E_GetKinstoneId(this)); } -void sub_0806DAE8(Entity* this) { +void NPC4E_SetPinwheelFlag(Entity* this) { switch (this->type - 1) { case 0: SetLocalFlag(KUMOUE_02_AWASE_01); @@ -122,7 +122,7 @@ void sub_0806DAE8(Entity* this) { SoundReq(SFX_TASK_COMPLETE); } -void sub_0806DB44(Entity* this, ScriptExecutionContext* context) { +void NPC4E_IsEveryPinwheelActivated(Entity* this, ScriptExecutionContext* context) { context->condition = 0; if (CheckLocalFlag(KUMOUE_02_AWASE_01) && CheckLocalFlag(KUMOUE_02_AWASE_02) && @@ -148,29 +148,29 @@ void sub_0806DB84(Entity* this, ScriptExecutionContext* context) { } } -u32 sub_0806DBF4(u32 param_1) { - switch (param_1) { - case 1: - case 2: - case 3: - case 4: - case 6: - param_1 = ITEM_SMITH_SWORD; +Item NPC4E_GetItemWithSwordUpgraded(Item itemId) { + switch (itemId) { + case ITEM_SMITH_SWORD: + case ITEM_GREEN_SWORD: + case ITEM_RED_SWORD: + case ITEM_BLUE_SWORD: + case ITEM_FOURSWORD: + itemId = ITEM_SMITH_SWORD; if (GetInventoryValue(ITEM_GREEN_SWORD) != 0) { - param_1 = ITEM_GREEN_SWORD; + itemId = ITEM_GREEN_SWORD; } if (GetInventoryValue(ITEM_RED_SWORD) != 0) { - param_1 = ITEM_RED_SWORD; + itemId = ITEM_RED_SWORD; } if (GetInventoryValue(ITEM_BLUE_SWORD) != 0) { - param_1 = ITEM_BLUE_SWORD; + itemId = ITEM_BLUE_SWORD; } if (GetInventoryValue(ITEM_FOURSWORD) != 0) { - param_1 = ITEM_FOURSWORD; + itemId = ITEM_FOURSWORD; } break; } - return param_1; + return itemId; } void NPC4E_SaveEquippedItems(Entity* this) { @@ -179,8 +179,8 @@ void NPC4E_SaveEquippedItems(Entity* this) { } void NPC4E_RestoreEquippedItems(Entity* this) { - ForceEquipItem(sub_0806DBF4(this->field_0x68.HALF.LO), EQUIP_SLOT_A); - ForceEquipItem(sub_0806DBF4(this->field_0x68.HALF.HI), EQUIP_SLOT_B); + ForceEquipItem(NPC4E_GetItemWithSwordUpgraded(this->field_0x68.HALF.LO), EQUIP_SLOT_A); + ForceEquipItem(NPC4E_GetItemWithSwordUpgraded(this->field_0x68.HALF.HI), EQUIP_SLOT_B); } void sub_0806DC7C(void) { From fcfbd73dd26284d6b89bec62483502a9e13aecdc Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 29 Apr 2023 02:56:08 +0200 Subject: [PATCH 67/86] Name the special values used with Kinstone Fusions --- include/kinstone.h | 7 ++++- include/npc.h | 4 +-- src/common.c | 56 +++++++++++++++++++-------------------- src/enemy/businessScrub.c | 3 ++- src/menu/kinstoneMenu.c | 6 ++--- src/menu/pauseMenu.c | 3 ++- src/npc/cucco.c | 3 ++- src/npc/din.c | 7 ++--- src/npc/farore.c | 7 ++--- src/npc/nayru.c | 7 ++--- src/npc/npc4E.c | 4 +-- src/npcUtils.c | 2 +- src/playerUtils.c | 6 ++--- 13 files changed, 62 insertions(+), 53 deletions(-) diff --git a/include/kinstone.h b/include/kinstone.h index e05c815e..ac6b9b83 100644 --- a/include/kinstone.h +++ b/include/kinstone.h @@ -35,7 +35,7 @@ typedef struct { extern const KinstoneWorldEvent gKinstoneWorldEvents[]; typedef enum { - KINSTONE_0, + KINSTONE_NONE, KINSTONE_MYSTERIOUS_CLOUD_TOP_RIGHT, KINSTONE_MYSTERIOUS_CLOUD_BOTTOM_LEFT, KINSTONE_MYSTERIOUS_CLOUD_TOP_LEFT, @@ -136,6 +136,11 @@ typedef enum { KINSTONE_62, KINSTONE_63, KINSTONE_64, + /* some special values, mostly for fusers */ + KINSTONE_NEEDS_REPLACEMENT = 0xF1, + KINSTONE_JUST_FUSED = 0xF2, + KINSTONE_FUSER_DONE = 0xF3, + KINSTONE_RANDOM = 0xFF, } KinstoneId; typedef struct { diff --git a/include/npc.h b/include/npc.h index d81ea4a7..dff0378c 100644 --- a/include/npc.h +++ b/include/npc.h @@ -84,12 +84,12 @@ void NPCInit(Entity* ent); void CollideFollowers(void); // TODO move? -void AddInteractableWhenBigFuser(Entity* ent, u32 arg1); +void AddInteractableWhenBigFuser(Entity* ent, u32 kinstoneId); u32 sub_0806F5A4(u32); u32 GetFusionToOffer(Entity*); void AddInteractableWhenBigObject(Entity*); void sub_0807000C(Entity*); -void AddInteractableAsMinishFuser(Entity*, u32); +void AddInteractableAsMinishFuser(Entity* ent, u32 kinstoneId); enum NPC { /*0x00*/ NPC_NONE_0, diff --git a/src/common.c b/src/common.c index 24dba48d..e3f962b4 100644 --- a/src/common.c +++ b/src/common.c @@ -831,28 +831,28 @@ void sub_0801E64C(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_ } } -void NotifyFusersOnFusionDone(u32 kinstoneId) { +void NotifyFusersOnFusionDone(KinstoneId kinstoneId) { u32 tmp; u32 index; if (kinstoneId - 1 < 100) { for (index = 0; index < 0x80; index++) { if (kinstoneId == gSave.fuserOffers[index]) { - gSave.fuserOffers[index] = 0xf1; + gSave.fuserOffers[index] = KINSTONE_NEEDS_REPLACEMENT; } } tmp = GetFuserId(gFuseInfo.ent); - if ((tmp - 1 < 0x7f) && (gSave.fuserOffers[tmp] == 0xf1)) { - gSave.fuserOffers[tmp] = 0xf2; + if ((tmp - 1 < 0x7f) && (gSave.fuserOffers[tmp] == KINSTONE_NEEDS_REPLACEMENT)) { + gSave.fuserOffers[tmp] = KINSTONE_JUST_FUSED; } for (index = 0; index < 0x20; index++) { if (kinstoneId == gPossibleInteraction.candidates[index].kinstoneId) { - gPossibleInteraction.candidates[index].kinstoneId = 0xf1; + gPossibleInteraction.candidates[index].kinstoneId = KINSTONE_NEEDS_REPLACEMENT; } } } } -void AddKinstoneToBag(u32 kinstoneId) { +void AddKinstoneToBag(KinstoneId kinstoneId) { s32 index; s32 tmp; @@ -861,7 +861,7 @@ void AddKinstoneToBag(u32 kinstoneId) { index = GetIndexInKinstoneBag(kinstoneId); if (index < 0) { index = 0; - while (gSave.kinstoneTypes[index] != 0) { + while (gSave.kinstoneTypes[index] != KINSTONE_NONE) { index++; } } @@ -876,19 +876,19 @@ void AddKinstoneToBag(u32 kinstoneId) { } } -void RemoveKinstoneFromBag(u32 kinstoneId) { +void RemoveKinstoneFromBag(KinstoneId kinstoneId) { s32 idx = GetIndexInKinstoneBag(kinstoneId); if (idx >= 0) { s32 next = gSave.kinstoneAmounts[idx] - 1; if (next <= 0) { - gSave.kinstoneTypes[idx] = 0; + gSave.kinstoneTypes[idx] = KINSTONE_NONE; next = 0; } gSave.kinstoneAmounts[idx] = next; } } -u32 GetAmountInKinstoneBag(u32 kinstoneId) { +u32 GetAmountInKinstoneBag(KinstoneId kinstoneId) { s32 index = GetIndexInKinstoneBag(kinstoneId); if (index < 0) { return 0; @@ -896,15 +896,15 @@ u32 GetAmountInKinstoneBag(u32 kinstoneId) { return gSave.kinstoneAmounts[index]; } -u32 CheckKinstoneFused(u32 kinstoneId) { - if (kinstoneId > 100 || kinstoneId < 1) { +u32 CheckKinstoneFused(KinstoneId kinstoneId) { + if (kinstoneId - 1 >= 100) { return 0; } return ReadBit(&gSave.fusedKinstones, kinstoneId); } -bool32 CheckFusionMapMarkerDisabled(u32 kinstoneId) { - if (kinstoneId > 100 || kinstoneId < 1) { +bool32 CheckFusionMapMarkerDisabled(KinstoneId kinstoneId) { + if (kinstoneId - 1 >= 100) { return FALSE; } return ReadBit(&gSave.fusionUnmarked, kinstoneId); @@ -974,7 +974,7 @@ code0_2: #endif } -s32 GetIndexInKinstoneBag(u32 kinstoneId) { +s32 GetIndexInKinstoneBag(KinstoneId kinstoneId) { u32 i; for (i = 0; i < 0x12; ++i) { @@ -1054,7 +1054,7 @@ void UpdateVisibleFusionMapMarkers(void) { extern u8* gUnk_08001DCC[]; -u32 GetFusionToOffer(Entity* entity) { +KinstoneId GetFusionToOffer(Entity* entity) { u8* fuserData; u32 fuserId; u32 offeredFusion; @@ -1065,20 +1065,20 @@ u32 GetFusionToOffer(Entity* entity) { fuserId = GetFuserId(entity); fuserData = gUnk_08001DCC[fuserId]; if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0 || fuserData[0] > gSave.global_progress) { - return 0; + return KINSTONE_NONE; } offeredFusion = gSave.fuserOffers[fuserId]; fuserProgress = gSave.fuserProgress[fuserId]; fuserFusionData = (u8*)(fuserProgress + (u32)fuserData); while (TRUE) { // loop through fusions for this fuser switch (offeredFusion) { - case 0xF1: // offered fusion completed with someone else - case 0x00: // no fusion offered yet + case KINSTONE_NEEDS_REPLACEMENT: // offered fusion completed with someone else + case KINSTONE_NONE: // no fusion offered yet offeredFusion = fuserFusionData[5]; - if (offeredFusion == 0x00 || offeredFusion == 0xFF || CheckKinstoneFused(offeredFusion) == 0) { + if (offeredFusion == KINSTONE_NONE || offeredFusion == 0xFF || CheckKinstoneFused(offeredFusion) == 0) { break; } - case 0xF2: // previous fusion completed + case KINSTONE_JUST_FUSED: // previous fusion completed fuserFusionData++; fuserProgress++; offeredFusion = fuserFusionData[5]; @@ -1086,27 +1086,27 @@ u32 GetFusionToOffer(Entity* entity) { if (offeredFusion == 0xFF) { // random shared fusion offeredFusion = GetRandomSharedFusion(fuserData); } - if (offeredFusion == 0x00) { // end of fusion list - offeredFusion = 0xF3; // mark this fuser as done + if (offeredFusion == KINSTONE_NONE) { // end of fusion list + offeredFusion = KINSTONE_FUSER_DONE; // mark this fuser as done break; } - if (offeredFusion == 0xF2) { // previous fusion completed + if (offeredFusion == KINSTONE_JUST_FUSED) { // previous fusion completed continue; } if (CheckKinstoneFused(offeredFusion) == 0) { break; } - offeredFusion = 0xF1; // already completed, try next fusion in the list + offeredFusion = KINSTONE_NEEDS_REPLACEMENT; // already completed, try next fusion in the list } gSave.fuserOffers[fuserId] = offeredFusion; gSave.fuserProgress[fuserId] = fuserProgress; randomMood = Random(); fuserStability = fuserData[1]; if (fuserStability <= randomMood % 100) { - return 0; // fickleness + return KINSTONE_NONE; // fickleness } if (offeredFusion - 1 > 99) { - offeredFusion = 0; + offeredFusion = KINSTONE_NONE; } return offeredFusion; } @@ -1286,5 +1286,5 @@ u32 GetRandomSharedFusion(u8* fuserData) { return kinstoneId; r = (r + 1) % 18; } - return 0xF2; + return KINSTONE_JUST_FUSED; } diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index 97f67813..aa1001a5 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -13,6 +13,7 @@ #include "functions.h" #include "game.h" #include "item.h" +#include "kinstone.h" void sub_08028E9C(Entity*); void sub_08028EDC(Entity*); @@ -257,7 +258,7 @@ void sub_08028CE8(Entity* this) { switch (offer->field_0x0 >> 2) { case 0: subtype = offer->field_0x9; - if (subtype == 0xff) { + if (subtype == KINSTONE_RANDOM) { subtype = kinstoneTypes[Random() & 7]; } diff --git a/src/menu/kinstoneMenu.c b/src/menu/kinstoneMenu.c index 97d49044..77b55818 100644 --- a/src/menu/kinstoneMenu.c +++ b/src/menu/kinstoneMenu.c @@ -151,7 +151,7 @@ void KinstoneMenu_Type0(void) { gScreen.bg3.updated = 1; KinstoneMenu_080A4528(); sub_080A4398(); - AddKinstoneToBag(0); + AddKinstoneToBag(KINSTONE_NONE); sub_080A70AC((void*)gUnk_081280DC); SetMenuType(1); SetFade(FADE_BLACK_WHITE | FADE_INSTANT, 8); @@ -606,8 +606,8 @@ u32 sub_080A4418(u32 param_1, u32 param_2) { } void KinstoneMenu_080A4468(void) { - gPossibleInteraction.kinstoneId = 0; - gPossibleInteraction.currentObject->kinstoneId = 0; + gPossibleInteraction.kinstoneId = KINSTONE_NONE; + gPossibleInteraction.currentObject->kinstoneId = KINSTONE_NONE; NotifyFusersOnFusionDone(gFuseInfo.kinstoneId); RemoveKinstoneFromBag(gKinstoneMenu.unk2a); } diff --git a/src/menu/pauseMenu.c b/src/menu/pauseMenu.c index c36dbb9a..29c4f3ab 100644 --- a/src/menu/pauseMenu.c +++ b/src/menu/pauseMenu.c @@ -11,6 +11,7 @@ #include "game.h" #include "item.h" #include "itemMetaData.h" +#include "kinstone.h" #include "main.h" #include "menu.h" #include "message.h" @@ -1281,7 +1282,7 @@ void PauseMenu_Screen_7(void) { void sub_080A6024(void) { sub_080A70AC((KeyButtonLayout*)&gUnk_08128D60); - AddKinstoneToBag(0); + AddKinstoneToBag(KINSTONE_NONE); sub_080A4398(); SetMenuType(1); } diff --git a/src/npc/cucco.c b/src/npc/cucco.c index 7f1ad66a..62926b8f 100644 --- a/src/npc/cucco.c +++ b/src/npc/cucco.c @@ -1,5 +1,6 @@ #include "npc.h" #include "functions.h" +#include "kinstone.h" void (*const Cucco_Actions[])(Entity*); const u16 Cucco_Sounds[]; @@ -113,7 +114,7 @@ void sub_0806E65C(Entity* this) { void Cucco_ShowMessage(Entity* this) { u32 val = 0; u32 index = GetFuserId(this); - if (gSave.fuserOffers[index] == 0xf3) { + if (gSave.fuserOffers[index] == KINSTONE_FUSER_DONE) { val = 1; } diff --git a/src/npc/din.c b/src/npc/din.c index 735f4282..c5608c7e 100644 --- a/src/npc/din.c +++ b/src/npc/din.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "npc.h" +#include "kinstone.h" void Din(Entity* this) { switch (this->action) { @@ -30,11 +31,11 @@ void Din(Entity* this) { } void Din_MakeInteractable(Entity* this) { - u32 tmp = GetFusionToOffer(this); + u32 kinstoneId = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { - tmp = 0; + kinstoneId = KINSTONE_NONE; } - AddInteractableWhenBigFuser(this, tmp); + AddInteractableWhenBigFuser(this, kinstoneId); } void Din_Fusion(Entity* this) { diff --git a/src/npc/farore.c b/src/npc/farore.c index fc68d782..c802bf6f 100644 --- a/src/npc/farore.c +++ b/src/npc/farore.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "npc.h" +#include "kinstone.h" void Farore(Entity* this) { switch (this->action) { @@ -30,11 +31,11 @@ void Farore(Entity* this) { } void Farore_MakeInteractable(Entity* this) { - u32 tmp = GetFusionToOffer(this); + u32 kinstoneId = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { - tmp = 0; + kinstoneId = KINSTONE_NONE; } - AddInteractableWhenBigFuser(this, tmp); + AddInteractableWhenBigFuser(this, kinstoneId); } void Farore_Fusion(Entity* this) { diff --git a/src/npc/nayru.c b/src/npc/nayru.c index f0949f24..b9ea0df4 100644 --- a/src/npc/nayru.c +++ b/src/npc/nayru.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "npc.h" +#include "kinstone.h" void Nayru(Entity* this) { switch (this->action) { @@ -30,11 +31,11 @@ void Nayru(Entity* this) { } void Nayru_MakeInteractable(Entity* this) { - u32 tmp = GetFusionToOffer(this); + u32 kinstoneId = GetFusionToOffer(this); if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) { - tmp = 0; + kinstoneId = KINSTONE_NONE; } - AddInteractableWhenBigFuser(this, tmp); + AddInteractableWhenBigFuser(this, kinstoneId); } void Nayru_Fusion(Entity* this) { diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index b4967940..8da17db8 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -58,7 +58,7 @@ u8 NPC4E_GetKinstoneId(Entity* this) { switch (this->type) { default: - result = KINSTONE_0; + result = KINSTONE_NONE; break; case 1: result = KINSTONE_MYSTERIOUS_CLOUD_TOP_RIGHT; @@ -89,13 +89,11 @@ u8 NPC4E_GetKinstoneId(Entity* this) { return result; } -// Check whether a kinstone fusion is possible and store the result somewhere in param_2? void NPC4E_IsKinstoneFused(Entity* this, ScriptExecutionContext* context) { context->condition = CheckKinstoneFused(NPC4E_GetKinstoneId(this)); gActiveScriptInfo.flags |= 1; } -// maybe actually execute the kinstone fusion? void NPC4E_MakeFuserInteractable(Entity* this) { AddInteractableFuser(this, NPC4E_GetKinstoneId(this)); } diff --git a/src/npcUtils.c b/src/npcUtils.c index cea167ae..b5963d94 100644 --- a/src/npcUtils.c +++ b/src/npcUtils.c @@ -355,7 +355,7 @@ u32 UpdateFuseInteraction(Entity* ent) { void sub_0806F188(Entity* ent) { u32 idx = GetFuserId(ent); if (idx != 0) - gSave.fuserOffers[idx] = 0xF3; + gSave.fuserOffers[idx] = KINSTONE_FUSER_DONE; } void ShowNPCDialogue(Entity* ent, const Dialog* dia) { diff --git a/src/playerUtils.c b/src/playerUtils.c index 705cd02e..b078f080 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1092,7 +1092,7 @@ bool32 sub_080782C0(void) { } } if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && ((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) { - AddKinstoneToBag(0); + AddKinstoneToBag(KINSTONE_NONE); if (gSave.kinstoneAmounts[0] != 0) { gPossibleInteraction.kinstoneId = gPossibleInteraction.currentObject->kinstoneId; gPossibleInteraction.currentObject->entity->interactType = 2; @@ -1120,7 +1120,7 @@ bool32 sub_080782C0(void) { case INTERACTION_USE_SMALL_KEY: case INTERACTION_TALK_MINISH: entity->interactType = 1; - gPossibleInteraction.kinstoneId = 0; + gPossibleInteraction.kinstoneId = KINSTONE_NONE; return TRUE; case INTERACTION_LIFT_SHOP_ITEM: if (gRoomVars.shopItemType == 0) { @@ -1229,7 +1229,7 @@ s32 AddInteractableObject(Entity* entity, InteractionType type, KinstoneId kinst gPossibleInteraction.candidates[index].type = type; gPossibleInteraction.candidates[index].kinstoneId = kinstoneId; } - if (kinstoneId != 0) { + if (kinstoneId != KINSTONE_NONE) { Entity* entity = FindEntityByID(OBJECT, CAMERA_TARGET, 6); if (entity == NULL) { CreateObject(CAMERA_TARGET, 0, 0); From d1d78ed018967130231a0ce9bb04819e9faef9ce Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 30 Apr 2023 13:14:10 +0200 Subject: [PATCH 68/86] Name members for button texts in struct_0200AF00 --- include/player.h | 1 + include/structures.h | 4 ++-- src/playerUtils.c | 2 +- src/subtask.c | 6 +++--- src/ui.c | 4 ++-- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/player.h b/include/player.h index aa3fc160..0805feab 100644 --- a/include/player.h +++ b/include/player.h @@ -449,6 +449,7 @@ typedef enum { INTERACTION_LIFT_SHOP_ITEM, INTERACTION_CHECK, INTERACTION_DROP_PEDESTAL, + INTERACTION_NULL = 0xFF, } InteractionType; // playerUtils.c diff --git a/include/structures.h b/include/structures.h index eded84c7..b18bb1ea 100644 --- a/include/structures.h +++ b/include/structures.h @@ -121,8 +121,7 @@ typedef struct { u8 unk_2d; u8 unk_2e; u8 unk_2f; - u8 unk_30[2]; - u8 unk_32; + u8 buttonText[3]; u8 unk_33; UIElement elements[MAX_UI_ELEMENTS]; } struct_0200AF00; @@ -157,6 +156,7 @@ typedef struct { /*0x06*/ u16 paletteIndex; /*0x08*/ const void* palettePointer; } GfxSlot; + typedef struct { /*0x00*/ u8 unk0; /*0x01*/ u8 unk_1; diff --git a/src/playerUtils.c b/src/playerUtils.c index b078f080..caad6878 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -659,7 +659,7 @@ bool32 (*const gPlayerChargeActions[])(ChargeState*) = { }; const InteractableObject gNoInteraction = { - 0, 0xFF, 0, 0, 0, 0, + 0, INTERACTION_NULL, 0, 0, NULL, NULL, }; // for shifting the hitbox in which entities can be interacted with in Link's facing direction diff --git a/src/subtask.c b/src/subtask.c index 3661f8a6..6af46d94 100644 --- a/src/subtask.c +++ b/src/subtask.c @@ -114,13 +114,13 @@ void sub_080A70AC(const KeyButtonLayout* layout) { gUnk_0200AF00.unk_14 = 0x7f; gUnk_0200AF00.buttonX[0] = layout->aButtonX; gUnk_0200AF00.buttonY[0] = (s8)layout->aButtonY; - gUnk_0200AF00.unk_30[0] = layout->aButtonText; + gUnk_0200AF00.buttonText[0] = layout->aButtonText; gUnk_0200AF00.buttonX[1] = layout->bButtonX; gUnk_0200AF00.buttonY[1] = (s8)layout->bButtonY; - gUnk_0200AF00.unk_30[1] = layout->bButtonText; + gUnk_0200AF00.buttonText[1] = layout->bButtonText; gUnk_0200AF00.buttonX[2] = layout->rButtonX; gUnk_0200AF00.buttonY[2] = (s8)layout->rButtonY; - gUnk_0200AF00.unk_32 = layout->rButtonText; + gUnk_0200AF00.buttonText[2] = layout->rButtonText; layout++; do { CreateUIElement(layout->aButtonX, layout->aButtonY); diff --git a/src/ui.c b/src/ui.c index 9d104798..f51fdfd6 100644 --- a/src/ui.c +++ b/src/ui.c @@ -756,9 +756,9 @@ void TextUIElement(UIElement* element) { break; } } - gUnk_0200AF00.unk_32 = tmp; + gUnk_0200AF00.buttonText[2] = tmp; } - tmp = gUnk_0200AF00.unk_30[element->buttonElementId]; + tmp = gUnk_0200AF00.buttonText[element->buttonElementId]; element->unk_0_1 = 0; if (tmp != 0) { tmp += gUnk_080C9044[((SaveHeader*)0x2000000)->language]; From 985eeb67a17517d522e963a1e52eafcd07712520 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 30 Apr 2023 15:10:30 +0200 Subject: [PATCH 69/86] Name members for R actions in struct_0200AF00 --- include/structures.h | 8 ++++---- src/beanstalkSubtask.c | 6 +++--- src/interrupts.c | 8 ++++---- src/item/itemTryPickupObject.c | 2 +- src/object/crenelBeanSprout.c | 6 +++--- src/object/itemForSale.c | 12 ++++++------ src/player.c | 4 ++-- src/playerUtils.c | 14 +++++++------- src/ui.c | 22 +++++++++++----------- 9 files changed, 41 insertions(+), 41 deletions(-) diff --git a/include/structures.h b/include/structures.h index b18bb1ea..2560d32a 100644 --- a/include/structures.h +++ b/include/structures.h @@ -117,10 +117,10 @@ typedef struct { u8 filler22[0x2]; u8 ezloNagFuncIndex; u8 filler25[7]; - u8 unk_2c; - u8 unk_2d; - u8 unk_2e; - u8 unk_2f; + u8 rActionInteractObject; // used as R button UI frame index + u8 rActionInteractTile; + u8 rActionGrabbing; + u8 rActionPlayerState; // if not 0, overrides other R actions u8 buttonText[3]; u8 unk_33; UIElement elements[MAX_UI_ELEMENTS]; diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index 42f6943b..6d102626 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -310,7 +310,7 @@ u32 UpdatePlayerCollision(void) { if (gPlayerEntity.animationState != 0) { return 0; } - gUnk_0200AF00.unk_2d = 4; + gUnk_0200AF00.rActionInteractTile = 4; if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_40)) == 0) { return 0; } @@ -324,7 +324,7 @@ u32 UpdatePlayerCollision(void) { if ((gPlayerState.flags & 0x4080) != 0) { return 0; } - gUnk_0200AF00.unk_2d = 6; + gUnk_0200AF00.rActionInteractTile = 6; if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0) { return 0; } @@ -335,7 +335,7 @@ u32 UpdatePlayerCollision(void) { if (HasDungeonSmallKey() == 0) { return 0; } - gUnk_0200AF00.unk_2d = 6; + gUnk_0200AF00.rActionInteractTile = 6; if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0) { return 0; } diff --git a/src/interrupts.c b/src/interrupts.c index 63abe0ea..674d064a 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -225,9 +225,9 @@ void PlayerUpdate(Entity* this) { static void HandlePlayerLife(Entity* this) { u32 temp; - gUnk_0200AF00.unk_2f = 0; - gUnk_0200AF00.unk_2d = 0; - gUnk_0200AF00.unk_2e = 0; + gUnk_0200AF00.rActionPlayerState = 0; + gUnk_0200AF00.rActionInteractTile = 0; + gUnk_0200AF00.rActionGrabbing = 0; if ((gPlayerEntity.contactFlags & 0x80) && (gPlayerEntity.iframes > 0)) SoundReq(SFX_86); @@ -323,7 +323,7 @@ static void sub_080171F0(void) { sub_080028E0(&gPlayerEntity); if (gPlayerState.flags & PL_CLONING) - gUnk_0200AF00.unk_2f = 1; + gUnk_0200AF00.rActionPlayerState = 1; sub_08078180(); gPlayerState.field_0x7 &= ~0x80; diff --git a/src/item/itemTryPickupObject.c b/src/item/itemTryPickupObject.c index 8a7b40dc..d776eee7 100644 --- a/src/item/itemTryPickupObject.c +++ b/src/item/itemTryPickupObject.c @@ -95,7 +95,7 @@ void ItemPickupCheck(ItemBehavior* this, u32 index) { carried->subAction = 5; gPlayerState.framestate = PL_STATE_THROW; sub_080762C4(this, carried, 2, index); - gUnk_0200AF00.unk_2e = 8; + gUnk_0200AF00.rActionGrabbing = 8; SoundReq(SFX_102); break; case 1: diff --git a/src/object/crenelBeanSprout.c b/src/object/crenelBeanSprout.c index a0fb206d..ee3364ee 100644 --- a/src/object/crenelBeanSprout.c +++ b/src/object/crenelBeanSprout.c @@ -172,9 +172,9 @@ void CrenelBeanSprout_Action1(CrenelBeanSproutEntity* this) { this->unk_70 = ((super->x.HALF.HI + (s8)gUnk_08123184[tmp]) & -0x10) | 8; this->unk_72 = ((super->y.HALF.HI + (s8)gUnk_08123184[(tmp) + 1]) & -0x10) | 8; if (sub_080B1AB4(this->unk_70, this->unk_72, super->collisionLayer) == 0x19) { - gUnk_0200AF00.unk_2f = 3; + gUnk_0200AF00.rActionPlayerState = 3; } else { - gUnk_0200AF00.unk_2f = 0; + gUnk_0200AF00.rActionPlayerState = 0; } PositionRelative(&gPlayerEntity, super, 0, 0x10000); if (GetTileUnderEntity(super) == 0x19) { @@ -184,7 +184,7 @@ void CrenelBeanSprout_Action1(CrenelBeanSproutEntity* this) { if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_40)) == 0) { return; } - if (gUnk_0200AF00.unk_2f != 3) { + if (gUnk_0200AF00.rActionPlayerState != 3) { return; } gPlayerState.heldObject = 0; diff --git a/src/object/itemForSale.c b/src/object/itemForSale.c index 0f4b1fa5..ad83696b 100644 --- a/src/object/itemForSale.c +++ b/src/object/itemForSale.c @@ -85,7 +85,7 @@ void ItemForSale_Init(ItemForSaleEntity* this) { void ItemForSale_Action1(ItemForSaleEntity* this) { if (super->subAction != 0) { super->action = 2; - gUnk_0200AF00.unk_2f = 2; + gUnk_0200AF00.rActionPlayerState = 2; } else { if (super->type == 0x36) { if (super->interactType != 0) { @@ -102,7 +102,7 @@ void ItemForSale_Action1(ItemForSaleEntity* this) { ResetActiveItems(); gPlayerState.heldObject = 4; gNewPlayerEntity.unk_74 = super; - gUnk_0200AF00.unk_2f = 2; + gUnk_0200AF00.rActionPlayerState = 2; MessageClose(); } } @@ -112,14 +112,14 @@ void ItemForSale_Action1(ItemForSaleEntity* this) { void ItemForSale_Action2(ItemForSaleEntity* this) { void* ptr; - gUnk_0200AF00.unk_2f = 2; + gUnk_0200AF00.rActionPlayerState = 2; super->spriteSettings.draw = gPlayerEntity.spriteSettings.draw; if ((gPlayerState.heldObject == 0) || (super != gNewPlayerEntity.unk_74)) { sub_080819B4(this); } else { ptr = sub_080784E4(); if (((*(int*)(ptr + 8) == 0) || - ((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.unk_2f = 7, (gPlayerState.playerInput.newInput & + ((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.rActionPlayerState = 7, (gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0)))) && ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_10 | PLAYER_INPUT_8)) != 0)) { sub_080819B4(this); @@ -142,8 +142,8 @@ void sub_080819B4(ItemForSaleEntity* this) { gNewPlayerEntity.unk_74 = 0; ptr = &gUnk_0200AF00; gRoomVars.shopItemType = 0; - ptr->unk_2c = 0; - ptr->unk_2f = 0; + ptr->rActionInteractObject = 0; + ptr->rActionPlayerState = 0; gRoomVars.shopItemType2 = 0; super->x.HALF.HI = this->unk_80 + gRoomControls.origin_x; super->y.HALF.HI = this->unk_82 + gRoomControls.origin_y; diff --git a/src/player.c b/src/player.c index d5f7a4e7..fd341662 100644 --- a/src/player.c +++ b/src/player.c @@ -1830,7 +1830,7 @@ static void PlayerPull(Entity* this) { gPlayerState.framestate = PL_STATE_PULL; sPlayerPullStates[this->subAction](this); - gUnk_0200AF00.unk_2e = 8; + gUnk_0200AF00.rActionGrabbing = 8; } static void sub_08072214(Entity* this) { @@ -2756,7 +2756,7 @@ static void sub_08073584(Entity* this) { return; } - gUnk_0200AF00.unk_2f = 1; + gUnk_0200AF00.rActionPlayerState = 1; if (sub_0807A2F8(0)) { this->subAction++; this->direction = 4 * (this->animationState & 6); diff --git a/src/playerUtils.c b/src/playerUtils.c index caad6878..5ce3c50d 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -211,7 +211,7 @@ bool32 IsPreventedFromUsingItem(void) { } return FALSE; default: - if ((((gUnk_0200AF00.unk_2c == 0xc) && (gPlayerState.field_0x1c == 0)) && + if ((((gUnk_0200AF00.rActionInteractObject == 0xc) && (gPlayerState.field_0x1c == 0)) && (gPlayerState.floor_type != SURFACE_SWAMP)) && ((((gPlayerState.playerInput.heldInput & PLAYER_INPUT_ANY_DIRECTION) != 0 && ((gPlayerState.flags & (PL_BURNING | PL_ROLLING)) == 0)) && @@ -976,21 +976,21 @@ void sub_08078180(void) { u8 uVar3; InteractableObject* ptr; - if (gUnk_0200AF00.unk_2f != 0) + if (gUnk_0200AF00.rActionPlayerState != 0) return; uVar1 = 0; if ((gPlayerState.jump_status == 0) && ((gPlayerState.flags & (PL_IN_HOLE | PL_FROZEN | PL_BURNING | PL_DISABLE_ITEMS | PL_DRUGGED)) == 0)) { if ((u8)(gPlayerState.heldObject - 1) < 4) { - if (gUnk_0200AF00.unk_2e != 0) { - uVar1 = gUnk_0200AF00.unk_2e; + if (gUnk_0200AF00.rActionGrabbing != 0) { + uVar1 = gUnk_0200AF00.rActionGrabbing; } else { uVar1 = 3; } } else { - if (gUnk_0200AF00.unk_2d != 0) { - uVar1 = gUnk_0200AF00.unk_2d; + if (gUnk_0200AF00.rActionInteractTile != 0) { + uVar1 = gUnk_0200AF00.rActionInteractTile; } else { ptr = sub_080784E4(); if (ptr->entity->interactType == 0) { @@ -1040,7 +1040,7 @@ void sub_08078180(void) { } } } - gUnk_0200AF00.unk_2c = uVar1; + gUnk_0200AF00.rActionInteractObject = uVar1; } bool32 sub_080782C0(void) { diff --git a/src/ui.c b/src/ui.c index f51fdfd6..7b9489d7 100644 --- a/src/ui.c +++ b/src/ui.c @@ -739,30 +739,30 @@ void ItemUIElement(UIElement* element) { void TextUIElement(UIElement* element) { UIElement* buttonUIElement; - u32 tmp; + u32 frameIndex; if (element->type2 == 9) { - tmp = gUnk_0200AF00.unk_2f; - if (tmp == 0) { + frameIndex = gUnk_0200AF00.rActionPlayerState; + if (frameIndex == 0) { switch (gArea.portal_mode) { case 2: - tmp = 0xb; + frameIndex = 0xb; break; case 3: - tmp = 0xa; + frameIndex = 0xa; break; default: - tmp = gUnk_0200AF00.unk_2c; + frameIndex = gUnk_0200AF00.rActionInteractObject; break; } } - gUnk_0200AF00.buttonText[2] = tmp; + gUnk_0200AF00.buttonText[2] = frameIndex; } - tmp = gUnk_0200AF00.buttonText[element->buttonElementId]; + frameIndex = gUnk_0200AF00.buttonText[element->buttonElementId]; element->unk_0_1 = 0; - if (tmp != 0) { - tmp += gUnk_080C9044[((SaveHeader*)0x2000000)->language]; - sub_0801CAFC(element, tmp); + if (frameIndex != 0) { + frameIndex += gUnk_080C9044[((SaveHeader*)0x2000000)->language]; + sub_0801CAFC(element, frameIndex); buttonUIElement = FindUIElement(element->buttonElementId); if (buttonUIElement != NULL) { element->x = buttonUIElement->x; From 06c0f111e7b411a059646c67a6373c783a81b85b Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 30 Apr 2023 16:00:33 +0200 Subject: [PATCH 70/86] Name all possible R button actions --- include/player.h | 16 ++++++++++++ src/beanstalkSubtask.c | 6 ++--- src/interrupts.c | 8 +++--- src/item/itemTryPickupObject.c | 2 +- src/object/crenelBeanSprout.c | 6 ++--- src/object/itemForSale.c | 10 ++++---- src/player.c | 4 +-- src/playerUtils.c | 47 +++++++++++++++++----------------- src/ui.c | 6 ++--- 9 files changed, 60 insertions(+), 45 deletions(-) diff --git a/include/player.h b/include/player.h index 0805feab..489b305c 100644 --- a/include/player.h +++ b/include/player.h @@ -452,6 +452,22 @@ typedef enum { INTERACTION_NULL = 0xFF, } InteractionType; +typedef enum { + R_ACTION_NONE, + R_ACTION_CANCEL, + R_ACTION_DROP, + R_ACTION_THROW, + R_ACTION_READ, + R_ACTION_CHECK, + R_ACTION_OPEN, + R_ACTION_SPEAK, + R_ACTION_GRAB, + R_ACTION_LIFT, + R_ACTION_GROW, + R_ACTION_SHRINK, + R_ACTION_ROLL, +} ActionRButton; + // playerUtils.c void DeleteClones(void); void CreateItemEquippedAtSlot(/*EquipSlot*/ u32 equipSlot); diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index 6d102626..e10778f3 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -310,7 +310,7 @@ u32 UpdatePlayerCollision(void) { if (gPlayerEntity.animationState != 0) { return 0; } - gUnk_0200AF00.rActionInteractTile = 4; + gUnk_0200AF00.rActionInteractTile = R_ACTION_READ; if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_40)) == 0) { return 0; } @@ -324,7 +324,7 @@ u32 UpdatePlayerCollision(void) { if ((gPlayerState.flags & 0x4080) != 0) { return 0; } - gUnk_0200AF00.rActionInteractTile = 6; + gUnk_0200AF00.rActionInteractTile = R_ACTION_OPEN; if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0) { return 0; } @@ -335,7 +335,7 @@ u32 UpdatePlayerCollision(void) { if (HasDungeonSmallKey() == 0) { return 0; } - gUnk_0200AF00.rActionInteractTile = 6; + gUnk_0200AF00.rActionInteractTile = R_ACTION_OPEN; if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0) { return 0; } diff --git a/src/interrupts.c b/src/interrupts.c index 674d064a..3d5dbcf1 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -225,9 +225,9 @@ void PlayerUpdate(Entity* this) { static void HandlePlayerLife(Entity* this) { u32 temp; - gUnk_0200AF00.rActionPlayerState = 0; - gUnk_0200AF00.rActionInteractTile = 0; - gUnk_0200AF00.rActionGrabbing = 0; + gUnk_0200AF00.rActionPlayerState = R_ACTION_NONE; + gUnk_0200AF00.rActionInteractTile = R_ACTION_NONE; + gUnk_0200AF00.rActionGrabbing = R_ACTION_NONE; if ((gPlayerEntity.contactFlags & 0x80) && (gPlayerEntity.iframes > 0)) SoundReq(SFX_86); @@ -323,7 +323,7 @@ static void sub_080171F0(void) { sub_080028E0(&gPlayerEntity); if (gPlayerState.flags & PL_CLONING) - gUnk_0200AF00.rActionPlayerState = 1; + gUnk_0200AF00.rActionPlayerState = R_ACTION_CANCEL; sub_08078180(); gPlayerState.field_0x7 &= ~0x80; diff --git a/src/item/itemTryPickupObject.c b/src/item/itemTryPickupObject.c index d776eee7..8a1bd692 100644 --- a/src/item/itemTryPickupObject.c +++ b/src/item/itemTryPickupObject.c @@ -95,7 +95,7 @@ void ItemPickupCheck(ItemBehavior* this, u32 index) { carried->subAction = 5; gPlayerState.framestate = PL_STATE_THROW; sub_080762C4(this, carried, 2, index); - gUnk_0200AF00.rActionGrabbing = 8; + gUnk_0200AF00.rActionGrabbing = R_ACTION_GRAB; SoundReq(SFX_102); break; case 1: diff --git a/src/object/crenelBeanSprout.c b/src/object/crenelBeanSprout.c index ee3364ee..ecd20008 100644 --- a/src/object/crenelBeanSprout.c +++ b/src/object/crenelBeanSprout.c @@ -172,9 +172,9 @@ void CrenelBeanSprout_Action1(CrenelBeanSproutEntity* this) { this->unk_70 = ((super->x.HALF.HI + (s8)gUnk_08123184[tmp]) & -0x10) | 8; this->unk_72 = ((super->y.HALF.HI + (s8)gUnk_08123184[(tmp) + 1]) & -0x10) | 8; if (sub_080B1AB4(this->unk_70, this->unk_72, super->collisionLayer) == 0x19) { - gUnk_0200AF00.rActionPlayerState = 3; + gUnk_0200AF00.rActionPlayerState = R_ACTION_THROW; } else { - gUnk_0200AF00.rActionPlayerState = 0; + gUnk_0200AF00.rActionPlayerState = R_ACTION_NONE; } PositionRelative(&gPlayerEntity, super, 0, 0x10000); if (GetTileUnderEntity(super) == 0x19) { @@ -184,7 +184,7 @@ void CrenelBeanSprout_Action1(CrenelBeanSproutEntity* this) { if ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_40)) == 0) { return; } - if (gUnk_0200AF00.rActionPlayerState != 3) { + if (gUnk_0200AF00.rActionPlayerState != R_ACTION_THROW) { return; } gPlayerState.heldObject = 0; diff --git a/src/object/itemForSale.c b/src/object/itemForSale.c index ad83696b..3327f2c6 100644 --- a/src/object/itemForSale.c +++ b/src/object/itemForSale.c @@ -102,7 +102,7 @@ void ItemForSale_Action1(ItemForSaleEntity* this) { ResetActiveItems(); gPlayerState.heldObject = 4; gNewPlayerEntity.unk_74 = super; - gUnk_0200AF00.rActionPlayerState = 2; + gUnk_0200AF00.rActionPlayerState = R_ACTION_DROP; MessageClose(); } } @@ -112,14 +112,14 @@ void ItemForSale_Action1(ItemForSaleEntity* this) { void ItemForSale_Action2(ItemForSaleEntity* this) { void* ptr; - gUnk_0200AF00.rActionPlayerState = 2; + gUnk_0200AF00.rActionPlayerState = R_ACTION_DROP; super->spriteSettings.draw = gPlayerEntity.spriteSettings.draw; if ((gPlayerState.heldObject == 0) || (super != gNewPlayerEntity.unk_74)) { sub_080819B4(this); } else { ptr = sub_080784E4(); if (((*(int*)(ptr + 8) == 0) || - ((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.rActionPlayerState = 7, (gPlayerState.playerInput.newInput & + ((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.rActionPlayerState = R_ACTION_SPEAK, (gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0)))) && ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_10 | PLAYER_INPUT_8)) != 0)) { sub_080819B4(this); @@ -142,8 +142,8 @@ void sub_080819B4(ItemForSaleEntity* this) { gNewPlayerEntity.unk_74 = 0; ptr = &gUnk_0200AF00; gRoomVars.shopItemType = 0; - ptr->rActionInteractObject = 0; - ptr->rActionPlayerState = 0; + ptr->rActionInteractObject = R_ACTION_NONE; + ptr->rActionPlayerState = R_ACTION_NONE; gRoomVars.shopItemType2 = 0; super->x.HALF.HI = this->unk_80 + gRoomControls.origin_x; super->y.HALF.HI = this->unk_82 + gRoomControls.origin_y; diff --git a/src/player.c b/src/player.c index fd341662..2d50b1f8 100644 --- a/src/player.c +++ b/src/player.c @@ -1830,7 +1830,7 @@ static void PlayerPull(Entity* this) { gPlayerState.framestate = PL_STATE_PULL; sPlayerPullStates[this->subAction](this); - gUnk_0200AF00.rActionGrabbing = 8; + gUnk_0200AF00.rActionGrabbing = R_ACTION_GRAB; } static void sub_08072214(Entity* this) { @@ -2756,7 +2756,7 @@ static void sub_08073584(Entity* this) { return; } - gUnk_0200AF00.rActionPlayerState = 1; + gUnk_0200AF00.rActionPlayerState = R_ACTION_CANCEL; if (sub_0807A2F8(0)) { this->subAction++; this->direction = 4 * (this->animationState & 6); diff --git a/src/playerUtils.c b/src/playerUtils.c index 5ce3c50d..57bed422 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -211,7 +211,7 @@ bool32 IsPreventedFromUsingItem(void) { } return FALSE; default: - if ((((gUnk_0200AF00.rActionInteractObject == 0xc) && (gPlayerState.field_0x1c == 0)) && + if ((((gUnk_0200AF00.rActionInteractObject == R_ACTION_ROLL) && (gPlayerState.field_0x1c == 0)) && (gPlayerState.floor_type != SURFACE_SWAMP)) && ((((gPlayerState.playerInput.heldInput & PLAYER_INPUT_ANY_DIRECTION) != 0 && ((gPlayerState.flags & (PL_BURNING | PL_ROLLING)) == 0)) && @@ -972,49 +972,48 @@ void ForceSetPlayerState(u32 framestate) { } void sub_08078180(void) { - u8 uVar1; - u8 uVar3; - InteractableObject* ptr; + u8 rAction; + InteractableObject* interaction; - if (gUnk_0200AF00.rActionPlayerState != 0) + if (gUnk_0200AF00.rActionPlayerState != R_ACTION_NONE) return; - uVar1 = 0; + rAction = R_ACTION_NONE; if ((gPlayerState.jump_status == 0) && ((gPlayerState.flags & (PL_IN_HOLE | PL_FROZEN | PL_BURNING | PL_DISABLE_ITEMS | PL_DRUGGED)) == 0)) { if ((u8)(gPlayerState.heldObject - 1) < 4) { - if (gUnk_0200AF00.rActionGrabbing != 0) { - uVar1 = gUnk_0200AF00.rActionGrabbing; + if (gUnk_0200AF00.rActionGrabbing != R_ACTION_NONE) { + rAction = gUnk_0200AF00.rActionGrabbing; } else { - uVar1 = 3; + rAction = R_ACTION_THROW; } } else { - if (gUnk_0200AF00.rActionInteractTile != 0) { - uVar1 = gUnk_0200AF00.rActionInteractTile; + if (gUnk_0200AF00.rActionInteractTile != R_ACTION_NONE) { + rAction = gUnk_0200AF00.rActionInteractTile; } else { - ptr = sub_080784E4(); - if (ptr->entity->interactType == 0) { + interaction = sub_080784E4(); + if (interaction->entity->interactType == 0) { - switch (ptr->type) { + switch (interaction->type) { case INTERACTION_TALK: case INTERACTION_TALK_MINISH: - uVar1 = 7; + rAction = R_ACTION_SPEAK; break; case INTERACTION_LIFT_SHOP_ITEM: if (gRoomVars.shopItemType == ITEM_NONE) { - uVar1 = 9; + rAction = R_ACTION_LIFT; } break; case INTERACTION_OPEN_CHEST: case INTERACTION_USE_SMALL_KEY: case INTERACTION_USE_BIG_KEY: - uVar1 = 6; + rAction = R_ACTION_OPEN; break; case INTERACTION_CHECK: - uVar1 = 5; + rAction = R_ACTION_CHECK; break; case INTERACTION_DROP_PEDESTAL: - uVar1 = 2; + rAction = R_ACTION_DROP; break; } } else { @@ -1022,25 +1021,25 @@ void sub_08078180(void) { if (((gPlayerState.framestate != PL_STATE_USEPORTAL))) { if ((gCarriedEntity.unk_1 == 2) && ((gCarriedEntity.unk_8)->carryFlags == 1)) { - uVar1 = 8; + rAction = R_ACTION_GRAB; } else { - uVar1 = 9; + rAction = R_ACTION_LIFT; } } else { return; } } else { if ((gPlayerState.framestate == PL_STATE_WALK) && (gPlayerState.mobility == 0)) { - uVar1 = 0xc; + rAction = R_ACTION_ROLL; } else { - uVar1 = 0; + rAction = R_ACTION_NONE; } } } } } } - gUnk_0200AF00.rActionInteractObject = uVar1; + gUnk_0200AF00.rActionInteractObject = rAction; } bool32 sub_080782C0(void) { diff --git a/src/ui.c b/src/ui.c index 7b9489d7..7e660167 100644 --- a/src/ui.c +++ b/src/ui.c @@ -743,13 +743,13 @@ void TextUIElement(UIElement* element) { if (element->type2 == 9) { frameIndex = gUnk_0200AF00.rActionPlayerState; - if (frameIndex == 0) { + if (frameIndex == R_ACTION_NONE) { switch (gArea.portal_mode) { case 2: - frameIndex = 0xb; + frameIndex = R_ACTION_SHRINK; break; case 3: - frameIndex = 0xa; + frameIndex = R_ACTION_GROW; break; default: frameIndex = gUnk_0200AF00.rActionInteractObject; From b4995417d3b00b1e6ee6a7dc7a9a7f095d0b7de0 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 30 Apr 2023 18:49:08 +0200 Subject: [PATCH 71/86] Use more PlayerFlags constants --- src/beanstalkSubtask.c | 40 ++++++++++++++++---------------- src/code_08049DF4.c | 5 ++-- src/enemy/armos.c | 2 +- src/item/itemSword.c | 2 +- src/object/lilypadLarge.c | 4 ++-- src/object/pushableStatue.c | 2 +- src/playerItem/playerItemSword.c | 2 +- src/playerUtils.c | 8 +++---- 8 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index e10778f3..3009a41c 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -204,7 +204,7 @@ u32 UpdatePlayerCollision(void) { ptr1 = &gUnk_080B4490[index * 2]; if (sub_080B1B44(COORD_TO_TILE_OFFSET(&gPlayerEntity, -ptr1[0], -ptr1[1]), gPlayerEntity.collisionLayer) == 0xff) { - if ((((gPlayerState.flags & 0x10002) != 0) || ((gPlayerState.sword_state & 0x10) != 0)) || + if ((((gPlayerState.flags & (PL_FLAGS10000 | PL_FLAGS2)) != 0) || ((gPlayerState.sword_state & 0x10) != 0)) || ((sub_080806BC(gPlayerEntity.x.HALF.HI - gRoomControls.origin_x, gPlayerEntity.y.HALF.HI - gRoomControls.origin_y, index, 5) == 0 && (((gPlayerState.heldObject != 0 || ((gPlayerState.field_0x1c & 0xf) != 0)) || @@ -234,19 +234,19 @@ u32 UpdatePlayerCollision(void) { return 0; } layer->mapData[position] = 0x4001 + (gPlayerEntity.animationState >> 1); - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { gPlayerState.pushedObject = 0xc0; } else { gPlayerState.pushedObject = 0xa0; } gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); return 1; case 0x28: - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { return 0; } gPlayerEntity.action = gPlayerEntity.action; @@ -286,7 +286,7 @@ u32 UpdatePlayerCollision(void) { layer->mapData[position] = 0x401c + (gPlayerEntity.animationState >> 1); gPlayerState.pushedObject = 0xa0; gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); @@ -304,7 +304,7 @@ u32 UpdatePlayerCollision(void) { case 0x3a: case 0x5b: case 0x4051: - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { return 0; } if (gPlayerEntity.animationState != 0) { @@ -321,7 +321,7 @@ u32 UpdatePlayerCollision(void) { if ((animationState1 & 0xff) != 0) { return 0; } - if ((gPlayerState.flags & 0x4080) != 0) { + if ((gPlayerState.flags & (PL_DRUGGED | PL_MINISH)) != 0) { return 0; } gUnk_0200AF00.rActionInteractTile = R_ACTION_OPEN; @@ -344,7 +344,7 @@ u32 UpdatePlayerCollision(void) { return 2; case 0x3d: case 0x4040 ... 0x4048: - if ((gPlayerState.flags & 0x4000) != 0) { + if ((gPlayerState.flags & PL_DRUGGED) != 0) { return 0; } if (sub_08079778() == 0) { @@ -365,7 +365,7 @@ u32 UpdatePlayerCollision(void) { return 0; } gPlayerState.jump_status = 0x81; - gPlayerState.flags |= 0x20; + gPlayerState.flags |= PL_USE_PORTAL; gPlayerState.queued_action = PLAYER_USEPORTAL; gPlayerEntity.zVelocity = 0x20000; COLLISION_OFF(&gPlayerEntity); @@ -381,7 +381,7 @@ u32 UpdatePlayerCollision(void) { } gPlayerState.pushedObject = 0xa0; gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); @@ -393,7 +393,7 @@ u32 UpdatePlayerCollision(void) { layer->mapData[position] = 0x405b + (gPlayerEntity.animationState >> 1); gPlayerState.pushedObject = 0x98; gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); @@ -405,7 +405,7 @@ u32 UpdatePlayerCollision(void) { layer->mapData[position] = 0x4037 + (gPlayerEntity.animationState >> 1); gPlayerState.pushedObject = 0xa0; gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); @@ -423,7 +423,7 @@ u32 UpdatePlayerCollision(void) { layer->mapData[position] = 0x403f; gPlayerState.pushedObject = 0x82; gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); @@ -464,7 +464,7 @@ u32 UpdatePlayerCollision(void) { pushedBlock->collisionLayer = gPlayerEntity.collisionLayer; gPlayerState.pushedObject = 0xa0; gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = pushedBlock->direction; @@ -472,13 +472,13 @@ u32 UpdatePlayerCollision(void) { case 0x402b ... 0x402d: if (sub_0801A370(layer, position) != 0) { layer->mapData[position] = 0x4030 + ((gPlayerEntity.animationState & 4) >> 2); - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { gPlayerState.pushedObject = 0xa0; } else { gPlayerState.pushedObject = 0x90; } gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); @@ -491,13 +491,13 @@ u32 UpdatePlayerCollision(void) { return 0; } layer->mapData[position] = 0x404b + (gPlayerEntity.animationState >> 1); - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { gPlayerState.pushedObject = 0xc0; } else { gPlayerState.pushedObject = 0xa0; } gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); @@ -563,7 +563,7 @@ u32 UpdatePlayerCollision(void) { SetTile(0x4074, position, gPlayerEntity.collisionLayer); gPlayerState.pushedObject = 0xa0; gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; gPlayerEntity.direction = Direction8FromAnimationState(gPlayerEntity.animationState); @@ -831,7 +831,7 @@ bool32 sub_0801AA58(Entity* this, u32 param_2, u32 param_3) { object->collisionLayer = this->collisionLayer; gPlayerState.pushedObject = 0xa0; gPlayerState.queued_action = PLAYER_PUSH; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; this->x.HALF.LO = 0; this->y.HALF.LO = 0; this->direction = param_3; diff --git a/src/code_08049DF4.c b/src/code_08049DF4.c index bbef5e64..e6d53f99 100644 --- a/src/code_08049DF4.c +++ b/src/code_08049DF4.c @@ -43,7 +43,7 @@ Entity* sub_08049E4C(void) { } Entity* sub_08049E80(void) { - if ((gPlayerState.field_0x3c != 0) || !(gPlayerState.flags & 0x80)) { + if ((gPlayerState.field_0x3c != 0) || !(gPlayerState.flags & PL_MINISH)) { return NULL; } gUnk_020000B0 = &gPlayerEntity; @@ -51,7 +51,8 @@ Entity* sub_08049E80(void) { } Entity* sub_08049EB0(void) { - if ((gPlayerState.field_0x3c == 0) && !(gPlayerState.flags & 0x80190)) { + if ((gPlayerState.field_0x3c == 0) && !(gPlayerState.flags & + (PL_MOLDWORM_CAPTURED | PL_DISABLE_ITEMS | PL_MINISH | PL_CAPTURED))) { gUnk_020000B0 = &gPlayerEntity; return &gPlayerEntity; } diff --git a/src/enemy/armos.c b/src/enemy/armos.c index 38a30371..e4fa4af1 100644 --- a/src/enemy/armos.c +++ b/src/enemy/armos.c @@ -422,7 +422,7 @@ bool32 sub_0803086C(ArmosEntity* this) { FORCE_REGISTER(u32 r2, r2); if (this->unk_7c != NULL) { - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { centerX = super->x.HALF_U.HI - gRoomControls.origin_x; centerY = super->y.HALF_U.HI - gRoomControls.origin_y; // TODO for some reason the 0x3f of COORD_TO_TILE(super) needs to be forced to r2 here. diff --git a/src/item/itemSword.c b/src/item/itemSword.c index 87b1070a..5598e0d7 100644 --- a/src/item/itemSword.c +++ b/src/item/itemSword.c @@ -127,7 +127,7 @@ void sub_080754B8(ItemBehavior* this, u32 index) { } if ((this->playerFrame & 0x80) != 0) { - if (((gPlayerState.flags & 0x80) != 0) || ((gPlayerState.skills & SKILL_SPIN_ATTACK) == 0)) { + if (((gPlayerState.flags & PL_MINISH) != 0) || ((gPlayerState.skills & SKILL_SPIN_ATTACK) == 0)) { sub_080759B8(this, index); } else { sub_08075580(this, index); diff --git a/src/object/lilypadLarge.c b/src/object/lilypadLarge.c index 88cf601a..84b11274 100644 --- a/src/object/lilypadLarge.c +++ b/src/object/lilypadLarge.c @@ -117,7 +117,7 @@ void sub_080855E8(LilypadLargeEntity* this) { super->flags |= 0x20; if (sub_0806FC80(super, &gPlayerEntity, 0x18) != 0) { - gPlayerState.flags |= 2; + gPlayerState.flags |= PL_FLAGS2; if (gPlayerEntity.z.WORD == 0) { if (gPlayerState.swim_state != 0) { gPlayerEntity.collisionFlags &= 0xfb; @@ -258,7 +258,7 @@ void sub_080855E8(LilypadLargeEntity* this) { this->unk_85 = 0; } - if ((gPlayerState.flags & 2) != 0) { + if ((gPlayerState.flags & PL_FLAGS2) != 0) { sub_08085F1C(this); } diff --git a/src/object/pushableStatue.c b/src/object/pushableStatue.c index efca1ea6..b29ca269 100644 --- a/src/object/pushableStatue.c +++ b/src/object/pushableStatue.c @@ -132,7 +132,7 @@ void PushableStatue_SubAction0(PushableStatueEntity* this) { if (sub_080896B0()) { gPlayerState.queued_action = PLAYER_PULL; gPlayerState.field_0x38 = 0x20; - gPlayerState.flags |= 1; + gPlayerState.flags |= PL_BUSY; gPlayerEntity.x.HALF.LO = 0; gPlayerEntity.y.HALF.LO = 0; super->direction = (gPlayerEntity.animationState ^ 4) << 2; diff --git a/src/playerItem/playerItemSword.c b/src/playerItem/playerItemSword.c index e1fbacb9..43471e77 100644 --- a/src/playerItem/playerItemSword.c +++ b/src/playerItem/playerItemSword.c @@ -182,7 +182,7 @@ void sub_080A76CC(PlayerItemSwordEntity* this) { } } else { - if ((gPlayerState.flags & 0x8000000) != 0) { + if ((gPlayerState.flags & PL_SWORD_THRUST) != 0) { if (this->unk_68 == 6) { super->hurtType = 0xc; } else { diff --git a/src/playerUtils.c b/src/playerUtils.c index 57bed422..33be1be5 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1526,10 +1526,10 @@ void sub_08078FB0(Entity* this) { gPlayerState.field_0x35 = 0xff; } sub_08079064(this); - if ((gPlayerState.flags & 8) != 0) { + if ((gPlayerState.flags & PL_NO_CAP) != 0) { animIndex = 0x58; } else { - if ((gPlayerState.flags & 0x80) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { animIndex = 0x18; } else { if (gPlayerState.animation >> 8 == 7) { @@ -1722,8 +1722,8 @@ void RespawnPlayer(void) { player->zVelocity = 0; player->knockbackDuration = 0; ResetPlayerPosition(); - if ((gPlayerState.flags & 0x20000) == 0) { - if ((gPlayerState.flags & 0x10000) != 0) { + if ((gPlayerState.flags & PL_GYORG_FIGHT) == 0) { + if ((gPlayerState.flags & PL_FLAGS10000) != 0) { player->x.HALF.HI = gPlayerState.lilypad->x.HALF.HI; player->y.HALF.HI = gPlayerState.lilypad->y.HALF.HI; } else { From 4fd83717cd62a4a2c91cbe7762e86936b591d308 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 30 Apr 2023 20:21:45 +0200 Subject: [PATCH 72/86] Name sub_08078180 --- include/player.h | 4 ++-- src/interrupts.c | 2 +- src/playerUtils.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/player.h b/include/player.h index 489b305c..eb347479 100644 --- a/include/player.h +++ b/include/player.h @@ -12,7 +12,7 @@ enum PlayerActions { PLAYER_JUMP, PLAYER_PUSH, PLAYER_BOUNCE, - PLAYER_08070E9C, // sub_080782C0, only when PLAYER_INPUT_1000 is newInput + PLAYER_08070E9C, // sub_080782C0, only when pressing L to start a Kinstone Fusion PLAYER_ITEMGET, PLAYER_MINISH, PLAYER_MINISHDIE, @@ -534,7 +534,7 @@ bool32 IsItemActive(ItemBehavior*); bool32 IsItemActivatedThisFrame(ItemBehavior*); bool32 IsItemActiveByInput(ItemBehavior*, PlayerInputState); bool32 sub_08077FEC(u32); -void sub_08078180(void); +void DetermineRButtonInteraction(void); void ResetPossibleInteraction(); void AddInteractableFuser(Entity*, u32); void AddInteractableSmallKeyLock(Entity*); diff --git a/src/interrupts.c b/src/interrupts.c index 3d5dbcf1..23934487 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -325,7 +325,7 @@ static void sub_080171F0(void) { if (gPlayerState.flags & PL_CLONING) gUnk_0200AF00.rActionPlayerState = R_ACTION_CANCEL; - sub_08078180(); + DetermineRButtonInteraction(); gPlayerState.field_0x7 &= ~0x80; gPlayerState.field_0xa &= 0xf; gPlayerState.keepFacing &= ~0x80; diff --git a/src/playerUtils.c b/src/playerUtils.c index 33be1be5..8147a443 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -971,7 +971,7 @@ void ForceSetPlayerState(u32 framestate) { sub_08078B48(); } -void sub_08078180(void) { +void DetermineRButtonInteraction(void) { u8 rAction; InteractableObject* interaction; From 5145a6909e6d764687376a07cd20671f618e570b Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 30 Apr 2023 21:43:22 +0200 Subject: [PATCH 73/86] Name and clean up some functions and structs --- .../cloudTops/script_Npc4EFirstCloud.inc | 2 +- data/scripts/hyruleTown/script_Beedle.inc | 6 +-- data/scripts/npc/script_MysteriousWall.inc | 2 +- .../script_Npc4ELookAtPictureAgain.inc | 2 +- .../sanctuary/script_Npc4EPedestal.inc | 2 +- .../sanctuary/script_Npc4ESecondSanctuary.inc | 2 +- .../sanctuary/script_Npc4EThirdSanctuary.inc | 2 +- data/scripts/unused/script_08012C68.inc | 2 +- data/scripts/unused/script_08013D04.inc | 2 +- data/scripts/unused/script_08013D44.inc | 2 +- data/scripts/unused/script_08013D84.inc | 2 +- data/scripts/unused/script_08013DC4.inc | 2 +- .../veilFalls/script_NPC4ESourceOfTheFlow.inc | 2 +- .../script_Npc4EWindRuinsTextBoard.inc | 2 +- src/npc/beedle.c | 37 +++++++++---------- src/npc/npc4E.c | 29 +++++++-------- 16 files changed, 47 insertions(+), 51 deletions(-) diff --git a/data/scripts/cloudTops/script_Npc4EFirstCloud.inc b/data/scripts/cloudTops/script_Npc4EFirstCloud.inc index 11010e65..76d025fa 100644 --- a/data/scripts/cloudTops/script_Npc4EFirstCloud.inc +++ b/data/scripts/cloudTops/script_Npc4EFirstCloud.inc @@ -8,7 +8,7 @@ SCRIPT_START script_Npc4EFirstCloud Call NPC4E_IsKinstoneFused JumpIf script_0800D6AE Call NPC4E_MakeFuserInteractable - CallWithArg sub_0806DA04, 0x00000002 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000002 EndBlock script_0800D636: _0807EA4C diff --git a/data/scripts/hyruleTown/script_Beedle.inc b/data/scripts/hyruleTown/script_Beedle.inc index 49342981..d7c28c23 100644 --- a/data/scripts/hyruleTown/script_Beedle.inc +++ b/data/scripts/hyruleTown/script_Beedle.inc @@ -19,7 +19,7 @@ script_08010502: MessageNoOverlap TEXT_PICOLYTE, 0x10 WaitUntilTextboxCloses script_0801052E: - Call sub_080634E4 + Call Beedle_GetObjectType JumpTable script_08010544, script_08010558, script_08010570, script_08010570, script_0801054C, script_08010564, script_08010570 script_08010544: MessageNoOverlap TEXT_PICOLYTE, 0x0d @@ -37,7 +37,7 @@ script_08010564: JumpIfNot script_080105DC Jump script_08010570 script_08010570: - Call sub_080634EC + Call Beedle_ConfirmBuyItem CallWithArg ScriptCommand_SaleItemConfirmMessage, 0x00000000 WaitUntilTextboxCloses CheckTextboxResult @@ -46,7 +46,7 @@ script_08010570: JumpIfNot script_080105C4 CheckBottleContaining ITEM_BOTTLE_EMPTY JumpIfNot script_080105CC - Call sub_08063504 + Call Beedle_IsBottleInInventory JumpIf script_080105D4 MessageNoOverlap TEXT_PICOLYTE, 0x07 WaitUntilTextboxCloses diff --git a/data/scripts/npc/script_MysteriousWall.inc b/data/scripts/npc/script_MysteriousWall.inc index 4775eb3c..d0bc0a83 100644 --- a/data/scripts/npc/script_MysteriousWall.inc +++ b/data/scripts/npc/script_MysteriousWall.inc @@ -6,7 +6,7 @@ SCRIPT_START script_MysteriousWall Call NPC4E_IsKinstoneFused JumpIf script_0800B9AC Call NPC4E_MakeFuserInteractable - CallWithArg sub_0806DA04, 0x00000005 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000005 EndBlock script_0800B98A: _0807EA4C diff --git a/data/scripts/sanctuary/script_Npc4ELookAtPictureAgain.inc b/data/scripts/sanctuary/script_Npc4ELookAtPictureAgain.inc index f8734547..f1f81b23 100644 --- a/data/scripts/sanctuary/script_Npc4ELookAtPictureAgain.inc +++ b/data/scripts/sanctuary/script_Npc4ELookAtPictureAgain.inc @@ -8,7 +8,7 @@ script_0801427C: JumpIfNot script_0801427C BeginBlock Call MakeCheckableObjectInteractable - CallWithArg sub_0806DA04, 0x00000008 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000008 EndBlock script_08014298: CheckEntityInteractType diff --git a/data/scripts/sanctuary/script_Npc4EPedestal.inc b/data/scripts/sanctuary/script_Npc4EPedestal.inc index ec28c798..415d4c04 100644 --- a/data/scripts/sanctuary/script_Npc4EPedestal.inc +++ b/data/scripts/sanctuary/script_Npc4EPedestal.inc @@ -5,7 +5,7 @@ SCRIPT_START script_Npc4EPedestal EndBlock BeginBlock Call MakePedestalInteractable - CallWithArg sub_0806DA04, 0x00000003 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000003 EndBlock script_080134F8: CheckEntityInteractType diff --git a/data/scripts/sanctuary/script_Npc4ESecondSanctuary.inc b/data/scripts/sanctuary/script_Npc4ESecondSanctuary.inc index 4f456f91..181600cc 100644 --- a/data/scripts/sanctuary/script_Npc4ESecondSanctuary.inc +++ b/data/scripts/sanctuary/script_Npc4ESecondSanctuary.inc @@ -5,7 +5,7 @@ SCRIPT_START script_Npc4ESecondSanctuary EndBlock BeginBlock Call MakePedestalInteractable - CallWithArg sub_0806DA04, 0x00000003 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000003 EndBlock script_0801373C: CheckEntityInteractType diff --git a/data/scripts/sanctuary/script_Npc4EThirdSanctuary.inc b/data/scripts/sanctuary/script_Npc4EThirdSanctuary.inc index c88ca358..ffb033f9 100644 --- a/data/scripts/sanctuary/script_Npc4EThirdSanctuary.inc +++ b/data/scripts/sanctuary/script_Npc4EThirdSanctuary.inc @@ -5,7 +5,7 @@ SCRIPT_START script_Npc4EThirdSanctuary EndBlock BeginBlock Call MakePedestalInteractable - CallWithArg sub_0806DA04, 0x00000003 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000003 EndBlock script_080138D0: CheckEntityInteractType diff --git a/data/scripts/unused/script_08012C68.inc b/data/scripts/unused/script_08012C68.inc index f4c081b7..78e7faf3 100644 --- a/data/scripts/unused/script_08012C68.inc +++ b/data/scripts/unused/script_08012C68.inc @@ -4,7 +4,7 @@ SCRIPT_START script_08012C68 _0807E9D4 DoPostScriptAction 0x0008 SetIntVariable 0x00000000 - Call sub_0806DA04 + Call NPC4E_ChangeInteractableHitbox EndBlock script_08012C7E: CheckEntityInteractType diff --git a/data/scripts/unused/script_08013D04.inc b/data/scripts/unused/script_08013D04.inc index d65b8f3d..ee68a6c7 100644 --- a/data/scripts/unused/script_08013D04.inc +++ b/data/scripts/unused/script_08013D04.inc @@ -3,7 +3,7 @@ SCRIPT_START script_08013D04 BeginBlock Call MakePedestalInteractable DoPostScriptAction 0x0008 - CallWithArg sub_0806DA04, 0x00000004 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000004 EndBlock script_08013D1C: CheckEntityInteractType diff --git a/data/scripts/unused/script_08013D44.inc b/data/scripts/unused/script_08013D44.inc index e8ea0b64..5cdc5f41 100644 --- a/data/scripts/unused/script_08013D44.inc +++ b/data/scripts/unused/script_08013D44.inc @@ -3,7 +3,7 @@ SCRIPT_START script_08013D44 BeginBlock Call MakePedestalInteractable DoPostScriptAction 0x0008 - CallWithArg sub_0806DA04, 0x00000004 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000004 EndBlock script_08013D5C: CheckEntityInteractType diff --git a/data/scripts/unused/script_08013D84.inc b/data/scripts/unused/script_08013D84.inc index 5eef78d1..b46c6696 100644 --- a/data/scripts/unused/script_08013D84.inc +++ b/data/scripts/unused/script_08013D84.inc @@ -3,7 +3,7 @@ SCRIPT_START script_08013D84 BeginBlock Call MakePedestalInteractable DoPostScriptAction 0x0008 - CallWithArg sub_0806DA04, 0x00000004 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000004 EndBlock script_08013D9C: CheckEntityInteractType diff --git a/data/scripts/unused/script_08013DC4.inc b/data/scripts/unused/script_08013DC4.inc index 3a744cbe..4fefe05b 100644 --- a/data/scripts/unused/script_08013DC4.inc +++ b/data/scripts/unused/script_08013DC4.inc @@ -3,7 +3,7 @@ SCRIPT_START script_08013DC4 BeginBlock Call MakePedestalInteractable DoPostScriptAction 0x0008 - CallWithArg sub_0806DA04, 0x00000004 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000004 EndBlock script_08013DDC: CheckEntityInteractType diff --git a/data/scripts/veilFalls/script_NPC4ESourceOfTheFlow.inc b/data/scripts/veilFalls/script_NPC4ESourceOfTheFlow.inc index efda3b1e..0c4a11a3 100644 --- a/data/scripts/veilFalls/script_NPC4ESourceOfTheFlow.inc +++ b/data/scripts/veilFalls/script_NPC4ESourceOfTheFlow.inc @@ -5,7 +5,7 @@ SCRIPT_START script_NPC4ESourceOfTheFlow CheckKinstoneFused KINSTONE_SOURCE_FLOW JumpIf script_08016028 _0807EA88 KINSTONE_SOURCE_FLOW - CallWithArg sub_0806DA04, 0x00000007 + CallWithArg NPC4E_ChangeInteractableHitbox, 0x00000007 DoPostScriptAction 0x000a EndBlock script_08015FE4: diff --git a/data/scripts/windRuins/script_Npc4EWindRuinsTextBoard.inc b/data/scripts/windRuins/script_Npc4EWindRuinsTextBoard.inc index 6dd84635..3265af54 100644 --- a/data/scripts/windRuins/script_Npc4EWindRuinsTextBoard.inc +++ b/data/scripts/windRuins/script_Npc4EWindRuinsTextBoard.inc @@ -4,7 +4,7 @@ SCRIPT_START script_Npc4EWindRuinsTextBoard Call MakeCheckableObjectInteractable DoPostScriptAction 0x0008 SetIntVariable 0x00000001 - Call sub_0806DA04 + Call NPC4E_ChangeInteractableHitbox EndBlock script_0800D88E: CheckEntityInteractType diff --git a/src/npc/beedle.c b/src/npc/beedle.c index 28e124c6..0b2c030a 100644 --- a/src/npc/beedle.c +++ b/src/npc/beedle.c @@ -9,22 +9,17 @@ #include "item.h" typedef struct { - s8 unk_00; - u8 unk_01; - u8 unk_02; - u8 unk_03; - s8 unk_04; - s8 unk_05; - s8 unk_06; - s8 unk_07; -} gUnk_0810C89C_struct; + s8 customHitbox[4]; + s8 interactDirections; + u8 unused[3]; +} InteractCollisionData; void sub_080632E0(Entity* this); void sub_08063314(Entity* this); void sub_0806336C(Entity* this); void sub_08063390(Entity* this); -static const u8 gUnk_0810C88C[] = { +static const u8 gBeedleItems[] = { ITEM_NONE, ITEM_BOTTLE_PICOLYTE_BLUE, ITEM_BOTTLE_PICOLYTE_GREEN, @@ -32,10 +27,10 @@ static const u8 gUnk_0810C88C[] = { ITEM_BOTTLE_PICOLYTE_ORANGE, ITEM_BOTTLE_PICOLYTE_YELLOW, ITEM_BOTTLE_PICOLYTE_WHITE, - ITEM_NONE, + 0, }; static const Hitbox gUnk_0810C894 = { 0, 0, { 0, 0, 0, 0 }, 16, 6 }; -static const gUnk_0810C89C_struct gUnk_0810C89C[] = { +static const InteractCollisionData gBeedleCollisionData[] = { { 0, 0, 6, 6, 0, 0, 0, 0 }, { -24, 0, 6, 6, 0, 0, 0, 0 }, { -24, 16, 6, 6, 0, 0, 0, 0 }, { -24, 32, 6, 6, 0, 0, 0, 0 }, { 24, 0, 6, 6, 0, 0, 0, 0 }, { 24, 16, 6, 6, 0, 0, 0, 0 }, { 24, 32, 6, 6, 0, 0, 0, 0 }, @@ -146,8 +141,10 @@ void sub_08063410(Entity* this) { GetNextFrame(this); } +// figures out with which of the 7 objects the player interacts with +// based on the player's position and facing direction void sub_0806346C(Entity* this) { - static const u8 gUnk_0810C8F0[][6][4] = { + static const u8 gUnk_0810C8F0[5][6][4] = { { { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, @@ -216,20 +213,20 @@ void sub_0806346C(Entity* this) { bVar1 = gUnk_0810C8F0[iVar2][iVar3][gPlayerEntity.animationState >> 1]; if (bVar1 != this->type2) { - const gUnk_0810C89C_struct* temp = &gUnk_0810C89C[bVar1]; - SetInteractableObjectCollision(this, 1, temp->unk_04, temp); + const InteractCollisionData* data = &gBeedleCollisionData[bVar1]; + SetInteractableObjectCollision(this, 1, data->interactDirections, data); this->type2 = bVar1; } } -void sub_080634E4(Entity* this, ScriptExecutionContext* context) { +void Beedle_GetObjectType(Entity* this, ScriptExecutionContext* context) { context->intVariable = this->type2; } -void sub_080634EC(Entity* this) { - gRoomVars.shopItemType = gUnk_0810C88C[this->type2]; +void Beedle_ConfirmBuyItem(Entity* this) { + gRoomVars.shopItemType = gBeedleItems[this->type2]; } -void sub_08063504(Entity* this, ScriptExecutionContext* context) { - context->condition = !!GetBottleContaining(gUnk_0810C88C[this->type2]); +void Beedle_IsBottleInInventory(Entity* this, ScriptExecutionContext* context) { + context->condition = !!GetBottleContaining(gBeedleItems[this->type2]); } diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 8da17db8..3cc60593 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -12,15 +12,16 @@ #include "sound.h" typedef struct { - u32 unk_00; - s8 unk_04; -} gUnk_0810C89C_struct; + s8 customHitbox[4]; + u8 interactDirections; + u8 unused[3]; +} InteractCollisionData; extern void script_MinishVillageObjectLeftStoneOpening; // Cutscene data type? extern void script_MinishVillageObjectRightStoneOpening; // Cutscene data type? const Hitbox gUnk_08114154; -const u8 gUnk_0811415C[]; +const InteractCollisionData gNpc4ECollisionData[]; const ScreenTransitionData* const gNpc4ETransitions[]; const u8 gNpc4ETransitionTypes[]; const u16 gUnk_081141F4[]; @@ -42,11 +43,9 @@ void NPC4E(Entity* this) { } } -void sub_0806DA04(Entity* this, ScriptExecutionContext* context) { - // TODO gUnk_0811415C should be a gUnk_0810C89C_struct[], but then a lot of bytes everywhere are wrong? - gUnk_0810C89C_struct* a = (gUnk_0810C89C_struct*)&( - (gUnk_0810C89C_struct*)gUnk_0811415C)[context->intVariable]; // cast necessary to no longer make it a const* ? - SetInteractableObjectCollision(this, 1, (u8)a->unk_04, a); +void NPC4E_ChangeInteractableHitbox(Entity* this, ScriptExecutionContext* context) { + const InteractCollisionData* data = &gNpc4ECollisionData[context->intVariable]; + SetInteractableObjectCollision(this, 1, data->interactDirections, data); } void NPC4E_DoScreenTransition(Entity* this, ScriptExecutionContext* context) { @@ -232,13 +231,13 @@ void NPC4E_Fusion(Entity* this) { const Hitbox gUnk_08114154 = { 0, -8, 0, 0, 0, 0, 24, 8 }; -const u8 gUnk_0811415C[] = { // - 0x00, 0x00, 0x08, 0x08, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x04, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x10, 0x04, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x08, 0x0e, 0x00, 0x00, 0x00, +const InteractCollisionData gNpc4ECollisionData[] = { // + { 0, 0, 8, 8, 0x0E, 0, 0, 0 }, { 0, 0, 26, 8, 0x0E, 0, 0, 0 }, + { 0, 0, 16, 4, 0x0E, 0, 0, 0 }, { 0, 0, 10, 10, 0x00, 0, 0, 0 }, + { 0, 0, 10, 10, 0x00, 0, 0, 0 }, { 0, 0, 6, 4, 0x0E, 0, 0, 0 }, + { 0, 8, 16, 4, 0x0E, 0, 0, 0 }, { 0, -8, 24, 8, 0x0E, 0, 0, 0 }, #ifndef EU - 0x00, 0x00, 0x58, 0x08, 0x0e, 0x00, 0x00, 0x00 + { 0, 0, 88, 8, 0x0E, 0, 0, 0 } #endif }; From 3a7f92e7c75c4cdc6ef1ee788d743a87deaebcc6 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 30 Apr 2023 21:58:05 +0200 Subject: [PATCH 74/86] Change customHitbox in InteractableObject to s8* --- include/structures.h | 2 +- src/npc/drLeft.c | 2 +- src/npc/mayorHagen.c | 2 +- src/npc/rem.c | 2 +- src/npc/smallTownMinish.c | 2 +- src/npc/smith.c | 2 +- src/npc/stockwell.c | 2 +- src/npc/townMinish.c | 10 +++++----- src/object/windcrest.c | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/structures.h b/include/structures.h index 2560d32a..acebef3e 100644 --- a/include/structures.h +++ b/include/structures.h @@ -263,7 +263,7 @@ typedef struct { /*0x01*/ u8 type; /*0x02*/ u8 interactDirections; /* lower 4 bits determine Link's allowed facing directions to interact, 0 to allow (0000WSEN) */ /*0x03*/ u8 kinstoneId; - /*0x04*/ const u8* customHitbox; /* if set, array contains x, y, width and height */ + /*0x04*/ const s8* customHitbox; /* if set, array contains x, y, width and height */ /*0x08*/ Entity* entity; } InteractableObject; diff --git a/src/npc/drLeft.c b/src/npc/drLeft.c index f8398668..37f1b0e0 100644 --- a/src/npc/drLeft.c +++ b/src/npc/drLeft.c @@ -77,7 +77,7 @@ void sub_0806C038(Entity* this) { } void sub_0806C09C(Entity* this) { - static const u8 gUnk_081133B4[] = { + static const s8 gUnk_081133B4[] = { 0, 6, 8, diff --git a/src/npc/mayorHagen.c b/src/npc/mayorHagen.c index f2d8b0ee..01156ff0 100644 --- a/src/npc/mayorHagen.c +++ b/src/npc/mayorHagen.c @@ -38,7 +38,7 @@ void MayorHagen(Entity* this) { } void MayorHagen_MakeInteractable(Entity* this) { - static const u8 gUnk_08113F44[] = { + static const s8 gUnk_08113F44[] = { 0, 8, 8, diff --git a/src/npc/rem.c b/src/npc/rem.c index b9b5f61e..6ea7e751 100644 --- a/src/npc/rem.c +++ b/src/npc/rem.c @@ -329,7 +329,7 @@ void sub_0806A914(Entity* this) { } void Rem_MakeInteractable(Entity* this) { - static const u8 gUnk_0811229C[] = { 0, 6, 10, 16 }; + static const s8 gUnk_0811229C[] = { 0, 6, 10, 16 }; AddInteractableWhenBigObject(this); SetInteractableObjectCollision(this, 0, 0, &gUnk_0811229C); } diff --git a/src/npc/smallTownMinish.c b/src/npc/smallTownMinish.c index 7c35917d..8b69b4ff 100644 --- a/src/npc/smallTownMinish.c +++ b/src/npc/smallTownMinish.c @@ -9,7 +9,7 @@ void SmallTownMinish(Entity* this) { static const Hitbox gUnk_081142FC = { -2, 1, { 0, 0, 0, 0 }, 6, 6 }; - static const u8 gUnk_08114304[] = { -2, 1, 6, 6 }; + static const s8 gUnk_08114304[] = { -2, 1, 6, 6 }; if (this->action == 0) { this->action++; this->hitbox = (Hitbox*)&gUnk_081142FC; diff --git a/src/npc/smith.c b/src/npc/smith.c index df3bf7c4..745acc7e 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -206,7 +206,7 @@ void sub_08066258(void) { } void Smith_ChangeInteractableHitbox(Entity* this) { - static const u8 gUnk_081103E0[] = { + static const s8 gUnk_081103E0[] = { 0, 6, 8, diff --git a/src/npc/stockwell.c b/src/npc/stockwell.c index b3480117..cef0a8a1 100644 --- a/src/npc/stockwell.c +++ b/src/npc/stockwell.c @@ -9,7 +9,7 @@ #include "game.h" #ifndef EU -static const u8 gUnk_0810FDA0[] = { 0, 8, 10, 16 }; +static const s8 gUnk_0810FDA0[] = { 0, 8, 10, 16 }; #endif extern u16 script_StockwellBuy[]; diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index 6cf3aa45..3dc58b06 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -129,11 +129,11 @@ static const SpriteLoadData gUnk_08112674[][4] = { { 0x0, 0x0, 0x0 }, }, }; -static const u8 gUnk_081126D4[][4] = { - { 0x0, 0x8, 0x8, 0x10 }, - { 0xf8, 0xfe, 0x10, 0x8 }, - { 0x0, 0x8, 0x8, 0x10 }, - { 0x8, 0xfe, 0x10, 0x8 }, +static const s8 gUnk_081126D4[][4] = { + { 0, 8, 8, 16 }, + { -8, -2, 16, 8 }, + { 0, 8, 8, 16 }, + { 8, -2, 16, 8 }, }; static const u8 gUnk_081126E4[4] = { 14, 13, 11, 7 }; diff --git a/src/object/windcrest.c b/src/object/windcrest.c index e552126d..07802edb 100644 --- a/src/object/windcrest.c +++ b/src/object/windcrest.c @@ -23,7 +23,7 @@ void Windcrest(Entity* this) { } void Windcrest_ChangeInteractableHitbox(Entity* this) { - static const u8 gUnk_08125010[] = { 0, 0, 12, 12 }; + static const s8 gUnk_08125010[] = { 0, 0, 12, 12 }; SetInteractableObjectCollision(this, 1, 0xe, gUnk_08125010); } From 8a7e9284611426901c67478849610d4615601f1a Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sun, 30 Apr 2023 22:34:53 +0200 Subject: [PATCH 75/86] Change customHitbox in InteractableObject to Rect* --- include/structures.h | 16 ++++++++-------- src/npc/beedle.c | 2 +- src/npc/drLeft.c | 7 +------ src/npc/mayorHagen.c | 9 ++------- src/npc/npc4E.c | 2 +- src/npc/rem.c | 2 +- src/npc/smallTownMinish.c | 4 ++-- src/npc/smith.c | 7 +------ src/npc/stockwell.c | 2 +- src/npc/townMinish.c | 6 +++--- src/object/windcrest.c | 4 ++-- 11 files changed, 23 insertions(+), 38 deletions(-) diff --git a/include/structures.h b/include/structures.h index acebef3e..9c8864db 100644 --- a/include/structures.h +++ b/include/structures.h @@ -258,12 +258,19 @@ typedef struct { union SplitWord _4; } struct_020227E8; +typedef struct { + s8 x; + s8 y; + s8 width; + s8 height; +} Rect; + typedef struct { /*0x00*/ u8 ignoreLayer; /* if bit 0 set, skip layer check for collision */ /*0x01*/ u8 type; /*0x02*/ u8 interactDirections; /* lower 4 bits determine Link's allowed facing directions to interact, 0 to allow (0000WSEN) */ /*0x03*/ u8 kinstoneId; - /*0x04*/ const s8* customHitbox; /* if set, array contains x, y, width and height */ + /*0x04*/ const Rect* customHitbox; /* optional custom rectangle */ /*0x08*/ Entity* entity; } InteractableObject; @@ -351,11 +358,4 @@ typedef struct { u8 frame; u8 frameIndex; } PACKED FrameStruct; - -typedef struct { - s8 x; - s8 y; - s8 width; - s8 height; -} Rect; #endif // STRUCTURES_H diff --git a/src/npc/beedle.c b/src/npc/beedle.c index 0b2c030a..16ed2ec2 100644 --- a/src/npc/beedle.c +++ b/src/npc/beedle.c @@ -9,7 +9,7 @@ #include "item.h" typedef struct { - s8 customHitbox[4]; + Rect customHitbox; s8 interactDirections; u8 unused[3]; } InteractCollisionData; diff --git a/src/npc/drLeft.c b/src/npc/drLeft.c index 37f1b0e0..aef5ecc4 100644 --- a/src/npc/drLeft.c +++ b/src/npc/drLeft.c @@ -77,11 +77,6 @@ void sub_0806C038(Entity* this) { } void sub_0806C09C(Entity* this) { - static const s8 gUnk_081133B4[] = { - 0, - 6, - 8, - 12, - }; + static const Rect gUnk_081133B4 = { 0, 6, 8, 12 }; SetInteractableObjectCollision(this, 1, 0, &gUnk_081133B4); } diff --git a/src/npc/mayorHagen.c b/src/npc/mayorHagen.c index 01156ff0..e5e5cad3 100644 --- a/src/npc/mayorHagen.c +++ b/src/npc/mayorHagen.c @@ -38,14 +38,9 @@ void MayorHagen(Entity* this) { } void MayorHagen_MakeInteractable(Entity* this) { - static const s8 gUnk_08113F44[] = { - 0, - 8, - 8, - 16, - }; + static const Rect gUnk_08113F44 = { 0, 8, 8, 16 }; AddInteractableWhenBigFuser(this, GetFusionToOffer(this)); - SetInteractableObjectCollision(this, 1, 0, gUnk_08113F44); + SetInteractableObjectCollision(this, 1, 0, &gUnk_08113F44); } void sub_0806CE80(Entity* this) { diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 3cc60593..1ec89710 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -12,7 +12,7 @@ #include "sound.h" typedef struct { - s8 customHitbox[4]; + Rect customHitbox; u8 interactDirections; u8 unused[3]; } InteractCollisionData; diff --git a/src/npc/rem.c b/src/npc/rem.c index 6ea7e751..01db2ab1 100644 --- a/src/npc/rem.c +++ b/src/npc/rem.c @@ -329,7 +329,7 @@ void sub_0806A914(Entity* this) { } void Rem_MakeInteractable(Entity* this) { - static const s8 gUnk_0811229C[] = { 0, 6, 10, 16 }; + static const Rect gUnk_0811229C = { 0, 6, 10, 16 }; AddInteractableWhenBigObject(this); SetInteractableObjectCollision(this, 0, 0, &gUnk_0811229C); } diff --git a/src/npc/smallTownMinish.c b/src/npc/smallTownMinish.c index 8b69b4ff..5bbe8040 100644 --- a/src/npc/smallTownMinish.c +++ b/src/npc/smallTownMinish.c @@ -9,12 +9,12 @@ void SmallTownMinish(Entity* this) { static const Hitbox gUnk_081142FC = { -2, 1, { 0, 0, 0, 0 }, 6, 6 }; - static const s8 gUnk_08114304[] = { -2, 1, 6, 6 }; + static const Rect gUnk_08114304 = { -2, 1, 6, 6 }; if (this->action == 0) { this->action++; this->hitbox = (Hitbox*)&gUnk_081142FC; sub_0807DD50(this); - SetInteractableObjectCollision(this, 1, 0, gUnk_08114304); + SetInteractableObjectCollision(this, 1, 0, &gUnk_08114304); } else { sub_0807DD94(this, NULL); } diff --git a/src/npc/smith.c b/src/npc/smith.c index 745acc7e..bc5df016 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -206,12 +206,7 @@ void sub_08066258(void) { } void Smith_ChangeInteractableHitbox(Entity* this) { - static const s8 gUnk_081103E0[] = { - 0, - 6, - 8, - 12, - }; + static const Rect gUnk_081103E0 = { 0, 6, 8, 12 }; SetInteractableObjectCollision(this, 1, 0, &gUnk_081103E0); } diff --git a/src/npc/stockwell.c b/src/npc/stockwell.c index cef0a8a1..7230bd7a 100644 --- a/src/npc/stockwell.c +++ b/src/npc/stockwell.c @@ -9,7 +9,7 @@ #include "game.h" #ifndef EU -static const s8 gUnk_0810FDA0[] = { 0, 8, 10, 16 }; +static const Rect gUnk_0810FDA0 = { 0, 8, 10, 16 }; #endif extern u16 script_StockwellBuy[]; diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index 3dc58b06..a8cb574b 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -129,13 +129,13 @@ static const SpriteLoadData gUnk_08112674[][4] = { { 0x0, 0x0, 0x0 }, }, }; -static const s8 gUnk_081126D4[][4] = { +static const Rect gUnk_081126D4[4] = { { 0, 8, 8, 16 }, { -8, -2, 16, 8 }, { 0, 8, 8, 16 }, { 8, -2, 16, 8 }, }; -static const u8 gUnk_081126E4[4] = { 14, 13, 11, 7 }; +static const u8 gUnk_081126E4[4] = { 0x0e, 0x0d, 0x0b, 0x07 }; void TownMinish(Entity* this) { static void (*const scriptedActionFuncs[])(Entity*) = { @@ -228,7 +228,7 @@ void sub_0806ACC4(Entity* this) { } if (this->type == 1) { u8 idx = gPlayerEntity.animationState >> 1; - SetInteractableObjectCollision(this, 1, gUnk_081126E4[idx], gUnk_081126D4[idx]); + SetInteractableObjectCollision(this, 1, gUnk_081126E4[idx], &gUnk_081126D4[idx]); } } break; diff --git a/src/object/windcrest.c b/src/object/windcrest.c index 07802edb..815a0f4a 100644 --- a/src/object/windcrest.c +++ b/src/object/windcrest.c @@ -23,8 +23,8 @@ void Windcrest(Entity* this) { } void Windcrest_ChangeInteractableHitbox(Entity* this) { - static const s8 gUnk_08125010[] = { 0, 0, 12, 12 }; - SetInteractableObjectCollision(this, 1, 0xe, gUnk_08125010); + static const Rect gUnk_08125010 = { 0, 0, 12, 12 }; + SetInteractableObjectCollision(this, 1, 0xe, &gUnk_08125010); } void Windcrest_Unlock(Entity* this) { From 52e635f57b990232cbef832a64c12f60b7ab209e Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Fri, 5 May 2023 23:19:04 +0200 Subject: [PATCH 76/86] Some comments and label names for GetFuserId --- asm/src/code_08001A7C.s | 48 +++++++++++++++++++++++++---------------- src/common.c | 4 ++-- src/npc/cucco.c | 2 +- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/asm/src/code_08001A7C.s b/asm/src/code_08001A7C.s index a3b5224d..dfaa3ad4 100644 --- a/asm/src/code_08001A7C.s +++ b/asm/src/code_08001A7C.s @@ -786,9 +786,13 @@ gUnk_08002325:: @ 08002325 gUnk_0800232C:: @ 0800232C .incbin "code_080011C4/gUnk_0800232C.bin" +@ used for business scrub fusers, together with first 4 bytes of next table +@ each entry contains 6 bytes, the first 3 describe which entities are described by this, +@ the last 3 contain fuser id and text id for fuser name gUnk_0800232E:: @ 0800232E .incbin "code_080011C4/gUnk_0800232E.bin" +@ same as above, but for other fusers gUnk_08002342:: @ 08002342 .incbin "code_080011C4/gUnk_08002342.bin" @@ -798,11 +802,12 @@ GetFuserId: @ 0x08002632 ldr r4, _0800269C @ =gUnk_0800232E ldrb r3, [r0, #8] cmp r3, #3 - beq _08002642 + beq enemy cmp r3, #7 - bne _08002684 + bne not_found +npc: @ 0x08002640 ldr r4, _080026A0 @ =gUnk_08002342 -_08002642: +enemy: @ 0x08002642 ldrb r3, [r0, #9] lsls r1, r3, #0x10 ldrb r3, [r0, #0xa] @@ -810,43 +815,48 @@ _08002642: orrs r1, r3 ldrb r3, [r0, #0xb] orrs r1, r3 - add r6, pc, #0x38 -_08002652: + add r6, pc, #(entity_type_bitmasks - next - 2) @ pointer to entity_type_bitmasks +next: @ 0x08002652 adds r4, #6 - ldrb r3, [r4] + ldrb r3, [r4] @ entity id lsls r2, r3, #0x10 - beq _08002684 + beq not_found @ end of list reached movs r5, #0 - ldrb r3, [r4, #1] + ldrb r3, [r4, #1] @ entity type, or 0xff for any cmp r3, #0xff - bne _08002664 + bne must_match_entity_type movs r5, #8 -_08002664: +must_match_entity_type: @ 0x08002664 lsls r3, r3, #8 orrs r2, r3 - ldrb r3, [r4, #2] + ldrb r3, [r4, #2] @ entity type2, or 0xff for any cmp r3, #0xff - bne _08002670 + bne must_match_entity_type2 adds r5, #4 -_08002670: +must_match_entity_type2: @ 0x08002670 orrs r2, r3 ldr r5, [r6, r5] adds r3, r1, #0 ands r3, r5 ands r2, r5 cmp r3, r2 - bne _08002652 - ldrb r0, [r4, #3] - ldrh r1, [r4, #4] + bne next +match: @ 0x0800267E + ldrb r0, [r4, #3] @ fuser id + ldrh r1, [r4, #4] @ text id for fuser name, used in KinstoneMenu_080A4494 pop {r4, r5, r6, r7, pc} -_08002684: +not_found: @ 0x08002684 movs r0, #0 movs r1, #0 pop {r4, r5, r6, r7, pc} .align 2, 0 -_0800268C: +entity_type_bitmasks: @ 0x0800268C +@ each 0xFF means that entity member must match +@ type2 type id .byte 0xFF, 0xFF, 0xFF, 0x00 - .byte 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00 + .byte 0x00, 0xFF, 0xFF, 0x00 + .byte 0xFF, 0x00, 0xFF, 0x00 + .byte 0x00, 0x00, 0xFF, 0x00 _0800269C: .4byte gUnk_0800232E _080026A0: .4byte gUnk_08002342 diff --git a/src/common.c b/src/common.c index e3f962b4..064082a9 100644 --- a/src/common.c +++ b/src/common.c @@ -1075,7 +1075,7 @@ KinstoneId GetFusionToOffer(Entity* entity) { case KINSTONE_NEEDS_REPLACEMENT: // offered fusion completed with someone else case KINSTONE_NONE: // no fusion offered yet offeredFusion = fuserFusionData[5]; - if (offeredFusion == KINSTONE_NONE || offeredFusion == 0xFF || CheckKinstoneFused(offeredFusion) == 0) { + if (offeredFusion == KINSTONE_NONE || offeredFusion == KINSTONE_RANDOM || CheckKinstoneFused(offeredFusion) == 0) { break; } case KINSTONE_JUST_FUSED: // previous fusion completed @@ -1083,7 +1083,7 @@ KinstoneId GetFusionToOffer(Entity* entity) { fuserProgress++; offeredFusion = fuserFusionData[5]; } - if (offeredFusion == 0xFF) { // random shared fusion + if (offeredFusion == KINSTONE_RANDOM) { // random shared fusion offeredFusion = GetRandomSharedFusion(fuserData); } if (offeredFusion == KINSTONE_NONE) { // end of fusion list diff --git a/src/npc/cucco.c b/src/npc/cucco.c index 62926b8f..28709607 100644 --- a/src/npc/cucco.c +++ b/src/npc/cucco.c @@ -136,4 +136,4 @@ void (*const Cucco_Actions[])(Entity*) = { }; const u16 Cucco_Sounds[] = { SFX_VO_CUCCO1, SFX_VO_CUCCO2, SFX_VO_CUCCO3, SFX_VO_CUCCO4 }; -const u16 Cucco_Messages[] = { TEXT_INDEX(TEXT_MINISH, 0Xb4), TEXT_INDEX(TEXT_MINISH, 0xb5) }; +const u16 Cucco_Messages[] = { TEXT_INDEX(TEXT_MINISH, 0xb4), TEXT_INDEX(TEXT_MINISH, 0xb5) }; From 8ff6027f97e11ce05904267cbb79306474287923 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Fri, 5 May 2023 23:45:29 +0200 Subject: [PATCH 77/86] Name some functions for marking a Fuser as done --- data/scripts/npc/script_Farmer.inc | 3 ++- data/scripts/npc/script_MysteriousWall.inc | 2 +- include/npc.h | 2 +- src/npc/farmers.c | 8 ++++---- src/npcUtils.c | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/data/scripts/npc/script_Farmer.inc b/data/scripts/npc/script_Farmer.inc index 51eaf67e..11f0566f 100644 --- a/data/scripts/npc/script_Farmer.inc +++ b/data/scripts/npc/script_Farmer.inc @@ -30,9 +30,10 @@ script_0800B134: Call sub_0807F650 _0807E9F0 .ifndef EU + @! @bug: In EU, Eenie is marked as done fusing if kinstone menu is closed without fusing JumpIfNot script_0800B160 .endif - Call sub_0806BCC0 + Call Farmers_MarkEenieFuserDoner script_0800B160: Call EnablePauseMenu EnablePlayerControl diff --git a/data/scripts/npc/script_MysteriousWall.inc b/data/scripts/npc/script_MysteriousWall.inc index d0bc0a83..28ab2c5e 100644 --- a/data/scripts/npc/script_MysteriousWall.inc +++ b/data/scripts/npc/script_MysteriousWall.inc @@ -16,7 +16,7 @@ script_0800B98A: EnablePlayerControl Jump script_0800B98A script_0800B99E: - Call sub_0806F188 + Call MarkFuserDone Call EnablePauseMenu EnablePlayerControl script_0800B9AC: diff --git a/include/npc.h b/include/npc.h index dff0378c..6b9e5cb5 100644 --- a/include/npc.h +++ b/include/npc.h @@ -74,7 +74,7 @@ void sub_0806EE04(Entity* ent, void* a2, u32 a3); u32 sub_0806EE20(Entity* ent); s32 sub_0806F078(Entity* ent, s32 a2); void sub_0806F118(Entity* ent); -void sub_0806F188(Entity* ent); +void MarkFuserDone(Entity* ent); void ShowNPCDialogue(Entity* ent, const Dialog* dia); Entity* CreateNPC(u32 subtype, u32 form, u32 parameter); diff --git a/src/npc/farmers.c b/src/npc/farmers.c index d3ccf5fd..d2c4e2fc 100644 --- a/src/npc/farmers.c +++ b/src/npc/farmers.c @@ -53,9 +53,9 @@ void sub_0806BCB8(Entity* this) { this->animationState = this->timer; } -void sub_0806BCC0(Entity* this) { +void Farmers_MarkEenieFuserDoner(Entity* this) { if (this->type == 0) { - sub_0806F188(this); + MarkFuserDone(this); } } @@ -69,12 +69,12 @@ void sub_0806BCE8(Entity* this) { DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, - { TEXT_INDEX(TEXT_FARMERS, 0X7), TEXT_INDEX(TEXT_FARMERS, 0x2) } }, + { TEXT_INDEX(TEXT_FARMERS, 0x7), TEXT_INDEX(TEXT_FARMERS, 0x2) } }, { 0x29, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, - { TEXT_INDEX(TEXT_FARMERS, 0X11), TEXT_INDEX(TEXT_FARMERS, 0xd) } }, + { TEXT_INDEX(TEXT_FARMERS, 0x11), TEXT_INDEX(TEXT_FARMERS, 0xd) } }, }; ShowNPCDialogue(this, &gUnk_08113158[this->type]); } diff --git a/src/npcUtils.c b/src/npcUtils.c index b5963d94..8702f3eb 100644 --- a/src/npcUtils.c +++ b/src/npcUtils.c @@ -352,7 +352,7 @@ u32 UpdateFuseInteraction(Entity* ent) { return ret; } -void sub_0806F188(Entity* ent) { +void MarkFuserDone(Entity* ent) { u32 idx = GetFuserId(ent); if (idx != 0) gSave.fuserOffers[idx] = KINSTONE_FUSER_DONE; From 18b86e484aea3c3b913709259f71c1a516a34db1 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 6 May 2023 00:36:48 +0200 Subject: [PATCH 78/86] Formatting --- include/structures.h | 8 +++++--- src/beanstalkSubtask.c | 3 ++- src/code_08049DF4.c | 4 ++-- src/common.c | 12 +++++++----- src/npc/npc4E.c | 5 ++--- src/object/cameraTarget.c | 7 ++++--- src/object/itemForSale.c | 6 +++--- src/object/lockedDoor.c | 3 ++- src/playerUtils.c | 3 ++- 9 files changed, 29 insertions(+), 22 deletions(-) diff --git a/include/structures.h b/include/structures.h index 9c8864db..0cbe9c71 100644 --- a/include/structures.h +++ b/include/structures.h @@ -268,7 +268,8 @@ typedef struct { typedef struct { /*0x00*/ u8 ignoreLayer; /* if bit 0 set, skip layer check for collision */ /*0x01*/ u8 type; - /*0x02*/ u8 interactDirections; /* lower 4 bits determine Link's allowed facing directions to interact, 0 to allow (0000WSEN) */ + /*0x02*/ u8 interactDirections; /* lower 4 bits determine Link's allowed facing directions to interact, 0 to allow + (0000WSEN) */ /*0x03*/ u8 kinstoneId; /*0x04*/ const Rect* customHitbox; /* optional custom rectangle */ /*0x08*/ Entity* entity; @@ -278,9 +279,10 @@ typedef struct { /*0x00*/ u8 isUpdated; /*0x01*/ u8 unused; /*0x02*/ u8 kinstoneId; - /*0x03*/ u8 currentIndex; /* index of currentObject in canditate list, or 0xFF */ + /*0x03*/ u8 currentIndex; /* index of currentObject in candidate list, or 0xFF */ /*0x04*/ InteractableObject* currentObject; - /*0x08*/ InteractableObject candidates[0x20]; /* contains the loaded NPCs, key doors, windcrests and other objects */ + /*0x08*/ InteractableObject + candidates[0x20]; /* contains the loaded NPCs, key doors, windcrests and other objects */ } PossibleInteraction; static_assert(sizeof(PossibleInteraction) == 0x188); diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index 3009a41c..f1f85a4a 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -204,7 +204,8 @@ u32 UpdatePlayerCollision(void) { ptr1 = &gUnk_080B4490[index * 2]; if (sub_080B1B44(COORD_TO_TILE_OFFSET(&gPlayerEntity, -ptr1[0], -ptr1[1]), gPlayerEntity.collisionLayer) == 0xff) { - if ((((gPlayerState.flags & (PL_FLAGS10000 | PL_FLAGS2)) != 0) || ((gPlayerState.sword_state & 0x10) != 0)) || + if ((((gPlayerState.flags & (PL_FLAGS10000 | PL_FLAGS2)) != 0) || + ((gPlayerState.sword_state & 0x10) != 0)) || ((sub_080806BC(gPlayerEntity.x.HALF.HI - gRoomControls.origin_x, gPlayerEntity.y.HALF.HI - gRoomControls.origin_y, index, 5) == 0 && (((gPlayerState.heldObject != 0 || ((gPlayerState.field_0x1c & 0xf) != 0)) || diff --git a/src/code_08049DF4.c b/src/code_08049DF4.c index e6d53f99..a4af4474 100644 --- a/src/code_08049DF4.c +++ b/src/code_08049DF4.c @@ -51,8 +51,8 @@ Entity* sub_08049E80(void) { } Entity* sub_08049EB0(void) { - if ((gPlayerState.field_0x3c == 0) && !(gPlayerState.flags & - (PL_MOLDWORM_CAPTURED | PL_DISABLE_ITEMS | PL_MINISH | PL_CAPTURED))) { + if ((gPlayerState.field_0x3c == 0) && + !(gPlayerState.flags & (PL_MOLDWORM_CAPTURED | PL_DISABLE_ITEMS | PL_MINISH | PL_CAPTURED))) { gUnk_020000B0 = &gPlayerEntity; return &gPlayerEntity; } diff --git a/src/common.c b/src/common.c index 064082a9..1aa305df 100644 --- a/src/common.c +++ b/src/common.c @@ -468,7 +468,8 @@ void DrawDungeonMap(u32 floor, DungeonMapObject* specialData, u32 size) { tileEntity++; } } - if ((HasDungeonCompass() && ((floorMapData->unk_2 & 2) != 0)) && (!CheckGlobalFlag(gArea.dungeon_idx + 1))) { + if ((HasDungeonCompass() && ((floorMapData->unk_2 & 2) != 0)) && + (!CheckGlobalFlag(gArea.dungeon_idx + 1))) { roomHeader = gAreaRoomHeaders[floorMapData->area] + floorMapData->room; specialData->type = DMO_TYPE_BOSS; tmp1 = ((roomHeader->pixel_width / 2) + roomHeader->map_x) / 16; @@ -1073,9 +1074,10 @@ KinstoneId GetFusionToOffer(Entity* entity) { while (TRUE) { // loop through fusions for this fuser switch (offeredFusion) { case KINSTONE_NEEDS_REPLACEMENT: // offered fusion completed with someone else - case KINSTONE_NONE: // no fusion offered yet + case KINSTONE_NONE: // no fusion offered yet offeredFusion = fuserFusionData[5]; - if (offeredFusion == KINSTONE_NONE || offeredFusion == KINSTONE_RANDOM || CheckKinstoneFused(offeredFusion) == 0) { + if (offeredFusion == KINSTONE_NONE || offeredFusion == KINSTONE_RANDOM || + CheckKinstoneFused(offeredFusion) == 0) { break; } case KINSTONE_JUST_FUSED: // previous fusion completed @@ -1086,8 +1088,8 @@ KinstoneId GetFusionToOffer(Entity* entity) { if (offeredFusion == KINSTONE_RANDOM) { // random shared fusion offeredFusion = GetRandomSharedFusion(fuserData); } - if (offeredFusion == KINSTONE_NONE) { // end of fusion list - offeredFusion = KINSTONE_FUSER_DONE; // mark this fuser as done + if (offeredFusion == KINSTONE_NONE) { // end of fusion list + offeredFusion = KINSTONE_FUSER_DONE; // mark this fuser as done break; } if (offeredFusion == KINSTONE_JUST_FUSED) { // previous fusion completed diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 1ec89710..cdfd7abe 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -232,9 +232,8 @@ void NPC4E_Fusion(Entity* this) { const Hitbox gUnk_08114154 = { 0, -8, 0, 0, 0, 0, 24, 8 }; const InteractCollisionData gNpc4ECollisionData[] = { // - { 0, 0, 8, 8, 0x0E, 0, 0, 0 }, { 0, 0, 26, 8, 0x0E, 0, 0, 0 }, - { 0, 0, 16, 4, 0x0E, 0, 0, 0 }, { 0, 0, 10, 10, 0x00, 0, 0, 0 }, - { 0, 0, 10, 10, 0x00, 0, 0, 0 }, { 0, 0, 6, 4, 0x0E, 0, 0, 0 }, + { 0, 0, 8, 8, 0x0E, 0, 0, 0 }, { 0, 0, 26, 8, 0x0E, 0, 0, 0 }, { 0, 0, 16, 4, 0x0E, 0, 0, 0 }, + { 0, 0, 10, 10, 0x00, 0, 0, 0 }, { 0, 0, 10, 10, 0x00, 0, 0, 0 }, { 0, 0, 6, 4, 0x0E, 0, 0, 0 }, { 0, 8, 16, 4, 0x0E, 0, 0, 0 }, { 0, -8, 24, 8, 0x0E, 0, 0, 0 }, #ifndef EU { 0, 0, 88, 8, 0x0E, 0, 0, 0 } diff --git a/src/object/cameraTarget.c b/src/object/cameraTarget.c index 88831f94..57a5623a 100644 --- a/src/object/cameraTarget.c +++ b/src/object/cameraTarget.c @@ -103,7 +103,8 @@ void CameraTarget_Action1(Entity* this) { if (this->timer) { this->timer--; } else { - if ((gPossibleInteraction.currentObject->entity != NULL) && ((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) { + if ((gPossibleInteraction.currentObject->entity != NULL) && + ((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) { this->child = gPossibleInteraction.currentObject->entity; this->interactType = gPossibleInteraction.currentIndex; sub_08083A40(this); @@ -119,8 +120,8 @@ void CameraTarget_Action2(Entity* this) { u32 temp2; const KinstoneWorldEvent* ptr; - if ((this->type != 1) && - (((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) >= 100 || (this->child != gPossibleInteraction.currentObject->entity)))) { + if ((this->type != 1) && (((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) >= 100 || + (this->child != gPossibleInteraction.currentObject->entity)))) { sub_080838DC(this); } else { this->x = this->child->x; diff --git a/src/object/itemForSale.c b/src/object/itemForSale.c index 3327f2c6..916f71d0 100644 --- a/src/object/itemForSale.c +++ b/src/object/itemForSale.c @@ -118,9 +118,9 @@ void ItemForSale_Action2(ItemForSaleEntity* this) { sub_080819B4(this); } else { ptr = sub_080784E4(); - if (((*(int*)(ptr + 8) == 0) || - ((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.rActionPlayerState = R_ACTION_SPEAK, (gPlayerState.playerInput.newInput & - (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0)))) && + if (((*(int*)(ptr + 8) == 0) || ((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.rActionPlayerState = R_ACTION_SPEAK, + (gPlayerState.playerInput.newInput & + (PLAYER_INPUT_80 | PLAYER_INPUT_8)) == 0)))) && ((gPlayerState.playerInput.newInput & (PLAYER_INPUT_80 | PLAYER_INPUT_10 | PLAYER_INPUT_8)) != 0)) { sub_080819B4(this); } diff --git a/src/object/lockedDoor.c b/src/object/lockedDoor.c index c4d3d8bf..6cc6c1a6 100644 --- a/src/object/lockedDoor.c +++ b/src/object/lockedDoor.c @@ -134,7 +134,8 @@ void LockedDoor_Init(Entity* this) { } else { this->action = 8; AddInteractableSmallKeyLock(this); - SetInteractableObjectCollision(this, 0, gLockedDoorInteractDirections[this->field_0x7c.BYTES.byte2], NULL); + SetInteractableObjectCollision(this, 0, gLockedDoorInteractDirections[this->field_0x7c.BYTES.byte2], + NULL); } } else { DeleteThisEntity(); diff --git a/src/playerUtils.c b/src/playerUtils.c index 8147a443..3515748c 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1090,7 +1090,8 @@ bool32 sub_080782C0(void) { return FALSE; } } - if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && ((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) { + if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) && + ((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) { AddKinstoneToBag(KINSTONE_NONE); if (gSave.kinstoneAmounts[0] != 0) { gPossibleInteraction.kinstoneId = gPossibleInteraction.currentObject->kinstoneId; From 31079cd0a539dff55eaaecccd34d689c5dca3fc7 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 6 May 2023 00:50:22 +0200 Subject: [PATCH 79/86] Change zeldaFollower.c to try to fix clang-format --- src/npc/zeldaFollower.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index 38a89062..d92e6018 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -1,7 +1,6 @@ -#include "global.h" +#include "common.h" #include "entity.h" #include "functions.h" -#include "common.h" typedef struct { u16 x; From def79ad780683f58973ed7d7640adab0d7d7efb9 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 6 May 2023 12:53:52 +0200 Subject: [PATCH 80/86] Formatting in zeldaFollower.c --- src/npc/zeldaFollower.c | 50 +++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index e9c772a6..7bfcb6d7 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -18,19 +18,19 @@ typedef union { #define ZELDA_FOLLOWER_HEAP_LEN 20 -#define ZELDA_FOLLOWER_HEAP ((ZeldaFollowerItem *)this->myHeap) -#define ZELDA_FOLLOWER_HEAP_END ((ZeldaFollowerItem *)this->myHeap + (ZELDA_FOLLOWER_HEAP_LEN - 1)) +#define ZELDA_FOLLOWER_HEAP ((ZeldaFollowerItem*)this->myHeap) +#define ZELDA_FOLLOWER_HEAP_END ((ZeldaFollowerItem*)this->myHeap + (ZELDA_FOLLOWER_HEAP_LEN - 1)) -#define ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr) \ - do { \ - int i; \ - heapPtr = ((ZeldaFollowerItem*)this->myHeap); \ - heapPtr += (ZELDA_FOLLOWER_HEAP_LEN - 2); \ - for ( i = 0; i < (ZELDA_FOLLOWER_HEAP_LEN - 1); i++) { \ - heapPtr[1] = heapPtr[0]; \ - heapPtr--; \ - } \ - } while (0) +#define ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr) \ + do { \ + int i; \ + heapPtr = ((ZeldaFollowerItem*)this->myHeap); \ + heapPtr += (ZELDA_FOLLOWER_HEAP_LEN - 2); \ + for (i = 0; i < (ZELDA_FOLLOWER_HEAP_LEN - 1); i++) { \ + heapPtr[1] = heapPtr[0]; \ + heapPtr--; \ + } \ + } while (0) void sub_08068318(Entity*); @@ -65,16 +65,16 @@ void sub_08068318(Entity* this) { ZeldaFollowerItem* heapPtr; ZeldaFollowerItem item; - item.FIELDS.x = gPlayerEntity.x.HALF_U.HI; - item.FIELDS.y = gPlayerEntity.y.HALF_U.HI; - item.FIELDS.z = gPlayerEntity.z.HALF_U.HI; - item.FIELDS.framestate = gPlayerState.framestate; + item.FIELDS.x = gPlayerEntity.x.HALF_U.HI; + item.FIELDS.y = gPlayerEntity.y.HALF_U.HI; + item.FIELDS.z = gPlayerEntity.z.HALF_U.HI; + item.FIELDS.framestate = gPlayerState.framestate; item.FIELDS.animationState = gPlayerEntity.animationState; item.FIELDS.collisionLayer = gPlayerEntity.collisionLayer; heapPtr = this->myHeap; - if ( (heapPtr->FIELDS.framestate == 0xa && item.FIELDS.framestate != 0xa) || + if ((heapPtr->FIELDS.framestate == 0xa && item.FIELDS.framestate != 0xa) || (heapPtr->FIELDS.framestate == 0x16 && item.FIELDS.framestate != 0x16)) { this->x.HALF.HI = gPlayerEntity.x.HALF.HI; this->y.HALF.HI = gPlayerEntity.y.HALF.HI; @@ -83,7 +83,7 @@ void sub_08068318(Entity* this) { } animIndex = 0; - if (item.DWORD != heapPtr->DWORD || item.FIELDS.framestate == 0x16 || item.FIELDS.framestate == 0xa ) { + if (item.DWORD != heapPtr->DWORD || item.FIELDS.framestate == 0x16 || item.FIELDS.framestate == 0xa) { ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); heapPtr = ZELDA_FOLLOWER_HEAP; heapPtr[0] = item; @@ -100,12 +100,8 @@ void sub_08068318(Entity* this) { ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); animIndex = 0x4; } else { - dist = sub_080041E8( - gPlayerEntity.x.HALF.HI, - gPlayerEntity.y.HALF.HI, - (u16) heapPtr->FIELDS.x, - (u16) heapPtr->FIELDS.y - ); + dist = sub_080041E8(gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, (u16)heapPtr->FIELDS.x, + (u16)heapPtr->FIELDS.y); dist = ((u32)dist) >> 0x4; if (dist > 0x18) { ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); @@ -116,9 +112,9 @@ void sub_08068318(Entity* this) { heapPtr = ZELDA_FOLLOWER_HEAP; heapPtr += ZELDA_FOLLOWER_HEAP_LEN - 1; - this->x.HALF.HI = heapPtr->FIELDS.x; - this->y.HALF.HI = heapPtr->FIELDS.y; - this->z.HALF.HI = heapPtr->FIELDS.z; + this->x.HALF.HI = heapPtr->FIELDS.x; + this->y.HALF.HI = heapPtr->FIELDS.y; + this->z.HALF.HI = heapPtr->FIELDS.z; this->animationState = heapPtr->FIELDS.animationState; this->collisionLayer = heapPtr->FIELDS.collisionLayer; From 19e840759676ecbe5c284bc0a6a8dfb4e4bc9ed5 Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 6 May 2023 12:55:25 +0200 Subject: [PATCH 81/86] Missed a line --- src/npc/zeldaFollower.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index 7bfcb6d7..2402823d 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -32,7 +32,6 @@ typedef union { } \ } while (0) - void sub_08068318(Entity*); void sub_0806854C(Entity*, u32*); void sub_08068578(Entity* this); From d40664bb740baacaccf112529b17017cee839e7e Mon Sep 17 00:00:00 2001 From: Henny022p Date: Thu, 11 May 2023 19:02:49 +0200 Subject: [PATCH 82/86] revert memcpy linker change because new ld does not like it adjust dependency scan to still skip libs --- GBA.mk | 2 +- linker.ld | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GBA.mk b/GBA.mk index 62221d21..a81be08f 100644 --- a/GBA.mk +++ b/GBA.mk @@ -136,7 +136,7 @@ LIB := -L ../../tools/agbcc/lib -lc $(ROM): $(ELF) $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ -$(ELF): objs = $(shell grep -o -E "(\w|/)+\.o" linker.ld) +$(ELF): objs = $(shell grep -vE "\*\w+\.a" linker.ld | grep -oE "(\w|/)+\.o") $(ELF): $(BUILD_DIR)/linker.ld $$(addprefix $(BUILD_DIR)/, $$(objs)) cd $(BUILD_DIR) && $(LD) $(LDFLAGS) -n -T linker.ld -o ../../$@ $(LIB) $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent diff --git a/linker.ld b/linker.ld index 039ac9c5..17221aa0 100644 --- a/linker.ld +++ b/linker.ld @@ -867,7 +867,7 @@ SECTIONS { src/gba/m4a.o(.text); asm/lib/libagbsyscall.o(.text); src/eeprom.o(.text); - libc.a(.text); + *libc.a:memcpy.o(.text); /* handwritten assembly in arm mode */ asm/src/intr.o(.text); From 7c749c7f3c8219f368304b05643fa3b2f9665fc7 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sat, 13 May 2023 16:41:48 +0200 Subject: [PATCH 83/86] use printf instead of echo echo is not portable, hope is that printf is more so --- GBA.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GBA.mk b/GBA.mk index a81be08f..87048ef9 100644 --- a/GBA.mk +++ b/GBA.mk @@ -123,7 +123,7 @@ $(BUILD_DIR)/%.o : %.c $$(deps) @mkdir -p $(dir $@) $(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i $(CC1) $(CFLAGS) -o $(BUILD_DIR)/$*.s $(BUILD_DIR)/$*.i - @echo "\t.text\n\t.align\t2, 0 @ Don't pad with nop\n" >> $(BUILD_DIR)/$*.s + @printf "\t.text\n\t.align\t2, 0 @ Don't pad with nop\n" >> $(BUILD_DIR)/$*.s $(AS) $(ASFLAGS) -o $@ $(BUILD_DIR)/$*.s # ============== From 9f3adae30457aaf1fcdd326240d4f122d749f931 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sat, 13 May 2023 17:50:32 +0200 Subject: [PATCH 84/86] put doxygen comment on each flag --- include/flags.h | 3182 +++++++++++++++++++++++------------------------ 1 file changed, 1591 insertions(+), 1591 deletions(-) diff --git a/include/flags.h b/include/flags.h index aceb9f9a..919b99e7 100644 --- a/include/flags.h +++ b/include/flags.h @@ -74,1683 +74,1683 @@ enum LocalFlagOffsets { typedef enum { BEGIN, - /*0x01*/ LV0_CLEAR, - /*0x02*/ LV1_CLEAR, - /*0x03*/ LV2_CLEAR, - /*0x04*/ LV3_CLEAR, - /*0x05*/ LV4_CLEAR, - /*0x06*/ LV5_CLEAR, - /*0x07*/ LV6_CLEAR, - /*0x08*/ LV7_CLEAR, - /*0x09*/ LV8_CLEAR, - /*0x0a*/ MACHI_SET_1, /* Defeated Big Green Chuchu */ - /*0x0b*/ MACHI_SET_2, /* Defeated Gleerok */ - /*0x0c*/ MACHI_SET_3, - /*0x0d*/ MACHI_SET_4, /* Defeated Big Octorok */ - /*0x0e*/ MACHI_SET_5, /* Defeated Gyorg Pair */ - /*0x0f*/ MACHI_SET_6, - /*0x10*/ MACHI_SET_7, - /*0x11*/ MACHI_SET_8, - /*0x12*/ MACHI_MACHIHOKORI, /* Sucked dust from carpet */ - /*0x13*/ START, /* Met Zelda */ - /*0x14*/ EZERO_1ST, /* Met Ezlo */ - /*0x15*/ TABIDACHI, /* Talked to Daltus and Smith */ - /*0x16*/ LV1TARU, - /*0x17*/ LV1TARU_OPEN, /* Sucked barrel web */ - /*0x18*/ TATEKAKE_HOUSE, /* Red house complete */ - /*0x19*/ TATEKAKE_TOCHU, /* Red house frame */ - /*0x1a*/ WATERBEAN_OUT, /* Holding bean */ - /*0x1b*/ WATERBEAN_PUT, /* Threw bean in hole */ - /*0x1c*/ ZELDA_CHASE, /* Enter town festival */ - /*0x1d*/ INLOCK, /* Gave key to Talon */ - /*0x1e*/ DASHBOOTS, /* Read Castor Wilds sign */ - /*0x1f*/ LEFT_DOOR_OPEN, /* Spoke to Dr. Left */ - /*0x20*/ HAKA_KEY_LOST, /* Graveyard key stolen */ - /*0x21*/ HAKA_KEY_FOUND, /* Graveyard key obtained back */ - /*0x22*/ ENTRANCE_OK, - /*0x23*/ TATSUMAKI, - /*0x24*/ KUMOTATSUMAKI, /* Vortex spawned */ - /*0x25*/ KAITENGIRI, - /*0x26*/ DAIKAITENGIRI, - /*0x27*/ GATOTSU, - /*0x28*/ KABUTOWARI, - /*0x29*/ MIZUKAKI_START, /* Spoke to Lake Hylia Minish */ - /*0x2a*/ MIZUKAKI_HARIFALL, /* Library book falling */ - /*0x2b*/ RENTED_HOUSE_DIN, /* Din moves to blue house */ - /*0x2c*/ RENTED_HOUSE_NAYRU, /* Nayru moves to blue house */ - /*0x2d*/ RENTED_HOUSE_FARORE, /* Farore moves to blue house */ - /*0x2e*/ NEW_HOUSE_DIN, /* Din moves to red house */ - /*0x2f*/ NEW_HOUSE_NAYRU, /* Nayru moves to red house */ - /*0x30*/ NEW_HOUSE_FARORE, /* Farore moves to red house */ - /*0x31*/ OUGONTEKI_A, /* Golden Octorok defeated */ - /*0x32*/ OUGONTEKI_B, /* Golden Tektite defeated */ - /*0x33*/ OUGONTEKI_C, /* Golden Rope defeated */ - /*0x34*/ OUGONTEKI_D, /* Golden Rope defeated */ - /*0x35*/ OUGONTEKI_E, /* Golden Rope defeated */ - /*0x36*/ OUGONTEKI_F, /* Golden Tektite defeated */ - /*0x37*/ OUGONTEKI_G, /* Golden Tektite defeated */ - /*0x38*/ OUGONTEKI_H, /* Golden Octorok defeated */ - /*0x39*/ OUGONTEKI_I, /* Golden Octorok defeated */ - /*0x3a*/ KAKERA_COMPLETE, /* All fusions complete */ - /*0x3b*/ DRUG_1, /* Yellow pico bloomed */ - /*0x3c*/ DRUG_2, /* Blue pico bloomed */ - /*0x3d*/ DRUG_3, /* Orange pico bloomed */ - /*0x3e*/ GORON_KAKERA_LV2, /* Goron merchant restock 1 */ - /*0x3f*/ GORON_KAKERA_LV3, /* Goron merchant restock 2 */ - /*0x40*/ GORON_KAKERA_LV4, /* Goron merchant restock 3 */ - /*0x41*/ GORON_KAKERA_LV5, /* Goron merchant restock 4 */ - /*0x42*/ GORON_KAKERA_L, /* Red kinstone sold out */ - /*0x43*/ GORON_KAKERA_M, /* Blue kinstone sold out */ - /*0x44*/ GORON_KAKERA_R, /* Green kinstone sold out */ - /*0x45*/ CHIKATSURO_SHUTTER, /* Castle basement door open */ - /*0x46*/ ENTRANCE_USED, - /*0x47*/ GOMAN_RENTED_HOUSE, /* Spoke to Gorman blue house */ - /*0x48*/ GOMAN_NEW_HOUSE, /* Spoke to Gorman red house */ - /*0x49*/ OUTDOOR, /* Exited Link's house */ - /*0x4a*/ POWERGLOVE_HINT, /* Spoke to Dr. Left Minish */ - /*0x4b*/ ANJU_LV_BIT0, /* Cucco game 1 bit */ - /*0x4c*/ ANJU_LV_BIT1, /* Cucco game 2 bit */ - /*0x4d*/ ANJU_LV_BIT2, /* Cucco game 4 bit */ - /*0x4e*/ ANJU_LV_BIT3, /* Cucco game 8 bit */ - /*0x4f*/ ANJU_HEART, /* Cucco heart piece */ - /*0x50*/ MAROYA_WAKEUP, - /*0x51*/ ENDING, /* Vaati's wrath defeated */ - /*0x52*/ WARP_1ST, /* Wind ocarina unlocked */ - /*0x53*/ WARP_MONUMENT, /* First windcrest discovered */ - /*0x54*/ DRUG_COUNT, /* Pico bloom minish items */ - /*0x55*/ GAMECLEAR, /* Watched end cutscene */ - /*0x56*/ WHITE_SWORD_END, /* Exit mines with white sword */ - /*0x57*/ SOUGEN_06_HASHIGO, /* Boomerang cave ladder */ - /*0x58*/ WARP_EVENT_END, /* Wind tribe tower state */ - /*0x59*/ FIGURE_ALLCOMP, /* Obtained Carlov Medal */ - /*0x5a*/ AKINDO_BOTTLE_SELL, /* Bought bottle from scrub */ - /*0x5b*/ BIN_DOGFOOD, - /*0x5c*/ TINGLE_TALK1ST, /* Spoke to Tingle */ - /*0x5d*/ SEIIKI_BGM, /* Elemental sanctuary BGM */ - /*0x5e*/ ENTRANCE_0, /* Trunk entrance cutscene */ - /*0x5f*/ ENTRANCE_1, /* Rock entrance cutscene */ - /*0x60*/ ENTRANCE_2, /* Pot entrance cutscene */ - /*0x61*/ MIZUKAKI_NECHAN, /* Spoke to librarian */ - /*0x62*/ MAZE_CLEAR, /* Cleared Castle maze */ - /*0x63*/ TINY_ENTRANCE, /* Ezlo described entrances */ - /*0x64*/ CASTLE_BGM, /* Castle intro BGM */ + /*0x01*/ LV0_CLEAR, /**< undocumented */ + /*0x02*/ LV1_CLEAR, /**< undocumented */ + /*0x03*/ LV2_CLEAR, /**< undocumented */ + /*0x04*/ LV3_CLEAR, /**< undocumented */ + /*0x05*/ LV4_CLEAR, /**< undocumented */ + /*0x06*/ LV5_CLEAR, /**< undocumented */ + /*0x07*/ LV6_CLEAR, /**< undocumented */ + /*0x08*/ LV7_CLEAR, /**< undocumented */ + /*0x09*/ LV8_CLEAR, /**< undocumented */ + /*0x0a*/ MACHI_SET_1, /**< Defeated Big Green Chuchu */ + /*0x0b*/ MACHI_SET_2, /**< Defeated Gleerok */ + /*0x0c*/ MACHI_SET_3, /**< undocumented */ + /*0x0d*/ MACHI_SET_4, /**< Defeated Big Octorok */ + /*0x0e*/ MACHI_SET_5, /**< Defeated Gyorg Pair */ + /*0x0f*/ MACHI_SET_6, /**< undocumented */ + /*0x10*/ MACHI_SET_7, /**< undocumented */ + /*0x11*/ MACHI_SET_8, /**< undocumented */ + /*0x12*/ MACHI_MACHIHOKORI, /**< Sucked dust from carpet */ + /*0x13*/ START, /**< Met Zelda */ + /*0x14*/ EZERO_1ST, /**< Met Ezlo */ + /*0x15*/ TABIDACHI, /**< Talked to Daltus and Smith */ + /*0x16*/ LV1TARU, /**< undocumented */ + /*0x17*/ LV1TARU_OPEN, /**< Sucked barrel web */ + /*0x18*/ TATEKAKE_HOUSE, /**< Red house complete */ + /*0x19*/ TATEKAKE_TOCHU, /**< Red house frame */ + /*0x1a*/ WATERBEAN_OUT, /**< Holding bean */ + /*0x1b*/ WATERBEAN_PUT, /**< Threw bean in hole */ + /*0x1c*/ ZELDA_CHASE, /**< Enter town festival */ + /*0x1d*/ INLOCK, /**< Gave key to Talon */ + /*0x1e*/ DASHBOOTS, /**< Read Castor Wilds sign */ + /*0x1f*/ LEFT_DOOR_OPEN, /**< Spoke to Dr. Left */ + /*0x20*/ HAKA_KEY_LOST, /**< Graveyard key stolen */ + /*0x21*/ HAKA_KEY_FOUND, /**< Graveyard key obtained back */ + /*0x22*/ ENTRANCE_OK, /**< undocumented */ + /*0x23*/ TATSUMAKI, /**< undocumented */ + /*0x24*/ KUMOTATSUMAKI, /**< Vortex spawned */ + /*0x25*/ KAITENGIRI, /**< undocumented */ + /*0x26*/ DAIKAITENGIRI, /**< undocumented */ + /*0x27*/ GATOTSU, /**< undocumented */ + /*0x28*/ KABUTOWARI, /**< undocumented */ + /*0x29*/ MIZUKAKI_START, /**< Spoke to Lake Hylia Minish */ + /*0x2a*/ MIZUKAKI_HARIFALL, /**< Library book falling */ + /*0x2b*/ RENTED_HOUSE_DIN, /**< Din moves to blue house */ + /*0x2c*/ RENTED_HOUSE_NAYRU, /**< Nayru moves to blue house */ + /*0x2d*/ RENTED_HOUSE_FARORE, /**< Farore moves to blue house */ + /*0x2e*/ NEW_HOUSE_DIN, /**< Din moves to red house */ + /*0x2f*/ NEW_HOUSE_NAYRU, /**< Nayru moves to red house */ + /*0x30*/ NEW_HOUSE_FARORE, /**< Farore moves to red house */ + /*0x31*/ OUGONTEKI_A, /**< Golden Octorok defeated */ + /*0x32*/ OUGONTEKI_B, /**< Golden Tektite defeated */ + /*0x33*/ OUGONTEKI_C, /**< Golden Rope defeated */ + /*0x34*/ OUGONTEKI_D, /**< Golden Rope defeated */ + /*0x35*/ OUGONTEKI_E, /**< Golden Rope defeated */ + /*0x36*/ OUGONTEKI_F, /**< Golden Tektite defeated */ + /*0x37*/ OUGONTEKI_G, /**< Golden Tektite defeated */ + /*0x38*/ OUGONTEKI_H, /**< Golden Octorok defeated */ + /*0x39*/ OUGONTEKI_I, /**< Golden Octorok defeated */ + /*0x3a*/ KAKERA_COMPLETE, /**< All fusions complete */ + /*0x3b*/ DRUG_1, /**< Yellow pico bloomed */ + /*0x3c*/ DRUG_2, /**< Blue pico bloomed */ + /*0x3d*/ DRUG_3, /**< Orange pico bloomed */ + /*0x3e*/ GORON_KAKERA_LV2, /**< Goron merchant restock 1 */ + /*0x3f*/ GORON_KAKERA_LV3, /**< Goron merchant restock 2 */ + /*0x40*/ GORON_KAKERA_LV4, /**< Goron merchant restock 3 */ + /*0x41*/ GORON_KAKERA_LV5, /**< Goron merchant restock 4 */ + /*0x42*/ GORON_KAKERA_L, /**< Red kinstone sold out */ + /*0x43*/ GORON_KAKERA_M, /**< Blue kinstone sold out */ + /*0x44*/ GORON_KAKERA_R, /**< Green kinstone sold out */ + /*0x45*/ CHIKATSURO_SHUTTER, /**< Castle basement door open */ + /*0x46*/ ENTRANCE_USED, /**< undocumented */ + /*0x47*/ GOMAN_RENTED_HOUSE, /**< Spoke to Gorman blue house */ + /*0x48*/ GOMAN_NEW_HOUSE, /**< Spoke to Gorman red house */ + /*0x49*/ OUTDOOR, /**< Exited Link's house */ + /*0x4a*/ POWERGLOVE_HINT, /**< Spoke to Dr. Left Minish */ + /*0x4b*/ ANJU_LV_BIT0, /**< Cucco game 1 bit */ + /*0x4c*/ ANJU_LV_BIT1, /**< Cucco game 2 bit */ + /*0x4d*/ ANJU_LV_BIT2, /**< Cucco game 4 bit */ + /*0x4e*/ ANJU_LV_BIT3, /**< Cucco game 8 bit */ + /*0x4f*/ ANJU_HEART, /**< Cucco heart piece */ + /*0x50*/ MAROYA_WAKEUP, /**< undocumented */ + /*0x51*/ ENDING, /**< Vaati's wrath defeated */ + /*0x52*/ WARP_1ST, /**< Wind ocarina unlocked */ + /*0x53*/ WARP_MONUMENT, /**< First windcrest discovered */ + /*0x54*/ DRUG_COUNT, /**< Pico bloom minish items */ + /*0x55*/ GAMECLEAR, /**< Watched end cutscene */ + /*0x56*/ WHITE_SWORD_END, /**< Exit mines with white sword */ + /*0x57*/ SOUGEN_06_HASHIGO, /**< Boomerang cave ladder */ + /*0x58*/ WARP_EVENT_END, /**< Wind tribe tower state */ + /*0x59*/ FIGURE_ALLCOMP, /**< Obtained Carlov Medal */ + /*0x5a*/ AKINDO_BOTTLE_SELL, /**< Bought bottle from scrub */ + /*0x5b*/ BIN_DOGFOOD, /**< undocumented */ + /*0x5c*/ TINGLE_TALK1ST, /**< Spoke to Tingle */ + /*0x5d*/ SEIIKI_BGM, /**< Elemental sanctuary BGM */ + /*0x5e*/ ENTRANCE_0, /**< Trunk entrance cutscene */ + /*0x5f*/ ENTRANCE_1, /**< Rock entrance cutscene */ + /*0x60*/ ENTRANCE_2, /**< Pot entrance cutscene */ + /*0x61*/ MIZUKAKI_NECHAN, /**< Spoke to librarian */ + /*0x62*/ MAZE_CLEAR, /**< Cleared Castle maze */ + /*0x63*/ TINY_ENTRANCE, /**< Ezlo described entrances */ + /*0x64*/ CASTLE_BGM, /**< Castle intro BGM */ END, } Flag; typedef enum { BEGIN_1, - LV1_CLEAR_MES, /* Ezlo talks about going to Elder after Earth Element in Outside Deepwood Shrine */ - LV2_CLEAR_MES, /* Ezlo talks after exiting with the Fire Element in Outside Cave of Flames */ - LV3_CLEAR_MES, /* Ezlo talks about the Wind Element in Outside Fortress of Winds */ - LV4_CLEAR_MES, /* King Gustaf Talks to Link in Lake Hylia, after Temple of Droplets */ - LV5_CLEAR_MES, /* Ezlo talks after completing Palace of Winds in Wind Tribe Tower Roof */ - MIZUUMI_00_BENT, /* Minish Tree Pegasus Bonked in Lake Hylia */ - MIZUUMI_00_00, /* West Shortcut Open in Lake Hylia */ - MIZUUMI_00_H00, /* Obtained Heart Piece in Lake Hylia, north */ - MIZUUMI_00_H01, /* Obtained Heart Piece in Lake Hylia, next to Stockwell's House */ - MIZUUMI_00_H02, /* Obtained Heart Piece in Lake Hylia, south */ + LV1_CLEAR_MES, /**< Ezlo talks about going to Elder after Earth Element in Outside Deepwood Shrine */ + LV2_CLEAR_MES, /**< Ezlo talks after exiting with the Fire Element in Outside Cave of Flames */ + LV3_CLEAR_MES, /**< Ezlo talks about the Wind Element in Outside Fortress of Winds */ + LV4_CLEAR_MES, /**< King Gustaf Talks to Link in Lake Hylia, after Temple of Droplets */ + LV5_CLEAR_MES, /**< Ezlo talks after completing Palace of Winds in Wind Tribe Tower Roof */ + MIZUUMI_00_BENT, /**< Minish Tree Pegasus Bonked in Lake Hylia */ + MIZUUMI_00_00, /**< West Shortcut Open in Lake Hylia */ + MIZUUMI_00_H00, /**< Obtained Heart Piece in Lake Hylia, north */ + MIZUUMI_00_H01, /**< Obtained Heart Piece in Lake Hylia, next to Stockwell's House */ + MIZUUMI_00_H02, /**< Obtained Heart Piece in Lake Hylia, south */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - MIZUUMI_00_CAP_0, + MIZUUMI_00_CAP_0, /**< undocumented */ #else - HIKYOU_00_T0, - HIKYOU_00_T1, + HIKYOU_00_T0, /**< undocumented */ + HIKYOU_00_T1, /**< undocumented */ #endif - MAENIWA_00_00, /* Ladder to Hyrule Castle Basement revealed in Hyrule Castle Garden */ - MAENIWA_00_01, - MAENIWA_00_02, /* Ladder to Grimblade revealed in Hyrule Castle Garden */ - MAENIWA_00_BENT, /* Minish Tree Pegasus Bonked in Hyrule Castle Garden */ - MAENIWA_00_WARP, /* Caught by guard in Hyrule Castle Garden, after Water Element */ - MAENIWA_00_T0, /* 100 Shell Chest Open in Hyrule Castle Garden (Water Entry) */ - MAENIWA_00_T1, /* 200 Rupee Chest Open in Hyrule Castle Garden (Water Entry) */ - MAENIWA_00_CAP_0, /* Ezlo talks about Castle entrance in Hyrule Castle Garden */ - NAKANIWA_00_EZERO, /* Ezlo talks about Sanctuary entrance in Hyrule Castle Entrance to Sanctuary */ - HIKYOU_00_00, /* Middle shortcut open in Castor Wilds */ - HIKYOU_00_01, /* South shortcut open in Castor Wilds */ - HIKYOU_00_02, - HIKYOU_00_03, - HIKYOU_00_04, - HIKYOU_00_CAP_0, /* Ezlo talks about Castor Wilds in Castor Wilds, entrance */ - HIKYOU_00_CAP_1, /* Ezlo talks about sinking in the swamp in Castor Wilds */ - HIKYOU_00_CAP_2, /* Ezlo talks about Eyegore in Castor Wilds */ - HIKYOU_00_SEKIZOU, /* Square block destroyed in Castor Wilds */ - HIKYOU_00_14, /* North shortcut open in Castor Wilds */ - HIKYOU_00_BOSEKI, /* Opened Swiftblade I's Grave in Castor Wilds */ + MAENIWA_00_00, /**< Ladder to Hyrule Castle Basement revealed in Hyrule Castle Garden */ + MAENIWA_00_01, /**< undocumented */ + MAENIWA_00_02, /**< Ladder to Grimblade revealed in Hyrule Castle Garden */ + MAENIWA_00_BENT, /**< Minish Tree Pegasus Bonked in Hyrule Castle Garden */ + MAENIWA_00_WARP, /**< Caught by guard in Hyrule Castle Garden, after Water Element */ + MAENIWA_00_T0, /**< 100 Shell Chest Open in Hyrule Castle Garden (Water Entry) */ + MAENIWA_00_T1, /**< 200 Rupee Chest Open in Hyrule Castle Garden (Water Entry) */ + MAENIWA_00_CAP_0, /**< Ezlo talks about Castle entrance in Hyrule Castle Garden */ + NAKANIWA_00_EZERO, /**< Ezlo talks about Sanctuary entrance in Hyrule Castle Entrance to Sanctuary */ + HIKYOU_00_00, /**< Middle shortcut open in Castor Wilds */ + HIKYOU_00_01, /**< South shortcut open in Castor Wilds */ + HIKYOU_00_02, /**< undocumented */ + HIKYOU_00_03, /**< undocumented */ + HIKYOU_00_04, /**< undocumented */ + HIKYOU_00_CAP_0, /**< Ezlo talks about Castor Wilds in Castor Wilds, entrance */ + HIKYOU_00_CAP_1, /**< Ezlo talks about sinking in the swamp in Castor Wilds */ + HIKYOU_00_CAP_2, /**< Ezlo talks about Eyegore in Castor Wilds */ + HIKYOU_00_SEKIZOU, /**< Square block destroyed in Castor Wilds */ + HIKYOU_00_14, /**< North shortcut open in Castor Wilds */ + HIKYOU_00_BOSEKI, /**< Opened Swiftblade I's Grave in Castor Wilds */ #if defined(EU) || defined(JP) || defined(DEMO_JP) - HIKYOU_00_H00, + HIKYOU_00_H00, /**< undocumented */ #endif - HIKYOU_00_M0, /* Red W Kinstone Obtained in Castor Wilds, underwater */ - HIKYOU_00_M1, /* Red (> Kinstone Obtained in Castor Wilds, underwater */ - HIKYOU_00_M2, /* Red 3 Prong Kinstone Obtained in Castor Wilds, underwater */ + HIKYOU_00_M0, /**< Red W Kinstone Obtained in Castor Wilds, underwater */ + HIKYOU_00_M1, /**< Red (> Kinstone Obtained in Castor Wilds, underwater */ + HIKYOU_00_M2, /**< Red 3 Prong Kinstone Obtained in Castor Wilds, underwater */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - HIKYOU_00_T1, + HIKYOU_00_T1, /**< undocumented */ #endif - LOST_00_ENTER, /* ??? in Wind Ruins */ - LOST_00_00, /* Shortcut 1 Open in Wind Ruins */ - LOST_00_01, /* Blew up wall to chest cave in Wind Ruins */ - LOST_02_00, /* Defeated Tektites in Wind Ruins */ - LOST_03_00, - LOST_03_T0, - LOST_04_00, /* Shortcut 2 Open in Wind Ruins */ - LOST_04_SIBA0, /* Cut top grass in Wind Ruins Minish Grass Path */ - LOST_04_SIBA1, /* Cut middle grass in Wind Ruins Minish Grass Path */ - LOST_04_SIBA2, /* Cut left grass in Wind Ruins Minish Grass Path */ - LOST_04_SIBA3, /* Cut right grass in Wind Ruins Minish Grass Path */ - LOST_04_SIBA4, /* Cut bottom grass in Wind Ruins Minish Grass Path */ - LOST_05_00, /* Defeated Armoses in Wind Ruins Running Armos */ - LOST_05_01, /* Defeated Beetles & Ropes in Wind Ruins */ + LOST_00_ENTER, /**< ??? in Wind Ruins */ + LOST_00_00, /**< Shortcut 1 Open in Wind Ruins */ + LOST_00_01, /**< Blew up wall to chest cave in Wind Ruins */ + LOST_02_00, /**< Defeated Tektites in Wind Ruins */ + LOST_03_00, /**< undocumented */ + LOST_03_T0, /**< undocumented */ + LOST_04_00, /**< Shortcut 2 Open in Wind Ruins */ + LOST_04_SIBA0, /**< Cut top grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA1, /**< Cut middle grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA2, /**< Cut left grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA3, /**< Cut right grass in Wind Ruins Minish Grass Path */ + LOST_04_SIBA4, /**< Cut bottom grass in Wind Ruins Minish Grass Path */ + LOST_05_00, /**< Defeated Armoses in Wind Ruins Running Armos */ + LOST_05_01, /**< Defeated Beetles & Ropes in Wind Ruins */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - LOST_05_02, - LOST_05_03, + LOST_05_02, /**< undocumented */ + LOST_05_03, /**< undocumented */ #endif - LOST_05_T0, /* 100 Rupee Chest Open in Wind Ruins */ - LOST_05_T1, /* 50 Shell Chest Open in Wind Ruins */ - MORI_00_HIBI_0, /* Left rock "blown up in Minish Woods */ - MORI_00_HIBI_1, /* Right rock "blown up in Minish Woods */ - MORI_00_HIBI_2, /* Blew up left rock in Minish Woods */ - MORI_00_HIBI_3, /* Blew up middle rock in Minish Woods */ - MORI_00_HIBI_4, /* Blew up right rock in Minish Woods */ - MORI_00_KOBITO, /* Ezlo explains Minish Portals 1 in Minish Woods */ - MORI_00_H0, /* Obtained Heart Piece (Witch's Hut) in Minish Woods */ - MORI_00_H1, /* Obtained Heart Piece (Next to Deepwood) in Minish Woods */ - MORI_ENTRANCE_1ST, /* Ezlo explains Minish Portals 2 in Minish Woods */ - YAMA_00_00, /* Middle Rock Pushed to Hole in Rainy Mount Crenel */ - YAMA_00_01, /* Right Rock Pushed to Hole in Rainy Mount Crenel */ - YAMA_01_BW00, /* Great Fairy Fountain cave blown open in Mount Crenel Wall */ - YAMA_02_00, /* Cave to Grip Ring Business Scrub blown open in Mount Crenel */ - YAMA_03_00, /* Fairy Heart Piece cave blown open in Mount Crenel */ - YAMA_03_01, /* Crenel Mines" cave blown open in Mount Crenel */ - YAMA_03_02, /* Heart Piece cave blown open in Mount Crenel */ - YAMA_03_DOKU_0, /* Pathway tile to cave "blown up in Mount Crenel, front of Heart Piece cave */ - YAMA_03_DOKU_1, /* Upper wall tile "blown up in Mount Crenel Wall Entrance */ - YAMA_03_DOKU_2, /* Bottom wall tile "blown up in Mount Crenel Wall Entrance */ - YAMA_04_CAP_0, /* Ezlo talks about Whirlwind in Mount Crenel Base */ + LOST_05_T0, /**< 100 Rupee Chest Open in Wind Ruins */ + LOST_05_T1, /**< 50 Shell Chest Open in Wind Ruins */ + MORI_00_HIBI_0, /**< Left rock "blown up in Minish Woods */ + MORI_00_HIBI_1, /**< Right rock "blown up in Minish Woods */ + MORI_00_HIBI_2, /**< Blew up left rock in Minish Woods */ + MORI_00_HIBI_3, /**< Blew up middle rock in Minish Woods */ + MORI_00_HIBI_4, /**< Blew up right rock in Minish Woods */ + MORI_00_KOBITO, /**< Ezlo explains Minish Portals 1 in Minish Woods */ + MORI_00_H0, /**< Obtained Heart Piece (Witch's Hut) in Minish Woods */ + MORI_00_H1, /**< Obtained Heart Piece (Next to Deepwood) in Minish Woods */ + MORI_ENTRANCE_1ST, /**< Ezlo explains Minish Portals 2 in Minish Woods */ + YAMA_00_00, /**< Middle Rock Pushed to Hole in Rainy Mount Crenel */ + YAMA_00_01, /**< Right Rock Pushed to Hole in Rainy Mount Crenel */ + YAMA_01_BW00, /**< Great Fairy Fountain cave blown open in Mount Crenel Wall */ + YAMA_02_00, /**< Cave to Grip Ring Business Scrub blown open in Mount Crenel */ + YAMA_03_00, /**< Fairy Heart Piece cave blown open in Mount Crenel */ + YAMA_03_01, /**< Crenel Mines" cave blown open in Mount Crenel */ + YAMA_03_02, /**< Heart Piece cave blown open in Mount Crenel */ + YAMA_03_DOKU_0, /**< Pathway tile to cave "blown up in Mount Crenel, front of Heart Piece cave */ + YAMA_03_DOKU_1, /**< Upper wall tile "blown up in Mount Crenel Wall Entrance */ + YAMA_03_DOKU_2, /**< Bottom wall tile "blown up in Mount Crenel Wall Entrance */ + YAMA_04_CAP_0, /**< Ezlo talks about Whirlwind in Mount Crenel Base */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - YAMA_04_CAP_1, + YAMA_04_CAP_1, /**< undocumented */ #endif - YAMA_04_R00, /* Grabbed Red Rupee in Mount Crenel Base */ - YAMA_04_HIBI_0, - YAMA_04_HIBI_1, /* Rock to Spring blown up in Mount Crenel Base */ - YAMA_04_00, /* Bean 2 sprouted in Mount Crenel */ - YAMA_04_01, /* Bean 1 sprouted in Mount Crenel Base */ - YAMA_04_04, /* Fairy Blue Rupee cave blown open in Mount Crenel Base */ - YAMA_04_05, /* Cave to above blown open in Mount Crenel Base */ - YAMA_04_06, /* Cave to Crenel Spring blown open in Mount Crenel Base */ - YAMA_04_ENTHOUSHI, /* Sucked Spikes from Crenel Minish Rock in Mount Crenel */ - YAMA_04_ANAHOUSHI, /* Sucked Spike from Minish Hole in Mount Crenel */ - YAMA_04_BOMBWALL0, /* Cave next to entrance blown open in Mount Crenel Base */ - HAKA_BUNSHIN_00, /* King Gustaf's Grave Open in Royal Valley */ - HAKA_BOSEKI_00, /* Gina's Grave Open in Royal Valley */ - HAKA_BOSEKI_01, /* Heart Piece Grave Open in Royal Valley */ - HAKA_BOSEKI_02, /* Grave in the way of clones pushed in Royal Valley */ - HAKA_00_CAP_0, /* Ezlo talks about Royal Valley in Royal Valley Entrance */ - HAKA_00_BW00, /* Blew up wall to Great Fairy Fountain in Royal Valley Entrance */ - HAKA_01_T0, /* 200 Shell Chest Open in Royal Valley Maze Secret Chest */ - HAKA_KEY_GET, /* Ezlo talks about getting the key back in Royal Valley */ - SOUGEN_01_WAKAGI_0, /* Top bush cut west of Town Entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_1, /* Middle bush cut west of Town Entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_2, /* Bottom bush cut west of Town Entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_3, /* Top bush cut southwest of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_4, /* Middle bush cut southwest of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_5, /* Bottom bush cut southwest of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_6, /* Top bush cut southeast of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_7, /* Middle bush cut southeast of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_8, /* Bottom bush cut southeast of Link's House in South Hyrule Field */ - SOUGEN_01_WAKAGI_9, /* Top bush cut east of Town entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_10, /* Middle bush cut east of Town entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_11, /* Bottom left bush cut east of Town entrance in South Hyrule Field */ - SOUGEN_01_WAKAGI_12, /* Bottom right bush cut east of Town entrance (hidden behind tree) in South Hyrule Field */ - SOUGEN_01_00, /* Cave west of Town entrance blown open in South Hyrule Field */ - SOUGEN_01_BENT, /* Minish Tree Pegasus Bonked in South Hyrule Field */ - SOUGEN_01_ZELDA, /* Zelda enters Town in South Hyrule Field */ - SOUGEN_02_HIBI_0, /* Blown up left rock in Hyrule Field, from Minish Woods Exit */ - SOUGEN_02_HIBI_1, /* Blown up right rock in Hyrule Field, from Minish Woods Exit */ - SOUGEN_03_BOMBWALL, /* Cave blown open in Hyrule Field, north from Minish Woods Exit */ - SOUGEN_04_HIBI_0, /* Blown up top rock in Eastern Hills */ - SOUGEN_04_HIBI_1, /* Blown up middle left rock in Eastern Hills */ - SOUGEN_04_HIBI_2, /* Blown up middle right rock in Eastern Hills */ - SOUGEN_04_HIBI_3, /* Blown up bottom rock in Eastern Hills */ - SOUGEN_05_HIBI_0, /* Blown up left top rock in Lon Lon Ranch */ - SOUGEN_05_HIBI_1, /* Blown up right top rock in Lon Lon Ranch */ - SOUGEN_05_HIBI_2, /* Blown up right bottom rock in Lon Lon Ranch */ - SOUGEN_05_HIBI_3, /* Blown up left bottom rock in Lon Lon Ranch */ - SOUGEN_05_BOMB_00, /* Goron Cave Entrance Open in Lon Lon Ranch */ - SOUGEN_05_00, /* Northern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ - SOUGEN_05_01, /* Southern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ - SOUGEN_05_IWA02, /* Southern Lon Lon - Goron Cave Shortcut Open in Lon Lon Ranch */ - SOUGEN_05_BENT, /* Revealed the tree stump minish portal in Lon Lon Ranch */ - SOUGEN_05_H00, /* Obtained Heart Piece in Lon Lon Ranch (From Lake Hylia Cave) */ - SOUGEN_05_R0, /* Obtained hidden 50 Rupee in Lon Lon Ranch */ - SOUGEN_05_CAP_0, /* Ezlo talks about cows looking delicious in Lon Lon Ranch */ - SOUGEN_06_WAKAGI_0, /* Top bush cut east of Town entrance in Outside Castle */ - SOUGEN_06_WAKAGI_1, /* Top middle bush cut east of Town entrance in Outside Castle */ - SOUGEN_06_WAKAGI_2, /* Bottom middle bush cut east of Town entrance in Outside Castle */ - SOUGEN_06_WAKAGI_3, /* Bottom bush cut east of Town entrance in Outside Castle */ - SOUGEN_06_HIBI_0, /* Blew up left rock to Veil Falls in Outside Castle */ - SOUGEN_06_HIBI_1, /* Blew up right rock to Veil Falls in Outside Castle */ - SOUGEN_06_HIBI_2, /* Left fence piece "blown up in Outside Castle */ - SOUGEN_06_HIBI_3, /* Right fence piece "blown up in Outside Castle */ - SOUGEN_06_HIBI_4, /* Blew up west rock in Outside Castle */ - SOUGEN_06_IWA_0, /* Minish Hole Open in Outside Castle, East Rock */ - SOUGEN_06_AKINDO, /* Defeated Deku Scrub in Outside Castle */ - SOUGEN_06_SAIKAI, /* Defeated Vaati Moblins in Outside Castle */ - SOUGEN_06_BENT, /* Minish Tree Pegasus Bonked in Outside Castle */ - SOUGEN_06_SLIDE, /* Shortcut bridge opened in Outside Castle */ - SOUGEN_06_R1, /* Obtained hidden 50 Rupees in Outside Castle */ - SOUGEN_07_00, /* Blown open Keese chest cave in Trilby Highlands, above exit ladder */ - SOUGEN_07_01, /* Blown open Fairy Fountain in Trilby Highlands, next to shortcut */ - SOUGEN_07_02, /* Trilby - South Trilby Shortcut Open in Trilby Highlands */ + YAMA_04_R00, /**< Grabbed Red Rupee in Mount Crenel Base */ + YAMA_04_HIBI_0, /**< undocumented */ + YAMA_04_HIBI_1, /**< Rock to Spring blown up in Mount Crenel Base */ + YAMA_04_00, /**< Bean 2 sprouted in Mount Crenel */ + YAMA_04_01, /**< Bean 1 sprouted in Mount Crenel Base */ + YAMA_04_04, /**< Fairy Blue Rupee cave blown open in Mount Crenel Base */ + YAMA_04_05, /**< Cave to above blown open in Mount Crenel Base */ + YAMA_04_06, /**< Cave to Crenel Spring blown open in Mount Crenel Base */ + YAMA_04_ENTHOUSHI, /**< Sucked Spikes from Crenel Minish Rock in Mount Crenel */ + YAMA_04_ANAHOUSHI, /**< Sucked Spike from Minish Hole in Mount Crenel */ + YAMA_04_BOMBWALL0, /**< Cave next to entrance blown open in Mount Crenel Base */ + HAKA_BUNSHIN_00, /**< King Gustaf's Grave Open in Royal Valley */ + HAKA_BOSEKI_00, /**< Gina's Grave Open in Royal Valley */ + HAKA_BOSEKI_01, /**< Heart Piece Grave Open in Royal Valley */ + HAKA_BOSEKI_02, /**< Grave in the way of clones pushed in Royal Valley */ + HAKA_00_CAP_0, /**< Ezlo talks about Royal Valley in Royal Valley Entrance */ + HAKA_00_BW00, /**< Blew up wall to Great Fairy Fountain in Royal Valley Entrance */ + HAKA_01_T0, /**< 200 Shell Chest Open in Royal Valley Maze Secret Chest */ + HAKA_KEY_GET, /**< Ezlo talks about getting the key back in Royal Valley */ + SOUGEN_01_WAKAGI_0, /**< Top bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_1, /**< Middle bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_2, /**< Bottom bush cut west of Town Entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_3, /**< Top bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_4, /**< Middle bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_5, /**< Bottom bush cut southwest of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_6, /**< Top bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_7, /**< Middle bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_8, /**< Bottom bush cut southeast of Link's House in South Hyrule Field */ + SOUGEN_01_WAKAGI_9, /**< Top bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_10, /**< Middle bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_11, /**< Bottom left bush cut east of Town entrance in South Hyrule Field */ + SOUGEN_01_WAKAGI_12, /**< Bottom right bush cut east of Town entrance (hidden behind tree) in South Hyrule Field */ + SOUGEN_01_00, /**< Cave west of Town entrance blown open in South Hyrule Field */ + SOUGEN_01_BENT, /**< Minish Tree Pegasus Bonked in South Hyrule Field */ + SOUGEN_01_ZELDA, /**< Zelda enters Town in South Hyrule Field */ + SOUGEN_02_HIBI_0, /**< Blown up left rock in Hyrule Field, from Minish Woods Exit */ + SOUGEN_02_HIBI_1, /**< Blown up right rock in Hyrule Field, from Minish Woods Exit */ + SOUGEN_03_BOMBWALL, /**< Cave blown open in Hyrule Field, north from Minish Woods Exit */ + SOUGEN_04_HIBI_0, /**< Blown up top rock in Eastern Hills */ + SOUGEN_04_HIBI_1, /**< Blown up middle left rock in Eastern Hills */ + SOUGEN_04_HIBI_2, /**< Blown up middle right rock in Eastern Hills */ + SOUGEN_04_HIBI_3, /**< Blown up bottom rock in Eastern Hills */ + SOUGEN_05_HIBI_0, /**< Blown up left top rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_1, /**< Blown up right top rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_2, /**< Blown up right bottom rock in Lon Lon Ranch */ + SOUGEN_05_HIBI_3, /**< Blown up left bottom rock in Lon Lon Ranch */ + SOUGEN_05_BOMB_00, /**< Goron Cave Entrance Open in Lon Lon Ranch */ + SOUGEN_05_00, /**< Northern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_01, /**< Southern Lon Lon - Lake Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_IWA02, /**< Southern Lon Lon - Goron Cave Shortcut Open in Lon Lon Ranch */ + SOUGEN_05_BENT, /**< Revealed the tree stump minish portal in Lon Lon Ranch */ + SOUGEN_05_H00, /**< Obtained Heart Piece in Lon Lon Ranch (From Lake Hylia Cave) */ + SOUGEN_05_R0, /**< Obtained hidden 50 Rupee in Lon Lon Ranch */ + SOUGEN_05_CAP_0, /**< Ezlo talks about cows looking delicious in Lon Lon Ranch */ + SOUGEN_06_WAKAGI_0, /**< Top bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_1, /**< Top middle bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_2, /**< Bottom middle bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_WAKAGI_3, /**< Bottom bush cut east of Town entrance in Outside Castle */ + SOUGEN_06_HIBI_0, /**< Blew up left rock to Veil Falls in Outside Castle */ + SOUGEN_06_HIBI_1, /**< Blew up right rock to Veil Falls in Outside Castle */ + SOUGEN_06_HIBI_2, /**< Left fence piece "blown up in Outside Castle */ + SOUGEN_06_HIBI_3, /**< Right fence piece "blown up in Outside Castle */ + SOUGEN_06_HIBI_4, /**< Blew up west rock in Outside Castle */ + SOUGEN_06_IWA_0, /**< Minish Hole Open in Outside Castle, East Rock */ + SOUGEN_06_AKINDO, /**< Defeated Deku Scrub in Outside Castle */ + SOUGEN_06_SAIKAI, /**< Defeated Vaati Moblins in Outside Castle */ + SOUGEN_06_BENT, /**< Minish Tree Pegasus Bonked in Outside Castle */ + SOUGEN_06_SLIDE, /**< Shortcut bridge opened in Outside Castle */ + SOUGEN_06_R1, /**< Obtained hidden 50 Rupees in Outside Castle */ + SOUGEN_07_00, /**< Blown open Keese chest cave in Trilby Highlands, above exit ladder */ + SOUGEN_07_01, /**< Blown open Fairy Fountain in Trilby Highlands, next to shortcut */ + SOUGEN_07_02, /**< Trilby - South Trilby Shortcut Open in Trilby Highlands */ #if defined(JP) || defined(EU) || defined(DEMO_JP) - SOUGEN_07_H00, + SOUGEN_07_H00, /**< undocumented */ #endif - SOUGEN_08_00, /* South Hyrule Field - Western Wood Shortcut Open in Western Wood */ - SOUGEN_08_01, /* Dug Up Top Left 50 Rupee in Western Wood */ - SOUGEN_08_02, /* Dug Up Bottom Left 50 Rupee in Western Wood */ - SOUGEN_08_03, /* Dug Up Top Center 50 Rupee in Western Wood */ - SOUGEN_08_04, /* Dug Up Bottom Center 50 Rupee in Western Wood */ - SOUGEN_08_05, /* Dug Up Top Right 50 Rupee in Western Wood */ - SOUGEN_08_06, /* Dug Up Bottom Right 50 Rupee in Western Wood */ - SOUGEN_08_07, /* Dug Up Left 200 Rupee in Western Wood */ - SOUGEN_08_08, /* Dug Up Right 200 Rupee in Western Wood */ - SOUGEN_08_TORITSUKI, /* Vaati takes over King Daltus in West Hyrule */ - SOUGEN_08_T00, /* 100 Shell Chest Open in Western Wood */ - CASTLE_00_00, - CASTLE_04_MEZAME, /* Disable sleeping cutscene (Intro) in Hyrule Castle Garden, bedroom */ - CASTLE_04_MAID_TALK, /* Spoke to Vassal (Intro) in Hyrule Castle Garden, bedroom */ - SUIGEN_00_h0, /* Obtained Heart Piece in Veil Falls Outside West Digging Cave */ - SUIGEN_00_T0, /* 100 Shell Chest Open in Veil Falls Entrance Cave Secret Area */ - SUIGEN_00_r0, /* Obtained Red Rupee (Top left) in Veil Falls Outside East Digging Cave */ - SUIGEN_00_r1, /* Obtained Red Rupee (Bottom left) in Veil Falls Outside East Digging Cave */ - SUIGEN_00_r2, /* Obtained Red Rupee (Bottom right) in Veil Falls Outside East Digging Cave */ - SUIGEN_00_CAP_0, /* Ezlo talks about waterfall in Veil Falls, near Kinstone door */ - SUIGEN_00_CAP_1, - SUIGEN_00_R0, /* Obtained hidden 50 Rupee in Veil Falls, rock circle */ - SUIGEN_00_R1, + SOUGEN_08_00, /**< South Hyrule Field - Western Wood Shortcut Open in Western Wood */ + SOUGEN_08_01, /**< Dug Up Top Left 50 Rupee in Western Wood */ + SOUGEN_08_02, /**< Dug Up Bottom Left 50 Rupee in Western Wood */ + SOUGEN_08_03, /**< Dug Up Top Center 50 Rupee in Western Wood */ + SOUGEN_08_04, /**< Dug Up Bottom Center 50 Rupee in Western Wood */ + SOUGEN_08_05, /**< Dug Up Top Right 50 Rupee in Western Wood */ + SOUGEN_08_06, /**< Dug Up Bottom Right 50 Rupee in Western Wood */ + SOUGEN_08_07, /**< Dug Up Left 200 Rupee in Western Wood */ + SOUGEN_08_08, /**< Dug Up Right 200 Rupee in Western Wood */ + SOUGEN_08_TORITSUKI, /**< Vaati takes over King Daltus in West Hyrule */ + SOUGEN_08_T00, /**< 100 Shell Chest Open in Western Wood */ + CASTLE_00_00, /**< undocumented */ + CASTLE_04_MEZAME, /**< Disable sleeping cutscene (Intro) in Hyrule Castle Garden, bedroom */ + CASTLE_04_MAID_TALK, /**< Spoke to Vassal (Intro) in Hyrule Castle Garden, bedroom */ + SUIGEN_00_h0, /**< Obtained Heart Piece in Veil Falls Outside West Digging Cave */ + SUIGEN_00_T0, /**< 100 Shell Chest Open in Veil Falls Entrance Cave Secret Area */ + SUIGEN_00_r0, /**< Obtained Red Rupee (Top left) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_r1, /**< Obtained Red Rupee (Bottom left) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_r2, /**< Obtained Red Rupee (Bottom right) in Veil Falls Outside East Digging Cave */ + SUIGEN_00_CAP_0, /**< Ezlo talks about waterfall in Veil Falls, near Kinstone door */ + SUIGEN_00_CAP_1, /**< undocumented */ + SUIGEN_00_R0, /**< Obtained hidden 50 Rupee in Veil Falls, rock circle */ + SUIGEN_00_R1, /**< undocumented */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - SUIGEN_00_R2, + SUIGEN_00_R2, /**< undocumented */ #endif - SUIGEN_00_h1, /* Obtained Heart Piece in Veil Falls South */ - SUIGENGORON_00_CAP_0, /* Ezlo talks about vortex in Veil Springs */ - DAIGORON_SHIELD, /* Gave biggoron the first shield in Veil Falls, Biggoron */ - DAIGORON_EXCHG, /* Biggoron is tasting a shield in Veil Falls, Biggoron */ - BEANDEMO_00, /* Crenel Summit Beanstalk has grown in Melari's mines, fuse with Melari */ - BEANDEMO_01, /* Lake Hylia Beanstalk has grown in Lake Hylia, fuse with minish elder impersonator */ - BEANDEMO_02, /* Wind Ruins Beanstalk has grown in Wind Ruins, Minish Hole, fuse with minish */ - BEANDEMO_03, /* Eastern Hills Beanstalk has grown in Eastern Hills, Minish house, fuse with minish */ - BEANDEMO_04, /* Western Wood Beanstalk has grown in Western Wood, Minish house, fuse with minish */ - KAKERA_TAKARA_A, /* Bottle Chest Opened in Eastern Hills */ - KAKERA_TAKARA_E, /* Blue S Kinstone Chest Open in Minish Woods, northwest */ + SUIGEN_00_h1, /**< Obtained Heart Piece in Veil Falls South */ + SUIGENGORON_00_CAP_0, /**< Ezlo talks about vortex in Veil Springs */ + DAIGORON_SHIELD, /**< Gave biggoron the first shield in Veil Falls, Biggoron */ + DAIGORON_EXCHG, /**< Biggoron is tasting a shield in Veil Falls, Biggoron */ + BEANDEMO_00, /**< Crenel Summit Beanstalk has grown in Melari's mines, fuse with Melari */ + BEANDEMO_01, /**< Lake Hylia Beanstalk has grown in Lake Hylia, fuse with minish elder impersonator */ + BEANDEMO_02, /**< Wind Ruins Beanstalk has grown in Wind Ruins, Minish Hole, fuse with minish */ + BEANDEMO_03, /**< Eastern Hills Beanstalk has grown in Eastern Hills, Minish house, fuse with minish */ + BEANDEMO_04, /**< Western Wood Beanstalk has grown in Western Wood, Minish house, fuse with minish */ + KAKERA_TAKARA_A, /**< Bottle Chest Opened in Eastern Hills */ + KAKERA_TAKARA_E, /**< Blue S Kinstone Chest Open in Minish Woods, northwest */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - KAKERA_TAKARA_J, + KAKERA_TAKARA_J, /**< undocumented */ #endif - KAKERA_TAKARA_K, /* Bomb Bag Chest Open in Wind Ruins, near entrance to Fortress of Winds */ - KAKERA_TAKARA_L, /* Red W Kinstone Chest Open in Minish Woods */ - KAKERA_TAKARA_M, /* Red (> Kinstone Chest Open in Trilby Highlands */ - KAKERA_TAKARA_N, /* Red 3 Prong Kinstone Chest Open in Minish Woods */ - KAKERA_TAKARA_O, /* 200 Rupee Chest Opened in Minish Woods */ - KAKERA_TAKARA_P, /* 200 Shell Chest Open in South Hyrule Field */ - KAKERA_TAKARA_Q, /* Red 3 Prong Kinstone Chest Open in Royal Valley Graveyard, northwest chest */ - KAKERA_TAKARA_R, /* Red (> Kinstone Chest Open in Royal Valley Graveyard, northeast chest */ - KAKERA_TAKARA_S, /* Red W Kinstone Chest Open in Trilby Highlands */ - KAKERA_TAKARA_T, /* 200 Shell Chest Open in North Hyrule Field */ - KAKERA_TAKARA_U, /* 200 Rupee Chest Open in Lon Lon Ranch */ - KAKERA_TAKARA_V, /* Blue S Kinstone Chest Open in Veil Falls */ - KAKERA_TAKARA_W, /* Blue L Kinstone Chest Open in Mt. Crenel */ - KAKERA_TAKARA_X, /* 200 Rupee Chest Open in Crenel base */ - KAKERA_TAKARA_Y, /* 200 Shell Chest Open in Wind Ruins Tektite Room */ - KAKERA_TAKARA_Z, - MACHI_02_HEISHI_TALK, /* Spoke to Westside Soldier in Hyrule Town */ - MACHI00_00, /* Flipped Minish Pot in Hyrule Town, Top of Library */ - MACHI00_02, /* Un-Flipped Minish Pot in Hyrule Town, Top of School */ - MACHI00_03, /* Pushed box in the minish cat path in Hyrule Town */ - MACHI_00_T00, /* Red > Kinstone Chest Open in Hyrule Town, Happy Hearth Balcony */ - MACHI_00_T01, /* Opened Red W Kinstone Chest in Hyrule Town, Top of School */ - MACHI_01_DEMO, /* Lolly and Candy Moved in Hyrule Town, Festival */ - MACHI_02_HEISHI, /* Showed Spin Attack to Westside Soldier in Hyrule Town */ - MACHI_02_DOG, /* Talk to dog as minish */ - MACHI_07_BELL, /* Obtained Heart Piece in Bell in Hyrule Town */ - SHOP05_OPEN, /* Figurine House Open in Hyrule Town */ - MACHI_MES_20, /* Talked to gossip woman (right of well) in Hyrule Town */ - MACHI_MES_21, /* Talked to gossip woman (left of well) in Hyrule Town */ - MACHI_MES_22, /* Talked to the boy next to the girl at the water fountain in Hyrule Town */ - MACHI_MES_23, /* Talked to the girl next to the boy at the water fountain in Hyrule Town */ - MACHI_MES_24, /* Talked to man near mushroom house in Hyrule Town, State 2 */ - MACHI_MES_30, /* Talked to man near mushroom house in Hyrule Town, State 4 */ - MACHI_MES_40, /* Talked to man near mushroom house in Hyrule Town, State 5 */ - MACHI_MES_60, /* Spoke to Jasmine (Woman outside Cafe) in Hyrule Town */ - MACHI_MES_50, /* Spoke to Herb (Figurine House Owner) in Hyrule Town */ - MACHI_DOG_C, /* Seen all dog dialogue */ - KUMOUE_00_CAP_0, /* Ezlo talks about Wind Tribe Tower in Cloud Tops 3F */ - KUMOUE_01_CAP_0, /* Ezlo talks about Wind Tribe Tower in Cloud Tops 2F */ - KUMOUE_01_T0, /* East Gold E Kinstone Chest Open in Cloud Tops 2F East */ - KUMOUE_01_T1, /* Middle Gold Jagged Kinstone Chest Open in Cloud Tops 2F Middle */ - KUMOUE_01_T2, /* Top West Gold Jagged Kinstone Chest Open in Cloud Tops 2F Top West */ - KUMOUE_01_T3, /* 50 Shell Chest Open in Cloud Tops 2F Top West Left Chest */ - KUMOUE_01_T4, /* 50 Shell Chest Open in Cloud Tops 2F Top West Right Chest */ - KUMOUE_01_T5, /* 50 Shell Chest Open in Cloud Tops 2F Bottom West Chest */ - KUMOUE_01_T6, /* 50 Shell Chest Open in Cloud Tops 2F Middle Chest */ - KUMOUR_01_K0, /* Green < Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K1, /* Red (> Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K2, /* Blue L Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K3, /* Green [ Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K4, /* Green / Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K5, /* Red W Kinstone Obtained in Cloud Tops 2F */ - KUMOUR_01_K6, /* Blue S Kinstone Obtained in Cloud Tops 2F */ - KUMONOUE_01_KAKERA, - KUMOUE_02_CAP_0, /* Ezlo talks after landing in Cloud Tops Entrance */ - KUMOUE_02_AWASE_01, /* Top Right Pinwheel Spinning in Cloud Tops, fuse with Top Right Cloud */ - KUMOUE_02_AWASE_02, /* Bottom Left Pinwheel Spinning in Cloud Tops, fuse with Bottom Left Cloud */ - KUMOUE_02_AWASE_03, /* Top Left Pinwheel Spinning in Cloud Tops, fuse with Top Left Cloud */ - KUMOUE_02_AWASE_04, /* Middle Pinwheel Spinning in Cloud Tops, fuse with Middle Cloud */ - KUMOUE_02_AWASE_05, /* Bottom Right Pinwheel Spinning in Cloud Tops, fuse with Bottom Right Cloud */ - KUMOUE_02_00, /* Defeated Top Cloud Piranhas in Cloud Tops North */ - KUMOUE_02_01, /* Obtained Top Gold Σ Kinstone in Cloud Tops, Top Piranhas */ - KUMOUE_02_02, /* Defeated Bottom Cloud Piranhas in Cloud Tops South */ - KUMOUE_02_03, /* Obtained Bottom Σ Gold Kinstone in Cloud Tops, Bottom Piranhas */ - KUMOUE_UNCLE_TALK, /* Talked to Gale in Cloud Tops Entrance */ - KUMOUE_GIRL_TALK, /* Talked to Hailey in Cloud Tops Entrance */ + KAKERA_TAKARA_K, /**< Bomb Bag Chest Open in Wind Ruins, near entrance to Fortress of Winds */ + KAKERA_TAKARA_L, /**< Red W Kinstone Chest Open in Minish Woods */ + KAKERA_TAKARA_M, /**< Red (> Kinstone Chest Open in Trilby Highlands */ + KAKERA_TAKARA_N, /**< Red 3 Prong Kinstone Chest Open in Minish Woods */ + KAKERA_TAKARA_O, /**< 200 Rupee Chest Opened in Minish Woods */ + KAKERA_TAKARA_P, /**< 200 Shell Chest Open in South Hyrule Field */ + KAKERA_TAKARA_Q, /**< Red 3 Prong Kinstone Chest Open in Royal Valley Graveyard, northwest chest */ + KAKERA_TAKARA_R, /**< Red (> Kinstone Chest Open in Royal Valley Graveyard, northeast chest */ + KAKERA_TAKARA_S, /**< Red W Kinstone Chest Open in Trilby Highlands */ + KAKERA_TAKARA_T, /**< 200 Shell Chest Open in North Hyrule Field */ + KAKERA_TAKARA_U, /**< 200 Rupee Chest Open in Lon Lon Ranch */ + KAKERA_TAKARA_V, /**< Blue S Kinstone Chest Open in Veil Falls */ + KAKERA_TAKARA_W, /**< Blue L Kinstone Chest Open in Mt. Crenel */ + KAKERA_TAKARA_X, /**< 200 Rupee Chest Open in Crenel base */ + KAKERA_TAKARA_Y, /**< 200 Shell Chest Open in Wind Ruins Tektite Room */ + KAKERA_TAKARA_Z, /**< undocumented */ + MACHI_02_HEISHI_TALK, /**< Spoke to Westside Soldier in Hyrule Town */ + MACHI00_00, /**< Flipped Minish Pot in Hyrule Town, Top of Library */ + MACHI00_02, /**< Un-Flipped Minish Pot in Hyrule Town, Top of School */ + MACHI00_03, /**< Pushed box in the minish cat path in Hyrule Town */ + MACHI_00_T00, /**< Red > Kinstone Chest Open in Hyrule Town, Happy Hearth Balcony */ + MACHI_00_T01, /**< Opened Red W Kinstone Chest in Hyrule Town, Top of School */ + MACHI_01_DEMO, /**< Lolly and Candy Moved in Hyrule Town, Festival */ + MACHI_02_HEISHI, /**< Showed Spin Attack to Westside Soldier in Hyrule Town */ + MACHI_02_DOG, /**< Talk to dog as minish */ + MACHI_07_BELL, /**< Obtained Heart Piece in Bell in Hyrule Town */ + SHOP05_OPEN, /**< Figurine House Open in Hyrule Town */ + MACHI_MES_20, /**< Talked to gossip woman (right of well) in Hyrule Town */ + MACHI_MES_21, /**< Talked to gossip woman (left of well) in Hyrule Town */ + MACHI_MES_22, /**< Talked to the boy next to the girl at the water fountain in Hyrule Town */ + MACHI_MES_23, /**< Talked to the girl next to the boy at the water fountain in Hyrule Town */ + MACHI_MES_24, /**< Talked to man near mushroom house in Hyrule Town, State 2 */ + MACHI_MES_30, /**< Talked to man near mushroom house in Hyrule Town, State 4 */ + MACHI_MES_40, /**< Talked to man near mushroom house in Hyrule Town, State 5 */ + MACHI_MES_60, /**< Spoke to Jasmine (Woman outside Cafe) in Hyrule Town */ + MACHI_MES_50, /**< Spoke to Herb (Figurine House Owner) in Hyrule Town */ + MACHI_DOG_C, /**< Seen all dog dialogue */ + KUMOUE_00_CAP_0, /**< Ezlo talks about Wind Tribe Tower in Cloud Tops 3F */ + KUMOUE_01_CAP_0, /**< Ezlo talks about Wind Tribe Tower in Cloud Tops 2F */ + KUMOUE_01_T0, /**< East Gold E Kinstone Chest Open in Cloud Tops 2F East */ + KUMOUE_01_T1, /**< Middle Gold Jagged Kinstone Chest Open in Cloud Tops 2F Middle */ + KUMOUE_01_T2, /**< Top West Gold Jagged Kinstone Chest Open in Cloud Tops 2F Top West */ + KUMOUE_01_T3, /**< 50 Shell Chest Open in Cloud Tops 2F Top West Left Chest */ + KUMOUE_01_T4, /**< 50 Shell Chest Open in Cloud Tops 2F Top West Right Chest */ + KUMOUE_01_T5, /**< 50 Shell Chest Open in Cloud Tops 2F Bottom West Chest */ + KUMOUE_01_T6, /**< 50 Shell Chest Open in Cloud Tops 2F Middle Chest */ + KUMOUR_01_K0, /**< Green < Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K1, /**< Red (> Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K2, /**< Blue L Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K3, /**< Green [ Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K4, /**< Green / Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K5, /**< Red W Kinstone Obtained in Cloud Tops 2F */ + KUMOUR_01_K6, /**< Blue S Kinstone Obtained in Cloud Tops 2F */ + KUMONOUE_01_KAKERA, /**< undocumented */ + KUMOUE_02_CAP_0, /**< Ezlo talks after landing in Cloud Tops Entrance */ + KUMOUE_02_AWASE_01, /**< Top Right Pinwheel Spinning in Cloud Tops, fuse with Top Right Cloud */ + KUMOUE_02_AWASE_02, /**< Bottom Left Pinwheel Spinning in Cloud Tops, fuse with Bottom Left Cloud */ + KUMOUE_02_AWASE_03, /**< Top Left Pinwheel Spinning in Cloud Tops, fuse with Top Left Cloud */ + KUMOUE_02_AWASE_04, /**< Middle Pinwheel Spinning in Cloud Tops, fuse with Middle Cloud */ + KUMOUE_02_AWASE_05, /**< Bottom Right Pinwheel Spinning in Cloud Tops, fuse with Bottom Right Cloud */ + KUMOUE_02_00, /**< Defeated Top Cloud Piranhas in Cloud Tops North */ + KUMOUE_02_01, /**< Obtained Top Gold Σ Kinstone in Cloud Tops, Top Piranhas */ + KUMOUE_02_02, /**< Defeated Bottom Cloud Piranhas in Cloud Tops South */ + KUMOUE_02_03, /**< Obtained Bottom Σ Gold Kinstone in Cloud Tops, Bottom Piranhas */ + KUMOUE_UNCLE_TALK, /**< Talked to Gale in Cloud Tops Entrance */ + KUMOUE_GIRL_TALK, /**< Talked to Hailey in Cloud Tops Entrance */ #if !defined(JP) && !defined(EU) && !defined(DEMO_JP) - KS_A06, - KS_B18, - KS_C21, - KS_C25, + KS_A06, /**< undocumented */ + KS_B18, /**< undocumented */ + KS_C21, /**< undocumented */ + KS_C25, /**< undocumented */ #else - MIZUUMI_00_CAP_0, - SUIGEN_00_R2, - YAMA_04_CAP_1, - LOST_05_02, - LOST_05_03, - KAKERA_TAKARA_J, + MIZUUMI_00_CAP_0, /**< undocumented */ + SUIGEN_00_R2, /**< undocumented */ + YAMA_04_CAP_1, /**< undocumented */ + LOST_05_02, /**< undocumented */ + LOST_05_03, /**< undocumented */ + KAKERA_TAKARA_J, /**< undocumented */ #endif #ifdef DEMO_JP - KS_WARPUSE, + KS_WARPUSE, /**< undocumented */ #endif END_1, } LocalFlags1; typedef enum { BEGIN_2, - BILL05_YADO1F_MATSU_T0, /* Luxury Room" Chest Open in Hyrule Town, Happy Hearth */ - BILL06_YADO1F_TAKE_T0, /* Regular Room" Chest Open in Hyrule Town, Happy Hearth */ - BILL07_YADO1F_UME_T0, /* Cheap Room" Chest Open in Hyrule Town, Happy Hearth */ - BILL0A_YADO_TAKARA_T0, - SHOUSE_00_T0, /* Green (< Kinstone Chest Open in Wind Tribe Tower 1F Left Chest */ - SHOUSE_00_T1, /* Green Rectangle Kinstone Chest Open in Wind Tribe Tower 1F Right Chest */ - SHOUSE_01_T0, /* Green / Kinstone Chest Open in Wind Tribe Tower 2F */ - SHOUSE_02_T0, /* Red W Kinstone Chest Open in Wind Tribe Tower 3F Right Chest */ - SHOUSE_02_T1, /* Blue S Kinstone Chest Open in Wind Tribe Tower 3F Middle Chest */ - SHOUSE_02_T2, /* Blue L Kinstone Chest Open in Wind Tribe Tower 3F Left Chest */ - SHOUSE_02_XXXX0, - SHOUSE_02_XXXX1, - SHOUSE_02_XXXX2, - SHOUSE_03_T0, /* Red (> Kinstone Chest Open in Wind Tribe Tower 4F Left Chest */ - SHOUSE_03_T1, /* Red 3 Prong Chest Open in Wind Tribe Tower 4F Right Chest */ - KOBITOANA_06_T0, /* Bow Chest Open in Castor Wilds */ - KOBITOANA_03_T0, /* Red (> Kinstone Chest Open in Mount Crenel Minish Hole near Bean */ - KOBITOANA_07_T0, /* Red 3 Prong Chest Open in Wind Ruins Minish Hole */ - KOBITOANA_09_T0, /* Blue S Kinstone Chest Open in Castor Wilds North Minish Hole */ - KOBITOANA_0A_T0, /* Red W Kinstone Chest Open in Castor Wilds West Minish Hole */ - KOBITOANA_0B_T0, /* Red (> Kinstone Chest Open in Castor Wilds Middle Minish Hole */ - MHOUSE11_T0, /* Red Rupee Chest Open in Link's House */ - URO_08_T0, - URO_0A_T0, - URO_0B_T0, - BILL00_SHICHOU_00, /* Flipped Pot in Hyrule Town, Mayor Hagen's house */ - BILL00_SHICHOU_01, /* Bounced off the left red mask in Hyrule Town, Mayor Hagen's house */ - BILL00_SHICHOU_02, /* Bounced off the left blue mask in Hyrule Town, Mayor Hagen's house */ - BILL00_SHICHOU_03, /* Bounced off the right red mask in Hyrule Town, Mayor Hagen's house */ - BILL00_SHICHOU_04, /* Bounced off the right blue mask in Hyrule Town, Mayor Hagen's house */ - BILL01_TESSIN_1, /* Swordsman Newsletter #1 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_2, /* Swordsman Newsletter #2 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_3, /* Swordsman Newsletter #3 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_4, /* Swordsman Newsletter #4 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_5, /* Swordsman Newsletter #5 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_6, /* Swordsman Newsletter #6 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_7, /* Swordsman Newsletter #7 is on the table in Hyrule Town, Post Office */ - BILL01_TESSIN_8, /* Swordsman Newsletter #8 is on the table in Hyrule Town, Post Office */ - BILL09_YADO2F_POEMN, /* Broken the bottom right pot for a red 3 prong kinstone in Hyrule Town, Happy Hearth 2F */ - BILL0A_YADO_TAKARA_00, - BILL0B_SCHOOLL_00, - BILL0C_SCHOOLR_00, /* Minish pot flipped in Hyrule Town, School */ - MHOUSE00_00, - MHOUSE00_01, - MHOUSE00_02, - MHOUSE00_03, - MHOUSE00_04, - MHOUSE00_05, - MHOUSE01_00, /* Pushed Left Cupboard Into Place in Hyrule Town, Red Oracle House */ - MHOUSE01_01, /* Pushed Right Cupboard Into Place in Hyrule Town, Red Oracle House */ - MHOUSE01_02, /* Broke Left Pot in Hyrule Town, Red Oracle House */ - MHOUSE01_03, /* Broke Right Pot in Hyrule Town, Red Oracle House */ - MHOUSE03_00, - MHOUSE03_01, /* Pushed Cupboard Into Place in Hyrule Town, Unused Red Oracle House (Din?) */ - MHOUSE04_00, /* Pushed Left Cupboard in Hyrule Town, Dr. Left's House */ - MHOUSE04_01, /* Pushed Right Cupboard in Hyrule Town, Dr. Left's House */ - MHOUSE04_02, - MHOUSE04_03, - MHOUSE04_04, - MHOUSE06_00, /* Flipped Minish Pot in Hyrule Town, Romio's House */ - MHOUSE07_00, - MHOUSE07_01, - MHOUSE08_00, /* Received 100 Shells from Percy in Percy's House */ - MHOUSE08_01, - MHOUSE08_02, - MHOUSE08_03, /* Received 50 Rupees from Bow Moblin in Percy's House */ - MHOUSE08_04, /* Bow Moblin Revealed in Percy's House */ - MHOUSE0C_00, - MHOUSE14_00, /* Flipped Minish Pot in Lake Hylia, Stockwell's House */ - MHOUSE15_OP1ST, /* Seen Intro (Stain Windows -> Zelda talks to Smith) in Link's House */ - MHOUSE2_00_00, - MHOUSE2_00_01, - MHOUSE2_00_02, - MHOUSE2_00_03, - MHOUSE2_01_T0, - MHOUSE2_02_KAME, - MHOUSE2_02_KEY, /* Obtain the Lon Lon Ranch key in Lon Lon Ranch, Inside the house */ - MHOUSE2_03_00, - MHOUSE2_05_00, /* Pushed cupboard in Lake Hylia, Mayor's House */ - SHOP00_ITEM_00, - SHOP00_ITEM_01, /* Un-Flipped Minish Pot in Hyrule Town Shop */ - SHOP00_ITEM_02, - SHOP00_ITEM_03, /* Stockwell talks about feeling someone in Hyrule Town Shop */ - SHOP00_ITEM_04, /* Stockwell sees you after you unshrink in Hyrule Town Shop */ - SHOP00_SAIFU, /* Bought Wallet in Hyrule Town Shop */ - SHOP00_YAZUTSU, /* Bought Quiver in Hyrule Town Shop */ - SHOP01_CAFE_00, /* Pushed cupboard in Hyrule Town Cafe */ - SHOP01_CAFE_01, /* Flipped Minish Pot in Hyrule Town Cafe */ - SHOP01_TALK, /* Spoke to Hurdy-Gurdy Man in Hyrule Town Cafe */ - HOUSE_XXXXX, - SHOP03_PAN_1ST, /* Eaten a pastry in Hyrule Town Bakery */ - SHOP07_TALK1ST, /* Spoke to Carlov in Carlov's Room */ - SHOP07_GACHAPON, - SHOP07_TANA, /* Pulled Lever in Carlov's Room */ - SHOP07_COMPLETE, /* Exhausted new figurines in Carlov's Room */ - SHOP02_KUTSU_00, /* Rem falling asleep cutscene seen in Rem's Shoe Shop */ - NPC37_REM_TALK1ST, /* Spoke to Rem in Rem's Shoe Shop */ - NPC37_REM_SLEEP, /* Rem is in his sleeping animation in Rem's Shoe Shop */ - SORA_ELDER_RECOVER, /* Saved Gregal in Wind Tribe Tower 2F */ - SORA_CHIEF_TALK, /* Spoke to Wind Tribe Leader Siroc in Wind Tribe Tower 4F */ - SORA_ELDER_TALK1ST, /* Spoke to Gregal after Sucking Ghost in Wind Tribe Tower 2F */ - SORA_ELDER_TALK2ND, /* Spoke to Gregal after Cloud Tops in Wind Tribe Tower 2F */ - NPC06_19GUY_QUESTION, - NPC06_19GUY_ANSWER, - DANPEI_TALK1ST, /* Spoke to Dampe in Royal Valley, Dampe's House */ - MIZUKAKI_KOBITO, /* Spoke to Yellow Library Minish in Hyrule Town Library */ - MIZUKAKI_HINT1, /* Spoke to Library Receptionist in Hyrule Town Library */ - MIZUKAKI_BOOK1_FALL, /* Dropped Library Book to Floor in Hyrule Town, Julietta's House */ - MIZUKAKI_HINT2, /* Spoke to Library Receptionist after Book 1 in Hyrule Town Library */ - MIZUKAKI_HINT2_2ND, - MIZUKAKI_BOOK2_FALL, /* Library Book hit ground in Hyrule Town, Dr. Left's House */ - MIZUKAKI_HINT3, /* Spoke to Library Receptionist after Book 2 in Hyrule Town Library */ - MIZUKAKI_HINT3_MAYOR, /* Spoke to Mayor Hagen about the book in Hyrule Town, Mayor Hagen's House */ - MIZUKAKI_BOOK3_FALL, /* Dropped Book 3 to Floor in Lake Hylia, Mayor's House */ - MIZUKAKI_BOOK_ALLBACK, /* Completed Book Quest in Hyrule Town Library */ - MIZUKAKI_STAIR, /* Librari Opens Trap Door in Hyrule Town Library, Librari's Book House */ - MIZUKAKI_STAIR_WARP_OK, /* Screen fades out to the Flipper Cave in Hyrule Town Library, Librari's Book House */ - KHOUSE27_00, - NO_USE_00, - KHOUSE51_00, /* Got 50 Rupees from the bottom minish for returning the books in Hyrule Town Library, Minish Bookshelf */ - NO_USE_01, - KHOUSE51_02, /* Spoke to Librari in Hyrule Town Library, Librari's Book House Before Book Quest */ - KHOUSE42_00, /* Spoke to Minish in Hyrule Town, Dr. Left's House After obtaining Power Bracelets */ - NO_USE_02, - NO_USE_03, - OYAKATA_DEMO, /* Spoke to Melari in Melari's Mines */ - YAMAKOBITO_OPEN, /* Minish Moved from Exit in Melari's Mines */ - M_PRIEST_TALK, /* Talked to Festari in Minish Village */ - M_ELDER_TALK1ST, /* Talked to Minish Elder Gentari in Minish Village */ - M_PRIEST_MOVE, /* Festari moves to side in Minish Village */ - M_ELDER_TALK2ND, /* Minish Elder Gentari opens curtains in Minish Village */ - MHOUSE04_DANRO, /* Put out Fireplace in Hyrule Town, Dr. Left's House */ - MHOUSE06_DANRO, /* Put out Fireplace in Hyrule Town, Romio's House */ - URO_POEMN_TALK, /* Talked to percy in the tree cave in Trilby Highlands, Tree Cave */ - MHOUSE06_MES_20, /* Talked to Romio in Hyrule Town, Romio's House */ - MHOUSE07_MES_20, /* Talked to Julietta in Hyrule Town, Julietta's House */ - MAYOR_2_TALK1ST, /* Talked to Mayor Hagen in Hyrule Town, Mayor Hagen's House, after flippers */ - MAYOR_4_TALK1ST, - BILL01_TESSIN_RESERVED, /* Paid for new newsletter in Hyrule Town, Post Office */ - BILL01_TESSIN_BRANDNEW, /* New newsletter has arrived in Hyrule Town, Post Office */ - KOBITO_MORI_1ST, /* Seen Minish Village Entrance Scene in Minish Village */ - KOBITO_YAMA_ENTER, /* Visited Melari's Mines? in Melari's Mines */ - KHOUSE52_KINOKO, /* Talked to Shoe Shop Minish in Rem's Shoe Shop */ - SORA_YAKATA_ENTER, /* Entered Main Entrance? in Cloud Tops, House */ - YADO_CHECKIN, /* Sleeping is Active in Happy Hearth Inn */ - MINIGAME_GAMEEND, /* Chest Mini-Game Result Active in Hyrule Town, Chest Mini-Game Shop */ - MINIGAME_LEVEL2, /* Hard Mode Active in Hyrule Town, Chest Mini-Game Shop */ - MHOUSE_DIN_TALK, /* Talked To Din in Hyrule Town, Blue/Red House */ - MHOUSE_NAYRU_TALK, /* Talked To Nayru in Hyrule Town, Blue/Red House */ - MHOUSE_FARORE_TALK, /* Talked To Farore in Hyrule Town, Blue/Red House */ - URO_12_H0, /* Obtained Heart Piece in Tree southeast of Link's House */ - URO_19_H0, /* Obtained Heart Piece in Tree House in Western Wood */ - URO_1F_H0, /* Obtained Heart Container in Unused Tree House (Lake Hylia) */ - BILL09_TSW0, /* Left Torch Lit in Hyrule Town, Happy Hearth 2F */ - BILL09_TSW1, /* Right Torch Lit in Hyrule Town, Happy Hearth 2F */ - KHOUSE41_TALK1ST, /* Talk to the minish in Hyrule Town, Red House */ - TAIMA_SAIBAI_1ST, /* Talk to the pico bloom minish in Minish Village */ - IZUMI_00_FAIRY, /* Obtained Quiver upgrade from Great Fairy in Royal Valley */ - IZUMI_01_FAIRY, /* Obtained Wallet upgrade from Great Fairy in Minish Woods */ - IZUMI_02_FAIRY, /* Obtained Bomb Bag upgrade from Great Fairy in Mount Crenel Wall */ - BILL0B_DOUZOU_L, - BILL0B_DOUZOU_R, - KOBITOANA_08_T0, /* Blue L Kinstone Chest Open in Minish Woods South Minish Hole, shared fuse */ - KOBITOANA_0C_T0, /* Red 3 Prong Kinstone Chest Open in Wind Ruins Pillar Room Minish Hole */ - KOBITOANA_0D_T0, /* Red W Kinstone Chest Open in Castor Wilds, Minish Hole next to Bow */ - KOBITOHOUSE_23_H0, - MHOUSE08_DANRO, - MHOUSE09_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House */ - MHOUSE0A_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House (Nayru?) */ - MHOUSE0B_DANRO, /* Put out Fireplace in Hyrule Town, Blue Oracle House (Din?) */ - MHOUSE0C_DANRO, - MHOUSE12_DANRO, /* Put out Fireplace in Dampé's Hut */ - SORA_DANRO, /* Put out Fireplace in Wind Tribe Tower 1F */ - MIZUKAKI_HINT3_MAP, /* Spoke with the minish after talking to Hagen in Hyrule Town, Mayor Hagen's House */ - LEFT_TALK, /* Spoke to Dr. Left inside his house in Hyrule Town, Dr. Left's House */ - KHOUSE26_REMOCON, /* Swapped Bombs with Belari once in Minish Woods, Belari's house */ - SORA_KIDS_MOVE, /* Hailey Moves to Side of Stairs in Wind Tribe Tower 4F */ - KOBITOANA_00_T0, /* Red (> Kinstone Chest Open in Lon Lon Ranch, north Minish Hole */ - KHOUSE23_TALK1ST, /* Obtained Heart Container in Lake Hylia, Librari's House */ - SHOP05_ELEMENT_H00, /* Obtained Heart Piece in Hyrule Town Figurine House */ - SHOP05_ELEMENT_T00, /* Left 200 Rupee Chest Open in Hyrule Town Figurine House */ - SHOP05_ELEMENT_T01, /* Middle 200 Rupee Chest Open in Hyrule Town Figurine House */ - SHOP05_ELEMENT_T02, /* Right 200 Rupee Chest Open in Hyrule Town Figurine House */ - BILL0a_YADO_TAKARA_H00, /* Obtained Heart Piece in Hyrule Town, Happy Hearth minish backdoor */ - KOBITOYAMA_00_R00, /* Hidden Blue L Kinstone Obtained in Melari's Mine */ - KOBITOYAMA_00_R01, /* Hidden Red Rupee Obtained in Melari's Mine */ - KOBITOYAMA_00_R02, /* Hidden Blue S Kinstone Obtained in Melari's Mine */ - KOBITOYAMA_00_R03, /* Hidden Red Rupee Obtained in Melari's Mine */ - KOBITOYAMA_00_R04, /* Hidden Red Rupee Obtained in Melari's Mine */ - KOBITOYAMA_00_R05, /* Hidden Green [ Kinstone Obtained in Melari's Mine */ - KOBITOYAMA_00_R06, /* Hidden Red Rupee Obtained in Melari's Mine */ - KOBITOYAMA_00_R07, /* Hidden Red W Kinstone Obtained in Melari's Mine */ - KOBITO_MORI_00_H00, - KOBITO_MORI_00_H0, /* Obtained Heart Piece in Minish Village */ - CAFE_01_CAP_0, /* Ezlo talks after Pot Minish Cutscene in Hyrule Town */ - BILL_00_CAP_0, /* Ezlo talks about Mayor's House in Mayor's House */ - BILL_02_CAP_0, /* Ezlo talks about books in Hyrule Town Library 2F, bottom right bookshelf */ - MHOUSE_07_CAP_0, /* Ezlo talks about cat 1 in Hyrule Town, Julietta's House */ - MHOUSE_07_CAP_1, /* Ezlo talks about cat 2 in Hyrule Town, Julietta's House */ - MHOUSE_10_CAP_0, // links house entrance - MHOUSE_15_CAP_0, // links bedroom - MHOUSE_15_CAP_1, /* Ezlo talks about something being unusual in Link's House, bottom left corner of bedroom */ - SHOP_03_CAP_0, /* Ezlo talks about pastries in Hyrule Town Bakery */ - MHOUSE_07_CAP_2, /* Ezlo talks about library book in Hyrule Town, Julietta's House */ + BILL05_YADO1F_MATSU_T0, /**< Luxury Room" Chest Open in Hyrule Town, Happy Hearth */ + BILL06_YADO1F_TAKE_T0, /**< Regular Room" Chest Open in Hyrule Town, Happy Hearth */ + BILL07_YADO1F_UME_T0, /**< Cheap Room" Chest Open in Hyrule Town, Happy Hearth */ + BILL0A_YADO_TAKARA_T0, /**< undocumented */ + SHOUSE_00_T0, /**< Green (< Kinstone Chest Open in Wind Tribe Tower 1F Left Chest */ + SHOUSE_00_T1, /**< Green Rectangle Kinstone Chest Open in Wind Tribe Tower 1F Right Chest */ + SHOUSE_01_T0, /**< Green / Kinstone Chest Open in Wind Tribe Tower 2F */ + SHOUSE_02_T0, /**< Red W Kinstone Chest Open in Wind Tribe Tower 3F Right Chest */ + SHOUSE_02_T1, /**< Blue S Kinstone Chest Open in Wind Tribe Tower 3F Middle Chest */ + SHOUSE_02_T2, /**< Blue L Kinstone Chest Open in Wind Tribe Tower 3F Left Chest */ + SHOUSE_02_XXXX0, /**< undocumented */ + SHOUSE_02_XXXX1, /**< undocumented */ + SHOUSE_02_XXXX2, /**< undocumented */ + SHOUSE_03_T0, /**< Red (> Kinstone Chest Open in Wind Tribe Tower 4F Left Chest */ + SHOUSE_03_T1, /**< Red 3 Prong Chest Open in Wind Tribe Tower 4F Right Chest */ + KOBITOANA_06_T0, /**< Bow Chest Open in Castor Wilds */ + KOBITOANA_03_T0, /**< Red (> Kinstone Chest Open in Mount Crenel Minish Hole near Bean */ + KOBITOANA_07_T0, /**< Red 3 Prong Chest Open in Wind Ruins Minish Hole */ + KOBITOANA_09_T0, /**< Blue S Kinstone Chest Open in Castor Wilds North Minish Hole */ + KOBITOANA_0A_T0, /**< Red W Kinstone Chest Open in Castor Wilds West Minish Hole */ + KOBITOANA_0B_T0, /**< Red (> Kinstone Chest Open in Castor Wilds Middle Minish Hole */ + MHOUSE11_T0, /**< Red Rupee Chest Open in Link's House */ + URO_08_T0, /**< undocumented */ + URO_0A_T0, /**< undocumented */ + URO_0B_T0, /**< undocumented */ + BILL00_SHICHOU_00, /**< Flipped Pot in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_01, /**< Bounced off the left red mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_02, /**< Bounced off the left blue mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_03, /**< Bounced off the right red mask in Hyrule Town, Mayor Hagen's house */ + BILL00_SHICHOU_04, /**< Bounced off the right blue mask in Hyrule Town, Mayor Hagen's house */ + BILL01_TESSIN_1, /**< Swordsman Newsletter #1 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_2, /**< Swordsman Newsletter #2 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_3, /**< Swordsman Newsletter #3 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_4, /**< Swordsman Newsletter #4 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_5, /**< Swordsman Newsletter #5 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_6, /**< Swordsman Newsletter #6 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_7, /**< Swordsman Newsletter #7 is on the table in Hyrule Town, Post Office */ + BILL01_TESSIN_8, /**< Swordsman Newsletter #8 is on the table in Hyrule Town, Post Office */ + BILL09_YADO2F_POEMN, /**< Broken the bottom right pot for a red 3 prong kinstone in Hyrule Town, Happy Hearth 2F */ + BILL0A_YADO_TAKARA_00, /**< undocumented */ + BILL0B_SCHOOLL_00, /**< undocumented */ + BILL0C_SCHOOLR_00, /**< Minish pot flipped in Hyrule Town, School */ + MHOUSE00_00, /**< undocumented */ + MHOUSE00_01, /**< undocumented */ + MHOUSE00_02, /**< undocumented */ + MHOUSE00_03, /**< undocumented */ + MHOUSE00_04, /**< undocumented */ + MHOUSE00_05, /**< undocumented */ + MHOUSE01_00, /**< Pushed Left Cupboard Into Place in Hyrule Town, Red Oracle House */ + MHOUSE01_01, /**< Pushed Right Cupboard Into Place in Hyrule Town, Red Oracle House */ + MHOUSE01_02, /**< Broke Left Pot in Hyrule Town, Red Oracle House */ + MHOUSE01_03, /**< Broke Right Pot in Hyrule Town, Red Oracle House */ + MHOUSE03_00, /**< undocumented */ + MHOUSE03_01, /**< Pushed Cupboard Into Place in Hyrule Town, Unused Red Oracle House (Din?) */ + MHOUSE04_00, /**< Pushed Left Cupboard in Hyrule Town, Dr. Left's House */ + MHOUSE04_01, /**< Pushed Right Cupboard in Hyrule Town, Dr. Left's House */ + MHOUSE04_02, /**< undocumented */ + MHOUSE04_03, /**< undocumented */ + MHOUSE04_04, /**< undocumented */ + MHOUSE06_00, /**< Flipped Minish Pot in Hyrule Town, Romio's House */ + MHOUSE07_00, /**< undocumented */ + MHOUSE07_01, /**< undocumented */ + MHOUSE08_00, /**< Received 100 Shells from Percy in Percy's House */ + MHOUSE08_01, /**< undocumented */ + MHOUSE08_02, /**< undocumented */ + MHOUSE08_03, /**< Received 50 Rupees from Bow Moblin in Percy's House */ + MHOUSE08_04, /**< Bow Moblin Revealed in Percy's House */ + MHOUSE0C_00, /**< undocumented */ + MHOUSE14_00, /**< Flipped Minish Pot in Lake Hylia, Stockwell's House */ + MHOUSE15_OP1ST, /**< Seen Intro (Stain Windows -> Zelda talks to Smith) in Link's House */ + MHOUSE2_00_00, /**< undocumented */ + MHOUSE2_00_01, /**< undocumented */ + MHOUSE2_00_02, /**< undocumented */ + MHOUSE2_00_03, /**< undocumented */ + MHOUSE2_01_T0, /**< undocumented */ + MHOUSE2_02_KAME, /**< undocumented */ + MHOUSE2_02_KEY, /**< Obtain the Lon Lon Ranch key in Lon Lon Ranch, Inside the house */ + MHOUSE2_03_00, /**< undocumented */ + MHOUSE2_05_00, /**< Pushed cupboard in Lake Hylia, Mayor's House */ + SHOP00_ITEM_00, /**< undocumented */ + SHOP00_ITEM_01, /**< Un-Flipped Minish Pot in Hyrule Town Shop */ + SHOP00_ITEM_02, /**< undocumented */ + SHOP00_ITEM_03, /**< Stockwell talks about feeling someone in Hyrule Town Shop */ + SHOP00_ITEM_04, /**< Stockwell sees you after you unshrink in Hyrule Town Shop */ + SHOP00_SAIFU, /**< Bought Wallet in Hyrule Town Shop */ + SHOP00_YAZUTSU, /**< Bought Quiver in Hyrule Town Shop */ + SHOP01_CAFE_00, /**< Pushed cupboard in Hyrule Town Cafe */ + SHOP01_CAFE_01, /**< Flipped Minish Pot in Hyrule Town Cafe */ + SHOP01_TALK, /**< Spoke to Hurdy-Gurdy Man in Hyrule Town Cafe */ + HOUSE_XXXXX, /**< undocumented */ + SHOP03_PAN_1ST, /**< Eaten a pastry in Hyrule Town Bakery */ + SHOP07_TALK1ST, /**< Spoke to Carlov in Carlov's Room */ + SHOP07_GACHAPON, /**< undocumented */ + SHOP07_TANA, /**< Pulled Lever in Carlov's Room */ + SHOP07_COMPLETE, /**< Exhausted new figurines in Carlov's Room */ + SHOP02_KUTSU_00, /**< Rem falling asleep cutscene seen in Rem's Shoe Shop */ + NPC37_REM_TALK1ST, /**< Spoke to Rem in Rem's Shoe Shop */ + NPC37_REM_SLEEP, /**< Rem is in his sleeping animation in Rem's Shoe Shop */ + SORA_ELDER_RECOVER, /**< Saved Gregal in Wind Tribe Tower 2F */ + SORA_CHIEF_TALK, /**< Spoke to Wind Tribe Leader Siroc in Wind Tribe Tower 4F */ + SORA_ELDER_TALK1ST, /**< Spoke to Gregal after Sucking Ghost in Wind Tribe Tower 2F */ + SORA_ELDER_TALK2ND, /**< Spoke to Gregal after Cloud Tops in Wind Tribe Tower 2F */ + NPC06_19GUY_QUESTION, /**< undocumented */ + NPC06_19GUY_ANSWER, /**< undocumented */ + DANPEI_TALK1ST, /**< Spoke to Dampe in Royal Valley, Dampe's House */ + MIZUKAKI_KOBITO, /**< Spoke to Yellow Library Minish in Hyrule Town Library */ + MIZUKAKI_HINT1, /**< Spoke to Library Receptionist in Hyrule Town Library */ + MIZUKAKI_BOOK1_FALL, /**< Dropped Library Book to Floor in Hyrule Town, Julietta's House */ + MIZUKAKI_HINT2, /**< Spoke to Library Receptionist after Book 1 in Hyrule Town Library */ + MIZUKAKI_HINT2_2ND, /**< undocumented */ + MIZUKAKI_BOOK2_FALL, /**< Library Book hit ground in Hyrule Town, Dr. Left's House */ + MIZUKAKI_HINT3, /**< Spoke to Library Receptionist after Book 2 in Hyrule Town Library */ + MIZUKAKI_HINT3_MAYOR, /**< Spoke to Mayor Hagen about the book in Hyrule Town, Mayor Hagen's House */ + MIZUKAKI_BOOK3_FALL, /**< Dropped Book 3 to Floor in Lake Hylia, Mayor's House */ + MIZUKAKI_BOOK_ALLBACK, /**< Completed Book Quest in Hyrule Town Library */ + MIZUKAKI_STAIR, /**< Librari Opens Trap Door in Hyrule Town Library, Librari's Book House */ + MIZUKAKI_STAIR_WARP_OK, /**< Screen fades out to the Flipper Cave in Hyrule Town Library, Librari's Book House */ + KHOUSE27_00, /**< undocumented */ + NO_USE_00, /**< undocumented */ + KHOUSE51_00, /**< Got 50 Rupees from the bottom minish for returning the books in Hyrule Town Library, Minish Bookshelf */ + NO_USE_01, /**< undocumented */ + KHOUSE51_02, /**< Spoke to Librari in Hyrule Town Library, Librari's Book House Before Book Quest */ + KHOUSE42_00, /**< Spoke to Minish in Hyrule Town, Dr. Left's House After obtaining Power Bracelets */ + NO_USE_02, /**< undocumented */ + NO_USE_03, /**< undocumented */ + OYAKATA_DEMO, /**< Spoke to Melari in Melari's Mines */ + YAMAKOBITO_OPEN, /**< Minish Moved from Exit in Melari's Mines */ + M_PRIEST_TALK, /**< Talked to Festari in Minish Village */ + M_ELDER_TALK1ST, /**< Talked to Minish Elder Gentari in Minish Village */ + M_PRIEST_MOVE, /**< Festari moves to side in Minish Village */ + M_ELDER_TALK2ND, /**< Minish Elder Gentari opens curtains in Minish Village */ + MHOUSE04_DANRO, /**< Put out Fireplace in Hyrule Town, Dr. Left's House */ + MHOUSE06_DANRO, /**< Put out Fireplace in Hyrule Town, Romio's House */ + URO_POEMN_TALK, /**< Talked to percy in the tree cave in Trilby Highlands, Tree Cave */ + MHOUSE06_MES_20, /**< Talked to Romio in Hyrule Town, Romio's House */ + MHOUSE07_MES_20, /**< Talked to Julietta in Hyrule Town, Julietta's House */ + MAYOR_2_TALK1ST, /**< Talked to Mayor Hagen in Hyrule Town, Mayor Hagen's House, after flippers */ + MAYOR_4_TALK1ST, /**< undocumented */ + BILL01_TESSIN_RESERVED, /**< Paid for new newsletter in Hyrule Town, Post Office */ + BILL01_TESSIN_BRANDNEW, /**< New newsletter has arrived in Hyrule Town, Post Office */ + KOBITO_MORI_1ST, /**< Seen Minish Village Entrance Scene in Minish Village */ + KOBITO_YAMA_ENTER, /**< Visited Melari's Mines? in Melari's Mines */ + KHOUSE52_KINOKO, /**< Talked to Shoe Shop Minish in Rem's Shoe Shop */ + SORA_YAKATA_ENTER, /**< Entered Main Entrance? in Cloud Tops, House */ + YADO_CHECKIN, /**< Sleeping is Active in Happy Hearth Inn */ + MINIGAME_GAMEEND, /**< Chest Mini-Game Result Active in Hyrule Town, Chest Mini-Game Shop */ + MINIGAME_LEVEL2, /**< Hard Mode Active in Hyrule Town, Chest Mini-Game Shop */ + MHOUSE_DIN_TALK, /**< Talked To Din in Hyrule Town, Blue/Red House */ + MHOUSE_NAYRU_TALK, /**< Talked To Nayru in Hyrule Town, Blue/Red House */ + MHOUSE_FARORE_TALK, /**< Talked To Farore in Hyrule Town, Blue/Red House */ + URO_12_H0, /**< Obtained Heart Piece in Tree southeast of Link's House */ + URO_19_H0, /**< Obtained Heart Piece in Tree House in Western Wood */ + URO_1F_H0, /**< Obtained Heart Container in Unused Tree House (Lake Hylia) */ + BILL09_TSW0, /**< Left Torch Lit in Hyrule Town, Happy Hearth 2F */ + BILL09_TSW1, /**< Right Torch Lit in Hyrule Town, Happy Hearth 2F */ + KHOUSE41_TALK1ST, /**< Talk to the minish in Hyrule Town, Red House */ + TAIMA_SAIBAI_1ST, /**< Talk to the pico bloom minish in Minish Village */ + IZUMI_00_FAIRY, /**< Obtained Quiver upgrade from Great Fairy in Royal Valley */ + IZUMI_01_FAIRY, /**< Obtained Wallet upgrade from Great Fairy in Minish Woods */ + IZUMI_02_FAIRY, /**< Obtained Bomb Bag upgrade from Great Fairy in Mount Crenel Wall */ + BILL0B_DOUZOU_L, /**< undocumented */ + BILL0B_DOUZOU_R, /**< undocumented */ + KOBITOANA_08_T0, /**< Blue L Kinstone Chest Open in Minish Woods South Minish Hole, shared fuse */ + KOBITOANA_0C_T0, /**< Red 3 Prong Kinstone Chest Open in Wind Ruins Pillar Room Minish Hole */ + KOBITOANA_0D_T0, /**< Red W Kinstone Chest Open in Castor Wilds, Minish Hole next to Bow */ + KOBITOHOUSE_23_H0, /**< undocumented */ + MHOUSE08_DANRO, /**< undocumented */ + MHOUSE09_DANRO, /**< Put out Fireplace in Hyrule Town, Blue Oracle House */ + MHOUSE0A_DANRO, /**< Put out Fireplace in Hyrule Town, Blue Oracle House (Nayru?) */ + MHOUSE0B_DANRO, /**< Put out Fireplace in Hyrule Town, Blue Oracle House (Din?) */ + MHOUSE0C_DANRO, /**< undocumented */ + MHOUSE12_DANRO, /**< Put out Fireplace in Dampé's Hut */ + SORA_DANRO, /**< Put out Fireplace in Wind Tribe Tower 1F */ + MIZUKAKI_HINT3_MAP, /**< Spoke with the minish after talking to Hagen in Hyrule Town, Mayor Hagen's House */ + LEFT_TALK, /**< Spoke to Dr. Left inside his house in Hyrule Town, Dr. Left's House */ + KHOUSE26_REMOCON, /**< Swapped Bombs with Belari once in Minish Woods, Belari's house */ + SORA_KIDS_MOVE, /**< Hailey Moves to Side of Stairs in Wind Tribe Tower 4F */ + KOBITOANA_00_T0, /**< Red (> Kinstone Chest Open in Lon Lon Ranch, north Minish Hole */ + KHOUSE23_TALK1ST, /**< Obtained Heart Container in Lake Hylia, Librari's House */ + SHOP05_ELEMENT_H00, /**< Obtained Heart Piece in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T00, /**< Left 200 Rupee Chest Open in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T01, /**< Middle 200 Rupee Chest Open in Hyrule Town Figurine House */ + SHOP05_ELEMENT_T02, /**< Right 200 Rupee Chest Open in Hyrule Town Figurine House */ + BILL0a_YADO_TAKARA_H00, /**< Obtained Heart Piece in Hyrule Town, Happy Hearth minish backdoor */ + KOBITOYAMA_00_R00, /**< Hidden Blue L Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R01, /**< Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R02, /**< Hidden Blue S Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R03, /**< Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R04, /**< Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R05, /**< Hidden Green [ Kinstone Obtained in Melari's Mine */ + KOBITOYAMA_00_R06, /**< Hidden Red Rupee Obtained in Melari's Mine */ + KOBITOYAMA_00_R07, /**< Hidden Red W Kinstone Obtained in Melari's Mine */ + KOBITO_MORI_00_H00, /**< undocumented */ + KOBITO_MORI_00_H0, /**< Obtained Heart Piece in Minish Village */ + CAFE_01_CAP_0, /**< Ezlo talks after Pot Minish Cutscene in Hyrule Town */ + BILL_00_CAP_0, /**< Ezlo talks about Mayor's House in Mayor's House */ + BILL_02_CAP_0, /**< Ezlo talks about books in Hyrule Town Library 2F, bottom right bookshelf */ + MHOUSE_07_CAP_0, /**< Ezlo talks about cat 1 in Hyrule Town, Julietta's House */ + MHOUSE_07_CAP_1, /**< Ezlo talks about cat 2 in Hyrule Town, Julietta's House */ + MHOUSE_10_CAP_0, /**< links house entrance*/ + MHOUSE_15_CAP_0, /**< links bedroom*/ + MHOUSE_15_CAP_1, /**< Ezlo talks about something being unusual in Link's House, bottom left corner of bedroom */ + SHOP_03_CAP_0, /**< Ezlo talks about pastries in Hyrule Town Bakery */ + MHOUSE_07_CAP_2, /**< Ezlo talks about library book in Hyrule Town, Julietta's House */ #ifndef EU - SHOP00_BOMBBAG, - CAFE_01_CAP_1, + SHOP00_BOMBBAG, /**< undocumented */ + CAFE_01_CAP_1, /**< undocumented */ #endif #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - KS_A02, - KS_A09, - KS_A18, - KS_B07, - KS_B16, + KS_A02, /**< undocumented */ + KS_A09, /**< undocumented */ + KS_A18, /**< undocumented */ + KS_B07, /**< undocumented */ + KS_B16, /**< undocumented */ #endif #ifdef DEMO_JP - MH01_KS_KUSURI, - MH09_KS_KUSURI, + MH01_KS_KUSURI, /**< undocumented */ + MH09_KS_KUSURI, /**< undocumented */ #endif END_2, } LocalFlags2; typedef enum { BEGIN_3, - MAROYA_TAKARA, - MACHI_CHIKA_00_00, /* Top Rock In Place in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA_00_01, /* Middle Rock In Place in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA_00_02, /* Bottom Rock In Place in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA_00_03, /* Chest Pillar In Place in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA_00_T0, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle North */ - MACHI_CHIKA_00_T1, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle West */ - MACHI_CHIKA_00_T2, /* Red 3 Prong Kinstone Chest Open in Hyrule Town, Well Sewer Puzzle East */ - MACHI_CHIKA_00_T3, /* 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle South */ - MACHI_CHIKA_00_T4, /* 200 Rupee Pillar Chest Open in Hyrule Town, Well Sewer Puzzle */ - MACHI_CHIKA2_00_T0, - MACHI_CHIKA2_01_T0, - MACHI_CHIKA2_03_00, - MACHI_CHIKA2_03_01, /* Defeated Mulldozers in Hyrule Town Fountain (Power Bracelets) */ - MACHI_CHIKA2_03_T0, /* Power Bracelets Chest Open in Hyrule Town Fountain (Power Bracelets) */ - MACHI_CHIKA2_04_T0, /* 100 Rupee Chest Open in Hyrule Town Fountain (Power Bracelets) */ - MACHI_CHIKA2_10_00, /* Scissors Beetles Spawned in Hyrule Town Sewer Flippers Room */ - MACHI_CHIKA2_10_01, /* Defeated Scissors Beetles in Hyrule Town Sewer Flippers Room */ - MACHI_CHIKA2_10_02, /* Picked up 50 rupees hidden beneath waterfall in Hyrule Town Sewer Flippers Room */ - MACHI_CHIKA2_10_T0, /* Flippers Chest Open in Hyrule Town Sewer Flippers Room */ - MACHI_CHIKA2_12_T0, /* 100 Shell Chest Open in Hyrule Town Sewer Ice Chest Room */ - LV4_HAKA_05_T0, /* Blue S Kinstone Chest Open in Royal Crypt Unused Block Room */ - LV4_HAKA_04_T0, - LV4_HAKA_04_T1, - LV4_HAKA_01_00, /* Defeated Gibdos in Royal Crypt Gibdo Fight Room */ - LV4_HAKA_01_01, - LV4_HAKA_03_00, - LV4_HAKA_04_R0, - LV4_HAKA_04_R1, - LV4_HAKA_04_R2, - LV4_HAKA_04_R3, - LV4_HAKA_04_R4, - LV4_HAKA_04_R5, - LV4_HAKA_04_R6, - LV4_HAKA_04_R8, - LV4_HAKA_04_R9, - LV4_HAKA_04_R10, - LV4_HAKA_04_R11, - LV4_HAKA_04_KB0, /* Second Key Block Open in Royal Crypt Key Block Room */ - LV4_HAKA_04_KB1, /* First Key Block Open in Royal Crypt Key Block Room */ - LV4_HAKA_05_H0, - LV4_HAKA_05_H1, - LV4_HAKA_05_H2, - LV4_HAKA_05_H3, - OUBO_02_BW0, - OUBO_02_BW1, - OUBO_06_BW0, - OUBO_06_BW1, - OUBO_07_ENTER, - OUBO_KAKERA, /* Spoke to King Gustaf in Royal Crypt King Gustaf's Room */ - MOGURA_00_T0, /* Blue L Kinstone Chest Open in Minish Woods <-> Hylia Cabin Digging Cave */ - MOGURA_00_T1, /* 50 Rupee Chest Open in Minish Woods Mole Cave */ - MOGURA_00_T2, /* Blue S Kinstone Chest Open in Minish Woods Mole Cave */ - MOGURA_01_T0, /* 50 Rupee Chest Open in Lake Hylia Middle Digging Cave */ - MOGURA_02_T0, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, Northeast Chest */ - MOGURA_02_T1, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, OoB */ - MOGURA_02_T2, /* 50 Shell Chest Open in Lake Hylia North Digging Cave, South top left Chest */ - MOGURA_02_T3, /* Blue L Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Left Chest */ - MOGURA_02_T4, /* Red 3 Prong Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Right Chest */ - MOGURA_02_T5, /* Red (> Kinstone Chest Open in Lake Hylia North Digging Cave, East Chest */ - MOGURA_02_T6, /* Red W Kinstone Chest Open in Lake Hylia North Digging Cave, South right Chest */ - MOGURA_02_T7, /* Blue S Kinstone Chest Open in Lake Hylia North Digging Cave, South left Chest */ - MOGURA_02_T8, - MOGURA_09_T0, /* 50 Shell Chest Open in Castor Wilds Digging Cave Left Chest */ - MOGURA_09_T1, /* Red W Kinstone Chest Open in Castor Wilds Digging Cave Right Chest */ - MOGURA_10_T0, /* Red W Kinstone Chest Open in Hyrule Town, Mole Cave Middle */ - MOGURA_10_T1, /* Red > Kinstone Chest Open in Hyrule Town, Mole Cave East */ - MOGURA_10_T2, /* Red 3 Prong Kinstone Chest Open in Hyrule Town, Mole Cave West */ - MOGURA_1c_T0, /* Obtained Heart Piece in Mt. Crenel, Mole Cave */ - MOGURA_21_r0, /* Red Rupee Collected in Eastern Hills, Mole Cave */ - MOGURA_27_T0, /* Blue L Kinstone Chest Open in Trilby Highlands, Mole Cave Left */ - MOGURA_27_T1, /* Red > Kinstone Chest Open in Trilby Highlands, Water Mole Cave */ - MOGURA_27_T2, /* Blue S Kinstone Chest Open in Trilby Highlands, Mole Cave Right */ - MOGURA_41_T0, /* 50 Shell Chest Open in Veil Falls West Digging Cave */ - MOGURA_41_T1, /* 50 Shell Chest Open in Veil Falls East Digging Cave */ - MOGURA_41_T2, /* 50 Rupee Chest Open in Veil Falls East Digging Cave */ - MOGURA_41_T3, /* Obtained Heart Piece in Veil Falls West Digging Cave */ - MOGURA_50_00, /* Obtained 50 Rupee in Fortress of Winds Entrance Hall East Corner */ - MOGURA_50_T0, /* Blue S Kinstone Chest Open in Fortress of Winds Entrance Hall West Corner */ - MOGURA_51_T0, /* Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_T1, /* Blue L Kinstone Chest Open in Fortress of Winds Entrance Center 2F */ - MOGURA_51_T2, /* Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Right Side 2F */ - MOGURA_51_00, /* Broke the 50 Rupee Pot in Fortress of Winds, Entrance Right Side 2F */ - MOGURA_51_01, /* Broke Mysterious Shell Pot in Fortress of Winds, Entrance Right Side 2F */ - MOGURA_51_02, /* Grabbed Top Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_03, /* Grabbed Top Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_04, /* Grabbed Bottom Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_05, /* Grabbed Bottom Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_06, /* Grabbed 2nd Blue Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_07, /* Grabbed Blue Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_51_08, /* Grabbed Green Rupee in Fortress of Winds Entrance Left Side 2F */ - MOGURA_52_00, /* Hit Button in Fortress of Winds Entrance Left Side 3F Button */ - MOGURA_52_T0, /* Red (> Kinstone Chest Open in Fortress of Winds Entrance Left Side 3F Button */ - MOGURA_52_T1, /* Red W Kinstone Chest Open in Fortress of Winds Entrance Right Side 3F Spike Chu */ - MOGURA_53_00, /* ??? in Fortress of Winds, Mole Mitts Room */ - MOGURA_53_T0, /* Mole Mitts Chest Open in Fortress of Winds, Mole Mitts Room */ - MOGURA_53_T1, /* 100 Rupee Chest Open in Fortress of Winds, Mole Mitts Room */ - MOGURA_53_WALK, /* ??? in Fortress of Winds, Mole Mitts Room */ - MOGURA_54_00, /* Hit Button in Fortress of Winds, Minish Hole Key Room */ - MOGURA_54_01, /* Obtained Key in Fortress of Winds, Minish Hole Key Room */ - MOGURA_54_02, /* Key Fallen in Fortress of Winds, Minish Hole Key Room */ - MOGURA_54_WALK, /* ??? in Fortress of Winds, Minish Hole Key Room */ - AMOS_00_00, /* Armos Switch Hit in Wind Ruins Entrance Armos 1 */ - AMOS_01_00, /* Armos Switch Hit in Wind Ruins Entrance Armos 2 */ - AMOS_02_00, /* Running Armos Switch Hit in Wind Ruins Running Armos, Running Armos */ - AMOS_03_00, /* Armos Switch Hit in Wind Ruins Running Armos, Left Armos */ - AMOS_04_00, /* Armos Switch Hit in Wind Ruins Running Armos, Middle Armos */ - AMOS_05_00, /* Armos Switch Hit in Wind Ruins Running Armos, Right Armos */ - AMOS_06_00, /* Armos Switch Hit in Wind Ruins Running Armos, Right Unused */ - AMOS_07_00, /* Armos Switch Hit in Wind Ruins Minish Grass Path */ - AMOS_08_00, /* Armos Switch Hit in Wind Ruins Entrance Unused */ - AMOS_09_00, /* Armos Switch Hit in Fortress of Winds, Right Side Key Armos 1 */ - AMOS_0A_00, /* Armos Switch Hit in Fortress of Winds, Right Side Key Armos 2 */ - AMOS_0B_00, - AMOS_0C_00, - AMOS_0D_00, - AMOS_0E_00, - AMOS_0F_00, - HARI_01_T0, /* 10 Shell Chest Open in Hyrule Town, Stockwell Shop Minish Roof */ - SEIIKI_STAINED_GLASS, /* Seen stained glass scene in Elemental Sanctuary */ - SEIIKI_ENTER, /* Ezlo talks about Sanctuary in Elemental Sanctuary */ - SEIIKI_SWORD_1ST, /* Ezlo talks about stone tablet in Elemental Sanctuary */ - SEIIKI_SWORD_2ND, /* Water Element on pedestal in Elemental Sanctuary */ - SEIIKI_SWORD_3RD, /* Ezlo talks after opening secret room in Elemental Sanctuary */ - SEIIKI_BUNSHIN, /* Ezlo talks after first time cloning in Elemental Sanctuary */ - BAGUZU_MORI_02_00, /* Obtained Heart Piece in Hyrule Town Schoolyard Minish Path */ - BAGUZU_MORI_02_T0, /* Red (> Kinstone Chest Open (Top left) in Hyrule Town Schoolyard Minish Path */ - BAGUZU_MORI_02_T1, /* Red 3 Prong Kinstone Chest Open (Top right) in Hyrule Town Schoolyard Minish Path */ - BAGUZU_MORI_02_T2, /* Red (> Kinstone Chest Open (Bottom right) in Hyrule Town Schoolyard Minish Path */ - CHIKATSURO_01_BW00, - SORA_10_H00, /* Obtained Heart Piece in Crenel Summit Beanstalk */ - SORA_11_H00, /* Obtained Heart Piece in Lake Hylia Beanstalk */ - SORA_11_T00, /* 200 Rupee Chest Open in Lake Hylia Beanstalk */ - SORA_11_T01, /* 200 Shell Chest Open in Lake Hylia Beanstalk */ - SORA_12_T00, /* Quiver Big Chest Open in Wind Ruins Beanstalk */ - SORA_13_H00, /* Obtained Heart Piece in Eastern Hills Beanstalk */ - SORA_13_T00, /* 200 Rupee Chest Open in Eastern Hills Beanstalk */ - SORA_13_T01, /* 200 Shell Chest Open in Eastern Hills Beanstalk */ - SORA_14_T00, /* Red (> Kinstone Chest Open in Southwest Hyrule Beanstalk */ - SORA_14_R00, /* Grabbed Top Left Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R01, /* Grabbed Top Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R02, /* Grabbed Top Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R03, /* Grabbed Top Row 4th Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R04, /* Grabbed Top Right Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R05, /* Grabbed Right Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R06, /* Grabbed Right Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R07, /* Grabbed Right Row 4th Red Rupee in Southwest Hyrule Beanstalk */ - IZUMIGARE_00_H00, /* Obtained Heart Piece in Castle Garden East Fountain Stairs */ - IZUMIGARE_00_H01, - SORA_10_R00, /* Grabbed Top Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R01, /* Grabbed Top Right Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R02, /* Grabbed Right Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R03, /* Grabbed Bottom Right Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R04, /* Grabbed Bottom Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R05, /* Grabbed Bottom Left Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R06, /* Grabbed Left Red Rupee in Crenel Summit Beanstalk */ - SORA_10_R07, /* Grabbed Top Left Red Rupee in Crenel Summit Beanstalk */ - SORA_14_R08, /* Grabbed Bottom Right Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R09, /* Grabbed Bottom Left Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0a, /* Grabbed Bottom Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0b, /* Grabbed Bottom Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0c, /* Grabbed Bottom Row 4th Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0d, /* Grabbed Left Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0e, /* Grabbed Left Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ - SORA_14_R0f, /* Grabbed Left Row 4th Red Rupee in Southwest Hyrule Beanstalk */ - KAKERA_TAKARA_B, /* Blue L Kinstone Chest Open in Mt. Crenel, Minish Raindrop Path */ - KAKERA_TAKARA_C, /* Blue S Kinstone Chest Open in Crenel Base, Mineral Water Minish Path */ - KAKERA_TAKARA_D, /* Red W Kinstone Chest Open in Hyrule Town, School Minish Path */ - KAKERA_TAKARA_F, /* Red 3 Prong Kinstone Chest Open in Lon Lon Ranch, Minish Path */ - KAKERA_TAKARA_G, /* 100 Rupee Chest Open in Minish Woods, Minish Path */ - KAKERA_TAKARA_H, /* 200 Shell Chest Open in Minish Path to Melari's Mine */ - KAKERA_TAKARA_I, /* Blue L Kinstone Chest Open in Lake Hylia Mayor's Cabin Minish Path */ - KAKERA_TAKARA_XXXX, - TESTMAP00_00, - TESTMAP01_00, - TESTMAP01_01, - TESTMAP02_00, - LV4_HAKA_08_T0, - LV4_HAKA_07_00, /* Door Open in Royal Crypt Mushroom Pit */ - LV4_HAKA_04_00, /* Left Key Revealed in Royal Crypt Key Block Room */ - LV4_HAKA_04_01, /* Right Key Revealed in Royal Crypt Key Block Room */ - LV4_HAKA_04_K0, /* Obtained Left Key in Royal Crypt Key Block Room */ - LV4_HAKA_04_K1, /* Obtained Right Key in Royal Crypt Key Block Room */ - LV4_HAKA_01_02, - LV4_HAKA_08_XX, - BAGUZU_MORI_03_H00, /* Obtained Heart Piece in Lon Lon Ranch Minish Path */ - MOGURAU_00_H00, - HARI_01_H00, - HARI_03_T00, /* Opened 100 rupee chest in Hyrule Town Bakery, minish attic */ - MACHI_CHIKA2_00_CAP_0, /* Ezlo talks about fountain in Hyrule Town Fountain (Power Bracelets) */ - MACHI_CHIKA2_11_CAP_0, /* Ezlo talks about Librari dropping them in Hyrule Town, Minish Flipper Cave */ - LV4_HAKA_08_CAP_0, /* Ezlo talks about Royal Crypt in Royal Crypt Entrance */ - BAGUZUIWA_02_CAP_0, /* Ezlo talks about raindrops in Mount Crenel Rainy Minish Path */ - MACHI_CHIKA2_01_CAP_0, - MACHI_CHIKA2_01_HK, /* Obtained Heart Piece in Hyrule Town Fountain (Power Bracelets) */ - LV4_HAKA_08_B0, /* Obtained Bomb Drop in Royal Crypt Entrance */ - LV4_HAKA_08_K0, /* Obtained Small Key in Royal Crypt Entrance */ - MAROYA_1ST, + MAROYA_TAKARA, /**< undocumented */ + MACHI_CHIKA_00_00, /**< Top Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_01, /**< Middle Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_02, /**< Bottom Rock In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_03, /**< Chest Pillar In Place in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA_00_T0, /**< 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle North */ + MACHI_CHIKA_00_T1, /**< 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle West */ + MACHI_CHIKA_00_T2, /**< Red 3 Prong Kinstone Chest Open in Hyrule Town, Well Sewer Puzzle East */ + MACHI_CHIKA_00_T3, /**< 100 Rupee Chest Open in Hyrule Town, Well Sewer Puzzle South */ + MACHI_CHIKA_00_T4, /**< 200 Rupee Pillar Chest Open in Hyrule Town, Well Sewer Puzzle */ + MACHI_CHIKA2_00_T0, /**< undocumented */ + MACHI_CHIKA2_01_T0, /**< undocumented */ + MACHI_CHIKA2_03_00, /**< undocumented */ + MACHI_CHIKA2_03_01, /**< Defeated Mulldozers in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_03_T0, /**< Power Bracelets Chest Open in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_04_T0, /**< 100 Rupee Chest Open in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_10_00, /**< Scissors Beetles Spawned in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_01, /**< Defeated Scissors Beetles in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_02, /**< Picked up 50 rupees hidden beneath waterfall in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_10_T0, /**< Flippers Chest Open in Hyrule Town Sewer Flippers Room */ + MACHI_CHIKA2_12_T0, /**< 100 Shell Chest Open in Hyrule Town Sewer Ice Chest Room */ + LV4_HAKA_05_T0, /**< Blue S Kinstone Chest Open in Royal Crypt Unused Block Room */ + LV4_HAKA_04_T0, /**< undocumented */ + LV4_HAKA_04_T1, /**< undocumented */ + LV4_HAKA_01_00, /**< Defeated Gibdos in Royal Crypt Gibdo Fight Room */ + LV4_HAKA_01_01, /**< undocumented */ + LV4_HAKA_03_00, /**< undocumented */ + LV4_HAKA_04_R0, /**< undocumented */ + LV4_HAKA_04_R1, /**< undocumented */ + LV4_HAKA_04_R2, /**< undocumented */ + LV4_HAKA_04_R3, /**< undocumented */ + LV4_HAKA_04_R4, /**< undocumented */ + LV4_HAKA_04_R5, /**< undocumented */ + LV4_HAKA_04_R6, /**< undocumented */ + LV4_HAKA_04_R8, /**< undocumented */ + LV4_HAKA_04_R9, /**< undocumented */ + LV4_HAKA_04_R10, /**< undocumented */ + LV4_HAKA_04_R11, /**< undocumented */ + LV4_HAKA_04_KB0, /**< Second Key Block Open in Royal Crypt Key Block Room */ + LV4_HAKA_04_KB1, /**< First Key Block Open in Royal Crypt Key Block Room */ + LV4_HAKA_05_H0, /**< undocumented */ + LV4_HAKA_05_H1, /**< undocumented */ + LV4_HAKA_05_H2, /**< undocumented */ + LV4_HAKA_05_H3, /**< undocumented */ + OUBO_02_BW0, /**< undocumented */ + OUBO_02_BW1, /**< undocumented */ + OUBO_06_BW0, /**< undocumented */ + OUBO_06_BW1, /**< undocumented */ + OUBO_07_ENTER, /**< undocumented */ + OUBO_KAKERA, /**< Spoke to King Gustaf in Royal Crypt King Gustaf's Room */ + MOGURA_00_T0, /**< Blue L Kinstone Chest Open in Minish Woods <-> Hylia Cabin Digging Cave */ + MOGURA_00_T1, /**< 50 Rupee Chest Open in Minish Woods Mole Cave */ + MOGURA_00_T2, /**< Blue S Kinstone Chest Open in Minish Woods Mole Cave */ + MOGURA_01_T0, /**< 50 Rupee Chest Open in Lake Hylia Middle Digging Cave */ + MOGURA_02_T0, /**< 50 Shell Chest Open in Lake Hylia North Digging Cave, Northeast Chest */ + MOGURA_02_T1, /**< 50 Shell Chest Open in Lake Hylia North Digging Cave, OoB */ + MOGURA_02_T2, /**< 50 Shell Chest Open in Lake Hylia North Digging Cave, South top left Chest */ + MOGURA_02_T3, /**< Blue L Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Left Chest */ + MOGURA_02_T4, /**< Red 3 Prong Kinstone Chest Open in Lake Hylia North Digging Cave, Northwest Right Chest */ + MOGURA_02_T5, /**< Red (> Kinstone Chest Open in Lake Hylia North Digging Cave, East Chest */ + MOGURA_02_T6, /**< Red W Kinstone Chest Open in Lake Hylia North Digging Cave, South right Chest */ + MOGURA_02_T7, /**< Blue S Kinstone Chest Open in Lake Hylia North Digging Cave, South left Chest */ + MOGURA_02_T8, /**< undocumented */ + MOGURA_09_T0, /**< 50 Shell Chest Open in Castor Wilds Digging Cave Left Chest */ + MOGURA_09_T1, /**< Red W Kinstone Chest Open in Castor Wilds Digging Cave Right Chest */ + MOGURA_10_T0, /**< Red W Kinstone Chest Open in Hyrule Town, Mole Cave Middle */ + MOGURA_10_T1, /**< Red > Kinstone Chest Open in Hyrule Town, Mole Cave East */ + MOGURA_10_T2, /**< Red 3 Prong Kinstone Chest Open in Hyrule Town, Mole Cave West */ + MOGURA_1c_T0, /**< Obtained Heart Piece in Mt. Crenel, Mole Cave */ + MOGURA_21_r0, /**< Red Rupee Collected in Eastern Hills, Mole Cave */ + MOGURA_27_T0, /**< Blue L Kinstone Chest Open in Trilby Highlands, Mole Cave Left */ + MOGURA_27_T1, /**< Red > Kinstone Chest Open in Trilby Highlands, Water Mole Cave */ + MOGURA_27_T2, /**< Blue S Kinstone Chest Open in Trilby Highlands, Mole Cave Right */ + MOGURA_41_T0, /**< 50 Shell Chest Open in Veil Falls West Digging Cave */ + MOGURA_41_T1, /**< 50 Shell Chest Open in Veil Falls East Digging Cave */ + MOGURA_41_T2, /**< 50 Rupee Chest Open in Veil Falls East Digging Cave */ + MOGURA_41_T3, /**< Obtained Heart Piece in Veil Falls West Digging Cave */ + MOGURA_50_00, /**< Obtained 50 Rupee in Fortress of Winds Entrance Hall East Corner */ + MOGURA_50_T0, /**< Blue S Kinstone Chest Open in Fortress of Winds Entrance Hall West Corner */ + MOGURA_51_T0, /**< Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_T1, /**< Blue L Kinstone Chest Open in Fortress of Winds Entrance Center 2F */ + MOGURA_51_T2, /**< Red 3 Prong Kinstone Chest Open in Fortress of Winds Entrance Right Side 2F */ + MOGURA_51_00, /**< Broke the 50 Rupee Pot in Fortress of Winds, Entrance Right Side 2F */ + MOGURA_51_01, /**< Broke Mysterious Shell Pot in Fortress of Winds, Entrance Right Side 2F */ + MOGURA_51_02, /**< Grabbed Top Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_03, /**< Grabbed Top Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_04, /**< Grabbed Bottom Left Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_05, /**< Grabbed Bottom Right Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_06, /**< Grabbed 2nd Blue Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_07, /**< Grabbed Blue Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_51_08, /**< Grabbed Green Rupee in Fortress of Winds Entrance Left Side 2F */ + MOGURA_52_00, /**< Hit Button in Fortress of Winds Entrance Left Side 3F Button */ + MOGURA_52_T0, /**< Red (> Kinstone Chest Open in Fortress of Winds Entrance Left Side 3F Button */ + MOGURA_52_T1, /**< Red W Kinstone Chest Open in Fortress of Winds Entrance Right Side 3F Spike Chu */ + MOGURA_53_00, /**< ??? in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_T0, /**< Mole Mitts Chest Open in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_T1, /**< 100 Rupee Chest Open in Fortress of Winds, Mole Mitts Room */ + MOGURA_53_WALK, /**< ??? in Fortress of Winds, Mole Mitts Room */ + MOGURA_54_00, /**< Hit Button in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_01, /**< Obtained Key in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_02, /**< Key Fallen in Fortress of Winds, Minish Hole Key Room */ + MOGURA_54_WALK, /**< ??? in Fortress of Winds, Minish Hole Key Room */ + AMOS_00_00, /**< Armos Switch Hit in Wind Ruins Entrance Armos 1 */ + AMOS_01_00, /**< Armos Switch Hit in Wind Ruins Entrance Armos 2 */ + AMOS_02_00, /**< Running Armos Switch Hit in Wind Ruins Running Armos, Running Armos */ + AMOS_03_00, /**< Armos Switch Hit in Wind Ruins Running Armos, Left Armos */ + AMOS_04_00, /**< Armos Switch Hit in Wind Ruins Running Armos, Middle Armos */ + AMOS_05_00, /**< Armos Switch Hit in Wind Ruins Running Armos, Right Armos */ + AMOS_06_00, /**< Armos Switch Hit in Wind Ruins Running Armos, Right Unused */ + AMOS_07_00, /**< Armos Switch Hit in Wind Ruins Minish Grass Path */ + AMOS_08_00, /**< Armos Switch Hit in Wind Ruins Entrance Unused */ + AMOS_09_00, /**< Armos Switch Hit in Fortress of Winds, Right Side Key Armos 1 */ + AMOS_0A_00, /**< Armos Switch Hit in Fortress of Winds, Right Side Key Armos 2 */ + AMOS_0B_00, /**< undocumented */ + AMOS_0C_00, /**< undocumented */ + AMOS_0D_00, /**< undocumented */ + AMOS_0E_00, /**< undocumented */ + AMOS_0F_00, /**< undocumented */ + HARI_01_T0, /**< 10 Shell Chest Open in Hyrule Town, Stockwell Shop Minish Roof */ + SEIIKI_STAINED_GLASS, /**< Seen stained glass scene in Elemental Sanctuary */ + SEIIKI_ENTER, /**< Ezlo talks about Sanctuary in Elemental Sanctuary */ + SEIIKI_SWORD_1ST, /**< Ezlo talks about stone tablet in Elemental Sanctuary */ + SEIIKI_SWORD_2ND, /**< Water Element on pedestal in Elemental Sanctuary */ + SEIIKI_SWORD_3RD, /**< Ezlo talks after opening secret room in Elemental Sanctuary */ + SEIIKI_BUNSHIN, /**< Ezlo talks after first time cloning in Elemental Sanctuary */ + BAGUZU_MORI_02_00, /**< Obtained Heart Piece in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T0, /**< Red (> Kinstone Chest Open (Top left) in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T1, /**< Red 3 Prong Kinstone Chest Open (Top right) in Hyrule Town Schoolyard Minish Path */ + BAGUZU_MORI_02_T2, /**< Red (> Kinstone Chest Open (Bottom right) in Hyrule Town Schoolyard Minish Path */ + CHIKATSURO_01_BW00, /**< undocumented */ + SORA_10_H00, /**< Obtained Heart Piece in Crenel Summit Beanstalk */ + SORA_11_H00, /**< Obtained Heart Piece in Lake Hylia Beanstalk */ + SORA_11_T00, /**< 200 Rupee Chest Open in Lake Hylia Beanstalk */ + SORA_11_T01, /**< 200 Shell Chest Open in Lake Hylia Beanstalk */ + SORA_12_T00, /**< Quiver Big Chest Open in Wind Ruins Beanstalk */ + SORA_13_H00, /**< Obtained Heart Piece in Eastern Hills Beanstalk */ + SORA_13_T00, /**< 200 Rupee Chest Open in Eastern Hills Beanstalk */ + SORA_13_T01, /**< 200 Shell Chest Open in Eastern Hills Beanstalk */ + SORA_14_T00, /**< Red (> Kinstone Chest Open in Southwest Hyrule Beanstalk */ + SORA_14_R00, /**< Grabbed Top Left Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R01, /**< Grabbed Top Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R02, /**< Grabbed Top Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R03, /**< Grabbed Top Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R04, /**< Grabbed Top Right Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R05, /**< Grabbed Right Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R06, /**< Grabbed Right Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R07, /**< Grabbed Right Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + IZUMIGARE_00_H00, /**< Obtained Heart Piece in Castle Garden East Fountain Stairs */ + IZUMIGARE_00_H01, /**< undocumented */ + SORA_10_R00, /**< Grabbed Top Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R01, /**< Grabbed Top Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R02, /**< Grabbed Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R03, /**< Grabbed Bottom Right Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R04, /**< Grabbed Bottom Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R05, /**< Grabbed Bottom Left Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R06, /**< Grabbed Left Red Rupee in Crenel Summit Beanstalk */ + SORA_10_R07, /**< Grabbed Top Left Red Rupee in Crenel Summit Beanstalk */ + SORA_14_R08, /**< Grabbed Bottom Right Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R09, /**< Grabbed Bottom Left Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0a, /**< Grabbed Bottom Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0b, /**< Grabbed Bottom Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0c, /**< Grabbed Bottom Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0d, /**< Grabbed Left Row 2nd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0e, /**< Grabbed Left Row 3rd Red Rupee in Southwest Hyrule Beanstalk */ + SORA_14_R0f, /**< Grabbed Left Row 4th Red Rupee in Southwest Hyrule Beanstalk */ + KAKERA_TAKARA_B, /**< Blue L Kinstone Chest Open in Mt. Crenel, Minish Raindrop Path */ + KAKERA_TAKARA_C, /**< Blue S Kinstone Chest Open in Crenel Base, Mineral Water Minish Path */ + KAKERA_TAKARA_D, /**< Red W Kinstone Chest Open in Hyrule Town, School Minish Path */ + KAKERA_TAKARA_F, /**< Red 3 Prong Kinstone Chest Open in Lon Lon Ranch, Minish Path */ + KAKERA_TAKARA_G, /**< 100 Rupee Chest Open in Minish Woods, Minish Path */ + KAKERA_TAKARA_H, /**< 200 Shell Chest Open in Minish Path to Melari's Mine */ + KAKERA_TAKARA_I, /**< Blue L Kinstone Chest Open in Lake Hylia Mayor's Cabin Minish Path */ + KAKERA_TAKARA_XXXX, /**< undocumented */ + TESTMAP00_00, /**< undocumented */ + TESTMAP01_00, /**< undocumented */ + TESTMAP01_01, /**< undocumented */ + TESTMAP02_00, /**< undocumented */ + LV4_HAKA_08_T0, /**< undocumented */ + LV4_HAKA_07_00, /**< Door Open in Royal Crypt Mushroom Pit */ + LV4_HAKA_04_00, /**< Left Key Revealed in Royal Crypt Key Block Room */ + LV4_HAKA_04_01, /**< Right Key Revealed in Royal Crypt Key Block Room */ + LV4_HAKA_04_K0, /**< Obtained Left Key in Royal Crypt Key Block Room */ + LV4_HAKA_04_K1, /**< Obtained Right Key in Royal Crypt Key Block Room */ + LV4_HAKA_01_02, /**< undocumented */ + LV4_HAKA_08_XX, /**< undocumented */ + BAGUZU_MORI_03_H00, /**< Obtained Heart Piece in Lon Lon Ranch Minish Path */ + MOGURAU_00_H00, /**< undocumented */ + HARI_01_H00, /**< undocumented */ + HARI_03_T00, /**< Opened 100 rupee chest in Hyrule Town Bakery, minish attic */ + MACHI_CHIKA2_00_CAP_0, /**< Ezlo talks about fountain in Hyrule Town Fountain (Power Bracelets) */ + MACHI_CHIKA2_11_CAP_0, /**< Ezlo talks about Librari dropping them in Hyrule Town, Minish Flipper Cave */ + LV4_HAKA_08_CAP_0, /**< Ezlo talks about Royal Crypt in Royal Crypt Entrance */ + BAGUZUIWA_02_CAP_0, /**< Ezlo talks about raindrops in Mount Crenel Rainy Minish Path */ + MACHI_CHIKA2_01_CAP_0, /**< undocumented */ + MACHI_CHIKA2_01_HK, /**< Obtained Heart Piece in Hyrule Town Fountain (Power Bracelets) */ + LV4_HAKA_08_B0, /**< Obtained Bomb Drop in Royal Crypt Entrance */ + LV4_HAKA_08_K0, /**< Obtained Small Key in Royal Crypt Entrance */ + MAROYA_1ST, /**< undocumented */ #ifndef EU - MACHI_CHIKA2_10_CAP_0, + MACHI_CHIKA2_10_CAP_0, /**< undocumented */ #endif #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - KS_C02, + KS_C02, /**< undocumented */ #endif END_3, } LocalFlags3; typedef enum { BEGIN_4, - DOUKUTU_00_T0, /* Opened the left 50 rupee chest in Mount Crenel, Grayblade's dojo */ - DOUKUTU_00_T1, /* Opened the right 50 rupee chest in Mount Crenel, Grayblade's dojo */ - DOUKUTU_05_EVENT, /* Lit up Grimblade's Torches in Hyrule Castle Garden. Grimblade */ - SOUGEN_DOUKUTU_00_T0, /* Red W Kinstone Chest Open in Magical Boomerang Cave (top left) */ - SOUGEN_DOUKUTU_00_T1, /* Red > Kinstone Chest Open in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_T2, /* Red 3 Prong Kinstone Chest Open in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_T3, /* 200 Shell Chest Open in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_T4, /* Large Chest Opened in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_SW0, /* Top Left Button Pressed in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_SW1, /* Top Right Button Pressed in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_SW2, /* Bottom Left Button Pressed in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_00_SW3, /* Bottom Right Button Pressed in Magical Boomerang Cave */ - SOUGEN_DOUKUTU_07_T0, /* Red 3 Prong Kinstone Chest Open in Trilby Highlands Keese Chest Cave */ - SOUGEN_DOUKUTU_0B_T0, /* 200 Shell Chest Open in Hyrule Town, Waterfall Cave */ - SOUGEN_DOUKUTU_0C_T0, /* 50 Rupee Chest Open in Lon Lon Ranch Cave */ - SOUGEN_DOUKUTU_0C_BW00, /* Wall to secret room blown open in Lon Lon Ranch Cave */ - SOUGEN_DOUKUTU_0D_00, /* Lit torches in Lon Lon Ranch Cave */ - SOUGEN_DOUKUTU_0D_T0, /* Blue S Kinstone Chest Open in Lon Lon Ranch Cave */ - SOUGEN_DOUKUTU_0E_BW00, /* Wall to Bottle Business Scrub blown open in West Hyrule Underground */ - SOUGEN_DOUKUTU_0F_T00, /* Opened the wallet chest in the opened pool cave in Lon Lon Ranch Pool cave */ - SOUGEN_DOUKUTU_10_R00, /* Grabbed Top Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R01, /* Grabbed Top Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R02, /* Grabbed Top Middle Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R03, /* Grabbed Top Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R04, /* Grabbed Top Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R05, /* Grabbed Leftmost Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R06, /* Grabbed Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R07, /* Grabbed Middle Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R08, /* Grabbed Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R09, /* Grabbed Rightmost Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0A, /* Grabbed Bottom Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0B, /* Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0C, /* Grabbed Bottom Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0D, /* Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_10_R0E, /* Grabbed Bottom Right Blue Rupee in Rupee Cave, South Hyrule Field */ - SOUGEN_DOUKUTU_11_R00, /* Grabbed Top Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R01, /* Grabbed Top Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R02, /* Grabbed Top Middle Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R03, /* Grabbed Top Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R04, /* Grabbed Top Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R05, /* Grabbed Leftmost Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R06, /* Grabbed Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R07, /* Grabbed Middle Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R08, /* Grabbed Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R09, /* Grabbed Rightmost Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0A, /* Grabbed Bottom Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0B, /* Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0C, /* Grabbed Bottom Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0D, /* Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_11_R0E, /* Grabbed Bottom Right Blue Rupee in Rupee Cave, Trilby Highlands */ - SOUGEN_DOUKUTU_13_T0, /* 20 Shell Chest Open in Hyrule Field Cave, north from Minish Woods Exit */ - HIKYOU_DOUKUTU0_00_T0, /* Gold Kinstone Chest Open in Castor Wilds South Cave */ - HIKYOU_DOUKUTU0_01_T0, - HIKYOU_DOUKUTU0_01_T1, /* Gold Kinstone Chest Open in Castor Wilds North Cave */ - HIKYOU_DOUKUTU0_02_KAIGARA, /* Blue S Kinstone Chest Open in Wind Ruins Cave */ - HIKYOU_DOUKUTU0_04_H00, /* Obtained Heart Piece in Castor Wilds North East Cave */ - HIKYOU_DOUKUTU1_00_00, /* Defeated Darknut in Castor Wilds */ - HIKYOU_DOUKUTU1_00_T0, /* Gold Kinstone Chest Open in Castor Wilds Darknut */ - YAMADOUKUTU_01_00, /* Rock pushed to Hole in Mount Crenel Pillar Cave */ - YAMADOUKUTU_02_00, /* Bridge Button Activated in Mount Crenel Bridge Cave */ - YAMADOUKUTU_03_T0, /* Blue S Kinstone Chest Open in Mount Crenel Pillar Cave */ - YAMADOUKUTU_06_H0, - YAMADOUKUTU_07_T0, /* Blue L Kinstone Chest Open in Crenel Mines" cave */ - YAMADOUKUTU_08_h0, /* Obtained Heart Piece in Mount Crenel Heart Piece Cave */ - YAMADOUKUTU_08_h1, /* Blue S Kinstone Chest Open in Mount Crenel Heart Piece Cave */ - YAMADOUKUTU_08_h2, /* 50 Rupee Chest Open in Mount Crenel Heart Piece Cave */ - YAMADOUKUTU_09_r0, /* Grabbed Left Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ - YAMADOUKUTU_09_r1, /* Grabbed Middle Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ - YAMADOUKUTU_09_r2, /* Grabbed Right Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ - YAMADOUKUTU_0F_00, /* Talk to the Crenel Base Hint Scrub in Mount Crenel Base Entrance Cave */ - YAMADOUKUTU_10_00, /* Open the door leading to Grayblade's dojo in Mount Crenel, Dojo Cave */ - SUIGEN_DOUKUTU_00_T0, /* 100 Rupee Chest Open in Veil Falls Helmasaur Keese Cave 2F */ - SUIGEN_DOUKUTU_01_BW00, /* Wall to chest room blown open in Veil Falls Helmasaur Keese Cave 1F */ - SUIGEN_DOUKUTU_02_T0, /* 50 Shell Chest Open in Veil Falls Helmasaur Keese Cave 1F */ - SUIGEN_DOUKUTU_04_BW00, /* Wall to secret area blown open in Veil Falls Entrance Cave */ - SUIGEN_DOUKUTU_05_T0, /* 50 Shell Chest Open in Veil Falls Entrance Cave Secret Chest */ - SUIGEN_DOUKUTU_08_R0, /* Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R1, /* Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R2, /* Grabbed Red Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R3, /* Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R4, /* Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ - SUIGEN_DOUKUTU_08_R5, /* Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ - SUIGEN_DOUKUTU_08_R6, /* Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ - SUIGEN_DOUKUTU_08_R7, /* Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ - SUIGEN_DOUKUTU_08_R8, /* Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ - SUIGEN_DOUKUTU_08_R9, /* Grabbed Underwater Left Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ - SUIGEN_DOUKUTU_08_R10, /* Grabbed Underwater Right Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ - SUIGEN_DOUKUTU_08_R11, /* Grabbed Underwater Left Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ - SUIGEN_DOUKUTU_08_R12, /* Grabbed Underwater Right Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ - SUIGEN_DOUKUTU_08_R13, /* Grabbed Underwater Left Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ - SUIGEN_DOUKUTU_08_R14, /* Grabbed Underwater Right Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ - SUIGEN_DOUKUTU_09_H00, /* Obtained Heart Piece in Veil Falls Top Left Waterfall Cave */ - HAKA_DOUKUTU_00_H0, /* Obtained Heart Piece in Royal Valley Clone Block Grave */ - HAKA_DOUKUTU_01_T0, /* 100 Shell Chest Open in Royal Valley, Gina Grave */ - HAKA_DOUKUTU_01_GEENE, /* Talked to Gina in Royal Valley, Gina Grave */ - KOBITO_DOUKUTU_00_T0, /* Blue L Kinstone Chest Open in Mount Crenel Minish Pesto Cave */ - KOBITO_DOUKUTU_02_T0, - KOBITO_DOUKUTU_05_T0, /* Red 3 Prong Kinstone Chest Open in Minish Woods North Minish Cave */ - KOBITO_SHIRO_DOUKUTU_00_H0, - KOBITO_SHIRO_DOUKUTU_00_T0, /* 50 Shell Chest Open in Castle Garden East Minish Cave */ - KOBITO_SHIRO_DOUKUTU_01_T0, /* 50 Shell Chest Open in Castle Garden West Minish Cave */ - KOBITO_URA_DOUKUTU_00_T0, /* 100 Shell Chest Open in Castle Garden East Minish Cave (Unused) */ - KOBITO_URA_DOUKUTU_01_T0, /* 100 Shell Chest Open in Castle Garden West Minish Cave (Unused) */ - GORON_DOUKUTU_APPEAR, /* Goron Figurine Available in Figurine Pool in Lon Lon Ranch, Goron Cave */ - KOBITO_DOUKUTU_03_T0, - HIKYOU_DOUKUTU0_01_AKINDO, /* Stunned 30 Arrow Business Scrub in Castor Wilds North Cave */ - SOUGEN_DOUKUTU_14_AKINDO, /* Stunned Bottle Business Scrub in West Hyrule Underground */ - SOUGEN_DOUKUTU_17_AKINDO, /* Stunned Kinstone Business Scrub in Minish Woods, Tree House */ - YAMADOUKUTU_04_AKINDO, /* Stunned Grip Ring Business Scrub in Mount Crenel Far Right Cave */ - YAMADOUKUTU_0D_AKINDO, /* Stunned Bomb Business Scrub in Mount Crenel Base */ - YAMADOUKUTU_0F_AKINDO, /* Stunned Hint Scrub in Mount Crenel Base */ - YAMADOUKUTU_0E_SENNIN, /* Visited Crenel Hermit's Cave in Mt. Crenel */ - KOBITO_DOUKUTU_04_T0, - KOBITO_DOUKUTU_07_T0, /* Red W Kinstone Chest Open in Lake Hylia North Minish Cave */ - KOBITO_DOUKUTU_09_T0, /* Blue L Kinstone Chest Open in Minish Woods Middle Minish Hole */ - KOBITO_DOUKUTU_09_T1, /* Blue S Kinstone Chest Open in Minish Woods Right Minish Hole */ - KOBITO_DOUKUTU_09_T2, /* Red 3 Prong Kinstone Chest Open in Minish Woods Left Minish Hole */ - GORON_DOUKUTU_01_T0, /* Bottle Chest Open in Lon Lon Ranch, Goron Cave */ - GORON_DOUKUTU_01_T1, /* 200 Rupee Chest Open in Lon Lon Ranch, Goron Cave */ - GORON_DOUKUTU_01_T2, - GORON_DOUKUTU_01_T3, - KOBITO_DOUKUTU_09_H0, /* Obtained Heart Piece in Minish Woods Left Minish Hole */ - SOUGEN_DOUKUTU_15_H0, /* Obtained Heart Piece in North Hyrule Field, Western Cave */ - KOBITO_DOUKUTU_01_H00, - YAMADOUKUTU_05_H00, /* Obtained Heart Piece in Mount Crenel Fairy Heart Piece Cave */ - KOBITO_DOUKUTU_03_H00, /* Obtained Heart Piece in Wind Ruins Minish Cave */ - DOUKUTU_04_H00, /* Obtained Heart Piece in Castor Wilds, Swiftblade I grave */ - DOUKUTU_00_H00, /* Obtained Heart Piece in Mount Crenel, Grayblade's dojo */ - KOBITO_DOUKUTU_04_H00, /* Obtained Heart Piece in South Hyrule Field, Water Minish Cave */ - DOUKUTU_06_H00, /* Obtained Heart Piece in Lake Hylia, Waveblade's Room */ - DOUKUTU_05_H00, /* Obtained Heart Piece in Hyrule Castle Garden, Grimblade's Room */ - KOBITO_DOUKUTU_02_H00, /* Obtained Heart Piece in Castor Wilds Southeast Water Cave */ - KOBITO_DOUKUTU_01_T0, /* Red (> Kinstone Chest Open in Castor Wilds Southeast Water Cave Left Chest */ - YAMADOUKUTU_04_CAP_0, /* Ezlo talks about Helmasaurs in Mount Crenel Base Cave */ + DOUKUTU_00_T0, /**< Opened the left 50 rupee chest in Mount Crenel, Grayblade's dojo */ + DOUKUTU_00_T1, /**< Opened the right 50 rupee chest in Mount Crenel, Grayblade's dojo */ + DOUKUTU_05_EVENT, /**< Lit up Grimblade's Torches in Hyrule Castle Garden. Grimblade */ + SOUGEN_DOUKUTU_00_T0, /**< Red W Kinstone Chest Open in Magical Boomerang Cave (top left) */ + SOUGEN_DOUKUTU_00_T1, /**< Red > Kinstone Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T2, /**< Red 3 Prong Kinstone Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T3, /**< 200 Shell Chest Open in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_T4, /**< Large Chest Opened in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW0, /**< Top Left Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW1, /**< Top Right Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW2, /**< Bottom Left Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_00_SW3, /**< Bottom Right Button Pressed in Magical Boomerang Cave */ + SOUGEN_DOUKUTU_07_T0, /**< Red 3 Prong Kinstone Chest Open in Trilby Highlands Keese Chest Cave */ + SOUGEN_DOUKUTU_0B_T0, /**< 200 Shell Chest Open in Hyrule Town, Waterfall Cave */ + SOUGEN_DOUKUTU_0C_T0, /**< 50 Rupee Chest Open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0C_BW00, /**< Wall to secret room blown open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0D_00, /**< Lit torches in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0D_T0, /**< Blue S Kinstone Chest Open in Lon Lon Ranch Cave */ + SOUGEN_DOUKUTU_0E_BW00, /**< Wall to Bottle Business Scrub blown open in West Hyrule Underground */ + SOUGEN_DOUKUTU_0F_T00, /**< Opened the wallet chest in the opened pool cave in Lon Lon Ranch Pool cave */ + SOUGEN_DOUKUTU_10_R00, /**< Grabbed Top Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R01, /**< Grabbed Top Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R02, /**< Grabbed Top Middle Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R03, /**< Grabbed Top Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R04, /**< Grabbed Top Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R05, /**< Grabbed Leftmost Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R06, /**< Grabbed Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R07, /**< Grabbed Middle Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R08, /**< Grabbed Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R09, /**< Grabbed Rightmost Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0A, /**< Grabbed Bottom Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0B, /**< Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0C, /**< Grabbed Bottom Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0D, /**< Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_10_R0E, /**< Grabbed Bottom Right Blue Rupee in Rupee Cave, South Hyrule Field */ + SOUGEN_DOUKUTU_11_R00, /**< Grabbed Top Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R01, /**< Grabbed Top Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R02, /**< Grabbed Top Middle Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R03, /**< Grabbed Top Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R04, /**< Grabbed Top Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R05, /**< Grabbed Leftmost Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R06, /**< Grabbed Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R07, /**< Grabbed Middle Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R08, /**< Grabbed Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R09, /**< Grabbed Rightmost Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0A, /**< Grabbed Bottom Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0B, /**< Grabbed Bottom Middle Left Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0C, /**< Grabbed Bottom Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0D, /**< Grabbed Bottom Middle Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_11_R0E, /**< Grabbed Bottom Right Blue Rupee in Rupee Cave, Trilby Highlands */ + SOUGEN_DOUKUTU_13_T0, /**< 20 Shell Chest Open in Hyrule Field Cave, north from Minish Woods Exit */ + HIKYOU_DOUKUTU0_00_T0, /**< Gold Kinstone Chest Open in Castor Wilds South Cave */ + HIKYOU_DOUKUTU0_01_T0, /**< undocumented */ + HIKYOU_DOUKUTU0_01_T1, /**< Gold Kinstone Chest Open in Castor Wilds North Cave */ + HIKYOU_DOUKUTU0_02_KAIGARA, /**< Blue S Kinstone Chest Open in Wind Ruins Cave */ + HIKYOU_DOUKUTU0_04_H00, /**< Obtained Heart Piece in Castor Wilds North East Cave */ + HIKYOU_DOUKUTU1_00_00, /**< Defeated Darknut in Castor Wilds */ + HIKYOU_DOUKUTU1_00_T0, /**< Gold Kinstone Chest Open in Castor Wilds Darknut */ + YAMADOUKUTU_01_00, /**< Rock pushed to Hole in Mount Crenel Pillar Cave */ + YAMADOUKUTU_02_00, /**< Bridge Button Activated in Mount Crenel Bridge Cave */ + YAMADOUKUTU_03_T0, /**< Blue S Kinstone Chest Open in Mount Crenel Pillar Cave */ + YAMADOUKUTU_06_H0, /**< undocumented */ + YAMADOUKUTU_07_T0, /**< Blue L Kinstone Chest Open in Crenel Mines" cave */ + YAMADOUKUTU_08_h0, /**< Obtained Heart Piece in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_08_h1, /**< Blue S Kinstone Chest Open in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_08_h2, /**< 50 Rupee Chest Open in Mount Crenel Heart Piece Cave */ + YAMADOUKUTU_09_r0, /**< Grabbed Left Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_09_r1, /**< Grabbed Middle Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_09_r2, /**< Grabbed Right Blue Rupee in Mount Crenel Fairy Blue Rupee Cave */ + YAMADOUKUTU_0F_00, /**< Talk to the Crenel Base Hint Scrub in Mount Crenel Base Entrance Cave */ + YAMADOUKUTU_10_00, /**< Open the door leading to Grayblade's dojo in Mount Crenel, Dojo Cave */ + SUIGEN_DOUKUTU_00_T0, /**< 100 Rupee Chest Open in Veil Falls Helmasaur Keese Cave 2F */ + SUIGEN_DOUKUTU_01_BW00, /**< Wall to chest room blown open in Veil Falls Helmasaur Keese Cave 1F */ + SUIGEN_DOUKUTU_02_T0, /**< 50 Shell Chest Open in Veil Falls Helmasaur Keese Cave 1F */ + SUIGEN_DOUKUTU_04_BW00, /**< Wall to secret area blown open in Veil Falls Entrance Cave */ + SUIGEN_DOUKUTU_05_T0, /**< 50 Shell Chest Open in Veil Falls Entrance Cave Secret Chest */ + SUIGEN_DOUKUTU_08_R0, /**< Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R1, /**< Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R2, /**< Grabbed Red Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R3, /**< Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R4, /**< Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Top Diamond) */ + SUIGEN_DOUKUTU_08_R5, /**< Grabbed Top Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R6, /**< Grabbed Left Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R7, /**< Grabbed Right Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R8, /**< Grabbed Bottom Green Rupee in Veil Falls Water Rupee Path (Bottom Diamond) */ + SUIGEN_DOUKUTU_08_R9, /**< Grabbed Underwater Left Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ + SUIGEN_DOUKUTU_08_R10, /**< Grabbed Underwater Right Green Rupee in Veil Falls Water Rupee Path (Top Pool) */ + SUIGEN_DOUKUTU_08_R11, /**< Grabbed Underwater Left Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ + SUIGEN_DOUKUTU_08_R12, /**< Grabbed Underwater Right Blue Rupee in Veil Falls Water Rupee Path (Middle Pool) */ + SUIGEN_DOUKUTU_08_R13, /**< Grabbed Underwater Left Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ + SUIGEN_DOUKUTU_08_R14, /**< Grabbed Underwater Right Red Rupee in Veil Falls Water Rupee Path (Bottom Pool) */ + SUIGEN_DOUKUTU_09_H00, /**< Obtained Heart Piece in Veil Falls Top Left Waterfall Cave */ + HAKA_DOUKUTU_00_H0, /**< Obtained Heart Piece in Royal Valley Clone Block Grave */ + HAKA_DOUKUTU_01_T0, /**< 100 Shell Chest Open in Royal Valley, Gina Grave */ + HAKA_DOUKUTU_01_GEENE, /**< Talked to Gina in Royal Valley, Gina Grave */ + KOBITO_DOUKUTU_00_T0, /**< Blue L Kinstone Chest Open in Mount Crenel Minish Pesto Cave */ + KOBITO_DOUKUTU_02_T0, /**< undocumented */ + KOBITO_DOUKUTU_05_T0, /**< Red 3 Prong Kinstone Chest Open in Minish Woods North Minish Cave */ + KOBITO_SHIRO_DOUKUTU_00_H0, /**< undocumented */ + KOBITO_SHIRO_DOUKUTU_00_T0, /**< 50 Shell Chest Open in Castle Garden East Minish Cave */ + KOBITO_SHIRO_DOUKUTU_01_T0, /**< 50 Shell Chest Open in Castle Garden West Minish Cave */ + KOBITO_URA_DOUKUTU_00_T0, /**< 100 Shell Chest Open in Castle Garden East Minish Cave (Unused) */ + KOBITO_URA_DOUKUTU_01_T0, /**< 100 Shell Chest Open in Castle Garden West Minish Cave (Unused) */ + GORON_DOUKUTU_APPEAR, /**< Goron Figurine Available in Figurine Pool in Lon Lon Ranch, Goron Cave */ + KOBITO_DOUKUTU_03_T0, /**< undocumented */ + HIKYOU_DOUKUTU0_01_AKINDO, /**< Stunned 30 Arrow Business Scrub in Castor Wilds North Cave */ + SOUGEN_DOUKUTU_14_AKINDO, /**< Stunned Bottle Business Scrub in West Hyrule Underground */ + SOUGEN_DOUKUTU_17_AKINDO, /**< Stunned Kinstone Business Scrub in Minish Woods, Tree House */ + YAMADOUKUTU_04_AKINDO, /**< Stunned Grip Ring Business Scrub in Mount Crenel Far Right Cave */ + YAMADOUKUTU_0D_AKINDO, /**< Stunned Bomb Business Scrub in Mount Crenel Base */ + YAMADOUKUTU_0F_AKINDO, /**< Stunned Hint Scrub in Mount Crenel Base */ + YAMADOUKUTU_0E_SENNIN, /**< Visited Crenel Hermit's Cave in Mt. Crenel */ + KOBITO_DOUKUTU_04_T0, /**< undocumented */ + KOBITO_DOUKUTU_07_T0, /**< Red W Kinstone Chest Open in Lake Hylia North Minish Cave */ + KOBITO_DOUKUTU_09_T0, /**< Blue L Kinstone Chest Open in Minish Woods Middle Minish Hole */ + KOBITO_DOUKUTU_09_T1, /**< Blue S Kinstone Chest Open in Minish Woods Right Minish Hole */ + KOBITO_DOUKUTU_09_T2, /**< Red 3 Prong Kinstone Chest Open in Minish Woods Left Minish Hole */ + GORON_DOUKUTU_01_T0, /**< Bottle Chest Open in Lon Lon Ranch, Goron Cave */ + GORON_DOUKUTU_01_T1, /**< 200 Rupee Chest Open in Lon Lon Ranch, Goron Cave */ + GORON_DOUKUTU_01_T2, /**< undocumented */ + GORON_DOUKUTU_01_T3, /**< undocumented */ + KOBITO_DOUKUTU_09_H0, /**< Obtained Heart Piece in Minish Woods Left Minish Hole */ + SOUGEN_DOUKUTU_15_H0, /**< Obtained Heart Piece in North Hyrule Field, Western Cave */ + KOBITO_DOUKUTU_01_H00, /**< undocumented */ + YAMADOUKUTU_05_H00, /**< Obtained Heart Piece in Mount Crenel Fairy Heart Piece Cave */ + KOBITO_DOUKUTU_03_H00, /**< Obtained Heart Piece in Wind Ruins Minish Cave */ + DOUKUTU_04_H00, /**< Obtained Heart Piece in Castor Wilds, Swiftblade I grave */ + DOUKUTU_00_H00, /**< Obtained Heart Piece in Mount Crenel, Grayblade's dojo */ + KOBITO_DOUKUTU_04_H00, /**< Obtained Heart Piece in South Hyrule Field, Water Minish Cave */ + DOUKUTU_06_H00, /**< Obtained Heart Piece in Lake Hylia, Waveblade's Room */ + DOUKUTU_05_H00, /**< Obtained Heart Piece in Hyrule Castle Garden, Grimblade's Room */ + KOBITO_DOUKUTU_02_H00, /**< Obtained Heart Piece in Castor Wilds Southeast Water Cave */ + KOBITO_DOUKUTU_01_T0, /**< Red (> Kinstone Chest Open in Castor Wilds Southeast Water Cave Left Chest */ + YAMADOUKUTU_04_CAP_0, /**< Ezlo talks about Helmasaurs in Mount Crenel Base Cave */ #if !defined(EU) && !defined(JP) && !defined(DEMO_JP) - KS_B06, - KS_B15, - KS_B01, - KS_B12, - KS_C12, - KS_C37, + KS_B06, /**< undocumented */ + KS_B15, /**< undocumented */ + KS_B01, /**< undocumented */ + KS_B12, /**< undocumented */ + KS_C12, /**< undocumented */ + KS_C37, /**< undocumented */ #endif END_4, } LocalFlags4; typedef enum { BEGIN_5, - LV1_00_WALK, /* Visited Room 13 in Deepwood Shrine 13 (Madderpillar) */ - LV1_01_WALK, /* Visited Room 12 in Deepwood Shrine 12 (To Madderpillar) */ - LV1_02_WALK, /* Visited Room 11 in Deepwood Shrine 11 (Stairs to B2) */ - LV1_03_WALK, /* Visited Room 6 in Deepwood Shrine 6 (Pressure Button Bridge) */ - LV1_04_WALK, /* Visited Room 7 in Deepwood Shrine 7 (Double Pillar Small Key) */ - LV1_05_WALK, /* Visited Room 5 in Deepwood Shrine 5 (Heart Piece & Map) */ - LV1_06_WALK, /* Visited Room 4 in Deepwood Shrine 4 (Barrel) */ - LV1_07_WALK, /* Visited Room 8 in Deepwood Shrine 8 (Mushrooms) */ - LV1_08_WALK, /* Visited Room 10 in Deepwood Shrine 10 (Mulldozer Fight) */ - LV1_09_WALK, /* Visited Room 9 in Deepwood Shrine 9 (Pillars & Slugs) */ - LV1_0A_WALK, /* Visited Room 3 in Deepwood Shrine 3 (Bridge & Mushroom) */ - LV1_0B_WALK, /* Visited Entrance in Deepwood Shrine 1 (Entrance) */ - LV1_10_WALK, /* Visited Room 2 in Deepwood Shrine 2 (Slug & Torches) */ - LV1_11_WALK, /* Visited Room 17 in Deepwood Shrine 17 (Boss Key) */ - LV1_12_WALK, /* Visited Room 16 in Deepwood Shrine 16 (Lilypad North) */ - LV1_13_WALK, - LV1_14_WALK, /* Visited Room 14 in Deepwood Shrine 14 (Lilypad West) */ - LV1_15_WALK, /* Visited Room 15 in Deepwood Shrine 15 (Lilypad East) */ - LV1_16_WALK, /* Visited Room 19 in Deepwood Shrine 19 (Big Green Chuchu) */ - LV1_17_WALK, /* Visited Room 18 in Deepwood Shrine 18 (Boss Door) */ - LV1_TARU_0, /* Left Buttons Pressed in Deepwood Shrine 4 (Barrel) */ - LV1_TARU_1, /* Right Button Pressed in Deepwood Shrine 4 (Barrel) */ - LV1_00_00, /* Defeated Madderpillar in Deepwood Shrine 13 (Madderpillar) */ - LV1_00_01, - LV1_00_02, /* Sucked East Web in Deepwood Shrine 13 (Madderpillar) */ - LV1_00_03, /* Sucked South Web in Deepwood Shrine 13 (Madderpillar) */ - LV1_00_T0, /* Gust Jar Chest Open in Deepwood Shrine 13 (Madderpillar) */ - LV1_01_00, /* Shortcut Door to Barrel Room Open in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_01, /* Blue Portal Hidden Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_02, /* Door to Madderpillar Open in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_03, /* Left Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_04, /* Right Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_T0, - LV1_01_T1, /* Left 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ - LV1_01_T2, /* Right 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ - LV1_02_T0, /* 20 Shell Chest Open in Deepwood Shrine 11 (Stairs to B2) */ - LV1_03_CAP_0, /* Ezlo talks about bridge pressure button in Deepwood Shrine 6 (Pressure Button Bridge) */ - LV1_04_02, /* Pot set on button in Room 6 in Deepwood Shrine 7 (Double Pillar Small Key) */ - LV1_04_T0, /* Small Key Chest Open in Deepwood Shrine 7 (Double Pillar Small Key) */ - LV1_05_T0, - LV1_05_T1, /* Map Chest Open in Deepwood Shrine 5 (Heart Piece & Map) */ - LV1_06_03, /* East Door Open in Deepwood Shrine 4 (Barrel) */ - LV1_06_T0, /* 10 Shell Chest Open in Deepwood Shrine 4 (Barrel) */ - LV1_06_CAP_0, /* Ezlo talks about barrel in Deepwood Shrine 4 (Barrel) */ - LV1_07_00, /* Hit bridge button in Deepwood Shrine 8 (Mushrooms) */ - LV1_07_CAP_0, - LV1_08_00, /* Defeated Mulldozers in Deepwood Shrine 10 (Mulldozer Fight) */ - LV1_08_KEY, /* Obtained Small Key in Deepwood Shrine 10 (Mulldozer Fight) */ - LV1_09_00, - LV1_0A_00, /* Lever pulled in Deepwood Shrine 3 (Bridge & Mushroom) */ - LV1_0A_CAP_0, /* Ezlo talks about pull lever in Deepwood Shrine 3 (Bridge & Mushroom) */ - LV1_0B_01, /* Sucked West Web in Deepwood Shrine 1 (Entrance) */ - LV1_0B_02, /* Sucked East Web in Deepwood Shrine 1 (Entrance) */ - LV1_0B_15, /* Blue and Red Portals Activate in Deepwood Shrine 1 (Entrance) */ - LV1_0B_CAP_0, /* Ezlo talks about Deepwood Shrine in Deepwood Shrine 1 (Entrance) */ - LV1_10_00, /* Hit top left button in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_01, /* Hit bottom left button in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_02, /* Hit top right button in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_03, /* Hit bottom right button in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_KEY, /* Door open in Deepwood Shrine 2 (Slug & Torches) */ - LV1_10_T0, /* Small Key Chest Open in Deepwood Shrine 2 (Slug & Torches) */ - LV1_11_01, /* Red Portal Button Pressed in Deepwood Shrine 17 (Boss Key) */ - LV1_11_T0, /* Boss Key Chest Open in Deepwood Shrine 17 (Boss Key) */ - LV1_12_15, /* Lily pad appears in Room 16 in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_12_T0, /* Small Key Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_12_T1, /* Compass Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_12_00, /* Pot set on Chest button in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_12_01, /* Pot set on button in Room 15 in Deepwood Shrine 16 (Compass & Small Key) */ - LV1_14_00, /* Door open in Deepwood Shrine 14 (Lilypad West) */ - LV1_14_CAP_0, /* Ezlo talks about lilypad in Deepwood Shrine 14 (Lilypad West) */ - LV1_16_UTSUWA, /* Obtained Heart Container in Deepwood Shrine 19 (Big Green Chuchu) */ - LV1_16_1STEND, /* Seen Green Chuchu Cutscene in Deepwood Shrine 18 (Boss Door) */ - LV1_17_00, /* Boss Door Open in Deepwood Shrine 18 (Boss Door) */ - LV1_17_T0, /* Red Rupee Chest Open in Deepwood Shrine 18 (Boss Door) */ - LV1_02_00, /* Revealed Chest Button in Deepwood Shrine 11 (Stairs to B2) */ - LV1_02_01, /* Hit Chest Button in Deepwood Shrine 11 (Stairs to B2) */ - LV1_10_04, /* Small Key Chest Spawned in Deepwood Shrine 2 (Slug & Torches) */ - LV1_20_CAP_0, /* Ezlo talks about moving barrel in Deepwood Shrine (Inside Barrel) */ - LV1_01_HK, /* Obtained Heart Piece in Deepwood Shrine 12 (To Madderpillar) */ - LV1_04_CAP_0, /* Ezlo talks about pushing and pulling pillars in Deepwood Shrine 7 (Double Pillar Small Key) */ - LV1_03_00, /* ??? in Deepwood Shrine 6 (Pressure Button Bridge) */ - LV1_05_HK, /* Obtained Heart Piece in Deepwood Shrine 5 (Heart Piece & Map) */ - LV1_08_01, /* Key Falls & Door Open in Deepwood Shrine 10 (Mulldozer fight) */ - LV1_01_05, /* Blue Portal Activated in Deepwood Shrine 12 (To Madderpillar) */ - LV1_10_CAP_0, /* Ezlo talks about locked door in Deepwood Shrine 2 (Slug & Torches) */ + LV1_00_WALK, /**< Visited Room 13 in Deepwood Shrine 13 (Madderpillar) */ + LV1_01_WALK, /**< Visited Room 12 in Deepwood Shrine 12 (To Madderpillar) */ + LV1_02_WALK, /**< Visited Room 11 in Deepwood Shrine 11 (Stairs to B2) */ + LV1_03_WALK, /**< Visited Room 6 in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_04_WALK, /**< Visited Room 7 in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_05_WALK, /**< Visited Room 5 in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_06_WALK, /**< Visited Room 4 in Deepwood Shrine 4 (Barrel) */ + LV1_07_WALK, /**< Visited Room 8 in Deepwood Shrine 8 (Mushrooms) */ + LV1_08_WALK, /**< Visited Room 10 in Deepwood Shrine 10 (Mulldozer Fight) */ + LV1_09_WALK, /**< Visited Room 9 in Deepwood Shrine 9 (Pillars & Slugs) */ + LV1_0A_WALK, /**< Visited Room 3 in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0B_WALK, /**< Visited Entrance in Deepwood Shrine 1 (Entrance) */ + LV1_10_WALK, /**< Visited Room 2 in Deepwood Shrine 2 (Slug & Torches) */ + LV1_11_WALK, /**< Visited Room 17 in Deepwood Shrine 17 (Boss Key) */ + LV1_12_WALK, /**< Visited Room 16 in Deepwood Shrine 16 (Lilypad North) */ + LV1_13_WALK, /**< undocumented */ + LV1_14_WALK, /**< Visited Room 14 in Deepwood Shrine 14 (Lilypad West) */ + LV1_15_WALK, /**< Visited Room 15 in Deepwood Shrine 15 (Lilypad East) */ + LV1_16_WALK, /**< Visited Room 19 in Deepwood Shrine 19 (Big Green Chuchu) */ + LV1_17_WALK, /**< Visited Room 18 in Deepwood Shrine 18 (Boss Door) */ + LV1_TARU_0, /**< Left Buttons Pressed in Deepwood Shrine 4 (Barrel) */ + LV1_TARU_1, /**< Right Button Pressed in Deepwood Shrine 4 (Barrel) */ + LV1_00_00, /**< Defeated Madderpillar in Deepwood Shrine 13 (Madderpillar) */ + LV1_00_01, /**< undocumented */ + LV1_00_02, /**< Sucked East Web in Deepwood Shrine 13 (Madderpillar) */ + LV1_00_03, /**< Sucked South Web in Deepwood Shrine 13 (Madderpillar) */ + LV1_00_T0, /**< Gust Jar Chest Open in Deepwood Shrine 13 (Madderpillar) */ + LV1_01_00, /**< Shortcut Door to Barrel Room Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_01, /**< Blue Portal Hidden Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_02, /**< Door to Madderpillar Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_03, /**< Left Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_04, /**< Right Hidden Chest Button Pressed in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_T0, /**< undocumented */ + LV1_01_T1, /**< Left 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_01_T2, /**< Right 10 Shell Chest Open in Deepwood Shrine 12 (To Madderpillar) */ + LV1_02_T0, /**< 20 Shell Chest Open in Deepwood Shrine 11 (Stairs to B2) */ + LV1_03_CAP_0, /**< Ezlo talks about bridge pressure button in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_04_02, /**< Pot set on button in Room 6 in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_04_T0, /**< Small Key Chest Open in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_05_T0, /**< undocumented */ + LV1_05_T1, /**< Map Chest Open in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_06_03, /**< East Door Open in Deepwood Shrine 4 (Barrel) */ + LV1_06_T0, /**< 10 Shell Chest Open in Deepwood Shrine 4 (Barrel) */ + LV1_06_CAP_0, /**< Ezlo talks about barrel in Deepwood Shrine 4 (Barrel) */ + LV1_07_00, /**< Hit bridge button in Deepwood Shrine 8 (Mushrooms) */ + LV1_07_CAP_0, /**< undocumented */ + LV1_08_00, /**< Defeated Mulldozers in Deepwood Shrine 10 (Mulldozer Fight) */ + LV1_08_KEY, /**< Obtained Small Key in Deepwood Shrine 10 (Mulldozer Fight) */ + LV1_09_00, /**< undocumented */ + LV1_0A_00, /**< Lever pulled in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0A_CAP_0, /**< Ezlo talks about pull lever in Deepwood Shrine 3 (Bridge & Mushroom) */ + LV1_0B_01, /**< Sucked West Web in Deepwood Shrine 1 (Entrance) */ + LV1_0B_02, /**< Sucked East Web in Deepwood Shrine 1 (Entrance) */ + LV1_0B_15, /**< Blue and Red Portals Activate in Deepwood Shrine 1 (Entrance) */ + LV1_0B_CAP_0, /**< Ezlo talks about Deepwood Shrine in Deepwood Shrine 1 (Entrance) */ + LV1_10_00, /**< Hit top left button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_01, /**< Hit bottom left button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_02, /**< Hit top right button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_03, /**< Hit bottom right button in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_KEY, /**< Door open in Deepwood Shrine 2 (Slug & Torches) */ + LV1_10_T0, /**< Small Key Chest Open in Deepwood Shrine 2 (Slug & Torches) */ + LV1_11_01, /**< Red Portal Button Pressed in Deepwood Shrine 17 (Boss Key) */ + LV1_11_T0, /**< Boss Key Chest Open in Deepwood Shrine 17 (Boss Key) */ + LV1_12_15, /**< Lily pad appears in Room 16 in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_T0, /**< Small Key Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_T1, /**< Compass Chest Open in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_00, /**< Pot set on Chest button in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_12_01, /**< Pot set on button in Room 15 in Deepwood Shrine 16 (Compass & Small Key) */ + LV1_14_00, /**< Door open in Deepwood Shrine 14 (Lilypad West) */ + LV1_14_CAP_0, /**< Ezlo talks about lilypad in Deepwood Shrine 14 (Lilypad West) */ + LV1_16_UTSUWA, /**< Obtained Heart Container in Deepwood Shrine 19 (Big Green Chuchu) */ + LV1_16_1STEND, /**< Seen Green Chuchu Cutscene in Deepwood Shrine 18 (Boss Door) */ + LV1_17_00, /**< Boss Door Open in Deepwood Shrine 18 (Boss Door) */ + LV1_17_T0, /**< Red Rupee Chest Open in Deepwood Shrine 18 (Boss Door) */ + LV1_02_00, /**< Revealed Chest Button in Deepwood Shrine 11 (Stairs to B2) */ + LV1_02_01, /**< Hit Chest Button in Deepwood Shrine 11 (Stairs to B2) */ + LV1_10_04, /**< Small Key Chest Spawned in Deepwood Shrine 2 (Slug & Torches) */ + LV1_20_CAP_0, /**< Ezlo talks about moving barrel in Deepwood Shrine (Inside Barrel) */ + LV1_01_HK, /**< Obtained Heart Piece in Deepwood Shrine 12 (To Madderpillar) */ + LV1_04_CAP_0, /**< Ezlo talks about pushing and pulling pillars in Deepwood Shrine 7 (Double Pillar Small Key) */ + LV1_03_00, /**< ??? in Deepwood Shrine 6 (Pressure Button Bridge) */ + LV1_05_HK, /**< Obtained Heart Piece in Deepwood Shrine 5 (Heart Piece & Map) */ + LV1_08_01, /**< Key Falls & Door Open in Deepwood Shrine 10 (Mulldozer fight) */ + LV1_01_05, /**< Blue Portal Activated in Deepwood Shrine 12 (To Madderpillar) */ + LV1_10_CAP_0, /**< Ezlo talks about locked door in Deepwood Shrine 2 (Slug & Torches) */ #if !defined(EU) && !defined(JP) - LV1_12_CAP_0, + LV1_12_CAP_0, /**< undocumented */ #endif END_5, } LocalFlags5; typedef enum { BEGIN_6, - LV2_00_WALK, /* Visited Room 12 in Cave of Flames 12 (Stairs to B2) */ - LV2_01_WALK, /* Visited Room 11 in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_02_WALK, /* Visited Room 10 in Cave of Flames 10 (Lava Minecart) */ - LV2_03_WALK, /* Visited Entrance in Cave of Flames 1 (Entrance) */ - LV2_04_WALK, /* Visited Room 5 in Cave of Flames 5 (Minecart) */ - LV2_05_WALK, /* Visited Room 4 in Cave of Flames 4 (Rupee Like) */ - LV2_06_WALK, /* Visited Room 6 in Cave of Flames 6 (B1 West) */ - LV2_07_WALK, /* Visited Room 7 in Cave of Flames 7 (Helmasaurs) */ - LV2_08_WALK, /* Visited Room 9 in Cave of Flames 9 (Whirlwind) */ - LV2_09_WALK, /* Visited Room 8 in Cave of Flames 8 (Minish Lava) */ - LV2_10_WALK, /* Visited Room 13 in Cave of Flames 13 (Minish Spike Traps) */ - LV2_11_WALK, /* Visited Room 14 in Cave of Flames 14 (Quad Rollobite) */ - LV2_12_WALK, /* Visited Room 18 in Cave of Flames 18 (Hole to Gleerok) */ - LV2_13_WALK, /* Visited Room 16 in Cave of Flames 16 (Pacci Whirlwind) */ - LV2_14_WALK, /* Visited Room 17 in Cave of Flames 17 (Spike Trap Kinstone) */ - LV2_15_WALK, /* Visited Room 3 in Cave of Flames 3 (Spinies) */ - LV2_16_WALK, /* Visited Room 1 in Cave of Flames 2 (Bob-ombs) */ - LV2_17_WALK, /* Visited Room 15 in Cave of Flames 15 (Boss Key Room) */ - LV2_BOSS_00_WALK, /* Visited Room 19 in Cave of Flames 19 (Gleerok) */ - LV2_00_00, /* Opened Stairs Door in Cave of Flames 12 (Stairs to B2) */ - LV2_00_01, /* Hit Door Button in Cave of Flames 12 (Stairs to B2) */ - LV2_01_01, /* Defeated Spiny Chus in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_01_02, /* Pushed Chest Pillar to Hole in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_01_T0, /* Small Key Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_01_T1, /* Cane of Pacci Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ - LV2_02_01, /* Blew up wall to Heart Piece in Cave of Flames 10 (Lava Minecart) */ - LV2_03_CAP_0, /* Ezlo talks about Cave of Flames in Cave of Flames (Entrance) */ - LV2_04_00, /* Minecart Switch Flipped in Cave of Flames 5 (Minecart) */ - LV2_04_01, /* Opened Doors to Switch in Cave of Flames 5 (Minecart) */ - LV2_04_CAP_0, /* Ezlo talks about Minecart in Cave of Flames 5 (Minecart) */ - LV2_06_00, /* Blew up wall in Cave of Flames 6 (B1 West) */ - LV2_06_T0, - LV2_06_CAP_0, /* Ezlo talks after Minecart in Cave of Flames 6 (B1 West) */ - LV2_07_00, /* Defeated Helmasaurs in Cave of Flames 7 (Helmasaurs) */ - LV2_07_CAP_0, /* Ezlo talks about Portal in Cave of Flames 7 (Helmasaurs) */ - LV2_08_00, /* Hit Door Button in Cave of Flames 9 (Whirlwind) */ - LV2_08_01, /* Pushed Chest Pillar to Hole in Cave of Flames 9 (Whirlwind) */ - LV2_08_T0, /* Small Key Chest Open in Cave of Flames 9 (Whirlwind) */ - LV2_08_T1, /* 50 Rupee Chest Open in Cave of Flames 9 (Whirlwind) */ - LV2_09_00, /* Hit Door Button in Cave of Flames 8 (Minish Lava) */ - LV2_09_T0, /* Blue L Kinstone Chest Open in Cave of Flames 8 (Minish Lava) */ - LV2_09_T1, /* Map Chest Open in Cave of Flames 8 (Minish Lava) */ - LV2_10_00, /* Minecart Switch Flipped in Cave of Flames 13 (Minish Spike Traps) */ - LV2_10_T0, /* Blue S Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ - LV2_10_T1, /* Green (< Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ - LV2_11_00, /* Flipped Barrier Switch in Cave of Flames 14 (Quad Rollobite) */ - LV2_11_01, /* Pushed Switch Pillar to Hole in Cave of Flames 14 (Quad Rollobite) */ - LV2_14_T0, /* Green [ Kinstone Chest Open in Cave of Flames 17 (Spike Trap Kinstone) */ - LV2_15_01, /* Defeated Spinies in Cave of Flames 3 (Spinies) */ - LV2_15_T0, /* Compass Chest Open in Cave of Flames 3 (Spinies) */ - LV2_15_CAP_0, /* Ezlo talks about Spinies in Cave of Flames 3 (Spinies) */ - LV2_16_00, /* Blew up wall in Cave of Flames 2 (Bob-ombs) */ - LV2_17_00, /* Activated Red Portal in Cave of Flames 15 (Boss Key Room) */ - LV2_17_15, /* Boss Door Open in Cave of Flames 15 (Boss Key Room) */ - LV2_17_T0, /* Green / Kinstone Chest Open in Cave of Flames 15 (Boss Key Room) */ - LV2_17_T1, /* 100 Rupee Chest Open in Cave of Flames 15 (Boss Key Room) */ - LV2_17_T2, /* Boss Key Chest Open in Cave of Flames 15 (Boss Key Room) */ - LV2_20_UTSUWA, /* Obtained Heart Container in Cave of Flames 19 (Gleerok) */ - LV2_00_02, /* Jumped up to Blue Portal Button? in Cave of Flames 12 (Stairs to B2) */ - LV2_06_HK, /* Obtained Heart Piece in Cave of Flames 6 (B1 West) */ - LV2_11_02, /* Barrier Down in Cave of Flames 14 (Quad Rollobite) */ - LV2_05_R1, /* Grabbed Top Left Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_05_R2, /* Grabbed Top Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_05_R3, /* Grabbed Top Right Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_05_R4, /* Grabbed Bottom Left Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_05_R5, /* Grabbed Bottom Right Green Rupee in Cave of Flames 4 (Rupee Like) */ - LV2_00_CAP_0, /* Ezlo talks about using Cane on hole in Cave of Flames 12 (Stairs to B2) */ - LV2_09_CAP_0, /* Ezlo talks about falling in lava in Cave of Flames 8 (Minish Lava) */ + LV2_00_WALK, /**< Visited Room 12 in Cave of Flames 12 (Stairs to B2) */ + LV2_01_WALK, /**< Visited Room 11 in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_02_WALK, /**< Visited Room 10 in Cave of Flames 10 (Lava Minecart) */ + LV2_03_WALK, /**< Visited Entrance in Cave of Flames 1 (Entrance) */ + LV2_04_WALK, /**< Visited Room 5 in Cave of Flames 5 (Minecart) */ + LV2_05_WALK, /**< Visited Room 4 in Cave of Flames 4 (Rupee Like) */ + LV2_06_WALK, /**< Visited Room 6 in Cave of Flames 6 (B1 West) */ + LV2_07_WALK, /**< Visited Room 7 in Cave of Flames 7 (Helmasaurs) */ + LV2_08_WALK, /**< Visited Room 9 in Cave of Flames 9 (Whirlwind) */ + LV2_09_WALK, /**< Visited Room 8 in Cave of Flames 8 (Minish Lava) */ + LV2_10_WALK, /**< Visited Room 13 in Cave of Flames 13 (Minish Spike Traps) */ + LV2_11_WALK, /**< Visited Room 14 in Cave of Flames 14 (Quad Rollobite) */ + LV2_12_WALK, /**< Visited Room 18 in Cave of Flames 18 (Hole to Gleerok) */ + LV2_13_WALK, /**< Visited Room 16 in Cave of Flames 16 (Pacci Whirlwind) */ + LV2_14_WALK, /**< Visited Room 17 in Cave of Flames 17 (Spike Trap Kinstone) */ + LV2_15_WALK, /**< Visited Room 3 in Cave of Flames 3 (Spinies) */ + LV2_16_WALK, /**< Visited Room 1 in Cave of Flames 2 (Bob-ombs) */ + LV2_17_WALK, /**< Visited Room 15 in Cave of Flames 15 (Boss Key Room) */ + LV2_BOSS_00_WALK, /**< Visited Room 19 in Cave of Flames 19 (Gleerok) */ + LV2_00_00, /**< Opened Stairs Door in Cave of Flames 12 (Stairs to B2) */ + LV2_00_01, /**< Hit Door Button in Cave of Flames 12 (Stairs to B2) */ + LV2_01_01, /**< Defeated Spiny Chus in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_02, /**< Pushed Chest Pillar to Hole in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_T0, /**< Small Key Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_01_T1, /**< Cane of Pacci Chest Open in Cave of Flames 11 (Spiny Chu Fight) */ + LV2_02_01, /**< Blew up wall to Heart Piece in Cave of Flames 10 (Lava Minecart) */ + LV2_03_CAP_0, /**< Ezlo talks about Cave of Flames in Cave of Flames (Entrance) */ + LV2_04_00, /**< Minecart Switch Flipped in Cave of Flames 5 (Minecart) */ + LV2_04_01, /**< Opened Doors to Switch in Cave of Flames 5 (Minecart) */ + LV2_04_CAP_0, /**< Ezlo talks about Minecart in Cave of Flames 5 (Minecart) */ + LV2_06_00, /**< Blew up wall in Cave of Flames 6 (B1 West) */ + LV2_06_T0, /**< undocumented */ + LV2_06_CAP_0, /**< Ezlo talks after Minecart in Cave of Flames 6 (B1 West) */ + LV2_07_00, /**< Defeated Helmasaurs in Cave of Flames 7 (Helmasaurs) */ + LV2_07_CAP_0, /**< Ezlo talks about Portal in Cave of Flames 7 (Helmasaurs) */ + LV2_08_00, /**< Hit Door Button in Cave of Flames 9 (Whirlwind) */ + LV2_08_01, /**< Pushed Chest Pillar to Hole in Cave of Flames 9 (Whirlwind) */ + LV2_08_T0, /**< Small Key Chest Open in Cave of Flames 9 (Whirlwind) */ + LV2_08_T1, /**< 50 Rupee Chest Open in Cave of Flames 9 (Whirlwind) */ + LV2_09_00, /**< Hit Door Button in Cave of Flames 8 (Minish Lava) */ + LV2_09_T0, /**< Blue L Kinstone Chest Open in Cave of Flames 8 (Minish Lava) */ + LV2_09_T1, /**< Map Chest Open in Cave of Flames 8 (Minish Lava) */ + LV2_10_00, /**< Minecart Switch Flipped in Cave of Flames 13 (Minish Spike Traps) */ + LV2_10_T0, /**< Blue S Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ + LV2_10_T1, /**< Green (< Kinstone Chest Open in Cave of Flames 13 (Minish Spike Traps) */ + LV2_11_00, /**< Flipped Barrier Switch in Cave of Flames 14 (Quad Rollobite) */ + LV2_11_01, /**< Pushed Switch Pillar to Hole in Cave of Flames 14 (Quad Rollobite) */ + LV2_14_T0, /**< Green [ Kinstone Chest Open in Cave of Flames 17 (Spike Trap Kinstone) */ + LV2_15_01, /**< Defeated Spinies in Cave of Flames 3 (Spinies) */ + LV2_15_T0, /**< Compass Chest Open in Cave of Flames 3 (Spinies) */ + LV2_15_CAP_0, /**< Ezlo talks about Spinies in Cave of Flames 3 (Spinies) */ + LV2_16_00, /**< Blew up wall in Cave of Flames 2 (Bob-ombs) */ + LV2_17_00, /**< Activated Red Portal in Cave of Flames 15 (Boss Key Room) */ + LV2_17_15, /**< Boss Door Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T0, /**< Green / Kinstone Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T1, /**< 100 Rupee Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_17_T2, /**< Boss Key Chest Open in Cave of Flames 15 (Boss Key Room) */ + LV2_20_UTSUWA, /**< Obtained Heart Container in Cave of Flames 19 (Gleerok) */ + LV2_00_02, /**< Jumped up to Blue Portal Button? in Cave of Flames 12 (Stairs to B2) */ + LV2_06_HK, /**< Obtained Heart Piece in Cave of Flames 6 (B1 West) */ + LV2_11_02, /**< Barrier Down in Cave of Flames 14 (Quad Rollobite) */ + LV2_05_R1, /**< Grabbed Top Left Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R2, /**< Grabbed Top Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R3, /**< Grabbed Top Right Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R4, /**< Grabbed Bottom Left Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_05_R5, /**< Grabbed Bottom Right Green Rupee in Cave of Flames 4 (Rupee Like) */ + LV2_00_CAP_0, /**< Ezlo talks about using Cane on hole in Cave of Flames 12 (Stairs to B2) */ + LV2_09_CAP_0, /**< Ezlo talks about falling in lava in Cave of Flames 8 (Minish Lava) */ END_6, } LocalFlags6; typedef enum { BEGIN_7, - LV3_00_WALK, /* Visited Room in Fortress of Winds, Left Side 3F Eyegores */ - LV3_01_WALK, /* Visited Room in Fortress of Winds, Before Mazaal */ - LV3_02_WALK, /* Visited Room in Fortress of Winds, Right Side 3F Key */ - LV3_03_WALK, /* Visited Room in Fortress of Winds, Left Side 3F Pit Platforms */ - LV3_04_WALK, /* Visited Room in Fortress of Winds, Left Side 3F Key */ - LV3_05_WALK, - LV3_06_WALK, - LV3_10_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Darknut */ - LV3_11_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Eyes */ - LV3_12_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Pit Hall Left */ - LV3_13_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Wallmasters */ - LV3_14_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_15_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Spike Traps */ - LV3_16_WALK, /* Visited Room in Fortress of Winds, Mazaal */ - LV3_17_WALK, /* Visited Room in Fortress of Winds, Left Side 2F Stalfos */ - LV3_18_WALK, /* Visited Room in Fortress of Winds, Left Side 2F Eyes */ - LV3_19_WALK, /* Visited Room in Fortress of Winds, Center Door 2F */ - LV3_1A_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Minish Hole to Key */ - LV3_1B_WALK, /* Visited Room in Fortress of Winds, Center Door 2F Boss Key */ - LV3_1C_WALK, /* Visited Room in Fortress of Winds, Left Side 2F */ - LV3_1D_WALK, /* Visited Room in Fortress of Winds, Right Side 2F */ - LV3_20_WALK, /* Visited Room in Fortress of Winds, Left Door */ - LV3_21_WALK, /* Visited Room in Fortress of Winds, Center Door */ - LV3_22_WALK, /* Visited Room in Fortress of Winds, Right Door */ - LV3_23_WALK, /* Visited Room in Fortress of Winds, Leftmost Door Wizzrobes */ - LV3_24_WALK, /* Visited Room in Fortress of Winds, Rightmost Door Heart Piece */ - LV3_00_00, /* Defeated Eyegores in Fortress of Winds, Left Side 3F Eyegores */ - LV3_00_T0, /* Compass Chest Open in Fortress of Winds, Left Side 3F Eyegores */ - LV3_02_00, /* Door Open in Fortress of Winds, Right Side Key Boss Key Side */ - LV3_02_01, /* Door Open in Fortress of Winds, Right Side 3F Key */ - LV3_02_02, /* Key drop animation has finished in Fortress of Winds, Right Side 3F Key */ - LV3_02_KEYFALL, /* Pulled Lever, Key falls in Fortress of Winds, Right Side 3F Key */ - LV3_03_00, /* Shot Arrows at Top Eyes in Fortress of Winds, Left Side 3F Eyes */ - LV3_03_01, /* Shot Arrows at East Eyes in Fortress of Winds, Left Side 3F Eyes */ - LV3_04_00, /* Key drop animation has finished in Fortress of Winds, Left Side 3F Key */ - LV3_04_KEYFALL, /* Pulled Lever, Key falls in Fortress of Winds, Left Side 3F Key */ - LV3_04_WARP_0, /* Red Portal Active in Fortress of Winds, Left Side 3F Key */ - LV3_04_BOSSDOOR, /* Boss Door Open in Fortress of Winds, Left Side 3F Key */ - LV3_10_00, /* Defeated Darknut in Fortress of Winds, Center Door 2F Darknut */ - LV3_11_00, /* Shot Arrows at Eyes in Fortress of Winds, Center Door 2F Eyes */ - LV3_12_CAP_0, /* Ezlo talks about bridge in Fortress of Winds, Center Door 2F Pit Hall Right */ - LV3_13_00, /* Defeated Wallmasters in Fortress of Winds, Center Door 2F Wallmasters */ - LV3_14_00, /* Buttons Hit in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_14_01, /* Door Open in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_14_02, /* Key Fallen in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_14_KEY, /* Obtained Key in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ - LV3_15_00, /* Hit Button in Fortress of Winds, Center Door 2F Spike Traps */ - LV3_17_00, /* Defeated Stalfos in Fortress of Winds, Left Side 2F Stalfos */ - LV3_16_BOSSDIE, /* Defeated Mazaal in Fortress of Winds, Mazaal */ - LV3_16_GETUTSUWA, /* Obtained Heart Container in Fortress of Winds, Mazaal */ - LV3_18_00, /* Shot Arrow at Eye in Fortress of Winds, Left Side 2F Eye */ - LV3_18_00_BW00, /* Blew up wall in Fortress of Winds, Left Side 2F Eye */ - LV3_19_01, /* Left Eyegore Defeated in Fortress of Winds, Center Room 2F */ - LV3_19_02, /* Door Open in Fortress of Winds, Center Door 2F Left Door */ - LV3_19_03, /* Door Open in Fortress of Winds, Center Door 2F Right Door */ - LV3_19_04, /* Right Eyegore defeated in Fortress of Winds, Center Room 2F */ - LV3_19_T0, /* Map Chest Open in Fortress of Winds, Center Room 2F */ - LV3_1B_T0, /* Boss Key Chest Open in Fortress of Winds, Center Room 2F Boss Key */ - LV3_1D_00, /* Pulled Left Lever in Fortress of Winds, Right Side 2F */ - LV3_1D_01, /* Pulled Right Lever in Fortress of Winds, Right Side 2F */ - LV3_1D_T0, /* Blue L Kinstone Chest Open in Fortress of Winds, Right Side 2F Left Chest */ - LV3_1D_T1, /* Blue S Kinstone Chest Open in Fortress of Winds, Right Side 2F Right Chest */ - LV3_20_00, /* Obtained Key in Fortress of Winds, Left Door */ - LV3_20_CAP_0, /* Ezlo talks about Fortress of Winds in Fortress of Winds */ - LV3_22_00, /* Obtained Key in Fortress of Winds, Right Door */ - LV3_23_01, /* Defeated Wizzrobes in Fortress of Winds, Leftmost Door Wizzrobes */ - LV3_23_T0, /* 80 Shell Chest Open in Fortress of Winds, Leftmost Door Wizzrobes */ - LV3_24_T0, - LV3_OCARINA_FALL, /* Zeffa drops Ocarina on ground in Fortress of Winds, Ocarina of Wind Room */ - LV3_02_CAP_0, /* Ezlo talks about fallen Key in Fortress of Winds Right Side 3F Key */ - LV3_24_HK, /* Obtained Heart Piece in Fortress of Winds, Rightmost Heart Piece Room */ - LV3_10_01, /* Doors opened in Fortress of Winds, Center Door 2F Darknut */ - LV3_17_01, /* Doors opened in Fortress of Winds, Left Side 2F Stalfos */ + LV3_00_WALK, /**< Visited Room in Fortress of Winds, Left Side 3F Eyegores */ + LV3_01_WALK, /**< Visited Room in Fortress of Winds, Before Mazaal */ + LV3_02_WALK, /**< Visited Room in Fortress of Winds, Right Side 3F Key */ + LV3_03_WALK, /**< Visited Room in Fortress of Winds, Left Side 3F Pit Platforms */ + LV3_04_WALK, /**< Visited Room in Fortress of Winds, Left Side 3F Key */ + LV3_05_WALK, /**< undocumented */ + LV3_06_WALK, /**< undocumented */ + LV3_10_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F Darknut */ + LV3_11_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F Eyes */ + LV3_12_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F Pit Hall Left */ + LV3_13_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F Wallmasters */ + LV3_14_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_15_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F Spike Traps */ + LV3_16_WALK, /**< Visited Room in Fortress of Winds, Mazaal */ + LV3_17_WALK, /**< Visited Room in Fortress of Winds, Left Side 2F Stalfos */ + LV3_18_WALK, /**< Visited Room in Fortress of Winds, Left Side 2F Eyes */ + LV3_19_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F */ + LV3_1A_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F Minish Hole to Key */ + LV3_1B_WALK, /**< Visited Room in Fortress of Winds, Center Door 2F Boss Key */ + LV3_1C_WALK, /**< Visited Room in Fortress of Winds, Left Side 2F */ + LV3_1D_WALK, /**< Visited Room in Fortress of Winds, Right Side 2F */ + LV3_20_WALK, /**< Visited Room in Fortress of Winds, Left Door */ + LV3_21_WALK, /**< Visited Room in Fortress of Winds, Center Door */ + LV3_22_WALK, /**< Visited Room in Fortress of Winds, Right Door */ + LV3_23_WALK, /**< Visited Room in Fortress of Winds, Leftmost Door Wizzrobes */ + LV3_24_WALK, /**< Visited Room in Fortress of Winds, Rightmost Door Heart Piece */ + LV3_00_00, /**< Defeated Eyegores in Fortress of Winds, Left Side 3F Eyegores */ + LV3_00_T0, /**< Compass Chest Open in Fortress of Winds, Left Side 3F Eyegores */ + LV3_02_00, /**< Door Open in Fortress of Winds, Right Side Key Boss Key Side */ + LV3_02_01, /**< Door Open in Fortress of Winds, Right Side 3F Key */ + LV3_02_02, /**< Key drop animation has finished in Fortress of Winds, Right Side 3F Key */ + LV3_02_KEYFALL, /**< Pulled Lever, Key falls in Fortress of Winds, Right Side 3F Key */ + LV3_03_00, /**< Shot Arrows at Top Eyes in Fortress of Winds, Left Side 3F Eyes */ + LV3_03_01, /**< Shot Arrows at East Eyes in Fortress of Winds, Left Side 3F Eyes */ + LV3_04_00, /**< Key drop animation has finished in Fortress of Winds, Left Side 3F Key */ + LV3_04_KEYFALL, /**< Pulled Lever, Key falls in Fortress of Winds, Left Side 3F Key */ + LV3_04_WARP_0, /**< Red Portal Active in Fortress of Winds, Left Side 3F Key */ + LV3_04_BOSSDOOR, /**< Boss Door Open in Fortress of Winds, Left Side 3F Key */ + LV3_10_00, /**< Defeated Darknut in Fortress of Winds, Center Door 2F Darknut */ + LV3_11_00, /**< Shot Arrows at Eyes in Fortress of Winds, Center Door 2F Eyes */ + LV3_12_CAP_0, /**< Ezlo talks about bridge in Fortress of Winds, Center Door 2F Pit Hall Right */ + LV3_13_00, /**< Defeated Wallmasters in Fortress of Winds, Center Door 2F Wallmasters */ + LV3_14_00, /**< Buttons Hit in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_01, /**< Door Open in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_02, /**< Key Fallen in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_14_KEY, /**< Obtained Key in Fortress of Winds, Center Door 2F Pillar Clone Buttons */ + LV3_15_00, /**< Hit Button in Fortress of Winds, Center Door 2F Spike Traps */ + LV3_17_00, /**< Defeated Stalfos in Fortress of Winds, Left Side 2F Stalfos */ + LV3_16_BOSSDIE, /**< Defeated Mazaal in Fortress of Winds, Mazaal */ + LV3_16_GETUTSUWA, /**< Obtained Heart Container in Fortress of Winds, Mazaal */ + LV3_18_00, /**< Shot Arrow at Eye in Fortress of Winds, Left Side 2F Eye */ + LV3_18_00_BW00, /**< Blew up wall in Fortress of Winds, Left Side 2F Eye */ + LV3_19_01, /**< Left Eyegore Defeated in Fortress of Winds, Center Room 2F */ + LV3_19_02, /**< Door Open in Fortress of Winds, Center Door 2F Left Door */ + LV3_19_03, /**< Door Open in Fortress of Winds, Center Door 2F Right Door */ + LV3_19_04, /**< Right Eyegore defeated in Fortress of Winds, Center Room 2F */ + LV3_19_T0, /**< Map Chest Open in Fortress of Winds, Center Room 2F */ + LV3_1B_T0, /**< Boss Key Chest Open in Fortress of Winds, Center Room 2F Boss Key */ + LV3_1D_00, /**< Pulled Left Lever in Fortress of Winds, Right Side 2F */ + LV3_1D_01, /**< Pulled Right Lever in Fortress of Winds, Right Side 2F */ + LV3_1D_T0, /**< Blue L Kinstone Chest Open in Fortress of Winds, Right Side 2F Left Chest */ + LV3_1D_T1, /**< Blue S Kinstone Chest Open in Fortress of Winds, Right Side 2F Right Chest */ + LV3_20_00, /**< Obtained Key in Fortress of Winds, Left Door */ + LV3_20_CAP_0, /**< Ezlo talks about Fortress of Winds in Fortress of Winds */ + LV3_22_00, /**< Obtained Key in Fortress of Winds, Right Door */ + LV3_23_01, /**< Defeated Wizzrobes in Fortress of Winds, Leftmost Door Wizzrobes */ + LV3_23_T0, /**< 80 Shell Chest Open in Fortress of Winds, Leftmost Door Wizzrobes */ + LV3_24_T0, /**< undocumented */ + LV3_OCARINA_FALL, /**< Zeffa drops Ocarina on ground in Fortress of Winds, Ocarina of Wind Room */ + LV3_02_CAP_0, /**< Ezlo talks about fallen Key in Fortress of Winds Right Side 3F Key */ + LV3_24_HK, /**< Obtained Heart Piece in Fortress of Winds, Rightmost Heart Piece Room */ + LV3_10_01, /**< Doors opened in Fortress of Winds, Center Door 2F Darknut */ + LV3_17_01, /**< Doors opened in Fortress of Winds, Left Side 2F Stalfos */ END_7, } LocalFlags7; typedef enum { BEGIN_8, - LV4_00_WALK, /* Visited Room in Temple of Droplets West Hole to Boss Key */ - LV4_01_WALK, /* Visited Room in Temple of Droplets North Split to Keys */ - LV4_02_WALK, /* Visited Room in Temple of Droplets East Hole to Key */ - LV4_03_WALK, /* Visited Room in Temple of Droplets Entrance */ - LV4_04_WALK, /* Visited Room in Temple of Droplets Stairs to West Lever */ - LV4_05_WALK, /* Visited Room in Temple of Droplets Scissors Beetle Miniboss */ - LV4_06_WALK, /* Visited Room in Temple of Droplets West Waterfall Northwest */ - LV4_07_WALK, /* Visited Room in Temple of Droplets West Waterfall Northeast */ - LV4_08_WALK, /* Visited Room in Temple of Droplets Main Room */ - LV4_09_WALK, /* Visited Room in Temple of Droplets Corner from Beetle Miniboss */ - LV4_0A_WALK, /* Visited Room in Temple of Droplets Ice Pit Maze */ - LV4_0B_WALK, /* Visited Room in Temple of Droplets, Hole to Blue Chuchu Key */ - LV4_0C_WALK, /* Visited Room in Temple of Droplets West Waterfall Southwest */ - LV4_0D_WALK, /* Visited Room in Temple of Droplets West Waterfall Southeast */ - LV4_0E_WALK, /* Visited Room in Temple of Droplets, Big Octorok */ - LV4_0F_WALK, /* Visited Room in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_10_WALK, /* Visited Room in Temple of Droplets Big Blue Chuchu */ - LV4_11_WALK, /* Visited Room in Temple of Droplets Blue Chuchu Key */ - LV4_20_WALK, /* Visited Room in Temple of Droplets Boss Key Room */ - LV4_21_WALK, /* Visited Room in Temple of Droplets Key 1 Room */ - LV4_22_WALK, /* Visited Room in Temple of Droplets Block Clone Button Puzzle */ - LV4_23_WALK, /* Visited Room in Temple of Droplets Block Clone Puzzle 1 */ - LV4_24_WALK, /* Visited Room in Temple of Droplets Block Clone Ice Bridge */ - LV4_25_WALK, /* Visited Room in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_26_WALK, /* Visited Room in Temple of Droplets Spikebars after 9 Lantern */ - LV4_27_WALK, /* Visited Room in Temple of Droplets 9 Lantern Room */ - LV4_28_WALK, /* Visited Room in Temple of Droplets Lilypad Ice Blocks */ - LV4_29_WALK, /* Visited Room in Temple of Droplets The 1 Frame Roll */ - LV4_2A_WALK, /* Visited Room in Temple of Droplets Mulldozers & Firebars */ - LV4_2B_WALK, /* Visited Room in Temple of Droplets Dark Lantern Maze */ - LV4_2C_WALK, /* Visited Room in Temple of Droplets Twin Madderpillars */ - LV4_2D_WALK, /* Visited Room in Temple of Droplets After Twin Madderpillars */ - LV4_2E_WALK, /* Visited Room in Temple of Droplets Blue Chuchu Key Lever */ - LV4_2F_WALK, /* Visited Room in Temple of Droplets Mulldozer Key Room */ - LV4_30_WALK, /* Visited Room in Temple of Droplets Bombwall to Twin Madderpillars */ - LV4_31_WALK, /* Visited Room in Temple of Droplets Lilypad B2 West */ - LV4_32_WALK, /* Visited Room in Temple of Droplets Compass Room */ - LV4_33_WALK, /* Visited Room in Temple of Droplets 4 Lantern Scissors Beetles */ - LV4_34_WALK, /* Visited Room in Temple of Droplets Lilypad B2 Middle Room */ - LV4_35_WALK, /* Visited Room in Temple of Droplets Lilypad B2 East Madderpillar */ - LV4_INIT, /* Open Hole Setup Completed in Temple of Droplets West Hole to Boss Key */ - LV4_01_00, /* Door Open in Temple of Droplets North Split to Keys */ - LV4_03_CAP_0, /* Ezlo talks about Temple of Droplets in Temple of Droplets Entrance */ - LV4_03_BOSSDOOR, /* Boss Door Open in Temple of Droplets Entrance */ - LV4_05_00, - LV4_05_01, /* Defeated Scissors Beetles in Temple of Droplets Scissors Beetle Miniboss */ - LV4_06_00, - LV4_07_00, /* Opened Door to Lilypad in Temple of Droplets West Waterfall Northeast */ - LV4_08_00, /* Ice Block Melted in Temple of Droplets Main Room */ - LV4_08_01, - LV4_08_02, - LV4_08_RAY_HALF, /* East Lever Pushed in Temple of Droplets Main Room */ - LV4_08_RAY_HALF_E, /* East Ice Block Thawing Zone active in Temple of Droplets Main Room */ - LV4_08_RAY_FULL, /* West Lever Pushed in Temple of Droplets Main Room */ - LV4_08_RAY_FULL_E, /* Water Element Ice Melts in Temple of Droplets Main Room */ - LV4_09_T0, /* Blue L Kinstone Chest Open in Temple of Droplets Corner from Beetle Miniboss */ - LV4_0a_TSUBO, /* Green < Kinstone Taken From Pot in Temple of Droplets Ice Pit Maze */ - LV4_0a_T0, /* Blue S Kinstone Chest Open in Temple of Droplets Ice Pit Maze */ - LV4_0c_00, /* Hit Button in Temple of Droplets West Waterfall Southwest */ - LV4_0d_00, /* Hit Button in Temple of Droplets West Waterfall Southeast */ - LV4_0d_01, /* Blocking Pillars Down in Temple of Droplets West Waterfall Southeast */ - LV4_0d_02, - LV4_0d_T0, /* Map Chest Open in Temple of Droplets West Waterfall Southeast */ - LV4_0e_UTSUWA, /* Obtained Heart Container in Temple of Droplets, Big Octorok */ - LV4_0f_00, /* Door Open in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_0f_01, /* Melted Top Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_0f_02, /* Melted Bottom Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_0f_03, /* Melted Top Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_0f_04, /* Melted Bottom Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ - LV4_10_RAY, /* Lever Pushed in Temple of Droplets Big Blue Chuchu */ - LV4_10_T0, /* Lantern Chest Open in Temple of Droplets Big Blue Chuchu */ - LV4_10_BOSSDIE, /* Defeated Big Blue Chuchu in Temple of Droplets Big Blue Chuchu */ - LV4_11_00, /* Ice Block Melts in Temple of Droplets Blue Chuchu Key */ - LV4_11_RAY_SP, /* Thawing Zone Active in Temple of Droplets Blue Chuchu Key */ - LV4_11_RAY, /* Lever Turned in Blue Chuchu Key Room in Temple of Droplets West Hole to Boss Key */ - LV4_11_T0, /* Obtained Key in Temple of Droplets Blue Chuchu Key Lever */ - LV4_20_00, - LV4_20_RAY, /* Turned Lever in Temple of Droplets Boss Key Room */ - LV4_20_BOSSKEY, /* Boss Key Ice Block Gone in Temple of Droplets Boss Key Room */ - LV4_21_00, /* Ezlo trigger active in Temple of Droplets Key 1 Room */ - LV4_21_RAY, /* Turned Lever in Temple of Droplets Key 1 Room */ - LV4_21_KEY, /* Obtained Key in Temple of Droplets Key 1 Room */ - LV4_21_CAP_0, /* Ezlo talks about sunlight in Temple of Droplets Key 1 Room */ - LV4_22_00, /* Door Open in Temple of Droplets Block Clone Button Puzzle */ - LV4_23_00, /* Door Open in Temple of Droplets Flamebar Block Puzzle */ - LV4_24_00, /* Melted Ice Block in Temple of Droplets Block Clone Ice Bridge */ - LV4_27_00, /* 9 Lanterns Lit in Temple of Droplets 9 Lantern Room */ - LV4_28_00, /* Hit Button in Temple of Droplets Lilypad Ice Blocks */ - LV4_28_01, /* Lilypad Ice Blocks Gate Stays Open in Temple of Droplets The 1 Frame Roll */ - LV4_28_T0, /* 100 Shell Chest Open (Frozen) in Temple of Droplets Lilypad Ice Blocks */ - LV4_28_T1, /* 50 Rupee Chest Open in Temple of Droplets Lilypad Ice Blocks */ - LV4_29_CAP_0, /* Ezlo talks about darkness in Temple of Droplets The 1 Frame Roll */ - LV4_2b_T0, /* Red W Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Right Chest */ - LV4_2b_T1, /* Red (> Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Left Chest */ - LV4_2b_T2, /* Red 3 Prong Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Bottom Chest */ - LV4_2b_BKABE, /* Blew up wall to Mulldozer Key Room in Temple of Droplets Dark Lantern Maze */ - LV4_2b_00, /* Lit Top Left Torch in Temple of Droplets Dark Lantern Maze */ - LV4_2b_01, /* Lit Top Right Torch in Temple of Droplets Dark Lantern Maze */ - LV4_2b_02, /* Door Open in Temple of Droplets Dark Lantern Maze */ - LV4_2b_03, /* Lit Middle Right Torch in Temple of Droplets Dark Lantern Maze */ - LV4_2b_04, /* Lit Bottom Right Torch in Temple of Droplets Dark Lantern Maze */ - LV4_2c_00, /* Defeated Twin Madderpillars in Temple of Droplets Twin Madderpillars */ - LV4_2c_02, /* Burnt Entrance Web in Temple of Droplets Twin Madderpillars */ - LV4_2c_T0, - LV4_2d_00, - LV4_2d_01, - LV4_2d_02, - LV4_2e_RAY, /* Turned Lever in Temple of Droplets Blue Chuchu Key Lever */ - LV4_2f_00, /* Defeated Mulldozers in Temple of Droplets Mulldozer Key Room */ - LV4_2f_01, /* Small Key Falls in Temple of Droplets Mulldozer Key Room */ - LV4_2f_KEY, /* Obtained Small Key in Temple of Droplets Mulldozer Key Room */ - LV4_30_00, /* Red Portal Activated in Temple of Droplets To Twin Madderpillars */ - LV4_30_BKABE, /* Blew up wall to Twin Madderpillars in Temple of Droplets To Twin Madderpillars */ - LV4_31_00, /* Hit Button in Temple of Droplets Lilypad B2 West */ - LV4_31_01, /* Lilypad Fallen to B2 in Temple of Droplets West Waterfall Southeast */ - LV4_32_00, /* Melted Left Ice Block in Temple of Droplets Compass Room */ - LV4_32_01, /* Melted Right Ice Block in Temple of Droplets Compass Room */ - LV4_32_T0, /* 100 Rupee Chest Open in Temple of Droplets Compass Room */ - LV4_32_T1, /* Compass Chest Open in Temple of Droplets Compass Room */ - LV4_33_01, /* Defeated Scissors Beetles in Temple of Droplets, 4 Lantern Scissors Beetles */ - LV4_34_00, /* Hit Button in Temple of Droplets Lilypad B2 Middle Room */ - LV4_34_01, /* Obtained Small Key in Temple of Droplets Lilypad B2 Middle Room */ - LV4_35_00, /* Defeated Madderpillar in Temple of Droplets Lilypad B2 East Madderpillar */ - LV4_35_01, /* Door Open in Temple of Droplets Lilypad B2 East Madderpillar */ - LV4_22_01, - LV4_2d_T0, /* Red 3 Prong Kinstone Chest Open (Frozen) in Temple of Droplets After Twin Madderpillars */ - LV4_03_CAP_1, /* Ezlo talks about slippery floor in Temple of Droplets Entrance */ - LV4_08_CAP_0, /* Ezlo talks about frozen Element in Temple of Droplets Main Room */ - LV4_08_CAP_1, /* Ezlo talks after pushing East Lever in Temple of Droplets Main Room */ - LV4_36_WALK, /* Visited Room in Temple of Droplets Flamebar Block Puzzle */ - LV4_36_T0, - LV4_21_CAP_1, /* Ezlo talks about frozen key in Temple of Droplets Key 1 Room */ - LV4_0d_03, /* Grabbed 1st Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_0d_04, /* Grabbed 2nd Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_0d_05, /* Grabbed 3rd Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_0d_06, /* Grabbed 4th Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_0d_07, /* Grabbed 5th Green Rupee in Temple of Droplets West Waterfall Southeast */ - LV4_25_00, /* Grabbed 5th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_25_01, /* Grabbed 4th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_25_02, /* Grabbed 3rd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_25_03, /* Grabbed 2nd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_25_04, /* Grabbed 1st Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ - LV4_31_02, /* Picked up upper left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_03, /* Picked up upper middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_04, /* Picked up upper right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_05, /* Picked up lower left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_06, /* Picked up lower middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_31_07, /* Picked up lower right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ - LV4_06_01, /* Picked up upper left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_02, /* Picked up upper middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_03, /* Picked up upper right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_04, /* Picked up lower left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_05, /* Picked up lower middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_06_06, /* Picked up lower right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ - LV4_08_OCT, /* Big Octo Sucked Element & Left Room in Temple of Droplets Main Room */ - LV4_05_02, /* Doors Open in Temple of Droplets Scissors Beetle Miniboss */ - LV4_28_02, /* Blocking Pillars Down in Temple of Droplets Lilypad Ice Blocks */ - LV4_2c_01, /* Door Open in Temple of Droplets Twin Madderpillars */ - LV4_33_02, /* Doors Open in Temple of Droplets, 4 Lantern Scissors Beetles */ - LV4_31_08, /* Gate Opened in Temple of Droplets Lilypad B2 West */ - LV4_34_02, /* Gate Opened in Temple of Droplets Lilypad B2 Middle Room */ - LV4_20_RAY_SW, /* Thawing zone active in Temple of Droplets Boss Key Room */ - LV4_21_RAY_SW, /* Thawing zone active in Temple of Droplets Key 1 Room */ + LV4_00_WALK, /**< Visited Room in Temple of Droplets West Hole to Boss Key */ + LV4_01_WALK, /**< Visited Room in Temple of Droplets North Split to Keys */ + LV4_02_WALK, /**< Visited Room in Temple of Droplets East Hole to Key */ + LV4_03_WALK, /**< Visited Room in Temple of Droplets Entrance */ + LV4_04_WALK, /**< Visited Room in Temple of Droplets Stairs to West Lever */ + LV4_05_WALK, /**< Visited Room in Temple of Droplets Scissors Beetle Miniboss */ + LV4_06_WALK, /**< Visited Room in Temple of Droplets West Waterfall Northwest */ + LV4_07_WALK, /**< Visited Room in Temple of Droplets West Waterfall Northeast */ + LV4_08_WALK, /**< Visited Room in Temple of Droplets Main Room */ + LV4_09_WALK, /**< Visited Room in Temple of Droplets Corner from Beetle Miniboss */ + LV4_0A_WALK, /**< Visited Room in Temple of Droplets Ice Pit Maze */ + LV4_0B_WALK, /**< Visited Room in Temple of Droplets, Hole to Blue Chuchu Key */ + LV4_0C_WALK, /**< Visited Room in Temple of Droplets West Waterfall Southwest */ + LV4_0D_WALK, /**< Visited Room in Temple of Droplets West Waterfall Southeast */ + LV4_0E_WALK, /**< Visited Room in Temple of Droplets, Big Octorok */ + LV4_0F_WALK, /**< Visited Room in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_10_WALK, /**< Visited Room in Temple of Droplets Big Blue Chuchu */ + LV4_11_WALK, /**< Visited Room in Temple of Droplets Blue Chuchu Key */ + LV4_20_WALK, /**< Visited Room in Temple of Droplets Boss Key Room */ + LV4_21_WALK, /**< Visited Room in Temple of Droplets Key 1 Room */ + LV4_22_WALK, /**< Visited Room in Temple of Droplets Block Clone Button Puzzle */ + LV4_23_WALK, /**< Visited Room in Temple of Droplets Block Clone Puzzle 1 */ + LV4_24_WALK, /**< Visited Room in Temple of Droplets Block Clone Ice Bridge */ + LV4_25_WALK, /**< Visited Room in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_26_WALK, /**< Visited Room in Temple of Droplets Spikebars after 9 Lantern */ + LV4_27_WALK, /**< Visited Room in Temple of Droplets 9 Lantern Room */ + LV4_28_WALK, /**< Visited Room in Temple of Droplets Lilypad Ice Blocks */ + LV4_29_WALK, /**< Visited Room in Temple of Droplets The 1 Frame Roll */ + LV4_2A_WALK, /**< Visited Room in Temple of Droplets Mulldozers & Firebars */ + LV4_2B_WALK, /**< Visited Room in Temple of Droplets Dark Lantern Maze */ + LV4_2C_WALK, /**< Visited Room in Temple of Droplets Twin Madderpillars */ + LV4_2D_WALK, /**< Visited Room in Temple of Droplets After Twin Madderpillars */ + LV4_2E_WALK, /**< Visited Room in Temple of Droplets Blue Chuchu Key Lever */ + LV4_2F_WALK, /**< Visited Room in Temple of Droplets Mulldozer Key Room */ + LV4_30_WALK, /**< Visited Room in Temple of Droplets Bombwall to Twin Madderpillars */ + LV4_31_WALK, /**< Visited Room in Temple of Droplets Lilypad B2 West */ + LV4_32_WALK, /**< Visited Room in Temple of Droplets Compass Room */ + LV4_33_WALK, /**< Visited Room in Temple of Droplets 4 Lantern Scissors Beetles */ + LV4_34_WALK, /**< Visited Room in Temple of Droplets Lilypad B2 Middle Room */ + LV4_35_WALK, /**< Visited Room in Temple of Droplets Lilypad B2 East Madderpillar */ + LV4_INIT, /**< Open Hole Setup Completed in Temple of Droplets West Hole to Boss Key */ + LV4_01_00, /**< Door Open in Temple of Droplets North Split to Keys */ + LV4_03_CAP_0, /**< Ezlo talks about Temple of Droplets in Temple of Droplets Entrance */ + LV4_03_BOSSDOOR, /**< Boss Door Open in Temple of Droplets Entrance */ + LV4_05_00, /**< undocumented */ + LV4_05_01, /**< Defeated Scissors Beetles in Temple of Droplets Scissors Beetle Miniboss */ + LV4_06_00, /**< undocumented */ + LV4_07_00, /**< Opened Door to Lilypad in Temple of Droplets West Waterfall Northeast */ + LV4_08_00, /**< Ice Block Melted in Temple of Droplets Main Room */ + LV4_08_01, /**< undocumented */ + LV4_08_02, /**< undocumented */ + LV4_08_RAY_HALF, /**< East Lever Pushed in Temple of Droplets Main Room */ + LV4_08_RAY_HALF_E, /**< East Ice Block Thawing Zone active in Temple of Droplets Main Room */ + LV4_08_RAY_FULL, /**< West Lever Pushed in Temple of Droplets Main Room */ + LV4_08_RAY_FULL_E, /**< Water Element Ice Melts in Temple of Droplets Main Room */ + LV4_09_T0, /**< Blue L Kinstone Chest Open in Temple of Droplets Corner from Beetle Miniboss */ + LV4_0a_TSUBO, /**< Green < Kinstone Taken From Pot in Temple of Droplets Ice Pit Maze */ + LV4_0a_T0, /**< Blue S Kinstone Chest Open in Temple of Droplets Ice Pit Maze */ + LV4_0c_00, /**< Hit Button in Temple of Droplets West Waterfall Southwest */ + LV4_0d_00, /**< Hit Button in Temple of Droplets West Waterfall Southeast */ + LV4_0d_01, /**< Blocking Pillars Down in Temple of Droplets West Waterfall Southeast */ + LV4_0d_02, /**< undocumented */ + LV4_0d_T0, /**< Map Chest Open in Temple of Droplets West Waterfall Southeast */ + LV4_0e_UTSUWA, /**< Obtained Heart Container in Temple of Droplets, Big Octorok */ + LV4_0f_00, /**< Door Open in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_01, /**< Melted Top Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_02, /**< Melted Bottom Left Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_03, /**< Melted Top Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_0f_04, /**< Melted Bottom Right Ice Block in Temple of Droplets, Door to Big Blue Chuchu */ + LV4_10_RAY, /**< Lever Pushed in Temple of Droplets Big Blue Chuchu */ + LV4_10_T0, /**< Lantern Chest Open in Temple of Droplets Big Blue Chuchu */ + LV4_10_BOSSDIE, /**< Defeated Big Blue Chuchu in Temple of Droplets Big Blue Chuchu */ + LV4_11_00, /**< Ice Block Melts in Temple of Droplets Blue Chuchu Key */ + LV4_11_RAY_SP, /**< Thawing Zone Active in Temple of Droplets Blue Chuchu Key */ + LV4_11_RAY, /**< Lever Turned in Blue Chuchu Key Room in Temple of Droplets West Hole to Boss Key */ + LV4_11_T0, /**< Obtained Key in Temple of Droplets Blue Chuchu Key Lever */ + LV4_20_00, /**< undocumented */ + LV4_20_RAY, /**< Turned Lever in Temple of Droplets Boss Key Room */ + LV4_20_BOSSKEY, /**< Boss Key Ice Block Gone in Temple of Droplets Boss Key Room */ + LV4_21_00, /**< Ezlo trigger active in Temple of Droplets Key 1 Room */ + LV4_21_RAY, /**< Turned Lever in Temple of Droplets Key 1 Room */ + LV4_21_KEY, /**< Obtained Key in Temple of Droplets Key 1 Room */ + LV4_21_CAP_0, /**< Ezlo talks about sunlight in Temple of Droplets Key 1 Room */ + LV4_22_00, /**< Door Open in Temple of Droplets Block Clone Button Puzzle */ + LV4_23_00, /**< Door Open in Temple of Droplets Flamebar Block Puzzle */ + LV4_24_00, /**< Melted Ice Block in Temple of Droplets Block Clone Ice Bridge */ + LV4_27_00, /**< 9 Lanterns Lit in Temple of Droplets 9 Lantern Room */ + LV4_28_00, /**< Hit Button in Temple of Droplets Lilypad Ice Blocks */ + LV4_28_01, /**< Lilypad Ice Blocks Gate Stays Open in Temple of Droplets The 1 Frame Roll */ + LV4_28_T0, /**< 100 Shell Chest Open (Frozen) in Temple of Droplets Lilypad Ice Blocks */ + LV4_28_T1, /**< 50 Rupee Chest Open in Temple of Droplets Lilypad Ice Blocks */ + LV4_29_CAP_0, /**< Ezlo talks about darkness in Temple of Droplets The 1 Frame Roll */ + LV4_2b_T0, /**< Red W Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Right Chest */ + LV4_2b_T1, /**< Red (> Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Top Left Chest */ + LV4_2b_T2, /**< Red 3 Prong Kinstone Chest Open in Temple of Droplets Dark Lantern Maze, Bottom Chest */ + LV4_2b_BKABE, /**< Blew up wall to Mulldozer Key Room in Temple of Droplets Dark Lantern Maze */ + LV4_2b_00, /**< Lit Top Left Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_01, /**< Lit Top Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_02, /**< Door Open in Temple of Droplets Dark Lantern Maze */ + LV4_2b_03, /**< Lit Middle Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2b_04, /**< Lit Bottom Right Torch in Temple of Droplets Dark Lantern Maze */ + LV4_2c_00, /**< Defeated Twin Madderpillars in Temple of Droplets Twin Madderpillars */ + LV4_2c_02, /**< Burnt Entrance Web in Temple of Droplets Twin Madderpillars */ + LV4_2c_T0, /**< undocumented */ + LV4_2d_00, /**< undocumented */ + LV4_2d_01, /**< undocumented */ + LV4_2d_02, /**< undocumented */ + LV4_2e_RAY, /**< Turned Lever in Temple of Droplets Blue Chuchu Key Lever */ + LV4_2f_00, /**< Defeated Mulldozers in Temple of Droplets Mulldozer Key Room */ + LV4_2f_01, /**< Small Key Falls in Temple of Droplets Mulldozer Key Room */ + LV4_2f_KEY, /**< Obtained Small Key in Temple of Droplets Mulldozer Key Room */ + LV4_30_00, /**< Red Portal Activated in Temple of Droplets To Twin Madderpillars */ + LV4_30_BKABE, /**< Blew up wall to Twin Madderpillars in Temple of Droplets To Twin Madderpillars */ + LV4_31_00, /**< Hit Button in Temple of Droplets Lilypad B2 West */ + LV4_31_01, /**< Lilypad Fallen to B2 in Temple of Droplets West Waterfall Southeast */ + LV4_32_00, /**< Melted Left Ice Block in Temple of Droplets Compass Room */ + LV4_32_01, /**< Melted Right Ice Block in Temple of Droplets Compass Room */ + LV4_32_T0, /**< 100 Rupee Chest Open in Temple of Droplets Compass Room */ + LV4_32_T1, /**< Compass Chest Open in Temple of Droplets Compass Room */ + LV4_33_01, /**< Defeated Scissors Beetles in Temple of Droplets, 4 Lantern Scissors Beetles */ + LV4_34_00, /**< Hit Button in Temple of Droplets Lilypad B2 Middle Room */ + LV4_34_01, /**< Obtained Small Key in Temple of Droplets Lilypad B2 Middle Room */ + LV4_35_00, /**< Defeated Madderpillar in Temple of Droplets Lilypad B2 East Madderpillar */ + LV4_35_01, /**< Door Open in Temple of Droplets Lilypad B2 East Madderpillar */ + LV4_22_01, /**< undocumented */ + LV4_2d_T0, /**< Red 3 Prong Kinstone Chest Open (Frozen) in Temple of Droplets After Twin Madderpillars */ + LV4_03_CAP_1, /**< Ezlo talks about slippery floor in Temple of Droplets Entrance */ + LV4_08_CAP_0, /**< Ezlo talks about frozen Element in Temple of Droplets Main Room */ + LV4_08_CAP_1, /**< Ezlo talks after pushing East Lever in Temple of Droplets Main Room */ + LV4_36_WALK, /**< Visited Room in Temple of Droplets Flamebar Block Puzzle */ + LV4_36_T0, /**< undocumented */ + LV4_21_CAP_1, /**< Ezlo talks about frozen key in Temple of Droplets Key 1 Room */ + LV4_0d_03, /**< Grabbed 1st Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_04, /**< Grabbed 2nd Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_05, /**< Grabbed 3rd Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_06, /**< Grabbed 4th Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_0d_07, /**< Grabbed 5th Green Rupee in Temple of Droplets West Waterfall Southeast */ + LV4_25_00, /**< Grabbed 5th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_01, /**< Grabbed 4th Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_02, /**< Grabbed 3rd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_03, /**< Grabbed 2nd Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_25_04, /**< Grabbed 1st Green Rupee in Temple of Droplets Stairs to Beetle Miniboss */ + LV4_31_02, /**< Picked up upper left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_03, /**< Picked up upper middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_04, /**< Picked up upper right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_05, /**< Picked up lower left underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_06, /**< Picked up lower middle underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_31_07, /**< Picked up lower right underwater waterfall blue rupee in Temple of Droplets Lilypad B2 West */ + LV4_06_01, /**< Picked up upper left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_02, /**< Picked up upper middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_03, /**< Picked up upper right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_04, /**< Picked up lower left underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_05, /**< Picked up lower middle underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_06_06, /**< Picked up lower right underwater waterfall blue rupee in Temple of Droplets West Waterfall Northwest */ + LV4_08_OCT, /**< Big Octo Sucked Element & Left Room in Temple of Droplets Main Room */ + LV4_05_02, /**< Doors Open in Temple of Droplets Scissors Beetle Miniboss */ + LV4_28_02, /**< Blocking Pillars Down in Temple of Droplets Lilypad Ice Blocks */ + LV4_2c_01, /**< Door Open in Temple of Droplets Twin Madderpillars */ + LV4_33_02, /**< Doors Open in Temple of Droplets, 4 Lantern Scissors Beetles */ + LV4_31_08, /**< Gate Opened in Temple of Droplets Lilypad B2 West */ + LV4_34_02, /**< Gate Opened in Temple of Droplets Lilypad B2 Middle Room */ + LV4_20_RAY_SW, /**< Thawing zone active in Temple of Droplets Boss Key Room */ + LV4_21_RAY_SW, /**< Thawing zone active in Temple of Droplets Key 1 Room */ END_8, } LocalFlags8; typedef enum { BEGIN_9, - LV5_00_WALK, /* Visited Room in Palace of Winds 46 (Vortex to Gyorg) */ - LV5_01_WALK, /* Visited Room in Palace of Winds 24 (5F Boss Key Chest) */ - LV5_02_WALK, /* Visited Room in Palace of Winds 19 (5F Before Boss Door Hall) */ - LV5_03_WALK, /* Visited Room in Palace of Winds 44 (5F Real Boss Door) */ - LV5_04_WALK, /* Visited Room in Palace of Winds 5F East Kinstone Chest from Boss */ - LV5_05_WALK, /* Visited Room in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ - LV5_06_WALK, /* Visited Room in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ - LV5_07_WALK, /* Visited Room in Palace of Winds 21 (5F Key Chest & Blocks) */ - LV5_08_WALK, /* Visited Room in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_09_WALK, /* Visited Room in Palace of Winds 43 (5F Bombarossa Switch Maze) */ - LV5_0A_WALK, /* Visited Room in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ - LV5_0B_WALK, /* Visited Room in Palace of Winds 42 (5F North Corner) */ - LV5_0C_WALK, /* Visited Room in Palace of Winds 26 (1F Darknut Miniboss) */ - LV5_0D_WALK, /* Visited Room in Palace of Winds 40 (5F Gibdo Corner) */ - LV5_0E_WALK, /* Visited Room in Palace of Winds 41 (5F Outside Wall) */ - LV5_0F_WALK, /* Visited Room in Palace of Winds 18 (4F Cloud Jumps to 5F) */ - LV5_10_WALK, /* Visited Room in Palace of Winds 45 (4F Block Maze to Boss) */ - LV5_11_WALK, /* Visited Room in Palace of Winds 17 (4F Lakitu Platforms) */ - LV5_12_WALK, /* Visited Room in Palace of Winds 4F Bridge to Heart Piece */ - LV5_13_WALK, /* Visited Room in Palace of Winds 16 (4F Bridge & Fan) */ - LV5_14_WALK, /* Visited Room in Palace of Winds 15 (4F Moblin Corner) */ - LV5_15_WALK, /* Visited Room in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_16_WALK, /* Visited Room in Palace of Winds 8 (3F Northwest) */ - LV5_17_WALK, /* Visited Room in Palace of Winds 14 (3F Corner after Key) */ - LV5_18_WALK, /* Visited Room in Palace of Winds 9 (3F Southwest) */ - LV5_19_WALK, /* Visited Room in Palace of Winds 10 (3F Platform & Cloud to 4F) */ - LV5_1A_WALK, /* Visited Room in Palace of Winds 11 (3F Spike Bar & Pots) */ - LV5_1B_WALK, /* Visited Room in Palace of Winds 37 (3F Floormaster Lever) */ - LV5_1C_WALK, /* Visited Room in Palace of Winds 36 (3F Map Chest Fire Wizzrobes) */ - LV5_1D_WALK, /* Visited Room in Palace of Winds 13 (3F Key Switch Minish Portal) */ - LV5_1E_WALK, /* Visited Room in Palace of Winds 38 (3F Stairs to 4F) */ - LV5_1F_WALK, /* Visited Room in Palace of Winds 3F Hole to Kinstone Wizzrobe Fight */ - LV5_20_WALK, /* Visited Room in Palace of Winds 12 (3F Key Switch) */ - LV5_21_WALK, /* Visited Room in Palace of Winds 6 (2F West) */ - LV5_22_WALK, /* Visited Room in Palace of Winds 7 (2F East) */ - LV5_23_WALK, /* Visited Room in Palace of Winds 32 (2F Peahat Clone Switches) */ - LV5_24_WALK, /* Visited Room in Palace of Winds 34 (2F Bombarossa Whirlwinds) */ - LV5_25_WALK, /* Visited Room in Palace of Winds 30 (2F Stalfos Corner) */ - LV5_26_WALK, /* Visited Room in Palace of Winds 31 (2F Stalfos Firebars) */ - LV5_27_WALK, /* Visited Room in Palace of Winds (2F Shortcut Door Switches) */ - LV5_28_WALK, /* Visited Room in Palace of Winds 29 (2F Stairs) */ - LV5_29_WALK, /* Visited Room in Palace of Winds, Kinstone Wizzrobe Fight */ - LV5_2A_WALK, /* Visited Room in Palace of Winds 35 (2F Gibdo Corner) */ - LV5_2B_WALK, /* Visited Room in Palace of Winds 33 (2F Spikebar Key Chest) */ - LV5_2C_WALK, /* Visited Room in Palace of Winds 5 (Roc's Cape) */ - LV5_2D_WALK, /* Visited Room in Palace of Winds 4 (Firebar Bob-omb Grate) */ - LV5_2E_WALK, /* Visited Room in Palace of Winds 3 (Platform Ride Bombarossas) */ - LV5_2F_WALK, /* Visited Room in Palace of Winds 27 (1F Bridge after Darknut) */ - LV5_30_WALK, /* Visited Room in Palace of Winds 2 (Bridge Switches & Clone Block) */ - LV5_31_WALK, /* Visited Room in Palace of Winds Entrance */ - LV5_32_WALK, /* Visited Room in Palace of Winds 28 (1F Dark Room) */ - LV5_01_T0, /* Boss Key Chest Open in Palace of Winds 24 (5F Boss Key Chest) */ - LV5_03_T0, /* Small Key Chest Open in Palace of Winds 44, West of Boss Door */ - LV5_03_BOSSDOOR, /* Boss Door Open in Palace of Winds 44, Boss Door */ - LV5_04_T0, /* Red W Kinstone Chest Open in Palace of Winds, East Kinstone Chest from Boss */ - LV5_05_00, /* Hit Fan Floor Button in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ - LV5_05_01, - LV5_05_02, /* Defeated Moblins & Wizzrobes in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ - LV5_06_00, /* Door Open in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ - LV5_07_00, /* Door Open in Palace of Winds 21 (5F Key Chest & Blocks) */ - LV5_07_01, /* Hit Fan Floor Button in Palace of Winds 21 (5F Key Chest & Blocks) */ - LV5_07_T0, /* Small Key Chest Open in Palace of Winds 21 (5F Key Chest & Blocks) */ - LV5_08_00, /* Door Open in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_08_01, /* Defeated Ball & Chain Soldiers in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_08_KEY, /* Obtained Key in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_08_BOSSDOOR, /* Boss Door Open in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_0b_B0, /* Top Block Destroyed in Palace of Winds 42 (5F North Corner) */ - LV5_0b_B1, /* Bottom Block Destroyed in Palace of Winds 42 (5F North Corner) */ - LV5_0d_00, /* Blew up wall in Palace of Winds 40 (5F Gibdo Corner) */ - LV5_0e_00, /* Blew up wall in Palace of Winds 41 (5F Outside Wall) */ - LV5_0f_T0, /* Blue L Kinstone Chest Open in Palace of Winds 18 (4F Cloud Jumps to 5F) */ - LV5_0f_T1, - LV5_10_T0, /* Blue S Kinstone Chest Open in Palace of Winds 45 (4F Block Maze to Boss) */ - LV5_15_00, /* North Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_01, /* East Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_02, /* Switch Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_03, /* Lit Left Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_04, /* Lit Right Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_T0, /* 200 Rupee Chest Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_B0, /* Top Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_15_B1, /* Bottom Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_1a_00, /* Hit 3 Switches in Palace of Winds 11 (3F Spike Bar & Pots) */ - LV5_1a_01, /* Door Open in Palace of Winds 11 (3F Spike Bar & Pots) */ - LV5_1b_00, /* Door Open in Palace of Winds 36 (3F Floormaster Lever) */ - LV5_1b_T0, - LV5_1c_00, /* Defeated Fire Wizzrobes in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ - LV5_1c_T0, /* Map Chest Open in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ - LV5_20_00, /* Hit Key Switch in Palace of Winds 12 (3F Key Switch) */ - LV5_20_01, /* Obtained Key in Palace of Winds 12 (3F Key Switch) */ - LV5_21_00, /* Grabbed Top Left Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_01, /* Grabbed Top Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_02, /* Grabbed Bottom Left Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_03, /* Grabbed Bottom Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_04, /* Grabbed Bottom Right Green Rupee in Palace of Winds 6 (2F West) */ - LV5_21_05, - LV5_21_06, - LV5_21_07, - LV5_21_08, - LV5_21_09, - LV5_21_0a, - LV5_21_CAP_0, /* Ezlo talks about grates in Palace of Winds 6 (2F West) */ - LV5_22_00, - LV5_22_01, /* Defeated Spinies in Palace of Winds 7 (2F East) */ - LV5_22_CAP_0, /* Ezlo talks about fans in Palace of Winds 7 (2F East) */ - LV5_23_00, /* Hit Switches in Palace of Winds 31 (2F Peahat Clone Switches) */ - LV5_23_01, /* Locked Door Open in Palace of Winds 31 (2F Peahat Clone Switches) */ - LV5_27_00, /* Hit Switches in Palace of Winds (2F Shortcut Door Switches) */ - LV5_29_00, - LV5_29_01, /* Defeated Wizzrobes in Palace of Winds, Kinstone Wizzrobe Fight */ - LV5_29_T0, /* Red (> Kinstone Chest Open in Palace of Winds, Kinstone Wizzrobe Fight */ - LV5_2b_T0, /* Small Key Chest Open in Palace of Winds 32 (2F Spikebar Key Chest) */ - LV5_2c_00, /* Defeated Wizzrobes in Palace of Winds 5 (Roc's Cape) */ - LV5_2c_01, - LV5_2c_02, - LV5_2c_03, - LV5_2c_T0, /* Roc's Cape Chest Open in Palace of Winds 5 (Roc's Cape) */ - LV5_2c_CAP_0, /* Ezlo talks about clouds in Palace of Winds 5 (Roc's Cape) */ - LV5_2d_T0, /* Red 3 Prong Kinstone Chest Open in Palace of Winds 4 (Firebar Bob-omb Grate) */ - LV5_31_CAP_0, /* Ezlo talks about Palace of Winds in Palace of Winds Entrance */ - LV5_32_CAP_0, /* Ezlo talks about dark room in Palace of Winds 28 (1F Dark Room) */ - LV5_32_T0, /* Compass Chest Open in Palace of Winds 28 (1F Dark Room) */ - LV5_32_T1, /* Small Key Chest Open in Palace of Winds 28 (1F Dark Room) */ - LV5_BOSSDIE, /* Vortex to Gyorg Removed + Receive Element in Palace of Winds 46 (Vortex to Gyorg) */ - LV5_MBOSSDIE, - LV5_00_UTSUWA, /* Obtained Heart Container in Palace of Winds 46 (Vortex to Gyorg) */ - LV5_0c_00, /* Defeated Red Darknut in Palace of Winds 26 (1F Darknut Miniboss) */ - LV5_0A_CAP_0, /* Ezlo talks about hole in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ - LV5_0f_HK, /* Obtained Heart Piece in Palace of Winds 18 (4F Cloud Jumps to 5F) */ - LV5_05_03, /* Door Open in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ - LV5_08_02, /* Key Falls in Palace of Winds 20 (5F Boss Door Hall) */ - LV5_0c_01, - LV5_0c_02, /* Blue Portal & Bridge Appeared in Palace of Winds 26 (1F Darknut Miniboss) */ - LV5_22_02, /* Door Open after Spinies in Palace of Winds 7 (2F East) */ - LV5_15_05, /* Red Portal Active in Palace of Winds 39 (4F Bombarossa Block Hole) */ - LV5_20_02, /* Key Falls & Door Open in Palace of Winds 12 (3F Key Switch) */ + LV5_00_WALK, /**< Visited Room in Palace of Winds 46 (Vortex to Gyorg) */ + LV5_01_WALK, /**< Visited Room in Palace of Winds 24 (5F Boss Key Chest) */ + LV5_02_WALK, /**< Visited Room in Palace of Winds 19 (5F Before Boss Door Hall) */ + LV5_03_WALK, /**< Visited Room in Palace of Winds 44 (5F Real Boss Door) */ + LV5_04_WALK, /**< Visited Room in Palace of Winds 5F East Kinstone Chest from Boss */ + LV5_05_WALK, /**< Visited Room in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_06_WALK, /**< Visited Room in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ + LV5_07_WALK, /**< Visited Room in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_08_WALK, /**< Visited Room in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_09_WALK, /**< Visited Room in Palace of Winds 43 (5F Bombarossa Switch Maze) */ + LV5_0A_WALK, /**< Visited Room in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ + LV5_0B_WALK, /**< Visited Room in Palace of Winds 42 (5F North Corner) */ + LV5_0C_WALK, /**< Visited Room in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_0D_WALK, /**< Visited Room in Palace of Winds 40 (5F Gibdo Corner) */ + LV5_0E_WALK, /**< Visited Room in Palace of Winds 41 (5F Outside Wall) */ + LV5_0F_WALK, /**< Visited Room in Palace of Winds 18 (4F Cloud Jumps to 5F) */ + LV5_10_WALK, /**< Visited Room in Palace of Winds 45 (4F Block Maze to Boss) */ + LV5_11_WALK, /**< Visited Room in Palace of Winds 17 (4F Lakitu Platforms) */ + LV5_12_WALK, /**< Visited Room in Palace of Winds 4F Bridge to Heart Piece */ + LV5_13_WALK, /**< Visited Room in Palace of Winds 16 (4F Bridge & Fan) */ + LV5_14_WALK, /**< Visited Room in Palace of Winds 15 (4F Moblin Corner) */ + LV5_15_WALK, /**< Visited Room in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_16_WALK, /**< Visited Room in Palace of Winds 8 (3F Northwest) */ + LV5_17_WALK, /**< Visited Room in Palace of Winds 14 (3F Corner after Key) */ + LV5_18_WALK, /**< Visited Room in Palace of Winds 9 (3F Southwest) */ + LV5_19_WALK, /**< Visited Room in Palace of Winds 10 (3F Platform & Cloud to 4F) */ + LV5_1A_WALK, /**< Visited Room in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1B_WALK, /**< Visited Room in Palace of Winds 37 (3F Floormaster Lever) */ + LV5_1C_WALK, /**< Visited Room in Palace of Winds 36 (3F Map Chest Fire Wizzrobes) */ + LV5_1D_WALK, /**< Visited Room in Palace of Winds 13 (3F Key Switch Minish Portal) */ + LV5_1E_WALK, /**< Visited Room in Palace of Winds 38 (3F Stairs to 4F) */ + LV5_1F_WALK, /**< Visited Room in Palace of Winds 3F Hole to Kinstone Wizzrobe Fight */ + LV5_20_WALK, /**< Visited Room in Palace of Winds 12 (3F Key Switch) */ + LV5_21_WALK, /**< Visited Room in Palace of Winds 6 (2F West) */ + LV5_22_WALK, /**< Visited Room in Palace of Winds 7 (2F East) */ + LV5_23_WALK, /**< Visited Room in Palace of Winds 32 (2F Peahat Clone Switches) */ + LV5_24_WALK, /**< Visited Room in Palace of Winds 34 (2F Bombarossa Whirlwinds) */ + LV5_25_WALK, /**< Visited Room in Palace of Winds 30 (2F Stalfos Corner) */ + LV5_26_WALK, /**< Visited Room in Palace of Winds 31 (2F Stalfos Firebars) */ + LV5_27_WALK, /**< Visited Room in Palace of Winds (2F Shortcut Door Switches) */ + LV5_28_WALK, /**< Visited Room in Palace of Winds 29 (2F Stairs) */ + LV5_29_WALK, /**< Visited Room in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_2A_WALK, /**< Visited Room in Palace of Winds 35 (2F Gibdo Corner) */ + LV5_2B_WALK, /**< Visited Room in Palace of Winds 33 (2F Spikebar Key Chest) */ + LV5_2C_WALK, /**< Visited Room in Palace of Winds 5 (Roc's Cape) */ + LV5_2D_WALK, /**< Visited Room in Palace of Winds 4 (Firebar Bob-omb Grate) */ + LV5_2E_WALK, /**< Visited Room in Palace of Winds 3 (Platform Ride Bombarossas) */ + LV5_2F_WALK, /**< Visited Room in Palace of Winds 27 (1F Bridge after Darknut) */ + LV5_30_WALK, /**< Visited Room in Palace of Winds 2 (Bridge Switches & Clone Block) */ + LV5_31_WALK, /**< Visited Room in Palace of Winds Entrance */ + LV5_32_WALK, /**< Visited Room in Palace of Winds 28 (1F Dark Room) */ + LV5_01_T0, /**< Boss Key Chest Open in Palace of Winds 24 (5F Boss Key Chest) */ + LV5_03_T0, /**< Small Key Chest Open in Palace of Winds 44, West of Boss Door */ + LV5_03_BOSSDOOR, /**< Boss Door Open in Palace of Winds 44, Boss Door */ + LV5_04_T0, /**< Red W Kinstone Chest Open in Palace of Winds, East Kinstone Chest from Boss */ + LV5_05_00, /**< Hit Fan Floor Button in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_05_01, /**< undocumented */ + LV5_05_02, /**< Defeated Moblins & Wizzrobes in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_06_00, /**< Door Open in Palace of Winds 22 (5F Stalfos & Clone Buttons) */ + LV5_07_00, /**< Door Open in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_07_01, /**< Hit Fan Floor Button in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_07_T0, /**< Small Key Chest Open in Palace of Winds 21 (5F Key Chest & Blocks) */ + LV5_08_00, /**< Door Open in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_01, /**< Defeated Ball & Chain Soldiers in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_KEY, /**< Obtained Key in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_08_BOSSDOOR, /**< Boss Door Open in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_0b_B0, /**< Top Block Destroyed in Palace of Winds 42 (5F North Corner) */ + LV5_0b_B1, /**< Bottom Block Destroyed in Palace of Winds 42 (5F North Corner) */ + LV5_0d_00, /**< Blew up wall in Palace of Winds 40 (5F Gibdo Corner) */ + LV5_0e_00, /**< Blew up wall in Palace of Winds 41 (5F Outside Wall) */ + LV5_0f_T0, /**< Blue L Kinstone Chest Open in Palace of Winds 18 (4F Cloud Jumps to 5F) */ + LV5_0f_T1, /**< undocumented */ + LV5_10_T0, /**< Blue S Kinstone Chest Open in Palace of Winds 45 (4F Block Maze to Boss) */ + LV5_15_00, /**< North Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_01, /**< East Locked Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_02, /**< Switch Door Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_03, /**< Lit Left Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_04, /**< Lit Right Torch in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_T0, /**< 200 Rupee Chest Open in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_B0, /**< Top Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_15_B1, /**< Bottom Block Destroyed in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_1a_00, /**< Hit 3 Switches in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1a_01, /**< Door Open in Palace of Winds 11 (3F Spike Bar & Pots) */ + LV5_1b_00, /**< Door Open in Palace of Winds 36 (3F Floormaster Lever) */ + LV5_1b_T0, /**< undocumented */ + LV5_1c_00, /**< Defeated Fire Wizzrobes in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ + LV5_1c_T0, /**< Map Chest Open in Palace of Winds 35 (3F Map Chest Fire Wizzrobes) */ + LV5_20_00, /**< Hit Key Switch in Palace of Winds 12 (3F Key Switch) */ + LV5_20_01, /**< Obtained Key in Palace of Winds 12 (3F Key Switch) */ + LV5_21_00, /**< Grabbed Top Left Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_01, /**< Grabbed Top Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_02, /**< Grabbed Bottom Left Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_03, /**< Grabbed Bottom Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_04, /**< Grabbed Bottom Right Green Rupee in Palace of Winds 6 (2F West) */ + LV5_21_05, /**< undocumented */ + LV5_21_06, /**< undocumented */ + LV5_21_07, /**< undocumented */ + LV5_21_08, /**< undocumented */ + LV5_21_09, /**< undocumented */ + LV5_21_0a, /**< undocumented */ + LV5_21_CAP_0, /**< Ezlo talks about grates in Palace of Winds 6 (2F West) */ + LV5_22_00, /**< undocumented */ + LV5_22_01, /**< Defeated Spinies in Palace of Winds 7 (2F East) */ + LV5_22_CAP_0, /**< Ezlo talks about fans in Palace of Winds 7 (2F East) */ + LV5_23_00, /**< Hit Switches in Palace of Winds 31 (2F Peahat Clone Switches) */ + LV5_23_01, /**< Locked Door Open in Palace of Winds 31 (2F Peahat Clone Switches) */ + LV5_27_00, /**< Hit Switches in Palace of Winds (2F Shortcut Door Switches) */ + LV5_29_00, /**< undocumented */ + LV5_29_01, /**< Defeated Wizzrobes in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_29_T0, /**< Red (> Kinstone Chest Open in Palace of Winds, Kinstone Wizzrobe Fight */ + LV5_2b_T0, /**< Small Key Chest Open in Palace of Winds 32 (2F Spikebar Key Chest) */ + LV5_2c_00, /**< Defeated Wizzrobes in Palace of Winds 5 (Roc's Cape) */ + LV5_2c_01, /**< undocumented */ + LV5_2c_02, /**< undocumented */ + LV5_2c_03, /**< undocumented */ + LV5_2c_T0, /**< Roc's Cape Chest Open in Palace of Winds 5 (Roc's Cape) */ + LV5_2c_CAP_0, /**< Ezlo talks about clouds in Palace of Winds 5 (Roc's Cape) */ + LV5_2d_T0, /**< Red 3 Prong Kinstone Chest Open in Palace of Winds 4 (Firebar Bob-omb Grate) */ + LV5_31_CAP_0, /**< Ezlo talks about Palace of Winds in Palace of Winds Entrance */ + LV5_32_CAP_0, /**< Ezlo talks about dark room in Palace of Winds 28 (1F Dark Room) */ + LV5_32_T0, /**< Compass Chest Open in Palace of Winds 28 (1F Dark Room) */ + LV5_32_T1, /**< Small Key Chest Open in Palace of Winds 28 (1F Dark Room) */ + LV5_BOSSDIE, /**< Vortex to Gyorg Removed + Receive Element in Palace of Winds 46 (Vortex to Gyorg) */ + LV5_MBOSSDIE, /**< undocumented */ + LV5_00_UTSUWA, /**< Obtained Heart Container in Palace of Winds 46 (Vortex to Gyorg) */ + LV5_0c_00, /**< Defeated Red Darknut in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_0A_CAP_0, /**< Ezlo talks about hole in Palace of Winds 25 (5F Hole to Darknut Miniboss) */ + LV5_0f_HK, /**< Obtained Heart Piece in Palace of Winds 18 (4F Cloud Jumps to 5F) */ + LV5_05_03, /**< Door Open in Palace of Winds 23 (5F Moblin & Wizzrobe Fight) */ + LV5_08_02, /**< Key Falls in Palace of Winds 20 (5F Boss Door Hall) */ + LV5_0c_01, /**< undocumented */ + LV5_0c_02, /**< Blue Portal & Bridge Appeared in Palace of Winds 26 (1F Darknut Miniboss) */ + LV5_22_02, /**< Door Open after Spinies in Palace of Winds 7 (2F East) */ + LV5_15_05, /**< Red Portal Active in Palace of Winds 39 (4F Bombarossa Block Hole) */ + LV5_20_02, /**< Key Falls & Door Open in Palace of Winds 12 (3F Key Switch) */ END_9, } LocalFlags9; typedef enum { BEGIN_10, - LV6_00_WALK, /* Visited Room in Dark Hyrule Castle 10 (1F Entrance) */ - LV6_01_WALK, /* Visited Room in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ - LV6_02_WALK, /* Visited Room in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ - LV6_03_WALK, /* Visited Room in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ - LV6_04_WALK, /* Visited Room in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ - LV6_05_WALK, /* Visited Room in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ - LV6_06_WALK, /* Visited Room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_07_WALK, /* Visited Room in Dark Hyrule Castle 50 (2F Northwest Corner) */ - LV6_08_WALK, /* Visited Room in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ - LV6_09_WALK, /* Visited Room in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_0A_WALK, /* Visited Room in Dark Hyrule Castle 37 (2F North Darknut) */ - LV6_0B_WALK, /* Visited Room in Dark Hyrule Castle 40 (2F Northeast Ghini) */ - LV6_0C_WALK, /* Visited Room in Dark Hyrule Castle 39 (2F Northeast Firebar) */ - LV6_0D_WALK, /* Visited Room in Dark Hyrule Castle 29 (2F Northeast Corner) */ - LV6_0E_WALK, /* Visited Room in Dark Hyrule Castle 35 (2F Center Northwest) */ - LV6_0F_WALK, /* Visited Room in Dark Hyrule Castle 36 (2F Center North, Sparks) */ - LV6_10_WALK, /* Visited Room in Dark Hyrule Castle 38 (2F Center Northeast) */ - LV6_11_WALK, - LV6_12_WALK, /* Visited Room in Dark Hyrule Castle 30/34 (2F Center East/Center West) */ - LV6_13_WALK, /* Visited Room in Dark Hyrule Castle 33 (2F Center Southwest) */ - LV6_14_WALK, /* Visited Room in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ - LV6_15_WALK, /* Visited Room in Dark Hyrule Castle 42 (2F Center Southeast) */ - LV6_16_WALK, /* Visited Room in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ - LV6_17_WALK, /* Visited Room in Dark Hyrule Castle 31 (2F South Entrance) */ - LV6_18_WALK, /* Visited Room in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ - LV6_19_WALK, /* Visited Room in Dark Hyrule Castle 48 (2F Southwest Corner) */ - LV6_1A_WALK, /* Visited Room in Dark Hyrule Castle 47 (2F Southwest Ghini) */ - LV6_1B_WALK, - LV6_1C_WALK, /* Visited Room in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ - LV6_1D_WALK, /* Visited Room in Dark Hyrule Castle 44 (2F Southeast Corner) */ - LV6_1E_WALK, /* Visited Room in Dark Hyrule Castle (1F Northwest Gibdo Corner) */ - LV6_1F_WALK, /* Visited Room in Dark Hyrule Castle 24 (1F Throne Room) */ - LV6_20_WALK, /* Visited Room in Dark Hyrule Castle 27 (1F Compass Room) */ - LV6_21_WALK, /* Visited Room in Dark Hyrule Castle 28 (1F Stairs to 2F) */ - LV6_22_WALK, /* Visited Room in Dark Hyrule Castle 23 (1F Entrance to Throne Room) */ - LV6_23_WALK, /* Visited Room in Dark Hyrule Castle 14 (1F Center Northwest) */ - LV6_24_WALK, /* Visited Room in Dark Hyrule Castle 15 (1F Center North) */ - LV6_25_WALK, /* Visited Room in Dark Hyrule Castle 16 (1F Center Northeast) */ - LV6_26_WALK, /* Visited Room in Dark Hyrule Castle 13 (1F Center West) */ - LV6_27_WALK, /* Visited Room in Dark Hyrule Castle 17 (1F Center East) */ - LV6_28_WALK, /* Visited Room in Dark Hyrule Castle 12 (1F Center Southwest) */ - LV6_29_WALK, /* Visited Room in Dark Hyrule Castle 11 (1F Center South) */ - LV6_2A_WALK, /* Visited Room in Dark Hyrule Castle 18 (1F Center Southeast) */ - LV6_2B_WALK, /* Visited Room in Dark Hyrule Castle (1F Pot Corner) */ - LV6_2C_WALK, /* Visited Room in Dark Hyrule Castle (1F Southeast Gibdo Corner) */ - LV6_2D_WALK, /* Visited Room in Dark Hyrule Castle 25 (B1 Dark Hall West) */ - LV6_2E_WALK, /* Visited Room in Dark Hyrule Castle 26 (B1 Dark Hall East) */ - LV6_2F_WALK, /* Visited Room in Dark Hyrule Castle 22 (B1 North Stairs) */ - LV6_30_WALK, /* Visited Room in Dark Hyrule Castle 4 (B1 Center Northwest, Stairs to B2) */ - LV6_31_WALK, /* Visited Room in Dark Hyrule Castle 5 (B1 Center North, Minish Portal) */ - LV6_32_WALK, /* Visited Room in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ - LV6_33_WALK, /* Visited Room in Dark Hyrule Castle 3 (B1 Center West, Firebars) */ - LV6_34_WALK, /* Visited Room in Dark Hyrule Castle 20 (B1 Center East, Cannons) */ - LV6_35_WALK, /* Visited Room in Dark Hyrule Castle 2 (B1 Center Southwest) */ - LV6_36_WALK, /* Visited Room in Dark Hyrule Castle 19 (B1 Center East) */ - LV6_37_WALK, /* Visited Room in Dark Hyrule Castle 9 (B1 South Stairs) */ - LV6_38_WALK, /* Visited Room in Dark Hyrule Castle 7 (B2 Prison West) */ - LV6_39_WALK, /* Visited Room in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_3A_WALK, /* Visited Room in Dark Hyrule Castle 6 (B2 Prison Southwest) */ - LV6_3B_WALK, - LV6_00_00, /* Locked Door Open in Dark Hyrule Castle 10 (1F Entrance) */ - LV6_01_T0, /* Small Key Chest Open in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ - LV6_02_T0, /* Small Key Chest Open in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ - LV6_03_T0, /* Small Key Chest Open in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ - LV6_04_T0, /* Small Key Chest Open in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ - LV6_07_00, /* Hit Door Button in Dark Hyrule Castle 50 (2F Northwest Corner) */ - LV6_09_T0, /* Boss Key Chest Open in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_09_KB0, /* Opened Top Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_09_KB1, /* Opened Top Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_09_KB2, /* Opened Bottom Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_09_KB3, /* Opened Bottom Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ - LV6_0a_01, /* Defeated Darknut in Dark Hyrule Castle 37 (2F North Darknut) */ - LV6_0b_00, /* Defeated Ghini in Dark Hyrule Castle 40 (2F Northeast Ghini) */ - LV6_0c_00, /* All Torches Lit in Dark Hyrule Castle 39 (2F Northeast Firebar) */ - LV6_0c_01, /* Door Open in Dark Hyrule Castle 39 (2F Northeast Firebar) */ - LV6_0e_00, /* Door Open & Camera Moves in Dark Hyrule Castle 35 (2F Center Northwest) */ - LV6_10_00, /* Doors Open & Camera Moves in Dark Hyrule Castle 38 (2F Center Northeast) */ - LV6_11_00, /* Hit Left Switch in Dark Hyrule Castle 34 (2F Center West) */ - LV6_11_01, /* Hit Right Switch in Dark Hyrule Castle 34 (2F Center West) */ - LV6_11_B0, /* Blew up left block in Dark Hyrule Castle 34 (2F Center West) */ - LV6_11_B1, /* Blew up middle block in Dark Hyrule Castle 34 (2F Center West) */ - LV6_11_B2, /* Blew up right block in Dark Hyrule Castle 34 (2F Center West) */ - LV6_13_00, /* Door Open & Camera Moves in Dark Hyrule Castle 33 (2F Center Southwest) */ - LV6_14_00, /* Defeated Ball and Chain Soldiers in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ - LV6_14_BOSSDOOR, /* Boss Door Open in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ - LV6_15_00, /* Door Open & Camera Moves in Dark Hyrule Castle 42 (2F Center Southeast) */ - LV6_16_00, /* Door Open in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ - LV6_17_00, /* Hit Switches in Dark Hyrule Castle 31 (2F South Entrance) */ - LV6_17_01, /* Door Open in Dark Hyrule Castle 31 (2F South Entrance) */ - LV6_18_00, /* Hit Switches in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ - LV6_1a_00, /* Defeated Ghini in Dark Hyrule Castle 47 (2F Southwest Ghini) */ - LV6_1c_CAP_0, /* Ezlo talks about Dark Hyrule Castle in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ - LV6_1d_00, /* Hit Door Button in Dark Hyrule Castle 44 (2F Southeast Corner) */ - LV6_1f_00, /* Defeated Darknut in Dark Hyrule Castle 24 (1F Throne Room) */ - LV6_20_T0, /* Compass Chest Open in Dark Hyrule Castle, Compass Room */ - LV6_24_00, /* Tile Puzzle Complete in Dark Hyrule Castle 15 (1F Center North) */ - LV6_26_00, /* Cannons Destroyed in Dark Hyrule Castle 12 (1F Center West) */ - LV6_26_01, /* Pillars Down in Dark Hyrule Castle 12 (1F Center West) */ - LV6_26_CAP_0, /* Ezlo talks about cannons in Dark Hyrule Castle 12 (1F Center West) */ - LV6_27_00, /* Small Key Chest Appeared in Dark Hyrule Castle 17 (1F Center East) */ - LV6_27_T0, /* Small Key Chest Open in Dark Hyrule Castle 17 (1F Center East) */ - LV6_30_00, /* Blew up wall in Dark Hyrule Castle 4 (B1 Stairs to B2) */ - LV6_32_00, /* Blew up wall in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ - LV6_34_00, /* Cannons Destroyed in Dark Hyrule Castle 20 (B1 Center East) */ - LV6_34_01, /* Pillars Down in Dark Hyrule Castle 20 (B1 Center East) */ - LV6_35_00, /* Locked Door Open in Dark Hyrule Castle 2 (B1 Center Southwest) */ - LV6_37_T0, /* Map Chest Open in Dark Hyrule Castle 9 (B1 South Stairs) */ - LV6_39_00, - LV6_39_01, /* Hit Button in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_39_02, - LV6_1f_CHAIR_L, /* Moved Throne in Dark Hyrule Castle 24 (1F Throne Room) */ - LV6_1f_CHAIR_R, - LV6_1d_KEYGET, /* Obtained Small Key from Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_1b_TAREMAKU, - LV6SOTO_01_KAIJO, /* Soldier moves out of the way in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_SEKIKA_END, - LV6_GUFUU1_FIGURE, /* Entered Vaati 1 boss room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_GUFUU2_FIGURE, /* Auto walk after defeating Vaati? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_GUFUU1_GISHIKI, /* Falling in pit in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_GUFUU1_DEMO, /* Started Vaati 1? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_ZELDA_DISCURSE, /* Transition to castle escape start in Dark Hyrule Castle (Zelda) */ - LV6_00_ESCAPE, /* Ezlo talks about entrance being blocked in Dark Hyrule Castle 10 (1F Entrance) */ - LV6_GUFUU2_DEAD, /* Defeated Vaati 2? in Dark Hyrule Castle Boss (Vaati 2) */ - LV6_KANE_START, /* Ezlo talks about bell in Dark Hyrule Castle Boss (Ball & Chain Soldier) */ - LV6_KANE_1ST, /* Ezlo talks about bell again in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ - LV6_KANE_2ND, /* Ezlo talks about bell yet again in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ - LV6_SOTO_ENDING, /* Warped back to garden? in Dark Hyrule Castle Boss (Vaati 3) */ - LV6_08_00, /* Hit Eye Switches in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ - LV6_39_03, /* Prison Doors Open in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_SOTO_06_00, /* Hit East Bridge Switch in Dark Hyrule Castle Outside 2F South */ - LV6_SOTO_06_01, /* Hit West Bridge Switch in Dark Hyrule Castle Outside 2F South */ - LV6_0A_CAP_0, - LV6SOTO_01_CAP_0, /* Ezlo talks about frozen people in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_0a_00, /* Doors Open & Blue Portal Activated in Dark Hyrule Castle 37 (2F North Darknut) */ - LV6_0b_01, /* Door Open in Dark Hyrule Castle 40 (2F Northeast Ghini) */ - LV6_0e_01, /* Big Door Open in Dark Hyrule Castle 35 (2F Center Northwest) */ - LV6_10_01, /* Doors Open in Dark Hyrule Castle 38 (2F Center Northeast) */ - LV6_13_01, /* Big Door Open in Dark Hyrule Castle 33 (2F Center Southwest) */ - LV6_14_01, /* Doors Open & Red Portal Activated in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ - LV6_15_01, /* Big Door Open in Dark Hyrule Castle 42 (2F Center Southeast) */ - LV6_1a_01, /* Door Open in Dark Hyrule Castle 47 (2F Southwest Ghini) */ - LV6_1f_01, /* Doors Open in Dark Hyrule Castle 24 (1F Throne Room) */ - LV6_39_04, /* Camera moves to middle in Dark Hyrule Castle 8 (B2 Prison East) */ - LV6_17_02, /* Camera moves to door in Dark Hyrule Castle 31 (2F South Entrance) */ - LV6_18_01, /* Door Open in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ - LV6_08_01, /* Door Open in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ - LV6_SOTO_01_00, /* Unfroze Minister Potho in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_SOTO_01_01, /* Unfroze Left Soldier in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_SOTO_01_02, /* Unfroze Bottom Soldier in Dark Hyrule Castle, Garden to Sanctuary */ - LV6_39_KING, /* Unfroze King Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_00_WALK, /**< Visited Room in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_01_WALK, /**< Visited Room in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ + LV6_02_WALK, /**< Visited Room in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ + LV6_03_WALK, /**< Visited Room in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ + LV6_04_WALK, /**< Visited Room in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ + LV6_05_WALK, /**< Visited Room in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ + LV6_06_WALK, /**< Visited Room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_07_WALK, /**< Visited Room in Dark Hyrule Castle 50 (2F Northwest Corner) */ + LV6_08_WALK, /**< Visited Room in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_09_WALK, /**< Visited Room in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_0A_WALK, /**< Visited Room in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0B_WALK, /**< Visited Room in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0C_WALK, /**< Visited Room in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0D_WALK, /**< Visited Room in Dark Hyrule Castle 29 (2F Northeast Corner) */ + LV6_0E_WALK, /**< Visited Room in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_0F_WALK, /**< Visited Room in Dark Hyrule Castle 36 (2F Center North, Sparks) */ + LV6_10_WALK, /**< Visited Room in Dark Hyrule Castle 38 (2F Center Northeast) */ + LV6_11_WALK, /**< undocumented */ + LV6_12_WALK, /**< Visited Room in Dark Hyrule Castle 30/34 (2F Center East/Center West) */ + LV6_13_WALK, /**< Visited Room in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_WALK, /**< Visited Room in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_WALK, /**< Visited Room in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_16_WALK, /**< Visited Room in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ + LV6_17_WALK, /**< Visited Room in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_WALK, /**< Visited Room in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_19_WALK, /**< Visited Room in Dark Hyrule Castle 48 (2F Southwest Corner) */ + LV6_1A_WALK, /**< Visited Room in Dark Hyrule Castle 47 (2F Southwest Ghini) */ + LV6_1B_WALK, /**< undocumented */ + LV6_1C_WALK, /**< Visited Room in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ + LV6_1D_WALK, /**< Visited Room in Dark Hyrule Castle 44 (2F Southeast Corner) */ + LV6_1E_WALK, /**< Visited Room in Dark Hyrule Castle (1F Northwest Gibdo Corner) */ + LV6_1F_WALK, /**< Visited Room in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_20_WALK, /**< Visited Room in Dark Hyrule Castle 27 (1F Compass Room) */ + LV6_21_WALK, /**< Visited Room in Dark Hyrule Castle 28 (1F Stairs to 2F) */ + LV6_22_WALK, /**< Visited Room in Dark Hyrule Castle 23 (1F Entrance to Throne Room) */ + LV6_23_WALK, /**< Visited Room in Dark Hyrule Castle 14 (1F Center Northwest) */ + LV6_24_WALK, /**< Visited Room in Dark Hyrule Castle 15 (1F Center North) */ + LV6_25_WALK, /**< Visited Room in Dark Hyrule Castle 16 (1F Center Northeast) */ + LV6_26_WALK, /**< Visited Room in Dark Hyrule Castle 13 (1F Center West) */ + LV6_27_WALK, /**< Visited Room in Dark Hyrule Castle 17 (1F Center East) */ + LV6_28_WALK, /**< Visited Room in Dark Hyrule Castle 12 (1F Center Southwest) */ + LV6_29_WALK, /**< Visited Room in Dark Hyrule Castle 11 (1F Center South) */ + LV6_2A_WALK, /**< Visited Room in Dark Hyrule Castle 18 (1F Center Southeast) */ + LV6_2B_WALK, /**< Visited Room in Dark Hyrule Castle (1F Pot Corner) */ + LV6_2C_WALK, /**< Visited Room in Dark Hyrule Castle (1F Southeast Gibdo Corner) */ + LV6_2D_WALK, /**< Visited Room in Dark Hyrule Castle 25 (B1 Dark Hall West) */ + LV6_2E_WALK, /**< Visited Room in Dark Hyrule Castle 26 (B1 Dark Hall East) */ + LV6_2F_WALK, /**< Visited Room in Dark Hyrule Castle 22 (B1 North Stairs) */ + LV6_30_WALK, /**< Visited Room in Dark Hyrule Castle 4 (B1 Center Northwest, Stairs to B2) */ + LV6_31_WALK, /**< Visited Room in Dark Hyrule Castle 5 (B1 Center North, Minish Portal) */ + LV6_32_WALK, /**< Visited Room in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ + LV6_33_WALK, /**< Visited Room in Dark Hyrule Castle 3 (B1 Center West, Firebars) */ + LV6_34_WALK, /**< Visited Room in Dark Hyrule Castle 20 (B1 Center East, Cannons) */ + LV6_35_WALK, /**< Visited Room in Dark Hyrule Castle 2 (B1 Center Southwest) */ + LV6_36_WALK, /**< Visited Room in Dark Hyrule Castle 19 (B1 Center East) */ + LV6_37_WALK, /**< Visited Room in Dark Hyrule Castle 9 (B1 South Stairs) */ + LV6_38_WALK, /**< Visited Room in Dark Hyrule Castle 7 (B2 Prison West) */ + LV6_39_WALK, /**< Visited Room in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_3A_WALK, /**< Visited Room in Dark Hyrule Castle 6 (B2 Prison Southwest) */ + LV6_3B_WALK, /**< undocumented */ + LV6_00_00, /**< Locked Door Open in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_01_T0, /**< Small Key Chest Open in Dark Hyrule Castle 51 (3F Northwest Key Chest) */ + LV6_02_T0, /**< Small Key Chest Open in Dark Hyrule Castle 41 (3F Northeast Key Chest) */ + LV6_03_T0, /**< Small Key Chest Open in Dark Hyrule Castle 48 (3F Southwest Key Chest) */ + LV6_04_T0, /**< Small Key Chest Open in Dark Hyrule Castle 45 (3F Southeast Key Chest) */ + LV6_07_00, /**< Hit Door Button in Dark Hyrule Castle 50 (2F Northwest Corner) */ + LV6_09_T0, /**< Boss Key Chest Open in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB0, /**< Opened Top Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB1, /**< Opened Top Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB2, /**< Opened Bottom Middle Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_09_KB3, /**< Opened Bottom Key Block in Dark Hyrule Castle 52 (2F Boss Key) */ + LV6_0a_01, /**< Defeated Darknut in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0b_00, /**< Defeated Ghini in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0c_00, /**< All Torches Lit in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0c_01, /**< Door Open in Dark Hyrule Castle 39 (2F Northeast Firebar) */ + LV6_0e_00, /**< Door Open & Camera Moves in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_10_00, /**< Doors Open & Camera Moves in Dark Hyrule Castle 38 (2F Center Northeast) */ + LV6_11_00, /**< Hit Left Switch in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_01, /**< Hit Right Switch in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B0, /**< Blew up left block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B1, /**< Blew up middle block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_11_B2, /**< Blew up right block in Dark Hyrule Castle 34 (2F Center West) */ + LV6_13_00, /**< Door Open & Camera Moves in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_00, /**< Defeated Ball and Chain Soldiers in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_14_BOSSDOOR, /**< Boss Door Open in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_00, /**< Door Open & Camera Moves in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_16_00, /**< Door Open in Dark Hyrule Castle 46 (2F Southwest Floortiles) */ + LV6_17_00, /**< Hit Switches in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_17_01, /**< Door Open in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_00, /**< Hit Switches in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_1a_00, /**< Defeated Ghini in Dark Hyrule Castle 47 (2F Southwest Ghini) */ + LV6_1c_CAP_0, /**< Ezlo talks about Dark Hyrule Castle in Dark Hyrule Castle 1 (B1 Entrance to Garden) */ + LV6_1d_00, /**< Hit Door Button in Dark Hyrule Castle 44 (2F Southeast Corner) */ + LV6_1f_00, /**< Defeated Darknut in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_20_T0, /**< Compass Chest Open in Dark Hyrule Castle, Compass Room */ + LV6_24_00, /**< Tile Puzzle Complete in Dark Hyrule Castle 15 (1F Center North) */ + LV6_26_00, /**< Cannons Destroyed in Dark Hyrule Castle 12 (1F Center West) */ + LV6_26_01, /**< Pillars Down in Dark Hyrule Castle 12 (1F Center West) */ + LV6_26_CAP_0, /**< Ezlo talks about cannons in Dark Hyrule Castle 12 (1F Center West) */ + LV6_27_00, /**< Small Key Chest Appeared in Dark Hyrule Castle 17 (1F Center East) */ + LV6_27_T0, /**< Small Key Chest Open in Dark Hyrule Castle 17 (1F Center East) */ + LV6_30_00, /**< Blew up wall in Dark Hyrule Castle 4 (B1 Stairs to B2) */ + LV6_32_00, /**< Blew up wall in Dark Hyrule Castle 21 (B1 Center Northeast, Keatons) */ + LV6_34_00, /**< Cannons Destroyed in Dark Hyrule Castle 20 (B1 Center East) */ + LV6_34_01, /**< Pillars Down in Dark Hyrule Castle 20 (B1 Center East) */ + LV6_35_00, /**< Locked Door Open in Dark Hyrule Castle 2 (B1 Center Southwest) */ + LV6_37_T0, /**< Map Chest Open in Dark Hyrule Castle 9 (B1 South Stairs) */ + LV6_39_00, /**< undocumented */ + LV6_39_01, /**< Hit Button in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_39_02, /**< undocumented */ + LV6_1f_CHAIR_L, /**< Moved Throne in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_1f_CHAIR_R, /**< undocumented */ + LV6_1d_KEYGET, /**< Obtained Small Key from Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_1b_TAREMAKU, /**< undocumented */ + LV6SOTO_01_KAIJO, /**< Soldier moves out of the way in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_SEKIKA_END, /**< undocumented */ + LV6_GUFUU1_FIGURE, /**< Entered Vaati 1 boss room in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU2_FIGURE, /**< Auto walk after defeating Vaati? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU1_GISHIKI, /**< Falling in pit in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_GUFUU1_DEMO, /**< Started Vaati 1? in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_ZELDA_DISCURSE, /**< Transition to castle escape start in Dark Hyrule Castle (Zelda) */ + LV6_00_ESCAPE, /**< Ezlo talks about entrance being blocked in Dark Hyrule Castle 10 (1F Entrance) */ + LV6_GUFUU2_DEAD, /**< Defeated Vaati 2? in Dark Hyrule Castle Boss (Vaati 2) */ + LV6_KANE_START, /**< Ezlo talks about bell in Dark Hyrule Castle Boss (Ball & Chain Soldier) */ + LV6_KANE_1ST, /**< Ezlo talks about bell again in Dark Hyrule Castle 53 (3F Vaati Keaton Hallway) */ + LV6_KANE_2ND, /**< Ezlo talks about bell yet again in Dark Hyrule Castle 54 (3F Vaati Triple Darknuts) */ + LV6_SOTO_ENDING, /**< Warped back to garden? in Dark Hyrule Castle Boss (Vaati 3) */ + LV6_08_00, /**< Hit Eye Switches in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_39_03, /**< Prison Doors Open in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_SOTO_06_00, /**< Hit East Bridge Switch in Dark Hyrule Castle Outside 2F South */ + LV6_SOTO_06_01, /**< Hit West Bridge Switch in Dark Hyrule Castle Outside 2F South */ + LV6_0A_CAP_0, /**< undocumented */ + LV6SOTO_01_CAP_0, /**< Ezlo talks about frozen people in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_0a_00, /**< Doors Open & Blue Portal Activated in Dark Hyrule Castle 37 (2F North Darknut) */ + LV6_0b_01, /**< Door Open in Dark Hyrule Castle 40 (2F Northeast Ghini) */ + LV6_0e_01, /**< Big Door Open in Dark Hyrule Castle 35 (2F Center Northwest) */ + LV6_10_01, /**< Doors Open in Dark Hyrule Castle 38 (2F Center Northeast) */ + LV6_13_01, /**< Big Door Open in Dark Hyrule Castle 33 (2F Center Southwest) */ + LV6_14_01, /**< Doors Open & Red Portal Activated in Dark Hyrule Castle 32 (2F Center South, Boss Door) */ + LV6_15_01, /**< Big Door Open in Dark Hyrule Castle 42 (2F Center Southeast) */ + LV6_1a_01, /**< Door Open in Dark Hyrule Castle 47 (2F Southwest Ghini) */ + LV6_1f_01, /**< Doors Open in Dark Hyrule Castle 24 (1F Throne Room) */ + LV6_39_04, /**< Camera moves to middle in Dark Hyrule Castle 8 (B2 Prison East) */ + LV6_17_02, /**< Camera moves to door in Dark Hyrule Castle 31 (2F South Entrance) */ + LV6_18_01, /**< Door Open in Dark Hyrule Castle 43 (2F Southeast Clone Switches) */ + LV6_08_01, /**< Door Open in Dark Hyrule Castle 49 (2F Northwest Eye Switches) */ + LV6_SOTO_01_00, /**< Unfroze Minister Potho in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_SOTO_01_01, /**< Unfroze Left Soldier in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_SOTO_01_02, /**< Unfroze Bottom Soldier in Dark Hyrule Castle, Garden to Sanctuary */ + LV6_39_KING, /**< Unfroze King Daltus in Dark Hyrule Castle 8 (B2 Prison East) */ END_10, } LocalFlags10; From 193e503140a34a799602ca60dc049e3b84e24671 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sat, 13 May 2023 17:54:34 +0200 Subject: [PATCH 85/86] fix formatting in zeldaFollower.c --- src/npc/zeldaFollower.c | 51 +++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index 24d9c30c..0726caab 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -19,20 +19,19 @@ typedef union { #define ZELDA_FOLLOWER_HEAP_LEN 20 -#define ZELDA_FOLLOWER_HEAP ((ZeldaFollowerItem *)this->myHeap) -#define ZELDA_FOLLOWER_HEAP_END ((ZeldaFollowerItem *)this->myHeap + (ZELDA_FOLLOWER_HEAP_LEN - 1)) - -#define ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr) \ - do { \ - int i; \ - heapPtr = ((ZeldaFollowerItem*)this->myHeap); \ - heapPtr += (ZELDA_FOLLOWER_HEAP_LEN - 2); \ - for ( i = 0; i < (ZELDA_FOLLOWER_HEAP_LEN - 1); i++) { \ - heapPtr[1] = heapPtr[0]; \ - heapPtr--; \ - } \ - } while (0) +#define ZELDA_FOLLOWER_HEAP ((ZeldaFollowerItem*)this->myHeap) +#define ZELDA_FOLLOWER_HEAP_END ((ZeldaFollowerItem*)this->myHeap + (ZELDA_FOLLOWER_HEAP_LEN - 1)) +#define ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr) \ + do { \ + int i; \ + heapPtr = ((ZeldaFollowerItem*)this->myHeap); \ + heapPtr += (ZELDA_FOLLOWER_HEAP_LEN - 2); \ + for (i = 0; i < (ZELDA_FOLLOWER_HEAP_LEN - 1); i++) { \ + heapPtr[1] = heapPtr[0]; \ + heapPtr--; \ + } \ + } while (0) void sub_08068318(Entity*); void sub_0806854C(Entity*, u32*); @@ -66,16 +65,16 @@ void sub_08068318(Entity* this) { ZeldaFollowerItem* heapPtr; ZeldaFollowerItem item; - item.FIELDS.x = gPlayerEntity.x.HALF_U.HI; - item.FIELDS.y = gPlayerEntity.y.HALF_U.HI; - item.FIELDS.z = gPlayerEntity.z.HALF_U.HI; - item.FIELDS.framestate = gPlayerState.framestate; + item.FIELDS.x = gPlayerEntity.x.HALF_U.HI; + item.FIELDS.y = gPlayerEntity.y.HALF_U.HI; + item.FIELDS.z = gPlayerEntity.z.HALF_U.HI; + item.FIELDS.framestate = gPlayerState.framestate; item.FIELDS.animationState = gPlayerEntity.animationState; item.FIELDS.collisionLayer = gPlayerEntity.collisionLayer; heapPtr = this->myHeap; - if ( (heapPtr->FIELDS.framestate == 0xa && item.FIELDS.framestate != 0xa) || + if ((heapPtr->FIELDS.framestate == 0xa && item.FIELDS.framestate != 0xa) || (heapPtr->FIELDS.framestate == 0x16 && item.FIELDS.framestate != 0x16)) { this->x.HALF.HI = gPlayerEntity.x.HALF.HI; this->y.HALF.HI = gPlayerEntity.y.HALF.HI; @@ -84,7 +83,7 @@ void sub_08068318(Entity* this) { } animIndex = 0; - if (item.DWORD != heapPtr->DWORD || item.FIELDS.framestate == 0x16 || item.FIELDS.framestate == 0xa ) { + if (item.DWORD != heapPtr->DWORD || item.FIELDS.framestate == 0x16 || item.FIELDS.framestate == 0xa) { ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); heapPtr = ZELDA_FOLLOWER_HEAP; heapPtr[0] = item; @@ -101,12 +100,8 @@ void sub_08068318(Entity* this) { ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); animIndex = 0x4; } else { - dist = sub_080041E8( - gPlayerEntity.x.HALF.HI, - gPlayerEntity.y.HALF.HI, - (u16) heapPtr->FIELDS.x, - (u16) heapPtr->FIELDS.y - ); + dist = sub_080041E8(gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, (u16)heapPtr->FIELDS.x, + (u16)heapPtr->FIELDS.y); dist = ((u32)dist) >> 0x4; if (dist > 0x18) { ZELDA_FOLLOWER_HEAP_SHIFT_RIGHT(this, heapPtr); @@ -117,9 +112,9 @@ void sub_08068318(Entity* this) { heapPtr = ZELDA_FOLLOWER_HEAP; heapPtr += ZELDA_FOLLOWER_HEAP_LEN - 1; - this->x.HALF.HI = heapPtr->FIELDS.x; - this->y.HALF.HI = heapPtr->FIELDS.y; - this->z.HALF.HI = heapPtr->FIELDS.z; + this->x.HALF.HI = heapPtr->FIELDS.x; + this->y.HALF.HI = heapPtr->FIELDS.y; + this->z.HALF.HI = heapPtr->FIELDS.z; this->animationState = heapPtr->FIELDS.animationState; this->collisionLayer = heapPtr->FIELDS.collisionLayer; From 6fad53f263740cc55dc293b3c053b7edf656b244 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Sat, 13 May 2023 17:59:56 +0200 Subject: [PATCH 86/86] remove extra spaces maintaining consistent alignment for the closing comment is too much work and there is no real use for it --- include/flags.h | 154 ++++++++++++++++++++++++------------------------ 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/include/flags.h b/include/flags.h index 919b99e7..fd176a55 100644 --- a/include/flags.h +++ b/include/flags.h @@ -83,97 +83,97 @@ typedef enum { /*0x07*/ LV6_CLEAR, /**< undocumented */ /*0x08*/ LV7_CLEAR, /**< undocumented */ /*0x09*/ LV8_CLEAR, /**< undocumented */ - /*0x0a*/ MACHI_SET_1, /**< Defeated Big Green Chuchu */ - /*0x0b*/ MACHI_SET_2, /**< Defeated Gleerok */ + /*0x0a*/ MACHI_SET_1, /**< Defeated Big Green Chuchu */ + /*0x0b*/ MACHI_SET_2, /**< Defeated Gleerok */ /*0x0c*/ MACHI_SET_3, /**< undocumented */ - /*0x0d*/ MACHI_SET_4, /**< Defeated Big Octorok */ - /*0x0e*/ MACHI_SET_5, /**< Defeated Gyorg Pair */ + /*0x0d*/ MACHI_SET_4, /**< Defeated Big Octorok */ + /*0x0e*/ MACHI_SET_5, /**< Defeated Gyorg Pair */ /*0x0f*/ MACHI_SET_6, /**< undocumented */ /*0x10*/ MACHI_SET_7, /**< undocumented */ /*0x11*/ MACHI_SET_8, /**< undocumented */ - /*0x12*/ MACHI_MACHIHOKORI, /**< Sucked dust from carpet */ - /*0x13*/ START, /**< Met Zelda */ - /*0x14*/ EZERO_1ST, /**< Met Ezlo */ - /*0x15*/ TABIDACHI, /**< Talked to Daltus and Smith */ + /*0x12*/ MACHI_MACHIHOKORI, /**< Sucked dust from carpet */ + /*0x13*/ START, /**< Met Zelda */ + /*0x14*/ EZERO_1ST, /**< Met Ezlo */ + /*0x15*/ TABIDACHI, /**< Talked to Daltus and Smith */ /*0x16*/ LV1TARU, /**< undocumented */ - /*0x17*/ LV1TARU_OPEN, /**< Sucked barrel web */ - /*0x18*/ TATEKAKE_HOUSE, /**< Red house complete */ - /*0x19*/ TATEKAKE_TOCHU, /**< Red house frame */ - /*0x1a*/ WATERBEAN_OUT, /**< Holding bean */ - /*0x1b*/ WATERBEAN_PUT, /**< Threw bean in hole */ - /*0x1c*/ ZELDA_CHASE, /**< Enter town festival */ - /*0x1d*/ INLOCK, /**< Gave key to Talon */ - /*0x1e*/ DASHBOOTS, /**< Read Castor Wilds sign */ - /*0x1f*/ LEFT_DOOR_OPEN, /**< Spoke to Dr. Left */ - /*0x20*/ HAKA_KEY_LOST, /**< Graveyard key stolen */ + /*0x17*/ LV1TARU_OPEN, /**< Sucked barrel web */ + /*0x18*/ TATEKAKE_HOUSE, /**< Red house complete */ + /*0x19*/ TATEKAKE_TOCHU, /**< Red house frame */ + /*0x1a*/ WATERBEAN_OUT, /**< Holding bean */ + /*0x1b*/ WATERBEAN_PUT, /**< Threw bean in hole */ + /*0x1c*/ ZELDA_CHASE, /**< Enter town festival */ + /*0x1d*/ INLOCK, /**< Gave key to Talon */ + /*0x1e*/ DASHBOOTS, /**< Read Castor Wilds sign */ + /*0x1f*/ LEFT_DOOR_OPEN, /**< Spoke to Dr. Left */ + /*0x20*/ HAKA_KEY_LOST, /**< Graveyard key stolen */ /*0x21*/ HAKA_KEY_FOUND, /**< Graveyard key obtained back */ /*0x22*/ ENTRANCE_OK, /**< undocumented */ /*0x23*/ TATSUMAKI, /**< undocumented */ - /*0x24*/ KUMOTATSUMAKI, /**< Vortex spawned */ + /*0x24*/ KUMOTATSUMAKI, /**< Vortex spawned */ /*0x25*/ KAITENGIRI, /**< undocumented */ /*0x26*/ DAIKAITENGIRI, /**< undocumented */ /*0x27*/ GATOTSU, /**< undocumented */ /*0x28*/ KABUTOWARI, /**< undocumented */ - /*0x29*/ MIZUKAKI_START, /**< Spoke to Lake Hylia Minish */ - /*0x2a*/ MIZUKAKI_HARIFALL, /**< Library book falling */ - /*0x2b*/ RENTED_HOUSE_DIN, /**< Din moves to blue house */ - /*0x2c*/ RENTED_HOUSE_NAYRU, /**< Nayru moves to blue house */ - /*0x2d*/ RENTED_HOUSE_FARORE, /**< Farore moves to blue house */ - /*0x2e*/ NEW_HOUSE_DIN, /**< Din moves to red house */ - /*0x2f*/ NEW_HOUSE_NAYRU, /**< Nayru moves to red house */ - /*0x30*/ NEW_HOUSE_FARORE, /**< Farore moves to red house */ - /*0x31*/ OUGONTEKI_A, /**< Golden Octorok defeated */ - /*0x32*/ OUGONTEKI_B, /**< Golden Tektite defeated */ - /*0x33*/ OUGONTEKI_C, /**< Golden Rope defeated */ - /*0x34*/ OUGONTEKI_D, /**< Golden Rope defeated */ - /*0x35*/ OUGONTEKI_E, /**< Golden Rope defeated */ - /*0x36*/ OUGONTEKI_F, /**< Golden Tektite defeated */ - /*0x37*/ OUGONTEKI_G, /**< Golden Tektite defeated */ - /*0x38*/ OUGONTEKI_H, /**< Golden Octorok defeated */ - /*0x39*/ OUGONTEKI_I, /**< Golden Octorok defeated */ - /*0x3a*/ KAKERA_COMPLETE, /**< All fusions complete */ - /*0x3b*/ DRUG_1, /**< Yellow pico bloomed */ - /*0x3c*/ DRUG_2, /**< Blue pico bloomed */ - /*0x3d*/ DRUG_3, /**< Orange pico bloomed */ - /*0x3e*/ GORON_KAKERA_LV2, /**< Goron merchant restock 1 */ - /*0x3f*/ GORON_KAKERA_LV3, /**< Goron merchant restock 2 */ - /*0x40*/ GORON_KAKERA_LV4, /**< Goron merchant restock 3 */ - /*0x41*/ GORON_KAKERA_LV5, /**< Goron merchant restock 4 */ - /*0x42*/ GORON_KAKERA_L, /**< Red kinstone sold out */ - /*0x43*/ GORON_KAKERA_M, /**< Blue kinstone sold out */ - /*0x44*/ GORON_KAKERA_R, /**< Green kinstone sold out */ - /*0x45*/ CHIKATSURO_SHUTTER, /**< Castle basement door open */ + /*0x29*/ MIZUKAKI_START, /**< Spoke to Lake Hylia Minish */ + /*0x2a*/ MIZUKAKI_HARIFALL, /**< Library book falling */ + /*0x2b*/ RENTED_HOUSE_DIN, /**< Din moves to blue house */ + /*0x2c*/ RENTED_HOUSE_NAYRU, /**< Nayru moves to blue house */ + /*0x2d*/ RENTED_HOUSE_FARORE, /**< Farore moves to blue house */ + /*0x2e*/ NEW_HOUSE_DIN, /**< Din moves to red house */ + /*0x2f*/ NEW_HOUSE_NAYRU, /**< Nayru moves to red house */ + /*0x30*/ NEW_HOUSE_FARORE, /**< Farore moves to red house */ + /*0x31*/ OUGONTEKI_A, /**< Golden Octorok defeated */ + /*0x32*/ OUGONTEKI_B, /**< Golden Tektite defeated */ + /*0x33*/ OUGONTEKI_C, /**< Golden Rope defeated */ + /*0x34*/ OUGONTEKI_D, /**< Golden Rope defeated */ + /*0x35*/ OUGONTEKI_E, /**< Golden Rope defeated */ + /*0x36*/ OUGONTEKI_F, /**< Golden Tektite defeated */ + /*0x37*/ OUGONTEKI_G, /**< Golden Tektite defeated */ + /*0x38*/ OUGONTEKI_H, /**< Golden Octorok defeated */ + /*0x39*/ OUGONTEKI_I, /**< Golden Octorok defeated */ + /*0x3a*/ KAKERA_COMPLETE, /**< All fusions complete */ + /*0x3b*/ DRUG_1, /**< Yellow pico bloomed */ + /*0x3c*/ DRUG_2, /**< Blue pico bloomed */ + /*0x3d*/ DRUG_3, /**< Orange pico bloomed */ + /*0x3e*/ GORON_KAKERA_LV2, /**< Goron merchant restock 1 */ + /*0x3f*/ GORON_KAKERA_LV3, /**< Goron merchant restock 2 */ + /*0x40*/ GORON_KAKERA_LV4, /**< Goron merchant restock 3 */ + /*0x41*/ GORON_KAKERA_LV5, /**< Goron merchant restock 4 */ + /*0x42*/ GORON_KAKERA_L, /**< Red kinstone sold out */ + /*0x43*/ GORON_KAKERA_M, /**< Blue kinstone sold out */ + /*0x44*/ GORON_KAKERA_R, /**< Green kinstone sold out */ + /*0x45*/ CHIKATSURO_SHUTTER, /**< Castle basement door open */ /*0x46*/ ENTRANCE_USED, /**< undocumented */ - /*0x47*/ GOMAN_RENTED_HOUSE, /**< Spoke to Gorman blue house */ - /*0x48*/ GOMAN_NEW_HOUSE, /**< Spoke to Gorman red house */ - /*0x49*/ OUTDOOR, /**< Exited Link's house */ - /*0x4a*/ POWERGLOVE_HINT, /**< Spoke to Dr. Left Minish */ - /*0x4b*/ ANJU_LV_BIT0, /**< Cucco game 1 bit */ - /*0x4c*/ ANJU_LV_BIT1, /**< Cucco game 2 bit */ - /*0x4d*/ ANJU_LV_BIT2, /**< Cucco game 4 bit */ - /*0x4e*/ ANJU_LV_BIT3, /**< Cucco game 8 bit */ - /*0x4f*/ ANJU_HEART, /**< Cucco heart piece */ + /*0x47*/ GOMAN_RENTED_HOUSE, /**< Spoke to Gorman blue house */ + /*0x48*/ GOMAN_NEW_HOUSE, /**< Spoke to Gorman red house */ + /*0x49*/ OUTDOOR, /**< Exited Link's house */ + /*0x4a*/ POWERGLOVE_HINT, /**< Spoke to Dr. Left Minish */ + /*0x4b*/ ANJU_LV_BIT0, /**< Cucco game 1 bit */ + /*0x4c*/ ANJU_LV_BIT1, /**< Cucco game 2 bit */ + /*0x4d*/ ANJU_LV_BIT2, /**< Cucco game 4 bit */ + /*0x4e*/ ANJU_LV_BIT3, /**< Cucco game 8 bit */ + /*0x4f*/ ANJU_HEART, /**< Cucco heart piece */ /*0x50*/ MAROYA_WAKEUP, /**< undocumented */ - /*0x51*/ ENDING, /**< Vaati's wrath defeated */ - /*0x52*/ WARP_1ST, /**< Wind ocarina unlocked */ - /*0x53*/ WARP_MONUMENT, /**< First windcrest discovered */ - /*0x54*/ DRUG_COUNT, /**< Pico bloom minish items */ - /*0x55*/ GAMECLEAR, /**< Watched end cutscene */ + /*0x51*/ ENDING, /**< Vaati's wrath defeated */ + /*0x52*/ WARP_1ST, /**< Wind ocarina unlocked */ + /*0x53*/ WARP_MONUMENT, /**< First windcrest discovered */ + /*0x54*/ DRUG_COUNT, /**< Pico bloom minish items */ + /*0x55*/ GAMECLEAR, /**< Watched end cutscene */ /*0x56*/ WHITE_SWORD_END, /**< Exit mines with white sword */ - /*0x57*/ SOUGEN_06_HASHIGO, /**< Boomerang cave ladder */ - /*0x58*/ WARP_EVENT_END, /**< Wind tribe tower state */ - /*0x59*/ FIGURE_ALLCOMP, /**< Obtained Carlov Medal */ - /*0x5a*/ AKINDO_BOTTLE_SELL, /**< Bought bottle from scrub */ + /*0x57*/ SOUGEN_06_HASHIGO, /**< Boomerang cave ladder */ + /*0x58*/ WARP_EVENT_END, /**< Wind tribe tower state */ + /*0x59*/ FIGURE_ALLCOMP, /**< Obtained Carlov Medal */ + /*0x5a*/ AKINDO_BOTTLE_SELL, /**< Bought bottle from scrub */ /*0x5b*/ BIN_DOGFOOD, /**< undocumented */ - /*0x5c*/ TINGLE_TALK1ST, /**< Spoke to Tingle */ - /*0x5d*/ SEIIKI_BGM, /**< Elemental sanctuary BGM */ - /*0x5e*/ ENTRANCE_0, /**< Trunk entrance cutscene */ - /*0x5f*/ ENTRANCE_1, /**< Rock entrance cutscene */ - /*0x60*/ ENTRANCE_2, /**< Pot entrance cutscene */ - /*0x61*/ MIZUKAKI_NECHAN, /**< Spoke to librarian */ - /*0x62*/ MAZE_CLEAR, /**< Cleared Castle maze */ - /*0x63*/ TINY_ENTRANCE, /**< Ezlo described entrances */ - /*0x64*/ CASTLE_BGM, /**< Castle intro BGM */ + /*0x5c*/ TINGLE_TALK1ST, /**< Spoke to Tingle */ + /*0x5d*/ SEIIKI_BGM, /**< Elemental sanctuary BGM */ + /*0x5e*/ ENTRANCE_0, /**< Trunk entrance cutscene */ + /*0x5f*/ ENTRANCE_1, /**< Rock entrance cutscene */ + /*0x60*/ ENTRANCE_2, /**< Pot entrance cutscene */ + /*0x61*/ MIZUKAKI_NECHAN, /**< Spoke to librarian */ + /*0x62*/ MAZE_CLEAR, /**< Cleared Castle maze */ + /*0x63*/ TINY_ENTRANCE, /**< Ezlo described entrances */ + /*0x64*/ CASTLE_BGM, /**< Castle intro BGM */ END, } Flag; @@ -406,7 +406,7 @@ typedef enum { MACHI_00_T01, /**< Opened Red W Kinstone Chest in Hyrule Town, Top of School */ MACHI_01_DEMO, /**< Lolly and Candy Moved in Hyrule Town, Festival */ MACHI_02_HEISHI, /**< Showed Spin Attack to Westside Soldier in Hyrule Town */ - MACHI_02_DOG, /**< Talk to dog as minish */ + MACHI_02_DOG, /**< Talk to dog as minish */ MACHI_07_BELL, /**< Obtained Heart Piece in Bell in Hyrule Town */ SHOP05_OPEN, /**< Figurine House Open in Hyrule Town */ MACHI_MES_20, /**< Talked to gossip woman (right of well) in Hyrule Town */ @@ -418,7 +418,7 @@ typedef enum { MACHI_MES_40, /**< Talked to man near mushroom house in Hyrule Town, State 5 */ MACHI_MES_60, /**< Spoke to Jasmine (Woman outside Cafe) in Hyrule Town */ MACHI_MES_50, /**< Spoke to Herb (Figurine House Owner) in Hyrule Town */ - MACHI_DOG_C, /**< Seen all dog dialogue */ + MACHI_DOG_C, /**< Seen all dog dialogue */ KUMOUE_00_CAP_0, /**< Ezlo talks about Wind Tribe Tower in Cloud Tops 3F */ KUMOUE_01_CAP_0, /**< Ezlo talks about Wind Tribe Tower in Cloud Tops 2F */ KUMOUE_01_T0, /**< East Gold E Kinstone Chest Open in Cloud Tops 2F East */