diff options
-rw-r--r-- | asm/palette.s | 2945 | ||||
-rw-r--r-- | asm/region_map.s | 2 | ||||
-rw-r--r-- | asm/trainer_card.s | 4 | ||||
-rw-r--r-- | data/palette.s | 18 | ||||
-rw-r--r-- | include/fldeff.h | 1 | ||||
-rw-r--r-- | include/graphics.h | 8 | ||||
-rw-r--r-- | include/palette.h | 58 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/palette.c | 989 | ||||
-rw-r--r-- | sym_ewram.txt | 19 |
10 files changed, 1028 insertions, 3020 deletions
diff --git a/asm/palette.s b/asm/palette.s deleted file mode 100644 index ed9327106..000000000 --- a/asm/palette.s +++ /dev/null @@ -1,2945 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start LoadCompressedPalette -LoadCompressedPalette: @ 80703A8 - push {r4-r6,lr} - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - ldr r6, _080703E0 @ =gUnknown_2037ACC - adds r1, r6, 0 - bl LZDecompressWram - lsls r4, 1 - ldr r1, _080703E4 @ =gPlttBufferUnfaded - adds r1, r4, r1 - lsrs r5, 17 - adds r0, r6, 0 - adds r2, r5, 0 - bl CpuSet - ldr r0, _080703E8 @ =gPlttBufferFaded - adds r4, r0 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl CpuSet - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080703E0: .4byte gUnknown_2037ACC -_080703E4: .4byte gPlttBufferUnfaded -_080703E8: .4byte gPlttBufferFaded - thumb_func_end LoadCompressedPalette - - thumb_func_start LoadPalette -LoadPalette: @ 80703EC - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsls r5, 16 - lsrs r4, 15 - ldr r1, _0807041C @ =gPlttBufferUnfaded - adds r1, r4, r1 - lsrs r5, 17 - adds r2, r5, 0 - bl CpuSet - ldr r0, _08070420 @ =gPlttBufferFaded - adds r4, r0 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl CpuSet - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807041C: .4byte gPlttBufferUnfaded -_08070420: .4byte gPlttBufferFaded - thumb_func_end LoadPalette - - thumb_func_start FillPalette -FillPalette: @ 8070424 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r6, 16 - lsrs r6, 16 - lsls r4, 16 - lsls r5, 16 - mov r0, sp - strh r6, [r0] - lsrs r4, 15 - ldr r1, _0807046C @ =gPlttBufferUnfaded - adds r1, r4, r1 - lsrs r5, 17 - movs r0, 0x80 - lsls r0, 17 - orrs r5, r0 - mov r0, sp - adds r2, r5, 0 - bl CpuSet - mov r0, sp - adds r0, 0x2 - strh r6, [r0] - ldr r1, _08070470 @ =gPlttBufferFaded - adds r4, r1 - adds r1, r4, 0 - adds r2, r5, 0 - bl CpuSet - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807046C: .4byte gPlttBufferUnfaded -_08070470: .4byte gPlttBufferFaded - thumb_func_end FillPalette - - thumb_func_start TransferPlttBuffer -TransferPlttBuffer: @ 8070474 - push {r4,r5,lr} - ldr r4, _080704BC @ =gPaletteFade - ldrb r1, [r4, 0x8] - movs r5, 0x80 - adds r0, r5, 0 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080704B6 - ldr r1, _080704C0 @ =gPlttBufferFaded - movs r2, 0xA0 - lsls r2, 19 - ldr r0, _080704C4 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _080704C8 @ =0x80000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _080704CC @ =gUnknown_2037AC8 - str r3, [r0] - ldrb r1, [r4, 0x9] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _080704B6 - ldrb r1, [r4, 0x7] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080704B6 - bl UpdateBlendRegisters -_080704B6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080704BC: .4byte gPaletteFade -_080704C0: .4byte gPlttBufferFaded -_080704C4: .4byte 0x040000d4 -_080704C8: .4byte 0x80000200 -_080704CC: .4byte gUnknown_2037AC8 - thumb_func_end TransferPlttBuffer - - thumb_func_start UpdatePaletteFade -UpdatePaletteFade: @ 80704D0 - push {lr} - ldr r0, _080704E0 @ =gUnknown_2037AC8 - ldr r0, [r0] - cmp r0, 0 - beq _080704E4 - movs r0, 0xFF - b _0807051C - .align 2, 0 -_080704E0: .4byte gUnknown_2037AC8 -_080704E4: - ldr r0, _080704F8 @ =gPaletteFade - ldrb r0, [r0, 0x9] - movs r1, 0x3 - ands r1, r0 - cmp r1, 0 - bne _080704FC - bl UpdateNormalPaletteFade - b _0807050A - .align 2, 0 -_080704F8: .4byte gPaletteFade -_080704FC: - cmp r1, 0x1 - bne _08070506 - bl UpdateFastPaletteFade - b _0807050A -_08070506: - bl UpdateHardwarePaletteFade -_0807050A: - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _08070520 @ =gUnknown_2037AC8 - ldr r0, _08070524 @ =gPaletteFade - ldr r0, [r0] - movs r1, 0 - orrs r0, r1 - str r0, [r2] - adds r0, r3, 0 -_0807051C: - pop {r1} - bx r1 - .align 2, 0 -_08070520: .4byte gUnknown_2037AC8 -_08070524: .4byte gPaletteFade - thumb_func_end UpdatePaletteFade - - thumb_func_start ResetPaletteFade -ResetPaletteFade: @ 8070528 - push {r4,lr} - movs r4, 0 -_0807052C: - adds r0, r4, 0 - bl ResetPaletteStruct - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _0807052C - bl ResetPaletteFadeControl - pop {r4} - pop {r0} - bx r0 - thumb_func_end ResetPaletteFade - - thumb_func_start ReadPlttIntoBuffers -ReadPlttIntoBuffers: @ 8070548 - push {r4-r7,lr} - movs r0, 0xA0 - lsls r0, 19 - mov r12, r0 - movs r4, 0 - ldr r7, _0807057C @ =gPlttBufferUnfaded - ldr r6, _08070580 @ =gPlttBufferFaded - ldr r5, _08070584 @ =0x000001ff -_08070558: - lsls r1, r4, 1 - adds r3, r1, r7 - mov r0, r12 - adds r2, r1, r0 - ldrh r0, [r2] - strh r0, [r3] - adds r1, r6 - ldrh r0, [r2] - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r5 - bls _08070558 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807057C: .4byte gPlttBufferUnfaded -_08070580: .4byte gPlttBufferFaded -_08070584: .4byte 0x000001ff - thumb_func_end ReadPlttIntoBuffers - - thumb_func_start BeginNormalPaletteFade -BeginNormalPaletteFade: @ 8070588 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - ldr r0, [sp, 0x18] - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r12, r2 - lsls r3, 24 - lsrs r7, r3, 24 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r5, _080705B8 @ =gPaletteFade - ldrb r1, [r5, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080705BC - movs r0, 0 - b _080706B4 - .align 2, 0 -_080705B8: .4byte gPaletteFade -_080705BC: - ldrb r0, [r5, 0xA] - movs r3, 0x79 - negs r3, r3 - adds r2, r3, 0 - ands r2, r0 - movs r0, 0x10 - orrs r2, r0 - strb r2, [r5, 0xA] - lsls r0, r6, 24 - asrs r1, r0, 24 - cmp r1, 0 - bge _080705EA - lsls r0, r2, 25 - lsrs r0, 28 - negs r1, r1 - adds r0, r1 - movs r1, 0xF - ands r0, r1 - lsls r0, 3 - ands r2, r3 - orrs r2, r0 - strb r2, [r5, 0xA] - movs r6, 0 -_080705EA: - str r4, [r5] - movs r4, 0x3F - adds r1, r6, 0 - ands r1, r4 - ldrb r2, [r5, 0x4] - movs r3, 0x40 - negs r3, r3 - adds r0, r3, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x4] - ands r6, r4 - ldrb r0, [r5, 0x8] - ands r3, r0 - orrs r3, r6 - strb r3, [r5, 0x8] - movs r0, 0x1F - mov r1, r12 - ands r1, r0 - lsls r1, 6 - ldrh r2, [r5, 0x4] - ldr r0, _08070658 @ =0xfffff83f - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - lsls r2, r7, 3 - ldrb r1, [r5, 0x5] - movs r0, 0x7 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - ldr r1, _0807065C @ =0x00007fff - mov r0, r8 - ands r1, r0 - ldrh r2, [r5, 0x6] - ldr r0, _08070660 @ =0xffff8000 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x6] - ldrb r0, [r5, 0x7] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r5, 0x7] - ldrb r1, [r5, 0x9] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x9] - cmp r12, r7 - bcs _08070664 - movs r0, 0x41 - negs r0, r0 - ands r3, r0 - b _08070668 - .align 2, 0 -_08070658: .4byte 0xfffff83f -_0807065C: .4byte 0x00007fff -_08070660: .4byte 0xffff8000 -_08070664: - movs r0, 0x40 - orrs r3, r0 -_08070668: - strb r3, [r5, 0x8] - bl UpdatePaletteFade - ldr r4, _080706C0 @ =gPaletteFade - ldrb r1, [r4, 0x8] - lsrs r5, r1, 7 - movs r0, 0x7F - ands r0, r1 - strb r0, [r4, 0x8] - ldr r0, _080706C4 @ =gPlttBufferFaded - movs r1, 0xA0 - lsls r1, 19 - ldr r2, _080706C8 @ =0x04000100 - bl CpuSet - ldr r1, _080706CC @ =gUnknown_2037AC8 - movs r0, 0 - str r0, [r1] - ldrb r1, [r4, 0x9] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _080706A4 - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080706A4 - bl UpdateBlendRegisters -_080706A4: - ldr r2, _080706C0 @ =gPaletteFade - lsls r3, r5, 7 - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x8] - movs r0, 0x1 -_080706B4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080706C0: .4byte gPaletteFade -_080706C4: .4byte gPlttBufferFaded -_080706C8: .4byte 0x04000100 -_080706CC: .4byte gUnknown_2037AC8 - thumb_func_end BeginNormalPaletteFade - - thumb_func_start unref_sub_80A1C1C -unref_sub_80A1C1C: @ 80706D0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - mov r8, r0 - adds r4, r1, 0 - adds r6, r2, 0 - ldr r5, [sp, 0x1C] - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r5, 16 - lsrs r5, 16 - str r3, [sp, 0x4] - bl ReadPlttIntoBuffers - lsls r4, 24 - asrs r4, 24 - str r5, [sp] - mov r0, r8 - adds r1, r4, 0 - adds r2, r6, 0 - ldr r3, [sp, 0x4] - bl BeginNormalPaletteFade - lsls r0, 24 - lsrs r0, 24 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end unref_sub_80A1C1C - - thumb_func_start unref_sub_80A1C64 -unref_sub_80A1C64: @ 8070718 - push {r4-r7,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - movs r5, 0 -_08070722: - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - ldr r1, _08070770 @ =gUnknown_20379F8 - adds r4, r0, r1 - ldrb r0, [r4, 0x4] - lsls r0, 31 - cmp r0, 0 - beq _08070780 - ldr r2, [r4] - ldrb r0, [r2, 0x8] - lsls r0, 31 - lsrs r0, 31 - cmp r0, r7 - bne _08070780 - ldrh r1, [r4, 0x6] - lsls r1, 20 - lsrs r1, 25 - ldrb r0, [r2, 0xB] - lsls r0, 27 - lsrs r0, 27 - cmp r1, r0 - bne _0807075E - adds r0, r4, 0 - bl unused_sub_80A1F00 - ldrb r0, [r4, 0x4] - lsls r0, 31 - cmp r0, 0 - beq _08070780 -_0807075E: - ldrb r0, [r4, 0x8] - cmp r0, 0 - bne _08070774 - adds r0, r4, 0 - adds r1, r6, 0 - bl unused_sub_80A1CDC - b _08070778 - .align 2, 0 -_08070770: .4byte gUnknown_20379F8 -_08070774: - subs r0, 0x1 - strb r0, [r4, 0x8] -_08070778: - adds r0, r4, 0 - adds r1, r6, 0 - bl unused_sub_80A1E40 -_08070780: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _08070722 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end unref_sub_80A1C64 - - thumb_func_start unused_sub_80A1CDC -unused_sub_80A1CDC: @ 8070790 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - mov r8, r1 - movs r6, 0 - ldrh r1, [r4, 0x6] - lsls r1, 20 - lsrs r1, 25 - ldr r3, [r4] - ldrb r0, [r3, 0x9] - lsls r2, r0, 25 - lsrs r0, r2, 27 - adds r5, r1, 0 - muls r5, r0 - ldrb r1, [r3, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0807082C - lsrs r0, r2, 27 - cmp r6, r0 - bcs _08070878 - ldr r0, _0807081C @ =gPlttBufferUnfaded - mov r12, r0 - ldr r7, _08070820 @ =gPlttBufferFaded -_080707C4: - ldr r0, [r4, 0x4] - lsls r0, 11 - lsrs r0, 22 - lsls r0, 1 - add r0, r12 - ldr r1, [r3, 0x4] - lsls r2, r5, 1 - adds r1, r2, r1 - ldrh r1, [r1] - strh r1, [r0] - ldr r0, [r4, 0x4] - lsls r0, 11 - lsrs r0, 22 - lsls r0, 1 - adds r0, r7 - ldr r1, [r4] - ldr r1, [r1, 0x4] - adds r2, r1 - ldrh r1, [r2] - strh r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, [r4, 0x4] - lsls r1, r2, 11 - lsrs r1, 22 - adds r1, 0x1 - ldr r0, _08070824 @ =0x000003ff - ands r1, r0 - lsls r1, 11 - ldr r0, _08070828 @ =0xffe007ff - ands r0, r2 - orrs r0, r1 - str r0, [r4, 0x4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r3, [r4] - ldrb r0, [r3, 0x9] - lsls r0, 25 - lsrs r0, 27 - cmp r6, r0 - bcc _080707C4 - b _08070878 - .align 2, 0 -_0807081C: .4byte gPlttBufferUnfaded -_08070820: .4byte gPlttBufferFaded -_08070824: .4byte 0x000003ff -_08070828: .4byte 0xffe007ff -_0807082C: - lsrs r0, r2, 27 - cmp r6, r0 - bcs _08070878 - ldr r3, _080708E4 @ =gPlttBufferFaded -_08070834: - ldr r1, [r4, 0x4] - lsls r1, 11 - lsrs r1, 22 - lsls r1, 1 - adds r1, r3 - ldr r0, [r4] - ldr r2, [r0, 0x4] - lsls r0, r5, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, [r4, 0x4] - lsls r1, r2, 11 - lsrs r1, 22 - adds r1, 0x1 - ldr r0, _080708E8 @ =0x000003ff - ands r1, r0 - lsls r1, 11 - ldr r0, _080708EC @ =0xffe007ff - ands r0, r2 - orrs r0, r1 - str r0, [r4, 0x4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, [r4] - ldrb r0, [r0, 0x9] - lsls r0, 25 - lsrs r0, 27 - cmp r6, r0 - bcc _08070834 -_08070878: - ldrh r0, [r4, 0x4] - lsls r0, 21 - lsrs r0, 23 - lsls r0, 11 - ldr r1, [r4, 0x4] - ldr r2, _080708EC @ =0xffe007ff - ands r1, r2 - orrs r1, r0 - str r1, [r4, 0x4] - ldr r3, [r4] - ldrb r0, [r3, 0xA] - strb r0, [r4, 0x8] - ldrh r2, [r4, 0x6] - lsls r0, r2, 20 - lsrs r0, 25 - adds r0, 0x1 - movs r1, 0x7F - ands r0, r1 - lsls r0, 5 - ldr r5, _080708F0 @ =0xfffff01f - adds r1, r5, 0 - ands r1, r2 - orrs r1, r0 - strh r1, [r4, 0x6] - lsls r1, 20 - lsrs r1, 25 - ldrb r0, [r3, 0xB] - lsls r0, 27 - lsrs r0, 27 - cmp r1, r0 - blt _080708C8 - ldrb r0, [r4, 0x9] - cmp r0, 0 - beq _080708C0 - subs r0, 0x1 - strb r0, [r4, 0x9] -_080708C0: - ldrh r1, [r4, 0x6] - adds r0, r5, 0 - ands r0, r1 - strh r0, [r4, 0x6] -_080708C8: - ldrh r0, [r4, 0x4] - lsls r0, 21 - lsrs r0, 27 - movs r1, 0x1 - lsls r1, r0 - mov r2, r8 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080708E4: .4byte gPlttBufferFaded -_080708E8: .4byte 0x000003ff -_080708EC: .4byte 0xffe007ff -_080708F0: .4byte 0xfffff01f - thumb_func_end unused_sub_80A1CDC - - thumb_func_start unused_sub_80A1E40 -unused_sub_80A1E40: @ 80708F4 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r3, _0807094C @ =gPaletteFade - ldrb r1, [r3, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080709A8 - ldrh r0, [r4, 0x4] - lsls r0, 21 - lsrs r6, r0, 23 - asrs r1, r6, 4 - movs r5, 0x1 - adds r0, r5, 0 - lsls r0, r1 - ldr r1, [r3] - ands r0, r1 - cmp r0, 0 - beq _080709A8 - ldr r2, [r4] - ldrb r1, [r2, 0x8] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08070950 - ldrb r1, [r3, 0x4] - lsls r1, 26 - ldrb r0, [r3, 0x8] - lsls r0, 26 - cmp r1, r0 - beq _080709A8 - adds r0, r6, 0 - ldrb r1, [r2, 0x9] - lsls r1, 25 - lsrs r1, 27 - ldrh r2, [r3, 0x4] - lsls r2, 21 - lsrs r2, 27 - ldrh r3, [r3, 0x6] - lsls r3, 17 - lsrs r3, 17 - bl BlendPalette - b _080709A8 - .align 2, 0 -_0807094C: .4byte gPaletteFade -_08070950: - ldrb r1, [r3, 0x4] - movs r0, 0x3F - ands r0, r1 - cmp r0, 0 - bne _080709A8 - ldrb r0, [r4, 0x8] - ldrb r1, [r2, 0xA] - cmp r0, r1 - beq _080709A8 - ldrh r0, [r4, 0x6] - lsls r0, 20 - lsrs r0, 25 - ldrb r1, [r2, 0x9] - lsls r1, 25 - lsrs r2, r1, 27 - adds r5, r0, 0 - muls r5, r2 - movs r3, 0 - adds r1, r2, 0 - cmp r3, r1 - bcs _080709A8 - ldr r6, _080709B0 @ =gPlttBufferFaded -_0807097C: - ldrh r1, [r4, 0x4] - lsls r1, 21 - lsrs r1, 23 - adds r1, r3 - lsls r1, 1 - adds r1, r6 - ldr r2, [r4] - adds r0, r5, r3 - ldr r2, [r2, 0x4] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, [r4] - ldrb r0, [r0, 0x9] - lsls r0, 25 - lsrs r0, 27 - cmp r3, r0 - bcc _0807097C -_080709A8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080709B0: .4byte gPlttBufferFaded - thumb_func_end unused_sub_80A1E40 - - thumb_func_start unused_sub_80A1F00 -unused_sub_80A1F00: @ 80709B4 - push {lr} - adds r3, r0, 0 - ldrb r0, [r3, 0x9] - cmp r0, 0 - bne _08070A04 - ldr r2, [r3] - ldrb r0, [r2, 0xB] - lsrs r0, 5 - cmp r0, 0 - bne _080709F4 - ldrh r1, [r3, 0x6] - ldr r0, _080709EC @ =0xfffff01f - ands r0, r1 - strh r0, [r3, 0x6] - ldrb r0, [r2, 0xA] - strb r0, [r3, 0x8] - ldrb r0, [r2, 0xC] - strb r0, [r3, 0x9] - ldrh r0, [r3, 0x4] - lsls r0, 21 - lsrs r0, 23 - lsls r0, 11 - ldr r1, [r3, 0x4] - ldr r2, _080709F0 @ =0xffe007ff - ands r1, r2 - orrs r1, r0 - str r1, [r3, 0x4] - b _08070A08 - .align 2, 0 -_080709EC: .4byte 0xfffff01f -_080709F0: .4byte 0xffe007ff -_080709F4: - cmp r0, 0 - blt _08070A08 - cmp r0, 0x2 - bgt _08070A08 - ldrh r0, [r2] - bl ResetPaletteStructByUid - b _08070A08 -_08070A04: - subs r0, 0x1 - strb r0, [r3, 0x9] -_08070A08: - pop {r0} - bx r0 - thumb_func_end unused_sub_80A1F00 - - thumb_func_start ResetPaletteStructByUid -ResetPaletteStructByUid: @ 8070A0C - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetPaletteNumByUid - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _08070A22 - bl ResetPaletteStruct -_08070A22: - pop {r0} - bx r0 - thumb_func_end ResetPaletteStructByUid - - thumb_func_start ResetPaletteStruct -ResetPaletteStruct: @ 8070A28 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08070A70 @ =gUnknown_20379F8 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r0, _08070A74 @ =gUnknown_83AC960 - str r0, [r1] - ldrb r2, [r1, 0x4] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x4] - ldrh r2, [r1, 0x4] - ldr r0, _08070A78 @ =0xfffff803 - ands r0, r2 - strh r0, [r1, 0x4] - ldr r0, [r1, 0x4] - ldr r2, _08070A7C @ =0xffe007ff - ands r0, r2 - str r0, [r1, 0x4] - ldrh r2, [r1, 0x6] - ldr r0, _08070A80 @ =0xfffff01f - ands r0, r2 - strh r0, [r1, 0x6] - ldrb r2, [r1, 0x4] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x4] - movs r0, 0 - strb r0, [r1, 0x8] - strb r0, [r1, 0x9] - bx lr - .align 2, 0 -_08070A70: .4byte gUnknown_20379F8 -_08070A74: .4byte gUnknown_83AC960 -_08070A78: .4byte 0xfffff803 -_08070A7C: .4byte 0xffe007ff -_08070A80: .4byte 0xfffff01f - thumb_func_end ResetPaletteStruct - - thumb_func_start ResetPaletteFadeControl -ResetPaletteFadeControl: @ 8070A84 - ldr r2, _08070AEC @ =gPaletteFade - movs r0, 0 - str r0, [r2] - subs r0, 0x40 - ldrb r1, [r2, 0x4] - ands r0, r1 - strb r0, [r2, 0x4] - ldrh r1, [r2, 0x4] - ldr r0, _08070AF0 @ =0xfffff83f - ands r0, r1 - strh r0, [r2, 0x4] - ldrb r1, [r2, 0x5] - movs r0, 0x7 - ands r0, r1 - strb r0, [r2, 0x5] - ldrh r1, [r2, 0x6] - ldr r0, _08070AF4 @ =0xffff8000 - ands r0, r1 - strh r0, [r2, 0x6] - ldrb r1, [r2, 0x7] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x7] - movs r0, 0 - strb r0, [r2, 0x8] - ldrb r1, [r2, 0x9] - movs r3, 0x5 - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x9 - negs r1, r1 - ands r0, r1 - strb r0, [r2, 0x9] - ldrb r1, [r2, 0xA] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0xA] - ldr r0, [r2, 0x8] - ldr r1, _08070AF8 @ =0xfffe0fff - ands r0, r1 - str r0, [r2, 0x8] - ldrb r0, [r2, 0xA] - ands r3, r0 - movs r0, 0x79 - negs r0, r0 - ands r3, r0 - movs r0, 0x10 - orrs r3, r0 - strb r3, [r2, 0xA] - bx lr - .align 2, 0 -_08070AEC: .4byte gPaletteFade -_08070AF0: .4byte 0xfffff83f -_08070AF4: .4byte 0xffff8000 -_08070AF8: .4byte 0xfffe0fff - thumb_func_end ResetPaletteFadeControl - - thumb_func_start unref_sub_80A2048 -unref_sub_80A2048: @ 8070AFC - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetPaletteNumByUid - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x10 - beq _08070B20 - ldr r1, _08070B24 @ =gUnknown_20379F8 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x4] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x4] -_08070B20: - pop {r0} - bx r0 - .align 2, 0 -_08070B24: .4byte gUnknown_20379F8 - thumb_func_end unref_sub_80A2048 - - thumb_func_start unref_sub_80A2074 -unref_sub_80A2074: @ 8070B28 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetPaletteNumByUid - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x10 - beq _08070B4E - ldr r0, _08070B54 @ =gUnknown_20379F8 - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x4] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x4] -_08070B4E: - pop {r0} - bx r0 - .align 2, 0 -_08070B54: .4byte gUnknown_20379F8 - thumb_func_end unref_sub_80A2074 - - thumb_func_start GetPaletteNumByUid -GetPaletteNumByUid: @ 8070B58 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - ldr r3, _08070B78 @ =gUnknown_20379F8 -_08070B62: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, r2 - bne _08070B7C - adds r0, r1, 0 - b _08070B88 - .align 2, 0 -_08070B78: .4byte gUnknown_20379F8 -_08070B7C: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _08070B62 - movs r0, 0x10 -_08070B88: - pop {r1} - bx r1 - thumb_func_end GetPaletteNumByUid - - thumb_func_start UpdateNormalPaletteFade -UpdateNormalPaletteFade: @ 8070B8C - push {r4-r7,lr} - ldr r4, _08070BA0 @ =gPaletteFade - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08070BA4 - movs r0, 0 - b _08070CC0 - .align 2, 0 -_08070BA0: .4byte gPaletteFade -_08070BA4: - bl IsSoftwarePaletteFadeFinishing - lsls r0, 24 - cmp r0, 0 - beq _08070BB2 - ldrb r0, [r4, 0x7] - b _08070CBE -_08070BB2: - ldrb r1, [r4, 0xA] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08070BE6 - ldrb r2, [r4, 0x4] - lsls r1, r2, 26 - ldrb r0, [r4, 0x8] - lsls r0, 26 - cmp r1, r0 - bcs _08070BDE - lsrs r0, r1, 26 - adds r0, 0x1 - movs r1, 0x3F - ands r0, r1 - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x4] - movs r0, 0x2 - b _08070CC0 -_08070BDE: - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - strb r0, [r4, 0x4] -_08070BE6: - movs r5, 0 - ldr r2, _08070BFC @ =gPaletteFade - ldrb r1, [r2, 0xA] - movs r0, 0x4 - ands r0, r1 - adds r7, r2, 0 - cmp r0, 0 - bne _08070C00 - ldrh r4, [r7] - b _08070C06 - .align 2, 0 -_08070BFC: .4byte gPaletteFade -_08070C00: - ldrh r4, [r7, 0x2] - movs r5, 0x80 - lsls r5, 1 -_08070C06: - cmp r4, 0 - beq _08070C38 - ldr r7, _08070C74 @ =gPaletteFade - adds r6, r7, 0 -_08070C0E: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _08070C2A - ldrh r2, [r6, 0x4] - lsls r2, 21 - lsrs r2, 27 - ldrh r3, [r6, 0x6] - lsls r3, 17 - lsrs r3, 17 - adds r0, r5, 0 - movs r1, 0x10 - bl BlendPalette -_08070C2A: - lsrs r4, 1 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0 - bne _08070C0E -_08070C38: - ldrb r2, [r7, 0xA] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r4, 0x5 - negs r4, r4 - ands r4, r2 - orrs r4, r1 - strb r4, [r7, 0xA] - movs r0, 0x4 - ands r0, r4 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _08070CBC - ldrh r6, [r7, 0x4] - lsls r2, r6, 21 - ldrb r0, [r7, 0x5] - lsls r5, r0, 24 - lsrs r1, r2, 27 - lsrs r0, r5, 27 - cmp r1, r0 - bne _08070C78 - str r3, [r7] - movs r0, 0x2 - orrs r4, r0 - strb r4, [r7, 0xA] - b _08070CBC - .align 2, 0 -_08070C74: .4byte gPaletteFade -_08070C78: - ldrb r1, [r7, 0x8] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08070C94 - lsrs r3, r2, 27 - lsls r0, r4, 25 - lsrs r0, 28 - adds r3, r0, r3 - lsrs r0, r5, 27 - cmp r3, r0 - ble _08070CAA - adds r3, r0, 0 - b _08070CAA -_08070C94: - lsrs r3, r2, 27 - lsls r0, r4, 25 - lsrs r0, 28 - subs r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - asrs r0, 24 - lsrs r1, r5, 27 - cmp r0, r1 - bge _08070CAA - adds r3, r1, 0 -_08070CAA: - lsls r0, r3, 24 - asrs r0, 24 - movs r1, 0x1F - ands r0, r1 - lsls r0, 6 - ldr r1, _08070CC8 @ =0xfffff83f - ands r1, r6 - orrs r1, r0 - strh r1, [r7, 0x4] -_08070CBC: - ldrb r0, [r7, 0x7] -_08070CBE: - lsrs r0, 7 -_08070CC0: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08070CC8: .4byte 0xfffff83f - thumb_func_end UpdateNormalPaletteFade - - thumb_func_start InvertPlttBuffer -InvertPlttBuffer: @ 8070CCC - push {r4-r7,lr} - adds r1, r0, 0 - movs r3, 0 - cmp r1, 0 - beq _08070D0A - ldr r7, _08070D10 @ =gPlttBufferFaded -_08070CD8: - movs r0, 0x1 - ands r0, r1 - lsrs r4, r1, 1 - adds r5, r3, 0 - adds r5, 0x10 - cmp r0, 0 - beq _08070D00 - movs r2, 0 - adds r6, r7, 0 -_08070CEA: - adds r0, r3, r2 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r0] - mvns r1, r1 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _08070CEA -_08070D00: - adds r1, r4, 0 - lsls r0, r5, 16 - lsrs r3, r0, 16 - cmp r1, 0 - bne _08070CD8 -_08070D0A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070D10: .4byte gPlttBufferFaded - thumb_func_end InvertPlttBuffer - - thumb_func_start TintPlttBuffer -TintPlttBuffer: @ 8070D14 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x4] - movs r0, 0 - mov r9, r0 - cmp r4, 0 - beq _08070DD0 - lsls r1, 24 - str r1, [sp, 0x8] -_08070D3E: - movs r0, 0x1 - ands r0, r4 - lsrs r4, 1 - str r4, [sp, 0xC] - movs r1, 0x10 - add r1, r9 - mov r10, r1 - cmp r0, 0 - beq _08070DC2 - movs r4, 0 - ldr r2, _08070DE0 @ =gPlttBufferFaded - mov r8, r2 - ldr r1, [sp] - lsls r0, r1, 24 - ldr r2, [sp, 0x4] - lsls r1, r2, 24 - ldr r2, [sp, 0x8] - asrs r2, 24 - mov r12, r2 - movs r5, 0x1F - asrs r7, r0, 24 - asrs r6, r1, 24 -_08070D6A: - mov r0, r9 - adds r2, r0, r4 - lsls r2, 1 - add r2, r8 - ldr r1, [r2] - lsls r1, 27 - lsrs r1, 27 - add r1, r12 - ands r1, r5 - ldrb r3, [r2] - movs r0, 0x20 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r2] - lsls r1, 22 - lsrs r1, 27 - adds r1, r7 - movs r0, 0x1F - ands r1, r0 - lsls r1, 5 - ldrh r3, [r2] - ldr r0, _08070DE4 @ =0xfffffc1f - ands r0, r3 - orrs r0, r1 - strh r0, [r2] - ldr r1, [r2] - lsls r1, 17 - lsrs r1, 27 - adds r1, r6 - ands r1, r5 - lsls r1, 2 - ldrb r3, [r2, 0x1] - movs r0, 0x7D - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _08070D6A -_08070DC2: - ldr r4, [sp, 0xC] - mov r1, r10 - lsls r0, r1, 16 - lsrs r0, 16 - mov r9, r0 - cmp r4, 0 - bne _08070D3E -_08070DD0: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070DE0: .4byte gPlttBufferFaded -_08070DE4: .4byte 0xfffffc1f - thumb_func_end TintPlttBuffer - - thumb_func_start UnfadePlttBuffer -UnfadePlttBuffer: @ 8070DE8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r1, r0, 0 - movs r3, 0 - cmp r1, 0 - beq _08070E32 - ldr r0, _08070E3C @ =gPlttBufferFaded - mov r8, r0 - ldr r0, _08070E40 @ =gPlttBufferUnfaded - mov r12, r0 -_08070DFE: - movs r0, 0x1 - ands r0, r1 - lsrs r4, r1, 1 - adds r5, r3, 0 - adds r5, 0x10 - cmp r0, 0 - beq _08070E28 - movs r2, 0 - mov r7, r8 - mov r6, r12 -_08070E12: - adds r0, r3, r2 - lsls r0, 1 - adds r1, r0, r7 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _08070E12 -_08070E28: - adds r1, r4, 0 - lsls r0, r5, 16 - lsrs r3, r0, 16 - cmp r1, 0 - bne _08070DFE -_08070E32: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070E3C: .4byte gPlttBufferFaded -_08070E40: .4byte gPlttBufferUnfaded - thumb_func_end UnfadePlttBuffer - - thumb_func_start BeginFastPaletteFade -BeginFastPaletteFade: @ 8070E44 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08070E64 @ =gPaletteFade - ldrb r2, [r3, 0xA] - movs r1, 0x79 - negs r1, r1 - ands r1, r2 - movs r2, 0x10 - orrs r1, r2 - strb r1, [r3, 0xA] - bl BeginFastPaletteFadeInternal - pop {r0} - bx r0 - .align 2, 0 -_08070E64: .4byte gPaletteFade - thumb_func_end BeginFastPaletteFade - - thumb_func_start BeginFastPaletteFadeInternal -BeginFastPaletteFadeInternal: @ 8070E68 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r2, _08070EDC @ =gPaletteFade - ldrh r0, [r2, 0x4] - movs r3, 0xF8 - lsls r3, 3 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2, 0x4] - movs r1, 0x3F - ands r1, r4 - ldrb r3, [r2, 0x8] - movs r0, 0x40 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x8] - ldrb r0, [r2, 0x7] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x7] - ldrb r1, [r2, 0x9] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - cmp r4, 0x2 - bne _08070EBA - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, _08070EE0 @ =gPlttBufferFaded - ldr r2, _08070EE4 @ =0x01000200 - mov r0, sp - bl CpuSet -_08070EBA: - cmp r4, 0 - bne _08070ED0 - mov r0, sp - adds r0, 0x2 - ldr r2, _08070EE8 @ =0x00007fff - adds r1, r2, 0 - strh r1, [r0] - ldr r1, _08070EE0 @ =gPlttBufferFaded - ldr r2, _08070EE4 @ =0x01000200 - bl CpuSet -_08070ED0: - bl UpdatePaletteFade - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08070EDC: .4byte gPaletteFade -_08070EE0: .4byte gPlttBufferFaded -_08070EE4: .4byte 0x01000200 -_08070EE8: .4byte 0x00007fff - thumb_func_end BeginFastPaletteFadeInternal - - thumb_func_start UpdateFastPaletteFade -UpdateFastPaletteFade: @ 8070EEC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r4, _08070F08 @ =gPaletteFade - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08070F0C - movs r0, 0 - b _08071246 - .align 2, 0 -_08070F08: .4byte gPaletteFade -_08070F0C: - bl IsSoftwarePaletteFadeFinishing - lsls r0, 24 - cmp r0, 0 - beq _08070F1A - ldrb r0, [r4, 0x7] - b _08071244 -_08070F1A: - ldrb r1, [r4, 0xA] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08070F30 - movs r2, 0x80 - lsls r2, 1 - movs r0, 0x80 - lsls r0, 2 - mov r10, r0 - b _08070F38 -_08070F30: - movs r2, 0 - movs r1, 0x80 - lsls r1, 1 - mov r10, r1 -_08070F38: - ldr r1, _08070F50 @ =gPaletteFade - ldrb r0, [r1, 0x8] - lsls r0, 26 - lsrs r0, 26 - cmp r0, 0x1 - beq _08070FF8 - cmp r0, 0x1 - bgt _08070F54 - cmp r0, 0 - beq _08070F62 - b _08071148 - .align 2, 0 -_08070F50: .4byte gPaletteFade -_08070F54: - cmp r0, 0x2 - bne _08070F5A - b _0807105C -_08070F5A: - cmp r0, 0x3 - bne _08070F60 - b _080710E4 -_08070F60: - b _08071148 -_08070F62: - adds r7, r2, 0 - cmp r7, r10 - bcc _08070F6A - b _08071148 -_08070F6A: - lsls r2, r7, 1 - ldr r0, _08070FF0 @ =gPlttBufferUnfaded - adds r0, r2, r0 - ldr r1, [r0] - lsls r3, r1, 27 - lsls r0, r1, 22 - lsrs r0, 27 - mov r12, r0 - lsls r1, 17 - lsrs r1, 27 - mov r8, r1 - ldr r0, _08070FF4 @ =gPlttBufferFaded - adds r2, r0 - mov r9, r2 - ldr r1, [r2] - lsls r2, r1, 27 - lsrs r2, 3 - movs r4, 0xFE - lsls r4, 24 - adds r2, r4 - lsls r0, r1, 22 - lsrs r0, 27 - subs r0, 0x2 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 17 - lsrs r1, 27 - subs r1, 0x2 - lsls r1, 24 - lsrs r4, r1, 24 - lsrs r6, r2, 24 - asrs r2, 24 - lsrs r3, 3 - asrs r0, r3, 24 - cmp r2, r0 - bge _08070FB4 - lsrs r6, r3, 24 -_08070FB4: - lsls r0, r5, 24 - asrs r0, 24 - mov r2, r12 - lsls r1, r2, 24 - cmp r0, r12 - bge _08070FC2 - lsrs r5, r1, 24 -_08070FC2: - lsls r0, r4, 24 - asrs r0, 24 - mov r3, r8 - lsls r1, r3, 24 - cmp r0, r8 - bge _08070FD0 - lsrs r4, r1, 24 -_08070FD0: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 24 - asrs r0, 19 - orrs r1, r0 - lsls r0, r4, 24 - asrs r0, 14 - orrs r1, r0 - mov r4, r9 - strh r1, [r4] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _08070F6A - b _08071148 - .align 2, 0 -_08070FF0: .4byte gPlttBufferUnfaded -_08070FF4: .4byte gPlttBufferFaded -_08070FF8: - adds r7, r2, 0 - cmp r7, r10 - bcc _08071000 - b _08071148 -_08071000: - lsls r1, r7, 1 - ldr r0, _08071058 @ =gPlttBufferFaded - adds r2, r1, r0 - ldr r1, [r2] - lsls r0, r1, 27 - lsrs r0, 3 - movs r3, 0x80 - lsls r3, 18 - adds r0, r3 - lsrs r6, r0, 24 - lsls r0, r1, 22 - lsrs r0, 27 - adds r5, r0, 0x2 - lsls r1, 17 - lsrs r1, 27 - adds r4, r1, 0x2 - cmp r6, 0x1F - ble _08071026 - movs r6, 0x1F -_08071026: - lsls r0, r5, 24 - asrs r0, 24 - cmp r0, 0x1F - ble _08071030 - movs r5, 0x1F -_08071030: - lsls r0, r4, 24 - asrs r0, 24 - cmp r0, 0x1F - ble _0807103A - movs r4, 0x1F -_0807103A: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 24 - asrs r0, 19 - orrs r1, r0 - lsls r0, r4, 24 - asrs r0, 14 - orrs r1, r0 - strh r1, [r2] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _08071000 - b _08071148 - .align 2, 0 -_08071058: .4byte gPlttBufferFaded -_0807105C: - adds r7, r2, 0 - cmp r7, r10 - bcs _08071148 -_08071062: - lsls r2, r7, 1 - ldr r0, _080710DC @ =gPlttBufferUnfaded - adds r0, r2, r0 - ldr r1, [r0] - lsls r3, r1, 27 - lsls r0, r1, 22 - lsrs r0, 27 - mov r12, r0 - lsls r1, 17 - lsrs r1, 27 - mov r8, r1 - ldr r0, _080710E0 @ =gPlttBufferFaded - adds r2, r0 - ldr r1, [r2] - lsls r0, r1, 27 - lsrs r0, 3 - movs r4, 0x80 - lsls r4, 18 - adds r0, r4 - lsrs r6, r0, 24 - lsls r0, r1, 22 - lsrs r0, 27 - adds r5, r0, 0x2 - lsls r1, 17 - lsrs r1, 27 - adds r4, r1, 0x2 - lsrs r3, 3 - asrs r0, r3, 24 - cmp r6, r0 - ble _080710A0 - lsrs r6, r3, 24 -_080710A0: - lsls r0, r5, 24 - asrs r0, 24 - mov r3, r12 - lsls r1, r3, 24 - cmp r0, r12 - ble _080710AE - lsrs r5, r1, 24 -_080710AE: - lsls r0, r4, 24 - asrs r0, 24 - mov r3, r8 - lsls r1, r3, 24 - cmp r0, r8 - ble _080710BC - lsrs r4, r1, 24 -_080710BC: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 24 - asrs r0, 19 - orrs r1, r0 - lsls r0, r4, 24 - asrs r0, 14 - orrs r1, r0 - strh r1, [r2] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _08071062 - b _08071148 - .align 2, 0 -_080710DC: .4byte gPlttBufferUnfaded -_080710E0: .4byte gPlttBufferFaded -_080710E4: - adds r7, r2, 0 - cmp r7, r10 - bcs _08071148 - ldr r4, _08071170 @ =gPlttBufferFaded - mov r8, r4 -_080710EE: - lsls r0, r7, 1 - mov r1, r8 - adds r3, r0, r1 - ldr r1, [r3] - lsls r2, r1, 27 - lsrs r2, 3 - movs r4, 0xFE - lsls r4, 24 - adds r2, r4 - lsls r0, r1, 22 - lsrs r0, 27 - subs r0, 0x2 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 17 - lsrs r1, 27 - subs r1, 0x2 - lsls r1, 24 - lsrs r4, r1, 24 - lsrs r6, r2, 24 - cmp r2, 0 - bge _0807111C - movs r6, 0 -_0807111C: - lsls r0, r5, 24 - cmp r0, 0 - bge _08071124 - movs r5, 0 -_08071124: - lsls r0, r4, 24 - cmp r0, 0 - bge _0807112C - movs r4, 0 -_0807112C: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 24 - asrs r0, 19 - orrs r1, r0 - lsls r0, r4, 24 - asrs r0, 14 - orrs r1, r0 - strh r1, [r3] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _080710EE -_08071148: - ldr r0, _08071174 @ =gPaletteFade - ldrb r2, [r0, 0xA] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r3, 0x5 - negs r3, r3 - ands r3, r2 - orrs r3, r1 - ldr r1, _08071174 @ =gPaletteFade - strb r3, [r1, 0xA] - movs r0, 0x4 - ands r0, r3 - cmp r0, 0 - beq _08071178 - ldrb r0, [r1, 0x7] - b _08071244 - .align 2, 0 -_08071170: .4byte gPlttBufferFaded -_08071174: .4byte gPaletteFade -_08071178: - ldr r2, _08071194 @ =gPaletteFade - ldrh r4, [r2, 0x4] - lsls r5, r4, 21 - lsrs r0, r5, 27 - lsls r2, r3, 25 - lsrs r1, r2, 28 - subs r0, r1 - cmp r0, 0 - bge _0807119C - ldr r0, _08071198 @ =0xfffff83f - ands r0, r4 - ldr r3, _08071194 @ =gPaletteFade - strh r0, [r3, 0x4] - b _080711B2 - .align 2, 0 -_08071194: .4byte gPaletteFade -_08071198: .4byte 0xfffff83f -_0807119C: - lsrs r1, r5, 27 - lsrs r0, r2, 28 - subs r1, r0 - movs r0, 0x1F - ands r1, r0 - lsls r1, 6 - ldr r0, _080711D8 @ =0xfffff83f - ands r0, r4 - orrs r0, r1 - ldr r4, _080711DC @ =gPaletteFade - strh r0, [r4, 0x4] -_080711B2: - ldr r1, _080711DC @ =gPaletteFade - ldrh r0, [r1, 0x4] - movs r1, 0xF8 - lsls r1, 3 - ands r1, r0 - cmp r1, 0 - bne _08071240 - ldr r2, _080711DC @ =gPaletteFade - ldrb r0, [r2, 0x8] - lsls r0, 26 - lsrs r0, 26 - cmp r0, 0x1 - beq _08071204 - cmp r0, 0x1 - bgt _080711E0 - cmp r0, 0 - beq _080711EA - b _0807122C - .align 2, 0 -_080711D8: .4byte 0xfffff83f -_080711DC: .4byte gPaletteFade -_080711E0: - cmp r0, 0x2 - beq _080711EA - cmp r0, 0x3 - beq _08071220 - b _0807122C -_080711EA: - ldr r0, _080711F8 @ =gPlttBufferUnfaded - ldr r1, _080711FC @ =gPlttBufferFaded - ldr r2, _08071200 @ =0x04000100 - bl CpuSet - b _0807122C - .align 2, 0 -_080711F8: .4byte gPlttBufferUnfaded -_080711FC: .4byte gPlttBufferFaded -_08071200: .4byte 0x04000100 -_08071204: - movs r0, 0x1 - negs r0, r0 - str r0, [sp] - ldr r1, _08071218 @ =gPlttBufferFaded - ldr r2, _0807121C @ =0x05000100 - mov r0, sp - bl CpuSet - b _0807122C - .align 2, 0 -_08071218: .4byte gPlttBufferFaded -_0807121C: .4byte 0x05000100 -_08071220: - str r1, [sp, 0x4] - add r0, sp, 0x4 - ldr r1, _08071258 @ =gPlttBufferFaded - ldr r2, _0807125C @ =0x05000100 - bl CpuSet -_0807122C: - ldr r2, _08071260 @ =gPaletteFade - ldrb r1, [r2, 0x9] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldrb r0, [r2, 0xA] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0xA] -_08071240: - ldr r3, _08071260 @ =gPaletteFade - ldrb r0, [r3, 0x7] -_08071244: - lsrs r0, 7 -_08071246: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08071258: .4byte gPlttBufferFaded -_0807125C: .4byte 0x05000100 -_08071260: .4byte gPaletteFade - thumb_func_end UpdateFastPaletteFade - - thumb_func_start BeginHardwarePaletteFade -BeginHardwarePaletteFade: @ 8071264 - push {r4-r7,lr} - ldr r5, [sp, 0x14] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r7, _080712EC @ =gPaletteFade - str r0, [r7] - movs r0, 0x3F - ands r1, r0 - ldrb r4, [r7, 0x4] - movs r6, 0x40 - negs r6, r6 - adds r0, r6, 0 - ands r0, r4 - orrs r0, r1 - strb r0, [r7, 0x4] - ldrb r0, [r7, 0x8] - ands r6, r0 - orrs r6, r1 - strb r6, [r7, 0x8] - movs r0, 0x1F - adds r1, r2, 0 - ands r1, r0 - lsls r1, 6 - ldrh r4, [r7, 0x4] - ldr r0, _080712F0 @ =0xfffff83f - ands r0, r4 - orrs r0, r1 - strh r0, [r7, 0x4] - lsls r4, r3, 3 - ldrb r1, [r7, 0x5] - movs r0, 0x7 - ands r0, r1 - orrs r0, r4 - strb r0, [r7, 0x5] - ldrb r0, [r7, 0x7] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r7, 0x7] - ldrb r1, [r7, 0x9] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - movs r1, 0x1 - ands r5, r1 - lsls r5, 2 - subs r1, 0x6 - ands r0, r1 - orrs r0, r5 - subs r1, 0x4 - ands r0, r1 - strb r0, [r7, 0x9] - cmp r2, r3 - bcs _080712F4 - movs r0, 0x41 - negs r0, r0 - ands r6, r0 - b _080712F8 - .align 2, 0 -_080712EC: .4byte gPaletteFade -_080712F0: .4byte 0xfffff83f -_080712F4: - movs r0, 0x40 - orrs r6, r0 -_080712F8: - strb r6, [r7, 0x8] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BeginHardwarePaletteFade - - thumb_func_start UpdateHardwarePaletteFade -UpdateHardwarePaletteFade: @ 8071300 - push {r4-r7,lr} - ldr r2, _08071314 @ =gPaletteFade - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - adds r4, r2, 0 - cmp r0, 0 - bne _08071318 - movs r0, 0 - b _08071410 - .align 2, 0 -_08071314: .4byte gPaletteFade -_08071318: - ldrb r2, [r4, 0x4] - lsls r1, r2, 26 - ldrb r3, [r4, 0x8] - lsls r0, r3, 26 - cmp r1, r0 - bcs _0807133A - lsrs r0, r1, 26 - adds r0, 0x1 - movs r1, 0x3F - ands r0, r1 - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x4] - movs r0, 0x2 - b _08071410 -_0807133A: - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - strb r0, [r4, 0x4] - movs r0, 0x40 - ands r0, r3 - cmp r0, 0 - bne _08071398 - ldrh r1, [r4, 0x4] - lsls r0, r1, 21 - lsrs r0, 27 - adds r0, 0x1 - movs r7, 0x1F - ands r0, r7 - lsls r0, 6 - ldr r6, _08071394 @ =0xfffff83f - adds r3, r6, 0 - ands r3, r1 - orrs r3, r0 - strh r3, [r4, 0x4] - lsls r5, r3, 21 - ldrb r0, [r4, 0x5] - lsrs r1, r5, 27 - lsrs r0, 3 - cmp r1, r0 - bls _080713E4 - ldrb r2, [r4, 0x9] - lsls r1, r2, 28 - lsrs r1, 31 - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - lsls r1, 3 - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x9] - lsrs r0, r5, 27 - subs r0, 0x1 - ands r0, r7 - lsls r0, 6 - ands r3, r6 - b _080713E0 - .align 2, 0 -_08071394: .4byte 0xfffff83f -_08071398: - ldrh r2, [r4, 0x4] - lsls r1, r2, 21 - lsrs r0, r1, 27 - subs r0, 0x1 - movs r6, 0x1F - ands r0, r6 - lsls r0, 6 - ldr r5, _08071418 @ =0xfffff83f - adds r3, r5, 0 - ands r3, r2 - orrs r3, r0 - strh r3, [r4, 0x4] - lsrs r1, 27 - subs r1, 0x1 - ldrb r0, [r4, 0x5] - lsrs r0, 3 - cmp r1, r0 - bge _080713E4 - ldrb r2, [r4, 0x9] - lsls r1, r2, 28 - lsrs r1, 31 - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - lsls r1, 3 - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x9] - lsls r0, r3, 21 - lsrs r0, 27 - adds r0, 0x1 - ands r0, r6 - lsls r0, 6 - ands r3, r5 -_080713E0: - orrs r3, r0 - strh r3, [r4, 0x4] -_080713E4: - ldrb r1, [r4, 0x9] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0807140C - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08071402 - movs r0, 0 - str r0, [r4] - ldrh r1, [r4, 0x4] - ldr r0, _08071418 @ =0xfffff83f - ands r0, r1 - strh r0, [r4, 0x4] -_08071402: - ldrb r1, [r4, 0x9] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x9] -_0807140C: - ldrb r0, [r4, 0x7] - lsrs r0, 7 -_08071410: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08071418: .4byte 0xfffff83f - thumb_func_end UpdateHardwarePaletteFade - - thumb_func_start UpdateBlendRegisters -UpdateBlendRegisters: @ 807141C - push {r4,lr} - ldr r4, _08071468 @ =gPaletteFade - ldrh r1, [r4] - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x4] - lsls r1, 21 - lsrs r1, 27 - movs r0, 0x54 - bl SetGpuReg - ldrb r1, [r4, 0x9] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08071460 - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - negs r1, r1 - ands r0, r1 - strb r0, [r4, 0x9] - movs r0, 0 - str r0, [r4] - ldrh r1, [r4, 0x4] - ldr r0, _0807146C @ =0xfffff83f - ands r0, r1 - strh r0, [r4, 0x4] - ldrb r1, [r4, 0x7] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4, 0x7] -_08071460: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08071468: .4byte gPaletteFade -_0807146C: .4byte 0xfffff83f - thumb_func_end UpdateBlendRegisters - - thumb_func_start IsSoftwarePaletteFadeFinishing -IsSoftwarePaletteFadeFinishing: @ 8071470 - push {r4,lr} - ldr r3, _080714A8 @ =gPaletteFade - ldrb r4, [r3, 0xA] - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _080714CC - ldr r2, [r3, 0x8] - movs r0, 0xF8 - lsls r0, 9 - ands r0, r2 - movs r1, 0x80 - lsls r1, 7 - cmp r0, r1 - bne _080714B0 - ldrb r1, [r3, 0x7] - movs r0, 0x7F - ands r0, r1 - strb r0, [r3, 0x7] - movs r0, 0x3 - negs r0, r0 - ands r0, r4 - strb r0, [r3, 0xA] - ldr r0, [r3, 0x8] - ldr r1, _080714AC @ =0xfffe0fff - ands r0, r1 - str r0, [r3, 0x8] - b _080714C4 - .align 2, 0 -_080714A8: .4byte gPaletteFade -_080714AC: .4byte 0xfffe0fff -_080714B0: - lsls r0, r2, 15 - lsrs r0, 27 - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - lsls r0, 12 - ldr r1, _080714C8 @ =0xfffe0fff - ands r1, r2 - orrs r1, r0 - str r1, [r3, 0x8] -_080714C4: - movs r0, 0x1 - b _080714CE - .align 2, 0 -_080714C8: .4byte 0xfffe0fff -_080714CC: - movs r0, 0 -_080714CE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsSoftwarePaletteFadeFinishing - - thumb_func_start BlendPalettes -BlendPalettes: @ 80714D4 - push {r4-r7,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 16 - lsrs r6, r2, 16 - movs r5, 0 - cmp r4, 0 - beq _08071508 -_080714E6: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080714FA - adds r0, r5, 0 - movs r1, 0x10 - adds r2, r7, 0 - adds r3, r6, 0 - bl BlendPalette -_080714FA: - lsrs r4, 1 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0 - bne _080714E6 -_08071508: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BlendPalettes - - thumb_func_start BlendPalettesUnfaded -BlendPalettesUnfaded: @ 8071510 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _0807153C @ =gPlttBufferUnfaded - ldr r1, _08071540 @ =gPlttBufferFaded - movs r2, 0x80 - lsls r2, 1 - bl CpuFastSet - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl BlendPalettes - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807153C: .4byte gPlttBufferUnfaded -_08071540: .4byte gPlttBufferFaded - thumb_func_end BlendPalettesUnfaded - - thumb_func_start TintPalette_GrayScale -TintPalette_GrayScale: @ 8071544 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0 - beq _0807158C - movs r6, 0x1F - adds r5, r1, 0 -_08071554: - ldrh r1, [r4] - movs r2, 0x1F - ands r2, r1 - lsls r1, 16 - lsrs r3, r1, 21 - ands r3, r6 - lsrs r1, 26 - ands r1, r6 - movs r0, 0x4C - muls r2, r0 - movs r0, 0x97 - muls r0, r3 - adds r2, r0 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - adds r2, r0 - asrs r2, 8 - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r4] - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08071554 -_0807158C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end TintPalette_GrayScale - - thumb_func_start TintPalette_GrayScale2 -TintPalette_GrayScale2: @ 8071594 - push {r4-r7,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0 - beq _080715E8 - movs r6, 0x1F - ldr r7, _080715F0 @ =gUnknown_83AC970 - adds r5, r1, 0 -_080715A6: - ldrh r1, [r4] - movs r2, 0x1F - ands r2, r1 - lsls r1, 16 - lsrs r3, r1, 21 - ands r3, r6 - lsrs r1, 26 - ands r1, r6 - movs r0, 0x4C - muls r2, r0 - movs r0, 0x97 - muls r0, r3 - adds r2, r0 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - adds r2, r0 - asrs r2, 8 - cmp r2, 0x1F - bls _080715D2 - movs r2, 0x1F -_080715D2: - adds r0, r2, r7 - ldrb r2, [r0] - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r4] - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _080715A6 -_080715E8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080715F0: .4byte gUnknown_83AC970 - thumb_func_end TintPalette_GrayScale2 - - thumb_func_start TintPalette_SepiaTone -TintPalette_SepiaTone: @ 80715F4 - push {r4-r7,lr} - adds r5, r0, 0 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0 - beq _08071656 - movs r7, 0x1F - adds r6, r1, 0 -_08071604: - ldrh r0, [r5] - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r2, r0, 21 - ands r2, r7 - lsrs r3, r0, 26 - ands r3, r7 - movs r0, 0x4C - muls r1, r0 - movs r0, 0x97 - muls r0, r2 - adds r1, r0 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r3 - adds r1, r0 - asrs r1, 8 - ldr r0, _0807165C @ =0x00000133 - muls r0, r1 - lsls r0, 16 - lsrs r2, r0, 24 - lsls r0, r1, 24 - lsrs r4, r0, 24 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 20 - lsrs r3, r0, 24 - cmp r2, 0x1F - ble _08071644 - movs r2, 0x1F -_08071644: - lsls r0, r3, 10 - lsls r1, r4, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r5] - adds r5, 0x2 - subs r6, 0x1 - cmp r6, 0 - bne _08071604 -_08071656: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807165C: .4byte 0x00000133 - thumb_func_end TintPalette_SepiaTone - - thumb_func_start sub_8071660 -sub_8071660: @ 8071660 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - ldr r0, [sp, 0x1C] - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - mov r9, r2 - lsls r3, 16 - lsrs r3, 16 - mov r8, r3 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - cmp r1, 0 - beq _080716EC - movs r7, 0x1F - adds r6, r1, 0 -_0807168A: - ldrh r0, [r5] - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r2, r0, 21 - ands r2, r7 - lsrs r3, r0, 26 - ands r3, r7 - movs r0, 0x4C - muls r1, r0 - movs r0, 0x97 - muls r0, r2 - adds r1, r0 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r3 - adds r1, r0 - asrs r1, 8 - mov r0, r9 - muls r0, r1 - lsls r0, 16 - lsrs r4, r0, 24 - mov r0, r8 - muls r0, r1 - lsls r0, 16 - lsrs r2, r0, 24 - mov r0, r12 - muls r0, r1 - lsls r0, 16 - lsrs r3, r0, 24 - cmp r4, 0x1F - ble _080716CE - movs r4, 0x1F -_080716CE: - cmp r2, 0x1F - ble _080716D4 - movs r2, 0x1F -_080716D4: - cmp r3, 0x1F - ble _080716DA - movs r3, 0x1F -_080716DA: - lsls r0, r3, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r4 - strh r0, [r5] - adds r5, 0x2 - subs r6, 0x1 - cmp r6, 0 - bne _0807168A -_080716EC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8071660 - - thumb_func_start sub_80716F8 -sub_80716F8: @ 80716F8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - adds r6, r1, 0 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 24 - lsrs r3, 24 - mov r12, r3 - cmp r3, 0 - bne _0807172C - cmp r2, 0 - beq _0807179A - adds r5, r2, 0 -_08071718: - mov r1, r9 - ldrh r0, [r1] - strh r0, [r6] - movs r7, 0x2 - add r9, r7 - adds r6, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08071718 - b _0807179A -_0807172C: - cmp r2, 0 - beq _0807179A - movs r0, 0x1F - mov r8, r0 - adds r5, r2, 0 -_08071736: - mov r7, r9 - ldrh r1, [r7] - movs r4, 0x1F - ands r4, r1 - lsls r1, 16 - lsrs r3, r1, 21 - mov r0, r8 - ands r3, r0 - lsrs r1, 26 - ands r1, r0 - movs r0, 0x4C - adds r2, r4, 0 - muls r2, r0 - movs r0, 0x97 - muls r0, r3 - adds r2, r0 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - adds r2, r0 - asrs r2, 8 - subs r0, r2, r4 - mov r7, r12 - muls r7, r0 - adds r0, r7, 0 - lsrs r0, 4 - adds r4, r0 - subs r0, r2, r3 - mov r7, r12 - muls r7, r0 - adds r0, r7, 0 - lsrs r0, 4 - adds r3, r0 - subs r2, r1 - mov r0, r12 - muls r0, r2 - lsrs r0, 4 - adds r1, r0 - lsls r1, 10 - lsls r3, 5 - orrs r1, r3 - orrs r1, r4 - strh r1, [r6] - movs r0, 0x2 - add r9, r0 - adds r6, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08071736 -_0807179A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80716F8 - - thumb_func_start sub_80717A8 -sub_80717A8: @ 80717A8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - adds r4, r1, 0 - ldr r0, [sp, 0x20] - ldr r1, [sp, 0x24] - ldr r5, [sp, 0x28] - lsls r4, 24 - lsrs r4, 24 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r6, r3, 24 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - lsls r5, 24 - lsrs r5, 24 - mov r8, r5 - ldr r0, _08071800 @ =sub_80718B8 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08071804 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - strh r7, [r1, 0x8] - strh r6, [r1, 0xA] - lsls r4, 24 - asrs r4, 24 - cmp r4, 0 - blt _08071808 - strh r4, [r1, 0xE] - movs r0, 0x1 - b _08071810 - .align 2, 0 -_08071800: .4byte sub_80718B8 -_08071804: .4byte gTasks -_08071808: - movs r0, 0 - strh r0, [r1, 0xE] - negs r0, r4 - adds r0, 0x1 -_08071810: - strh r0, [r1, 0xC] - lsls r4, r5, 2 - cmp r6, r7 - bcs _08071828 - ldr r0, _08071858 @ =gTasks - adds r1, r4, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0xC - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0xC] -_08071828: - adds r0, r5, 0 - movs r1, 0x5 - mov r2, r10 - bl SetWordTaskArg - ldr r0, _08071858 @ =gTasks - adds r1, r4, r5 - lsls r1, 3 - adds r1, r0 - mov r0, r9 - strh r0, [r1, 0x16] - mov r2, r8 - strh r2, [r1, 0x18] - ldr r1, [r1] - adds r0, r5, 0 - bl _call_via_r1 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08071858: .4byte gTasks - thumb_func_end sub_80717A8 - - thumb_func_start sub_807185C -sub_807185C: @ 807185C - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r4, _08071880 @ =sub_80718B8 - ldr r1, _08071884 @ =gTasks -_08071868: - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - bne _08071888 - ldr r0, [r1] - cmp r0, r4 - bne _08071888 - movs r5, 0x18 - ldrsh r0, [r1, r5] - cmp r0, r3 - bne _08071888 - movs r0, 0x1 - b _08071892 - .align 2, 0 -_08071880: .4byte sub_80718B8 -_08071884: .4byte gTasks -_08071888: - adds r1, 0x28 - adds r2, 0x1 - cmp r2, 0xF - ble _08071868 - movs r0, 0 -_08071892: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807185C - - thumb_func_start sub_8071898 -sub_8071898: @ 8071898 - push {lr} - b _080718A0 -_0807189C: - bl DestroyTask -_080718A0: - ldr r0, _080718B4 @ =sub_80718B8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0807189C - pop {r0} - bx r0 - .align 2, 0 -_080718B4: .4byte sub_80718B8 - thumb_func_end sub_8071898 - - thumb_func_start sub_80718B8 -sub_80718B8: @ 80718B8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807190C @ =gTasks+0x8 - adds r4, r0, r1 - adds r0, r5, 0 - movs r1, 0x5 - bl GetWordTaskArg - adds r3, r0, 0 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x6 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _08071930 - movs r0, 0 - strh r0, [r4, 0x8] - ldrb r1, [r4] - ldrh r2, [r4, 0xE] - adds r0, r3, 0 - bl BlendPalettes - ldrh r1, [r4] - movs r6, 0 - ldrsh r0, [r4, r6] - ldrh r3, [r4, 0x2] - movs r6, 0x2 - ldrsh r2, [r4, r6] - cmp r0, r2 - bne _08071910 - adds r0, r5, 0 - bl DestroyTask - b _08071930 - .align 2, 0 -_0807190C: .4byte gTasks+0x8 -_08071910: - ldrh r0, [r4, 0x4] - adds r1, r0 - strh r1, [r4] - lsls r0, 16 - cmp r0, 0 - blt _08071926 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r2 - blt _08071930 - b _0807192E -_08071926: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r2 - bgt _08071930 -_0807192E: - strh r3, [r4] -_08071930: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80718B8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/region_map.s b/asm/region_map.s index fd681addf..7c040f7b8 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -3805,7 +3805,7 @@ _080C1D24: ldrh r1, [r1] str r1, [sp] movs r1, 0x30 - bl sub_8071660 + bl TintPalette_CustomTone ldr r0, [r7] adds r0, r5 movs r1, 0xD0 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 234e19676..787a9748a 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -3283,7 +3283,7 @@ _0808AB50: movs r1, 0x60 movs r2, 0 movs r3, 0 - bl sub_8071660 + bl TintPalette_CustomTone b _0808AB88 .align 2, 0 _0808AB64: .4byte 0x00000396 @@ -3297,7 +3297,7 @@ _0808AB68: lsls r1, 1 str r1, [sp] movs r1, 0x60 - bl sub_8071660 + bl TintPalette_CustomTone b _0808AB88 _0808AB80: adds r0, r4, r5 diff --git a/data/palette.s b/data/palette.s deleted file mode 100644 index fc479bbd6..000000000 --- a/data/palette.s +++ /dev/null @@ -1,18 +0,0 @@ - .section .rodata - .align 2 -gUnknown_83AC960:: @ 83AC960 - .2byte 0xFFFF - .align 2 - .4byte 0 - .2byte 0 - .byte 0, 0x20, 0 - - .align 2 -gUnknown_83AC970:: @ 83AC970 - .byte 0, 0, 0, 0, 0 - .byte 5, 5, 5, 5, 5 - .byte 11, 11, 11, 11, 11 - .byte 16, 16, 16, 16, 16 - .byte 21, 21, 21, 21, 21 - .byte 27, 27, 27, 27, 27 - .byte 31, 31 diff --git a/include/fldeff.h b/include/fldeff.h index e3f703947..25d5b8d43 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -7,6 +7,7 @@ gTasks[taskId].data[8] = (u32)func >> 16; \ gTasks[taskId].data[9] = (u32)func; +extern u8 *gUnknown_203AAB0; extern struct MapPosition gPlayerFacingPosition; bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); diff --git a/include/graphics.h b/include/graphics.h index a76607f40..5e133ee01 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -176,7 +176,7 @@ extern const u32 gTradeGba_Gfx[]; extern const u8 gUnknown_8E86240[]; extern const u8 gUnknown_8E86BE8[]; extern const u8 gUnknown_8E86D6C[]; -extern const u8 gUnknown_8E86F98[]; +extern const u32 gUnknown_8E86F98[]; // berry_fix_program extern const u8 gBerryFixGameboy_Gfx[]; @@ -201,7 +201,7 @@ extern const u8 gBerryFixWindow_Pal[]; // item_pc extern const u8 gItemPcTiles[]; -extern const u8 gItemPcBgPals[]; +extern const u32 gItemPcBgPals[]; extern const u8 gItemPcTilemap[]; // item_menu_icons @@ -1001,8 +1001,8 @@ extern const u8 gCreditsAllRightsReservedGfxMap[]; // berry_pouch extern const u32 gBerryPouchSpriteTiles[]; extern const u8 gBerryPouchBgGfx[]; -extern const u8 gBerryPouchBgPals[]; -extern const u8 gBerryPouchBgPal0FemaleOverride[]; +extern const u32 gBerryPouchBgPals[]; +extern const u32 gBerryPouchBgPal0FemaleOverride[]; extern const u32 gBerryPouchSpritePalette[]; extern const u8 gBerryPouchBg1Tilemap[]; diff --git a/include/palette.h b/include/palette.h index 300236d1e..145d6e6b6 100644 --- a/include/palette.h +++ b/include/palette.h @@ -3,8 +3,6 @@ #include "global.h" -#include "global.h" - #define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade #define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade #define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade @@ -13,10 +11,15 @@ #define PLTT_BUFFER_SIZE 0x200 #define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2) +#define PALETTE_FADE_STATUS_DELAY 2 +#define PALETTE_FADE_STATUS_ACTIVE 1 +#define PALETTE_FADE_STATUS_DONE 0 +#define PALETTE_FADE_STATUS_LOADING 0xFF + enum { FAST_FADE_IN_FROM_WHITE, - FAST_FADE_OUT_TO_WHTIE, + FAST_FADE_OUT_TO_WHITE, FAST_FADE_IN_FROM_BLACK, FAST_FADE_OUT_TO_BLACK, }; @@ -39,44 +42,39 @@ struct PaletteFadeControl u16 softwareFadeFinishing:1; u16 objPaletteToggle:1; u8 deltaY:4; // rate of change of blend coefficient + u32 unused; }; extern struct PaletteFadeControl gPaletteFade; extern u32 gPlttBufferTransferPending; -extern u8 *gUnknown_203AAB0; extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE]; extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE]; -void LoadCompressedPalette(const void *, u16, u16); -void LoadPalette(const void *, u16, u16); -void FillPalette(u16, u16, u16); +void LoadCompressedPalette(const u32 *src, u16 offset, u16 size); +void LoadPalette(const void *src, u16 offset, u16 size); +void FillPalette(u16 value, u16 offset, u16 size); void TransferPlttBuffer(void); u8 UpdatePaletteFade(void); void ResetPaletteFade(void); void ReadPlttIntoBuffers(void); -bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); -bool8 unref_sub_8073D3C(u32, u8, u8, u8, u16); -void unref_sub_8073D84(u8, u32 *); -void ResetPaletteStructByUid(u16); -void ResetPaletteStruct(u8); -void ResetPaletteFadeControl(); -void unref_sub_8074168(u16); -void unref_sub_8074194(u16); -void InvertPlttBuffer(u32); -void TintPlttBuffer(u32, s8, s8, s8); -void UnfadePlttBuffer(u32); -void BeginFastPaletteFade(u8); -void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); -void BlendPalettes(u32, u8, u16); -void BlendPalettesUnfaded(u32, u8, u16); -void sub_80716F8(const u16 *, u16 *, u16, u8); -void TintPalette_GrayScale(u16 *, u16); -void TintPalette_GrayScale2(u16 *, u16); -void TintPalette_SepiaTone(u16 *, u16); -void sub_80717A8(u32, s8, u8, u8, u16, u8, u8); -bool32 sub_807185C(u8); +bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor); +void ResetPaletteFadeControl(void); +void InvertPlttBuffer(u32 selectedPalettes); +void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b); +void UnfadePlttBuffer(u32 selectedPalettes); +void BeginFastPaletteFade(u8 submode); +void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters); +void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); +void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color); +void TintPalette_GrayScale(u16 *palette, u16 count); +void TintPalette_GrayScale2(u16 *palette, u16 count); +void TintPalette_SepiaTone(u16 *palette, u16 count); +void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone); +void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4); +void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7); +bool32 sub_807185C(u8 var); void sub_8071898(void); - -extern struct PaletteFadeControl gPaletteFade; +void ResetPaletteStructByUid(u16 a1); +void ResetPaletteStruct(u8 paletteNum); #endif // GUARD_PALETTE_H diff --git a/ld_script.txt b/ld_script.txt index fa7f1302b..a61f88d14 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -108,7 +108,7 @@ SECTIONS { asm/field_tasks.o(.text); asm/start_menu.o(.text); src/tileset_anims.o(.text); - asm/palette.o(.text); + src/palette.o(.text); src/sound.o(.text); asm/battle_anim.o(.text); asm/battle_anim_mons.o(.text); @@ -407,7 +407,7 @@ SECTIONS { data/field_tasks.o(.rodata); data/start_menu.o(.rodata); data/tileset_anims.o(.rodata); - data/palette.o(.rodata); + src/palette.o(.rodata); src/sound.o(.rodata); data/battle_anim.o(.rodata); data/map_events.o(.rodata); diff --git a/src/palette.c b/src/palette.c new file mode 100644 index 000000000..6609c9baa --- /dev/null +++ b/src/palette.c @@ -0,0 +1,989 @@ +#include "global.h" +#include "palette.h" +#include "util.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "task.h" + +enum +{ + NORMAL_FADE, + FAST_FADE, + HARDWARE_FADE, +}; + +#define NUM_PALETTE_STRUCTS 16 + +// unused palette struct +struct PaletteStructTemplate +{ + u16 uid; + u16 *src; + u16 pst_field_8_0:1; + u16 pst_field_8_1:9; + u16 size:5; + u16 pst_field_9_7:1; + u8 pst_field_A; + u8 srcCount:5; + u8 pst_field_B_5:3; + u8 pst_field_C; +}; + +struct PaletteStruct +{ + const struct PaletteStructTemplate *base; + u32 ps_field_4_0:1; + u16 ps_field_4_1:1; + u32 baseDestOffset:9; + u16 destOffset:10; + u16 srcIndex:7; + u8 ps_field_8; + u8 ps_field_9; +}; + +static void sub_8070790(struct PaletteStruct *, u32 *); +static void sub_80708F4(struct PaletteStruct *, u32 *); +static void sub_80709B4(struct PaletteStruct *); +static u8 GetPaletteNumByUid(u16); +static u8 UpdateNormalPaletteFade(void); +static void BeginFastPaletteFadeInternal(u8); +static u8 UpdateFastPaletteFade(void); +static u8 UpdateHardwarePaletteFade(void); +static void UpdateBlendRegisters(void); +static bool8 IsSoftwarePaletteFadeFinishing(void); +static void sub_80718B8(u8 taskId); + +ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; +ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; +static EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; +EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; +static EWRAM_DATA u32 sPlttBufferTransferPending = 0; +EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0}; + +static const struct PaletteStructTemplate gDummyPaletteStructTemplate = +{ + .uid = 0xFFFF, + .pst_field_B_5 = 1 +}; + +static const u8 sRoundedDownGrayscaleMap[] = +{ + 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, + 11, 11, 11, 11, 11, + 16, 16, 16, 16, 16, + 21, 21, 21, 21, 21, + 27, 27, 27, 27, 27, + 31, 31 +}; + +void LoadCompressedPalette(const u32 *src, u16 offset, u16 size) +{ + LZDecompressWram(src, gPaletteDecompressionBuffer); + CpuCopy16(gPaletteDecompressionBuffer, gPlttBufferUnfaded + offset, size); + CpuCopy16(gPaletteDecompressionBuffer, gPlttBufferFaded + offset, size); +} + +void LoadPalette(const void *src, u16 offset, u16 size) +{ + CpuCopy16(src, gPlttBufferUnfaded + offset, size); + CpuCopy16(src, gPlttBufferFaded + offset, size); +} + +void FillPalette(u16 value, u16 offset, u16 size) +{ + CpuFill16(value, gPlttBufferUnfaded + offset, size); + CpuFill16(value, gPlttBufferFaded + offset, size); +} + +void TransferPlttBuffer(void) +{ + if (!gPaletteFade.bufferTransferDisabled) + { + void *src = gPlttBufferFaded; + void *dest = (void *)PLTT; + DmaCopy16(3, src, dest, PLTT_SIZE); + sPlttBufferTransferPending = 0; + if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active) + UpdateBlendRegisters(); + } +} + +u8 UpdatePaletteFade(void) +{ + u8 result; + u8 dummy = 0; + + if (sPlttBufferTransferPending) + return PALETTE_FADE_STATUS_LOADING; + if (gPaletteFade.mode == NORMAL_FADE) + result = UpdateNormalPaletteFade(); + else if (gPaletteFade.mode == FAST_FADE) + result = UpdateFastPaletteFade(); + else + result = UpdateHardwarePaletteFade(); + sPlttBufferTransferPending = gPaletteFade.multipurpose1 | dummy; + return result; +} + +void ResetPaletteFade(void) +{ + u8 i; + + for (i = 0; i < 16; ++i) + ResetPaletteStruct(i); + ResetPaletteFadeControl(); +} + +void ReadPlttIntoBuffers(void) +{ + u16 i; + u16 *pltt = (u16 *)PLTT; + + for (i = 0; i < PLTT_SIZE / 2; ++i) + { + gPlttBufferUnfaded[i] = pltt[i]; + gPlttBufferFaded[i] = pltt[i]; + } +} + +bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor) +{ + u8 temp; + u16 color = blendColor; + + if (gPaletteFade.active) + { + return FALSE; + } + else + { + gPaletteFade.deltaY = 2; + if (delay < 0) + { + gPaletteFade.deltaY += (delay * -1); + delay = 0; + } + gPaletteFade_selectedPalettes = selectedPalettes; + gPaletteFade.delayCounter = delay; + gPaletteFade_delay = delay; + gPaletteFade.y = startY; + gPaletteFade.targetY = targetY; + gPaletteFade.blendColor = color; + gPaletteFade.active = TRUE; + gPaletteFade.mode = NORMAL_FADE; + if (startY < targetY) + gPaletteFade.yDec = FALSE; + else + gPaletteFade.yDec = TRUE; + UpdatePaletteFade(); + temp = gPaletteFade.bufferTransferDisabled; + gPaletteFade.bufferTransferDisabled = FALSE; + CpuCopy32(gPlttBufferFaded, (void *)PLTT, PLTT_SIZE); + sPlttBufferTransferPending = 0; + if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active) + UpdateBlendRegisters(); + gPaletteFade.bufferTransferDisabled = temp; + return TRUE; + } +} + +// not used +static bool8 sub_80706D0(u32 a1, u8 a2, u8 a3, u8 a4, u16 a5) +{ + ReadPlttIntoBuffers(); + return BeginNormalPaletteFade(a1, a2, a3, a4, a5); +} + +// not used +static void sub_8070718(u8 a1, u32 *a2) +{ + u8 i; + + for (i = 0; i < NUM_PALETTE_STRUCTS; ++i) + { + struct PaletteStruct *palstruct = &sPaletteStructs[i]; + + if (palstruct->ps_field_4_0) + { + if (palstruct->base->pst_field_8_0 == a1) + { + u8 val1 = palstruct->srcIndex; + u8 val2 = palstruct->base->srcCount; + + if (val1 == val2) + { + sub_80709B4(palstruct); + if (!palstruct->ps_field_4_0) + continue; + } + if (palstruct->ps_field_8 == 0) + sub_8070790(palstruct, a2); + else + --palstruct->ps_field_8; + sub_80708F4(palstruct, a2); + } + } + } +} + +// not used +static void sub_8070790(struct PaletteStruct *a1, u32 *a2) +{ + s32 srcIndex; + s32 srcCount; + u8 i = 0; + u16 srcOffset = a1->srcIndex * a1->base->size; + + if (!a1->base->pst_field_8_0) + { + while (i < a1->base->size) + { + gPlttBufferUnfaded[a1->destOffset] = a1->base->src[srcOffset]; + gPlttBufferFaded[a1->destOffset] = a1->base->src[srcOffset]; + ++i; + ++a1->destOffset; + ++srcOffset; + } + } + else + { + while (i < a1->base->size) + { + gPlttBufferFaded[a1->destOffset] = a1->base->src[srcOffset]; + ++i; + ++a1->destOffset; + ++srcOffset; + } + } + a1->destOffset = a1->baseDestOffset; + a1->ps_field_8 = a1->base->pst_field_A; + ++a1->srcIndex; + srcIndex = a1->srcIndex; + srcCount = a1->base->srcCount; + if (srcIndex >= srcCount) + { + if (a1->ps_field_9) + --a1->ps_field_9; + a1->srcIndex = 0; + } + *a2 |= 1 << (a1->baseDestOffset >> 4); +} + +// not used +static void sub_80708F4(struct PaletteStruct *a1, u32 *a2) +{ + if (gPaletteFade.active && ((1 << (a1->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes)) + { + if (!a1->base->pst_field_8_0) + { + if (gPaletteFade.delayCounter != gPaletteFade_delay) + BlendPalette(a1->baseDestOffset, + a1->base->size, + gPaletteFade.y, + gPaletteFade.blendColor); + } + else + { + if (!gPaletteFade.delayCounter) + { + if (a1->ps_field_8 != a1->base->pst_field_A) + { + u32 srcOffset = a1->srcIndex * a1->base->size; + u8 i; + + for (i = 0; i < a1->base->size; ++i) + gPlttBufferFaded[a1->baseDestOffset + i] = a1->base->src[srcOffset + i]; + } + } + } + } +} + +// not used +static void sub_80709B4(struct PaletteStruct *a1) +{ + if (!a1->ps_field_9) + { + s32 val = a1->base->pst_field_B_5; + + if (!val) + { + a1->srcIndex = 0; + a1->ps_field_8 = a1->base->pst_field_A; + a1->ps_field_9 = a1->base->pst_field_C; + a1->destOffset = a1->baseDestOffset; + } + else + { + if (val < 0) + return; + if (val > 2) + return; + ResetPaletteStructByUid(a1->base->uid); + } + } + else + { + --a1->ps_field_9; + } +} + +void ResetPaletteStructByUid(u16 a1) +{ + u8 paletteNum = GetPaletteNumByUid(a1); + if (paletteNum != 16) + ResetPaletteStruct(paletteNum); +} + +void ResetPaletteStruct(u8 paletteNum) +{ + sPaletteStructs[paletteNum].base = &gDummyPaletteStructTemplate; + sPaletteStructs[paletteNum].ps_field_4_0 = 0; + sPaletteStructs[paletteNum].baseDestOffset = 0; + sPaletteStructs[paletteNum].destOffset = 0; + sPaletteStructs[paletteNum].srcIndex = 0; + sPaletteStructs[paletteNum].ps_field_4_1 = 0; + sPaletteStructs[paletteNum].ps_field_8 = 0; + sPaletteStructs[paletteNum].ps_field_9 = 0; +} + +void ResetPaletteFadeControl(void) +{ + gPaletteFade.multipurpose1 = 0; + gPaletteFade.multipurpose2 = 0; + gPaletteFade.delayCounter = 0; + gPaletteFade.y = 0; + gPaletteFade.targetY = 0; + gPaletteFade.blendColor = 0; + gPaletteFade.active = FALSE; + gPaletteFade.multipurpose2 = 0; // assign same value twice + gPaletteFade.yDec = FALSE; + gPaletteFade.bufferTransferDisabled = FALSE; + gPaletteFade.shouldResetBlendRegisters = FALSE; + gPaletteFade.hardwareFadeFinishing = FALSE; + gPaletteFade.softwareFadeFinishing = FALSE; + gPaletteFade.softwareFadeFinishingCounter = 0; + gPaletteFade.objPaletteToggle = 0; + gPaletteFade.deltaY = 2; +} + +// not used +static void sub_8070AFC(u16 uid) +{ + u8 paletteNum = GetPaletteNumByUid(uid); + if (paletteNum != 16) + sPaletteStructs[paletteNum].ps_field_4_1 = 1; +} + +// not used +static void sub_8070B28(u16 uid) +{ + u8 paletteNum = GetPaletteNumByUid(uid); + if (paletteNum != 16) + sPaletteStructs[paletteNum].ps_field_4_1 = 0; +} + +// not used +static u8 GetPaletteNumByUid(u16 uid) +{ + u8 i; + + for (i = 0; i < NUM_PALETTE_STRUCTS; ++i) + if (sPaletteStructs[i].base->uid == uid) + return i; + return 16; +} + +static u8 UpdateNormalPaletteFade(void) +{ + u16 paletteOffset; + u16 selectedPalettes; + + if (!gPaletteFade.active) + return PALETTE_FADE_STATUS_DONE; + if (IsSoftwarePaletteFadeFinishing()) + { + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + } + else + { + if (!gPaletteFade.objPaletteToggle) + { + if (gPaletteFade.delayCounter < gPaletteFade_delay) + { + ++gPaletteFade.delayCounter; + return 2; + } + gPaletteFade.delayCounter = 0; + } + paletteOffset = 0; + if (!gPaletteFade.objPaletteToggle) + { + selectedPalettes = gPaletteFade_selectedPalettes; + } + else + { + selectedPalettes = gPaletteFade_selectedPalettes >> 16; + paletteOffset = 256; + } + while (selectedPalettes) + { + if (selectedPalettes & 1) + BlendPalette(paletteOffset, + 16, + gPaletteFade.y, + gPaletteFade.blendColor); + selectedPalettes >>= 1; + paletteOffset += 16; + } + gPaletteFade.objPaletteToggle ^= 1; + if (!gPaletteFade.objPaletteToggle) + { + if (gPaletteFade.y == gPaletteFade.targetY) + { + gPaletteFade_selectedPalettes = 0; + gPaletteFade.softwareFadeFinishing = TRUE; + } + else + { + s8 val; + + if (!gPaletteFade.yDec) + { + val = gPaletteFade.y; + val += gPaletteFade.deltaY; + if (val > gPaletteFade.targetY) + val = gPaletteFade.targetY; + gPaletteFade.y = val; + } + else + { + val = gPaletteFade.y; + val -= gPaletteFade.deltaY; + if (val < gPaletteFade.targetY) + val = gPaletteFade.targetY; + gPaletteFade.y = val; + } + } + } + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + } +} + +void InvertPlttBuffer(u32 selectedPalettes) +{ + u16 paletteOffset = 0; + + while (selectedPalettes) + { + if (selectedPalettes & 1) + { + u8 i; + + for (i = 0; i < 16; ++i) + gPlttBufferFaded[paletteOffset + i] = ~gPlttBufferFaded[paletteOffset + i]; + } + selectedPalettes >>= 1; + paletteOffset += 16; + } +} + +void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b) +{ + u16 paletteOffset = 0; + + while (selectedPalettes) + { + if (selectedPalettes & 1) + { + u8 i; + + for (i = 0; i < 16; ++i) + { + struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[paletteOffset + i]; + + data->r += r; + data->g += g; + data->b += b; + } + } + selectedPalettes >>= 1; + paletteOffset += 16; + } +} + +void UnfadePlttBuffer(u32 selectedPalettes) +{ + u16 paletteOffset = 0; + + while (selectedPalettes) + { + if (selectedPalettes & 1) + { + u8 i; + + for (i = 0; i < 16; ++i) + gPlttBufferFaded[paletteOffset + i] = gPlttBufferUnfaded[paletteOffset + i]; + } + selectedPalettes >>= 1; + paletteOffset += 16; + } +} + +void BeginFastPaletteFade(u8 submode) +{ + gPaletteFade.deltaY = 2; + BeginFastPaletteFadeInternal(submode); +} + +static void BeginFastPaletteFadeInternal(u8 submode) +{ + gPaletteFade.y = 31; + gPaletteFade_submode = submode & 0x3F; + gPaletteFade.active = TRUE; + gPaletteFade.mode = FAST_FADE; + if (submode == FAST_FADE_IN_FROM_BLACK) + CpuFill16(RGB_BLACK, gPlttBufferFaded, PLTT_SIZE); + if (submode == FAST_FADE_IN_FROM_WHITE) + CpuFill16(RGB_WHITE, gPlttBufferFaded, PLTT_SIZE); + UpdatePaletteFade(); +} + +static u8 UpdateFastPaletteFade(void) +{ + u16 i; + u16 paletteOffsetStart, paletteOffsetEnd; + s8 r0, g0, b0, r, g, b; + + if (!gPaletteFade.active) + return PALETTE_FADE_STATUS_DONE; + if (IsSoftwarePaletteFadeFinishing()) + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + if (gPaletteFade.objPaletteToggle) + { + paletteOffsetStart = 256; + paletteOffsetEnd = 512; + } + else + { + paletteOffsetStart = 0; + paletteOffsetEnd = 256; + } + switch (gPaletteFade_submode) + { + case FAST_FADE_IN_FROM_WHITE: + for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + { + struct PlttData *unfaded; + struct PlttData *faded; + + unfaded = (struct PlttData *)&gPlttBufferUnfaded[i]; + r0 = unfaded->r; + g0 = unfaded->g; + b0 = unfaded->b; + faded = (struct PlttData *)&gPlttBufferFaded[i]; + r = faded->r - 2; + g = faded->g - 2; + b = faded->b - 2; + if (r < r0) + r = r0; + if (g < g0) + g = g0; + if (b < b0) + b = b0; + gPlttBufferFaded[i] = r | (g << 5) | (b << 10); + } + break; + case FAST_FADE_OUT_TO_WHITE: + for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + { + struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[i]; + + r = data->r + 2; + g = data->g + 2; + b = data->b + 2; + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; + gPlttBufferFaded[i] = r | (g << 5) | (b << 10); + } + break; + case FAST_FADE_IN_FROM_BLACK: + for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + { + struct PlttData *unfaded; + struct PlttData *faded; + + unfaded = (struct PlttData *)&gPlttBufferUnfaded[i]; + r0 = unfaded->r; + g0 = unfaded->g; + b0 = unfaded->b; + faded = (struct PlttData *)&gPlttBufferFaded[i]; + r = faded->r + 2; + g = faded->g + 2; + b = faded->b + 2; + if (r > r0) + r = r0; + if (g > g0) + g = g0; + if (b > b0) + b = b0; + gPlttBufferFaded[i] = r | (g << 5) | (b << 10); + } + break; + case FAST_FADE_OUT_TO_BLACK: + for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + { + struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[i]; + + r = data->r - 2; + g = data->g - 2; + b = data->b - 2; + if (r < 0) + r = 0; + if (g < 0) + g = 0; + if (b < 0) + b = 0; + gPlttBufferFaded[i] = r | (g << 5) | (b << 10); + } + } + gPaletteFade.objPaletteToggle ^= 1; + if (gPaletteFade.objPaletteToggle) + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + if (gPaletteFade.y - gPaletteFade.deltaY < 0) + gPaletteFade.y = 0; + else + gPaletteFade.y -= gPaletteFade.deltaY; + if (gPaletteFade.y == 0) + { + switch (gPaletteFade_submode) + { + case FAST_FADE_IN_FROM_WHITE: + case FAST_FADE_IN_FROM_BLACK: + CpuCopy32(gPlttBufferUnfaded, gPlttBufferFaded, PLTT_SIZE); + break; + case FAST_FADE_OUT_TO_WHITE: + CpuFill32(0xFFFFFFFF, gPlttBufferFaded, PLTT_SIZE); + break; + case FAST_FADE_OUT_TO_BLACK: + CpuFill32(0x00000000, gPlttBufferFaded, PLTT_SIZE); + break; + } + gPaletteFade.mode = NORMAL_FADE; + gPaletteFade.softwareFadeFinishing = TRUE; + } + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; +} + +void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters) +{ + gPaletteFade_blendCnt = blendCnt; + gPaletteFade.delayCounter = delay; + gPaletteFade_delay = delay; + gPaletteFade.y = y; + gPaletteFade.targetY = targetY; + gPaletteFade.active = TRUE; + gPaletteFade.mode = HARDWARE_FADE; + gPaletteFade.shouldResetBlendRegisters = shouldResetBlendRegisters & 1; + gPaletteFade.hardwareFadeFinishing = FALSE; + if (y < targetY) + gPaletteFade.yDec = FALSE; + else + gPaletteFade.yDec = TRUE; +} + +static u8 UpdateHardwarePaletteFade(void) +{ + if (!gPaletteFade.active) + return PALETTE_FADE_STATUS_DONE; + if (gPaletteFade.delayCounter < gPaletteFade_delay) + { + ++gPaletteFade.delayCounter; + return PALETTE_FADE_STATUS_DELAY; + } + gPaletteFade.delayCounter = 0; + if (!gPaletteFade.yDec) + { + ++gPaletteFade.y; + if (gPaletteFade.y > gPaletteFade.targetY) + { + ++gPaletteFade.hardwareFadeFinishing; + --gPaletteFade.y; + } + } + else + { + if (gPaletteFade.y-- - 1 < gPaletteFade.targetY) + { + ++gPaletteFade.hardwareFadeFinishing; + ++gPaletteFade.y; + } + } + + if (gPaletteFade.hardwareFadeFinishing) + { + if (gPaletteFade.shouldResetBlendRegisters) + { + gPaletteFade_blendCnt = 0; + gPaletteFade.y = 0; + } + gPaletteFade.shouldResetBlendRegisters = FALSE; + } + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; +} + +static void UpdateBlendRegisters(void) +{ + SetGpuReg(REG_OFFSET_BLDCNT, (u16)gPaletteFade_blendCnt); + SetGpuReg(REG_OFFSET_BLDY, gPaletteFade.y); + if (gPaletteFade.hardwareFadeFinishing) + { + gPaletteFade.hardwareFadeFinishing = FALSE; + gPaletteFade.mode = 0; + gPaletteFade_blendCnt = 0; + gPaletteFade.y = 0; + gPaletteFade.active = FALSE; + } +} + +static bool8 IsSoftwarePaletteFadeFinishing(void) +{ + if (gPaletteFade.softwareFadeFinishing) + { + if (gPaletteFade.softwareFadeFinishingCounter == 4) + { + gPaletteFade.active = FALSE; + gPaletteFade.softwareFadeFinishing = FALSE; + gPaletteFade.softwareFadeFinishingCounter = 0; + } + else + { + ++gPaletteFade.softwareFadeFinishingCounter; + } + return TRUE; + } + else + { + return FALSE; + } +} + +void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) +{ + u16 paletteOffset; + + for (paletteOffset = 0; selectedPalettes; paletteOffset += 16) + { + if (selectedPalettes & 1) + BlendPalette(paletteOffset, 16, coeff, color); + selectedPalettes >>= 1; + } +} + +void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) +{ + // This copy is done via DMA in both RUBY and EMERALD + CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, 0x400); + BlendPalettes(selectedPalettes, coeff, color); +} + +void TintPalette_GrayScale(u16 *palette, u16 count) +{ + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; ++i) + { + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + *palette++ = (gray << 10) | (gray << 5) | (gray << 0); + } +} + +void TintPalette_GrayScale2(u16 *palette, u16 count) +{ + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; ++i) + { + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + + if (gray > 0x1F) + gray = 0x1F; + gray = sRoundedDownGrayscaleMap[gray]; + *palette++ = (gray << 10) | (gray << 5) | (gray << 0); + } +} + +void TintPalette_SepiaTone(u16 *palette, u16 count) +{ + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; ++i) + { + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + r = (u16)((Q_8_8(1.2) * gray)) >> 8; + g = (u16)((Q_8_8(1.0) * gray)) >> 8; + b = (u16)((Q_8_8(0.94) * gray)) >> 8; + if (r > 31) + r = 31; + *palette++ = (b << 10) | (g << 5) | (r << 0); + } +} + +void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone) +{ + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; ++i) + { + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + r = (u16)((rTone * gray)) >> 8; + g = (u16)((gTone * gray)) >> 8; + b = (u16)((bTone * gray)) >> 8; + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; + *palette++ = (b << 10) | (g << 5) | (r << 0); + } +} + +void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4) +{ + s32 r, g, b, i; + u32 gray; + + if (!a4) + { + for (i = 0; i < count; ++i) + *dst++ = *src++; + } + else + { + for (i = 0; i < count; ++src, ++dst, ++i) + { + r = (*src >> 0) & 0x1F; + g = (*src >> 5) & 0x1F; + b = (*src >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + r += (a4 * (gray - r) >> 4); + g += (a4 * (gray - g) >> 4); + b += (a4 * (gray - b) >> 4); + *dst = (b << 10) | (g << 5) | (r << 0); + } + } +} + +void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7) +{ + u8 taskId; + + taskId = CreateTask(sub_80718B8, a6); + gTasks[taskId].data[0] = a3; + gTasks[taskId].data[1] = a4; + if (a2 >= 0) + { + gTasks[taskId].data[3] = a2; + gTasks[taskId].data[2] = 1; + } + else + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[2] = -a2 + 1; + } + if (a4 < a3) + gTasks[taskId].data[2] *= -1; + SetWordTaskArg(taskId, 5, a1); + gTasks[taskId].data[7] = a5; + gTasks[taskId].data[8] = a7; + gTasks[taskId].func(taskId); +} + +bool32 sub_807185C(u8 var) +{ + s32 i; + + for (i = 0; i < NUM_TASKS; ++i) + if (gTasks[i].isActive == TRUE + && gTasks[i].func == sub_80718B8 + && gTasks[i].data[8] == var) + return TRUE; + return FALSE; +} + +void sub_8071898(void) +{ + u8 taskId; + + while (TRUE) + { + taskId = FindTaskIdByFunc(sub_80718B8); + if (taskId == TASK_NONE) + break; + DestroyTask(taskId); + } +} + +static void sub_80718B8(u8 taskId) +{ + u32 wordVar; + s16 *data; + s16 temp; + + data = gTasks[taskId].data; + wordVar = GetWordTaskArg(taskId, 5); + if (++data[4] > data[3]) + { + data[4] = 0; + BlendPalettes(wordVar, data[0], data[7]); + temp = data[1]; + if (data[0] == temp) + { + DestroyTask(taskId); + } + else + { + data[0] += data[2]; + if (data[2] >= 0) + { + if (data[0] < temp) + return; + } + else if (data[0] > temp) + { + return; + } + data[0] = temp; + } + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index c50347082..9acd767d0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -661,24 +661,7 @@ gUnknown_2037104: @ 2037104 .space 0x4 .include "src/tileset_anims.o" - -gPlttBufferUnfaded: @ 20371F8 - .space 0x400 - -gPlttBufferFaded: @ 20375F8 - .space 0x400 - -gUnknown_20379F8: @ 20379F8 - .space 0xC0 - -gPaletteFade: @ 2037AB8 - .space 0x10 - -gUnknown_2037AC8: @ 2037AC8 - .space 0x4 - -gUnknown_2037ACC: @ 2037ACC - .space 0x400 + .include "src/palette.o" .include "src/sound.o" |