From 9730543780ab88b1d4abebee23f4d220abdbc206 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 9 May 2022 17:39:00 +0300 Subject: [PATCH] Match sub_08018738 --- asm/kinstone.s | 26 -------------------------- include/common.h | 4 ++-- src/game.c | 12 ++++++------ src/kinstone.c | 9 +++++++++ 4 files changed, 17 insertions(+), 34 deletions(-) diff --git a/asm/kinstone.s b/asm/kinstone.s index b525a065..0529c8eb 100644 --- a/asm/kinstone.s +++ b/asm/kinstone.s @@ -317,29 +317,3 @@ _0801872A: pop {r4, r5, r6, pc} .align 2, 0 _08018734: .4byte gUnk_080C9CBC - - thumb_func_start sub_08018738 -sub_08018738: @ 0x08018738 - push {r4, lr} - adds r2, r0, #0 - adds r4, r1, #0 - lsls r0, r4, #2 - adds r0, r0, r4 - lsls r0, r0, #2 - ldr r1, _08018764 @ =gUnk_080FE320 - adds r0, r0, r1 - ldr r1, _08018768 @ =gRoomControls - ldrh r0, [r0, #2] - ldrh r1, [r1, #4] - cmp r0, r1 - bne _08018760 - adds r0, r2, #0 - bl CheckKinstoneFused - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_0801876C -_08018760: - pop {r4, pc} - .align 2, 0 -_08018764: .4byte gUnk_080FE320 -_08018768: .4byte gRoomControls diff --git a/include/common.h b/include/common.h index aee1592f..9108cf9a 100644 --- a/include/common.h +++ b/include/common.h @@ -20,8 +20,8 @@ extern Input gInput; /**< Input instance. */ typedef struct { u8 evt_type; u8 entity_idx; - u8 _2; - u8 _3; + u8 area; + u8 room; u16 _4; u16 _6; u16 x; diff --git a/src/game.c b/src/game.c index 1917a077..39396275 100644 --- a/src/game.c +++ b/src/game.c @@ -2682,22 +2682,22 @@ void sub_08054968(void) { void sub_08054974(s32 param_1, s32 param_2) { struct_080FE320* ptr = &gUnk_080FE320[param_1]; - SetCurrentRoomPropertyList(ptr->_2, ptr->_3); - gRoomControls.area = ptr->_2; - gRoomControls.room = ptr->_3; + SetCurrentRoomPropertyList(ptr->area, ptr->room); + gRoomControls.area = ptr->area; + gRoomControls.room = ptr->room; LoadGfxGroups(); gArea.localFlagOffset = GetFlagBankOffset(gRoomControls.area); if (param_2 != 0) { - LoadAuxiliaryRoom(ptr->_2, ptr->_3); + LoadAuxiliaryRoom(ptr->area, ptr->room); } else { - sub_08052FF4(ptr->_2, ptr->_3); + sub_08052FF4(ptr->area, ptr->room); InitializeCamera(); gUpdateVisibleTiles = 1; } gScreen.lcd.displayControl &= 0x1fff; gRoomControls.scroll_x = gRoomControls.origin_x + ptr->_4; gRoomControls.scroll_y = gRoomControls.origin_y + ptr->_6; - if (ptr->_2 == 2) { + if (ptr->area == AREA_HYRULE_TOWN) { TryLoadPrologueHyruleTown(); } sub_08018710(gUI.field_0x3); diff --git a/src/kinstone.c b/src/kinstone.c index a8baaf50..aaf12d1e 100644 --- a/src/kinstone.c +++ b/src/kinstone.c @@ -22,6 +22,15 @@ void sub_08018BB4(int); void sub_08018A58(int); void sub_08018B50(int); void sub_080189EC(int); +void sub_0801876C(int, int); + +void sub_08018738(u32 param_1, int param_2) { + struct_080FE320* ptr = &gUnk_080FE320[param_2]; + + if (ptr->area == gRoomControls.area && ptr->room == gRoomControls.room) { + sub_0801876C(param_2, CheckKinstoneFused(param_1)); + } +} void sub_0801876C(int param_1, int param_2) { Entity* roomEnt;