From d6bbbf2db6bd078a887138506bec5abcc36b3020 Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Sat, 5 Mar 2022 11:43:58 +0100 Subject: [PATCH] Improve LayerStruct --- asm/beanstalkSubtask.s | 8 +- asm/enterPortalSubtask.s | 4 +- asm/macros/map.inc | 6 +- asm/non_matching/button/sub_08081E6C.inc | 4 +- .../common/DrawDungeonFeatures.inc | 14 +- asm/non_matching/fileScreen/sub_08050EF4.inc | 8 +- asm/non_matching/fileScreen/sub_08051738.inc | 4 +- asm/non_matching/fileScreen/sub_080610B8.inc | 4 +- asm/non_matching/game/sub_08053758.inc | 4 +- asm/non_matching/game/sub_0805488C.inc | 4 +- asm/non_matching/game/sub_08054920.inc | 8 +- asm/non_matching/game/sub_08054974.inc | 4 +- asm/non_matching/playerUtils/LoadRoomGfx.inc | 12 +- asm/non_matching/playerUtils/SetTileType.inc | 135 ------ asm/non_matching/playerUtils/sub_0807B9B8.inc | 99 ----- asm/non_matching/playerUtils/sub_0807BA8C.inc | 101 ----- asm/non_matching/playerUtils/sub_0807BC84.inc | 73 ---- asm/non_matching/playerUtils/sub_0807BDB8.inc | 159 ------- asm/non_matching/playerUtils/sub_0807BEEC.inc | 84 ---- asm/non_matching/playerUtils/sub_0807BF88.inc | 19 - asm/non_matching/playerUtils/sub_0807C460.inc | 79 ---- asm/non_matching/playerUtils/sub_0807C4F8.inc | 8 +- asm/non_matching/playerUtils/sub_0807C810.inc | 37 -- asm/non_matching/scroll/sub_08080108.inc | 4 +- asm/non_matching/subtask2/Subtask_FadeOut.inc | 8 +- asm/non_matching/subtask2/sub_080A5D1C.inc | 8 +- asm/non_matching/subtask2/sub_080A6534.inc | 4 +- asm/non_matching/subtask2/sub_080A66D0.inc | 8 +- asm/non_matching/subtask2/sub_080A67C4.inc | 8 +- asm/non_matching/subtask2/sub_080A698C.inc | 4 +- asm/object/code_0808C964.s | 4 +- asm/veneer.s | 4 +- data/map/map_headers.s | 120 +++--- include/entity.h | 1 + include/fileselect.h | 2 +- include/functions.h | 2 +- include/main.h | 4 +- include/manager.h | 5 +- include/map.h | 16 +- linker.ld | 4 +- src/coord.c | 7 +- src/debug.c | 4 +- src/demo.c | 12 +- src/enemy/gyorgFemale.c | 12 +- src/enemy/gyorgMale.c | 2 +- src/enemy/octorokGolden.c | 2 +- src/enemy/spinyBeetle.c | 1 - src/enterPortalSubtask.c | 3 +- src/fileselect.c | 178 ++++---- src/game.c | 58 +-- src/kinstone.c | 3 +- src/main.c | 5 +- src/manager/manager22.c | 3 +- src/manager/manager29.c | 8 +- src/menu/figurine_menu.c | 4 +- src/menu/kinstone_menu.c | 20 +- src/movement.c | 2 +- src/object/button.c | 4 +- src/object/fileScreenObjects.c | 46 +-- src/object/railtrack.c | 2 +- src/player.c | 2 +- src/playerUtils.c | 388 +++++++++++++++--- src/projectile/winder.c | 2 +- src/roomInit.c | 2 +- src/scroll.c | 2 +- src/subtask2.c | 66 +-- src/title.c | 11 +- 67 files changed, 720 insertions(+), 1213 deletions(-) delete mode 100644 asm/non_matching/playerUtils/SetTileType.inc delete mode 100644 asm/non_matching/playerUtils/sub_0807B9B8.inc delete mode 100644 asm/non_matching/playerUtils/sub_0807BA8C.inc delete mode 100644 asm/non_matching/playerUtils/sub_0807BC84.inc delete mode 100644 asm/non_matching/playerUtils/sub_0807BDB8.inc delete mode 100644 asm/non_matching/playerUtils/sub_0807BEEC.inc delete mode 100644 asm/non_matching/playerUtils/sub_0807BF88.inc delete mode 100644 asm/non_matching/playerUtils/sub_0807C460.inc delete mode 100644 asm/non_matching/playerUtils/sub_0807C810.inc diff --git a/asm/beanstalkSubtask.s b/asm/beanstalkSubtask.s index f58e52af..812d6678 100644 --- a/asm/beanstalkSubtask.s +++ b/asm/beanstalkSubtask.s @@ -24,7 +24,7 @@ _08019694: .4byte gMenu thumb_func_start sub_08019698 sub_08019698: @ 0x08019698 push {r4, r5, lr} - ldr r0, _08019724 @ =gUnk_02032EC0 + ldr r0, _08019724 @ =gUI ldrb r1, [r0, #3] lsls r0, r1, #3 subs r0, r0, r1 @@ -86,7 +86,7 @@ _08019700: strb r0, [r1] pop {r4, r5, pc} .align 2, 0 -_08019724: .4byte gUnk_02032EC0 +_08019724: .4byte gUI _08019728: .4byte gUnk_080B4410 _0801972C: .4byte gRoomControls _08019730: .4byte gUpdateVisibleTiles @@ -3232,7 +3232,7 @@ _0801AEB6: ldr r0, [r1] cmp r0, #0 beq _0801AED0 - ldr r0, _0801AF00 @ =gUnk_02019EE0 + ldr r0, _0801AF00 @ =gMapDataBottomSpecial bl sub_0801AB08 _0801AED0: ldr r1, _0801AF04 @ =gMapTop @@ -3251,7 +3251,7 @@ _0801AEF0: .4byte gUnk_03004030 _0801AEF4: .4byte 0x0000088C _0801AEF8: .4byte 0x00000888 _0801AEFC: .4byte gMapBottom -_0801AF00: .4byte gUnk_02019EE0 +_0801AF00: .4byte gMapDataBottomSpecial _0801AF04: .4byte gMapTop _0801AF08: .4byte gMapDataTopSpecial _0801AF0C: diff --git a/asm/enterPortalSubtask.s b/asm/enterPortalSubtask.s index a7a9aecf..e1778d69 100644 --- a/asm/enterPortalSubtask.s +++ b/asm/enterPortalSubtask.s @@ -26,7 +26,7 @@ sub_0804AB70: @ 0x0804AB70 ldrb r5, [r0, #0x17] cmp r5, #2 bne _0804ABA4 - ldr r0, _0804AC08 @ =gUnk_02032EC0 + ldr r0, _0804AC08 @ =gUI adds r0, #0x20 ldrb r0, [r0] cmp r0, #2 @@ -72,7 +72,7 @@ _0804ABF8: .4byte gScreen _0804ABFC: .4byte 0x00009E83 _0804AC00: .4byte gRoomControls _0804AC04: .4byte gArea -_0804AC08: .4byte gUnk_02032EC0 +_0804AC08: .4byte gUI _0804AC0C: .4byte gUnk_080D4138 _0804AC10: .4byte gUnk_02017700 _0804AC14: .4byte gUsedPalettes diff --git a/asm/macros/map.inc b/asm/macros/map.inc index f0fc2953..90682690 100755 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -54,12 +54,12 @@ map_data \src_offset, gMapDataTopSpecial, \size, \compressed, \terminator .endm - .macro map_unknown src_offset, size, compressed, terminator=0 + .macro collision_bottom src_offset, size, compressed, terminator=0 map_data \src_offset, gUnk_02027EB4, \size, \compressed, \terminator .endm - .macro map_unknown_2 src_offset, size, compressed, terminator=0 - map_data \src_offset, gUnk_02019EE0, \size, \compressed, \terminator + .macro map_bottom_special src_offset, size, compressed, terminator=0 + map_data \src_offset, gMapDataBottomSpecial, \size, \compressed, \terminator .endm diff --git a/asm/non_matching/button/sub_08081E6C.inc b/asm/non_matching/button/sub_08081E6C.inc index 179e601a..c81bfc60 100644 --- a/asm/non_matching/button/sub_08081E6C.inc +++ b/asm/non_matching/button/sub_08081E6C.inc @@ -30,7 +30,7 @@ _08081E9A: ldrh r0, [r1] lsl r0, r0, #3 add r3, r3, r0 - ldr r2, _08081EF8 @ =gUnk_02019EE0 + ldr r2, _08081EF8 @ =gMapDataBottomSpecial cmp r5, #2 bne _08081EB4 ldr r2, _08081EFC @ =gMapDataTopSpecial @@ -64,5 +64,5 @@ _08081EE8: _08081EEC: .4byte 0x00003FFF _08081EF0: .4byte 0x00007004 _08081EF4: .4byte 0x00006004 -_08081EF8: .4byte gUnk_02019EE0 +_08081EF8: .4byte gMapDataBottomSpecial _08081EFC: .4byte gMapDataTopSpecial diff --git a/asm/non_matching/common/DrawDungeonFeatures.inc b/asm/non_matching/common/DrawDungeonFeatures.inc index 938662b1..fcd6f37c 100644 --- a/asm/non_matching/common/DrawDungeonFeatures.inc +++ b/asm/non_matching/common/DrawDungeonFeatures.inc @@ -20,7 +20,7 @@ _0801DDB8: lsls r0, r4, #2 adds r0, r0, r1 ldr r4, [r0] - ldr r0, _0801DDE0 @ =gUnk_02019EE0 + ldr r0, _0801DDE0 @ =gMapDataBottomSpecial movs r1, #0x80 lsls r1, r1, #8 bl MemClear @@ -28,7 +28,7 @@ _0801DDB8: .align 2, 0 _0801DDD8: .4byte gUnk_080C9C50 _0801DDDC: .4byte gArea -_0801DDE0: .4byte gUnk_02019EE0 +_0801DDE0: .4byte gMapDataBottomSpecial _0801DDE4: ldrb r0, [r4] ldrb r1, [r4, #1] @@ -41,7 +41,7 @@ _0801DDE4: movs r0, #0 str r0, [sp, #0xc] ldrh r2, [r4] - ldr r0, _0801DE14 @ =gUnk_02032EC0 + ldr r0, _0801DE14 @ =gUI ldrh r3, [r0, #0x20] ldr r1, _0801DE18 @ =0x0000FFFF ands r1, r2 @@ -52,7 +52,7 @@ _0801DDE4: movs r3, #8 b _0801DE36 .align 2, 0 -_0801DE14: .4byte gUnk_02032EC0 +_0801DE14: .4byte gUI _0801DE18: .4byte 0x0000FFFF _0801DE1C: bl HasDungeonSmallKey @@ -89,7 +89,7 @@ _0801DE46: ldr r1, _0801DEFC @ =gMapData adds r0, r0, r1 str r0, [r2] - ldr r0, _0801DF00 @ =gUnk_02019EE0 + ldr r0, _0801DF00 @ =gMapDataBottomSpecial str r0, [r2, #4] ldr r0, _0801DF04 @ =0x84000100 str r0, [r2, #8] @@ -127,7 +127,7 @@ _0801DEA0: ldr r3, [sp, #8] adds r1, r6, #0 muls r1, r3, r1 - ldr r0, _0801DF00 @ =gUnk_02019EE0 + ldr r0, _0801DF00 @ =gMapDataBottomSpecial adds r1, r1, r0 mov r8, r1 movs r5, #0 @@ -172,7 +172,7 @@ _0801DEEA: .align 2, 0 _0801DEF8: .4byte 0x040000D4 _0801DEFC: .4byte gMapData -_0801DF00: .4byte gUnk_02019EE0 +_0801DF00: .4byte gMapDataBottomSpecial _0801DF04: .4byte 0x84000100 _0801DF08: .4byte gAreaRoomHeaders _0801DF0C: .4byte 0x000007FF diff --git a/asm/non_matching/fileScreen/sub_08050EF4.inc b/asm/non_matching/fileScreen/sub_08050EF4.inc index 04388489..90b63bb3 100644 --- a/asm/non_matching/fileScreen/sub_08050EF4.inc +++ b/asm/non_matching/fileScreen/sub_08050EF4.inc @@ -2,7 +2,7 @@ push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} - ldr r0, _08050F40 @ =gUnk_02019EE0 + ldr r0, _08050F40 @ =gMapDataBottomSpecial ldrb r1, [r0] adds r6, r0, #0 cmp r1, #0 @@ -38,7 +38,7 @@ _08050F1E: beq _08050F82 b _08050F8E .align 2, 0 -_08050F40: .4byte gUnk_02019EE0 +_08050F40: .4byte gMapDataBottomSpecial _08050F44: .4byte 0x000004B4 _08050F48: .4byte gMenu _08050F4C: .4byte gInput @@ -107,12 +107,12 @@ _08050FAC: _08050FBA: adds r0, r5, #0 bl SetMenuType - ldr r0, _08050FCC @ =gUnk_02019EE0 + ldr r0, _08050FCC @ =gMapDataBottomSpecial ldrb r0, [r0, #6] bl SetActiveSave b _08050FF4 .align 2, 0 -_08050FCC: .4byte gUnk_02019EE0 +_08050FCC: .4byte gMapDataBottomSpecial _08050FD0: mov r1, ip ldrb r0, [r1, #1] diff --git a/asm/non_matching/fileScreen/sub_08051738.inc b/asm/non_matching/fileScreen/sub_08051738.inc index 6b6c621c..f1e65adb 100644 --- a/asm/non_matching/fileScreen/sub_08051738.inc +++ b/asm/non_matching/fileScreen/sub_08051738.inc @@ -1,6 +1,6 @@ .syntax unified push {r4, r5, r6, r7, lr} - ldr r1, _08051768 @ =gUnk_02019EE0 + ldr r1, _08051768 @ =gMapDataBottomSpecial movs r0, #4 strb r0, [r1, #7] movs r4, #0 @@ -25,7 +25,7 @@ _0805174C: ands r2, r0 b _08051774 .align 2, 0 -_08051768: .4byte gUnk_02019EE0 +_08051768: .4byte gMapDataBottomSpecial _0805176C: .4byte gUnk_02000090 _08051770: adds r4, #1 diff --git a/asm/non_matching/fileScreen/sub_080610B8.inc b/asm/non_matching/fileScreen/sub_080610B8.inc index 93548d8d..87f75ef5 100644 --- a/asm/non_matching/fileScreen/sub_080610B8.inc +++ b/asm/non_matching/fileScreen/sub_080610B8.inc @@ -1,6 +1,6 @@ .syntax unified push {r4, r5, r6, r7, lr} - ldr r0, _080510E4 @ =gUnk_02019EE0 + ldr r0, _080510E4 @ =gMapDataBottomSpecial ldrb r0, [r0] cmp r0, #0 beq _080510C4 @@ -24,7 +24,7 @@ _080510DC: beq _080511B8 b _08051100 .align 2, 0 -_080510E4: .4byte gUnk_02019EE0 +_080510E4: .4byte gMapDataBottomSpecial _080510E8: .4byte gInput _080510EC: movs r0, #0x80 diff --git a/asm/non_matching/game/sub_08053758.inc b/asm/non_matching/game/sub_08053758.inc index b1ed9345..3150f7ae 100644 --- a/asm/non_matching/game/sub_08053758.inc +++ b/asm/non_matching/game/sub_08053758.inc @@ -10,7 +10,7 @@ movs r0, #0x1e strh r0, [r1, #0xa] strb r4, [r1, #0x10] - ldr r0, _080537E0 @ =gUnk_02032EC0 + ldr r0, _080537E0 @ =gUI strb r3, [r0, #6] ldr r0, _080537E4 @ =gMapBottom str r2, [r0] @@ -61,7 +61,7 @@ pop {r4, pc} .align 2, 0 _080537DC: .4byte gMenu -_080537E0: .4byte gUnk_02032EC0 +_080537E0: .4byte gUI _080537E4: .4byte gMapBottom _080537E8: .4byte gMapTop _080537EC: .4byte gRoomControls diff --git a/asm/non_matching/game/sub_0805488C.inc b/asm/non_matching/game/sub_0805488C.inc index 7b792dd4..408fe38a 100644 --- a/asm/non_matching/game/sub_0805488C.inc +++ b/asm/non_matching/game/sub_0805488C.inc @@ -1,6 +1,6 @@ .syntax unified push {r4, lr} - ldr r4, _080548DC @ =gUnk_02032EC0 + ldr r4, _080548DC @ =gUI ldrb r1, [r4, #3] lsls r0, r1, #2 adds r0, r0, r1 @@ -34,7 +34,7 @@ bl sub_080548E8 pop {r4, pc} .align 2, 0 -_080548DC: .4byte gUnk_02032EC0 +_080548DC: .4byte gUI _080548E0: .4byte gUnk_080FE320 _080548E4: .4byte gMenu .syntax divided diff --git a/asm/non_matching/game/sub_08054920.inc b/asm/non_matching/game/sub_08054920.inc index 7b73b4e9..a7962390 100644 --- a/asm/non_matching/game/sub_08054920.inc +++ b/asm/non_matching/game/sub_08054920.inc @@ -10,7 +10,7 @@ ldrb r0, [r0, #7] cmp r0, #0 beq _08054954 - ldr r0, _08054950 @ =gUnk_02032EC0 + ldr r0, _08054950 @ =gUI ldrb r1, [r0, #3] movs r0, #0xa bl MenuFadeIn @@ -18,9 +18,9 @@ .align 2, 0 _08054948: .4byte gUnk_080C9CBC _0805494C: .4byte gFuseInfo -_08054950: .4byte gUnk_02032EC0 +_08054950: .4byte gUI _08054954: - ldr r1, _08054964 @ =gUnk_02032EC0 + ldr r1, _08054964 @ =gUI movs r0, #3 strb r0, [r1] movs r0, #7 @@ -29,5 +29,5 @@ _08054954: _08054962: pop {pc} .align 2, 0 -_08054964: .4byte gUnk_02032EC0 +_08054964: .4byte gUI .syntax divided diff --git a/asm/non_matching/game/sub_08054974.inc b/asm/non_matching/game/sub_08054974.inc index ca75d4cb..f9ba2e01 100644 --- a/asm/non_matching/game/sub_08054974.inc +++ b/asm/non_matching/game/sub_08054974.inc @@ -57,7 +57,7 @@ _080549CE: bne _080549F4 bl TryLoadPrologueHyruleTown _080549F4: - ldr r0, _08054A10 @ =gUnk_02032EC0 + ldr r0, _08054A10 @ =gUI ldrb r0, [r0, #3] bl sub_08018710 pop {r4, r5, r6, pc} @@ -66,5 +66,5 @@ _08054A00: .4byte gUpdateVisibleTiles _08054A04: .4byte gScreen _08054A08: .4byte 0x00001FFF _08054A0C: .4byte gRoomControls -_08054A10: .4byte gUnk_02032EC0 +_08054A10: .4byte gUI .syntax divided diff --git a/asm/non_matching/playerUtils/LoadRoomGfx.inc b/asm/non_matching/playerUtils/LoadRoomGfx.inc index a905ad83..47639977 100644 --- a/asm/non_matching/playerUtils/LoadRoomGfx.inc +++ b/asm/non_matching/playerUtils/LoadRoomGfx.inc @@ -19,7 +19,7 @@ movs r1, #0x80 lsls r1, r1, #5 bl MemClear - ldr r0, _0807C160 @ =gUnk_02019EE0 + ldr r0, _0807C160 @ =gMapDataBottomSpecial movs r4, #0x80 lsls r4, r4, #8 adds r1, r4, #0 @@ -56,7 +56,7 @@ .align 2, 0 _0807C158: .4byte gRoomControls _0807C15C: .4byte gMapDataTop -_0807C160: .4byte gUnk_02019EE0 +_0807C160: .4byte gMapDataBottomSpecial _0807C164: .4byte gMapDataTopSpecial _0807C168: .4byte gArea _0807C16C: .4byte 0x0000085C @@ -204,7 +204,7 @@ _0807C2A0: mov r3, sb cmp r3, #0 bne _0807C2E4 - ldr r0, _0807C2DC @ =gUnk_02019EE0 + ldr r0, _0807C2DC @ =gMapDataBottomSpecial adds r1, r4, #0 bl sub_0801AB08 ldr r0, _0807C2E0 @ =gMapDataTopSpecial @@ -216,10 +216,10 @@ _0807C2CC: .4byte gUnk_02027EB4 _0807C2D0: .4byte gUnk_0200D654 _0807C2D4: .4byte gMapBottom _0807C2D8: .4byte gMapTop -_0807C2DC: .4byte gUnk_02019EE0 +_0807C2DC: .4byte gMapDataBottomSpecial _0807C2E0: .4byte gMapDataTopSpecial _0807C2E4: - ldr r4, _0807C34C @ =gUnk_02019EE0 + ldr r4, _0807C34C @ =gMapDataBottomSpecial movs r0, #0x80 lsls r0, r0, #7 adds r5, r4, r0 @@ -269,7 +269,7 @@ _0807C33A: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0807C34C: .4byte gUnk_02019EE0 +_0807C34C: .4byte gMapDataBottomSpecial _0807C350: .4byte gMapDataTopSpecial _0807C354: .4byte _0807C358 _0807C358: @ jump table diff --git a/asm/non_matching/playerUtils/SetTileType.inc b/asm/non_matching/playerUtils/SetTileType.inc deleted file mode 100644 index 77dd77f2..00000000 --- a/asm/non_matching/playerUtils/SetTileType.inc +++ /dev/null @@ -1,135 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r4, r1, #0 - adds r6, r2, #0 - ldr r0, _0807B3A0 @ =0x000007FF - cmp r5, r0 - bhi _0807B410 - adds r0, r4, #0 - adds r1, r6, #0 - bl DeleteLoadedTileEntity - adds r0, r6, #0 - bl GetLayerByIndex - adds r2, r0, #0 - lsls r1, r5, #1 - ldr r3, _0807B3A4 @ =0x00006004 - adds r0, r2, r3 - adds r0, r0, r1 - ldrh r0, [r0] - mov ip, r0 - lsls r1, r4, #1 - adds r0, r2, #4 - adds r0, r0, r1 - mov r1, ip - strh r1, [r0] - ldr r0, _0807B3A8 @ =gUnk_080B3E80 - adds r0, r5, r0 - ldrb r3, [r0] - ldr r1, _0807B3AC @ =0x00002004 - adds r0, r2, r1 - adds r0, r0, r4 - strb r3, [r0] - ldr r7, _0807B3B0 @ =gRoomControls - ldrb r1, [r7, #0xf] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0807B36C - ldr r0, _0807B3B4 @ =gMapBottom - ldr r1, _0807B3AC @ =0x00002004 - adds r0, r0, r1 - adds r0, r4, r0 - strb r3, [r0] -_0807B36C: - ldr r3, _0807B3B8 @ =0x0000B004 - adds r1, r2, r3 - adds r1, r1, r4 - ldr r0, _0807B3BC @ =gUnk_080B37A0 - adds r0, r5, r0 - ldrb r0, [r0] - strb r0, [r1] - ldrb r1, [r7, #0xf] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _0807B430 - movs r1, #0x3f - ands r1, r4 - lsls r1, r1, #1 - movs r0, #0xfc - lsls r0, r0, #4 - ands r0, r4 - lsls r0, r0, #2 - adds r1, r1, r0 - cmp r6, #2 - beq _0807B3C4 - lsls r1, r1, #1 - ldr r0, _0807B3C0 @ =gUnk_02019EE0 - b _0807B3C8 - .align 2, 0 -_0807B3A0: .4byte 0x000007FF -_0807B3A4: .4byte 0x00006004 -_0807B3A8: .4byte gUnk_080B3E80 -_0807B3AC: .4byte 0x00002004 -_0807B3B0: .4byte gRoomControls -_0807B3B4: .4byte gMapBottom -_0807B3B8: .4byte 0x0000B004 -_0807B3BC: .4byte gUnk_080B37A0 -_0807B3C0: .4byte gUnk_02019EE0 -_0807B3C4: - lsls r1, r1, #1 - ldr r0, _0807B400 @ =gMapDataTopSpecial -_0807B3C8: - adds r3, r1, r0 - mov r1, ip - lsls r0, r1, #3 - ldr r1, _0807B404 @ =0x00007004 - adds r0, r0, r1 - adds r0, r2, r0 - ldrh r1, [r0] - strh r1, [r3] - ldrh r1, [r0, #2] - strh r1, [r3, #2] - movs r1, #0x80 - lsls r1, r1, #1 - adds r2, r3, r1 - ldrh r1, [r0, #4] - strh r1, [r2] - movs r2, #0x81 - lsls r2, r2, #1 - adds r1, r3, r2 - ldrh r0, [r0, #6] - strh r0, [r1] - ldr r0, _0807B408 @ =gRoomControls - ldrh r0, [r0] - cmp r0, #1 - beq _0807B430 - ldr r1, _0807B40C @ =gUpdateVisibleTiles - movs r0, #1 - strb r0, [r1] - b _0807B430 - .align 2, 0 -_0807B400: .4byte gMapDataTopSpecial -_0807B404: .4byte 0x00007004 -_0807B408: .4byte gRoomControls -_0807B40C: .4byte gUpdateVisibleTiles -_0807B410: - ldr r0, _0807B424 @ =0x00003FFF - cmp r5, r0 - bls _0807B428 - adds r0, r5, #0 - adds r1, r4, #0 - adds r2, r6, #0 - bl SetTile - b _0807B430 - .align 2, 0 -_0807B424: .4byte 0x00003FFF -_0807B428: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_0807BA8C -_0807B430: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807B9B8.inc b/asm/non_matching/playerUtils/sub_0807B9B8.inc deleted file mode 100644 index 6e2f118f..00000000 --- a/asm/non_matching/playerUtils/sub_0807B9B8.inc +++ /dev/null @@ -1,99 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r4, r1, #0 - adds r6, r2, #0 - adds r0, r4, #0 - adds r1, r6, #0 - bl DeleteLoadedTileEntity - adds r0, r6, #0 - bl GetLayerByIndex - adds r5, r0, #0 - lsls r1, r4, #1 - adds r0, r5, #4 - adds r0, r0, r1 - strh r7, [r0] - lsls r1, r7, #1 - ldr r2, _0807BA24 @ =0x00005004 - adds r0, r5, r2 - adds r0, r0, r1 - ldrh r2, [r0] - ldr r0, _0807BA28 @ =0x00002004 - adds r1, r5, r0 - adds r1, r1, r4 - ldr r0, _0807BA2C @ =gUnk_080B3E80 - adds r0, r2, r0 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _0807BA30 @ =0x0000B004 - adds r1, r5, r0 - adds r1, r1, r4 - ldr r0, _0807BA34 @ =gUnk_080B37A0 - adds r2, r2, r0 - ldrb r0, [r2] - strb r0, [r1] - ldr r0, _0807BA38 @ =gRoomControls - ldrb r1, [r0, #0xf] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _0807BA78 - movs r1, #0x3f - ands r1, r4 - lsls r1, r1, #1 - movs r0, #0xfc - lsls r0, r0, #4 - ands r0, r4 - lsls r0, r0, #2 - adds r1, r1, r0 - cmp r6, #2 - beq _0807BA40 - lsls r1, r1, #1 - ldr r0, _0807BA3C @ =gUnk_02019EE0 - b _0807BA44 - .align 2, 0 -_0807BA24: .4byte 0x00005004 -_0807BA28: .4byte 0x00002004 -_0807BA2C: .4byte gUnk_080B3E80 -_0807BA30: .4byte 0x0000B004 -_0807BA34: .4byte gUnk_080B37A0 -_0807BA38: .4byte gRoomControls -_0807BA3C: .4byte gUnk_02019EE0 -_0807BA40: - lsls r1, r1, #1 - ldr r0, _0807BA7C @ =gMapDataTopSpecial -_0807BA44: - adds r3, r1, r0 - lsls r0, r7, #3 - ldr r1, _0807BA80 @ =0x00007004 - adds r0, r0, r1 - adds r0, r5, r0 - ldrh r1, [r0] - strh r1, [r3] - ldrh r1, [r0, #2] - strh r1, [r3, #2] - movs r1, #0x80 - lsls r1, r1, #1 - adds r2, r3, r1 - ldrh r1, [r0, #4] - strh r1, [r2] - movs r2, #0x81 - lsls r2, r2, #1 - adds r1, r3, r2 - ldrh r0, [r0, #6] - strh r0, [r1] - ldr r0, _0807BA84 @ =gRoomControls - ldrh r0, [r0] - cmp r0, #1 - beq _0807BA78 - ldr r1, _0807BA88 @ =gUpdateVisibleTiles - movs r0, #1 - strb r0, [r1] -_0807BA78: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0807BA7C: .4byte gMapDataTopSpecial -_0807BA80: .4byte 0x00007004 -_0807BA84: .4byte gRoomControls -_0807BA88: .4byte gUpdateVisibleTiles - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807BA8C.inc b/asm/non_matching/playerUtils/sub_0807BA8C.inc deleted file mode 100644 index d7a45a8c..00000000 --- a/asm/non_matching/playerUtils/sub_0807BA8C.inc +++ /dev/null @@ -1,101 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r7, r1, #0 - bl DeleteLoadedTileEntity - adds r0, r7, #0 - bl GetLayerByIndex - adds r5, r0, #0 - lsls r2, r4, #1 - adds r1, r5, #4 - adds r1, r1, r2 - ldr r3, _0807BAFC @ =0x00003004 - adds r0, r5, r3 - adds r0, r0, r2 - ldrh r6, [r0] - strh r6, [r1] - lsls r1, r6, #1 - ldr r2, _0807BB00 @ =0x00005004 - adds r0, r5, r2 - adds r0, r0, r1 - ldrh r2, [r0] - ldr r3, _0807BB04 @ =0x00002004 - adds r1, r5, r3 - adds r1, r1, r4 - ldr r0, _0807BB08 @ =gUnk_080B3E80 - adds r0, r2, r0 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _0807BB0C @ =0x0000B004 - adds r1, r5, r0 - adds r1, r1, r4 - ldr r0, _0807BB10 @ =gUnk_080B37A0 - adds r2, r2, r0 - ldrb r0, [r2] - strb r0, [r1] - ldr r0, _0807BB14 @ =gRoomControls - ldrb r1, [r0, #0xf] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _0807BB54 - movs r1, #0x3f - ands r1, r4 - lsls r1, r1, #1 - movs r0, #0xfc - lsls r0, r0, #4 - ands r0, r4 - lsls r0, r0, #2 - adds r1, r1, r0 - cmp r7, #2 - beq _0807BB1C - lsls r1, r1, #1 - ldr r0, _0807BB18 @ =gUnk_02019EE0 - b _0807BB20 - .align 2, 0 -_0807BAFC: .4byte 0x00003004 -_0807BB00: .4byte 0x00005004 -_0807BB04: .4byte 0x00002004 -_0807BB08: .4byte gUnk_080B3E80 -_0807BB0C: .4byte 0x0000B004 -_0807BB10: .4byte gUnk_080B37A0 -_0807BB14: .4byte gRoomControls -_0807BB18: .4byte gUnk_02019EE0 -_0807BB1C: - lsls r1, r1, #1 - ldr r0, _0807BB58 @ =gMapDataTopSpecial -_0807BB20: - adds r3, r1, r0 - lsls r0, r6, #3 - ldr r1, _0807BB5C @ =0x00007004 - adds r0, r0, r1 - adds r0, r5, r0 - ldrh r1, [r0] - strh r1, [r3] - ldrh r1, [r0, #2] - strh r1, [r3, #2] - movs r1, #0x80 - lsls r1, r1, #1 - adds r2, r3, r1 - ldrh r1, [r0, #4] - strh r1, [r2] - movs r2, #0x81 - lsls r2, r2, #1 - adds r1, r3, r2 - ldrh r0, [r0, #6] - strh r0, [r1] - ldr r0, _0807BB60 @ =gRoomControls - ldrh r0, [r0] - cmp r0, #1 - beq _0807BB54 - ldr r1, _0807BB64 @ =gUpdateVisibleTiles - movs r0, #1 - strb r0, [r1] -_0807BB54: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0807BB58: .4byte gMapDataTopSpecial -_0807BB5C: .4byte 0x00007004 -_0807BB60: .4byte gRoomControls -_0807BB64: .4byte gUpdateVisibleTiles - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807BC84.inc b/asm/non_matching/playerUtils/sub_0807BC84.inc deleted file mode 100644 index 27fac6e1..00000000 --- a/asm/non_matching/playerUtils/sub_0807BC84.inc +++ /dev/null @@ -1,73 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - ldr r1, _0807BD04 @ =gRoomControls - ldrh r0, [r1, #0x1e] - lsrs r2, r0, #4 - mov r8, r1 - cmp r2, #0x40 - bne _0807BC98 - movs r2, #0x3f -_0807BC98: - ldr r1, _0807BD08 @ =gUnk_02027EB4 - adds r3, r2, r1 - adds r6, r1, #0 - adds r6, #0x3f - ldr r0, _0807BD0C @ =gUnk_0200D654 - adds r2, r2, r0 - adds r5, r0, #0 - adds r5, #0x3f - movs r4, #0 - adds r7, r1, #0 - mov ip, r0 - movs r0, #0xff -_0807BCB0: - strb r0, [r3] - strb r0, [r6] - strb r0, [r2] - strb r0, [r5] - adds r3, #0x40 - adds r6, #0x40 - adds r2, #0x40 - adds r5, #0x40 - adds r4, #1 - cmp r4, #0x3f - bls _0807BCB0 - mov r0, r8 - ldrh r1, [r0, #0x20] - ldr r0, _0807BD10 @ =0x0000FFF0 - ands r0, r1 - lsls r0, r0, #2 - adds r3, r0, r7 - movs r1, #0xfc - lsls r1, r1, #4 - adds r6, r7, r1 - mov r1, ip - adds r2, r0, r1 - movs r5, #0xfc - lsls r5, r5, #4 - add r5, ip - movs r4, #0 - movs r0, #0xff -_0807BCE6: - strb r0, [r3] - adds r3, #1 - strb r0, [r6] - adds r6, #1 - strb r0, [r2] - adds r2, #1 - strb r0, [r5] - adds r5, #1 - adds r4, #1 - cmp r4, #0x3f - bls _0807BCE6 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0807BD04: .4byte gRoomControls -_0807BD08: .4byte gUnk_02027EB4 -_0807BD0C: .4byte gUnk_0200D654 -_0807BD10: .4byte 0x0000FFF0 - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807BDB8.inc b/asm/non_matching/playerUtils/sub_0807BDB8.inc deleted file mode 100644 index af04a053..00000000 --- a/asm/non_matching/playerUtils/sub_0807BDB8.inc +++ /dev/null @@ -1,159 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r3, r0, #0 - movs r5, #0xff - movs r0, #7 - ands r1, r0 - cmp r1, #7 - bls _0807BDC8 - b _0807BEE2 -_0807BDC8: - lsls r0, r1, #2 - ldr r1, _0807BDD4 @ =_0807BDD8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807BDD4: .4byte _0807BDD8 -_0807BDD8: @ jump table - .4byte _0807BDF8 @ case 0 - .4byte _0807BE10 @ case 1 - .4byte _0807BE30 @ case 2 - .4byte _0807BE4C @ case 3 - .4byte _0807BE78 @ case 4 - .4byte _0807BE94 @ case 5 - .4byte _0807BEB4 @ case 6 - .4byte _0807BEC4 @ case 7 -_0807BDF8: - movs r1, #0x32 - ldrsh r0, [r3, r1] - ldr r1, _0807BE0C @ =gRoomControls - ldrh r1, [r1, #8] - subs r0, r0, r1 - cmp r0, #9 - bhi _0807BEE2 - movs r5, #0 - b _0807BEE2 - .align 2, 0 -_0807BE0C: .4byte gRoomControls -_0807BE10: - movs r2, #0x32 - ldrsh r0, [r3, r2] - ldr r2, _0807BE2C @ =gRoomControls - ldrh r1, [r2, #8] - subs r0, r0, r1 - cmp r0, #9 - bhi _0807BE20 - movs r5, #0 -_0807BE20: - ldrh r0, [r2, #0x1e] - subs r0, #0xa - movs r4, #0x2e - ldrsh r1, [r3, r4] - ldrh r2, [r2, #6] - b _0807BE6A - .align 2, 0 -_0807BE2C: .4byte gRoomControls -_0807BE30: - ldr r1, _0807BE48 @ =gRoomControls - ldrh r2, [r1, #0x1e] - subs r2, #0xa - movs r4, #0x2e - ldrsh r0, [r3, r4] - ldrh r1, [r1, #6] - subs r0, r0, r1 - cmp r2, r0 - bhs _0807BEE2 - movs r5, #1 - b _0807BEE2 - .align 2, 0 -_0807BE48: .4byte gRoomControls -_0807BE4C: - ldr r4, _0807BE74 @ =gRoomControls - ldrh r0, [r4, #0x20] - subs r0, #0xa - movs r2, #0x32 - ldrsh r1, [r3, r2] - ldrh r2, [r4, #8] - subs r1, r1, r2 - cmp r0, r1 - bhs _0807BE60 - movs r5, #2 -_0807BE60: - ldrh r0, [r4, #0x1e] - subs r0, #0xa - movs r2, #0x2e - ldrsh r1, [r3, r2] - ldrh r2, [r4, #6] -_0807BE6A: - subs r1, r1, r2 - cmp r0, r1 - bhs _0807BEE2 - movs r5, #1 - b _0807BEE2 - .align 2, 0 -_0807BE74: .4byte gRoomControls -_0807BE78: - ldr r1, _0807BE90 @ =gRoomControls - ldrh r2, [r1, #0x20] - subs r2, #0xa - movs r4, #0x32 - ldrsh r0, [r3, r4] - ldrh r1, [r1, #8] - subs r0, r0, r1 - cmp r2, r0 - bhs _0807BEE2 - movs r5, #2 - b _0807BEE2 - .align 2, 0 -_0807BE90: .4byte gRoomControls -_0807BE94: - ldr r4, _0807BEB0 @ =gRoomControls - ldrh r0, [r4, #0x20] - subs r0, #0xa - movs r2, #0x32 - ldrsh r1, [r3, r2] - ldrh r2, [r4, #8] - subs r1, r1, r2 - cmp r0, r1 - bhs _0807BEA8 - movs r5, #2 -_0807BEA8: - movs r1, #0x2e - ldrsh r0, [r3, r1] - ldrh r1, [r4, #6] - b _0807BEDA - .align 2, 0 -_0807BEB0: .4byte gRoomControls -_0807BEB4: - movs r2, #0x2e - ldrsh r0, [r3, r2] - ldr r1, _0807BEC0 @ =gRoomControls - ldrh r1, [r1, #6] - b _0807BEDA - .align 2, 0 -_0807BEC0: .4byte gRoomControls -_0807BEC4: - movs r4, #0x32 - ldrsh r0, [r3, r4] - ldr r2, _0807BEE8 @ =gRoomControls - ldrh r1, [r2, #8] - subs r0, r0, r1 - cmp r0, #9 - bhi _0807BED4 - movs r5, #0 -_0807BED4: - movs r1, #0x2e - ldrsh r0, [r3, r1] - ldrh r1, [r2, #6] -_0807BEDA: - subs r0, r0, r1 - cmp r0, #9 - bhi _0807BEE2 - movs r5, #3 -_0807BEE2: - adds r0, r5, #0 - pop {r4, r5, pc} - .align 2, 0 -_0807BEE8: .4byte gRoomControls - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807BEEC.inc b/asm/non_matching/playerUtils/sub_0807BEEC.inc deleted file mode 100644 index 9f6d0405..00000000 --- a/asm/non_matching/playerUtils/sub_0807BEEC.inc +++ /dev/null @@ -1,84 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - adds r7, r1, #0 - ldr r0, _0807BF04 @ =gArea - ldrb r1, [r0, #0xd] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0807BF0C - ldr r0, _0807BF08 @ =gRoomControls - ldrb r0, [r0, #5] - b _0807BF7C - .align 2, 0 -_0807BF04: .4byte gArea -_0807BF08: .4byte gRoomControls -_0807BF0C: - cmp r2, #1 - beq _0807BF2C - cmp r2, #1 - blo _0807BF1E - cmp r2, #2 - beq _0807BF40 - cmp r2, #3 - beq _0807BF58 - b _0807BF7A -_0807BF1E: - ldr r0, _0807BF28 @ =gRoomControls - ldrh r0, [r0, #8] - adds r7, r0, #0 - subs r7, #0x10 - b _0807BF60 - .align 2, 0 -_0807BF28: .4byte gRoomControls -_0807BF2C: - ldr r0, _0807BF3C @ =gRoomControls - ldrh r1, [r0, #6] - ldrh r0, [r0, #0x1e] - adds r1, r1, r0 - adds r6, r1, #0 - adds r6, #0x10 - b _0807BF60 - .align 2, 0 -_0807BF3C: .4byte gRoomControls -_0807BF40: - ldr r0, _0807BF50 @ =gRoomControls - ldrh r1, [r0, #8] - ldrh r0, [r0, #0x20] - adds r1, r1, r0 - adds r7, r1, #0 - adds r7, #0x10 - b _0807BF60 - .align 2, 0 -_0807BF50: .4byte gRoomControls -_0807BF54: - adds r0, r4, #0 - b _0807BF7C -_0807BF58: - ldr r0, _0807BF80 @ =gRoomControls - ldrh r0, [r0, #6] - adds r6, r0, #0 - subs r6, #0x10 -_0807BF60: - ldr r5, _0807BF84 @ =gUnk_02033ACC - movs r4, #0 -_0807BF64: - adds r0, r6, #0 - adds r1, r7, #0 - adds r2, r5, #0 - bl sub_0807BF88 - cmp r0, #0 - bne _0807BF54 - adds r4, #1 - adds r5, #0x20 - cmp r4, #0x3f - bls _0807BF64 -_0807BF7A: - movs r0, #0xff -_0807BF7C: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0807BF80: .4byte gRoomControls -_0807BF84: .4byte gUnk_02033ACC - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807BF88.inc b/asm/non_matching/playerUtils/sub_0807BF88.inc deleted file mode 100644 index e7c6537e..00000000 --- a/asm/non_matching/playerUtils/sub_0807BF88.inc +++ /dev/null @@ -1,19 +0,0 @@ - .syntax unified - push {r4, lr} - adds r3, r2, #0 - ldrh r2, [r3, #4] - subs r0, r0, r2 - ldrh r2, [r3, #6] - subs r1, r1, r2 - movs r2, #0 - ldrh r4, [r3] - cmp r0, r4 - bhs _0807BFA4 - ldrh r3, [r3, #2] - cmp r1, r3 - bhs _0807BFA4 - movs r2, #1 -_0807BFA4: - adds r0, r2, #0 - pop {r4, pc} - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807C460.inc b/asm/non_matching/playerUtils/sub_0807C460.inc deleted file mode 100644 index a0800f86..00000000 --- a/asm/non_matching/playerUtils/sub_0807C460.inc +++ /dev/null @@ -1,79 +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 r7, _0807C4E8 @ =gMapDataBottom - ldr r6, _0807C4EC @ =gMapDataTop - ldr r0, _0807C4F0 @ =gRoomControls - ldrh r1, [r0, #0x1e] - lsrs r3, r1, #4 - ldrh r0, [r0, #0x20] - lsrs r0, r0, #4 - str r0, [sp] - movs r4, #0 - movs r1, #0 - cmp r1, r0 - bhs _0807C4DC - movs r0, #0x40 - subs r0, r0, r3 - lsls r0, r0, #1 - mov sb, r0 -_0807C48C: - movs r5, #0 - adds r1, #1 - mov sl, r1 - cmp r5, r3 - bhs _0807C4CA - ldr r0, _0807C4F4 @ =0x00003FFF - mov r8, r0 -_0807C49A: - ldrh r0, [r7] - cmp r0, r8 - bls _0807C4AC - adds r1, r4, #0 - movs r2, #1 - str r3, [sp, #4] - bl SetTile - ldr r3, [sp, #4] -_0807C4AC: - ldrh r0, [r6] - cmp r0, r8 - bls _0807C4BE - adds r1, r4, #0 - movs r2, #2 - str r3, [sp, #4] - bl SetTile - ldr r3, [sp, #4] -_0807C4BE: - adds r7, #2 - adds r6, #2 - adds r4, #1 - adds r5, #1 - cmp r5, r3 - blo _0807C49A -_0807C4CA: - add r7, sb - add r6, sb - adds r0, r4, #0 - adds r0, #0x40 - subs r4, r0, r3 - mov r1, sl - ldr r0, [sp] - cmp r1, r0 - blo _0807C48C -_0807C4DC: - 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 -_0807C4E8: .4byte gMapDataBottom -_0807C4EC: .4byte gMapDataTop -_0807C4F0: .4byte gRoomControls -_0807C4F4: .4byte 0x00003FFF - .syntax divided diff --git a/asm/non_matching/playerUtils/sub_0807C4F8.inc b/asm/non_matching/playerUtils/sub_0807C4F8.inc index 7ddf21ad..3a925427 100644 --- a/asm/non_matching/playerUtils/sub_0807C4F8.inc +++ b/asm/non_matching/playerUtils/sub_0807C4F8.inc @@ -4,7 +4,7 @@ ldrb r0, [r0, #4] cmp r0, #0x71 beq _0807C592 - ldr r0, _0807C598 @ =gUnk_02019EE0 + ldr r0, _0807C598 @ =gMapDataBottomSpecial movs r4, #0x80 lsls r4, r4, #8 adds r1, r4, #0 @@ -22,7 +22,7 @@ _0807C524: adds r4, #0xc ldr r1, [r4, #4] - ldr r0, _0807C598 @ =gUnk_02019EE0 + ldr r0, _0807C598 @ =gMapDataBottomSpecial cmp r1, r0 beq _0807C534 ldr r0, _0807C59C @ =gMapDataTopSpecial @@ -43,7 +43,7 @@ _0807C54A: ldr r0, [r4] cmp r0, #0 blt _0807C524 - ldr r4, _0807C598 @ =gUnk_02019EE0 + ldr r4, _0807C598 @ =gMapDataBottomSpecial movs r0, #0x80 lsls r0, r0, #7 adds r5, r4, r0 @@ -74,7 +74,7 @@ _0807C592: pop {r4, r5, r6, pc} .align 2, 0 _0807C594: .4byte gRoomControls -_0807C598: .4byte gUnk_02019EE0 +_0807C598: .4byte gMapDataBottomSpecial _0807C59C: .4byte gMapDataTopSpecial _0807C5A0: .4byte gUnk_02022830 _0807C5A4: .4byte gArea diff --git a/asm/non_matching/playerUtils/sub_0807C810.inc b/asm/non_matching/playerUtils/sub_0807C810.inc deleted file mode 100644 index 1e6842fe..00000000 --- a/asm/non_matching/playerUtils/sub_0807C810.inc +++ /dev/null @@ -1,37 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - bl sub_0807BFD0 - ldr r2, _0807C850 @ =gUnk_03004030 - ldr r6, _0807C854 @ =gPlayerEntity - ldr r4, _0807C858 @ =gRoomControls - ldr r3, [r2] - ldrh r1, [r3, #6] - movs r0, #0x3f - ands r0, r1 - lsls r0, r0, #4 - ldrh r1, [r4, #6] - adds r0, r0, r1 - ldrh r1, [r2, #4] - adds r1, r1, r0 - movs r5, #0 - strh r1, [r6, #0x2e] - ldrh r1, [r3, #6] - movs r0, #0xfc - lsls r0, r0, #4 - ands r0, r1 - lsrs r0, r0, #2 - ldrh r4, [r4, #8] - adds r0, r0, r4 - ldrh r1, [r2, #6] - adds r1, r1, r0 - strh r1, [r6, #0x32] - bl sub_080809D4 - ldr r0, _0807C85C @ =gUpdateVisibleTiles - strb r5, [r0] - pop {r4, r5, r6, pc} - .align 2, 0 -_0807C850: .4byte gUnk_03004030 -_0807C854: .4byte gPlayerEntity -_0807C858: .4byte gRoomControls -_0807C85C: .4byte gUpdateVisibleTiles - .syntax divided diff --git a/asm/non_matching/scroll/sub_08080108.inc b/asm/non_matching/scroll/sub_08080108.inc index fd0375ea..195a563e 100644 --- a/asm/non_matching/scroll/sub_08080108.inc +++ b/asm/non_matching/scroll/sub_08080108.inc @@ -37,7 +37,7 @@ bl sub_0807BBE4 bl sub_0807BC84 bl sub_0805E248 - ldr r0, _08080190 @ =gUnk_02019EE0 + ldr r0, _08080190 @ =gMapDataBottomSpecial adds r1, r5, #0 bl sub_0801AB08 ldr r0, _08080194 @ =gMapDataTopSpecial @@ -51,6 +51,6 @@ _08080180: .4byte gUnk_02034480 _08080184: .4byte gUnk_0200B640 _08080188: .4byte gUnk_02022830 _0808018C: .4byte gUnk_020246B0 -_08080190: .4byte gUnk_02019EE0 +_08080190: .4byte gMapDataBottomSpecial _08080194: .4byte gMapDataTopSpecial .syntax divided diff --git a/asm/non_matching/subtask2/Subtask_FadeOut.inc b/asm/non_matching/subtask2/Subtask_FadeOut.inc index f95878fa..bcf06db8 100644 --- a/asm/non_matching/subtask2/Subtask_FadeOut.inc +++ b/asm/non_matching/subtask2/Subtask_FadeOut.inc @@ -9,7 +9,7 @@ _080A73B4: bl DeleteAllEntities bl sub_0805E974 ldr r1, _080A746C @ =gCurrentRoomProperties - ldr r5, _080A7470 @ =gUnk_02032EC0 + ldr r5, _080A7470 @ =gUI ldr r0, [r5, #0x10] str r0, [r1] ldr r0, _080A7474 @ =gPlayerState @@ -84,7 +84,7 @@ _080A73B4: .align 2, 0 _080A7468: .4byte gFadeControl _080A746C: .4byte gCurrentRoomProperties -_080A7470: .4byte gUnk_02032EC0 +_080A7470: .4byte gUI _080A7474: .4byte gPlayerState _080A7478: .4byte gMapBottom _080A747C: .4byte gMapTop @@ -102,7 +102,7 @@ _080A74A8: ldrh r0, [r5, #0xa] bl SetFadeInverted _080A74AE: - ldr r1, _080A74C0 @ =gUnk_02032EC0 + ldr r1, _080A74C0 @ =gUI movs r2, #0 movs r0, #4 strb r0, [r1] @@ -112,6 +112,6 @@ _080A74AE: _080A74BC: pop {r4, r5, pc} .align 2, 0 -_080A74C0: .4byte gUnk_02032EC0 +_080A74C0: .4byte gUI _080A74C4: .4byte gRoomTransition .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A5D1C.inc b/asm/non_matching/subtask2/sub_080A5D1C.inc index 2ceb19ca..150ae1b0 100644 --- a/asm/non_matching/subtask2/sub_080A5D1C.inc +++ b/asm/non_matching/subtask2/sub_080A5D1C.inc @@ -175,7 +175,7 @@ _080A5658: cmp r5, r1 blo _080A5658 _080A5672: - ldr r5, _080A56B0 @ =gUnk_02019EE0 + ldr r5, _080A56B0 @ =gMapDataBottomSpecial ldrb r0, [r5] cmp r0, #0 beq _080A570E @@ -199,7 +199,7 @@ _080A56A0: .4byte gMenu _080A56A4: .4byte gMain _080A56A8: .4byte gSpriteAnimations_322 _080A56ACEU: .4byte 0x00000143 -_080A56B0: .4byte gUnk_02019EE0 +_080A56B0: .4byte gMapDataBottomSpecial _080A56B4: .4byte gScreen _080A56B8: cmp r0, #3 @@ -428,7 +428,7 @@ _080A5E64: cmp r5, r1 blo _080A5E64 _080A5E7C: - ldr r5, _080A5EB8 @ =gUnk_02019EE0 + ldr r5, _080A5EB8 @ =gMapDataBottomSpecial ldrb r0, [r5] cmp r0, #0 beq _080A5F14 @@ -452,7 +452,7 @@ _080A5EA8: .4byte gMenu _080A5EAC: .4byte gMain _080A5EB0: .4byte 0x000001FB _080A5EB4: .4byte gSpriteAnimations_322 -_080A5EB8: .4byte gUnk_02019EE0 +_080A5EB8: .4byte gMapDataBottomSpecial _080A5EBC: .4byte gScreen _080A5EC0: cmp r0, #3 diff --git a/asm/non_matching/subtask2/sub_080A6534.inc b/asm/non_matching/subtask2/sub_080A6534.inc index 9f2cae7d..c59a39fa 100644 --- a/asm/non_matching/subtask2/sub_080A6534.inc +++ b/asm/non_matching/subtask2/sub_080A6534.inc @@ -16,7 +16,7 @@ movs r0, #0 bl SetColor ldr r1, _080A659C @ =gUnk_08128F4C - ldr r0, _080A65A0 @ =gUnk_02032EC0 + ldr r0, _080A65A0 @ =gUI ldrb r0, [r0, #3] lsls r0, r0, #1 adds r0, r0, r1 @@ -44,7 +44,7 @@ _080A6590: .4byte gScreen _080A6594: .4byte 0x0000F7FF _080A6598: .4byte gPaletteBuffer _080A659C: .4byte gUnk_08128F4C -_080A65A0: .4byte gUnk_02032EC0 +_080A65A0: .4byte gUI _080A65A4: .4byte gSave _080A65A8: .4byte gMenu .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A66D0.inc b/asm/non_matching/subtask2/sub_080A66D0.inc index 58a88f15..0c16585d 100644 --- a/asm/non_matching/subtask2/sub_080A66D0.inc +++ b/asm/non_matching/subtask2/sub_080A66D0.inc @@ -74,7 +74,7 @@ _080A5F30: ands r0, r1 lsls r0, r0, #0x18 lsrs r6, r0, #0x18 - ldr r4, _080A5F80 @ =gUnk_02019EE0 + ldr r4, _080A5F80 @ =gMapDataBottomSpecial ldrh r0, [r4, #2] cmp r0, #0 beq _080A5FAE @@ -92,7 +92,7 @@ _080A5F66: _080A5F74: .4byte gOamCmd _080A5F78: .4byte gMenu _080A5F7C: .4byte gUnk_08128E94 -_080A5F80: .4byte gUnk_02019EE0 +_080A5F80: .4byte gMapDataBottomSpecial _080A5F84: cmp r6, #0 bne _080A5F8A @@ -195,7 +195,7 @@ _080A6738: ands r0, r1 lsls r0, r0, #0x18 lsrs r6, r0, #0x18 - ldr r4, _080A678C @ =gUnk_02019EE0 + ldr r4, _080A678C @ =gMapDataBottomSpecial ldrh r0, [r4, #2] cmp r0, #0 beq _080A67BA @@ -214,7 +214,7 @@ _080A677C: .4byte gOamCmd _080A6780: .4byte gMenu _080A6784: .4byte gUnk_08128E94 _080A6788: .4byte 0x000001FB -_080A678C: .4byte gUnk_02019EE0 +_080A678C: .4byte gMapDataBottomSpecial _080A6790: cmp r6, #0 bne _080A6796 diff --git a/asm/non_matching/subtask2/sub_080A67C4.inc b/asm/non_matching/subtask2/sub_080A67C4.inc index 9b7939a1..bcd5fa72 100644 --- a/asm/non_matching/subtask2/sub_080A67C4.inc +++ b/asm/non_matching/subtask2/sub_080A67C4.inc @@ -31,7 +31,7 @@ _080A67F4: movs r5, #0x71 b _080A6822 _080A6802: - ldr r1, _080A68AC @ =gUnk_02032EC0 + ldr r1, _080A68AC @ =gUI adds r0, r1, #0 adds r0, #0x20 ldrb r0, [r0] @@ -113,13 +113,13 @@ _080A6886: ldrb r0, [r4, #2] lsrs r0, r0, #1 strh r0, [r1, #0xa] - ldr r0, _080A68D0 @ =gUnk_02019EE0 + ldr r0, _080A68D0 @ =gMapDataBottomSpecial movs r1, #0x80 lsls r1, r1, #3 bl MemClear pop {r4, r5, r6, r7, pc} .align 2, 0 -_080A68AC: .4byte gUnk_02032EC0 +_080A68AC: .4byte gUI _080A68B0: .4byte gUnk_08128E94 _080A68B4: .4byte gUnk_03003DE4 _080A68B8: .4byte gUnk_02017AA0 @@ -128,5 +128,5 @@ _080A68C0: .4byte 0x00001E0B _080A68C4: .4byte 0x0400000E _080A68C8: .4byte 0xA2600001 _080A68CC: .4byte gMenu -_080A68D0: .4byte gUnk_02019EE0 +_080A68D0: .4byte gMapDataBottomSpecial .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A698C.inc b/asm/non_matching/subtask2/sub_080A698C.inc index 887c54fe..6fa80645 100644 --- a/asm/non_matching/subtask2/sub_080A698C.inc +++ b/asm/non_matching/subtask2/sub_080A698C.inc @@ -10,7 +10,7 @@ adds r2, #0x2d ldrb r0, [r2] lsls r0, r0, #3 - ldr r3, _080A69DC @ =gUnk_02019EE0 + ldr r3, _080A69DC @ =gMapDataBottomSpecial adds r0, r0, r3 lsrs r1, r5, #8 strb r1, [r0] @@ -38,5 +38,5 @@ _080A69D4: pop {r4, r5, r6, pc} .align 2, 0 _080A69D8: .4byte gMenu -_080A69DC: .4byte gUnk_02019EE0 +_080A69DC: .4byte gMapDataBottomSpecial .syntax divided diff --git a/asm/object/code_0808C964.s b/asm/object/code_0808C964.s index 26b741cb..1cef7b78 100644 --- a/asm/object/code_0808C964.s +++ b/asm/object/code_0808C964.s @@ -16,7 +16,7 @@ sub_0808C964: @ 0x0808C964 ldrb r0, [r4, #9] cmp r0, #0x76 bne _0808C982 - ldr r0, _0808CA08 @ =gUnk_02032EC0 + ldr r0, _0808CA08 @ =gUI adds r0, #0x20 ldrb r0, [r0] cmp r0, #2 @@ -93,7 +93,7 @@ _0808C9FA: _0808CA04: pop {r4, pc} .align 2, 0 -_0808CA08: .4byte gUnk_02032EC0 +_0808CA08: .4byte gUI _0808CA0C: .4byte gArea thumb_func_start sub_0808CA10 diff --git a/asm/veneer.s b/asm/veneer.s index 0854ae5e..85648762 100644 --- a/asm/veneer.s +++ b/asm/veneer.s @@ -92,7 +92,7 @@ UpdateScrollVram: @ 0x08000108 ldr r0, [r0] cmp r0, #0 beq _08000126 - ldr r0, _080001F0 @ =gUnk_02019EE0 + ldr r0, _080001F0 @ =gMapDataBottomSpecial ldr r1, _080001F4 @ =gUnk_02021F70 bl _call_via_r4 _08000126: @@ -197,7 +197,7 @@ GetTileIndex: @ 0x080001DA .align 2, 0 _080001E8: .4byte gUpdateVisibleTiles _080001EC: .4byte gMapBottom -_080001F0: .4byte gUnk_02019EE0 +_080001F0: .4byte gMapDataBottomSpecial _080001F4: .4byte gUnk_02021F70 _080001F8: .4byte gMapTop _080001FC: .4byte gMapDataTopSpecial diff --git a/data/map/map_headers.s b/data/map/map_headers.s index 4f2cc9fe..5ff387e7 100755 --- a/data/map/map_headers.s +++ b/data/map/map_headers.s @@ -544,108 +544,108 @@ gAreaRoomMaps_CrenelMinishPaths:: @ 08103D24 gAreaRoomMap_MinishHouseInteriors_0:: @ 08103D34 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_0_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_0_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_0_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_0_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_1:: @ 08103D58 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_1_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_1_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_1_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_1_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_2:: @ 08103D7C map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_2_1, 0x1D0, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_2_2, 0x1000, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_2_1, 0x1D0, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_2_2, 0x1000, 1, 1 gAreaRoomMap_MinishHouseInteriors_3:: @ 08103DA0 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_3_1, 0xA0, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_3_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_3_1, 0xA0, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_3_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_4:: @ 08103DC4 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_4_1, 0xA0, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_4_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_4_1, 0xA0, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_4_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_5:: @ 08103DE8 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_5_1, 0xA0, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_5_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_5_1, 0xA0, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_5_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_6:: @ 08103E0C map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_6_1, 0xA0, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_6_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_6_1, 0xA0, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_6_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_8:: @ 08103E30 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_8_1, 0xE1, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_8_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_8_1, 0xE1, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_8_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_7:: @ 08103E54 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_7_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_7_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_7_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_7_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_9:: @ 08103E78 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_9_1, 0x159, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_9_2, 0x1000, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_9_1, 0x159, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_9_2, 0x1000, 1, 1 gAreaRoomMap_MinishHouseInteriors_10:: @ 08103E9C map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_10_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_10_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_10_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_10_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_11:: @ 08103EC0 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_11_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_11_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_11_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_11_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_12:: @ 08103EE4 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_12_1, 0xDC, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_12_2, 0x1000, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_12_1, 0xDC, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_12_2, 0x1000, 1, 1 gAreaRoomMap_MinishHouseInteriors_13:: @ 08103F08 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_13_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_13_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_13_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_13_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_14:: @ 08103F2C map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_14_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_14_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_14_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_14_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_15:: @ 08103F50 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_15_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_15_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_15_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_15_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_16:: @ 08103F74 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_16_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_16_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_16_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_16_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_17:: @ 08103F98 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_17_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_17_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_17_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_17_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_18:: @ 08103FBC map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_18_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_18_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_18_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_18_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_19:: @ 08103FE0 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_19_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_19_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_19_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_19_2, 0x800, 1, 1 gAreaRoomMap_MinishHouseInteriors_20:: @ 08104004 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_MinishHouseInteriors_20_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_20_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_20_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_20_2, 0x800, 1, 1 gAreaRoomMaps_MinishHouseInteriors:: @ 08104028 .4byte gAreaRoomMap_MinishHouseInteriors_0 @@ -691,48 +691,48 @@ gAreaRoomMaps_MinishHouseInteriors:: @ 08104028 gAreaRoomMap_TownMinishHoles_0:: @ 081040C8 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_0_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_0_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_0_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_0_2, 0x800, 1, 1 gAreaRoomMap_TownMinishHoles_1:: @ 081040EC map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_1_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_1_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_1_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_1_2, 0x800, 1, 1 gAreaRoomMap_TownMinishHoles_2:: @ 08104110 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_2_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_2_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_2_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_2_2, 0x800, 1, 1 gAreaRoomMap_TownMinishHoles_3:: @ 08104134 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_3_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_3_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_3_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_3_2, 0x800, 1, 1 gAreaRoomMap_TownMinishHoles_4:: @ 08104158 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_4_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_4_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_4_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_4_2, 0x800, 1, 1 gAreaRoomMap_TownMinishHoles_5:: @ 0810417C map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_5_1, 0x96, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_5_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_5_1, 0x96, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_5_2, 0x800, 1, 1 gAreaRoomMap_TownMinishHoles_6:: @ 081041A0 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_6_1, 0x24C, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_6_2, 0x2000, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_6_1, 0x24C, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_6_2, 0x2000, 1, 1 gAreaRoomMap_TownMinishHoles_7:: @ 081041C4 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_7_1, 0xE1, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_7_2, 0x800, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_7_1, 0xE1, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_7_2, 0x800, 1, 1 gAreaRoomMap_TownMinishHoles_8:: @ 081041E8 map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1 - map_unknown offset_gAreaRoomMap_TownMinishHoles_8_1, 0x190, 1 - map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_8_2, 0x2000, 1, 1 + collision_bottom offset_gAreaRoomMap_TownMinishHoles_8_1, 0x190, 1 + map_bottom_special offset_gAreaRoomMap_TownMinishHoles_8_2, 0x2000, 1, 1 gAreaRoomMaps_TownMinishHoles:: @ 0810420C .4byte gAreaRoomMap_TownMinishHoles_0 diff --git a/include/entity.h b/include/entity.h index 137cadc3..4b25be09 100644 --- a/include/entity.h +++ b/include/entity.h @@ -506,6 +506,7 @@ extern u8 gManagerCount; /** @name Tile Macros */ /// @{ #define TILE(x, y) (((((x)-gRoomControls.origin_x) >> 4) & 0x3F) | ((((y)-gRoomControls.origin_y) >> 4) & 0x3F) << 6) +#define TILE_POS(x, y) (x + (y << 6)) #define COORD_TO_TILE(entity) TILE((entity)->x.HALF.HI, (entity)->y.HALF.HI) #define COORD_TO_TILE_OFFSET(entity, xOff, yOff) TILE((entity)->x.HALF.HI - (xOff), (entity)->y.HALF.HI - (yOff)) /// @} diff --git a/include/fileselect.h b/include/fileselect.h index f4fe832a..31d75ea5 100644 --- a/include/fileselect.h +++ b/include/fileselect.h @@ -53,7 +53,7 @@ typedef struct { /*0x08*/ s8 saveStatus[3]; /*0x0b*/ SaveFile saves[3]; } struct_02019EE0; -extern struct_02019EE0 gUnk_02019EE0; +extern struct_02019EE0 gMapDataBottomSpecial; // TODO size: 0x8000 from ClearTilemaps? extern void sub_08056FEC(u32, struct_020227E8*); diff --git a/include/functions.h b/include/functions.h index b89a1a80..f3258d3f 100644 --- a/include/functions.h +++ b/include/functions.h @@ -214,7 +214,7 @@ extern void sub_0807ACCC(Entity*); extern u32 sub_0807B014(); extern void sub_0807B0C8(void); extern void sub_0807B7D8(u32, u32, u32); -extern void sub_0807B9B8(s32, s32, s32); +extern void sub_0807B9B8(u32, u32, u32); extern void sub_0807BA8C(u32, u32); extern void sub_0807BB68(s16*, u32, u32); extern bool32 sub_0807BD14(Entity*, u32); diff --git a/include/main.h b/include/main.h index f7ab29c4..c5e0c0c5 100644 --- a/include/main.h +++ b/include/main.h @@ -82,8 +82,8 @@ typedef struct { } UI; static_assert(sizeof(UI) == 0x3b4); -extern Main gMain; /**< Main instance. */ -extern UI gUnk_02032EC0; /**< UI instance. */ +extern Main gMain; /**< Main instance. */ +extern UI gUI; /**< UI instance. */ /** * Program entry point. diff --git a/include/manager.h b/include/manager.h index 28a27922..4835a712 100644 --- a/include/manager.h +++ b/include/manager.h @@ -137,7 +137,7 @@ typedef struct { u16 unk_06; } DiggingCaveEntrance; -extern struct { +typedef struct { DiggingCaveEntrance* unk_00; u16 unk_04; u16 unk_06; @@ -145,7 +145,8 @@ extern struct { u8 unk_09; u8 unk_0a; u8 unk_0b; -} gUnk_03004030; +} struct_03004030; +extern struct_03004030 gUnk_03004030; extern DiggingCaveEntrance* diggingCaveEntrances[]; diff --git a/include/map.h b/include/map.h index 7c800a5a..52263a5b 100644 --- a/include/map.h +++ b/include/map.h @@ -4,14 +4,14 @@ #include "global.h" typedef struct { - u16* bgControlPtr; // Points to the BgSettings.control field for the bg belonging to this layer? - u16 _4[0x1000]; // tilemap data? <-- gMapDataTop / gMapDataBottom - u8 _2004[0x1000]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4 - u8 _3004[0x1000]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4 - u8 _4004[0x1000]; // gMetatileTypesTop, gMetatileTypesBottom - s16 _5004[0x500]; // gUnk_02011654,gUnk_0202BEB4 - // Maybe even include here gMetatilesTop, gUnk_02016654 ? - // gMetatilesBottom, gUnk_02030EB4 + /*0x0000*/ u16* bgControlPtr; // Points to the BgSettings.control field for the bg belonging to this layer? + /*0x0004*/ u16 mapData[0x1000]; // tilemap data? <-- gMapDataTop / gMapDataBottom + /*0x2004*/ u8 collisionData[0x1000]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4 + /*0x3004*/ u16 mapDataClone[0x1000]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4 + /*0x5004*/ u16 metatileTypes[0x800]; // gMetatileTypesTop, gMetatileTypesBottom + /*0x6004*/ u16 unkData2[0x800]; // gUnk_02011654,gUnk_0202BEB4 + /*0x7004*/ u16 metatiles[0x2000]; // gMetatilesTop, gMetatilesBottom + /*0xb004*/ u8 unkData3[0x1000]; // gUnk_02016654, gUnk_02030EB4 } LayerStruct; extern LayerStruct gMapTop; diff --git a/linker.ld b/linker.ld index 75226b1b..cb2349b8 100644 --- a/linker.ld +++ b/linker.ld @@ -68,7 +68,7 @@ SECTIONS { . = 0x00018EA0; gUnk_02018EA0 = .; . = 0x00018EB0; gUnk_02018EB0 = .; . = 0x00018EE0; gUnk_02018EE0 = .; - . = 0x00019EE0; gUnk_02019EE0 = .; + . = 0x00019EE0; gMapDataBottomSpecial = .; . = 0x0001AEE0; gUnk_0201AEE0 = .; . = 0x00021EE0; gSoundPlayingInfo = .; . = 0x00021F00; gUnk_02021F00 = .; @@ -104,7 +104,7 @@ SECTIONS { . = 0x0002CEB4; gMetatilesBottom = .; . = 0x00030EB4; gUnk_02030EB4 = .; . = 0x00031EC0; gUnk_02031EC0 = .; - . = 0x00032EC0; gUnk_02032EC0 = .; + . = 0x00032EC0; gUI = .; . = 0x00032EDC; gUnk_02032EDC = .; . = 0x00032F14; gUnk_02032F14 = .; . = 0x00033280; gActiveScriptInfo = .; diff --git a/src/coord.c b/src/coord.c index 0114ba8d..2a634b66 100644 --- a/src/coord.c +++ b/src/coord.c @@ -174,6 +174,7 @@ void sub_0806F704(Entity* ent, u32 a2) { ent->y.HALF.HI = (((a2 >> 2) & 0x3F0) | 8) + gRoomControls.origin_y; } +/** Calculates the tile position of the player but modifies it by the hitbox depending on the animation state. */ u32 sub_0806F730(Entity* ent) { u32 tmp = 0x3F; u32 x = ent->x.HALF.HI + ent->hitbox->offset_x - gRoomControls.origin_x; @@ -203,16 +204,16 @@ u32 sub_0806F798(Entity* ent) { } u32 sub_0806F7D0(Entity* ent) { - return gMapBottom._2004[sub_0806F730(ent)]; + return gMapBottom.collisionData[sub_0806F730(ent)]; } u32 sub_0806F7EC(Entity* ent) { - return gMapBottom._4[sub_0806F730(ent)]; + return gMapBottom.mapData[sub_0806F730(ent)]; } u32 sub_0806F804(u32 x, u32 y) { u32 idx = ((x >> 4) & 0x3F) + 4 * (y & 0x3F0); - return gMapBottom._4[idx]; + return gMapBottom.mapData[idx]; } u32 sub_0806F824(Entity* a, Entity* b, s32 x, s32 y) { diff --git a/src/debug.c b/src/debug.c index eaa65981..f7f70c8a 100644 --- a/src/debug.c +++ b/src/debug.c @@ -33,12 +33,12 @@ void sub_0805FA04(void) { gScreen.bg3.control = BGCNT_SCREENBASE(30) | BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3); gScreen.bg3.updated = 1; MessageInitialize(); - MemClear((void*)&gUnk_02032EC0, sizeof(UI)); + MemClear((void*)&gUI, sizeof(UI)); MemClear((void*)&gGenericMenu, sizeof(GenericMenu)); gGenericMenu.unk16 = gSaveHeader->language; LoadGfxGroups(); SetColor(0, 0x1144); - gMain.state = 1; + gMain.state = GAMETASK_INIT; InitSoundPlayingInfo(); ResetFadeMask(); } diff --git a/src/demo.c b/src/demo.c index 6364397c..04d7baff 100644 --- a/src/demo.c +++ b/src/demo.c @@ -46,7 +46,7 @@ void sub_080A2E40(void) { EraseAllEntities(); ResetPalettes(); ResetPaletteTable(0); - MemClear(&gUnk_02032EC0, sizeof gUnk_02032EC0); + MemClear(&gUI, sizeof gUI); MemClear(&gChooseFileState, sizeof gChooseFileState); MemClear(&gBG0Buffer, sizeof gBG0Buffer); LoadGfxGroups(); @@ -73,7 +73,7 @@ void sub_080A2E40(void) { *(u8*)(addr + 4) = 0; } sub_080A3198(0, 0); - gMain.state = 1; + gMain.state = GAMETASK_INIT; SoundReq(BGM_FILE_SELECT); SetFade(4, 8); } @@ -81,18 +81,18 @@ void sub_080A2E40(void) { void sub_080A2F8C(void) { if (gFadeControl.active == 0) { switch (gMain.substate) { - case 0: - gMain.substate = 1; + case GAMEMAIN_INITROOM: + gMain.substate = GAMEMAIN_CHANGEROOM; { // TODO write to 0x2000005 u32 addr = (0x80 << 0x12); *(u8*)(addr + 5) = 1; *(u8*)(addr + 6) = 1; } - gMain.state = 2; + gMain.state = GAMETASK_MAIN; SetFade(5, 8); break; - case 1: + case GAMEMAIN_CHANGEROOM: SetTask(TASK_GAME); break; } diff --git a/src/enemy/gyorgFemale.c b/src/enemy/gyorgFemale.c index 2b7911d3..ac1bcb00 100644 --- a/src/enemy/gyorgFemale.c +++ b/src/enemy/gyorgFemale.c @@ -10,7 +10,7 @@ extern u8 gEntCount; extern u8 gMapDataTopSpecial[]; -extern u16 gUnk_02019EE0[]; +extern u16 gMapDataBottomSpecial[]; extern void sub_080197D4(const void*); @@ -86,7 +86,7 @@ void GyorgFemale_Setup(GyorgFemaleEntity* this) { this->eyesVulnerable = 0; this->unk_79 = 0; this->childrenSpawnTimer = 0x3C; - MemClear(&gUnk_02019EE0, 0x8000); + MemClear(&gMapDataBottomSpecial, 0x8000); MemClear(&gMapDataTopSpecial, 0x8000); sub_0804660C(this, 0); sub_080464C0(this); @@ -215,7 +215,7 @@ void GyorgFemale_Action3(GyorgFemaleEntity* this) { #ifndef EU void sub_08046498(GyorgFemaleEntity* this) { - MemClear(&gUnk_02019EE0, 0x8000); + MemClear(&gMapDataBottomSpecial, 0x8000); MemClear(&gMapDataTopSpecial, 0x8000); sub_080464C0(this); } @@ -233,12 +233,12 @@ void sub_080464C0(GyorgFemaleEntity* this) { u8* dst; sub_080197D4(gUnk_080D1A74[super->animationState >> 6]); sub_08046518(); - for (i = 0x20, src = ((u8*)&gUnk_02019EE0), dst = ((u8*)&gUnk_02019EE0) + 0x3260; i != 0; i--) { + for (i = 0x20, src = ((u8*)&gMapDataBottomSpecial), dst = ((u8*)&gMapDataBottomSpecial) + 0x3260; i != 0; i--) { MemCopy(src, dst, 0x40); dst += 0x100; src += 0x40; } - MemClear(&gUnk_02019EE0, 0x800); + MemClear(&gMapDataBottomSpecial, 0x800); gUpdateVisibleTiles = 1; } @@ -271,7 +271,7 @@ void sub_080465C8(void) { s32 x, y; x = (gPlayerEntity.x.HALF.HI - gRoomControls.origin_x) >> 3; y = (gPlayerEntity.y.HALF.HI - gRoomControls.origin_y) >> 3; - if (gUnk_02019EE0[(y << 7) + x]) { + if (gMapDataBottomSpecial[(y << 7) + x]) { gPlayerState.field_0x14 = 1; } } diff --git a/src/enemy/gyorgMale.c b/src/enemy/gyorgMale.c index b2ba5b13..f9ca7d8c 100644 --- a/src/enemy/gyorgMale.c +++ b/src/enemy/gyorgMale.c @@ -1133,7 +1133,7 @@ void sub_08048004(GyorgMaleEntity* this) { if (b == 3) { s32 posX = ((gPlayerEntity.x.HALF.HI - gRoomControls.origin_x) >> 3); s32 posY = ((gPlayerEntity.y.HALF.HI - gRoomControls.origin_y) >> 3); - u16* tmp = (u16*)&gUnk_02019EE0; + u16* tmp = (u16*)&gMapDataBottomSpecial; if (tmp[(posY << 7) + posX]) { if (!(this->unk_7c & 2)) { this->unk_7c |= 0x80; diff --git a/src/enemy/octorokGolden.c b/src/enemy/octorokGolden.c index 8f72e7a7..9f38b9c7 100644 --- a/src/enemy/octorokGolden.c +++ b/src/enemy/octorokGolden.c @@ -112,7 +112,7 @@ void sub_08037E14(Entity* this) { s32 x, y; this->actionDelay = 0x8; dir = (GetFacingDirection(this, &gPlayerEntity) + 4) & 0x18; - layer = (u8*)GetLayerByIndex(this->collisionLayer)->_2004; + layer = (u8*)GetLayerByIndex(this->collisionLayer)->collisionData; ptr = gUnk_080CF498 + (dir >> 2); x = this->x.HALF.HI + *ptr; y = this->y.HALF.HI + *(ptr + 1); diff --git a/src/enemy/spinyBeetle.c b/src/enemy/spinyBeetle.c index e73445eb..5ed5c17d 100644 --- a/src/enemy/spinyBeetle.c +++ b/src/enemy/spinyBeetle.c @@ -27,7 +27,6 @@ extern void sub_08033D78(SpinyBeetleEntity*); extern u32 sub_08033DF0(SpinyBeetleEntity*); extern void SpinyBeetle_SetHitType(SpinyBeetleEntity*); extern void EnemyFunctionHandlerAfterCollision(Entity*, EntityActionArray); -extern void sub_0807B9B8(s32, s32, s32); extern u32 sub_0804A024(Entity*, u32, u32); void SpinyBeetle(Entity* this) { diff --git a/src/enterPortalSubtask.c b/src/enterPortalSubtask.c index 072c0e3f..e43094c8 100644 --- a/src/enterPortalSubtask.c +++ b/src/enterPortalSubtask.c @@ -6,6 +6,7 @@ #include "screen.h" #include "object.h" #include "functions.h" +#include "game.h" typedef struct { u8 filler[18]; @@ -19,7 +20,7 @@ extern struct_02018EB0 gUnk_02018EB0; u32 IsEnterPortal(void) { if (gArea.playShrinkSeq) { - gMain.substate = 4; + gMain.substate = GAMEMAIN_MINISHPORTAL; gArea.filler[8] = 0; gArea.filler[9] = 0; *(u16*)&gArea.filler[10] = 0; diff --git a/src/fileselect.c b/src/fileselect.c index ba0dc554..5545e3f7 100644 --- a/src/fileselect.c +++ b/src/fileselect.c @@ -15,6 +15,7 @@ #include "functions.h" #include "subtask.h" #include "item.h" +#include "game.h" // copy, erase, start #define NUM_FILE_OPERATIONS 3 @@ -30,7 +31,7 @@ typedef enum { STATE_START, } FileSelectState; -// todo: does this belong with gUnk_02019EE0? +// todo: does this belong with gMapDataBottomSpecial? typedef enum { SAVE_EMPTY = 0, SAVE_VALID = 1, @@ -132,7 +133,7 @@ void sub_080503A8(u32 gfxGroup) { } void SetFileSelectState(FileSelectState mode) { - gUnk_02032EC0.state = mode; + gUI.state = mode; MemClear(&gBG0Buffer, sizeof(gBG0Buffer)); MemClear(&gBG1Buffer, sizeof(gBG1Buffer)); } @@ -146,7 +147,7 @@ void LoadOptionsFromSave(u32 idx) { msg_speed = 1; brightness = 1; } else { - SaveFile* saveFile = &gUnk_02019EE0.saves[idx]; + SaveFile* saveFile = &gMapDataBottomSpecial.saves[idx]; msg_speed = saveFile->msg_speed; brightness = saveFile->brightness; } @@ -159,7 +160,7 @@ void LoadOptionsFromSave(u32 idx) { void SetActiveSave(u32 idx) { if (idx < NUM_SAVE_SLOTS) { gSaveHeader->saveFileId = idx; - MemCopy(&gUnk_02019EE0.saves[idx], &gSave, sizeof(gUnk_02019EE0.saves[idx])); + MemCopy(&gMapDataBottomSpecial.saves[idx], &gSave, sizeof(gMapDataBottomSpecial.saves[idx])); } LoadOptionsFromSave(idx); } @@ -167,8 +168,8 @@ void SetActiveSave(u32 idx) { void FileSelectTask(void) { FlushSprites(); sTaskHandlers[gMain.state](); - if (gUnk_02032EC0.lastState != gUnk_02032EC0.state) { - gUnk_02032EC0.lastState = gUnk_02032EC0.state; + if (gUI.lastState != gUI.state) { + gUI.lastState = gUI.state; gScreen.bg0.xOffset = 0; gScreen.bg0.yOffset = 0; gScreen.bg1.xOffset = 0; @@ -179,17 +180,17 @@ void FileSelectTask(void) { } HideButtonR(); - sFileScreenSubHandlers[gUnk_02032EC0.lastState](); + sFileScreenSubHandlers[gUI.lastState](); - gUnk_02019EE0.isTransitioning = FALSE; + gMapDataBottomSpecial.isTransitioning = FALSE; UpdateEntities(); sub_0805066C(); sub_0801C1D4(); DrawOAMCmd(); DrawEntities(); CopyOAM(); - if (gUnk_02019EE0.unk3 != gSaveHeader->language) { - gUnk_02019EE0.unk3 = gSaveHeader->language; + if (gMapDataBottomSpecial.unk3 != gSaveHeader->language) { + gMapDataBottomSpecial.unk3 = gSaveHeader->language; sub_080503A8(0x6); sub_080503A8(0xF); } @@ -207,11 +208,11 @@ static void HandleFileScreenEnter(void) { ResetPalettes(); ResetPaletteTable(0); MemClear(&gUnk_0200AF00, sizeof(gUnk_0200AF00)); - MemClear(&gUnk_02019EE0, sizeof(gUnk_02019EE0)); - gUnk_02019EE0.unk3 = 7; - gUnk_02019EE0.unk6 = gSaveHeader->language > LANGUAGE_EN ? 3 : 0; - MemClear(&gUnk_02032EC0, sizeof(gUnk_02032EC0)); - gUnk_02032EC0.lastState = 8; + MemClear(&gMapDataBottomSpecial, sizeof(gMapDataBottomSpecial)); + gMapDataBottomSpecial.unk3 = 7; + gMapDataBottomSpecial.unk6 = gSaveHeader->language > LANGUAGE_EN ? 3 : 0; + MemClear(&gUI, sizeof(gUI)); + gUI.lastState = 8; SetFileSelectState(STATE_NONE); InitDMA(); sub_08050624(0); @@ -231,7 +232,7 @@ static void HandleFileScreenEnter(void) { gScreen.controls.layerFXControl = BLDCNT_TGT1_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND; gScreen.controls.alphaBlend = BLDALPHA_BLEND(15, 10); gGFXSlots.unk0 = 1; - gMain.state = 1; + gMain.state = GAMETASK_INIT; SoundReq(BGM_FILE_SELECT); SetFade(4, 8); } @@ -246,7 +247,7 @@ static void HandleFileScreenExit(void) { } static void sub_08050624(u32 idx) { - SaveFile* saveFile = &gUnk_02019EE0.saves[idx]; + SaveFile* saveFile = &gMapDataBottomSpecial.saves[idx]; int status = ReadSaveFile(idx, saveFile); switch (status) { case SAVE_DELETED: @@ -256,7 +257,7 @@ static void sub_08050624(u32 idx) { sub_0805194C(idx); break; } - gUnk_02019EE0.saveStatus[idx] = status; + gMapDataBottomSpecial.saveStatus[idx] = status; } static void sub_0805066C(void) { @@ -264,20 +265,20 @@ static void sub_0805066C(void) { const u8* paletteOffset; loadNewPalette = FALSE; - if (--gUnk_02019EE0.unk1 == 0) { - gUnk_02019EE0.unk1 = 16; - gUnk_02019EE0.unk2 = (gUnk_02019EE0.unk2 + 1) % 15; + if (--gMapDataBottomSpecial.unk1 == 0) { + gMapDataBottomSpecial.unk1 = 16; + gMapDataBottomSpecial.unk2 = (gMapDataBottomSpecial.unk2 + 1) % 15; loadNewPalette = TRUE; } - if (gUnk_02019EE0.unk2 == 0) { - gUnk_02019EE0.unk2 = 1; - gUnk_02019EE0.unk1 = (Random() & 0x7) * 16 + 8; + if (gMapDataBottomSpecial.unk2 == 0) { + gMapDataBottomSpecial.unk2 = 1; + gMapDataBottomSpecial.unk1 = (Random() & 0x7) * 16 + 8; loadNewPalette = TRUE; } if (loadNewPalette) { - paletteOffset = &gGlobalGfxAndPalettes[gUnk_080FC8DE[gUnk_02019EE0.unk2]]; + paletteOffset = &gGlobalGfxAndPalettes[gUnk_080FC8DE[gMapDataBottomSpecial.unk2]]; #ifdef EU LoadPalettes(&paletteOffset[0x11A60], 11, 1); LoadPalettes(&paletteOffset[0x11B60], 12, 1); @@ -308,7 +309,7 @@ void sub_0805070C(void) { for (i = 0; i < NUM_SAVE_SLOTS; i++) { var0->unk6 = 0; MemClear(var0->unk8, 0x200); - name = &gUnk_02019EE0.saves[i].name[0]; + name = &gMapDataBottomSpecial.saves[i].name[0]; for (j = 0; j < FILENAME_LENGTH; j++) { sub_0805F7DC(name[j], var0); } @@ -356,14 +357,14 @@ static void ShowButtonR(void) { static void HandleFileSelect(void) { sFileSelectDefaultHandlers[gChooseFileState.state](); - sub_08050A64(gUnk_02019EE0.unk6); + sub_08050A64(gMapDataBottomSpecial.unk6); } void sub_08050848(void) { sub_080503A8(0x7); sub_0805070C(); - gUnk_02019EE0.unk7 = 0; - sub_08050AFC(gUnk_02019EE0.unk6); + gMapDataBottomSpecial.unk7 = 0; + sub_08050AFC(gMapDataBottomSpecial.unk6); SetMenuType(1); } @@ -374,17 +375,17 @@ void sub_0805086C(void) { // transitioning away from submenu void sub_08050888(void) { if (!gFadeControl.active) { - switch (gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk7]) { + switch (gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk7]) { case SAVE_EMPTY: - sub_0805194C(gUnk_02019EE0.unk7); + sub_0805194C(gMapDataBottomSpecial.unk7); gChooseFileState.subState = 2; break; case SAVE_VALID: gChooseFileState.subState = 2; break; default: - sub_0805194C(gUnk_02019EE0.unk7); - CreateDialogBox(0, gUnk_02019EE0.unk7 + 1); + sub_0805194C(gMapDataBottomSpecial.unk7); + CreateDialogBox(0, gMapDataBottomSpecial.unk7 + 1); gChooseFileState.timer = 30; gChooseFileState.subState = 1; break; @@ -404,7 +405,7 @@ void sub_080508E4(void) { void sub_08050910(void) { sub_08050384(); - if (++gUnk_02019EE0.unk7 > 2) { + if (++gMapDataBottomSpecial.unk7 > 2) { SetMenuType(2); } else { gChooseFileState.subState = 0; @@ -417,18 +418,18 @@ void sub_08050940(void) { int num_rows; FileSelectState mode; - if (gUnk_02019EE0.isTransitioning) { + if (gMapDataBottomSpecial.isTransitioning) { return; } - row_idx = gUnk_02019EE0.unk6; + row_idx = gMapDataBottomSpecial.unk6; keys = gInput.newKeys; - if ((gInput.heldKeys & L_BUTTON) && gUnk_02019EE0.saveStatus[row_idx] == SAVE_VALID) { + if ((gInput.heldKeys & L_BUTTON) && gMapDataBottomSpecial.saveStatus[row_idx] == SAVE_VALID) { keys &= ~(DPAD_UP | DPAD_DOWN); } num_rows = gSaveHeader->language > 1 ? NUM_SAVE_SLOTS + 1 : NUM_SAVE_SLOTS; - mode = gUnk_02032EC0.lastState; + mode = gUI.lastState; switch (keys) { case DPAD_UP: if (row_idx > 0) @@ -439,7 +440,7 @@ void sub_08050940(void) { row_idx++; break; case R_BUTTON: - if (gUnk_02019EE0.saveStatus[row_idx] == SAVE_VALID) + if (gMapDataBottomSpecial.saveStatus[row_idx] == SAVE_VALID) mode = STATE_OPTIONS; break; case A_BUTTON: @@ -448,7 +449,7 @@ void sub_08050940(void) { if (row_idx == 3) mode = STATE_CHOOSE_LANG; else - switch (gUnk_02019EE0.saveStatus[row_idx]) { + switch (gMapDataBottomSpecial.saveStatus[row_idx]) { case SAVE_EMPTY: mode = STATE_NEW; break; @@ -459,25 +460,25 @@ void sub_08050940(void) { break; } - if (gUnk_02032EC0.lastState != mode) { + if (gUI.lastState != mode) { SetFileSelectState(mode); SoundReq(SFX_TEXTBOX_SELECT); } row_idx = (row_idx + num_rows) % num_rows; - if (gUnk_02019EE0.unk6 != row_idx) { - gUnk_02019EE0.unk6 = row_idx; + if (gMapDataBottomSpecial.unk6 != row_idx) { + gMapDataBottomSpecial.unk6 = row_idx; sub_08050AFC(row_idx); SoundReq(SFX_TEXTBOX_CHOICE); } - if (gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk6] == SAVE_VALID) { + if (gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk6] == SAVE_VALID) { ShowButtonR(); } } void sub_08050A64(u32 idx) { - if (gUnk_02019EE0.saveStatus[idx] != SAVE_VALID) { + if (gMapDataBottomSpecial.saveStatus[idx] != SAVE_VALID) { return; } @@ -529,7 +530,7 @@ void sub_08050B3C(u16*); void sub_08050AFC(u32 idx) { SetActiveSave(idx); MemClear(&gBG1Buffer, sizeof(gBG1Buffer)); - if (gUnk_02019EE0.saveStatus[idx] == SAVE_VALID) { + if (gMapDataBottomSpecial.saveStatus[idx] == SAVE_VALID) { sub_08050B3C(&gBG1Buffer[0x14E]); } gScreen.bg1.updated = 1; @@ -614,13 +615,13 @@ END_NONMATCH void HandleFileView(void) { gUnk_080FC93C[gMenu.menuType](); - sub_08050A64(gUnk_02019EE0.unk6); + sub_08050A64(gMapDataBottomSpecial.unk6); } void sub_08050C54(void) { s32 column_idx; - if (gUnk_02019EE0.isTransitioning) + if (gMapDataBottomSpecial.isTransitioning) return; column_idx = gMenu.column_idx; @@ -693,7 +694,7 @@ void sub_08050DB8(void) { void sub_08050DE4(void) { s32 row_idx; - if (gUnk_02019EE0.isTransitioning) + if (gMapDataBottomSpecial.isTransitioning) return; row_idx = gSaveHeader->language; @@ -747,9 +748,9 @@ void HandleFileOptions(void) { void sub_08050EB8(void) { SaveFile* save; sub_080503A8(0xe); - save = &gUnk_02019EE0.saves[gUnk_02019EE0.unk6]; - gUnk_02019EE0.unk4 = save->msg_speed; - gUnk_02019EE0.unk5 = save->brightness; + save = &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6]; + gMapDataBottomSpecial.unk4 = save->msg_speed; + gMapDataBottomSpecial.unk5 = save->brightness; gMenu.column_idx = 0; gMenu.transitionTimer = 0xff; SetMenuType(1); @@ -761,12 +762,12 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void) char column_idx; int mode; - if (gUnk_02019EE0.isTransitioning) + if (gMapDataBottomSpecial.isTransitioning) return; - p_option = &gUnk_02019EE0.saves[gUnk_02019EE0.unk6].brightness; + p_option = &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].brightness; if (gMenu.column_idx == 0) { - p_option = &gUnk_02019EE0.saves[gUnk_02019EE0.unk6].msg_speed; + p_option = &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].msg_speed; } mode = 0; @@ -792,7 +793,8 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void) case A_BUTTON: case START_BUTTON: mode = 2; - if (*(u16*)&gUnk_02019EE0.unk4 != *(u16*)&gUnk_02019EE0.saves[gUnk_02019EE0.unk6].msg_speed) + if (*(u16*)&gMapDataBottomSpecial.unk4 != + *(u16*)&gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].msg_speed) mode = 3; break; case B_BUTTON: @@ -802,11 +804,11 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void) switch (mode) { case 3: - gUnk_02019EE0.saves[gUnk_02019EE0.unk6].msg_speed = gUnk_02019EE0.unk4; - gUnk_02019EE0.saves[gUnk_02019EE0.unk6].brightness = gUnk_02019EE0.unk5; + gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].msg_speed = gMapDataBottomSpecial.unk4; + gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].brightness = gMapDataBottomSpecial.unk5; SoundReq(SFX_MENU_CANCEL); SetMenuType(mode); - SetActiveSave(gUnk_02019EE0.unk6); + SetActiveSave(gMapDataBottomSpecial.unk6); break; case 2: CreateDialogBox(8, 0); @@ -814,7 +816,7 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void) default: case 1: SetMenuType(mode); - SetActiveSave(gUnk_02019EE0.unk6); + SetActiveSave(gMapDataBottomSpecial.unk6); break; case 0: if (gMenu.column_idx != column_idx) { @@ -822,7 +824,7 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void) SoundReq(SFX_TEXTBOX_CHOICE); } else if (option != *p_option) { *p_option = option; - LoadOptionsFromSave(gUnk_02019EE0.unk6); + LoadOptionsFromSave(gMapDataBottomSpecial.unk6); SoundReq(SFX_TEXTBOX_CHOICE); } break; @@ -834,7 +836,7 @@ void sub_08050FFC(void) { switch (HandleSave(0)) { case SAVE_ERROR: gMenu.transitionTimer = 0x1e; - sub_0805194C(gUnk_02019EE0.unk6); + sub_0805194C(gMapDataBottomSpecial.unk6); CreateDialogBox(9, 0); case SAVE_OK: SetMenuType(3); @@ -897,13 +899,13 @@ void sub_080513A8(void) { void sub_080513C0(void) { switch (HandleSave(0)) { case 1: - gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk6] = 1; + gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk6] = 1; SetMenuType(3); break; case 0: break; case -1: - sub_0805194C(gUnk_02019EE0.unk6); + sub_0805194C(gMapDataBottomSpecial.unk6); CreateDialogBox(6, 0); gMenu.transitionTimer = 0x1e; gMenu.overlayType = 2; @@ -1030,13 +1032,14 @@ u32 sub_080514BC(u32 a1) { void sub_08051574(u32 sfx) { SoundReq(sfx); - MemCopy(&gSave, &gUnk_02019EE0.saves[gUnk_02019EE0.unk6], sizeof(gUnk_02019EE0.saves[gUnk_02019EE0.unk6])); + MemCopy(&gSave, &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6], + sizeof(gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6])); sub_0805070C(); } void HandleFileDelete(void) { gUnk_080FC9BC[gMenu.menuType](); - sub_08050A64(gUnk_02019EE0.unk6); + sub_08050A64(gMapDataBottomSpecial.unk6); } void sub_080515c8(void) { @@ -1046,7 +1049,7 @@ void sub_080515c8(void) { void sub_080515D4(void) { u32 column_idx; - if (gUnk_02019EE0.isTransitioning) + if (gMapDataBottomSpecial.isTransitioning) return; gMenu.transitionTimer = 4; @@ -1082,8 +1085,8 @@ void sub_080515D4(void) { void sub_080516E0(void) { if (HandleSave(1)) { - sub_0805194C(gUnk_02019EE0.unk6); - sub_08050AFC(gUnk_02019EE0.unk6); + sub_0805194C(gMapDataBottomSpecial.unk6); + sub_08050AFC(gMapDataBottomSpecial.unk6); gMenu.transitionTimer = 2; SetFileSelectState(0); } @@ -1091,7 +1094,7 @@ void sub_080516E0(void) { void HandleFileCopy(void) { gUnk_080FC9C8[gMenu.menuType](); - sub_08050A64(gUnk_02019EE0.unk6); + sub_08050A64(gMapDataBottomSpecial.unk6); } // regalloc @@ -1100,11 +1103,11 @@ NONMATCH("asm/non_matching/fileScreen/sub_08051738.inc", void sub_08051738(void) u32 i; s32 uVar3; - gUnk_02019EE0.unk7 = 4; + gMapDataBottomSpecial.unk7 = 4; uVar3 = 0; for (i = 0; i < 3; i++) { - if (gUnk_02019EE0.saveStatus[i] == 1) { - temp = gUnk_02019EE0.unk6 ^ i; + if (gMapDataBottomSpecial.saveStatus[i] == 1) { + temp = gMapDataBottomSpecial.unk6 ^ i; uVar3 = !!temp & 4; } else { uVar3++; @@ -1126,14 +1129,14 @@ NONMATCH("asm/non_matching/fileScreen/sub_08051738.inc", void sub_08051738(void) END_NONMATCH s32 sub_080517B4(s32 a1) { - u32 i = gUnk_02019EE0.unk7; + u32 i = gMapDataBottomSpecial.unk7; if (a1 != 0) { for (i = i + a1; i < 5; i += a1) { if (gGenericMenu.unk10.a[i] != 0 && gGenericMenu.unk10.a[i] != 4) return i; } - i = gUnk_02019EE0.unk7; + i = gMapDataBottomSpecial.unk7; } return i; } @@ -1142,7 +1145,7 @@ void sub_080517EC(void) { u32 temp; s32 delta; - if (gUnk_02019EE0.isTransitioning) + if (gMapDataBottomSpecial.isTransitioning) return; delta = 0; @@ -1155,7 +1158,7 @@ void sub_080517EC(void) { break; case A_BUTTON: case START_BUTTON: - if (gUnk_02019EE0.unk7 < 3) { + if (gMapDataBottomSpecial.unk7 < 3) { CreateDialogBox(2, 0); SetMenuType(2); SoundReq(SFX_TEXTBOX_SELECT); @@ -1163,30 +1166,31 @@ void sub_080517EC(void) { } // fallthrough case B_BUTTON: - gUnk_02019EE0.unk7 = 4; + gMapDataBottomSpecial.unk7 = 4; SoundReq(SFX_MENU_CANCEL); SetFileSelectState(0); break; } temp = sub_080517B4(delta); - if (temp != gUnk_02019EE0.unk7) { - gUnk_02019EE0.unk7 = temp; + if (temp != gMapDataBottomSpecial.unk7) { + gMapDataBottomSpecial.unk7 = temp; SoundReq(SFX_TEXTBOX_CHOICE); } } void sub_08051874(void) { s32 temp; - gSaveHeader->saveFileId = gUnk_02019EE0.unk7; + gSaveHeader->saveFileId = gMapDataBottomSpecial.unk7; temp = HandleSave(0); - gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk7] = temp; + gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk7] = temp; switch (temp) { case 1: - MemCopy(&gSave, &gUnk_02019EE0.saves[gUnk_02019EE0.unk7], sizeof(gUnk_02019EE0.saves[gUnk_02019EE0.unk7])); + MemCopy(&gSave, &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk7], + sizeof(gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk7])); SetFileSelectState(0); break; case -1: - sub_0805194C(gUnk_02019EE0.unk7); + sub_0805194C(gMapDataBottomSpecial.unk7); CreateDialogBox(3, 0); gMenu.transitionTimer = 0x1e; SetMenuType(3); @@ -1212,7 +1216,7 @@ void HandleFileStart(void) { gMenu.menuType = 1; gSaveHeader->msg_speed = gSave.msg_speed; gSaveHeader->brightness = gSave.brightness; - gMain.state = 2; + gMain.state = GAMETASK_MAIN; SetFade(5, 8); } } @@ -1220,8 +1224,8 @@ void HandleFileStart(void) { void sub_0805194C(u32 save_idx) { SaveFile* save; - gUnk_02019EE0.saveStatus[save_idx] = 0; - save = &gUnk_02019EE0.saves[save_idx]; + gMapDataBottomSpecial.saveStatus[save_idx] = 0; + save = &gMapDataBottomSpecial.saves[save_idx]; MemClear(save, sizeof(*save)); save->msg_speed = 1; save->brightness = 1; diff --git a/src/game.c b/src/game.c index ec3fa368..a233b508 100644 --- a/src/game.c +++ b/src/game.c @@ -123,7 +123,7 @@ extern void sub_08054524(void); extern void sub_080186D4(void); extern void sub_0806F364(void); extern void sub_08052FF4(u32 area, u32 room); -extern void sub_0807C860(void); +extern void CloneMapData(void); extern void sub_0807C740(void); extern void SetBGDefaults(void); extern void LoadItemGfx(void); @@ -141,8 +141,8 @@ static void sub_08052C3C(void); static void sub_0805340C(void); static void sub_08051D98(void); static void sub_08051DCC(void); -static u32 CheckGameOver(void); -static u32 CheckRoomExit(void); +static bool32 CheckGameOver(void); +static bool32 CheckRoomExit(void); static void UpdatePlayerRoomStatus(void); static void sub_0805329C(void); static void InitializePlayer(void); @@ -306,14 +306,14 @@ static void GameTask_Transition(void) { ResetTmpFlags(); gMain.state = GAMETASK_INIT; - gMain.substate = 0; + gMain.substate = GAMEMAIN_INITROOM; } static void GameTask_Init(void) { DispReset(1); gFadeControl.mask = 0xffffffff; MemClear(&gOAMControls, 0xB74); - MemClear(&gUnk_02032EC0, sizeof(gUnk_02032EC0)); + MemClear(&gUI, sizeof(gUI)); EraseAllEntities(); SetBGDefaults(); ClearTilemaps(); @@ -495,7 +495,7 @@ static void GameMain_ChangeArea(void) { if (!gFadeControl.active) { DispReset(1); gMain.state = GAMETASK_INIT; - gMain.substate = 0; + gMain.substate = GAMEMAIN_INITROOM; gRoomTransition.transitioningOut = 1; } } @@ -594,7 +594,7 @@ void Subtask_AuxCutscene(void) { } static void AuxCutscene_Init(void) { - const CutsceneData* p = &sCutsceneData[gUnk_02032EC0.field_0x3]; + const CutsceneData* p = &sCutsceneData[gUI.field_0x3]; gRoomControls.area = p->area; gRoomControls.room = p->room; LoadGfxGroups(); @@ -644,18 +644,18 @@ static const CutsceneData sCutsceneData[] = { }; static void AuxCutscene_Exit(void) { - u32 flag = sCutsceneData[gUnk_02032EC0.field_0x3]._3; + u32 flag = sCutsceneData[gUI.field_0x3]._3; if (flag & 0xF0) { MenuFadeIn(2, flag >> 4); } else { - gUnk_02032EC0.nextToLoad = 3; + gUI.nextToLoad = 3; SetFadeInverted(0x10); MessageInitialize(); } } void sub_08051F78(void) { - u32 idx = gUnk_02032EC0.field_0x3; + u32 idx = gUI.field_0x3; const CutsceneData* p = &sCutsceneData[idx]; sub_08051F9C(p->area, p->room, p->x, p->y); } @@ -704,7 +704,7 @@ void GameOverTask(void) { }; sStates[gMain.state](); - if (gMain.state != 0) { + if (gMain.state != GAMETASK_TRANSITION) { FlushSprites(); DrawGameOverText(); CopyOAM(); @@ -727,7 +727,7 @@ static void GameOver_Init(void) { SoundReq(BGM_GAMEOVER); SetFadeInverted(4); gFadeControl.mask = 0xFFFF0001; - switch_state(1); + switch_state(GAMETASK_INIT); } static void GameOver_FadeIn(void) { @@ -740,7 +740,7 @@ static void GameOver_FadeIn(void) { } else { gMenu.transitionTimer--; if (gMenu.transitionTimer == 0) { - switch_state(2); + switch_state(GAMETASK_MAIN); #if defined(DEMO_USA) || defined(DEMO_JP) SoundReq(SONG_VOL_FADE_OUT); SetFade(7, 4); @@ -834,7 +834,7 @@ static void GameOver_TextMove(void) { default: gScreen.lcd.displayControl &= ~DISPCNT_BG1_ON; sub_08050384(); - switch_state(3); + switch_state(GAMETASK_EXIT); return; } } @@ -1175,16 +1175,16 @@ static void sub_0805289C(void) { } #endif -static u32 CheckGameOver(void) { +static bool32 CheckGameOver(void) { if (gRoomTransition.field_0x4[1]) { InitFade(); - gMain.state = 3; - gMain.substate = 0; + gMain.state = GAMETASK_EXIT; + gMain.substate = GAMEMAIN_INITROOM; SetFade(5, 8); SoundReq(SONG_STOP_BGM); - return 1; + return TRUE; } - return 0; + return FALSE; } void RoomExitCallback(void) { @@ -1192,11 +1192,11 @@ void RoomExitCallback(void) { gArea.onExit(gArea.transitionManager); } -static u32 CheckRoomExit(void) { +static bool32 CheckRoomExit(void) { if (gRoomTransition.transitioningOut && gSave.stats.health != 0 && gPlayerState.framestate != PL_STATE_DIE) { if (StairsAreValid()) { gRoomTransition.transitioningOut = 0; - return 0; + return FALSE; } switch (gRoomTransition.type) { @@ -1227,11 +1227,11 @@ static u32 CheckRoomExit(void) { break; } RoomExitCallback(); - gMain.substate = 3; + gMain.substate = GAMEMAIN_CHANGEAREA; *(&gMain.pauseInterval + 1) = 1; - return 1; + return TRUE; } - return 0; + return FALSE; } static u32 StairsAreValid(void) { @@ -1410,7 +1410,7 @@ u32 GetFlagBankOffset(u32 idx) { } void RegisterTransitionManager(void* mgr, void (*onEnter)(), void (*onExit)()) { - if (gMain.substate != 7) { + if (gMain.substate != GAMEMAIN_SUBTASK) { gArea.transitionManager = mgr; gArea.onEnter = onEnter; gArea.onExit = onExit; @@ -1519,7 +1519,7 @@ static void UpdateFakeScroll(void) { void LoadAuxiliaryRoom(u32 area, u32 room) { sub_08052FF4(area, room); gRoomControls.camera_target = NULL; - sub_0807C860(); + CloneMapData(); sub_0807C740(); } @@ -1806,7 +1806,7 @@ void CutsceneMain_Init(void) { void sub_080535AC(void) { gMenu.overlayType = 1; gMenu.transitionTimer = 0x78; - gUnk_02032EC0.field_0x6 = 1; + gUI.field_0x6 = 1; gUpdateVisibleTiles = 1; gScreen.lcd.displayControl &= 0xfeff; LoadRoomEntityList((EntityData*)gUnk_080FCB94); @@ -1831,7 +1831,7 @@ void sub_08053618(void) { } void sub_08053634(void) { - gUnk_02032EC0.nextToLoad = 3; + gUI.nextToLoad = 3; MessageInitialize(); } @@ -1945,7 +1945,7 @@ void sub_08053A5C(void) { void sub_08053A90(void) { if (gFadeControl.active == 0) { - gUnk_02032EC0.nextToLoad = 3; + gUI.nextToLoad = 3; SetBGDefaults(); } } diff --git a/src/kinstone.c b/src/kinstone.c index 04d39a04..f9f4b5f8 100644 --- a/src/kinstone.c +++ b/src/kinstone.c @@ -1,6 +1,5 @@ #include "global.h" - -extern u32 SetTileType(u32 tileID, u32 tilePos, u32 layerID); +#include "room.h" void CreateMinishEntrance(u32 tilePos) { u32 x, y; diff --git a/src/main.c b/src/main.c index 136ab17d..254d5711 100644 --- a/src/main.c +++ b/src/main.c @@ -6,6 +6,7 @@ #include "save.h" #include "message.h" #include "interrupts.h" +#include "game.h" extern u32 gRand; @@ -121,8 +122,8 @@ static bool32 SoftResetKeysPressed(void) { void SetTask(u32 task) { gMain.task = task; - gMain.state = 0; - gMain.substate = 0; + gMain.state = GAMETASK_TRANSITION; + gMain.substate = GAMEMAIN_INITROOM; } void DisableInterruptsAndDMA(void) { diff --git a/src/manager/manager22.c b/src/manager/manager22.c index a8bb0794..3bcefffb 100644 --- a/src/manager/manager22.c +++ b/src/manager/manager22.c @@ -8,6 +8,7 @@ #include "coord.h" #include "functions.h" #include "common.h" +#include "game.h" typedef struct { Manager manager; @@ -40,7 +41,7 @@ void Manager22_Main(Manager22* this) { sub_0801E120(); sub_0801E154(this->manager.unk_0e); } - if (gMain.substate == 2) { + if (gMain.substate == GAMEMAIN_UPDATE) { gScreen.lcd.displayControl |= DISPCNT_BG3_ON; sub_0805BA78(); sub_0805BAD4(); diff --git a/src/manager/manager29.c b/src/manager/manager29.c index fef0953c..010fb3ad 100644 --- a/src/manager/manager29.c +++ b/src/manager/manager29.c @@ -38,15 +38,15 @@ void Manager29_Main(Manager29* this) { } void sub_0805CBD0(Manager29* this) { - LayerStruct* puVar2; + LayerStruct* layer; this->manager.action = 1; this->unk_38 = (this->unk_38 >> 4 & 0x3fU) | (((this->unk_3a << 0x10) >> 0x14 & 0x3fU) << 6); this->unk_3a = (this->unk_3c >> 4 & 0x3f) | (((this->unk_36 + this->unk_37 * 0x100) >> 4 & 0x3fU) << 6); this->unk_3c = GetTileType(this->unk_38, this->unk_34); - puVar2 = GetLayerByIndex(this->unk_34); - this->unk_28 = puVar2->_5004; - this->unk_2c = &puVar2->_4[(s16)this->unk_3a]; + layer = GetLayerByIndex(this->unk_34); + this->unk_28 = (u16*)layer->metatileTypes; + this->unk_2c = &layer->mapData[(s16)this->unk_3a]; } void sub_0805CC3C(Manager29* this) { diff --git a/src/menu/figurine_menu.c b/src/menu/figurine_menu.c index 4d9c30ce..c545c316 100644 --- a/src/menu/figurine_menu.c +++ b/src/menu/figurine_menu.c @@ -78,7 +78,7 @@ void Subtask_FigurineMenu(void) { }; #if !(defined(DEMO_USA) || defined(DEMO_JP)) FlushSprites(); - if (gUnk_02032EC0.field_0x3 == 0xff) { + if (gUI.field_0x3 == 0xff) { figurineMenu0_Types[gMenu.menuType](); } else { figurineMenu1_Types[gMenu.menuType](); @@ -113,7 +113,7 @@ void FigurineMenu_080A4608(void) { { int r0, r1, r2; - r1 = gUnk_02032EC0.field_0x3; + r1 = gUI.field_0x3; r0 = gSave.unk6; r2 = 0x88; if (r0 == 0) { diff --git a/src/menu/kinstone_menu.c b/src/menu/kinstone_menu.c index 4089eaca..9870e9fe 100644 --- a/src/menu/kinstone_menu.c +++ b/src/menu/kinstone_menu.c @@ -345,7 +345,7 @@ typedef struct { u8 unk_01; u8 unk_02[2]; } struct_02019EE0; -extern struct_02019EE0 gUnk_02019EE0[16]; +extern struct_02019EE0 gMapDataBottomSpecial[16]; void KinstoneMenu_080A4054(void) { u32 uVar2; @@ -353,8 +353,8 @@ void KinstoneMenu_080A4054(void) { KinstoneMenu_080A414C(); KinstoneMenu_080A4080(); for (uVar2 = 0; uVar2 < 0x10; uVar2++) { - if (gUnk_02019EE0[uVar2].unk_01 != 0) { - gUnk_02019EE0[uVar2].unk_01 -= 1; + if (gMapDataBottomSpecial[uVar2].unk_01 != 0) { + gMapDataBottomSpecial[uVar2].unk_01 -= 1; } } } @@ -505,8 +505,8 @@ void sub_080A42E0(u32 param_1, u32 param_2) { iVar4 = sub_080A43A8(uVar1); if ((param_2 != 0) && (param_2 != 0xff)) { int index = iVar4 * 4; - if (param_2 != gUnk_02019EE0[iVar4].unk_02[0]) { - gUnk_02019EE0[iVar4].unk_02[0] = param_2; + if (param_2 != gMapDataBottomSpecial[iVar4].unk_02[0]) { + gMapDataBottomSpecial[iVar4].unk_02[0] = param_2; sub_0801C2F0(iVar4 * 2 + 0x2e0, param_2); } gOamCmd._8 = (s16)(iVar4 * 2) + 0x3ae0; @@ -535,7 +535,7 @@ void sub_080A42E0(u32 param_1, u32 param_2) { } void sub_080A4398(void) { - MemClear(&gUnk_02019EE0, sizeof(gUnk_02019EE0)); + MemClear(&gMapDataBottomSpecial, sizeof(gMapDataBottomSpecial)); } u32 sub_080A43A8(u32 param_1) { @@ -547,20 +547,20 @@ u32 sub_080A43A8(u32 param_1) { sub_080A4418(param_1, uVar1 * 0x10 + 0x300); } { int index = uVar1 * 4; } - gUnk_02019EE0[uVar1].unk_00[0] = param_1; - gUnk_02019EE0[uVar1].unk_01 = 2; + gMapDataBottomSpecial[uVar1].unk_00[0] = param_1; + gMapDataBottomSpecial[uVar1].unk_01 = 2; return uVar1; } u32 sub_080A43DC(u32 unk1) { u32 i; for (i = 0; i < 16; i++) { - if (unk1 == gUnk_02019EE0[i].unk_00[0]) { + if (unk1 == gMapDataBottomSpecial[i].unk_00[0]) { return i; } } for (i = 0; i < 16; i++) { - if (gUnk_02019EE0[i].unk_01 == 0) { + if (gMapDataBottomSpecial[i].unk_01 == 0) { return i + 0x10; } } diff --git a/src/movement.c b/src/movement.c index afe81525..83b0ddc4 100644 --- a/src/movement.c +++ b/src/movement.c @@ -1654,7 +1654,7 @@ ASM_FUNC("asm/non_matching/movement/CalculateEntityTileCollisions.inc", u32 hitboxUnkX; u32 hitboxUnkY; - layer = GetLayerByIndex(this->collisionLayer)->_2004; + layer = GetLayerByIndex(this->collisionLayer)->collisionData; xMin = this->x.HALF.HI + this->hitbox->offset_x; yMin = this->y.HALF.HI + this->hitbox->offset_y; hitboxUnkX = this->hitbox->unk2[0]; diff --git a/src/object/button.c b/src/object/button.c index fd2f968d..fcfad6ac 100644 --- a/src/object/button.c +++ b/src/object/button.c @@ -190,7 +190,7 @@ u32 sub_08081F00(u32*, u32*); extern u16 gMapDataTopSpecial[0x2000]; -extern u16 gUnk_02019EE0[]; +extern u16 gMapDataBottomSpecial[]; NONMATCH("asm/non_matching/button/sub_08081E6C.inc", void sub_08081E6C(Entity* this)) { u32 r4; u16 *tmp, *r1; @@ -205,7 +205,7 @@ NONMATCH("asm/non_matching/button/sub_08081E6C.inc", void sub_08081E6C(Entity* t tmp = r1 + 0x3802; r1 += 0x3002 + r4; tmp = tmp + (*r1 << 2); - tmp2 = (r5 == 2 ? gMapDataTopSpecial : gUnk_02019EE0); + tmp2 = (r5 == 2 ? gMapDataTopSpecial : gMapDataBottomSpecial); tmp2 += (((0x3f & r6) << 1) + ((0xfc0 & r6) << 2)) << 1; if (sub_08081F00((u32*)tmp2, (u32*)tmp)) return; diff --git a/src/object/fileScreenObjects.c b/src/object/fileScreenObjects.c index f68a531d..7d2a295f 100644 --- a/src/object/fileScreenObjects.c +++ b/src/object/fileScreenObjects.c @@ -74,8 +74,8 @@ void sub_0808E818(Entity* this) { return; } - if (this->type2 != gUnk_02019EE0.unk6) { - this->type2 = gUnk_02019EE0.unk6; + if (this->type2 != gMapDataBottomSpecial.unk6) { + this->type2 = gMapDataBottomSpecial.unk6; this->field_0x68.HWORD = CheckGlobalFlag(EZERO_1ST) == 0 ? 0x400 : 0x100; this->field_0x70.BYTES.byte0 = 4; this->animationState = 2; @@ -83,7 +83,7 @@ void sub_0808E818(Entity* this) { LoadPalettes(&gGlobalGfxAndPalettes[var1], 31, 1); } - if (gUnk_02032EC0.lastState == 0) { + if (gUI.lastState == 0) { if (gInput.heldKeys & L_BUTTON) { switch (gInput.newKeys) { case DPAD_UP: @@ -118,13 +118,13 @@ void sub_0808E818(Entity* this) { static bool32 sub_0808E950(void) { bool32 result = FALSE; - switch (gUnk_02032EC0.lastState) { + switch (gUI.lastState) { case 0: case 4: case 5: case 6: case 7: - result = gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk6] == 1; + result = gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk6] == 1; break; } return result; @@ -182,11 +182,11 @@ void sub_0808EA28(Entity* this) { } } - if (this->type == gUnk_02019EE0.unk6) { + if (this->type == gMapDataBottomSpecial.unk6) { var0 = 12; var1 = 1; } else { - if (gUnk_02032EC0.lastState == 5 && this->type == gUnk_02019EE0.unk7) { + if (gUI.lastState == 5 && this->type == gMapDataBottomSpecial.unk7) { var0 = 13; var1 = 2; } else { @@ -198,14 +198,14 @@ void sub_0808EA28(Entity* this) { this->palette.b.b0 = var0; this->spriteRendering.b3 = var1; sub_0808EABC(this); - gUnk_02019EE0.isTransitioning |= sub_0808EF6C(this); + gMapDataBottomSpecial.isTransitioning |= sub_0808EF6C(this); } void sub_0808EABC(Entity* this) { int var0 = -72; int var1 = this->type * 32 + 40; - int var2 = gUnk_02019EE0.unk6 == this->type; - switch (gUnk_02032EC0.lastState) { + int var2 = gMapDataBottomSpecial.unk6 == this->type; + switch (gUI.lastState) { case 0: var0 = 24; break; @@ -251,7 +251,7 @@ void sub_0808EABC(Entity* this) { } void sub_0808EB74(Entity* this) { - Entity* entity = sub_0808EC80(gUnk_02019EE0.unk6); + Entity* entity = sub_0808EC80(gMapDataBottomSpecial.unk6); if (entity) { this->x.WORD = entity->x.WORD; this->y.WORD = entity->y.WORD; @@ -268,7 +268,7 @@ void sub_0808EBB8(Entity* this) { u32 x, y; Entity* entity; - switch (gUnk_02032EC0.lastState) { + switch (gUI.lastState) { case 4: var0 = gMenu.column_idx + 4; break; @@ -298,7 +298,7 @@ void sub_0808EBB8(Entity* this) { x = 112; break; case 2: - var0 = gUnk_02019EE0.unk7; + var0 = gMapDataBottomSpecial.unk7; if (var0 == 4) { var0 = 7; } @@ -337,12 +337,12 @@ void sub_0808ECBC(Entity* this) { const struct_08121CD4* var3; var0 = gMenu.column_idx; - switch (gUnk_02032EC0.lastState) { + switch (gUI.lastState) { case 4: var1 = 1; break; case 5: - var0 = gUnk_02019EE0.unk7; + var0 = gMapDataBottomSpecial.unk7; var1 = 2; break; case 6: @@ -366,12 +366,12 @@ void sub_0808ECBC(Entity* this) { this->palette.b.b0 = 14; } - gUnk_02019EE0.isTransitioning |= sub_0808EF6C(this); + gMapDataBottomSpecial.isTransitioning |= sub_0808EF6C(this); } void sub_0808ED64(Entity* this) { int y = 255; - if (gUnk_02032EC0.lastState == 1 && gGenericMenu.unk10.a[1] != 5) { + if (gUI.lastState == 1 && gGenericMenu.unk10.a[1] != 5) { this->x.HALF.HI = gGenericMenu.unk10.a[0] * 16 + 28; y = gGenericMenu.unk10.a[1] * 16 + 58; } @@ -380,7 +380,7 @@ void sub_0808ED64(Entity* this) { void sub_0808ED98(Entity* this) { int y; - if (gUnk_02032EC0.lastState != 1) { + if (gUI.lastState != 1) { this->field_0x68.HWORD = 27; y = -10; } else { @@ -408,7 +408,7 @@ void sub_0808EE00(Entity* this) { this->x.HALF.HI = gUnk_08121D18[var0][var1]; this->field_0x68.HWORD = gUnk_08121D18[var0][var1]; var1 -= var0; - if (gUnk_02032EC0.lastState != 1) { + if (gUI.lastState != 1) { var1 = 128; var2 = 176; } else { @@ -417,14 +417,14 @@ void sub_0808EE00(Entity* this) { this->field_0x6a.HWORD = var2; this->palette.b.b0 = gGenericMenu.unk10.a[1] == 5 && var1 == gGenericMenu.unk10.a[2] ? 11 : 9; - gUnk_02019EE0.isTransitioning |= sub_0808EF6C(this); + gMapDataBottomSpecial.isTransitioning |= sub_0808EF6C(this); } void nullsub_522(Entity* this) { } void sub_0808EE98(Entity* this) { - this->actionDelay = gUnk_02032EC0.lastState; + this->actionDelay = gUI.lastState; this->frameIndex = gUnk_08121D48[this->actionDelay]; if (this->actionDelay != 2) { this->field_0x68.HWORD = 96; @@ -436,7 +436,7 @@ void sub_0808EE98(Entity* this) { void sub_0808EED8(Entity* this) { int var0; - if (gUnk_02032EC0.lastState != 3) { + if (gUI.lastState != 3) { this->spriteSettings.draw = 0; } else { this->spriteSettings.draw = 2; @@ -447,7 +447,7 @@ void sub_0808EED8(Entity* this) { void sub_0808EF24(Entity* this) { int var0; - if (gUnk_02032EC0.lastState != 3) { + if (gUI.lastState != 3) { this->spriteSettings.draw = 0; } else { this->spriteSettings.draw = 2; diff --git a/src/object/railtrack.c b/src/object/railtrack.c index fbca5d99..cb6fb550 100644 --- a/src/object/railtrack.c +++ b/src/object/railtrack.c @@ -40,7 +40,7 @@ void sub_080851AC(Entity* this) { } } InitializeAnimation(this, this->animationState); - this->field_0x70.WORD = (u32)GetLayerByIndex(this->collisionLayer) + 4 + (COORD_TO_TILE(this) * 2); + this->field_0x70.WORD = (u32)&GetLayerByIndex(this->collisionLayer)->mapData[COORD_TO_TILE(this)]; sub_08085394(this); } diff --git a/src/player.c b/src/player.c index 48e00eab..076b684a 100644 --- a/src/player.c +++ b/src/player.c @@ -2689,7 +2689,7 @@ static void sub_0807332C(Entity* this) { gRoomControls.camera_target = this; SetPlayerActionNormal(); } else { - gMain.substate = 3; + gMain.substate = GAMEMAIN_CHANGEAREA; *(&gMain.pauseInterval + 1) = 1; SetFade(5, 8); } diff --git a/src/playerUtils.c b/src/playerUtils.c index b254f4bc..ada94b39 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -32,10 +32,6 @@ typedef struct { u8 unk6[6]; } struct_0811BE48; -extern void gMapDataBottom; // 0x2000 -extern void gMapDataTop; // 0x2000 -extern u16 gMetatilesBottom[]; -extern u16 gMetatilesTop[]; extern u8 gMapData; extern const u8 gUnk_020176E0[]; extern const ScreenTransitionData gUnk_0813AD88[]; @@ -73,6 +69,19 @@ extern void (*const gUnk_0811C120[])(Entity*); extern u16 gUnk_0811C268[]; extern ItemBehavior* (*const gUnk_0811BFC8[])(u32); +extern void DeleteLoadedTileEntity(u32, u32); + +extern const u8 gUnk_080B3E80[]; // collisionData for tileType? +extern const u8 gUnk_080B37A0[]; // unkData3 for tileType? + +extern u8 gUpdateVisibleTiles; +extern u16 gMapDataTopSpecial[]; +extern u16 gMapDataBottomSpecial[]; + +bool32 sub_0807BF88(u32, u32, RoomResInfo*); + +void sub_0807BFD0(void); + void sub_08077698(PlayerEntity* this) { ItemBehavior* puVar2; u32 uVar3; @@ -1587,7 +1596,46 @@ void sub_0807B2F8(PlayerEntity* this) { } } -ASM_FUNC("asm/non_matching/playerUtils/SetTileType.inc", void SetTileType(u32 a, u32 b, u32 c)) +void SetTileType(u32 tileType, u32 position, u32 layer) { + u8 collisionData; + u16 metatile; + LayerStruct* data; + u16* src; + u16* dest; + + if (tileType < 0x800) { + DeleteLoadedTileEntity(position, layer); + data = GetLayerByIndex(layer); + metatile = data->unkData2[tileType]; + data->mapData[position] = metatile; + collisionData = gUnk_080B3E80[tileType]; + data->collisionData[position] = collisionData; + if ((gRoomControls.scroll_flags & 2) != 0) { + gMapBottom.collisionData[position] = collisionData; + } + data->unkData3[position] = gUnk_080B37A0[tileType]; + if ((gRoomControls.scroll_flags & 1) == 0) { + u32 offset = (position & 0x3f) * 2 + (position & 0xfc0) * 4; + if (layer != 2) { + dest = gMapDataBottomSpecial + offset; + } else { + dest = gMapDataTopSpecial + offset; + } + src = data->metatiles + metatile * 4; + *dest = *src; + dest[1] = src[1]; + dest[0x80] = src[2]; + dest[0x81] = src[3]; + if (gRoomControls.reload_flags != 1) { + gUpdateVisibleTiles = 1; + } + } + } else if (tileType >= 0x4000) { // The tile type actually directly is a tileIndex + SetTile(tileType, position, layer); + } else { + sub_0807BA8C(position, layer); + } +} bool32 sub_0807B434(u32 position, u32 layer) { switch (GetTileType(position, layer)) { @@ -1626,49 +1674,106 @@ void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) { } } -void sub_0807B820(u32 param_1) { - SetTileType(620, param_1 - 65, 1); - SetTileType(627, param_1 - 65, 2); - SetTileType(621, param_1 - 64, 1); - SetTileType(628, param_1 - 64, 2); - SetTileType(622, param_1 - 63, 1); - SetTileType(629, param_1 - 63, 2); - SetTileType(623, param_1 - 1, 1); - SetTileType(624, param_1, 1); - SetTileType(626, param_1 + 1, 1); +void sub_0807B820(u32 position) { + SetTileType(0x26c, position + TILE_POS(-1, -1), 1); + SetTileType(0x273, position + TILE_POS(-1, -1), 2); + SetTileType(0x26d, position + TILE_POS(0, -1), 1); + SetTileType(0x274, position + TILE_POS(0, -1), 2); + SetTileType(0x26e, position + TILE_POS(1, -1), 1); + SetTileType(0x275, position + TILE_POS(1, -1), 2); + SetTileType(0x26f, position + TILE_POS(-1, 0), 1); + SetTileType(0x270, position, 1); + SetTileType(0x272, position + TILE_POS(1, 0), 1); } -void sub_0807B8A8(u32 param_1) { - SetTileType(636, param_1 - 65, 1); - SetTileType(643, param_1 - 65, 2); - SetTileType(637, param_1 - 64, 1); - SetTileType(644, param_1 - 64, 2); - SetTileType(638, param_1 - 63, 1); - SetTileType(645, param_1 - 63, 2); - SetTileType(639, param_1 - 1, 1); - SetTileType(640, param_1, 1); - SetTileType(642, param_1 + 1, 1); +void sub_0807B8A8(u32 position) { + SetTileType(0x27c, position + TILE_POS(-1, -1), 1); + SetTileType(0x283, position + TILE_POS(-1, -1), 2); + SetTileType(0x27d, position + TILE_POS(0, -1), 1); + SetTileType(0x284, position + TILE_POS(0, -1), 2); + SetTileType(0x27e, position + TILE_POS(1, -1), 1); + SetTileType(0x285, position + TILE_POS(1, -1), 2); + SetTileType(0x27f, position + TILE_POS(-1, 0), 1); + SetTileType(0x280, position, 1); + SetTileType(0x282, position + TILE_POS(1, 0), 1); } -void sub_0807B930(int param_1) { - SetTileType(652, param_1 - 65, 1); - SetTileType(659, param_1 - 65, 2); - SetTileType(653, param_1 - 64, 1); - SetTileType(660, param_1 - 64, 2); - SetTileType(654, param_1 - 63, 1); - SetTileType(661, param_1 - 63, 2); - SetTileType(655, param_1 - 1, 1); - SetTileType(656, param_1, 1); - SetTileType(658, param_1 + 1, 1); +void sub_0807B930(u32 position) { + SetTileType(0x28c, position + TILE_POS(-1, -1), 1); + SetTileType(0x293, position + TILE_POS(-1, -1), 2); + SetTileType(0x28d, position + TILE_POS(0, -1), 1); + SetTileType(0x294, position + TILE_POS(0, -1), 2); + SetTileType(0x28e, position + TILE_POS(1, -1), 1); + SetTileType(0x295, position + TILE_POS(1, -1), 2); + SetTileType(0x28f, position + TILE_POS(-1, 0), 1); + SetTileType(0x290, position, 1); + SetTileType(0x292, position + TILE_POS(1, 0), 1); } -ASM_FUNC("asm/non_matching/playerUtils/sub_0807B9B8.inc", void sub_0807B9B8(s32 a, s32 b, s32 c)) +void sub_0807B9B8(u32 tileIndex, u32 position, u32 layer) { + LayerStruct* data; + u16* src; + u16* dest; + u16 tileType; -ASM_FUNC("asm/non_matching/playerUtils/sub_0807BA8C.inc", void sub_0807BA8C(u32 a, u32 b)) + DeleteLoadedTileEntity(position, layer); + data = GetLayerByIndex(layer); + data->mapData[position] = tileIndex; + tileType = data->metatileTypes[tileIndex]; + data->collisionData[position] = gUnk_080B3E80[tileType]; + data->unkData3[position] = gUnk_080B37A0[tileType]; + if ((gRoomControls.scroll_flags & 1) == 0) { + u32 offset = (position & 0x3f) * 2 + (position & 0xfc0) * 4; + if (layer != 2) { + dest = gMapDataBottomSpecial + offset; + } else { + dest = gMapDataTopSpecial + offset; + } + src = data->metatiles + tileIndex * 4; + *dest = *src; + dest[1] = src[1]; + dest[0x80] = src[2]; + dest[0x81] = src[3]; + if (gRoomControls.reload_flags != 1) { + gUpdateVisibleTiles = 1; + } + } +} -void sub_0807BB68(s16* param_1, u32 param_2, u32 param_3) { +void sub_0807BA8C(u32 position, u32 layer) { + u32 tileIndex; + u32 tileType; + LayerStruct* data; + u16* dest; + u16* src; + + DeleteLoadedTileEntity(position, layer); + data = GetLayerByIndex(layer); + data->mapData[position] = tileIndex = data->mapDataClone[position]; + tileType = data->metatileTypes[tileIndex]; + data->collisionData[position] = gUnk_080B3E80[tileType]; + data->unkData3[position] = gUnk_080B37A0[tileType]; + if ((gRoomControls.scroll_flags & 1) == 0) { + u32 offset = (position & 0x3f) * 2 + (position & 0xfc0) * 4; + if (layer != 2) { + dest = gMapDataBottomSpecial + offset; + } else { + dest = gMapDataTopSpecial + offset; + } + src = &data->metatiles[tileIndex * 4]; + dest[0] = src[0]; + dest[1] = src[1]; + dest[0x80] = src[2]; + dest[0x81] = src[3]; + if (gRoomControls.reload_flags != 1) { + gUpdateVisibleTiles = 1; + } + } +} + +void sub_0807BB68(s16* param_1, u32 basePosition, u32 layer) { while (param_1[0] != -1) { - SetTileType((u16)param_1[0], param_2 + param_1[1], param_3); + SetTileType((u16)param_1[0], basePosition + param_1[1], layer); param_1 += 2; } } @@ -1686,15 +1791,157 @@ void sub_0807BB98(s32 basePosition, u32 layer, u32 width, u32 height) { ASM_FUNC("asm/non_matching/playerUtils/sub_0807BBE4.inc", void sub_0807BBE4()) -ASM_FUNC("asm/non_matching/playerUtils/sub_0807BC84.inc", void sub_0807BC84()) +void sub_0807BC84(void) { + s32 height; + u32 width; + u8* puVar3; + u8* puVar4; + u8* puVar5; + u8* puVar6; + u32 index; + + width = (u32)(gRoomControls.width >> 4); + if (width == 0x40) { + width = 0x3f; + } + puVar4 = gMapBottom.collisionData + width; + puVar6 = gMapBottom.collisionData + 0x3f; + puVar3 = gMapTop.collisionData + width; + puVar5 = gMapTop.collisionData + 0x3f; + index = 0; + while (index < 0x40) { + *puVar4 = 0xff; + *puVar6 = 0xff; + *puVar3 = 0xff; + *puVar5 = 0xff; + puVar4 += 0x40; + puVar6 += 0x40; + puVar3 += 0x40; + puVar5 += 0x40; + index++; + } + height = (gRoomControls.height & 0xfff0) * 4; + puVar4 = gMapBottom.collisionData + height; + puVar6 = gMapBottom.collisionData + 0xfc0; + puVar3 = gMapTop.collisionData + height; + puVar5 = gMapTop.collisionData + 0xfc0; + index = 0; + while (index < 0x40) { + *puVar4 = 0xff; + puVar4++; + *puVar6 = 0xff; + puVar6++; + *puVar3 = 0xff; + puVar3++; + *puVar5 = 0xff; + puVar5++; + index++; + } +} ASM_FUNC("asm/non_matching/playerUtils/sub_0807BD14.inc", bool32 sub_0807BD14(Entity* a, u32 b)) -ASM_FUNC("asm/non_matching/playerUtils/sub_0807BDB8.inc", void sub_0807BDB8()) +u32 sub_0807BDB8(Entity* this, u32 param_2) { + u32 result = 0xff; + switch (param_2 & 7) { + case 0: + if (this->y.HALF.HI - (u32)gRoomControls.origin_y < 10) { + result = 0; + } + break; + case 1: + if (this->y.HALF.HI - (u32)gRoomControls.origin_y < 10) { + result = 0; + } + if (gRoomControls.width - 10 < this->x.HALF.HI - (u32)gRoomControls.origin_x) { + result = 1; + } + break; + case 2: + if (gRoomControls.width - 10 < this->x.HALF.HI - (u32)gRoomControls.origin_x) { + result = 1; + } + break; + case 3: + if (gRoomControls.height - 10 < this->y.HALF.HI - (u32)gRoomControls.origin_y) { + result = 2; + } + if (gRoomControls.width - 10 < this->x.HALF.HI - (u32)gRoomControls.origin_x) { + result = 1; + } + break; + case 4: + if (gRoomControls.height - 10 < this->y.HALF.HI - (u32)gRoomControls.origin_y) { + result = 2; + } + break; + case 5: + if (gRoomControls.height - 10 < this->y.HALF.HI - (u32)gRoomControls.origin_y) { + result = 2; + } + if (this->x.HALF.HI - (u32)gRoomControls.origin_x < 10) { + result = 3; + } + break; + case 6: + if (this->x.HALF.HI - (u32)gRoomControls.origin_x < 10) { + result = 3; + } + break; + case 7: + if (this->y.HALF.HI - (u32)gRoomControls.origin_y < 10) { + result = 0; + } + if (this->x.HALF.HI - (u32)gRoomControls.origin_x < 10) { + result = 3; + } + } + return result; +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807BEEC.inc", void sub_0807BEEC()) +u32 sub_0807BEEC(u32 param_1, u32 param_2, u32 param_3) { + u32 index; + RoomResInfo* ptr; + if ((gArea.filler3[-1] & 1) != 0) { + return gRoomControls.room; + } + switch (param_3) { + case 0: + param_2 = gRoomControls.origin_y - 0x10; + break; + case 1: + param_1 = gRoomControls.origin_x + gRoomControls.width + 0x10; + break; + case 2: + param_2 = gRoomControls.origin_y + gRoomControls.height + 0x10; + break; + case 3: + param_1 = gRoomControls.origin_x - 0x10; + break; + default: + return 0xff; + } + ptr = gArea.roomResInfos; + index = 0; + while (index < 0x40) { + if (sub_0807BF88(param_1, param_2, ptr)) { + return index; + } + index++; + ptr++; + } + return 0xff; +} -ASM_FUNC("asm/non_matching/playerUtils/sub_0807BF88.inc", void sub_0807BF88()) +bool32 sub_0807BF88(u32 param_1, u32 param_2, RoomResInfo* info) { + u32 width = param_1 - info->map_x; + u32 height = param_2 - info->map_y; + bool32 result = FALSE; + if (width < info->pixel_width && height < info->pixel_height) { + result = TRUE; + } + return result; +} void sub_0807BFA8(void) { gRoomControls.origin_x = (gArea.pCurrentRoomInfo)->map_x; @@ -1707,7 +1954,32 @@ ASM_FUNC("asm/non_matching/playerUtils/sub_0807BFD0.inc", void sub_0807BFD0()) ASM_FUNC("asm/non_matching/playerUtils/LoadRoomGfx.inc", void LoadRoomGfx()) -ASM_FUNC("asm/non_matching/playerUtils/sub_0807C460.inc", void sub_0807C460()) +void sub_0807C460(void) { + u32 x; + u32 y; + u16* mapBottom = gMapBottom.mapData; + u16* mapTop = gMapTop.mapData; + u32 width = gRoomControls.width >> 4; + u32 height = gRoomControls.height >> 4; + u32 position = 0; + + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + if (*mapBottom > 0x3fff) { + SetTile(*mapBottom, position, 1); + } + if (*mapTop > 0x3fff) { + SetTile(*mapTop, position, 2); + } + mapBottom++; + mapTop++; + position++; + } + mapBottom += 0x40 - width; + mapTop += 0x40 - width; + position += 0x40 - width; + } +} ASM_FUNC("asm/non_matching/playerUtils/sub_0807C4F8.inc", void sub_0807C4F8()) @@ -1719,12 +1991,24 @@ ASM_FUNC("asm/non_matching/playerUtils/sub_0807C69C.inc", void sub_0807C69C()) ASM_FUNC("asm/non_matching/playerUtils/sub_0807C740.inc", void sub_0807C740()) -ASM_FUNC("asm/non_matching/playerUtils/sub_0807C810.inc", void sub_0807C810()) +void sub_0807C810(void) { + struct_03004030* ptr; + Entity* player; + RoomControls* ctrls; + sub_0807BFD0(); + ptr = &gUnk_03004030; + player = &gPlayerEntity; + ctrls = &gRoomControls; + player->x.HALF.HI = ((ptr->unk_00)->unk_06 & 0x3f) * 0x10 + ctrls->origin_x + ptr->unk_04; + player->y.HALF.HI = (((ptr->unk_00)->unk_06 & 0xfc0) >> 2) + ctrls->origin_y + ptr->unk_06; + sub_080809D4(); + gUpdateVisibleTiles = 0; +} -void sub_0807C860(void) { +void CloneMapData(void) { gRoomTransition.field_0x2c[1] = 1; - MemCopy(&gMapDataBottom, &gMapDataBottom + 0x3000, 0x2000); - MemCopy(&gMapDataTop, &gMapDataTop + 0x3000, 0x2000); + MemCopy(&gMapBottom.mapData, &gMapBottom.mapDataClone, 0x2000); + MemCopy(&gMapTop.mapData, &gMapTop.mapDataClone, 0x2000); } void sub_0807C898(void) { @@ -1749,10 +2033,10 @@ void LoadCompressedMapData(void* dest, u32 offset) { } void sub_0807C998(u32* a1) { - LoadCompressedMapData(gMetatilesBottom, a1[0]); - LoadCompressedMapData(gMetatilesBottom - 0x1000, a1[1]); - LoadCompressedMapData(gMetatilesTop, a1[2]); - LoadCompressedMapData(gMetatilesTop - 0x1000, a1[3]); + LoadCompressedMapData(&gMapBottom.metatiles, a1[0]); + LoadCompressedMapData(&gMapBottom.metatileTypes, a1[1]); + LoadCompressedMapData(&gMapTop.metatiles, a1[2]); + LoadCompressedMapData(&gMapTop.metatileTypes, a1[3]); } void sub_0807C9D8(u32* a1) { diff --git a/src/projectile/winder.c b/src/projectile/winder.c index bbc49d0d..ae1cb901 100644 --- a/src/projectile/winder.c +++ b/src/projectile/winder.c @@ -91,7 +91,7 @@ bool32 sub_080AB9FC(Entity* this, u32 dir) { val = (((this->x.HALF.HI - gRoomControls.origin_x) >> 4) & 0x3f) | ((((this->y.HALF.HI - gRoomControls.origin_y) >> 4) & 0x3f) << 6); val += gUnk_080B4488[dir >> 3]; - tmp = layer->_2004[val]; + tmp = layer->collisionData[val]; if (tmp <= 0x1f) { return 0; } diff --git a/src/roomInit.c b/src/roomInit.c index daadea73..4d670f37 100644 --- a/src/roomInit.c +++ b/src/roomInit.c @@ -2364,7 +2364,7 @@ u32 sub_unk3_DeepwoodShrine_InsideBarrel(void) { void sub_StateChange_DeepwoodShrine_InsideBarrel(void) { sub_08058D34(); gArea.areaMetadata |= 0x40; - gMain.substate = 5; + gMain.substate = GAMEMAIN_BARRELUPDATE; } u32 sub_unk3_DeepwoodShrineEntry_Main(void) { diff --git a/src/scroll.c b/src/scroll.c index 360eadc3..e751a412 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -135,7 +135,7 @@ void ClearTilemaps(void) { gRoomControls.filler3 = 0xffff; gUnk_03004030.unk_0a = 0xff; gUnk_02034480.unk_00 = 0; - MemClear(&gUnk_02019EE0, 0x8000); + MemClear(&gMapDataBottomSpecial, 0x8000); MemClear(&gMapDataTopSpecial, 0x8000); } diff --git a/src/subtask2.c b/src/subtask2.c index 8511f6a8..39b710bb 100644 --- a/src/subtask2.c +++ b/src/subtask2.c @@ -125,7 +125,7 @@ ASM_FUNC("asm/non_matching/subtask2/sub_080A5C9C.inc", void sub_080A5C9C()) void sub_080A5CFC(u32 menuType, void* param_2, u32 param_3) { DrawDungeonFeatures(menuType, param_2, param_3); LoadDungeonMap(); - DrawDungeonMap(menuType, &gUnk_02019EE0, 0x400); + DrawDungeonMap(menuType, &gMapDataBottomSpecial, 0x400); } ASM_FUNC("asm/non_matching/subtask2/sub_080A5D1C.inc", void sub_080A5D1C()) @@ -297,46 +297,46 @@ void SetMenuType(u32 menuType) { } void ResetUI(void) { - MemClear(&gUnk_02032EC0, 0x3b4); + MemClear(&gUI, 0x3b4); } void MenuFadeIn(u32 param_1, u32 param_2) { - if (gUnk_02032EC0.nextToLoad == 0) { - MemClear(&gUnk_02032EC0, 0x3b4); - gUnk_02032EC0.lastState = param_1; - gUnk_02032EC0.field_0x3 = param_2; - gUnk_02032EC0.pauseFadeIn = gMain.substate; + if (gUI.nextToLoad == 0) { + MemClear(&gUI, 0x3b4); + gUI.lastState = param_1; + gUI.field_0x3 = param_2; + gUI.pauseFadeIn = gMain.substate; } else { - gUnk_02032EC0.state = param_1; - gUnk_02032EC0.field_0x5 = param_2; - gUnk_02032EC0.nextToLoad = 1; + gUI.state = param_1; + gUI.field_0x5 = param_2; + gUI.nextToLoad = 1; } - gUnk_02032EC0.field_0x6 = 0; - gUnk_02032EC0.isLoading = 0xffff; - gUnk_02032EC0.fadeInTime = 0x20; - gMain.substate = 7; + gUI.field_0x6 = 0; + gUI.isLoading = 0xffff; + gUI.fadeInTime = 0x20; + gMain.substate = GAMEMAIN_SUBTASK; SetFade(5, 0x20); gUnk_02018EB0[0] = 0; gUnk_02018EB0[1] = 0; } void sub_080A71A4(u32 param_1, u32 param_2, u32 param_3) { - if (gUnk_02032EC0.nextToLoad == 0) { - gUnk_02032EC0.fillerC[2] = param_3; + if (gUI.nextToLoad == 0) { + gUI.fillerC[2] = param_3; } else { - gUnk_02032EC0.fillerC[3] = param_3; + gUI.fillerC[3] = param_3; } MenuFadeIn(param_1, param_2); } void sub_080A71C4(u32 param_1, u32 param_2, u32 param_3, u32 param_4) { MenuFadeIn(param_1, param_2); - gUnk_02032EC0.isLoading = param_3; - gUnk_02032EC0.fadeInTime = param_4; + gUI.isLoading = param_3; + gUI.fadeInTime = param_4; } void Subtask_Exit(void) { - gUnk_02032EC0.nextToLoad = 3; + gUI.nextToLoad = 3; SetFade(5, 0x20); } @@ -347,19 +347,19 @@ void sub_080A71F4(ScreenTransitionData* exitTransition) { DeleteAllEntities(); sub_0805E974(); DeleteAllEntities(); - gMain.state = 1; - gMain.substate = 0; + gMain.state = GAMETASK_INIT; + gMain.substate = GAMEMAIN_INITROOM; } void GameMain_Subtask(void) { - if (gUnk_02032EC0.nextToLoad < 3) { - if (gUnk_02032EC0.state != 0) { - gUnk_02032EC0.field_0x3 = gUnk_02032EC0.field_0x5; - gUnk_02032EC0.lastState = gUnk_02032EC0.state; - gUnk_02032EC0.state = 0; + if (gUI.nextToLoad < 3) { + if (gUI.state != 0) { + gUI.field_0x3 = gUI.field_0x5; + gUI.lastState = gUI.state; + gUI.state = 0; } } - gUnk_0812901C[gUnk_02032EC0.nextToLoad](); + gUnk_0812901C[gUI.nextToLoad](); } ASM_FUNC("asm/non_matching/subtask2/Subtask_FadeIn.inc", void Subtask_FadeIn()) @@ -377,7 +377,7 @@ void Subtask_Init(void) { ResetPalettes(); ResetPaletteTable(0); gGFXSlots.unk0 = 1; - gUnk_02032EC0.nextToLoad = 2; + gUI.nextToLoad = 2; gRoomTransition.field_0x2c[4] = 1; } } @@ -387,9 +387,9 @@ ASM_FUNC("asm/non_matching/subtask2/Subtask_FadeOut.inc", void Subtask_FadeOut() void Subtask_Die(void) { sub_080A74F4(); if (gFadeControl.active == 0) { - gMain.substate = gUnk_02032EC0.pauseFadeIn; - gUnk_02032EC0.nextToLoad = gFadeControl.active; - gUnk_02032EC0.lastState = gFadeControl.active; + gMain.substate = gUI.pauseFadeIn; + gUI.nextToLoad = gFadeControl.active; + gUI.lastState = gFadeControl.active; ResetSystemPriority(); } } @@ -408,5 +408,5 @@ void sub_080A74F4(void) { } void Subtask_Update(void) { - gSubtasks[gUnk_02032EC0.lastState](); + gSubtasks[gUI.lastState](); } diff --git a/src/title.c b/src/title.c index e878d784..f9c63410 100644 --- a/src/title.c +++ b/src/title.c @@ -16,6 +16,7 @@ #include "save.h" #include "area.h" #include "item.h" +#include "game.h" typedef struct { u8 filler0[0x4]; @@ -123,8 +124,8 @@ static const u8 unk[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #endif static u32 AdvanceIntroSequence(u32 transition) { - gUnk_02032EC0.lastState = transition; - gMain.state = 2; + gUI.lastState = transition; + gMain.state = GAMETASK_MAIN; MemClear(&gIntroState, sizeof(gIntroState)); SetFade(7, 8); } @@ -134,18 +135,18 @@ void TitleTask(void) { switch (gMain.state) { case 0: MessageInitialize(); - MemClear(&gUnk_02032EC0, sizeof(gUnk_02032EC0)); + MemClear(&gUI, sizeof(gUI)); AdvanceIntroSequence(0); break; case 1: - sIntroSequenceHandlers[gUnk_02032EC0.lastState](); + sIntroSequenceHandlers[gUI.lastState](); break; case 2: if (gFadeControl.active) { return; } DispReset(1); - gMain.state = 1; + gMain.state = GAMETASK_INIT; break; } CopyOAM();