diff --git a/asm/upperInn.s b/asm/upperInn.s deleted file mode 100644 index 8879cfe9..00000000 --- a/asm/upperInn.s +++ /dev/null @@ -1,96 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0804B938 -sub_0804B938: @ 0x0804B938 - push {lr} - ldr r0, _0804B968 @ =gUnk_02002A40 - ldrb r0, [r0, #8] - cmp r0, #3 - bls _0804B9F2 - movs r0, #0x2b - bl CheckGlobalFlag - cmp r0, #0 - beq _0804B970 - movs r0, #0x2f - bl CheckGlobalFlag - cmp r0, #0 - bne _0804B984 - movs r0, #0x30 - bl CheckGlobalFlag - cmp r0, #0 - bne _0804B9BC - ldr r0, _0804B96C @ =gUnk_080D6C64 - bl LoadRoomEntityList - b _0804B9F2 - .align 2, 0 -_0804B968: .4byte gUnk_02002A40 -_0804B96C: .4byte gUnk_080D6C64 -_0804B970: - movs r0, #0x2c - bl CheckGlobalFlag - cmp r0, #0 - beq _0804B9A8 - movs r0, #0x2e - bl CheckGlobalFlag - cmp r0, #0 - beq _0804B990 -_0804B984: - ldr r0, _0804B98C @ =gUnk_080D6D04 - bl LoadRoomEntityList - b _0804B9F2 - .align 2, 0 -_0804B98C: .4byte gUnk_080D6D04 -_0804B990: - movs r0, #0x30 - bl CheckGlobalFlag - cmp r0, #0 - bne _0804B9D2 - ldr r0, _0804B9A4 @ =gUnk_080D6C94 - bl LoadRoomEntityList - b _0804B9F2 - .align 2, 0 -_0804B9A4: .4byte gUnk_080D6C94 -_0804B9A8: - movs r0, #0x2d - bl CheckGlobalFlag - cmp r0, #0 - beq _0804B9EC - movs r0, #0x2e - bl CheckGlobalFlag - cmp r0, #0 - beq _0804B9C8 -_0804B9BC: - ldr r0, _0804B9C4 @ =gUnk_080D6CE4 - bl LoadRoomEntityList - b _0804B9F2 - .align 2, 0 -_0804B9C4: .4byte gUnk_080D6CE4 -_0804B9C8: - movs r0, #0x2f - bl CheckGlobalFlag - cmp r0, #0 - beq _0804B9E0 -_0804B9D2: - ldr r0, _0804B9DC @ =gUnk_080D6CC4 - bl LoadRoomEntityList - b _0804B9F2 - .align 2, 0 -_0804B9DC: .4byte gUnk_080D6CC4 -_0804B9E0: - ldr r0, _0804B9E8 @ =gUnk_080D6C34 - bl LoadRoomEntityList - b _0804B9F2 - .align 2, 0 -_0804B9E8: .4byte gUnk_080D6C34 -_0804B9EC: - ldr r0, _0804B9F4 @ =gUnk_080D6BF4 - bl LoadRoomEntityList -_0804B9F2: - pop {pc} - .align 2, 0 -_0804B9F4: .4byte gUnk_080D6BF4 \ No newline at end of file diff --git a/data/data_080D5360.s b/data/data_080D5360.s index 3229ad45..7143b764 100644 --- a/data/data_080D5360.s +++ b/data/data_080D5360.s @@ -499,25 +499,25 @@ gUnk_080D6BC4:: @ 080D6BC4 gUnk_080D6BE4:: @ 080D6BE4 .incbin "baserom.gba", 0x0D6BE4, 0x0000010 -gUnk_080D6BF4:: @ 080D6BF4 +UpperInn_Oracles:: @ 080D6BF4 .incbin "baserom.gba", 0x0D6BF4, 0x0000040 -gUnk_080D6C34:: @ 080D6C34 +UpperInn_NoFarore:: @ 080D6C34 .incbin "baserom.gba", 0x0D6C34, 0x0000030 -gUnk_080D6C64:: @ 080D6C64 +UpperInn_NoDin:: @ 080D6C64 .incbin "baserom.gba", 0x0D6C64, 0x0000030 -gUnk_080D6C94:: @ 080D6C94 +UpperInn_NoNayru:: @ 080D6C94 .incbin "baserom.gba", 0x0D6C94, 0x0000030 -gUnk_080D6CC4:: @ 080D6CC4 +UpperInn_Din:: @ 080D6CC4 .incbin "baserom.gba", 0x0D6CC4, 0x0000020 -gUnk_080D6CE4:: @ 080D6CE4 +UpperInn_Nayru:: @ 080D6CE4 .incbin "baserom.gba", 0x0D6CE4, 0x0000020 -gUnk_080D6D04:: @ 080D6D04 +UpperInn_Farore:: @ 080D6D04 .incbin "baserom.gba", 0x0D6D04, 0x0000020 gUnk_080D6D24:: @ 080D6D24 diff --git a/linker.ld b/linker.ld index 1e71055f..460b91b4 100644 --- a/linker.ld +++ b/linker.ld @@ -442,7 +442,6 @@ SECTIONS { src/loadRoom.o(.text); asm/code_0804B058.o(.text); src/room.o(.text); - asm/upperInn.o(.text); asm/code_0804B9F8.o(.text); src/sub_08050008.o(.text); src/sub_08050024.o(.text); diff --git a/src/room.c b/src/room.c index 695ca76c..4891ae9f 100644 --- a/src/room.c +++ b/src/room.c @@ -398,77 +398,116 @@ u32 sub_0804B7A8(void) { extern void* gUnk_08010A5C[]; -void sub_0804B7E8(void) -{ - if (CheckLocalFlag(0x91)) { - ClearLocalFlag(0x91); - DoFade(5, 0x100); - gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; - gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; - sub_080751E8(1, 2, &gUnk_08010A5C); - } +void sub_0804B7E8(void) { + if (CheckLocalFlag(0x91)) { + ClearLocalFlag(0x91); + DoFade(5, 0x100); + gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; + gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; + sub_080751E8(1, 2, &gUnk_08010A5C); + } } extern u32 gUnk_080D6B18[]; -u32 sub_0804B82C(void) -{ - u32 index; - - if (CheckLocalFlag(0x91) != 0) { - index = Random() & 1; - ClearLocalFlag(2); - } - else { - index = 0; - SetLocalFlag(2); - } - gRoomVars.field_0x78 = gUnk_080D6B18[index]; - return 1; +u32 sub_0804B82C(void) { + u32 index; + + if (CheckLocalFlag(0x91) != 0) { + index = Random() & 1; + ClearLocalFlag(2); + } else { + index = 0; + SetLocalFlag(2); + } + gRoomVars.field_0x78 = gUnk_080D6B18[index]; + return 1; } -void sub_0804B86C(void) -{ - if (CheckLocalFlag(0x91) != 0) { - ClearLocalFlag(0x91); - DoFade(5, 0x100); - gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; - gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; - sub_080751E8(1, 2, &gUnk_08010A5C); - } +void sub_0804B86C(void) { + if (CheckLocalFlag(0x91) != 0) { + ClearLocalFlag(0x91); + DoFade(5, 0x100); + gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50; + gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; + sub_080751E8(1, 2, &gUnk_08010A5C); + } } extern u32 gUnk_080D6BB8[]; -u32 sub_0804B8B0(void) -{ - s32 index; - - if (CheckLocalFlag(0x91) != 0) { - index = (s32)Random() % 3; - ClearLocalFlag(3); - } - else { - index = 0; - SetLocalFlag(3); - } - gRoomVars.field_0x78 = gUnk_080D6BB8[index]; - return 1; +u32 sub_0804B8B0(void) { + s32 index; + + if (CheckLocalFlag(0x91) != 0) { + index = (s32)Random() % 3; + ClearLocalFlag(3); + } else { + index = 0; + SetLocalFlag(3); + } + gRoomVars.field_0x78 = gUnk_080D6BB8[index]; + return 1; } extern void* gUnk_08010A5C[]; -void sub_0804B8F0(void) -{ - if (CheckLocalFlag(0x91)) { - ClearLocalFlag(0x91); - DoFade(5 ,0x100); - gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x60; - gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; - sub_080751E8(1,2, &gUnk_08010A5C); - } +void sub_0804B8F0(void) { + if (CheckLocalFlag(0x91)) { + ClearLocalFlag(0x91); + DoFade(5, 0x100); + gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x60; + gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38; + sub_080751E8(1, 2, &gUnk_08010A5C); + } } u32 sub_0804B934() { return 1; +} + +extern EntityData* UpperInn_Oracles; +extern EntityData* UpperInn_NoFarore; +extern EntityData* UpperInn_NoNayru; +extern EntityData* UpperInn_NoDin; +extern EntityData* UpperInn_Farore; +extern EntityData* UpperInn_Nayru; +extern EntityData* UpperInn_Din; + +void sub_0804B938(void) { + int iVar1; + + if (gUnk_02002A40.field_0x8 < 4) { + return; + } + + if (CheckGlobalFlag(0x2b)) { + if (!CheckGlobalFlag(0x2f)) { + if (!CheckGlobalFlag(0x30)) { + LoadRoomEntityList(&UpperInn_NoDin); + } else { + LoadRoomEntityList(&UpperInn_Nayru); + } + } else { + LoadRoomEntityList(&UpperInn_Farore); + } + } else if (CheckGlobalFlag(0x2c)) { + if (CheckGlobalFlag(0x2e)) { + LoadRoomEntityList(&UpperInn_Farore); + } else if (!CheckGlobalFlag(0x30)) { + LoadRoomEntityList(&UpperInn_NoNayru); + } else { + LoadRoomEntityList(&UpperInn_Din); + } + } else if (CheckGlobalFlag(0x2d)) { + if (CheckGlobalFlag(0x2e)) { + LoadRoomEntityList(&UpperInn_Nayru); + } else if (CheckGlobalFlag(0x2f)) { + LoadRoomEntityList(&UpperInn_Din); + } else { + LoadRoomEntityList(&UpperInn_NoFarore); + } + } else { + LoadRoomEntityList(&UpperInn_Oracles); + } } \ No newline at end of file