From edbf03101a64b05e9d20cdf53ec2ca4888a2effa Mon Sep 17 00:00:00 2001 From: theo3 Date: Mon, 23 Nov 2020 22:18:34 -0800 Subject: [PATCH] done --- asm/chooseFile.s | 8 +- asm/code_080011C4.s | 6 +- asm/code_080043E8.s | 4 +- asm/code_08016DF8.s | 4 +- asm/code_0801C370.s | 4 +- asm/code_0801C85C.s | 4 +- asm/code_0801D79C.s | 16 +- asm/code_080526F8.s | 16 +- asm/code_08056418.s | 12 +- asm/code_0805EC04.s | 785 -------------------- asm/code_0806FA6C.s | 4 +- asm/code_08078778.s | 4 +- asm/code_080A3480.s | 12 +- asm/code_080A3BD0.s | 24 +- asm/code_080A5574.s | 8 +- asm/manager1.s | 4 +- asm/manager10.s | 4 +- asm/non_matching/manager15/sub_0805A9CC.inc | 4 +- asm/sub_08052418.s | 4 +- data/data_080029B4.s | 2 +- data/playerItemFunctions.s | 4 +- include/entity.h | 14 +- include/functions.h | 11 + include/global.h | 4 + include/main.h | 1 + include/menu.h | 6 +- include/player.h | 5 +- include/structures.h | 17 + linker.ld | 5 +- src/chooseFile.c | 18 +- src/code_0805EC04.c | 101 ++- src/code_0805F9A0.c | 169 +++++ src/enemy/waterDrop.c | 6 +- src/item14.c | 58 ++ src/manager/manager15.c | 6 +- src/manager/manager8.c | 18 +- src/manager/manager9.c | 8 +- src/object/object48.c | 12 +- src/screenDebug.c | 103 +++ 39 files changed, 581 insertions(+), 914 deletions(-) create mode 100644 src/code_0805F9A0.c create mode 100644 src/item14.c create mode 100644 src/screenDebug.c diff --git a/asm/chooseFile.s b/asm/chooseFile.s index 9705194d..0ea31128 100755 --- a/asm/chooseFile.s +++ b/asm/chooseFile.s @@ -980,7 +980,7 @@ _080512B8: bl sub_08051480 b _08051322 _080512C0: - ldr r2, _080512E4 @ =gUnk_02001A40 + ldr r2, _080512E4 @ =gBG3Buffer ldr r0, _080512E8 @ =gMenu ldrb r1, [r0, #0x10] lsls r1, r1, #1 @@ -997,7 +997,7 @@ _080512C0: bl sub_08051480 b _08051322 .align 2, 0 -_080512E4: .4byte gUnk_02001A40 +_080512E4: .4byte gBG3Buffer _080512E8: .4byte gMenu _080512EC: movs r3, #5 @@ -2576,7 +2576,7 @@ sub_08052010: @ 0x08052010 bl sub_08056418 movs r0, #1 bl sub_0801DA90 - ldr r0, _0805207C @ =gUnk_02021F30 + ldr r0, _0805207C @ =gBG1Buffer movs r4, #0x80 lsls r4, r4, #4 adds r1, r4, #0 @@ -2615,7 +2615,7 @@ sub_08052010: @ 0x08052010 strh r0, [r1, #0x26] pop {r4, pc} .align 2, 0 -_0805207C: .4byte gUnk_02021F30 +_0805207C: .4byte gBG1Buffer _08052080: .4byte gUnk_020344B0 _08052084: .4byte gMenu _08052088: .4byte gScreen diff --git a/asm/code_080011C4.s b/asm/code_080011C4.s index 5a8f8ec1..fa7ab489 100644 --- a/asm/code_080011C4.s +++ b/asm/code_080011C4.s @@ -71,7 +71,7 @@ _08001230: ldr r3, _0800135C @ =UpdateAnimationVariableFrames bx r3 _0800123E: - ldr r3, _08001360 @ =sub_080043B4 + ldr r3, _08001360 @ =CreateItemOnGround bx r3 non_word_aligned_thumb_func_start sub_08001242 @@ -154,7 +154,7 @@ gUnk_080012C8:: .4byte 0x00000000 _080012CC: .4byte sub_08001214 _080012D0: .4byte sub_080043A8 -_080012D4: .4byte sub_080043AC +_080012D4: .4byte CreateChestSpawner _080012D8: .4byte sub_080043B0 thumb_func_start sub_080012DC @@ -239,7 +239,7 @@ _08001352: .align 2, 0 _08001358: .4byte gEnemyFunctions _0800135C: .4byte UpdateAnimationVariableFrames -_08001360: .4byte sub_080043B4 +_08001360: .4byte CreateItemOnGround _08001364: .4byte 0x00001800 _08001368: .4byte gUnk_080012C8 _0800136C: .4byte gUnk_080012C8 diff --git a/asm/code_080043E8.s b/asm/code_080043E8.s index 586f2547..cab44841 100644 --- a/asm/code_080043E8.s +++ b/asm/code_080043E8.s @@ -52,9 +52,9 @@ sub_0800442E: @ 0x0800442E _08004448: movs r0, #0 pop {r1, pc} -_0800444C: .4byte sub_080043B4 +_0800444C: .4byte CreateItemOnGround _08004450: .4byte sub_080043A8 -_08004454: .4byte sub_080043AC +_08004454: .4byte CreateChestSpawner _08004458: .4byte sub_080043B0 thumb_func_start sub_0800445C diff --git a/asm/code_08016DF8.s b/asm/code_08016DF8.s index 6c090292..1ce2fbce 100644 --- a/asm/code_08016DF8.s +++ b/asm/code_08016DF8.s @@ -108,7 +108,7 @@ _08016E94: cmp r1, #0 beq _08016ED6 ldr r2, _08016F14 @ =0x040000D4 - ldr r0, _08016F18 @ =gUnk_02021F30 + ldr r0, _08016F18 @ =gBG1Buffer str r0, [r2] ldrh r1, [r1] movs r0, #0xf8 @@ -152,7 +152,7 @@ _08016F08: .4byte gUnk_03001000 _08016F0C: .4byte gUnk_02000070 _08016F10: .4byte gUnk_02025EB0 _08016F14: .4byte 0x040000D4 -_08016F18: .4byte gUnk_02021F30 +_08016F18: .4byte gBG1Buffer _08016F1C: .4byte 0x84000170 _08016F20: .4byte gUnk_0200B650 _08016F24: .4byte gUnk_020344B0 diff --git a/asm/code_0801C370.s b/asm/code_0801C370.s index 3493cced..cb6c515f 100644 --- a/asm/code_0801C370.s +++ b/asm/code_0801C370.s @@ -44,7 +44,7 @@ _0801C398: bl LoadPaletteGroup movs r0, #0x10 bl LoadGfxGroup - ldr r4, _0801C478 @ =gUnk_02034CB0 + ldr r4, _0801C478 @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 adds r0, r4, #0 @@ -122,7 +122,7 @@ _0801C398: .align 2, 0 _0801C470: .4byte gUnk_0200AF00 _0801C474: .4byte gUnk_02002A40 -_0801C478: .4byte gUnk_02034CB0 +_0801C478: .4byte gBG0Buffer _0801C47C: .4byte gScreen _0801C480: .4byte 0x00001F0C _0801C484: .4byte gUnk_03000000 diff --git a/asm/code_0801C85C.s b/asm/code_0801C85C.s index b86532bf..06013f44 100644 --- a/asm/code_0801C85C.s +++ b/asm/code_0801C85C.s @@ -375,7 +375,7 @@ sub_0801CB20: @ 0x0801CB20 bne _0801CB76 ldrh r1, [r1, #6] lsls r1, r1, #4 - ldr r0, _0801CB54 @ =gUnk_080029B4 + ldr r0, _0801CB54 @ =gSpritePtrs adds r1, r1, r0 ldrb r0, [r3, #0x10] lsls r0, r0, #2 @@ -395,7 +395,7 @@ sub_0801CB20: @ 0x0801CB20 strb r0, [r3] b _0801CB74 .align 2, 0 -_0801CB54: .4byte gUnk_080029B4 +_0801CB54: .4byte gSpritePtrs _0801CB58: ldrb r0, [r3, #0x19] cmp r0, r2 diff --git a/asm/code_0801D79C.s b/asm/code_0801D79C.s index 346a65e9..7847ec07 100644 --- a/asm/code_0801D79C.s +++ b/asm/code_0801D79C.s @@ -324,7 +324,7 @@ sub_0801DA90: @ 0x0801DA90 ldr r0, _0801DB08 @ =0x0600C000 movs r1, #0x20 bl _DmaZero - ldr r0, _0801DB0C @ =gUnk_02034CB0 + ldr r0, _0801DB0C @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 bl _DmaZero @@ -339,7 +339,7 @@ _0801DAFC: .4byte 0x040000B0 _0801DB00: .4byte 0x0000C5FF _0801DB04: .4byte 0x00007FFF _0801DB08: .4byte 0x0600C000 -_0801DB0C: .4byte gUnk_02034CB0 +_0801DB0C: .4byte gBG0Buffer thumb_func_start sub_0801DB10 sub_0801DB10: @ 0x0801DB10 @@ -370,11 +370,11 @@ sub_0801DB34: @ 0x0801DB34 adds r0, r4, #0 movs r1, #0x7c bl _DmaZero - ldr r0, _0801DB70 @ =gUnk_02034CB0 + ldr r0, _0801DB70 @ =gBG0Buffer str r0, [r4, #0x10] ldr r0, _0801DB74 @ =0x00001F0C strh r0, [r4, #8] - ldr r0, _0801DB78 @ =gUnk_02021F30 + ldr r0, _0801DB78 @ =gBG1Buffer str r0, [r4, #0x1c] ldr r0, _0801DB7C @ =0x00001C01 strh r0, [r4, #0x14] @@ -382,7 +382,7 @@ sub_0801DB34: @ 0x0801DB34 str r0, [r4, #0x28] ldr r0, _0801DB84 @ =0x00001D02 strh r0, [r4, #0x20] - ldr r0, _0801DB88 @ =gUnk_02001A40 + ldr r0, _0801DB88 @ =gBG3Buffer str r0, [r4, #0x34] ldr r0, _0801DB8C @ =0x00001E03 strh r0, [r4, #0x2c] @@ -394,13 +394,13 @@ sub_0801DB34: @ 0x0801DB34 pop {r4, pc} .align 2, 0 _0801DB6C: .4byte gScreen -_0801DB70: .4byte gUnk_02034CB0 +_0801DB70: .4byte gBG0Buffer _0801DB74: .4byte 0x00001F0C -_0801DB78: .4byte gUnk_02021F30 +_0801DB78: .4byte gBG1Buffer _0801DB7C: .4byte 0x00001C01 _0801DB80: .4byte gUnk_020344B0 _0801DB84: .4byte 0x00001D02 -_0801DB88: .4byte gUnk_02001A40 +_0801DB88: .4byte gBG3Buffer _0801DB8C: .4byte 0x00001E03 _0801DB90: .4byte 0x0000FFFF diff --git a/asm/code_080526F8.s b/asm/code_080526F8.s index bdb2dc97..bfb2dd80 100644 --- a/asm/code_080526F8.s +++ b/asm/code_080526F8.s @@ -1566,18 +1566,18 @@ _0805331C: .4byte gScreenTransition thumb_func_start sub_08053320 sub_08053320: @ 0x08053320 push {r4, lr} - ldr r0, _0805337C @ =gUnk_02034CB0 + ldr r0, _0805337C @ =gBG0Buffer movs r4, #0x80 lsls r4, r4, #4 adds r1, r4, #0 bl _DmaZero - ldr r0, _08053380 @ =gUnk_02021F30 + ldr r0, _08053380 @ =gBG1Buffer adds r1, r4, #0 bl _DmaZero ldr r0, _08053384 @ =gUnk_020344B0 adds r1, r4, #0 bl _DmaZero - ldr r0, _08053388 @ =gUnk_02001A40 + ldr r0, _08053388 @ =gBG3Buffer movs r1, #0x80 lsls r1, r1, #5 bl _DmaZero @@ -1602,10 +1602,10 @@ _08053362: bl sub_0801D79C pop {r4, pc} .align 2, 0 -_0805337C: .4byte gUnk_02034CB0 -_08053380: .4byte gUnk_02021F30 +_0805337C: .4byte gBG0Buffer +_08053380: .4byte gBG1Buffer _08053384: .4byte gUnk_020344B0 -_08053388: .4byte gUnk_02001A40 +_08053388: .4byte gBG3Buffer _0805338C: .4byte gRoomControls thumb_func_start sub_08053390 @@ -2219,7 +2219,7 @@ sub_08053800: @ 0x08053800 adds r0, r5, #0 adds r0, #0x3a bl LoadGfxGroup - ldr r0, _08053888 @ =gUnk_02021F30 + ldr r0, _08053888 @ =gBG1Buffer movs r1, #0x80 lsls r1, r1, #4 bl _DmaZero @@ -2251,7 +2251,7 @@ _0805387A: _0805387C: .4byte gFadeControl _08053880: .4byte gMenu _08053884: .4byte gUnk_080FCCB4 -_08053888: .4byte gUnk_02021F30 +_08053888: .4byte gBG1Buffer _0805388C: .4byte 0x00000F01 _08053890: .4byte gScreen diff --git a/asm/code_08056418.s b/asm/code_08056418.s index e2519ccd..45b6209b 100644 --- a/asm/code_08056418.s +++ b/asm/code_08056418.s @@ -1071,7 +1071,7 @@ sub_08056C68: @ 0x08056C68 ldrb r1, [r5, #4] adds r0, r0, r1 lsls r0, r0, #1 - ldr r1, _08056CBC @ =gUnk_02034CB0 + ldr r1, _08056CBC @ =gBG0Buffer adds r1, r0, r1 ldrb r0, [r5, #7] adds r0, #2 @@ -1101,7 +1101,7 @@ _08056CB4: pop {r4, r5, r6, pc} .align 2, 0 _08056CB8: .4byte gUnk_02036A38 -_08056CBC: .4byte gUnk_02034CB0 +_08056CBC: .4byte gBG0Buffer thumb_func_start sub_08056CC0 sub_08056CC0: @ 0x08056CC0 @@ -1215,7 +1215,7 @@ sub_08056D70: @ 0x08056D70 ldrb r1, [r4, #4] adds r0, r0, r1 lsls r0, r0, #1 - ldr r1, _08056DBC @ =gUnk_02034CB0 + ldr r1, _08056DBC @ =gBG0Buffer adds r0, r0, r1 ldr r3, _08056DC0 @ =0x0000F07B ldrb r1, [r4, #6] @@ -1234,7 +1234,7 @@ _08056DB0: .align 2, 0 _08056DB4: .4byte gUnk_02022780 _08056DB8: .4byte gUnk_02036A40 -_08056DBC: .4byte gUnk_02034CB0 +_08056DBC: .4byte gBG0Buffer _08056DC0: .4byte 0x0000F07B _08056DC4: .4byte gUnk_02036A38 @@ -1438,7 +1438,7 @@ sub_08056F1C: @ 0x08056F1C ldrb r0, [r2, #4] adds r1, r1, r0 lsls r1, r1, #1 - ldr r0, _08056F68 @ =gUnk_02034CB0 + ldr r0, _08056F68 @ =gBG0Buffer adds r1, r1, r0 ldrb r0, [r2, #7] adds r0, #1 @@ -1458,7 +1458,7 @@ _08056F58: .4byte gUnk_02022780 _08056F5C: .4byte 0x0010FF00 _08056F60: .4byte 0x00100200 _08056F64: .4byte gUnk_02036A40 -_08056F68: .4byte gUnk_02034CB0 +_08056F68: .4byte gBG0Buffer _08056F6C: .4byte 0x0000F080 thumb_func_start sub_08056F70 diff --git a/asm/code_0805EC04.s b/asm/code_0805EC04.s index 86ab0bed..134743db 100644 --- a/asm/code_0805EC04.s +++ b/asm/code_0805EC04.s @@ -5,117 +5,6 @@ .text - thumb_func_start sub_0805EC60 -sub_0805EC60: @ 0x0805EC60 - push {lr} - adds r3, r0, #0 - ldrb r1, [r3, #0x19] - lsls r0, r1, #0x1e - cmp r0, #0 - beq _0805EC90 - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r3, #0x19] - ldrb r2, [r3, #0x1b] - lsls r1, r2, #0x1a - lsrs r1, r1, #0x1b - movs r0, #0x3f - rsbs r0, r0, #0 - ands r0, r2 - strb r0, [r3, #0x1b] - ldr r0, _0805EC94 @ =gUnk_03000000 - lsls r1, r1, #3 - adds r1, r1, r0 - ldr r0, _0805EC98 @ =0x00000426 - adds r1, r1, r0 - movs r0, #0 - strb r0, [r1] -_0805EC90: - pop {pc} - .align 2, 0 -_0805EC94: .4byte gUnk_03000000 -_0805EC98: .4byte 0x00000426 - - thumb_func_start sub_0805EC9C -sub_0805EC9C: @ 0x0805EC9C - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r6, r2, #0 - adds r7, r3, #0 - ldrb r0, [r4, #0x1b] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x1b - cmp r0, #0 - bne _0805ECBE - adds r0, r4, #0 - bl sub_0805EC04 - cmp r0, #0 - bne _0805ECBE - movs r0, #0 - b _0805ECE0 -_0805ECBE: - ldr r1, _0805ECE4 @ =gUnk_03000000 - ldr r0, _0805ECE8 @ =0x00000427 - adds r2, r1, r0 - movs r0, #1 - strb r0, [r2] - ldrb r0, [r4, #0x1b] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x1b - lsls r0, r0, #3 - movs r2, #0x84 - lsls r2, r2, #3 - adds r1, r1, r2 - adds r0, r0, r1 - strh r5, [r0] - strh r6, [r0, #2] - strh r7, [r0, #4] - movs r0, #1 -_0805ECE0: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0805ECE4: .4byte gUnk_03000000 -_0805ECE8: .4byte 0x00000427 - - thumb_func_start sub_0805ECEC -sub_0805ECEC: @ 0x0805ECEC - push {r4, r5, r6, lr} - ldr r5, _0805ED0C @ =gUnk_03000000 - ldr r4, _0805ED10 @ =0x00000427 - adds r6, r5, r4 - movs r4, #1 - strb r4, [r6] - lsls r0, r0, #3 - movs r4, #0x84 - lsls r4, r4, #3 - adds r5, r5, r4 - adds r0, r0, r5 - strh r1, [r0] - strh r2, [r0, #2] - strh r3, [r0, #4] - pop {r4, r5, r6, pc} - .align 2, 0 -_0805ED0C: .4byte gUnk_03000000 -_0805ED10: .4byte 0x00000427 - - thumb_func_start sub_0805ED14 -sub_0805ED14: @ 0x0805ED14 - ldr r2, _0805ED2C @ =gPlayerState - adds r1, r2, #0 - adds r1, #0x9c - str r0, [r1] - adds r0, r2, #0 - adds r0, #0x98 - movs r1, #0 - strh r1, [r0] - adds r0, #2 - strh r1, [r0] - bx lr - .align 2, 0 -_0805ED2C: .4byte gPlayerState - thumb_func_start sub_0805ED30 sub_0805ED30: @ 0x0805ED30 push {r4, lr} @@ -1529,677 +1418,3 @@ _0805F7D2: pop {r4, pc} .align 2, 0 - thumb_func_start sub_0805F7DC -sub_0805F7DC: @ 0x0805F7DC - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - adds r4, r1, #0 - ldrh r0, [r4, #4] - ldrh r1, [r4, #6] - cmp r0, r1 - bhi _0805F7EE - movs r0, #0 - b _0805F81E -_0805F7EE: - adds r0, r6, #0 - bl sub_0805F25C - adds r5, r0, #0 - ldrh r7, [r4, #6] - lsrs r0, r6, #8 - cmp r0, #4 - bls _0805F808 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0805F820 - adds r5, #0x40 -_0805F808: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0805F820 - ldrh r1, [r4, #4] - ldrh r0, [r4, #6] - cmp r0, r1 - bls _0805F81A - strh r1, [r4, #6] -_0805F81A: - ldrh r0, [r4, #6] - subs r0, r0, r7 -_0805F81E: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0805F820 -sub_0805F820: @ 0x0805F820 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r7, r0, #0 - adds r4, r1, #0 - ldrh r0, [r7, #4] - ldrh r1, [r7, #6] - subs r0, r0, r1 - cmp r0, #0 - ble _0805F8DC - ldr r1, _0805F854 @ =gUnk_02036A58 - adds r0, r4, #0 - bl sub_08002724 - ldrb r0, [r7, #1] - cmp r0, #0 - bne _0805F858 - ldr r0, [r4] - bl sub_0805F7A0 - movs r1, #0xf - ands r1, r0 - lsrs r4, r0, #8 - b _0805F85C - .align 2, 0 -_0805F854: .4byte gUnk_02036A58 -_0805F858: - movs r1, #0 - movs r4, #8 -_0805F85C: - ldrh r0, [r7, #4] - ldrh r3, [r7, #6] - subs r0, r0, r3 - cmp r0, #8 - ble _0805F868 - movs r0, #8 -_0805F868: - cmp r0, r4 - bge _0805F86E - adds r4, r0, #0 -_0805F86E: - ldr r0, _0805F8BC @ =gUnk_02036A58 - adds r6, r1, r0 - ldr r0, [r7, #8] - mov sb, r0 - ldrb r0, [r7, #3] - lsls r2, r0, #1 - adds r2, r2, r0 - lsls r2, r2, #6 - ldrb r0, [r7, #2] - lsls r0, r0, #5 - ldr r1, _0805F8C0 @ =gUnk_0810942E - adds r0, r0, r1 - adds r2, r2, r0 - mov r8, r2 - adds r5, r3, #0 - adds r0, r5, r4 - strh r0, [r7, #6] - ldrb r0, [r7] - lsrs r0, r0, #4 - cmp r0, #1 - beq _0805F8D4 - adds r0, r4, #0 - subs r4, #1 - cmp r0, #0 - ble _0805F8DC -_0805F8A0: - adds r0, r6, #0 - mov r1, sb - mov r2, r8 - adds r3, r5, #0 - bl sub_080026C4 - adds r6, #1 - adds r5, #1 - adds r0, r4, #0 - subs r4, #1 - cmp r0, #0 - bgt _0805F8A0 - b _0805F8DC - .align 2, 0 -_0805F8BC: .4byte gUnk_02036A58 -_0805F8C0: .4byte gUnk_0810942E -_0805F8C4: - adds r0, r6, #0 - mov r1, sb - mov r2, r8 - adds r3, r5, #0 - bl sub_080026F2 - adds r6, #1 - adds r5, #1 -_0805F8D4: - adds r0, r4, #0 - subs r4, #1 - cmp r0, #0 - bgt _0805F8C4 -_0805F8DC: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0805F8E4 -sub_0805F8E4: @ 0x0805F8E4 - push {r4, r5, lr} - adds r4, r1, #0 - ldrb r5, [r4, #1] - movs r1, #1 - strb r1, [r4, #1] - adds r1, r4, #0 - bl sub_0805F7DC - strb r5, [r4, #1] - pop {r4, r5, pc} - - thumb_func_start sub_0805F8F8 -sub_0805F8F8: @ 0x0805F8F8 - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #6 - ldr r0, _0805F910 @ =gUnk_081094CE - adds r1, r1, r0 - ldr r2, _0805F914 @ =gUnk_0810926C - ldrb r0, [r1, #0xa] - lsls r0, r0, #2 - adds r0, r0, r2 - ldr r0, [r0] - bx lr - .align 2, 0 -_0805F910: .4byte gUnk_081094CE -_0805F914: .4byte gUnk_0810926C - - thumb_func_start sub_0805F918 -sub_0805F918: @ 0x0805F918 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r4, r0, #0 - adds r5, r1, #0 - mov sl, r2 - adds r0, r5, #0 - bl sub_0805F8F8 - ldr r1, _0805F990 @ =gUnk_02036AD8 - movs r2, #0xe0 - bl _DmaFill32 - ldr r0, _0805F994 @ =gUnk_081092AC - lsls r4, r4, #2 - adds r4, r4, r0 - ldr r4, [r4] - mov r8, r4 - lsls r0, r5, #1 - adds r0, r0, r5 - lsls r0, r0, #6 - ldr r1, _0805F998 @ =gUnk_081094CE - adds r0, r0, r1 - mov sb, r0 - movs r7, #0 - movs r6, #0 -_0805F950: - ldr r4, _0805F99C @ =gUnk_02036A58 - mov r0, r8 - adds r1, r4, #0 - bl sub_08002724 - movs r0, #0x40 - add r8, r0 - movs r5, #0 - adds r6, #1 -_0805F962: - adds r0, r4, #0 - ldr r1, _0805F990 @ =gUnk_02036AD8 - mov r2, sb - adds r3, r7, #0 - bl sub_080026C4 - adds r4, #1 - adds r7, #1 - adds r5, #1 - cmp r5, #7 - bls _0805F962 - cmp r6, #2 - bls _0805F950 - ldr r0, _0805F990 @ =gUnk_02036AD8 - mov r1, sl - movs r2, #0xe0 - bl LoadAssetAsync - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0805F990: .4byte gUnk_02036AD8 -_0805F994: .4byte gUnk_081092AC -_0805F998: .4byte gUnk_081094CE -_0805F99C: .4byte gUnk_02036A58 - - thumb_func_start sub_0805F9A0 -sub_0805F9A0: @ 0x0805F9A0 - push {lr} - adds r2, r0, #0 - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - cmp r0, #0 - bne _0805F9D0 - ldr r1, _0805F9C4 @ =gUnk_081092D4 - movs r3, #0 -_0805F9B2: - ldrh r0, [r1] - cmp r0, r2 - beq _0805F9C8 - adds r3, #1 - adds r1, #2 - ldrh r0, [r1] - cmp r0, #0 - bne _0805F9B2 - b _0805F9D8 - .align 2, 0 -_0805F9C4: .4byte gUnk_081092D4 -_0805F9C8: - movs r1, #0x80 - lsls r1, r1, #4 - adds r0, r3, r1 - b _0805F9E2 -_0805F9D0: - ldr r0, _0805F9E4 @ =0x0000031A - cmp r2, r0 - bne _0805F9D8 - movs r2, #1 -_0805F9D8: - movs r0, #0xff - ands r0, r2 - movs r1, #0x80 - lsls r1, r1, #4 - adds r0, r0, r1 -_0805F9E2: - pop {pc} - .align 2, 0 -_0805F9E4: .4byte 0x0000031A - - thumb_func_start HandleDebugTextScreen -HandleDebugTextScreen: @ 0x0805F9E8 - push {lr} - ldr r1, _0805F9FC @ =gUnk_08109A30 - ldr r0, _0805FA00 @ =gUnk_03001000 - ldrb r0, [r0, #3] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {pc} - .align 2, 0 -_0805F9FC: .4byte gUnk_08109A30 -_0805FA00: .4byte gUnk_03001000 - - thumb_func_start sub_0805FA04 -sub_0805FA04: @ 0x0805FA04 - push {r4, r5, lr} - movs r0, #1 - bl sub_0801DA90 - ldr r0, _0805FA78 @ =gBG0Buffer - movs r1, #0x80 - lsls r1, r1, #4 - bl _DmaZero - ldr r0, _0805FA7C @ =gUnk_02001A40 - movs r1, #0x80 - lsls r1, r1, #5 - bl _DmaZero - ldr r0, _0805FA80 @ =gScreen - movs r2, #0 - movs r1, #0x94 - lsls r1, r1, #4 - strh r1, [r0] - strh r2, [r0, #0xa] - strh r2, [r0, #0xc] - strh r2, [r0, #0x2e] - strh r2, [r0, #0x30] - ldr r1, _0805FA84 @ =0x00001E0F - strh r1, [r0, #0x2c] - movs r5, #1 - movs r1, #1 - strh r1, [r0, #0x32] - bl sub_08056418 - ldr r0, _0805FA88 @ =gUnk_02032EC0 - movs r1, #0xed - lsls r1, r1, #2 - bl _DmaZero - ldr r4, _0805FA8C @ =gMenu - adds r0, r4, #0 - movs r1, #0x30 - bl _DmaZero - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - strb r0, [r4, #0x16] - bl sub_08053320 - ldr r1, _0805FA90 @ =0x00001144 - movs r0, #0 - bl sub_0801D79C - ldr r0, _0805FA94 @ =gUnk_03001000 - strb r5, [r0, #3] - bl sub_080A3210 - bl sub_08050008 - pop {r4, r5, pc} - .align 2, 0 -_0805FA78: .4byte gBG0Buffer -_0805FA7C: .4byte gUnk_02001A40 -_0805FA80: .4byte gScreen -_0805FA84: .4byte 0x00001E0F -_0805FA88: .4byte gUnk_02032EC0 -_0805FA8C: .4byte gMenu -_0805FA90: .4byte 0x00001144 -_0805FA94: .4byte gUnk_03001000 - - thumb_func_start sub_0805FA98 -sub_0805FA98: @ 0x0805FA98 - push {r4, lr} - ldr r0, _0805FAB4 @ =gUnk_03000FF0 - ldrh r1, [r0, #2] - adds r2, r0, #0 - cmp r1, #0x80 - beq _0805FAD8 - cmp r1, #0x80 - bgt _0805FAB8 - cmp r1, #2 - beq _0805FB44 - cmp r1, #0x40 - beq _0805FACA - b _0805FB4A - .align 2, 0 -_0805FAB4: .4byte gUnk_03000FF0 -_0805FAB8: - movs r0, #0x80 - lsls r0, r0, #1 - cmp r1, r0 - beq _0805FB28 - movs r0, #0x80 - lsls r0, r0, #2 - cmp r1, r0 - beq _0805FAE8 - b _0805FB4A -_0805FACA: - ldr r1, _0805FAD4 @ =gMenu - ldrb r0, [r1, #0x11] - subs r0, #1 - strb r0, [r1, #0x11] - b _0805FBA4 - .align 2, 0 -_0805FAD4: .4byte gMenu -_0805FAD8: - ldr r1, _0805FAE4 @ =gMenu - ldrb r0, [r1, #0x11] - adds r0, #1 - strb r0, [r1, #0x11] - b _0805FBA4 - .align 2, 0 -_0805FAE4: .4byte gMenu -_0805FAE8: - ldr r0, _0805FB04 @ =gMenu - ldrb r1, [r0, #0x10] - movs r2, #1 - eors r1, r2 - strb r1, [r0, #0x10] - cmp r1, #0 - bne _0805FB10 - ldr r0, _0805FB08 @ =gScreen - ldr r1, _0805FB0C @ =0x00001F0C - strh r1, [r0, #8] - subs r1, #0xfd - strh r1, [r0, #0x2c] - b _0805FBA4 - .align 2, 0 -_0805FB04: .4byte gMenu -_0805FB08: .4byte gScreen -_0805FB0C: .4byte 0x00001F0C -_0805FB10: - ldr r0, _0805FB1C @ =gScreen - ldr r1, _0805FB20 @ =0x00001F0F - strh r1, [r0, #8] - ldr r1, _0805FB24 @ =0x00001E0C - strh r1, [r0, #0x2c] - b _0805FBA4 - .align 2, 0 -_0805FB1C: .4byte gScreen -_0805FB20: .4byte 0x00001F0F -_0805FB24: .4byte 0x00001E0C -_0805FB28: - movs r2, #0x80 - lsls r2, r2, #0x12 - ldr r1, _0805FB40 @ =gMenu - ldrb r0, [r1, #0x16] - strb r0, [r2, #7] - ldrb r0, [r1, #0x14] - lsls r0, r0, #8 - ldrb r1, [r1, #0x15] - adds r0, r0, r1 - bl TextboxNoOverlapFollow - b _0805FBA4 - .align 2, 0 -_0805FB40: .4byte gMenu -_0805FB44: - bl sub_08056418 - b _0805FBA4 -_0805FB4A: - ldrh r0, [r2, #4] - cmp r0, #0x10 - beq _0805FB5A - cmp r0, #0x20 - bne _0805FB5E - movs r1, #1 - rsbs r1, r1, #0 - b _0805FB60 -_0805FB5A: - movs r1, #1 - b _0805FB60 -_0805FB5E: - movs r1, #0 -_0805FB60: - ldr r4, _0805FB74 @ =gMenu - ldrb r0, [r4, #0x11] - cmp r0, #1 - beq _0805FB8E - cmp r0, #1 - bgt _0805FB78 - cmp r0, #0 - beq _0805FB7E - b _0805FBA4 - .align 2, 0 -_0805FB74: .4byte gMenu -_0805FB78: - cmp r0, #2 - beq _0805FB96 - b _0805FBA4 -_0805FB7E: - ldrb r0, [r4, #0x14] - adds r0, r0, r1 - adds r0, #0x50 - movs r1, #0x50 - bl __modsi3 - strb r0, [r4, #0x14] - b _0805FBA4 -_0805FB8E: - ldrb r0, [r4, #0x15] - adds r0, r0, r1 - strb r0, [r4, #0x15] - b _0805FBA4 -_0805FB96: - ldrb r0, [r4, #0x16] - adds r0, r0, r1 - adds r0, #7 - movs r1, #7 - bl __modsi3 - strb r0, [r4, #0x16] -_0805FBA4: - ldr r4, _0805FBBC @ =gMenu - ldrb r0, [r4, #0x11] - adds r0, #3 - movs r1, #3 - bl __modsi3 - strb r0, [r4, #0x11] - ldr r1, _0805FBC0 @ =gScreen - movs r0, #1 - strh r0, [r1, #0x32] - pop {r4, pc} - .align 2, 0 -_0805FBBC: .4byte gMenu -_0805FBC0: .4byte gScreen - - thumb_func_start sub_0805FBC4 -sub_0805FBC4: @ 0x0805FBC4 - push {lr} - movs r0, #0 - bl InitScreen - pop {pc} - .align 2, 0 - - thumb_func_start sub_0805FBD0 -sub_0805FBD0: @ 0x0805FBD0 - push {lr} - ldr r2, _0805FBE4 @ =gUnk_08109AC8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0805FBE4: .4byte gUnk_08109AC8 - - thumb_func_start sub_0805FBE8 -sub_0805FBE8: @ 0x0805FBE8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _0805FC68 @ =gPlayerEntity - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - ldrb r0, [r5, #0xc] - adds r0, #1 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r5, #0x18] - adds r4, #0x3c - ldrb r0, [r4] - adds r0, #1 - adds r1, r5, #0 - adds r1, #0x3c - strb r0, [r1] - ldr r0, _0805FC6C @ =gUnk_08109AD0 - str r0, [r5, #0x48] - movs r0, #0xe0 - lsls r0, r0, #2 - strh r0, [r5, #0x24] - ldrb r1, [r5, #0x14] - movs r0, #0x7f - ands r0, r1 - strb r0, [r5, #0x14] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #2 - bne _0805FC36 - movs r0, #1 - strb r0, [r5, #0xb] -_0805FC36: - ldrb r1, [r5, #0x14] - lsls r0, r1, #2 - strb r0, [r5, #0x15] - movs r0, #0x3c - str r0, [r5, #0x6c] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x19 - adds r1, #0xc - adds r0, r5, #0 - bl InitializeAnimation - adds r0, r5, #0 - bl sub_0801766C - adds r0, r5, #0 - bl sub_0806F69C - adds r0, r5, #0 - bl sub_0805FC74 - ldr r0, _0805FC70 @ =0x0000013F - bl PlaySFX - pop {r4, r5, pc} - .align 2, 0 -_0805FC68: .4byte gPlayerEntity -_0805FC6C: .4byte gUnk_08109AD0 -_0805FC70: .4byte 0x0000013F - - thumb_func_start sub_0805FC74 -sub_0805FC74: @ 0x0805FC74 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x6c] - subs r0, #1 - str r0, [r4, #0x6c] - movs r1, #1 - rsbs r1, r1, #0 - cmp r0, r1 - beq _0805FD1C - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806F69C - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _0805FCA4 - adds r0, r4, #0 - bl sub_0800451C -_0805FCA4: - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _0805FD10 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r5, #0x32 - ldrsh r1, [r4, r5] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - ldr r1, _0805FD14 @ =gPlayerEntity - adds r1, #0x38 - ldrb r1, [r1] - movs r2, #0x80 - bl sub_080002F0 - cmp r0, #0 - bne _0805FCF6 - ldr r1, _0805FD18 @ =gUnk_08003E44 - movs r0, #0x2e - ldrsh r2, [r4, r0] - movs r5, #0x32 - ldrsh r3, [r4, r5] - adds r0, r4, #0 - bl sub_080040D8 - cmp r0, #0 - beq _0805FCF6 - adds r0, r4, #0 - movs r1, #0x19 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_0805FCF6: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0 - beq _0805FD20 - adds r0, r4, #0 - movs r1, #0x19 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity - b _0805FD20 - .align 2, 0 -_0805FD10: .4byte gRoomControls -_0805FD14: .4byte gPlayerEntity -_0805FD18: .4byte gUnk_08003E44 -_0805FD1C: - bl DeleteThisEntity -_0805FD20: - pop {r4, r5, pc} - .align 2, 0 diff --git a/asm/code_0806FA6C.s b/asm/code_0806FA6C.s index 44762471..b9b439c0 100644 --- a/asm/code_0806FA6C.s +++ b/asm/code_0806FA6C.s @@ -802,7 +802,7 @@ sub_0807007C: @ 0x0807007C beq _080700C4 ldrh r0, [r2, #2] lsls r0, r0, #4 - ldr r1, _080700C0 @ =gUnk_080029B4 + ldr r1, _080700C0 @ =gSpritePtrs adds r3, r0, r1 ldr r1, [r3, #4] cmp r1, #0 @@ -820,7 +820,7 @@ sub_0807007C: @ 0x0807007C movs r0, #1 b _080700C6 .align 2, 0 -_080700C0: .4byte gUnk_080029B4 +_080700C0: .4byte gSpritePtrs _080700C4: movs r0, #0 _080700C6: diff --git a/asm/code_08078778.s b/asm/code_08078778.s index 54e812c4..afea07e6 100644 --- a/asm/code_08078778.s +++ b/asm/code_08078778.s @@ -813,7 +813,7 @@ sub_08078E84: @ 0x08078E84 adds r1, #1 strb r0, [r1] _08078EAC: - ldr r0, _08078ED4 @ =gUnk_080029B4 + ldr r0, _08078ED4 @ =gSpritePtrs ldrh r2, [r4, #0x12] lsls r2, r2, #4 adds r0, #4 @@ -832,7 +832,7 @@ _08078EAC: b _08078EE2 .align 2, 0 _08078ED0: .4byte gPlayerEntity -_08078ED4: .4byte gUnk_080029B4 +_08078ED4: .4byte gSpritePtrs _08078ED8: adds r0, r4, #0 movs r1, #3 diff --git a/asm/code_080A3480.s b/asm/code_080A3480.s index 010a22cc..825a6551 100644 --- a/asm/code_080A3480.s +++ b/asm/code_080A3480.s @@ -351,7 +351,7 @@ sub_080A36F8: @ 0x080A36F8 bl LoadPaletteGroup ldrb r0, [r4, #1] bl LoadGfxGroup - ldr r0, _080A3760 @ =gUnk_02021F30 + ldr r0, _080A3760 @ =gBG1Buffer movs r1, #0x80 lsls r1, r1, #4 bl _DmaZero @@ -383,7 +383,7 @@ _080A3752: _080A3754: .4byte gFadeControl _080A3758: .4byte gMenu _080A375C: .4byte gUnk_08127CEC -_080A3760: .4byte gUnk_02021F30 +_080A3760: .4byte gBG1Buffer _080A3764: .4byte gScreen thumb_func_start sub_080A3768 @@ -407,7 +407,7 @@ _080A3780: beq _080A3812 b _080A384C _080A378A: - ldr r0, _080A37B8 @ =gUnk_02021F30 + ldr r0, _080A37B8 @ =gBG1Buffer movs r1, #0x80 lsls r1, r1, #4 bl _DmaZero @@ -429,7 +429,7 @@ _080A378A: strb r2, [r4, #0x18] b _080A385E .align 2, 0 -_080A37B8: .4byte gUnk_02021F30 +_080A37B8: .4byte gBG1Buffer _080A37BC: .4byte gUnk_081272E0 _080A37C0: .4byte gScreen _080A37C4: @@ -576,7 +576,7 @@ sub_080A38D0: @ 0x080A38D0 ldrb r0, [r0] cmp r0, #0 bne _080A3914 - ldr r0, _080A3920 @ =gUnk_02021F30 + ldr r0, _080A3920 @ =gBG1Buffer movs r6, #0x80 lsls r6, r6, #4 adds r1, r6, #0 @@ -606,7 +606,7 @@ _080A3914: pop {r4, r5, r6, pc} .align 2, 0 _080A391C: .4byte gFadeControl -_080A3920: .4byte gUnk_02021F30 +_080A3920: .4byte gBG1Buffer _080A3924: .4byte gScreen _080A3928: .4byte gUnk_020344B0 _080A392C: .4byte gMenu diff --git a/asm/code_080A3BD0.s b/asm/code_080A3BD0.s index 0c8593af..10cb10be 100644 --- a/asm/code_080A3BD0.s +++ b/asm/code_080A3BD0.s @@ -1266,11 +1266,11 @@ sub_080A4608: @ 0x080A4608 adds r1, r4, r2 ldrh r1, [r1] bl sub_0801D79C - ldr r0, _080A46A4 @ =gUnk_02034CB0 + ldr r0, _080A46A4 @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 bl _DmaZero - ldr r0, _080A46A8 @ =gUnk_02001A40 + ldr r0, _080A46A8 @ =gBG3Buffer movs r1, #0x80 lsls r1, r1, #5 bl _DmaZero @@ -1321,8 +1321,8 @@ _080A4694: pop {r4, pc} .align 2, 0 _080A46A0: .4byte gPaletteBuffer -_080A46A4: .4byte gUnk_02034CB0 -_080A46A8: .4byte gUnk_02001A40 +_080A46A4: .4byte gBG0Buffer +_080A46A8: .4byte gBG3Buffer _080A46AC: .4byte gScreen _080A46B0: .4byte 0x00007898 _080A46B4: .4byte gMenu @@ -2118,7 +2118,7 @@ sub_080A4CBC: @ 0x080A4CBC cmp r0, r6 beq _080A4CFE strb r6, [r1, #0x1a] - ldr r4, _080A4D10 @ =gUnk_02021F30 + ldr r4, _080A4D10 @ =gBG1Buffer movs r5, #0x80 lsls r5, r5, #4 adds r0, r4, #0 @@ -2151,7 +2151,7 @@ _080A4CFE: b _080A4D28 .align 2, 0 _080A4D0C: .4byte gMenu -_080A4D10: .4byte gUnk_02021F30 +_080A4D10: .4byte gBG1Buffer _080A4D14: .4byte 0x0600E000 _080A4D18: .4byte gUnk_08128190 _080A4D1C: .4byte gScreen @@ -2241,12 +2241,12 @@ sub_080A4DB8: @ 0x080A4DB8 push {r4, r5, lr} adds r5, r0, #0 bl sub_08056250 - ldr r0, _080A4E58 @ =gUnk_02034CB0 + ldr r0, _080A4E58 @ =gBG0Buffer movs r4, #0x80 lsls r4, r4, #4 adds r1, r4, #0 bl _DmaZero - ldr r0, _080A4E5C @ =gUnk_02021F30 + ldr r0, _080A4E5C @ =gBG1Buffer adds r1, r4, #0 bl _DmaZero ldr r0, _080A4E60 @ =gUnk_020344B0 @@ -2312,8 +2312,8 @@ _080A4E4A: _080A4E54: pop {r4, r5, pc} .align 2, 0 -_080A4E58: .4byte gUnk_02034CB0 -_080A4E5C: .4byte gUnk_02021F30 +_080A4E58: .4byte gBG0Buffer +_080A4E5C: .4byte gBG1Buffer _080A4E60: .4byte gUnk_020344B0 _080A4E64: .4byte gUnk_0200AF34 _080A4E68: .4byte gMenu @@ -2577,7 +2577,7 @@ _080A507C: .4byte gUnk_02034490 _080A5080: movs r0, #3 bl sub_080A4E90 - ldr r0, _080A5098 @ =gUnk_02034CB0 + ldr r0, _080A5098 @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 bl _DmaZero @@ -2587,7 +2587,7 @@ _080A5080: _080A5096: pop {r4, r5, pc} .align 2, 0 -_080A5098: .4byte gUnk_02034CB0 +_080A5098: .4byte gBG0Buffer _080A509C: .4byte gScreen thumb_func_start sub_080A50A0 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index 63bf2f0a..d527c237 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -2787,7 +2787,7 @@ sub_080A6B04: @ 0x080A6B04 adds r1, r4, #0 bl sub_0801D79C ldr r0, _080A6C04 @ =0x00005001 - ldr r1, _080A6C08 @ =gUnk_02001A40 + ldr r1, _080A6C08 @ =gBG3Buffer movs r2, #0x80 lsls r2, r2, #5 bl _DmaFill16 @@ -2857,7 +2857,7 @@ _080A6BF8: .4byte gUnk_080FE320 _080A6BFC: .4byte gMenu _080A6C00: .4byte 0x0000475F _080A6C04: .4byte 0x00005001 -_080A6C08: .4byte gUnk_02001A40 +_080A6C08: .4byte gBG3Buffer _080A6C0C: .4byte gPlayerState _080A6C10: .4byte gScreenTransition _080A6C14: .4byte 0x000001FB @@ -12666,7 +12666,7 @@ _080AB60A: b _080AB62E _080AB610: adds r0, r4, #0 - bl sub_080043B4 + bl CreateItemOnGround movs r0, #1 b _080AB630 _080AB61A: @@ -12676,7 +12676,7 @@ _080AB61A: b _080AB630 _080AB624: adds r0, r4, #0 - bl sub_080043AC + bl CreateChestSpawner movs r0, #1 b _080AB630 _080AB62E: diff --git a/asm/manager1.s b/asm/manager1.s index 74bf3c4e..a6bc4f1f 100644 --- a/asm/manager1.s +++ b/asm/manager1.s @@ -404,7 +404,7 @@ sub_08057450: @ 0x08057450 _08057474: asrs r0, r1, #6 lsls r0, r0, #9 - ldr r1, _0805750C @ =gUnk_02001A40 + ldr r1, _0805750C @ =gBG3Buffer adds r1, r0, r1 str r1, [r4, #0x34] ldr r0, [r3, #0x34] @@ -479,7 +479,7 @@ _08057502: .align 2, 0 _08057504: .4byte gScreen _08057508: .4byte gRoomControls -_0805750C: .4byte gUnk_02001A40 +_0805750C: .4byte gBG3Buffer _08057510: .4byte gScreenTransition _08057514: .4byte gUnk_08107C30 _08057518: .4byte gUnk_085B4180 diff --git a/asm/manager10.s b/asm/manager10.s index addec2c9..eadc82ba 100644 --- a/asm/manager10.s +++ b/asm/manager10.s @@ -333,7 +333,7 @@ _080597F4: bl LoadGfxGroup b _08059838 _08059800: - ldr r4, _0805981C @ =gUnk_02001A40 + ldr r4, _0805981C @ =gBG3Buffer movs r5, #0x80 lsls r5, r5, #4 adds r0, r4, #0 @@ -345,7 +345,7 @@ _08059800: bl LoadAssetAsync b _08059838 .align 2, 0 -_0805981C: .4byte gUnk_02001A40 +_0805981C: .4byte gBG3Buffer _08059820: .4byte 0x0600E800 _08059824: ldr r0, _0805983C @ =gUnk_0200B650 diff --git a/asm/non_matching/manager15/sub_0805A9CC.inc b/asm/non_matching/manager15/sub_0805A9CC.inc index a5953bf2..f1ce8e4d 100644 --- a/asm/non_matching/manager15/sub_0805A9CC.inc +++ b/asm/non_matching/manager15/sub_0805A9CC.inc @@ -54,7 +54,7 @@ _0805AA04: _0805AA2C: asr r0, r0, #6 lsl r0, r0, #9 - ldr r1, _0805AA54 @ =gUnk_02001A40 + ldr r1, _0805AA54 @ =gBG3Buffer add r1, r0, r1 str r1, [r3, #0x34] add r2, r3, #0 @@ -72,4 +72,4 @@ _0805AA4A: .align 2, 0 _0805AA4C: .4byte gScreen _0805AA50: .4byte gRoomControls -_0805AA54: .4byte gUnk_02001A40 +_0805AA54: .4byte gBG3Buffer diff --git a/asm/sub_08052418.s b/asm/sub_08052418.s index 01374de8..3de7ca93 100644 --- a/asm/sub_08052418.s +++ b/asm/sub_08052418.s @@ -11,7 +11,7 @@ sub_08052418: @ 0x08052418 sub sp, #0x18 adds r6, r0, #0 adds r4, r1, #0 - ldr r0, _08052494 @ =gUnk_02021F30 + ldr r0, _08052494 @ =gBG1Buffer movs r1, #0x80 lsls r1, r1, #4 bl _DmaZero @@ -66,7 +66,7 @@ sub_08052418: @ 0x08052418 add sp, #0x18 pop {r4, r5, r6, pc} .align 2, 0 -_08052494: .4byte gUnk_02021F30 +_08052494: .4byte gBG1Buffer _08052498: .4byte gUnk_020227E8 _0805249C: .4byte gUnk_080FCA8C _080524A0: .4byte gUnk_080FCAA4 diff --git a/data/data_080029B4.s b/data/data_080029B4.s index 08809ee3..d071f13a 100644 --- a/data/data_080029B4.s +++ b/data/data_080029B4.s @@ -4,7 +4,7 @@ .section .rodata .align 2 -gUnk_080029B4:: @ 080029B4 +gSpritePtrs:: @ 080029B4 .incbin "baserom.gba", 0x0029B4, 0x000004C gUnk_08002A00:: @ 08002A00 diff --git a/data/playerItemFunctions.s b/data/playerItemFunctions.s index 6d135e35..5626573b 100644 --- a/data/playerItemFunctions.s +++ b/data/playerItemFunctions.s @@ -26,7 +26,7 @@ /*0x11*/ .4byte Item11 /*0x12*/ .4byte sub_080700E8 /*0x13*/ .4byte sub_080ACF14 -/*0x14*/ .4byte sub_0805FBD0 +/*0x14*/ .4byte Item14 /*0x15*/ .4byte sub_080A306C /*0x16*/ .4byte SwordBeam /*0x17*/ .4byte NulledItem @@ -53,7 +53,7 @@ .4byte Item11 .4byte sub_080700E8 .4byte sub_080ACF14 -.4byte sub_0805FBD0 +.4byte Item14 .4byte sub_080A306C .4byte SwordBeam .4byte NulledItem diff --git a/include/entity.h b/include/entity.h index a90ca7c9..7972bd96 100644 --- a/include/entity.h +++ b/include/entity.h @@ -50,10 +50,10 @@ typedef struct Entity { /* */ } PACKED b; /* */ } PACKED spriteSettings; /*0x19*/ struct { - /* */ u8 b0 : 2; // 1-2 - /* */ u8 alphaBlend : 2; // 4-8 - /* */ u8 b2 : 2; //0x10 - /* */ u8 b3 : 2; //0x40 + /* */ u32 b0 : 2; // 1-2 + /* */ u32 alphaBlend : 2; // 4-8 + /* */ u32 b2 : 2; //0x10 + /* */ u32 b3 : 2; //0x40 /* */ } PACKED spriteRendering; /*0x1a*/ union { /* */ u8 raw; @@ -63,9 +63,9 @@ typedef struct Entity { /* */ } PACKED b; /* */} PACKED palette; /*0x1b*/ struct { - /* */ u8 b0 : 4; - /* */ u8 flipX : 2; //0x10 - /* */ u8 flipY : 2; //0x40 + /* */ u32 b0 : 1; + /* */ u32 b1 : 5; //0x10 + /* */ u32 flipY : 2; //0x40 /* */ } PACKED spriteOrientation; /*0x1c*/ u8 field_0x1c; /*0x1d*/ u8 field_0x1d; diff --git a/include/functions.h b/include/functions.h index 1a7a87d7..9f2a2584 100644 --- a/include/functions.h +++ b/include/functions.h @@ -270,4 +270,15 @@ extern u32 sub_0800442E(Entity*); extern void sub_08081404(Entity*, u32); extern void sub_0807B7D8(u32, u32, u32); extern void sub_08052D74(void*, void*, void*); +extern void sub_0800451C(Entity*); +extern u32 sub_080002F0(u32, u32, u32); +extern u32 sub_080040D8(Entity*, u8*, s32, s32); +extern void sub_08053320(); +extern void sub_0801D79C(u32, u32); +extern u32 sub_0805F8F8(u32); +extern void sub_08002724(void*, u8*); +extern void sub_080026C4(u8*, u8*, u8*, u32); +extern void sub_080026F2(u8*, void*, u8*, u32); +extern u32 sub_0805F7A0(u32); +extern u32* sub_0805F25C(u32); #endif diff --git a/include/global.h b/include/global.h index ad4b9daa..3b2e0446 100644 --- a/include/global.h +++ b/include/global.h @@ -47,6 +47,8 @@ #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) >= (b) ? (a) : (b)) +#define static_assert(cond) extern char assertion[(cond) ? 1 : -1] + typedef union { s32 WORD; struct { @@ -74,4 +76,6 @@ union SplitHWord { } PACKED HALF; } PACKED; + + #endif // GUARD_GLOBAL_H diff --git a/include/main.h b/include/main.h index be532570..7fa87211 100644 --- a/include/main.h +++ b/include/main.h @@ -50,6 +50,7 @@ typedef struct { /*0x0A*/ u16 fadeInTime; /*0x0C*/ u8 fillerC[0x3A8]; } UI; +static_assert(sizeof(UI) == 0x3b4); extern Main gUnk_03001000; extern UI gUnk_02032EC0; diff --git a/include/menu.h b/include/menu.h index 765c0b8b..1203978e 100644 --- a/include/menu.h +++ b/include/menu.h @@ -29,15 +29,17 @@ typedef struct { u16 transitionTimer; u16 field_0xa; u8* field_0xc; - u8 unk10[2]; + u8 focusCoords[2]; u8 field_0x12; u8 unk13; - u8 filler14[0x2]; + u8 unk14; + u8 unk15; u8 unk16; u8 filler17[0x13]; u8 unk2a; int field_0x2c; } Menu; +static_assert(sizeof(Menu) == 0x30); extern Menu gMenu; diff --git a/include/player.h b/include/player.h index 0d604dbd..898f23cb 100644 --- a/include/player.h +++ b/include/player.h @@ -62,7 +62,10 @@ typedef struct { /*0x8b*/ u8 field_0x8b; /*0x8c*/ u32 field_0x8c; /*0x90*/ union SplitWord field_0x90; - /*0x94*/ u32 field_0x94[5]; + /*0x94*/ u32 field_0x94; + /*0x98*/ u16 field_0x98; + /*0x9a*/ u16 field_0x9a; + /*0x9c*/ u32 field_0x9c[3]; /*0xa8*/ u8 field_0xa8; /*0xa9*/ u8 field_0xa9; /*0xaa*/ u8 field_0xaa; diff --git a/include/structures.h b/include/structures.h index b6d348a9..bced40db 100644 --- a/include/structures.h +++ b/include/structures.h @@ -174,4 +174,21 @@ typedef struct { } data; } Dialog; +typedef struct { + u8 filler0[0x29C]; + u16 unk29C; + u8 filler29E[0x562]; +} BGBuffer; +extern BGBuffer gBG0Buffer; +extern BGBuffer gBG1Buffer; +static_assert(sizeof(BGBuffer) == 0x800); + +/* +typedef struct { + u16 filler0[0x800]; +} BG3Buffer; +extern BG3Buffer gBG3Buffer; +static_assert(sizeof(BG3Buffer) == 0x1000); +*/ + #endif diff --git a/linker.ld b/linker.ld index 70dca2da..2aba9e0b 100644 --- a/linker.ld +++ b/linker.ld @@ -26,7 +26,7 @@ SECTIONS { . = 0x00000D00; gUnk_02000D00 = .; . = 0x00001A00; gUnk_02001A00 = .; . = 0x00001A3C; gUnk_02001A3C = .; - . = 0x00001A40; gUnk_02001A40 = .; + . = 0x00001A40; gBG3Buffer = .; . = 0x00001B40; gUnk_02001B40 = .; . = 0x00002A40; gUnk_02002A40 = .; . = 0x00002AA0; gUnk_02002AA0 = .; @@ -536,6 +536,9 @@ SECTIONS { src/entity.o(.text); src/code_0805EC04.o(.text); asm/code_0805EC04.o(.text); + src/code_0805F9A0.o(.text); + src/screenDebug.o(.text); + src/item14.o(.text); /* npcs */ src/npc/gentari.o(.text); src/npc/festari.o(.text); diff --git a/src/chooseFile.c b/src/chooseFile.c index 5a36de17..682606af 100644 --- a/src/chooseFile.c +++ b/src/chooseFile.c @@ -38,14 +38,6 @@ typedef struct { extern struct_020227E8 gUnk_020227E8; -typedef struct { - u8 filler0[0x29C]; - u16 unk29C; - u8 filler29E[0x562]; -} struct_02034CB0; - -extern struct_02034CB0 gUnk_02034CB0; -extern struct_02034CB0 gUnk_02021F30; extern SaveFile gSaveFiles[]; extern u32 gUsedPalettes; extern u8 gUnk_02000D00[]; @@ -96,7 +88,7 @@ void sub_08050318(u32 arg0, u32 arg1) { void sub_08050384(void) { sub_0801C4A0(0, 0); - _DmaZero(&gUnk_02034CB0, sizeof(gUnk_02034CB0)); + _DmaZero(&gBG0Buffer, sizeof(gBG0Buffer)); gScreen.bg.bg3Control = 1; } @@ -108,8 +100,8 @@ void sub_080503A8(u32 gfxGroup) { void sub_080503BC(u8 state) { gUnk_02032EC0.state = state; - _DmaZero(&gUnk_02034CB0, sizeof(gUnk_02034CB0)); - _DmaZero(&gUnk_02021F30, sizeof(gUnk_02021F30)); + _DmaZero(&gBG0Buffer, sizeof(gBG0Buffer)); + _DmaZero(&gBG1Buffer, sizeof(gBG1Buffer)); } void sub_080503E4(u32 saveFileId) { @@ -483,9 +475,9 @@ void sub_08050B3C(u16*); void sub_08050AFC(u32 saveFileId) { sub_0805041C(saveFileId); - _DmaZero(&gUnk_02021F30, sizeof(gUnk_02021F30)); + _DmaZero(&gBG1Buffer, sizeof(gBG1Buffer)); if (gUnk_02019EE0.unk8[saveFileId] == 1) { - sub_08050B3C(&gUnk_02021F30.unk29C); + sub_08050B3C(&gBG1Buffer.unk29C); } gScreen.bg.bg2yOffset = 1; } diff --git a/src/code_0805EC04.c b/src/code_0805EC04.c index c722c57f..3033de51 100644 --- a/src/code_0805EC04.c +++ b/src/code_0805EC04.c @@ -1,18 +1,107 @@ #include "entity.h" +#include "player.h" -extern u8 gUnk_03000000; +typedef struct { + u16 unk0; + u16 unk2; + u16 unk4; + u8 unk6; + u8 unk7; +} VStruct; + +typedef struct { + u8 filler[0x420]; + VStruct unk[0x100]; +} UStruct; + +extern UStruct gUnk_03000000; bool32 sub_0805EC04(Entity* this) { u32 i = 1; - u8* l = &gUnk_03000000; + UStruct* temp = &gUnk_03000000; u32 j = 1; for (; i < 0x20; i++) { - if (l[(i * 8) + 0x426] == 0) { - l[(i * 8) + 0x426] = j; - this->spriteSet.b1 = i; - this->spriteSet.b0 |= j; + if (temp->unk[i].unk6 == 0) { + temp->unk[i].unk6 = j; + this->spriteOrientation.b1 = i; + this->spriteRendering.b0 |= j; return TRUE; } } return FALSE; } + +void sub_0805EC60(Entity* this) { + u8 temp; + UStruct* temp2; + + if (this->spriteRendering.b0 != 0) { + this->spriteRendering.b0 = 0; + temp = this->spriteOrientation.b1; + this->spriteOrientation.b1 = 0; + temp2 = &gUnk_03000000; + temp2->unk[temp].unk6 = 0; + } +} + +NAKED +bool32 sub_0805EC9C(Entity* ent, u32 param_2, u32 param_3, u32 param_4) { + asm_unified("\ + push {r4, r5, r6, r7, lr} \n\ + adds r4, r0, #0 \n\ + adds r5, r1, #0 \n\ + adds r6, r2, #0 \n\ + adds r7, r3, #0 \n\ + ldrb r0, [r4, #0x1b] \n\ + lsls r0, r0, #0x1a \n\ + lsrs r0, r0, #0x1b \n\ + cmp r0, #0 \n\ + bne _0805ECBE \n\ + adds r0, r4, #0 \n\ + bl sub_0805EC04 \n\ + cmp r0, #0 \n\ + bne _0805ECBE \n\ + movs r0, #0 \n\ + b _0805ECE0 \n\ +_0805ECBE: \n\ + ldr r1, _0805ECE4 @ =gUnk_03000000 \n\ + ldr r0, _0805ECE8 @ =0x00000427 \n\ + adds r2, r1, r0 \n\ + movs r0, #1 \n\ + strb r0, [r2] \n\ + ldrb r0, [r4, #0x1b] \n\ + lsls r0, r0, #0x1a \n\ + lsrs r0, r0, #0x1b \n\ + lsls r0, r0, #3 \n\ + movs r2, #0x84 \n\ + lsls r2, r2, #3 \n\ + adds r1, r1, r2 \n\ + adds r0, r0, r1 \n\ + strh r5, [r0] \n\ + strh r6, [r0, #2] \n\ + strh r7, [r0, #4] \n\ + movs r0, #1 \n\ +_0805ECE0: \n\ + pop {r4, r5, r6, r7, pc} \n\ + .align 2, 0 \n\ +_0805ECE4: .4byte gUnk_03000000 \n\ +_0805ECE8: .4byte 0x00000427 \n\ + "); +} + +void sub_0805ECEC(int param_1, u32 param_2, u32 param_3, u32 param_4) { + u16* temp; + + gUnk_03000000.unk[0].unk7 = 1; + + temp = &gUnk_03000000.unk[param_1].unk0; + temp[0] = param_2; + temp[1] = param_3; + temp[2] = param_4; +} + +void sub_0805ED14(u32 param_1) { + gPlayerState.field_0x9c[0] = param_1; + gPlayerState.field_0x98 = 0; + gPlayerState.field_0x9a = 0; +} \ No newline at end of file diff --git a/src/code_0805F9A0.c b/src/code_0805F9A0.c new file mode 100644 index 00000000..1514df6a --- /dev/null +++ b/src/code_0805F9A0.c @@ -0,0 +1,169 @@ +#include "global.h" +#include "functions.h" +#include "structures.h" + +extern u16 gUnk_081092D4; +extern u8 gUnk_02036AD8; +extern u8 gUnk_081094CE; +extern u8 gUnk_02036A58; +extern void* gUnk_081092AC[]; + +typedef struct { + u8 filler0[12][16]; +} VStruct; + +extern VStruct gUnk_0810942E[]; +extern u32 gUnk_0810926C[]; + +typedef struct { + u8 unk0; + u8 unk1; +} UStruct; + +typedef struct { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u16 unk4; + u16 unk6; + void* unk8; +} WStruct; + +void sub_0805F820(WStruct* r0, u32* r1); + +u32 sub_0805F7DC(u32 r0, WStruct* r1) { + u32 temp; + u32 temp2; + u32* offset; + + if (r1->unk4 <= r1->unk6) + return 0; + + offset = sub_0805F25C(r0); + temp = r1->unk6; + if ((r0 >> 8) > 4) { + sub_0805F820(r1, offset); + offset += 0x10; + } + + sub_0805F820(r1, offset); + if (r1->unk6 > r1->unk4) { + r1->unk6 = r1->unk4; + } + return r1->unk6 - temp; +} + +void sub_0805F820(WStruct* r0, u32* r1) { + u32 bVar1; + u32 bVar2; + s32 uVar3; + s32 uVar4; + void* uVar5; + u32 uVar6; + u32 uVar7; + u8* puVar8; + u8* temp; + void* temp2; + VStruct* temp3; + + if (r0->unk4 - r0->unk6 > 0) { + sub_08002724(r1, &gUnk_02036A58); + if (r0->unk1 == 0) { + u32 tmp = sub_0805F7A0(*r1); + uVar6 = tmp & 0xf; + uVar3 = tmp >> 8; + } else { + uVar6 = 0; + uVar3 = 8; + } + + uVar4 = r0->unk4 - r0->unk6; + if (uVar4 > 8) { + uVar4 = 8; + } + if (uVar4 < uVar3) { + uVar3 = uVar4; + } + + puVar8 = &gUnk_02036A58 + uVar6; + temp2 = r0->unk8; + temp = gUnk_0810942E[r0->unk3].filler0[r0->unk2 * 2]; + uVar7 = r0->unk6; + r0->unk6 += uVar3; + + if (r0->unk0 / 16 != 1) { + while (uVar3-- > 0) { + sub_080026C4(puVar8, temp2, temp, uVar7); + puVar8++; + uVar7++; + } + } else { + while (uVar3-- > 0) { + sub_080026F2(puVar8, temp2, temp, uVar7); + puVar8++; + uVar7++; + } + } + } +} + +void sub_0805F8E4(u32 r0, WStruct* r1) { + u32 old = r1->unk1; + r1->unk1 = 1; + sub_0805F7DC(r0, r1); + r1->unk1 = old; +} + +u32 sub_0805F8F8(u32 idx) { + u8* temp = &gUnk_0810942E[idx].filler0[10][10]; + return gUnk_0810926C[*temp]; +} + +void sub_0805F918(u32 idx, u32 idx2, void* dest) { + u32 i; + void* puVar1; + u8* puVar2; + u32 j; + u32 idx3; + u8* temp; + u8* temp2; + + _DmaFill32(sub_0805F8F8(idx2), &gUnk_02036AD8, 0xe0); + puVar1 = gUnk_081092AC[idx]; + + temp = &gUnk_081094CE + idx2 * 0xc0; + idx3 = 0; + for (i = 0; i < 3; i++) { + puVar2 = &gUnk_02036A58; + sub_08002724(puVar1, &gUnk_02036A58); + puVar1 += 0x40; + + for (j = 0; j < 8; j++) { + sub_080026C4(puVar2, &gUnk_02036AD8, temp, idx3); + puVar2++; + idx3++; + } + } + LoadAssetAsync((const void*)&gUnk_02036AD8, (u32)dest, 0xe0); +} + +u32 sub_0805F9A0(u32 r0) { + + if (gUnk_02000000->gameLanguage == 0) { + u16* val = &gUnk_081092D4; + u32 i = 0; + + do { + if (*val == r0) { + return i + 0x800; + } + i++; + val++; + } while (*val != 0); + } else if (r0 == 0x31a) { + r0 = 1; + r0 &= 0xff; + } + return (r0 & 0xff) + 0x800; +} diff --git a/src/enemy/waterDrop.c b/src/enemy/waterDrop.c index b95535df..3a1e347b 100644 --- a/src/enemy/waterDrop.c +++ b/src/enemy/waterDrop.c @@ -6,7 +6,7 @@ void sub_0802A39C(Entity*); void sub_0802A334(Entity*); -extern u16 gUnk_02001A40[]; +extern u16 gBG3Buffer[]; extern void (*const gUnk_080CD030[])(Entity*); extern const u8 gUnk_080CD03C[]; @@ -63,7 +63,7 @@ void sub_0802A2FC(Entity* this) { void sub_0802A334(Entity* this) { u32 x = (this->x.HALF.HI - gRoomControls.roomScrollX + gScreen.bg.bg1yOffset) >> 3; u32 y = (this->y.HALF.HI - gRoomControls.roomScrollY + gScreen.bg.bg2xOffset) >> 3; - if (gUnk_02001A40[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) { + if (gBG3Buffer[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) { this->collisionLayer = 2; } else { this->collisionLayer = 1; @@ -74,7 +74,7 @@ void sub_0802A334(Entity* this) { void sub_0802A39C(Entity* this) { u32 x = (gPlayerEntity.x.HALF.HI - gRoomControls.roomScrollX + gScreen.bg.bg1yOffset) >> 3; u32 y = (gPlayerEntity.y.HALF.HI - gRoomControls.roomScrollY + gScreen.bg.bg2xOffset - 10) >> 3; - if (gUnk_02001A40[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) { + if (gBG3Buffer[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) { this->flags &= ~0x80; } else { this->flags |= 0x80; diff --git a/src/item14.c b/src/item14.c new file mode 100644 index 00000000..d1e6086d --- /dev/null +++ b/src/item14.c @@ -0,0 +1,58 @@ +#include "entity.h" +#include "functions.h" +#include "player.h" +#include "room.h" + +extern void (*const gUnk_08109AC8[])(Entity*); +extern BoundingBox gUnk_08109AD0; +extern u8 gUnk_08003E44; + +void sub_0805FC74(Entity*); + +void Item14(Entity *this) { + gUnk_08109AC8[this->action](this); +} + +void sub_0805FBE8(Entity* this) { + CopyPosition(&gPlayerEntity,this); + this->action++; + this->spriteSettings.b.draw = TRUE; + this->field_0x3c = gPlayerEntity.field_0x3c + 1; + this->boundingBox = &gUnk_08109AD0; + this->nonPlanarMovement = 0x380; + this->animationState = this->animationState & 0x7f; + if (this->collisionLayer == 2) { + this->entityType.parameter = 1; + } + this->direction = this->animationState << 2; + *(u32 *)&this->field_0x6c = 0x3c; + InitializeAnimation(this, (this->animationState >> 1) + 0xc); + sub_0801766C(this); + sub_0806F69C(this); + sub_0805FC74(this); + PlaySFX(0x13f); +} + +void sub_0805FC74(Entity* this) { + int iVar1; + + if (--*(int *)&this->field_0x6c != -1) { + GetNextFrame(this); + sub_0806F69C(this); + ++this->actionDelay; + if (this->entityType.parameter == 0) { + sub_0800451C(this); + } + if (!sub_080002F0(COORD_TO_TILE(this),gPlayerEntity.collisionLayer,0x80) && + sub_080040D8(this,&gUnk_08003E44, this->x.HALF.HI, this->y.HALF.HI)) { + CreateFx(this, 0x19, 0); + DeleteThisEntity(); + } + if (this->bitfield != 0) { + CreateFx(this, 0x19, 0); + DeleteThisEntity(); + } + } else { + DeleteThisEntity(); + } +} diff --git a/src/manager/manager15.c b/src/manager/manager15.c index 51a675f4..23abd03e 100644 --- a/src/manager/manager15.c +++ b/src/manager/manager15.c @@ -427,7 +427,7 @@ void sub_0805A94C(Manager15* this) { gScreen.controls.window1VerticalDimensions = (tmp1 << 8 | tmp2); } -extern u8 gUnk_02001A40[]; +extern u8 gBG3Buffer[]; #ifdef NON_MATCHING void sub_0805A9CC(Manager15* this) { @@ -449,7 +449,7 @@ void sub_0805A9CC(Manager15* this) { gScreen.affine.bg3yOffset = tmp1 & 0x3F; if (tmp1 < 0) tmp1 += 0x3F; - tmp3 = (&gUnk_02001A40[(tmp1 >> 6 << 9)]); + tmp3 = (&gBG3Buffer[(tmp1 >> 6 << 9)]); gScreen.affine.unk5 = (u32)tmp3; gScreen.controls.window1VerticalDimensions = 0xa0; if (this->unk_28 == tmp3) @@ -499,7 +499,7 @@ void sub_0805AAF0(u32 unk0) { gScreen.controls.layerFXControl = 0x3E48; gScreen.controls.alphaBlend = 0x1008; gScreen.affine.bg3Control = 0x1E04; - gScreen.affine.unk5 = &gUnk_02001A40; + gScreen.affine.unk5 = &gBG3Buffer; gScreen.affine.bg3xOffset = 0; gScreen.affine.bg3yOffset = 0; gScreen.affine.unk4 = 1; diff --git a/src/manager/manager8.c b/src/manager/manager8.c index 8fd1d83b..fe0d4335 100644 --- a/src/manager/manager8.c +++ b/src/manager/manager8.c @@ -41,7 +41,7 @@ void sub_08057EFC(Manager8* this) { void sub_08058004(u32, void*, void*); -extern u8 gUnk_02001A40[]; +extern u8 gBG3Buffer[]; extern u8 gUnk_02006F00[]; void sub_08057F20(Manager8* this) { @@ -50,8 +50,8 @@ void sub_08057F20(Manager8* this) { tmp = tmp + (tmp >> 3) + ((0x400 - gRoomControls.width) / 2); gScreen.affine.bg3xOffset = tmp & 0xF; gScreen.affine.bg3yOffset = 0x30 - ((0x30 - (gRoomControls.roomScrollY - gRoomControls.roomOriginY)) >> 2); - gScreen.affine.unk5 = gUnk_02001A40; - sub_08058004(tmp, gUnk_02006F00, gUnk_02001A40); + gScreen.affine.unk5 = gBG3Buffer; + sub_08058004(tmp, gUnk_02006F00, gBG3Buffer); tmp = ((tmp >> 4) << 1); if (this->unk_38 != tmp) { this->unk_38 = tmp; @@ -61,8 +61,8 @@ void sub_08057F20(Manager8* this) { tmp = tmp + (tmp >> 2) + ((0x400 - gRoomControls.width) / 2); gScreen.bg.bg1yOffset = tmp & 0xF; gScreen.bg.bg2xOffset = 0x30 - ((0x30 - (gRoomControls.roomScrollY - gRoomControls.roomOriginY)) >> 1); - gScreen.bg.unk_14 = gUnk_02001A40 + 0x800; - sub_08058004(tmp, gUnk_02006F00 + 0x2000, gUnk_02001A40 + 0x800); + gScreen.bg.unk_14 = gBG3Buffer + 0x800; + sub_08058004(tmp, gUnk_02006F00 + 0x2000, gBG3Buffer + 0x800); tmp = ((tmp >> 4) << 1); if (this->unk_3c != tmp) { this->unk_3c = tmp; @@ -117,19 +117,19 @@ void sub_080580B0(u32 unk1) { sub_08058034(); tmp = gRoomControls.roomScrollX - gRoomControls.roomOriginX; // r7 tmp = tmp + (tmp >> 3) + (0x400 - gRoomControls.width) / 2; - sub_08058004(tmp, gUnk_02006F00, gUnk_02001A40); + sub_08058004(tmp, gUnk_02006F00, gBG3Buffer); gScreen.affine.bg3xOffset = tmp & 0xF; gScreen.affine.bg3yOffset = 0x30 - ((0x30 - (gRoomControls.roomScrollY - gRoomControls.roomOriginY)) >> 1); //? gScreen.affine.bg3Control = 0x1D09; - gScreen.affine.unk5 = gUnk_02001A40; + gScreen.affine.unk5 = gBG3Buffer; gScreen.affine.unk4 = 1; tmp = gRoomControls.roomScrollX - gRoomControls.roomOriginX; // r7 tmp = tmp + (tmp >> 2) + (0x400 - gRoomControls.width) / 2; - sub_08058004(tmp, gUnk_02006F00 + 0x2000, gUnk_02001A40 + 0x800); + sub_08058004(tmp, gUnk_02006F00 + 0x2000, gBG3Buffer + 0x800); gScreen.bg.bg1yOffset = tmp & 0xF; gScreen.bg.bg2xOffset = 0x30 - ((0x30 - (gRoomControls.roomScrollY - gRoomControls.roomOriginY)) >> 1); //? gScreen.bg.bg1xOffset = 0x1E09; - gScreen.bg.unk_14 = gUnk_02001A40 + 0x800; + gScreen.bg.unk_14 = gBG3Buffer + 0x800; gScreen.bg.bg2yOffset = 1; gScreen.controls.layerFXControl = 0x3C48; gScreen.controls.alphaBlend = 0x609; diff --git a/src/manager/manager9.c b/src/manager/manager9.c index d57942c7..c8fc2813 100644 --- a/src/manager/manager9.c +++ b/src/manager/manager9.c @@ -18,7 +18,7 @@ void sub_080582F8(u8*, u8*); void sub_08058324(); extern u32 gUnk_02006F00[]; -extern u8 gUnk_02001A40[]; +extern u8 gBG3Buffer[]; const u16 gUnk_081081EC[] = { 0x30, 0x30, 0x30, 0x38 }; @@ -40,7 +40,7 @@ void sub_08058210(Manager9* this) { if (this->unk_3c == tmp) return; this->unk_3c = tmp; - sub_080582A0(tmp, gUnk_02006F00, gUnk_02001A40); + sub_080582A0(tmp, gUnk_02006F00, gBG3Buffer); gScreen.bg.bg2yOffset = 1; } @@ -91,9 +91,9 @@ void sub_08058324(u32 unk) { LoadPaletteGroup(unk + 0x86); LoadGfxGroup(unk + 0x36); sub_080582D0(); - sub_080582A0(sub_08058244(unk), gUnk_02006F00, gUnk_02001A40); + sub_080582A0(sub_08058244(unk), gUnk_02006F00, gBG3Buffer); gScreen.bg.bg1xOffset = 0x1D47; - gScreen.bg.unk_14 = gUnk_02001A40; + gScreen.bg.unk_14 = gBG3Buffer; gScreen.bg.bg2yOffset = 1; gScreen.lcd.displayControl |= 0x200; } diff --git a/src/object/object48.c b/src/object/object48.c index 5db2b96a..f340da1c 100644 --- a/src/object/object48.c +++ b/src/object/object48.c @@ -223,7 +223,7 @@ void sub_0808EABC(Entity* this) { } break; case 5: - switch (gMenu.unk10[this->entityType.form]) { + switch (gMenu.focusCoords[this->entityType.form]) { case 0: var0 = 42; var1 = 40; @@ -232,7 +232,7 @@ void sub_0808EABC(Entity* this) { case 2: var0 = 20; var1 = 144; - var1 -= (gMenu.unk16 - gMenu.unk10[this->entityType.form]) * 32; + var1 -= (gMenu.unk16 - gMenu.focusCoords[this->entityType.form]) * 32; break; } break; @@ -376,9 +376,9 @@ void sub_0808ECBC(Entity* this) { void sub_0808ED64(Entity* this) { int y = 255; - if (gUnk_02032EC0.transitionType == 1 && gMenu.unk10[1] != 5) { - this->x.HALF.HI = gMenu.unk10[0] * 16 + 28; - y = gMenu.unk10[1] * 16 + 58; + if (gUnk_02032EC0.transitionType == 1 && gMenu.focusCoords[1] != 5) { + this->x.HALF.HI = gMenu.focusCoords[0] * 16 + 28; + y = gMenu.focusCoords[1] * 16 + 58; } this->y.HALF.HI = y; } @@ -421,7 +421,7 @@ void sub_0808EE00(Entity* this) { } this->field_0x6a.HWORD = var2; - this->palette.b.b0 = gMenu.unk10[1] == 5 && var1 == gMenu.field_0x12 ? 11 : 9; + this->palette.b.b0 = gMenu.focusCoords[1] == 5 && var1 == gMenu.field_0x12 ? 11 : 9; gUnk_02019EE0.unk0 |= sub_0808EF6C(this); } diff --git a/src/screenDebug.c b/src/screenDebug.c new file mode 100644 index 00000000..e8c3a506 --- /dev/null +++ b/src/screenDebug.c @@ -0,0 +1,103 @@ +#include "global.h" +#include "functions.h" +#include "main.h" +#include "menu.h" +#include "screen.h" +#include "structures.h" +#include "textbox.h" + +typedef struct { + u16 unk0; + u16 unk2; + u16 unk4; +} VStruct; + +extern VStruct gUnk_03000FF0; +extern u8 gBG3Buffer[]; + +extern void (*const gUnk_08109A30[])(); + +void HandleDebugTextScreen() { + gUnk_08109A30[gUnk_03001000.funcIndex](); +} + +void sub_0805FA04(void) { + sub_0801DA90(1); + _DmaZero((void*)&gBG0Buffer, sizeof(BGBuffer)); + _DmaZero((void*)&gBG3Buffer, 0x1000); + gScreen.lcd.displayControl = 0x940; + gScreen.bg.bg1Control = 0; + gScreen.bg.bg2Control = 0; + gScreen.affine.bg3xOffset = 0; + gScreen.affine.bg3yOffset = 0; + gScreen.affine.bg3Control = 0x1e0f; + gScreen.affine.unk4 = 1; + sub_08056418(); + _DmaZero((void*)&gUnk_02032EC0, sizeof(UI)); + _DmaZero((void*)&gMenu, sizeof(Menu)); + gMenu.unk16 = gUnk_02000000->gameLanguage; + sub_08053320(); + sub_0801D79C(0, 0x1144); + gUnk_03001000.funcIndex = 1; + sub_080A3210(); + sub_08050008(); +} + +void sub_0805FA98(void) { + int iVar1; + + switch (gUnk_03000FF0.unk2) { + case 0x40: + gMenu.focusCoords[1] -= 1; + break; + case 0x80: + gMenu.focusCoords[1] += 1; + break; + case 0x200: + gMenu.focusCoords[0] ^= 1; + if (gMenu.focusCoords[0] == 0) { + gScreen.bg.bg0Control = 0x1f0c; + gScreen.affine.bg3Control = 0x1e0f; + } else { + gScreen.bg.bg0Control = 0x1f0f; + gScreen.affine.bg3Control = 0x1e0c; + } + break; + case 0x100: + gUnk_02000000->gameLanguage = gMenu.unk16; + TextboxNoOverlapFollow(gMenu.unk14 * 0x100 + gMenu.unk15); + break; + case 0x2: + sub_08056418(); + break; + default: + switch (gUnk_03000FF0.unk4) { + case 0x20: + iVar1 = -1; + break; + case 0x10: + iVar1 = 1; + break; + default: + iVar1 = 0; + break; + } + switch (gMenu.focusCoords[1]) { + case 0: + gMenu.unk14 = (gMenu.unk14 + iVar1 + 0x50) % 0x50; + break; + case 1: + gMenu.unk15 += iVar1; + break; + case 2: + gMenu.unk16 = (gMenu.unk16 + iVar1 + 7) % 7; + break; + } + } + gMenu.focusCoords[1] = (gMenu.focusCoords[1] + 3) % 3; + gScreen.affine.unk4 = 1; +} + +void sub_0805FBC4() { + InitScreen(0); +}