diff --git a/asm/bigGoron.s b/asm/bigGoron.s index 9cba6a4a..a763a077 100644 --- a/asm/bigGoron.s +++ b/asm/bigGoron.s @@ -89,7 +89,7 @@ sub_0806D0B0: @ 0x0806D0B0 movs r1, #0 str r1, [r0] movs r0, #0x30 - bl sub_0801D7EC + bl LoadGfxGroup bl sub_0806D110 ldr r5, _0806D0EC @ =gUnk_02002F00 movs r1, #0x80 diff --git a/asm/code_08019444.s b/asm/code_08019444.s index 97c4c530..02ca3f7f 100644 --- a/asm/code_08019444.s +++ b/asm/code_08019444.s @@ -358,7 +358,7 @@ sub_08019698: @ 0x08019698 strh r0, [r1, #0x32] _08019700: movs r0, #0x11 - bl sub_0801D7EC + bl LoadGfxGroup bl sub_080AD90C bl sub_080AD9B0 bl sub_080AD918 @@ -3793,7 +3793,7 @@ sub_0801B0EC: @ 0x0801B0EC adds r4, r0, #0 _0801B0F0: ldr r1, [r4, #4] - ldr r0, _0801B110 @ =gGlobalPalettes + ldr r0, _0801B110 @ =gGlobalGfxAndPalettes adds r5, r1, r0 ldrb r2, [r4, #2] ldrh r3, [r4] @@ -3808,7 +3808,7 @@ _0801B0F0: bl LoadPalettes b _0801B122 .align 2, 0 -_0801B110: .4byte gGlobalPalettes +_0801B110: .4byte gGlobalGfxAndPalettes _0801B114: movs r0, #0xc0 lsls r0, r0, #0x13 diff --git a/asm/code_0801C370.s b/asm/code_0801C370.s index 910dd08e..ddb4d4ff 100644 --- a/asm/code_0801C370.s +++ b/asm/code_0801C370.s @@ -43,7 +43,7 @@ _0801C398: movs r0, #0xc bl LoadPaletteGroup movs r0, #0x10 - bl sub_0801D7EC + bl LoadGfxGroup ldr r4, _0801C478 @ =gUnk_02034CB0 movs r1, #0x80 lsls r1, r1, #4 diff --git a/asm/code_0801CEC0.s b/asm/code_0801CEC0.s index 6cfb839c..e55bb415 100644 --- a/asm/code_0801CEC0.s +++ b/asm/code_0801CEC0.s @@ -497,7 +497,7 @@ _0801D31C: ands r2, r1 ldr r1, _0801D344 @ =0x00FFFFFF ands r0, r1 - ldr r1, _0801D348 @ =gGlobalPalettes + ldr r1, _0801D348 @ =gGlobalGfxAndPalettes adds r0, r0, r1 adds r1, r4, #0 bl LoadPalettes @@ -506,7 +506,7 @@ _0801D33C: .align 2, 0 _0801D340: .4byte gUnk_08133368 _0801D344: .4byte 0x00FFFFFF -_0801D348: .4byte gGlobalPalettes +_0801D348: .4byte gGlobalGfxAndPalettes thumb_func_start sub_0801D34C sub_0801D34C: @ 0x0801D34C diff --git a/asm/code_0801D79C.s b/asm/code_0801D79C.s index e622b542..8872b96b 100644 --- a/asm/code_0801D79C.s +++ b/asm/code_0801D79C.s @@ -4,142 +4,6 @@ .syntax unified .text - - thumb_func_start sub_0801D79C -sub_0801D79C: @ 0x0801D79C - ldr r3, _0801D7B4 @ =gPaletteBuffer - lsls r2, r0, #1 - adds r2, r2, r3 - strh r1, [r2] - ldr r2, _0801D7B8 @ =gUsedPalettes - lsrs r0, r0, #4 - movs r1, #1 - lsls r1, r0 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - bx lr - .align 2, 0 -_0801D7B4: .4byte gPaletteBuffer -_0801D7B8: .4byte gUsedPalettes - - thumb_func_start sub_0801D7BC -sub_0801D7BC: @ 0x0801D7BC - push {lr} - adds r2, r0, #0 - cmp r1, #0 - beq _0801D7D4 - ldr r1, _0801D7CC @ =gScreen - ldr r0, _0801D7D0 @ =0x0000E0FF - b _0801D7D8 - .align 2, 0 -_0801D7CC: .4byte gScreen -_0801D7D0: .4byte 0x0000E0FF -_0801D7D4: - ldr r1, _0801D7E4 @ =gScreen - ldr r0, _0801D7E8 @ =0x0000FFFF -_0801D7D8: - strh r0, [r1, #6] - movs r0, #0 - adds r1, r2, #0 - bl sub_0801D79C - pop {pc} - .align 2, 0 -_0801D7E4: .4byte gScreen -_0801D7E8: .4byte 0x0000FFFF - - thumb_func_start sub_0801D7EC -sub_0801D7EC: @ 0x0801D7EC - push {r4, r5, r6, lr} - ldr r1, _0801D814 @ =gUnk_08100AA8 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r4, [r0] - movs r6, #0x80 - lsls r6, r6, #0x12 - ldr r5, _0801D818 @ =0x040000D4 -_0801D7FC: - movs r2, #0 - ldrb r1, [r4, #3] - movs r0, #0xf - ands r1, r0 - cmp r1, #0xd - beq _0801D894 - cmp r1, #0xd - bhi _0801D81C - cmp r1, #7 - beq _0801D842 - b _0801D836 - .align 2, 0 -_0801D814: .4byte gUnk_08100AA8 -_0801D818: .4byte 0x040000D4 -_0801D81C: - cmp r1, #0xe - beq _0801D826 - cmp r1, #0xf - beq _0801D82E - b _0801D836 -_0801D826: - ldrb r0, [r6, #7] - cmp r0, #1 - bls _0801D83E - b _0801D842 -_0801D82E: - ldrb r0, [r6, #7] - cmp r0, #0 - beq _0801D83E - b _0801D842 -_0801D836: - ldrb r0, [r6, #7] - cmp r1, r0 - bne _0801D83E - movs r2, #1 -_0801D83E: - cmp r2, #0 - beq _0801D888 -_0801D842: - ldr r0, [r4] - ldr r1, _0801D868 @ =0x00FFFFFF - ands r0, r1 - ldr r1, _0801D86C @ =gGlobalPalettes - adds r2, r0, r1 - ldr r1, [r4, #4] - ldr r0, [r4, #8] - movs r3, #0x80 - lsls r3, r3, #0x18 - cmp r0, #0 - bge _0801D87C - ldr r0, _0801D870 @ =0x05FFFFFF - cmp r1, r0 - bls _0801D874 - adds r0, r2, #0 - bl LZ77UnCompVram - b _0801D888 - .align 2, 0 -_0801D868: .4byte 0x00FFFFFF -_0801D86C: .4byte gGlobalPalettes -_0801D870: .4byte 0x05FFFFFF -_0801D874: - adds r0, r2, #0 - bl LZ77UnCompWram - b _0801D888 -_0801D87C: - str r2, [r5] - str r1, [r5, #4] - lsrs r0, r0, #1 - orrs r0, r3 - str r0, [r5, #8] - ldr r0, [r5, #8] -_0801D888: - ldrb r1, [r4, #3] - movs r0, #0x80 - ands r1, r0 - adds r4, #0xc - cmp r1, #0 - bne _0801D7FC -_0801D894: - pop {r4, r5, r6, pc} - .align 2, 0 thumb_func_start sub_0801D898 sub_0801D898: @ 0x0801D898 diff --git a/asm/code_0804AA84.s b/asm/code_0804AA84.s index e4ee28bd..9aba3867 100644 --- a/asm/code_0804AA84.s +++ b/asm/code_0804AA84.s @@ -39,7 +39,7 @@ _0804ABA4: ldrb r0, [r4] bl LoadPaletteGroup ldrb r0, [r4, #1] - bl sub_0801D7EC + bl LoadGfxGroup ldr r0, _0804AC10 @ =gUnk_02017700 movs r2, #0x90 lsls r2, r2, #2 diff --git a/asm/code_08050038.s b/asm/code_08050038.s index 3acd113f..a795ad0d 100644 --- a/asm/code_08050038.s +++ b/asm/code_08050038.s @@ -321,7 +321,7 @@ _080503A4: .4byte gScreen thumb_func_start sub_080503A8 sub_080503A8: @ 0x080503A8 push {lr} - bl sub_0801D7EC + bl LoadGfxGroup ldr r1, _080503B8 @ =gScreen movs r0, #1 strh r0, [r1, #0x1a] @@ -676,7 +676,7 @@ _080506AA: lsls r0, r0, #1 adds r0, r0, r1 ldrh r4, [r0] - ldr r0, _080506F8 @ =gGlobalPalettes + ldr r0, _080506F8 @ =gGlobalGfxAndPalettes adds r4, r4, r0 ldr r1, _080506FC @ =0x00011AA0 adds r0, r4, r1 @@ -704,7 +704,7 @@ _080506EE: .align 2, 0 _080506F0: .4byte gUnk_02019EE0 _080506F4: .4byte gUnk_080FC8DE -_080506F8: .4byte gGlobalPalettes +_080506F8: .4byte gGlobalGfxAndPalettes _080506FC: .4byte 0x00011AA0 _08050700: .4byte 0x00011BA0 _08050704: .4byte 0x00011CA0 @@ -3844,7 +3844,7 @@ sub_08052010: @ 0x08052010 movs r1, #0 bl sub_0801D79C movs r0, #4 - bl sub_0801D7EC + bl LoadGfxGroup movs r0, #0xc0 lsls r0, r0, #0x13 movs r1, #0x20 diff --git a/asm/code_080526F8.s b/asm/code_080526F8.s index aace7527..d107e8ff 100644 --- a/asm/code_080526F8.s +++ b/asm/code_080526F8.s @@ -1582,15 +1582,15 @@ sub_08053320: @ 0x08053320 lsls r1, r1, #5 bl _DmaZero movs r0, #0x10 - bl sub_0801D7EC + bl LoadGfxGroup movs r0, #0x17 - bl sub_0801D7EC + bl LoadGfxGroup ldr r0, _0805338C @ =gRoomControls ldrb r0, [r0, #4] cmp r0, #4 bne _08053362 movs r0, #0x1a - bl sub_0801D7EC + bl LoadGfxGroup _08053362: bl sub_08053390 movs r0, #0xb @@ -1619,13 +1619,13 @@ sub_08053390: @ 0x08053390 movs r1, #0x18 _080533A0: adds r0, r1, #0 - bl sub_0801D7EC + bl LoadGfxGroup movs r0, #0xa bl GetInventoryValue cmp r0, #0 beq _080533B6 movs r0, #0x1d - bl sub_0801D7EC + bl LoadGfxGroup _080533B6: movs r0, #0xc bl GetInventoryValue @@ -1635,7 +1635,7 @@ _080533B6: movs r1, #0x1c _080533C4: adds r0, r1, #0 - bl sub_0801D7EC + bl LoadGfxGroup pop {pc} thumb_func_start sub_080533CC @@ -2218,7 +2218,7 @@ sub_08053800: @ 0x08053800 bl LoadPaletteGroup adds r0, r5, #0 adds r0, #0x3a - bl sub_0801D7EC + bl LoadGfxGroup ldr r0, _08053888 @ =gUnk_02021F30 movs r1, #0x80 lsls r1, r1, #4 diff --git a/asm/code_0805436C.s b/asm/code_0805436C.s index 0272467d..67cb224e 100644 --- a/asm/code_0805436C.s +++ b/asm/code_0805436C.s @@ -1169,7 +1169,7 @@ sub_08055184: @ 0x08055184 adds r4, r4, r0 movs r1, #0 ldrsh r0, [r4, r1] - bl sub_0801D7EC + bl LoadGfxGroup ldr r2, _08055214 @ =gScreen ldrh r0, [r4, #2] movs r6, #0 @@ -1713,7 +1713,7 @@ sub_080555B8: @ 0x080555B8 ldrb r1, [r4, #3] bl sub_0804B0E8 movs r0, #0x11 - bl sub_0801D7EC + bl LoadGfxGroup ldrb r0, [r5, #4] movs r1, #0 movs r2, #0 diff --git a/asm/code_080A3480.s b/asm/code_080A3480.s index a166b8ec..37d5acc4 100644 --- a/asm/code_080A3480.s +++ b/asm/code_080A3480.s @@ -350,7 +350,7 @@ sub_080A36F8: @ 0x080A36F8 ldrb r0, [r4] bl LoadPaletteGroup ldrb r0, [r4, #1] - bl sub_0801D7EC + bl LoadGfxGroup ldr r0, _080A3760 @ =gUnk_02021F30 movs r1, #0x80 lsls r1, r1, #4 @@ -708,7 +708,7 @@ _080A39C8: movs r1, #0 bl sub_0801D79C movs r0, #4 - bl sub_0801D7EC + bl LoadGfxGroup movs r0, #0xc0 lsls r0, r0, #0x13 movs r1, #0x20 diff --git a/asm/code_080A3BD0.s b/asm/code_080A3BD0.s index 9950817d..03a65575 100644 --- a/asm/code_080A3BD0.s +++ b/asm/code_080A3BD0.s @@ -1021,7 +1021,7 @@ sub_080A4418: @ 0x080A4418 ands r2, r1 mvns r0, r2 ands r0, r1 - ldr r1, _080A444C @ =gGlobalPalettes + ldr r1, _080A444C @ =gGlobalGfxAndPalettes adds r1, r0, r1 cmp r2, #0 beq _080A4450 @@ -1032,7 +1032,7 @@ sub_080A4418: @ 0x080A4418 .align 2, 0 _080A4444: .4byte 0x06010000 _080A4448: .4byte gUnk_080CA06C -_080A444C: .4byte gGlobalPalettes +_080A444C: .4byte gGlobalGfxAndPalettes _080A4450: ldr r0, _080A4460 @ =0x040000D4 str r1, [r0] @@ -2198,7 +2198,7 @@ _080A4D54: _080A4D66: adds r0, r1, #0 adds r0, #0x56 - bl sub_0801D7EC + bl LoadGfxGroup ldr r1, _080A4D80 @ =gScreen movs r0, #0 strh r0, [r1, #0x2e] @@ -2308,7 +2308,7 @@ _080A4E4A: ldrb r0, [r4, #1] cmp r0, #0 beq _080A4E54 - bl sub_0801D7EC + bl LoadGfxGroup _080A4E54: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index c01a8b8e..57a76b63 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -893,7 +893,7 @@ sub_080A5C44: @ 0x080A5C44 ldrb r0, [r1, #3] bl sub_080A5CFC movs r0, #0x81 - bl sub_0801D7EC + bl LoadGfxGroup ldr r4, _080A5C90 @ =gArea ldrb r0, [r4, #3] movs r1, #1 @@ -1683,7 +1683,7 @@ sub_080A6290: @ 0x080A6290 ldr r0, _080A62CC @ =gUnk_08128DD4 str r0, [r4, #0xc] movs r0, #0x81 - bl sub_0801D7EC + bl LoadGfxGroup ldr r1, _080A62D0 @ =gScreen ldr r0, _080A62D4 @ =0x0000FFFC strh r0, [r1, #0x18] @@ -2374,7 +2374,7 @@ _080A6802: adds r5, #0x72 _080A6822: adds r0, r5, #0 - bl sub_0801D7EC + bl LoadGfxGroup lsls r1, r4, #3 ldr r0, _080A68B0 @ =gUnk_08128E94 adds r4, r1, r0 diff --git a/asm/code_080AD90C.s b/asm/code_080AD90C.s index dda43a26..560b933d 100644 --- a/asm/code_080AD90C.s +++ b/asm/code_080AD90C.s @@ -660,7 +660,7 @@ sub_080ADDD8: @ 0x080ADDD8 adds r3, r1, r0 ldr r0, _080ADE00 @ =0x00FFFFFC ands r0, r2 - ldr r1, _080ADE04 @ =gGlobalPalettes + ldr r1, _080ADE04 @ =gGlobalGfxAndPalettes adds r0, r0, r1 str r0, [r3, #8] movs r0, #1 @@ -672,7 +672,7 @@ sub_080ADDD8: @ 0x080ADDD8 .align 2, 0 _080ADDFC: .4byte gUnk_02024494 _080ADE00: .4byte 0x00FFFFFC -_080ADE04: .4byte gGlobalPalettes +_080ADE04: .4byte gGlobalGfxAndPalettes _080ADE08: .4byte 0x0000FFFF _080ADE0C: movs r0, #0xfe diff --git a/asm/manager10.s b/asm/manager10.s index d420e319..e07b7189 100644 --- a/asm/manager10.s +++ b/asm/manager10.s @@ -330,7 +330,7 @@ _080597F4: cmp r0, #0 blt _08059838 adds r0, #0x2b - bl sub_0801D7EC + bl LoadGfxGroup b _08059838 _08059800: ldr r4, _0805981C @ =gUnk_02001A40 diff --git a/asm/manager12.s b/asm/manager12.s index 5217fa7f..370bf536 100644 --- a/asm/manager12.s +++ b/asm/manager12.s @@ -378,7 +378,7 @@ _08059CE8: _08059CEC: adds r6, r1, r0 ldr r0, [r6] - ldr r4, _08059D14 @ =gGlobalPalettes + ldr r4, _08059D14 @ =gGlobalGfxAndPalettes adds r0, r0, r4 ldr r1, [r6, #4] movs r5, #0x80 @@ -393,7 +393,7 @@ _08059CEC: pop {r4, r5, r6, pc} .align 2, 0 _08059D10: .4byte gUnk_08108468 -_08059D14: .4byte gGlobalPalettes +_08059D14: .4byte gGlobalGfxAndPalettes thumb_func_start sub_08059D18 sub_08059D18: @ 0x08059D18 diff --git a/asm/manager15.s b/asm/manager15.s index 9e95731b..0106e9d8 100644 --- a/asm/manager15.s +++ b/asm/manager15.s @@ -1139,7 +1139,7 @@ sub_0805AADC: @ 0x0805AADC lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] - bl sub_0801D7EC + bl LoadGfxGroup pop {pc} .align 2, 0 _0805AAEC: .4byte gUnk_08108648 diff --git a/asm/manager1A.s b/asm/manager1A.s index cfa4299e..11c578a6 100644 --- a/asm/manager1A.s +++ b/asm/manager1A.s @@ -418,7 +418,7 @@ sub_0805B328: @ 0x0805B328 adds r0, r0, r1 ldr r0, [r0, #0xc] ldr r0, [r0] - ldr r1, _0805B378 @ =gGlobalPalettes + ldr r1, _0805B378 @ =gGlobalGfxAndPalettes adds r0, r0, r1 ldr r1, _0805B37C @ =0x0600F000 movs r4, #0x80 @@ -445,7 +445,7 @@ _0805B372: pop {r4, pc} .align 2, 0 _0805B374: .4byte gUnk_08108764 -_0805B378: .4byte gGlobalPalettes +_0805B378: .4byte gGlobalGfxAndPalettes _0805B37C: .4byte 0x0600F000 _0805B380: .4byte gScreen _0805B384: .4byte 0x00001E07 diff --git a/asm/manager1B.s b/asm/manager1B.s index 6e0fbd23..e3626e3d 100644 --- a/asm/manager1B.s +++ b/asm/manager1B.s @@ -157,7 +157,7 @@ sub_0805B4D0: @ 0x0805B4D0 ldr r0, _0805B528 @ =gUnk_08108C5C adds r0, r5, r0 ldrb r0, [r0] - bl sub_0801D7EC + bl LoadGfxGroup ldr r4, _0805B52C @ =gScreen ldr r0, _0805B530 @ =0x00001E07 strh r0, [r4, #0x2c] diff --git a/asm/manager2.s b/asm/manager2.s index 71e90095..ca617098 100644 --- a/asm/manager2.s +++ b/asm/manager2.s @@ -84,7 +84,7 @@ sub_080575C8: @ 0x080575C8 lsls r0, r0, #0x13 strh r5, [r0] adds r0, r4, #0 - bl sub_0801D7EC + bl LoadGfxGroup ldr r0, _08057668 @ =gRoomVars strb r4, [r0, #0x10] ldr r3, _0805766C @ =gRoomControls @@ -183,7 +183,7 @@ sub_080576A0: @ 0x080576A0 adds r4, r0, #0 ldr r0, _080576BC @ =gRoomVars ldrb r0, [r0, #0x10] - bl sub_0801D7EC + bl LoadGfxGroup movs r0, #0 str r0, [r4, #0x38] str r0, [r4, #0x3c] diff --git a/asm/manager2F.s b/asm/manager2F.s index 06c806a6..f85e6167 100644 --- a/asm/manager2F.s +++ b/asm/manager2F.s @@ -88,7 +88,7 @@ _0805D46C: .4byte gScreen sub_0805D470: @ 0x0805D470 push {lr} movs r0, #0x4c - bl sub_0801D7EC + bl LoadGfxGroup ldr r2, _0805D4A0 @ =gScreen ldr r0, _0805D4A4 @ =0x00001E07 strh r0, [r2, #0x2c] diff --git a/asm/manager32.s b/asm/manager32.s index 4faba7eb..755c5750 100644 --- a/asm/manager32.s +++ b/asm/manager32.s @@ -100,7 +100,7 @@ _0805D842: ldr r0, _0805D854 @ =gUnk_08108D74 adds r0, r1, r0 ldrb r0, [r0] - bl sub_0801D7EC + bl LoadGfxGroup ldr r1, _0805D858 @ =gScreen ldr r0, _0805D85C @ =0x00001E04 strh r0, [r1, #0x2c] diff --git a/asm/manager7.s b/asm/manager7.s index bfc91d7b..d830014b 100644 --- a/asm/manager7.s +++ b/asm/manager7.s @@ -76,7 +76,7 @@ _08057DD6: movs r0, #1 strb r0, [r1] ldr r0, [r2] - ldr r1, _08057DFC @ =gGlobalPalettes + ldr r1, _08057DFC @ =gGlobalGfxAndPalettes adds r0, r0, r1 ldr r1, [r2, #4] movs r2, #0x80 @@ -89,13 +89,13 @@ _08057DD6: b _08057E24 .align 2, 0 _08057DF8: .4byte gUnk_02034490 -_08057DFC: .4byte gGlobalPalettes +_08057DFC: .4byte gGlobalGfxAndPalettes _08057E00: .4byte gUnk_081081E4 _08057E04: lsls r1, r1, #3 adds r1, r1, r2 ldr r0, [r1] - ldr r2, _08057E1C @ =gGlobalPalettes + ldr r2, _08057E1C @ =gGlobalGfxAndPalettes adds r0, r0, r2 ldr r1, [r1, #4] movs r2, #0x80 @@ -103,7 +103,7 @@ _08057E04: bl LoadAssetAsync b _08057E24 .align 2, 0 -_08057E1C: .4byte gGlobalPalettes +_08057E1C: .4byte gGlobalGfxAndPalettes _08057E20: ldr r0, _08057E2C @ =gUnk_02034490 strb r3, [r0] @@ -175,7 +175,7 @@ sub_08057E7C: @ 0x08057E7C adds r1, r1, r0 movs r3, #0 ldr r2, _08057EC0 @ =0x040000D4 - ldr r6, _08057EC4 @ =gGlobalPalettes + ldr r6, _08057EC4 @ =gGlobalGfxAndPalettes ldr r5, _08057EC8 @ =0x84000400 _08057E9C: ldr r0, [r1] @@ -197,6 +197,6 @@ _08057EB6: _08057EB8: .4byte gUnk_081081E4 _08057EBC: .4byte gUnk_081080A4 _08057EC0: .4byte 0x040000D4 -_08057EC4: .4byte gGlobalPalettes +_08057EC4: .4byte gGlobalGfxAndPalettes _08057EC8: .4byte 0x84000400 _08057ECC: .4byte gRoomVars diff --git a/asm/manager8.s b/asm/manager8.s index dacc0d26..4cee9e01 100644 --- a/asm/manager8.s +++ b/asm/manager8.s @@ -35,7 +35,7 @@ sub_08057EFC: @ 0x08057EFC adds r4, r0, #0 ldr r0, _08057F1C @ =gRoomVars ldrb r0, [r0, #0x10] - bl sub_0801D7EC + bl LoadGfxGroup bl sub_08058034 movs r0, #0 str r0, [r4, #0x3c] @@ -267,7 +267,7 @@ sub_080580B0: @ 0x080580B0 lsls r0, r0, #0x13 strh r1, [r0] adds r0, r4, #0 - bl sub_0801D7EC + bl LoadGfxGroup ldr r0, _080581B4 @ =gRoomVars strb r4, [r0, #0x10] bl sub_08058034 diff --git a/asm/manager9.s b/asm/manager9.s index 9d36611c..2b7bd3c1 100644 --- a/asm/manager9.s +++ b/asm/manager9.s @@ -188,7 +188,7 @@ sub_08058324: @ 0x08058324 bl LoadPaletteGroup adds r0, r4, #0 adds r0, #0x36 - bl sub_0801D7EC + bl LoadGfxGroup bl sub_080582D0 adds r0, r4, #0 bl sub_08058244 diff --git a/asm/managerC.s b/asm/managerC.s index 26f022e1..d634ea71 100644 --- a/asm/managerC.s +++ b/asm/managerC.s @@ -661,7 +661,7 @@ sub_08058D34: @ 0x08058D34 orrs r0, r1 str r0, [r2] movs r0, #0x16 - bl sub_0801D7EC + bl LoadGfxGroup ldr r1, _08058DB4 @ =gScreen ldrh r0, [r1] movs r3, #0 @@ -697,7 +697,7 @@ sub_08058D34: @ 0x08058D34 cmp r0, #0 beq _08058DA8 movs r0, #0x4a - bl sub_0801D7EC + bl LoadGfxGroup _08058DA8: pop {r4, pc} .align 2, 0 diff --git a/asm/object36.s b/asm/object36.s index 96185a8e..371fdc49 100644 --- a/asm/object36.s +++ b/asm/object36.s @@ -30,7 +30,7 @@ sub_0808BB30: @ 0x0808BB30 cmp r1, #0 beq _0808BB4C movs r0, #0x4a - bl sub_0801D7EC + bl LoadGfxGroup bl DeleteThisEntity b _0808BBD4 _0808BB4C: @@ -229,7 +229,7 @@ _0808BCCA: beq _0808BCFE strb r6, [r5, #0xf] movs r0, #0x4a - bl sub_0801D7EC + bl LoadGfxGroup b _0808BCFE .align 2, 0 _0808BCDC: .4byte 0x0000FFFE @@ -246,7 +246,7 @@ _0808BCE4: beq _0808BCFE strb r4, [r5, #0xf] movs r0, #0x49 - bl sub_0801D7EC + bl LoadGfxGroup _0808BCFE: pop {r4, r5, r6, pc} diff --git a/data/data_081320FC.s b/data/data_081320FC.s index ce4cf4a5..50a7f2c6 100755 --- a/data/data_081320FC.s +++ b/data/data_081320FC.s @@ -10327,7 +10327,7 @@ gUnk_085A0464:: @ 085A0464 gUnk_085A0806:: @ 085A0806 .incbin "baserom.gba", 0x5A0806, 0x000267A -gGlobalPalettes:: @ 085A2E80 +gGlobalGfxAndPalettes:: @ 085A2E80 .incbin "baserom.gba", 0x5A2E80, 0x0001382 gUnk_085A4202:: @ 085A4202 diff --git a/include/functions.h b/include/functions.h index 726340fc..34b0cf53 100644 --- a/include/functions.h +++ b/include/functions.h @@ -168,7 +168,7 @@ extern void sub_0805ADD8(u32); extern void sub_0804F578(void); extern void sub_08059994(void); extern u32 sub_080AD84C(); -extern void sub_0801D7EC(u32); +extern void LoadGfxGroup(u32); extern s32 sub_0801CFA8(u32); extern void sub_080A3210(); extern void sub_080AD6AC(); diff --git a/include/screen.h b/include/screen.h index 3c4fd1aa..b6fc8b39 100644 --- a/include/screen.h +++ b/include/screen.h @@ -6,7 +6,8 @@ typedef struct { u16 lcdControl2; u16 unk2; - u32 unk; + u16 unk4; + u16 unk6; u16 lcdControl1; } LcdControls; diff --git a/linker.ld b/linker.ld index a32ffc0e..e995eee5 100644 --- a/linker.ld +++ b/linker.ld @@ -321,6 +321,7 @@ SECTIONS { asm/sub_0801D66C.o(.text); src/input.o(.text); src/code_0801D714.o(.text); + src/code_0801D79C.o(.text); asm/code_0801D79C.o(.text); /* enemies */ src/enemy/octorok.o(.text); diff --git a/src/code_0801D714.c b/src/code_0801D714.c index c4a27023..f3e59253 100755 --- a/src/code_0801D714.c +++ b/src/code_0801D714.c @@ -3,7 +3,7 @@ extern void LoadPalettes(const u8*, int, int); extern u32 gUsedPalettes; -extern u16 gPaletteBuffer[][16]; +extern u16 gPaletteBuffer[]; typedef struct { u16 paletteId; @@ -12,17 +12,17 @@ typedef struct { } PaletteGroup; extern const PaletteGroup* gPaletteGroups[]; -extern const u8 gGlobalPalettes[][32]; +extern const u8 gGlobalGfxAndPalettes[]; -void LoadPaletteGroup(u32 arg0) { - const PaletteGroup* paletteGroup = gPaletteGroups[arg0]; +void LoadPaletteGroup(u32 group) { + const PaletteGroup* paletteGroup = gPaletteGroups[group]; while (1) { u32 destPaletteNum = paletteGroup->destPaletteNum; u32 numPalettes = paletteGroup->numPalettes & 0xF; if (numPalettes == 0) { numPalettes = 16; } - LoadPalettes(gGlobalPalettes[paletteGroup->paletteId], destPaletteNum, numPalettes); + LoadPalettes(&gGlobalGfxAndPalettes[paletteGroup->paletteId * 32], destPaletteNum, numPalettes); if ((paletteGroup->numPalettes & 0x80) == 0) { break; } @@ -38,6 +38,6 @@ void LoadPalettes(const u8* src, int destPaletteNum, int numPalettes) { usedPalettesMask |= (usedPalettesMask << 1); } gUsedPalettes |= usedPalettesMask; - dest = gPaletteBuffer[destPaletteNum]; + dest = &gPaletteBuffer[destPaletteNum * 16]; DmaCopy32(3, src, dest, size); } diff --git a/src/code_0801D79C.c b/src/code_0801D79C.c new file mode 100755 index 00000000..3ceb70e9 --- /dev/null +++ b/src/code_0801D79C.c @@ -0,0 +1,96 @@ +#include "global.h" +#include "screen.h" +#include "structures.h" + +extern u16 gPaletteBuffer[]; +extern u32 gUsedPalettes; + +typedef struct { + union { + int raw; + struct { + u8 filler0[0x3]; + u8 unk3; + } bytes; + } unk0; + u32 dest; + u32 unk8; +} GfxItem; + +extern const GfxItem* gUnk_08100AA8[]; +extern const u8 gGlobalGfxAndPalettes[]; + +void sub_0801D79C(u32 colorIndex, u32 color) { + gPaletteBuffer[colorIndex] = color; + gUsedPalettes |= 1 << (colorIndex / 16); +} + +void sub_0801D7BC(u32 color, u32 arg1) { + if (arg1) { + gScreen.lcd.unk6 = 0xE0FF; + } else { + gScreen.lcd.unk6 = 0xFFFF; + } + sub_0801D79C(0, color); +} + +void LoadGfxGroup(u32 group) { + u32 terminator; + u32 dmaCtrl; + int gfxOffset; + const u8* src; + u32 dest; + int size; + const GfxItem* gfxItem = gUnk_08100AA8[group]; + while (1) { + u32 loadGfx = FALSE; + u32 ctrl = gfxItem->unk0.bytes.unk3; + ctrl &= 0xF; + switch (ctrl) { + case 0x7: + loadGfx = TRUE; + break; + case 0xD: + return; + case 0xE: + if (((struct_02000000 *)0x2000000)->gameLanguage > 1) { + loadGfx = TRUE; + } + break; + case 0xF: + if (((struct_02000000 *)0x2000000)->gameLanguage != 0) { + loadGfx = TRUE; + } + break; + default: + if (ctrl == ((struct_02000000 *)0x2000000)->gameLanguage) { + loadGfx = TRUE; + } + break; + } + + if (loadGfx) { + gfxOffset = gfxItem->unk0.raw & 0xFFFFFF; + src = &gGlobalGfxAndPalettes[gfxOffset]; + dest = gfxItem->dest; + size = gfxItem->unk8; + dmaCtrl = 0x80000000; + if (size < 0) { + if (dest >= VRAM) { + LZ77UnCompVram(src, (void*)dest); + } else { + LZ77UnCompWram(src, (void*)dest); + } + } else { + DmaSet(3, src, dest, dmaCtrl | ((u32)size >> 1)); + } + } + + terminator = gfxItem->unk0.bytes.unk3; + terminator &= 0x80; + gfxItem++; + if (!terminator) { + break; + } + } +} diff --git a/src/introSetTransition.c b/src/introSetTransition.c index 6c71146b..7ed39ce4 100644 --- a/src/introSetTransition.c +++ b/src/introSetTransition.c @@ -64,22 +64,22 @@ void HandleIntroScreen(void) static void sub_080AD3F4(void) { u32 iVar1; - u32 uVar2; + u32 paletteGroup; iVar1 = sub_080AD84C(); if (gMenu.menuType == 0) { sub_0801DA90(1); gMenu.menuType = 1; gMenu.transitionTimer = 120; - sub_0801D7EC(0x10); - sub_0801D7EC(1); + LoadGfxGroup(16); + LoadGfxGroup(1); if (((struct_02000000 *)0x2000000)->gameLanguage == 0) { - uVar2 = 1; + paletteGroup = 1; } else { - uVar2 = 2; + paletteGroup = 2; } - LoadPaletteGroup(uVar2); + LoadPaletteGroup(paletteGroup); gScreen.lcd.lcdControl2 |= 0x400; gScreen.bg2.bg0xOffset = 1; DoFade(6, 8); @@ -107,7 +107,7 @@ extern u8 gUnk_02024490; static void sub_080AD474(void) { int iVar2; - u32 uVar3; + u32 paletteGroup; gMenu.field_0x12++; switch (gMenu.menuType) { @@ -120,14 +120,14 @@ static void sub_080AD474(void) sub_0801CFA8(0); sub_080ADD30(); gUnk_02024490 = 1; - sub_0801D7EC(2); + LoadGfxGroup(2); if (((struct_02000000*)0x2000000)->gameLanguage == 0) { - uVar3 = 3; + paletteGroup = 3; } else { - uVar3 = 4; + paletteGroup = 4; } - LoadPaletteGroup(uVar3); + LoadPaletteGroup(paletteGroup); if (((struct_02000000*)0x2000000)->gameLanguage == 0) { gScreen.controls.windowOutsideControl = 0x844; gScreen.controls.mosaicSize = 0x909; @@ -192,7 +192,7 @@ static void sub_080AD474(void) } if (gMenu.field_0x4 != ((struct_02000000*)0x2000000)->gameLanguage) { gMenu.field_0x4 = ((struct_02000000*)0x2000000)->gameLanguage; - sub_0801D7EC(3); + LoadGfxGroup(3); } sub_080AD89C(); sub_0805E5C0(); diff --git a/src/mainLoop.c b/src/mainLoop.c index 5ba99815..726fa5fd 100644 --- a/src/mainLoop.c +++ b/src/mainLoop.c @@ -5,7 +5,7 @@ #include "readKeyInput.h" extern void sub_0804FF84(u32); -extern u32 gPaletteBuffer; +extern u16 gPaletteBuffer[]; extern void VBlankInterruptWait(void); extern void DisableInterruptsAndDMA(void); extern void sub_0801D66C(void*, u8*, int); @@ -34,7 +34,7 @@ void MainLoop(void) { sub_08056208(); gUnk_02000010.field_0x4 = 193; sub_0804FFE4(); - DmaSet(3, 0x5000000U, &gPaletteBuffer, 0x84000080U); + DmaSet(3, 0x5000000U, gPaletteBuffer, 0x84000080U); sub_0804FF84(1); sub_08056418(); sub_080ADD30(); diff --git a/src/manager/manager1.c b/src/manager/manager1.c index ba556db0..b506940e 100644 --- a/src/manager/manager1.c +++ b/src/manager/manager1.c @@ -2,7 +2,7 @@ #include "entity.h" #include "screen.h" -extern void sub_0801D7EC(u32); +extern void LoadGfxGroup(u32); extern void sub_08056250(void); extern void sub_080570B8(Entity*); void sub_080570F8(void); @@ -23,7 +23,7 @@ void Manager1(Entity *this) bVar1 = gUnk_08107C40[((u8*)&this->field_0x20)[1]]; if ((bVar1 != 0) && (*(u8 *)&this->field_0x20 != bVar1)) { ((u8*)&this->field_0x20)[0] = bVar1; - sub_0801D7EC(bVar1); + LoadGfxGroup(bVar1); } } @@ -31,7 +31,7 @@ void sub_080570B8(Entity *this) { u8 *pbVar1; - sub_0801D7EC(((u8 *)&this->field_0x20)[0]); + LoadGfxGroup(((u8 *)&this->field_0x20)[0]); this->height.WORD = 0; pbVar1 = ((u8 *)&this->field_0x20 + 1); if (*pbVar1 == 3) { diff --git a/src/object/object48.c b/src/object/object48.c index bd6c2da5..bbac3950 100755 --- a/src/object/object48.c +++ b/src/object/object48.c @@ -39,7 +39,7 @@ typedef struct { extern void (*const gUnk_08121C64[])(Entity*); extern void (*const gUnk_08121CCC[])(Entity*); extern const int gUnk_08133368[]; -extern const u8 gGlobalPalettes[]; +extern const u8 gGlobalGfxAndPalettes[]; extern const struct_08121CD4 gUnk_08121CD4[][4]; extern const u8 gUnk_08121D10[]; extern const u8 gUnk_08121D38[][8]; @@ -88,7 +88,7 @@ void sub_0808E818(Entity* this) { this->field_0x70.BYTES.byte0 = 4; this->animationState = 2; var1 = gUnk_08133368[sub_0807A094(1) - 22] & 0xFFFFFF; - LoadPalettes(&gGlobalPalettes[var1], 31, 1); + LoadPalettes(&gGlobalGfxAndPalettes[var1], 31, 1); } if (gUnk_02032EC0.transitionType == 0) { diff --git a/src/sub_080A3B84.c b/src/sub_080A3B84.c index 9279774e..b0ac394b 100644 --- a/src/sub_080A3B84.c +++ b/src/sub_080A3B84.c @@ -32,7 +32,7 @@ void sub_080A3BD0(void) gMenu.unk2a = 0; sub_080A4D34(); LoadPaletteGroup(0xcb); - sub_0801D7EC(0x75); + LoadGfxGroup(0x75); iVar1 = sub_080A4494(); iVar2 = iVar1 + 7; @@ -44,7 +44,7 @@ void sub_080A3BD0(void) iVar1 = max(iVar1, 0); iVar1 = min(iVar1, 6); - sub_0801D7EC(iVar1 + 0x76); + LoadGfxGroup(iVar1 + 0x76); gScreen.lcd.lcdControl2 |= 0x1e00; gScreen.bg1.unk = 0x1c01; gScreen.bg2.unk = 0x1d02;