diff options
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/unk_020030E8.s | 1424 | ||||
-rw-r--r-- | arm9/asm/unk_02006D98.s | 4 | ||||
-rw-r--r-- | arm9/asm/unk_020142EC.s | 6 | ||||
-rw-r--r-- | arm9/asm/unk_020144FC.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_0206C700.s | 26 | ||||
-rw-r--r-- | arm9/asm/unk_020859C0.s | 16 | ||||
-rw-r--r-- | arm9/asm/unk_02086084.s | 16 | ||||
-rw-r--r-- | arm9/asm/unk_02086414.s | 10 | ||||
-rw-r--r-- | arm9/global.inc | 28 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E3444.s | 2 | ||||
-rw-r--r-- | arm9/modules/07/asm/module_07.s | 4 | ||||
-rw-r--r-- | arm9/modules/08/asm/module_08.s | 48 | ||||
-rw-r--r-- | arm9/modules/09/asm/module_09.s | 26 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11_thumb1.s | 44 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11_thumb2.s | 56 | ||||
-rw-r--r-- | arm9/modules/12/asm/module_12.s | 168 | ||||
-rw-r--r-- | arm9/modules/16/asm/module_16.s | 4 | ||||
-rw-r--r-- | arm9/modules/61/asm/module_61.s | 32 | ||||
-rw-r--r-- | arm9/modules/62/asm/module_62.s | 22 | ||||
-rw-r--r-- | arm9/src/palette.c | 760 | ||||
-rw-r--r-- | arm9/src/unk_02002F08.c | 51 | ||||
-rw-r--r-- | include/palette.h | 73 | ||||
-rw-r--r-- | include/unk_02002F08.h | 89 |
24 files changed, 1184 insertions, 1729 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 66c41c14..346d40b7 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -12,7 +12,7 @@ Static arm9 Object render_text.o Object font.o Object unk_02002F08.o - Object unk_020030E8.o + Object palette.o Object sound.o Object unk_020040F4.o Object unk_020051F4.o diff --git a/arm9/asm/unk_020030E8.s b/arm9/asm/unk_020030E8.s deleted file mode 100644 index d304b14a..00000000 --- a/arm9/asm/unk_020030E8.s +++ /dev/null @@ -1,1424 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .text - - thumb_func_start FUN_02003108 -FUN_02003108: ; 0x02003108 - push {r3-r7, lr} - add r4, r1, #0x0 - mov r1, #0x14 - add r6, r0, #0x0 - mul r1, r4 - add r5, r2, #0x0 - add r1, r6, r1 - add r7, r3, #0x0 - lsl r0, r5, #0x1 - ldr r1, [r1, #0x8] - add r0, r7, r0 - cmp r0, r1 - bls _02003126 - bl GF_AssertFail -_02003126: - cmp r4, #0x3 - bhi _0200315E - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02003136: ; jump table (using 16-bit offset) - .short _0200313E - _02003136 - 2; case 0 - .short _02003146 - _02003136 - 2; case 1 - .short _0200314E - _02003136 - 2; case 2 - .short _02003156 - _02003136 - 2; case 3 -_0200313E: - bl FUN_020222E8 - add r1, r0, #0x0 - b _02003164 -_02003146: - bl FUN_020222F8 - add r1, r0, #0x0 - b _02003164 -_0200314E: - bl FUN_02022308 - add r1, r0, #0x0 - b _02003164 -_02003156: - bl FUN_02022310 - add r1, r0, #0x0 - b _02003164 -_0200315E: - bl GF_AssertFail - pop {r3-r7, pc} -_02003164: - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - lsl r2, r5, #0x1 - str r0, [sp, #0x0] - add r1, r1, r2 - add r0, r6, #0x0 - add r2, r4, #0x0 - add r3, r5, #0x0 - bl FUN_02003054 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200317C -FUN_0200317C: ; 0x0200317C - push {r3-r5, lr} - add r4, r2, #0x0 - add r5, r3, #0x0 - add r2, sp, #0x0 - add r3, r4, #0x0 - bl GfGfxLoader_GetPlttData - add r4, r0, #0x0 - bne _02003192 - bl GF_AssertFail -_02003192: - cmp r5, #0x0 - bne _0200319A - ldr r0, [sp, #0x0] - ldr r5, [r0, #0x8] -_0200319A: - ldr r0, [sp, #0x0] - add r2, r5, #0x0 - ldr r1, [r0, #0xc] - add r0, sp, #0x0 - ldrh r0, [r0, #0x10] - lsl r0, r0, #0x1 - add r0, r1, r0 - ldr r1, [sp, #0x14] - bl MIi_CpuCopy16 - add r0, r4, #0x0 - bl FreeToHeap - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020031B8 -FUN_020031B8: ; 0x020031B8 - push {r3-r7, lr} - sub sp, #0x8 - add r4, sp, #0x10 - add r5, r0, #0x0 - add r0, r1, #0x0 - ldrh r1, [r4, #0x14] - add r6, r3, #0x0 - str r1, [sp, #0x0] - ldrh r1, [r4, #0x10] - lsl r4, r2, #0x1 - ldr r2, [sp, #0x0] - lsl r7, r1, #0x1 - mov r1, #0x14 - mul r6, r1 - mul r1, r0 - ldr r0, [r5, r1] - str r1, [sp, #0x4] - ldr r1, [r5, r6] - add r0, r0, r4 - add r1, r1, r7 - bl MIi_CpuCopy16 - ldr r0, [sp, #0x4] - add r1, r5, r6 - ldr r0, [r5, r0] - ldr r1, [r1, #0x4] - ldr r2, [sp, #0x0] - add r0, r0, r4 - add r1, r1, r7 - bl MIi_CpuCopy16 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020031FC -FUN_020031FC: ; 0x020031FC - mov r2, #0x14 - mul r2, r1 - ldr r0, [r0, r2] - bx lr - - thumb_func_start FUN_02003204 -FUN_02003204: ; 0x02003204 - mov r2, #0x14 - mul r2, r1 - add r0, r0, r2 - ldr r0, [r0, #0x4] - bx lr - .balign 4 - - thumb_func_start FUN_02003210 -FUN_02003210: ; 0x02003210 - push {r0-r3} - push {r3-r7, lr} - sub sp, #0x10 - str r3, [sp, #0x8] - add r5, r0, #0x0 - ldr r0, [sp, #0x38] - mov r6, #0x0 - str r0, [sp, #0x38] - ldr r0, [sp, #0x3c] - add r7, r1, #0x0 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x40] - add r4, r6, #0x0 - str r0, [sp, #0x40] - add r0, sp, #0x28 - ldrh r0, [r0, #0x8] - str r0, [sp, #0xc] -_02003232: - add r0, r7, #0x0 - add r1, r4, #0x0 - bl FUN_02003314 - cmp r0, #0x1 - bne _020032A6 - mov r0, #0x46 - lsl r0, r0, #0x2 - ldrh r0, [r5, r0] - add r1, r4, #0x0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x12 - bl FUN_02003314 - cmp r0, #0x0 - bne _020032A6 - mov r0, #0x14 - add r6, r4, #0x0 - mul r6, r0 - add r0, r4, #0x0 - add r1, r5, r6 - add r2, sp, #0x30 - bl FUN_02003368 - ldr r0, [sp, #0x3c] - add r1, sp, #0x28 - str r0, [sp, #0x0] - ldr r0, [sp, #0x40] - str r0, [sp, #0x4] - add r0, r5, r6 - ldrh r1, [r1, #0x8] - ldr r2, [sp, #0x8] - ldr r3, [sp, #0x38] - add r0, #0xc - bl FUN_020033A4 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02003328 - cmp r4, #0x4 - blo _02003294 - mov r2, #0x1 - add r0, r5, #0x0 - add r1, r4, #0x0 - lsl r2, r2, #0x8 - bl FUN_0200359C - b _0200329E -_02003294: - add r0, r5, #0x0 - add r1, r4, #0x0 - mov r2, #0x10 - bl FUN_0200359C -_0200329E: - ldr r1, [sp, #0xc] - add r0, sp, #0x28 - strh r1, [r0, #0x8] - mov r6, #0x1 -_020032A6: - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0xe - blo _02003232 - cmp r6, #0x1 - bne _02003300 - mov r0, #0x46 - lsl r0, r0, #0x2 - ldrh r2, [r5, r0] - ldr r1, _0200330C ; =0xFFFF0003 - and r1, r2 - lsl r2, r2, #0x10 - lsr r2, r2, #0x12 - orr r2, r7 - lsl r2, r2, #0x12 - lsr r2, r2, #0x10 - orr r1, r2 - strh r1, [r5, r0] - add r1, r0, #0x2 - ldrh r1, [r5, r1] - lsl r1, r1, #0x11 - lsr r1, r1, #0x1f - bne _02003300 - add r1, r0, #0x2 - ldrh r2, [r5, r1] - mov r1, #0x1 - lsl r1, r1, #0xe - orr r2, r1 - add r1, r0, #0x2 - strh r2, [r5, r1] - ldrh r2, [r5, r0] - mov r1, #0x3 - bic r2, r1 - mov r1, #0x1 - orr r1, r2 - strh r1, [r5, r0] - mov r2, #0x0 - add r0, r0, #0x4 - strb r2, [r5, r0] - ldr r0, _02003310 ; =FUN_02003464 - add r1, r5, #0x0 - sub r2, r2, #0x2 - bl FUN_0200CA44 -_02003300: - add r0, r6, #0x0 - add sp, #0x10 - pop {r3-r7} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 -_0200330C: .word 0xFFFF0003 -_02003310: .word FUN_02003464 - - thumb_func_start FUN_02003314 -FUN_02003314: ; 0x02003314 - mov r3, #0x1 - add r2, r3, #0x0 - lsl r2, r1 - tst r0, r2 - bne _02003320 - mov r3, #0x0 -_02003320: - lsl r0, r3, #0x18 - lsr r0, r0, #0x18 - bx lr - .balign 4 - - thumb_func_start FUN_02003328 -FUN_02003328: ; 0x02003328 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, _02003360 ; =0x0000011A - add r4, r1, #0x0 - ldrh r0, [r5, r0] - lsl r0, r0, #0x12 - lsr r0, r0, #0x12 - bl FUN_02003314 - cmp r0, #0x1 - beq _0200335E - ldr r3, _02003360 ; =0x0000011A - ldr r1, _02003364 ; =0xFFFFC000 - ldrh r2, [r5, r3] - add r0, r2, #0x0 - lsl r2, r2, #0x12 - lsr r6, r2, #0x12 - mov r2, #0x1 - lsl r2, r4 - orr r2, r6 - lsl r2, r2, #0x10 - and r0, r1 - lsr r2, r2, #0x10 - lsr r1, r1, #0x12 - and r1, r2 - orr r0, r1 - strh r0, [r5, r3] -_0200335E: - pop {r4-r6, pc} - .balign 4 -_02003360: .word 0x0000011A -_02003364: .word 0xFFFFC000 - - thumb_func_start FUN_02003368 -FUN_02003368: ; 0x02003368 - push {r4-r5} - cmp r0, #0x4 - ldr r0, [r1, #0x8] - bge _02003374 - lsl r0, r0, #0x13 - b _02003378 -_02003374: - lsr r0, r0, #0x9 - lsl r0, r0, #0x18 -_02003378: - mov r4, #0x0 - lsr r0, r0, #0x18 - add r5, r4, #0x0 - cmp r0, #0x0 - bls _02003398 - mov r3, #0x1 -_02003384: - add r1, r3, #0x0 - lsl r1, r5 - add r1, r4, r1 - lsl r1, r1, #0x10 - lsr r4, r1, #0x10 - add r1, r5, #0x1 - lsl r1, r1, #0x18 - lsr r5, r1, #0x18 - cmp r5, r0 - blo _02003384 -_02003398: - ldrh r0, [r2, #0x0] - and r0, r4 - strh r0, [r2, #0x0] - pop {r4-r5} - bx lr - .balign 4 - - thumb_func_start FUN_020033A4 -FUN_020033A4: ; 0x020033A4 - push {r4-r6, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r4, r3, #0x0 - cmp r2, #0x0 - bge _020033D4 - add r0, r2, #0x0 - bl abs - add r0, r0, #0x2 - ldrh r1, [r5, #0x6] - mov r2, #0xf - lsl r0, r0, #0x10 - bic r1, r2 - lsr r2, r0, #0x10 - mov r0, #0xf - and r0, r2 - orr r0, r1 - strh r0, [r5, #0x6] - ldrh r1, [r5, #0x2] - mov r0, #0x3f - bic r1, r0 - strh r1, [r5, #0x2] - b _020033F2 -_020033D4: - ldrh r1, [r5, #0x6] - mov r0, #0xf - bic r1, r0 - mov r0, #0x2 - orr r0, r1 - strh r0, [r5, #0x6] - ldrh r0, [r5, #0x2] - mov r1, #0x3f - bic r0, r1 - lsl r1, r2, #0x10 - lsr r2, r1, #0x10 - mov r1, #0x3f - and r1, r2 - orr r0, r1 - strh r0, [r5, #0x2] -_020033F2: - strh r6, [r5, #0x0] - ldrh r1, [r5, #0x2] - ldr r0, _02003454 ; =0xFFFFF83F - add r3, sp, #0x0 - and r1, r0 - lsl r0, r4, #0x1b - lsr r0, r0, #0x15 - orr r0, r1 - strh r0, [r5, #0x2] - ldrh r1, [r5, #0x2] - ldr r0, _02003458 ; =0xFFFF07FF - add r2, r1, #0x0 - ldrb r1, [r3, #0x10] - and r2, r0 - lsl r0, r1, #0x1b - lsr r0, r0, #0x10 - orr r0, r2 - strh r0, [r5, #0x2] - ldrh r0, [r5, #0x4] - ldr r2, _0200345C ; =0xFFFF8000 - ldrh r6, [r3, #0x14] - lsr r3, r2, #0x11 - and r0, r2 - and r3, r6 - orr r0, r3 - strh r0, [r5, #0x4] - ldrh r3, [r5, #0x6] - ldr r0, _02003460 ; =0xFFFFFC0F - and r0, r3 - ldrh r3, [r5, #0x2] - lsl r3, r3, #0x1a - lsr r3, r3, #0x1a - lsl r3, r3, #0x1a - lsr r3, r3, #0x16 - orr r0, r3 - strh r0, [r5, #0x6] - cmp r4, r1 - ldrh r1, [r5, #0x4] - bhs _02003448 - sub r0, r2, #0x1 - and r0, r1 - strh r0, [r5, #0x4] - pop {r4-r6, pc} -_02003448: - mov r0, #0x2 - lsl r0, r0, #0xe - orr r0, r1 - strh r0, [r5, #0x4] - pop {r4-r6, pc} - nop -_02003454: .word 0xFFFFF83F -_02003458: .word 0xFFFF07FF -_0200345C: .word 0xFFFF8000 -_02003460: .word 0xFFFFFC0F - - thumb_func_start FUN_02003464 -FUN_02003464: ; 0x02003464 - push {r4-r6, lr} - add r4, r1, #0x0 - mov r1, #0x47 - lsl r1, r1, #0x2 - ldrb r2, [r4, r1] - add r5, r0, #0x0 - cmp r2, #0x1 - bne _020034A4 - mov r2, #0x0 - strb r2, [r4, r1] - sub r2, r1, #0x2 - ldrh r3, [r4, r2] - ldr r2, _020034F4 ; =0xFFFFC000 - add r5, r3, #0x0 - and r5, r2 - sub r3, r1, #0x2 - strh r5, [r4, r3] - sub r3, r1, #0x4 - ldrh r5, [r4, r3] - ldr r3, _020034F8 ; =0xFFFF0003 - sub r2, r2, #0x1 - and r5, r3 - sub r3, r1, #0x4 - strh r5, [r4, r3] - sub r3, r1, #0x2 - ldrh r3, [r4, r3] - sub r1, r1, #0x2 - and r2, r3 - strh r2, [r4, r1] - bl FUN_0200CAB4 - pop {r4-r6, pc} -_020034A4: - sub r0, r1, #0x4 - ldrh r2, [r4, r0] - lsl r0, r2, #0x1e - lsr r0, r0, #0x1e - cmp r0, #0x1 - bne _020034F0 - sub r0, r1, #0x2 - ldrh r0, [r4, r0] - ldr r3, _020034F4 ; =0xFFFFC000 - lsl r2, r2, #0x10 - lsr r6, r2, #0x12 - lsr r2, r3, #0x12 - and r0, r3 - and r2, r6 - orr r2, r0 - sub r0, r1, #0x2 - strh r2, [r4, r0] - add r0, r4, #0x0 - bl FUN_02003500 - add r0, r4, #0x0 - bl FUN_02003520 - mov r1, #0x46 - lsl r1, r1, #0x2 - ldrh r0, [r4, r1] - lsl r0, r0, #0x10 - lsr r0, r0, #0x12 - bne _020034F0 - add r0, r1, #0x2 - ldrh r2, [r4, r0] - ldr r0, _020034FC ; =0xFFFFBFFF - and r2, r0 - add r0, r1, #0x2 - strh r2, [r4, r0] - add r0, r5, #0x0 - bl FUN_0200CAB4 -_020034F0: - pop {r4-r6, pc} - nop -_020034F4: .word 0xFFFFC000 -_020034F8: .word 0xFFFF0003 -_020034FC: .word 0xFFFFBFFF - - thumb_func_start FUN_02003500 -FUN_02003500: ; 0x02003500 - push {r4-r6, lr} - add r5, r0, #0x0 - mov r4, #0x0 - mov r6, #0x10 -_02003508: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02003540 - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x4 - blo _02003508 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02003520 -FUN_02003520: ; 0x02003520 - push {r4-r6, lr} - mov r4, #0x4 - add r6, r4, #0x0 - add r5, r0, #0x0 - add r6, #0xfc -_0200352A: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02003540 - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0xe - blo _0200352A - pop {r4-r6, pc} - - thumb_func_start FUN_02003540 -FUN_02003540: ; 0x02003540 - push {r4-r6, lr} - add r5, r0, #0x0 - mov r0, #0x46 - lsl r0, r0, #0x2 - ldrh r0, [r5, r0] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x12 - bl FUN_02003314 - cmp r0, #0x0 - beq _02003594 - mov r0, #0x14 - mul r0, r4 - add r2, r5, r0 - ldrh r0, [r2, #0x12] - ldrh r3, [r2, #0xe] - lsl r1, r0, #0x16 - lsl r3, r3, #0x1a - lsr r1, r1, #0x1a - lsr r3, r3, #0x1a - cmp r1, r3 - bhs _02003584 - ldr r3, _02003598 ; =0xFFFFFC0F - and r3, r0 - add r0, r1, #0x1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1a - lsr r0, r0, #0x16 - orr r0, r3 - strh r0, [r2, #0x12] - pop {r4-r6, pc} -_02003584: - ldr r1, _02003598 ; =0xFFFFFC0F - and r0, r1 - strh r0, [r2, #0x12] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_0200359C -_02003594: - pop {r4-r6, pc} - nop -_02003598: .word 0xFFFFFC0F - - thumb_func_start FUN_0200359C -FUN_0200359C: ; 0x0200359C - push {r4-r7, lr} - sub sp, #0xc - str r1, [sp, #0x4] - str r0, [sp, #0x0] - ldr r0, [sp, #0x4] - mov r1, #0x14 - mul r1, r0 - ldr r0, [sp, #0x0] - mov r6, #0x0 - add r5, r0, r1 - add r0, r5, #0x0 - str r0, [sp, #0x8] - add r0, #0xc - add r7, r2, #0x0 - add r4, r6, #0x0 - str r0, [sp, #0x8] -_020035BC: - ldrh r0, [r5, #0xc] - lsl r1, r6, #0x10 - lsr r1, r1, #0x10 - bl FUN_02003314 - cmp r0, #0x0 - beq _020035DC - ldr r0, [r5, #0x0] - lsl r1, r4, #0x1 - ldr r2, [r5, #0x4] - add r0, r0, r1 - add r1, r2, r1 - ldr r2, [sp, #0x8] - add r3, r7, #0x0 - bl FUN_020035F8 -_020035DC: - add r6, r6, #0x1 - add r4, r4, r7 - cmp r6, #0x10 - blo _020035BC - ldr r1, [sp, #0x4] - add r5, #0xc - lsl r1, r1, #0x18 - ldr r0, [sp, #0x0] - lsr r1, r1, #0x18 - add r2, r5, #0x0 - bl FUN_02003684 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_020035F8 -FUN_020035F8: ; 0x020035F8 - push {r3-r7, lr} - sub sp, #0x8 - str r0, [sp, #0x4] - mov r0, #0x0 - add r6, r1, #0x0 - mov r12, r0 - str r2, [sp, #0x0] - mov lr, r3 - add r0, r3, #0x0 - beq _02003680 -_0200360C: - ldr r0, [sp, #0x4] - mov r1, #0x1f - ldrh r0, [r0, #0x0] - asr r2, r0, #0x5 - add r5, r2, #0x0 - and r5, r1 - ldr r1, [sp, #0x0] - asr r4, r0, #0xa - ldrh r1, [r1, #0x4] - lsl r1, r1, #0x11 - lsr r3, r1, #0x11 - ldr r1, [sp, #0x0] - ldrh r1, [r1, #0x2] - lsl r1, r1, #0x15 - lsr r2, r1, #0x1b - mov r1, #0x1f - and r1, r4 - mov r4, #0x1f - and r0, r4 - and r4, r3 - sub r4, r4, r0 - mul r4, r2 - asr r4, r4, #0x4 - add r0, r0, r4 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - asr r4, r3, #0xa - mov r0, #0x1f - and r0, r4 - sub r0, r0, r1 - mul r0, r2 - asr r0, r0, #0x4 - add r0, r1, r0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - asr r3, r3, #0x5 - mov r1, #0x1f - and r1, r3 - sub r1, r1, r5 - mul r1, r2 - asr r1, r1, #0x4 - add r1, r5, r1 - lsl r1, r1, #0x18 - lsl r0, r0, #0xa - lsr r1, r1, #0x13 - orr r0, r1 - orr r0, r7 - strh r0, [r6, #0x0] - ldr r0, [sp, #0x4] - add r6, r6, #0x2 - add r0, r0, #0x2 - str r0, [sp, #0x4] - mov r0, r12 - add r1, r0, #0x1 - mov r0, lr - mov r12, r1 - cmp r1, r0 - blo _0200360C -_02003680: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02003684 -FUN_02003684: ; 0x02003684 - push {r4-r5} - ldrh r4, [r2, #0x2] - lsl r3, r4, #0x10 - lsl r4, r4, #0x15 - lsr r3, r3, #0x1b - lsr r4, r4, #0x1b - cmp r4, r3 - bne _020036BE - mov r3, #0x46 - lsl r3, r3, #0x2 - ldrh r4, [r0, r3] - mov r2, #0x1 - lsl r2, r1 - lsl r1, r4, #0x10 - lsr r5, r1, #0x12 - add r1, r5, #0x0 - tst r1, r2 - beq _0200371E - eor r2, r5 - lsl r2, r2, #0x10 - ldr r1, _02003724 ; =0xFFFF0003 - lsr r2, r2, #0x10 - lsl r2, r2, #0x12 - and r1, r4 - lsr r2, r2, #0x10 - orr r1, r2 - strh r1, [r0, r3] - pop {r4-r5} - bx lr -_020036BE: - ldrh r0, [r2, #0x4] - lsl r0, r0, #0x10 - lsr r0, r0, #0x1f - bne _020036F4 - lsl r0, r4, #0x10 - asr r1, r0, #0x10 - ldrh r0, [r2, #0x6] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - add r0, r1, r0 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - cmp r4, r3 - ble _020036DE - lsl r0, r3, #0x10 - asr r4, r0, #0x10 -_020036DE: - ldrh r1, [r2, #0x2] - ldr r0, _02003728 ; =0xFFFFF83F - and r1, r0 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1b - lsr r0, r0, #0x15 - orr r0, r1 - strh r0, [r2, #0x2] - pop {r4-r5} - bx lr -_020036F4: - lsl r0, r4, #0x10 - asr r1, r0, #0x10 - ldrh r0, [r2, #0x6] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - sub r0, r1, r0 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - cmp r4, r3 - bge _0200370C - lsl r0, r3, #0x10 - asr r4, r0, #0x10 -_0200370C: - ldrh r1, [r2, #0x2] - ldr r0, _02003728 ; =0xFFFFF83F - and r1, r0 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1b - lsr r0, r0, #0x15 - orr r0, r1 - strh r0, [r2, #0x2] -_0200371E: - pop {r4-r5} - bx lr - nop -_02003724: .word 0xFFFF0003 -_02003728: .word 0xFFFFF83F - - thumb_func_start FUN_0200372C -FUN_0200372C: ; 0x0200372C - push {r3-r7, lr} - add r6, r0, #0x0 - ldr r0, _020038DC ; =0x0000011A - ldrh r1, [r6, r0] - lsl r1, r1, #0x10 - lsr r1, r1, #0x1f - bne _02003748 - sub r0, r0, #0x2 - ldrh r0, [r6, r0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1e - cmp r0, #0x1 - beq _02003748 - b _020038DA -_02003748: - mov r7, #0x2 - mov r5, #0x0 - add r4, r6, #0x0 - lsl r7, r7, #0xc -_02003750: - ldr r0, _020038DC ; =0x0000011A - ldrh r1, [r6, r0] - lsl r0, r1, #0x10 - lsr r0, r0, #0x1f - bne _02003770 - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _0200377C - lsl r0, r1, #0x12 - lsl r1, r5, #0x10 - lsr r0, r0, #0x12 - lsr r1, r1, #0x10 - bl FUN_02003314 - cmp r0, #0x0 - beq _0200377C -_02003770: - ldr r0, [r4, #0x4] - ldr r1, [r4, #0x8] - bl DC_FlushRange - cmp r5, #0xd - bls _0200377E -_0200377C: - b _020038A4 -_0200377E: - add r0, r5, r5 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0200378A: ; jump table (using 16-bit offset) - .short _020037A6 - _0200378A - 2; case 0 - .short _020037B2 - _0200378A - 2; case 1 - .short _020037BE - _0200378A - 2; case 2 - .short _020037CA - _0200378A - 2; case 3 - .short _020037D6 - _0200378A - 2; case 4 - .short _020037EA - _0200378A - 2; case 5 - .short _020037FE - _0200378A - 2; case 6 - .short _02003814 - _0200378A - 2; case 7 - .short _0200382A - _0200378A - 2; case 8 - .short _0200383E - _0200378A - 2; case 9 - .short _02003852 - _0200378A - 2; case 10 - .short _02003868 - _0200378A - 2; case 11 - .short _0200387E - _0200378A - 2; case 12 - .short _02003892 - _0200378A - 2; case 13 -_020037A6: - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - mov r1, #0x0 - bl GX_LoadBGPltt - b _020038A4 -_020037B2: - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - mov r1, #0x0 - bl GXS_LoadBGPltt - b _020038A4 -_020037BE: - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - mov r1, #0x0 - bl GX_LoadOBJPltt - b _020038A4 -_020037CA: - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - mov r1, #0x0 - bl GXS_LoadOBJPltt - b _020038A4 -_020037D6: - bl GX_BeginLoadBGExtPltt - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - mov r1, #0x0 - bl GX_LoadBGExtPltt - bl GX_EndLoadBGExtPltt - b _020038A4 -_020037EA: - bl GX_BeginLoadBGExtPltt - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - add r1, r7, #0x0 - bl GX_LoadBGExtPltt - bl GX_EndLoadBGExtPltt - b _020038A4 -_020037FE: - bl GX_BeginLoadBGExtPltt - mov r1, #0x1 - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - lsl r1, r1, #0xe - bl GX_LoadBGExtPltt - bl GX_EndLoadBGExtPltt - b _020038A4 -_02003814: - bl GX_BeginLoadBGExtPltt - mov r1, #0x6 - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - lsl r1, r1, #0xc - bl GX_LoadBGExtPltt - bl GX_EndLoadBGExtPltt - b _020038A4 -_0200382A: - bl GXS_BeginLoadBGExtPltt - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - mov r1, #0x0 - bl GXS_LoadBGExtPltt - bl GXS_EndLoadBGExtPltt - b _020038A4 -_0200383E: - bl GXS_BeginLoadBGExtPltt - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - add r1, r7, #0x0 - bl GXS_LoadBGExtPltt - bl GXS_EndLoadBGExtPltt - b _020038A4 -_02003852: - bl GXS_BeginLoadBGExtPltt - mov r1, #0x1 - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - lsl r1, r1, #0xe - bl GXS_LoadBGExtPltt - bl GXS_EndLoadBGExtPltt - b _020038A4 -_02003868: - bl GXS_BeginLoadBGExtPltt - mov r1, #0x6 - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - lsl r1, r1, #0xc - bl GXS_LoadBGExtPltt - bl GXS_EndLoadBGExtPltt - b _020038A4 -_0200387E: - bl GX_BeginLoadOBJExtPltt - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - mov r1, #0x0 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020038A4 -_02003892: - bl GXS_BeginLoadOBJExtPltt - ldr r0, [r4, #0x4] - ldr r2, [r4, #0x8] - mov r1, #0x0 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt -_020038A4: - add r5, r5, #0x1 - add r4, #0x14 - cmp r5, #0xe - bge _020038AE - b _02003750 -_020038AE: - ldr r3, _020038DC ; =0x0000011A - ldr r1, _020038E0 ; =0xFFFFC000 - sub r2, r3, #0x2 - ldrh r2, [r6, r2] - ldrh r0, [r6, r3] - lsl r2, r2, #0x10 - and r0, r1 - lsr r2, r2, #0x12 - lsr r1, r1, #0x12 - and r1, r2 - orr r0, r1 - strh r0, [r6, r3] - ldrh r0, [r6, r3] - lsl r0, r0, #0x12 - lsr r0, r0, #0x12 - bne _020038DA - sub r0, r3, #0x2 - ldrh r1, [r6, r0] - mov r0, #0x3 - bic r1, r0 - sub r0, r3, #0x2 - strh r1, [r6, r0] -_020038DA: - pop {r3-r7, pc} - .balign 4 -_020038DC: .word 0x0000011A -_020038E0: .word 0xFFFFC000 - - thumb_func_start FUN_020038E4 -FUN_020038E4: ; 0x020038E4 - mov r1, #0x46 - lsl r1, r1, #0x2 - ldrh r0, [r0, r1] - lsl r0, r0, #0x10 - lsr r0, r0, #0x12 - bx lr - - thumb_func_start FUN_020038F0 -FUN_020038F0: ; 0x020038F0 - push {r3-r4} - ldr r3, _0200390C ; =0x0000011A - lsl r1, r1, #0x10 - ldrh r4, [r0, r3] - ldr r2, _02003910 ; =0xFFFF7FFF - lsr r1, r1, #0x10 - lsl r1, r1, #0x1f - and r2, r4 - lsr r1, r1, #0x10 - orr r1, r2 - strh r1, [r0, r3] - pop {r3-r4} - bx lr - nop -_0200390C: .word 0x0000011A -_02003910: .word 0xFFFF7FFF - - thumb_func_start FUN_02003914 -FUN_02003914: ; 0x02003914 - push {r3-r7, lr} - sub sp, #0x8 - add r6, r0, #0x0 - str r3, [sp, #0x0] - mov r0, #0x14 - add r4, r1, #0x0 - mul r4, r0 - add r0, sp, #0x10 - ldrh r0, [r0, #0x14] - add r7, r2, #0x0 - ldr r5, [sp, #0x20] - str r0, [sp, #0x4] - lsl r1, r0, #0x1 - add r0, r6, r4 - ldr r0, [r0, #0x8] - cmp r1, r0 - bls _0200393A - bl GF_AssertFail -_0200393A: - sub r0, r7, #0x1 - cmp r0, #0x1 - bhi _02003952 - ldr r2, [r6, r4] - lsl r1, r5, #0x1 - add r1, r2, r1 - ldr r2, [sp, #0x4] - ldr r0, [sp, #0x0] - sub r2, r2, r5 - lsl r2, r2, #0x1 - bl MIi_CpuClear16 -_02003952: - cmp r7, #0x0 - beq _0200395A - cmp r7, #0x2 - bne _0200396E -_0200395A: - add r1, r6, r4 - ldr r2, [r1, #0x4] - lsl r1, r5, #0x1 - add r1, r2, r1 - ldr r2, [sp, #0x4] - ldr r0, [sp, #0x0] - sub r2, r2, r5 - lsl r2, r2, #0x1 - bl MIi_CpuClear16 -_0200396E: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02003974 -FUN_02003974: ; 0x02003974 - push {r4-r7, lr} - sub sp, #0xc - str r0, [sp, #0x0] - add r0, sp, #0x10 - ldrh r0, [r0, #0x10] - str r1, [sp, #0x4] - add r7, r2, #0x0 - lsl r1, r0, #0x1b - lsr r1, r1, #0x1b - mov r12, r1 - lsl r1, r0, #0x16 - lsl r0, r0, #0x11 - lsr r1, r1, #0x1b - lsr r0, r0, #0x1b - mov r2, #0x0 - mov lr, r1 - str r0, [sp, #0x8] - cmp r7, #0x0 - bls _020039E2 -_0200399A: - ldr r0, [sp, #0x0] - lsl r6, r2, #0x1 - ldrh r4, [r0, r6] - lsl r0, r4, #0x1b - lsr r1, r0, #0x1b - lsl r0, r4, #0x16 - lsl r4, r4, #0x11 - lsr r5, r4, #0x1b - ldr r4, [sp, #0x8] - lsr r0, r0, #0x1b - sub r4, r4, r5 - mul r4, r3 - asr r4, r4, #0x4 - add r4, r5, r4 - lsl r5, r4, #0xa - mov r4, r12 - sub r4, r4, r1 - mul r4, r3 - asr r4, r4, #0x4 - add r1, r1, r4 - mov r4, lr - sub r4, r4, r0 - mul r4, r3 - asr r4, r4, #0x4 - add r0, r0, r4 - lsl r0, r0, #0x5 - orr r0, r1 - add r1, r5, #0x0 - orr r1, r0 - ldr r0, [sp, #0x4] - strh r1, [r0, r6] - add r0, r2, #0x1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - cmp r2, r7 - blo _0200399A -_020039E2: - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_020039E8 -FUN_020039E8: ; 0x020039E8 - push {r3-r7, lr} - sub sp, #0x8 - add r7, r2, #0x0 - add r5, r0, #0x0 - mov r2, #0x14 - add r6, r1, #0x0 - mul r6, r2 - str r3, [sp, #0x4] - ldr r1, [r5, r6] - mov r0, #0x0 - add r4, r5, r6 - cmp r1, #0x0 - beq _02003A0A - ldr r1, [r4, #0x4] - cmp r1, #0x0 - beq _02003A0A - mov r0, #0x1 -_02003A0A: - cmp r0, #0x0 - bne _02003A12 - bl GF_AssertFail -_02003A12: - add r3, sp, #0x10 - ldrh r0, [r3, #0x14] - add r2, r5, r6 - lsl r1, r7, #0x1 - str r0, [sp, #0x0] - ldr r0, [r4, #0x0] - ldr r2, [r2, #0x4] - add r0, r0, r1 - add r1, r2, r1 - ldrb r3, [r3, #0x10] - ldr r2, [sp, #0x4] - bl FUN_02003974 - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02003A30 -FUN_02003A30: ; 0x02003A30 - push {r3-r7, lr} - sub sp, #0x8 - str r3, [sp, #0x4] - add r5, r0, #0x0 - add r6, r1, #0x0 - add r4, r2, #0x0 - ldr r7, [sp, #0x20] - beq _02003A60 -_02003A40: - mov r0, #0x1 - tst r0, r4 - beq _02003A54 - str r7, [sp, #0x0] - ldr r3, [sp, #0x4] - add r0, r5, #0x0 - add r1, r6, #0x0 - mov r2, #0x10 - bl FUN_02003974 -_02003A54: - lsl r0, r4, #0xf - lsr r4, r0, #0x10 - add r6, #0x20 - add r5, #0x20 - cmp r4, #0x0 - bne _02003A40 -_02003A60: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02003A64 -FUN_02003A64: ; 0x02003A64 - push {r4-r7, lr} - sub sp, #0xc - str r3, [sp, #0x8] - add r6, r0, #0x0 - add r7, r1, #0x0 - ldr r0, [sp, #0x20] - add r5, r2, #0x0 - mov r1, #0x14 - add r2, r7, #0x0 - str r0, [sp, #0x20] - mul r2, r1 - mov r4, #0x0 - ldr r1, [r6, r2] - add r0, r4, #0x0 - cmp r1, #0x0 - beq _02003A8E - add r1, r6, r2 - ldr r1, [r1, #0x4] - cmp r1, #0x0 - beq _02003A8E - mov r0, #0x1 -_02003A8E: - cmp r0, #0x0 - bne _02003A96 - bl GF_AssertFail -_02003A96: - cmp r5, #0x0 - beq _02003AC0 -_02003A9A: - mov r0, #0x1 - tst r0, r5 - beq _02003AB6 - ldr r0, [sp, #0x8] - lsl r2, r4, #0x10 - str r0, [sp, #0x0] - ldr r0, [sp, #0x20] - add r1, r7, #0x0 - str r0, [sp, #0x4] - add r0, r6, #0x0 - lsr r2, r2, #0x10 - mov r3, #0x10 - bl FUN_020039E8 -_02003AB6: - lsl r0, r5, #0xf - lsr r5, r0, #0x10 - add r4, #0x10 - cmp r5, #0x0 - bne _02003A9A -_02003AC0: - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_02003AC4 -FUN_02003AC4: ; 0x02003AC4 - push {r3-r7, lr} - mov lr, r1 - mov r12, r2 - add r7, r3, #0x0 - mov r4, #0x0 - cmp r1, #0x0 - ble _02003B3C - ldr r6, [sp, #0x18] -_02003AD4: - ldrh r3, [r0, #0x0] - mov r1, #0x1f - add r2, r3, #0x0 - asr r5, r3, #0xa - and r2, r1 - and r5, r1 - mov r1, #0x1d - mul r1, r5 - mov r5, #0x4c - mul r5, r2 - asr r3, r3, #0x5 - mov r2, #0x1f - and r3, r2 - mov r2, #0x97 - mul r2, r3 - add r2, r5, r2 - add r1, r1, r2 - asr r3, r1, #0x8 - mov r1, r12 - add r2, r1, #0x0 - mul r2, r3 - lsl r1, r2, #0x10 - lsr r1, r1, #0x10 - asr r2, r1, #0x8 - add r1, r7, #0x0 - mul r1, r3 - mul r3, r6 - lsl r1, r1, #0x10 - lsl r3, r3, #0x10 - lsr r1, r1, #0x10 - lsr r3, r3, #0x10 - asr r1, r1, #0x8 - asr r3, r3, #0x8 - cmp r2, #0x1f - ble _02003B1C - mov r2, #0x1f -_02003B1C: - cmp r1, #0x1f - ble _02003B22 - mov r1, #0x1f -_02003B22: - cmp r3, #0x1f - ble _02003B28 - mov r3, #0x1f -_02003B28: - lsl r3, r3, #0xa - lsl r1, r1, #0x5 - orr r1, r3 - orr r1, r2 - strh r1, [r0, #0x0] - add r4, r4, #0x1 - mov r1, lr - add r0, r0, #0x2 - cmp r4, r1 - blt _02003AD4 -_02003B3C: - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02003B40 -FUN_02003B40: ; 0x02003B40 - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, r1, #0x0 - add r1, r2, #0x0 - add r2, sp, #0x4 - bl GfGfxLoader_GetPlttData - add r4, r0, #0x0 - bne _02003B58 - bl GF_AssertFail -_02003B58: - ldr r0, [sp, #0x1c] - cmp r0, #0x0 - bne _02003B64 - ldr r0, [sp, #0x4] - ldr r0, [r0, #0x8] - str r0, [sp, #0x1c] -_02003B64: - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0x24] - str r0, [sp, #0x0] - ldr r0, [sp, #0x4] - ldr r3, [sp, #0x28] - ldr r0, [r0, #0xc] - mov r1, #0x10 - bl FUN_02003AC4 - ldr r0, [sp, #0x1c] - add r3, sp, #0x8 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x0] - ldr r1, [sp, #0x4] - ldrh r3, [r3, #0x18] - ldr r1, [r1, #0xc] - ldr r2, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_02003054 - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x8 - pop {r3-r5, pc} diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s index 526c52c7..01721a1a 100644 --- a/arm9/asm/unk_02006D98.s +++ b/arm9/asm/unk_02006D98.s @@ -3724,7 +3724,7 @@ _020087E0: add r1, r2, r1 ldrb r3, [r3, #0x0] mov r2, #0x10 - bl FUN_02003974 + bl BlendPalette add r0, r4, #0x0 add r0, #0x6c ldrh r0, [r0, #0x0] @@ -3748,7 +3748,7 @@ _020087E0: add r1, r2, r1 ldrb r3, [r3, #0x0] mov r2, #0x10 - bl FUN_02003974 + bl BlendPalette _02008862: add r0, r4, #0x0 add r0, #0x49 diff --git a/arm9/asm/unk_020142EC.s b/arm9/asm/unk_020142EC.s index 5526b320..3a0426d5 100644 --- a/arm9/asm/unk_020142EC.s +++ b/arm9/asm/unk_020142EC.s @@ -23,7 +23,7 @@ FUN_020142EC: ; 0x020142EC bne _02014320 add r0, r5, #0x0 mov r1, #0x0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf str r0, [sp, #0x0] ldr r0, _02014398 ; =FUN_020144E0 str r0, [r4, #0x4] @@ -31,7 +31,7 @@ FUN_020142EC: ; 0x020142EC _02014320: add r0, r5, #0x0 mov r1, #0x1 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf str r0, [sp, #0x0] ldr r0, _0201439C ; =FUN_020144FC str r0, [r4, #0x4] @@ -288,6 +288,6 @@ FUN_020144E0: ; 0x020144E0 mov r2, #0x0 lsl r3, r3, #0x14 lsr r3, r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette pop {r3, pc} .balign 4 diff --git a/arm9/asm/unk_020144FC.s b/arm9/asm/unk_020144FC.s index e3677eca..9d52898d 100644 --- a/arm9/asm/unk_020144FC.s +++ b/arm9/asm/unk_020144FC.s @@ -15,7 +15,7 @@ FUN_020144FC: ; 0x020144FC mov r2, #0x1 lsl r3, r3, #0x14 lsr r3, r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette pop {r3, pc} .balign 4 diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index e742f202..90e19c61 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -94,24 +94,24 @@ FUN_0206C700: ; 0x0206C700 mov r1, #0x0 lsl r2, r2, #0x8 add r3, r5, #0x0 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r1, #0x1 ldr r0, [r4, #0x14] lsl r2, r1, #0x9 add r3, r5, #0x0 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #0x7 ldr r0, [r4, #0x14] mov r1, #0x2 lsl r2, r2, #0x6 add r3, r5, #0x0 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #0x2 ldr r0, [r4, #0x14] mov r1, #0x3 lsl r2, r2, #0x8 add r3, r5, #0x0 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r5, #0x0 bl BgConfig_Alloc str r0, [r4, #0x0] @@ -300,16 +300,16 @@ FUN_0206C92C: ; 0x0206C92C bl WindowArray_dtor ldr r0, [r4, #0x14] mov r1, #0x0 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x14] mov r1, #0x1 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x14] mov r1, #0x2 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x14] mov r1, #0x3 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x14] bl FUN_02002FEC ldr r0, [r4, #0x18] @@ -2386,7 +2386,7 @@ _0206DA26: ldr r3, [r5, #0x5c] mov r1, #0x76 mov r2, #0x8 - bl FUN_020030E8 + bl PaletteData_LoadNarc add r0, r6, #0x0 bl FUN_0200CD64 add r2, r0, #0x0 @@ -2399,7 +2399,7 @@ _0206DA26: ldr r0, [r5, #0x14] ldr r3, [r5, #0x5c] mov r1, #0x26 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x0 str r0, [sp, #0x0] mov r0, #0x20 @@ -2410,7 +2410,7 @@ _0206DA26: ldr r3, [r5, #0x5c] mov r1, #0xe mov r2, #0x7 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r0, [r5, #0x5c] mov r1, #0x2 str r0, [sp, #0x0] @@ -2429,7 +2429,7 @@ _0206DA26: ldr r0, [r5, #0x14] ldr r3, [r5, #0x5c] mov r1, #0x26 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x4] @@ -2464,7 +2464,7 @@ _0206DA26: ldr r0, [r5, #0x14] ldr r3, [r5, #0x5c] add r2, r1, #0x0 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x1 lsl r0, r0, #0x1a ldr r1, [r0, #0x0] diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s index 162a8aca..c6e0a621 100644 --- a/arm9/asm/unk_020859C0.s +++ b/arm9/asm/unk_020859C0.s @@ -306,21 +306,21 @@ _02085A9A: mov r1, #0x0 lsl r2, r2, #0x8 mov r3, #0x35 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r4, #0x0 add r0, #0xe8 mov r1, #0x1 ldr r0, [r0, #0x0] lsl r2, r1, #0x9 mov r3, #0x35 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r4, #0x0 add r0, #0xe8 mov r1, #0x2 ldr r0, [r0, #0x0] lsl r2, r1, #0x8 mov r3, #0x35 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r4, #0x0 add r0, #0xe8 mov r2, #0x2 @@ -328,7 +328,7 @@ _02085A9A: mov r1, #0x3 lsl r2, r2, #0x8 mov r3, #0x35 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r4, #0x0 add r0, #0xe4 ldr r0, [r0, #0x0] @@ -510,22 +510,22 @@ FUN_02085C08: ; 0x02085C08 add r0, #0xe8 ldr r0, [r0, #0x0] mov r1, #0x0 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0x0 add r0, #0xe8 ldr r0, [r0, #0x0] mov r1, #0x1 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0x0 add r0, #0xe8 ldr r0, [r0, #0x0] mov r1, #0x2 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0x0 add r0, #0xe8 ldr r0, [r0, #0x0] mov r1, #0x3 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0x0 add r0, #0xe8 ldr r0, [r0, #0x0] diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s index d110b7f1..3d88cc10 100644 --- a/arm9/asm/unk_02086084.s +++ b/arm9/asm/unk_02086084.s @@ -68,23 +68,23 @@ FUN_02086084: ; 0x02086084 mov r1, #0x0 lsl r2, r2, #0x8 mov r3, #0x47 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r1, #0x2 ldr r0, [r4, #0x8] lsl r2, r1, #0x8 mov r3, #0x47 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r1, #0x1 ldr r0, [r4, #0x8] lsl r2, r1, #0x9 mov r3, #0x47 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #0x2 ldr r0, [r4, #0x8] mov r1, #0x3 lsl r2, r2, #0x8 mov r3, #0x47 - bl FUN_02003008 + bl PaletteData_AllocBuffers bl FUN_02086414 bl FUN_0208643C bl FUN_0208650C @@ -183,16 +183,16 @@ FUN_020861DC: ; 0x020861DC bl GX_EngineBToggleLayers ldr r0, [r4, #0x8] mov r1, #0x0 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x8] mov r1, #0x2 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x8] mov r1, #0x1 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x8] mov r1, #0x3 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x8] bl FUN_02002FEC ldr r0, [r4, #0x4] diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index f01e84e2..e041eec2 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -472,7 +472,7 @@ FUN_020866FC: ; 0x020866FC add r0, r4, #0x0 mov r1, #0x26 mov r3, #0x47 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x0 str r0, [sp, #0x0] mov r0, #0x47 @@ -493,7 +493,7 @@ FUN_020866FC: ; 0x020866FC add r0, r4, #0x0 mov r1, #0x26 mov r3, #0x47 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x0 str r0, [sp, #0x0] mov r0, #0x20 @@ -504,7 +504,7 @@ FUN_020866FC: ; 0x020866FC mov r1, #0xe mov r2, #0x7 mov r3, #0x47 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0xc pop {r3-r6, pc} @@ -793,7 +793,7 @@ FUN_0208699C: ; 0x0208699C mov r1, #0x76 mov r2, #0x8 mov r3, #0x47 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0x10 pop {r3-r5, pc} .balign 4 @@ -838,7 +838,7 @@ FUN_020869F0: ; 0x020869F0 add r0, r4, #0x0 add r2, r1, #0x0 mov r3, #0x47 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0x10 pop {r3-r5, pc} diff --git a/arm9/global.inc b/arm9/global.inc index fb7fe343..086d9b5f 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -245,25 +245,25 @@ .extern FUN_02002F9C .extern FUN_02002FD0 .extern FUN_02002FEC -.extern FUN_02003008 -.extern FUN_02003038 -.extern FUN_02003054 -.extern FUN_02003084 -.extern FUN_020030E8 +.extern PaletteData_AllocBuffers +.extern PaletteData_FreeBuffers +.extern PaletteData_LoadPalette +.extern PaletteData_LoadFromNarc +.extern PaletteData_LoadNarc .extern FUN_02003108 -.extern FUN_0200317C -.extern FUN_020031B8 -.extern FUN_020031FC -.extern FUN_02003204 +.extern CopyPaletteFromNarc +.extern PaletteData_CopyPalette +.extern PaletteData_GetUnfadedBuf +.extern PaletteData_GetFadedBuf .extern FUN_02003210 .extern FUN_0200372C .extern FUN_020038E4 .extern FUN_020038F0 -.extern FUN_02003914 -.extern FUN_02003974 -.extern FUN_020039E8 -.extern FUN_02003A30 -.extern FUN_02003A64 +.extern PaletteData_FillPalette +.extern BlendPalette +.extern BlendPaletteUnfaded +.extern BlendPalettes +.extern BlendPalettesUnfaded .extern FUN_02003B40 .extern InitSoundData .extern DoSoundUpdateFrame diff --git a/arm9/modules/05/asm/mod05_021E3444.s b/arm9/modules/05/asm/mod05_021E3444.s index 9bd14da2..0537d0db 100644 --- a/arm9/modules/05/asm/mod05_021E3444.s +++ b/arm9/modules/05/asm/mod05_021E3444.s @@ -1474,7 +1474,7 @@ MOD05_021E3F68: ; 0x021E3F68 ldr r0, [sp, #4] add r3, r7, #0 ldr r0, [r0, #0xc] - bl FUN_02003974 + bl BlendPalette add r0, r6, #0 add r1, r5, #0 mov r2, #0x20 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 234e29fe..dbf02f8d 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -156,7 +156,7 @@ MOD07_02211F34: ; 0x02211F34 mov r1, #0 ldr r3, [r3, #0x24] mov r2, #0x60 - bl FUN_02003008 + bl PaletteData_AllocBuffers ldr r0, _02211FEC ; =0x00000B82 mov r3, #0 strb r3, [r4, r0] @@ -1641,7 +1641,7 @@ _02212BA8: bl FUN_0201C29C ldr r0, [r4, #8] mov r1, #0 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #8] bl FUN_02002FEC ldr r0, [r4] diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s index 4a0a6d1c..1cc36e88 100644 --- a/arm9/modules/08/asm/module_08.s +++ b/arm9/modules/08/asm/module_08.s @@ -35,7 +35,7 @@ MOD08_02211E7C: ; 0x02211E7C add r0, r5, #0 add r2, r4, #0 lsr r3, r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette pop {r3, r4, r5, pc} .align 2, 0 @@ -3185,7 +3185,7 @@ _02213500: ldr r1, [sp, #0x14] ldr r2, [sp, #0x10] ldr r3, [r5] - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3650,7 +3650,7 @@ _022138F0: ldr r1, [sp, #0x18] ldr r2, [sp, #0x14] ldr r3, [r4] - bl FUN_020030E8 + bl PaletteData_LoadNarc _02213926: ldr r0, [sp, #0xc] lsl r5, r0, #2 @@ -4160,7 +4160,7 @@ MOD08_02213C94: ; 0x02213C94 ldr r0, [r0] ldr r3, [r5] mov r1, #7 - bl FUN_020030E8 + bl PaletteData_LoadNarc add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 @@ -4663,7 +4663,7 @@ _02214078: ldr r1, [r3, r1] ldr r2, [r3, r2] ldr r3, [r3] - bl FUN_020030E8 + bl PaletteData_LoadNarc _022140CC: ldr r2, [r4, #0x48] mov r0, #0 @@ -4754,7 +4754,7 @@ _02214142: ldr r0, [r0] add r2, #0x64 mov r3, #0x10 - bl FUN_02003A64 + bl BlendPalettesUnfaded b _022141B8 _02214180: mov r3, #0 @@ -4782,7 +4782,7 @@ _02214180: ldr r0, [r0] add r2, #0x64 mov r3, #0x10 - bl FUN_02003A64 + bl BlendPalettesUnfaded _022141B8: ldrb r0, [r4, #5] add r0, r0, #1 @@ -4917,7 +4917,7 @@ _02214286: ldr r0, [r0] lsr r2, r2, #0x10 mov r3, #0x10 - bl FUN_02003A64 + bl BlendPalettesUnfaded b _022142FA _022142C2: mov r3, #0 @@ -4945,7 +4945,7 @@ _022142C2: mov r1, #0 lsr r2, r2, #0x10 mov r3, #0x10 - bl FUN_02003A64 + bl BlendPalettesUnfaded _022142FA: ldrb r0, [r4, #5] add r0, r0, #1 @@ -5039,7 +5039,7 @@ _0221436A: ldr r1, [r3, r1] ldr r2, [r3, r2] ldr r3, [r3] - bl FUN_020030E8 + bl PaletteData_LoadNarc _022143BE: ldr r2, [r4, #0x48] mov r0, #0 @@ -7574,7 +7574,7 @@ MOD08_02215660: ; 0x02215660 mov r2, #0 ldr r0, [r0] add r3, r2, #0 - bl FUN_02003054 + bl PaletteData_LoadPalette pop {r3, pc} thumb_func_start MOD08_02215680 @@ -7875,7 +7875,7 @@ _022158C2: ldr r1, [sp, #0x20] ldr r2, [sp, #0x1c] ldr r3, [r4] - bl FUN_020030E8 + bl PaletteData_LoadNarc _022158EC: ldr r0, [sp, #0x24] add r7, r7, #4 @@ -14563,7 +14563,7 @@ MOD08_02218A84: ; 0x02218A84 ldrh r3, [r4, #0xe] ldr r0, [r4, #0x18] ldr r1, [r4, #8] - bl FUN_020039E8 + bl BlendPaletteUnfaded ldrb r3, [r4, #0x13] ldrb r1, [r4, #0x14] cmp r1, r3 @@ -14728,7 +14728,7 @@ MOD08_02218BD4: ; 0x02218BD4 add r5, r0, #0 bl MOD08_02215504 mov r1, #0 - bl FUN_02003204 + bl PaletteData_GetFadedBuf add r4, r0, #0 add r0, r5, #0 bl MOD08_02212004 @@ -14763,7 +14763,7 @@ MOD08_02218C04: ; 0x02218C04 add r0, r4, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020031B8 + bl PaletteData_CopyPalette add sp, #8 pop {r3, r4, r5, pc} _02218C30: @@ -14775,7 +14775,7 @@ _02218C30: add r0, r4, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020031B8 + bl PaletteData_CopyPalette add sp, #8 pop {r3, r4, r5, pc} @@ -15602,7 +15602,7 @@ _02219228: ldr r0, [r4, #0x34] mov r1, #7 add r2, r6, #0 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r0, [r4, #0x30] mov r1, #2 bl BgClearTilemapBufferAndCommit @@ -16006,7 +16006,7 @@ _02219550: ldr r0, [r4, #0x34] mov r1, #7 add r2, r6, #0 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r0, [r4, #0x30] mov r1, #2 bl BgClearTilemapBufferAndCommit @@ -26031,7 +26031,7 @@ _0221E796: mov r2, #0xff mov r3, #0xa str r1, [sp] - bl FUN_02003A64 + bl BlendPalettesUnfaded b _0221E7DA _0221E7C8: bl MOD08_02215504 @@ -26040,7 +26040,7 @@ _0221E7C8: str r1, [sp] mov r1, #0 mov r3, #0xa - bl FUN_02003A64 + bl BlendPalettesUnfaded _0221E7DA: mov r0, #3 strb r0, [r4, #3] @@ -26085,7 +26085,7 @@ _0221E810: mov r2, #0xff add r3, r1, #0 str r1, [sp] - bl FUN_02003A64 + bl BlendPalettesUnfaded _0221E832: mov r6, #0 add r5, r4, #0 @@ -34520,7 +34520,7 @@ _02222DA6: ldr r0, [r4, #0x18] lsl r2, r2, #8 mov r3, #8 - bl FUN_02003A64 + bl BlendPalettesUnfaded ldr r0, [r4] ldr r1, _02222E18 ; =MOD08_02222BF4 add r2, r4, #0 @@ -38691,7 +38691,7 @@ MOD08_02224F74: ; 0x02224F74 mov r1, #2 lsr r2, r2, #0x10 mov r3, #8 - bl FUN_02003A64 + bl BlendPalettesUnfaded add sp, #4 pop {r3, r4, pc} .align 2, 0 @@ -42756,7 +42756,7 @@ MOD08_02227068: ; 0x02227068 ldr r1, [r5] ldr r2, [r2, r3] add r3, r6, #0 - bl FUN_020030E8 + bl PaletteData_LoadNarc lsl r1, r4, #0x18 ldr r0, [r5, #0x2c] lsr r1, r1, #0x18 diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 07d0fa04..c5b40b5e 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2219,12 +2219,12 @@ MOD09_02212F8C: ; 0x02212F8C ldr r3, [r3, #0xc] mov r1, #0x48 mov r2, #0x17 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x7a lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #1 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r2, r0, #0 ldr r0, _02213134 ; =0x00001F60 mov r1, #6 @@ -2246,7 +2246,7 @@ MOD09_02212F8C: ; 0x02212F8C ldr r3, [r3, #0xc] mov r1, #0xe mov r2, #6 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #1 str r0, [sp] mov r0, #0x20 @@ -2259,7 +2259,7 @@ MOD09_02212F8C: ; 0x02212F8C ldr r3, [r3, #0xc] mov r1, #0xe mov r2, #7 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r0, [r5] ldr r0, [r0, #8] bl MOD11_02230E44 @@ -2295,12 +2295,12 @@ MOD09_02212F8C: ; 0x02212F8C ldr r0, [r5, r0] ldr r3, [r3, #0xc] mov r1, #0x26 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x7a lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #1 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r6, r0, #0 ldr r0, [r5] mov r1, #0x20 @@ -2343,7 +2343,7 @@ MOD09_02212F8C: ; 0x02212F8C str r0, [sp] ldr r0, [r5, r2] mov r2, #1 - bl FUN_02003054 + bl PaletteData_LoadPalette add r0, r4, #0 bl FreeToHeap add sp, #0x14 @@ -12567,7 +12567,7 @@ MOD09_02218640: ; 0x02218640 add r1, r2, r1 mov r2, #1 mov r3, #0xc0 - bl FUN_02003054 + bl PaletteData_LoadPalette pop {r3, pc} _02218662: mov r0, #0x20 @@ -12579,7 +12579,7 @@ _02218662: add r1, r2, r1 mov r2, #1 mov r3, #0xc0 - bl FUN_02003054 + bl PaletteData_LoadPalette pop {r3, pc} nop _0221867C: .word 0x00001F60 @@ -14029,7 +14029,7 @@ MOD09_022191C0: ; 0x022191C0 ldr r3, [r3, #0xc] mov r1, #0x4d mov r2, #3 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #1 str r0, [sp] mov r0, #0x20 @@ -14041,7 +14041,7 @@ MOD09_022191C0: ; 0x022191C0 ldr r3, [r3, #0xc] mov r1, #0xe mov r2, #7 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r0, [r5] ldr r0, [r0] bl MOD11_02230E44 @@ -14073,7 +14073,7 @@ MOD09_022191C0: ; 0x022191C0 ldr r0, [r5, #8] ldr r3, [r3, #0xc] mov r1, #0x26 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0x14 pop {r4, r5, pc} .align 2, 0 @@ -15664,7 +15664,7 @@ MOD09_02219F24: ; 0x02219F24 ldr r0, [r5, #8] ldr r3, [r3, #0xc] mov r1, #0x10 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0xc pop {r4, r5, pc} diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s index 23f0a76c..1040df95 100644 --- a/arm9/modules/11/asm/module_11_thumb1.s +++ b/arm9/modules/11/asm/module_11_thumb1.s @@ -545,7 +545,7 @@ _0222D99A: add r2, r3, r2 mov r1, #7 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc add r0, r4, #0 bl FUN_0200CD64 add r2, r0, #0 @@ -558,7 +558,7 @@ _0222D99A: ldr r0, [r5, #0x28] mov r1, #0x26 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -569,7 +569,7 @@ _0222D99A: mov r1, #0xe mov r2, #7 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -723,24 +723,24 @@ MOD11_0222DB50: ; 0x0222DB50 mov r1, #0 lsl r2, r2, #8 mov r3, #5 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r1, #1 ldr r0, [r4, #0x28] lsl r2, r1, #9 mov r3, #5 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #7 ldr r0, [r4, #0x28] mov r1, #2 lsl r2, r2, #6 mov r3, #5 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #2 ldr r0, [r4, #0x28] mov r1, #3 lsl r2, r2, #8 mov r3, #5 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r0, #5 bl BgConfig_Alloc str r0, [r4, #4] @@ -911,14 +911,14 @@ _0222DC42: str r0, [r4, #0x18] ldr r0, [r4, #0x28] mov r1, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf ldr r1, _0222DF24 ; =0x00002224 mov r2, #0xe0 add r1, r4, r1 bl MIi_CpuCopy16 ldr r0, [r4, #0x28] mov r1, #2 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf ldr r1, _0222DF28 ; =0x00002304 mov r2, #0xe0 add r1, r4, r1 @@ -942,7 +942,7 @@ _0222DC42: mov r2, #2 lsl r3, r3, #0x10 lsr r3, r3, #0x10 - bl FUN_02003914 + bl PaletteData_FillPalette mov r0, #0xc0 str r0, [sp] add r0, #0x40 @@ -960,7 +960,7 @@ _0222DC42: lsl r3, r3, #0x10 mov r2, #2 lsr r3, r3, #0x10 - bl FUN_02003914 + bl PaletteData_FillPalette mov r0, #0 str r0, [sp] mov r0, #0xdf @@ -978,7 +978,7 @@ _0222DC42: add r2, r1, #0 lsl r3, r3, #0x10 lsr r3, r3, #0x10 - bl FUN_02003914 + bl PaletteData_FillPalette mov r1, #0 mov r0, #0xa0 str r0, [sp] @@ -987,7 +987,7 @@ _0222DC42: ldr r0, [r4, #0x28] add r2, r1, #0 add r3, r1, #0 - bl FUN_02003914 + bl PaletteData_FillPalette mov r2, #0 str r2, [sp] mov r0, #0xff @@ -995,7 +995,7 @@ _0222DC42: ldr r0, [r4, #0x28] ldr r3, _0222DF30 ; =0x0000FFFF mov r1, #1 - bl FUN_02003914 + bl PaletteData_FillPalette mov r2, #0 str r2, [sp] mov r0, #0xff @@ -1003,7 +1003,7 @@ _0222DC42: ldr r0, [r4, #0x28] ldr r3, _0222DF30 ; =0x0000FFFF mov r1, #3 - bl FUN_02003914 + bl PaletteData_FillPalette ldr r0, [r4, #0x28] mov r1, #0 mov r2, #0xb @@ -1290,16 +1290,16 @@ _0222E10A: bl FreeToHeap ldr r0, [r4, #0x28] mov r1, #0 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x28] mov r1, #1 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x28] mov r1, #2 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x28] mov r1, #3 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x28] bl FUN_02002FEC ldr r0, [r4, #0xc] @@ -1565,7 +1565,7 @@ _0222E2F0: mov r1, #7 add r2, r2, r6 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc add r0, r7, #0 bl FUN_0200CD64 add r2, r0, #0 @@ -1578,7 +1578,7 @@ _0222E2F0: ldr r0, [r5, #0x28] mov r1, #0x26 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -1589,7 +1589,7 @@ _0222E2F0: mov r1, #0xe mov r2, #7 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] str r0, [sp, #4] diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 9b184cfc..1905bce4 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -30,7 +30,7 @@ MOD11_0222F29C: ; 0x0222F29C mov r1, #0 lsl r2, r2, #8 mov r3, #5 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r1, #0 mov r0, #1 str r1, [sp] @@ -39,7 +39,7 @@ MOD11_0222F29C: ; 0x0222F29C ldr r0, [r5, #0xc] mov r2, #2 add r3, r1, #0 - bl FUN_02003914 + bl PaletteData_FillPalette mov r0, #5 bl BgConfig_Alloc str r0, [r5, #4] @@ -142,7 +142,7 @@ _0222F30E: mov r1, #0xe mov r2, #7 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc add r0, r4, #0 bl FUN_0200CD64 add r2, r0, #0 @@ -155,7 +155,7 @@ _0222F30E: ldr r0, [r5, #0xc] mov r1, #0x26 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r1, #0 mov r0, #1 str r1, [sp] @@ -164,7 +164,7 @@ _0222F30E: ldr r0, [r5, #0xc] add r2, r1, #0 add r3, r1, #0 - bl FUN_02003914 + bl PaletteData_FillPalette bl GX_BothDispOn mov r0, #0x10 mov r1, #1 @@ -805,7 +805,7 @@ MOD11_0222F93C: ; 0x0222F93C bl FUN_0200E3A0 ldr r0, [r4, #0xc] mov r1, #0 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0xc] bl FUN_02002FEC ldr r0, [r4, #8] @@ -3859,7 +3859,7 @@ MOD11_02230FCC: ; 0x02230FCC ldr r5, [r4, r0] ldr r0, [r4, #0x28] mov r1, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf mov r2, #2 add r1, r5, #0 lsl r2, r2, #8 @@ -23844,7 +23844,7 @@ _0223AC50: add r0, r7, #0 mov r1, #0x26 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #7 str r0, [sp] mov r0, #0xe @@ -73745,7 +73745,7 @@ _0225319A: bne _02253286 add r0, r5, #0 mov r1, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r7, r0, #0 ldr r0, [r4] bl MOD11_02231244 @@ -73758,7 +73758,7 @@ _0225319A: bne _022531DC add r0, r5, #0 mov r1, #2 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r7, r0, #0 ldr r0, [r4] bl MOD11_02231250 @@ -73773,7 +73773,7 @@ _022531DC: tst r0, r1 beq _02253200 add r0, r5, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r7, r0, #0 ldr r0, [r4] bl MOD11_02231250 @@ -73789,7 +73789,7 @@ _02253200: beq _02253226 add r0, r5, #0 mov r1, #2 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r7, r0, #0 ldr r0, [r4] bl MOD11_02231250 @@ -73800,7 +73800,7 @@ _02253200: _02253226: add r0, r5, #0 mov r1, #2 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r7, r0, #0 ldr r0, [r4] bl MOD11_02231250 @@ -73897,7 +73897,7 @@ _022532E4: _022532F6: add r0, r5, #0 mov r1, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r6, r0, #0 ldr r0, [r4] bl MOD11_02231244 @@ -73910,7 +73910,7 @@ _022532F6: bne _02253332 add r0, r5, #0 mov r1, #2 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r6, r0, #0 ldr r0, [r4] bl MOD11_02231250 @@ -73925,7 +73925,7 @@ _02253332: tst r0, r1 beq _02253356 add r0, r5, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r6, r0, #0 ldr r0, [r4] bl MOD11_02231250 @@ -73941,7 +73941,7 @@ _02253356: beq _0225337C add r0, r5, #0 mov r1, #2 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r6, r0, #0 ldr r0, [r4] bl MOD11_02231250 @@ -73952,7 +73952,7 @@ _02253356: _0225337C: add r0, r5, #0 mov r1, #2 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r6, r0, #0 ldr r0, [r4] bl MOD11_02231250 @@ -83966,7 +83966,7 @@ _022580F2: add r2, #0xf lsl r2, r2, #0x10 lsr r2, r2, #0x10 - bl FUN_020039E8 + bl BlendPaletteUnfaded add sp, #8 pop {r3, r4, r5, r6, r7, pc} _02258112: @@ -83995,7 +83995,7 @@ _0225812A: add r2, #0xf lsl r2, r2, #0x10 lsr r2, r2, #0x10 - bl FUN_020039E8 + bl BlendPaletteUnfaded add sp, #8 pop {r3, r4, r5, r6, r7, pc} _0225814A: @@ -84214,7 +84214,7 @@ _02258288: add r2, r2, r3 ldrh r2, [r5, r2] mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #1 str r0, [sp] ldr r0, [sp, #0x20] @@ -84523,10 +84523,10 @@ _0225854E: mov r1, #7 mov r2, #0xc3 mov r3, #5 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r0, [sp, #0x10] mov r1, #1 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf mov r2, #2 ldr r1, [r6, #0x58] lsl r2, r2, #8 @@ -84881,7 +84881,7 @@ _02258874: ldr r1, [r7, #0x58] mov r2, #1 mov r3, #0 - bl FUN_02003054 + bl PaletteData_LoadPalette ldr r6, [sp, #0x2c] mov r4, #0 _0225889A: @@ -89160,7 +89160,7 @@ _0225AB62: add r0, r6, #0 mov r2, #1 lsr r3, r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette add r4, r4, #1 _0225AB96: cmp r4, #4 @@ -89215,7 +89215,7 @@ MOD11_0225ABA4: ; 0x0225ABA4 add r0, r7, #0 mov r2, #1 lsr r3, r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette add r0, r6, #0 mov r1, #4 bl ScheduleBgTilemapBufferTransfer @@ -90735,7 +90735,7 @@ MOD11_0225B794: ; 0x0225B794 ldr r0, _0225B81C ; =0x00007FFF str r0, [sp, #4] add r0, r4, #0 - bl FUN_020039E8 + bl BlendPaletteUnfaded ldr r1, _0225B820 ; =0x000006A8 _0225B7C8: ldrb r0, [r5, r1] @@ -90805,7 +90805,7 @@ MOD11_0225B824: ; 0x0225B824 bne _0225B8A8 add r0, r4, #0 mov r1, #1 - bl FUN_02003204 + bl PaletteData_GetFadedBuf add r4, r0, #0 ldr r0, _0225B8AC ; =gMain + 0x40 ldrh r0, [r0, #0x22] diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index 5cb61425..53833b86 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -76,24 +76,24 @@ MOD12_0222D5C0: ; 0x0222D5C0 mov r1, #0 lsl r2, r2, #8 mov r3, #0x15 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r1, #1 ldr r0, [r4, #0x5c] lsl r2, r1, #9 mov r3, #0x15 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #7 ldr r0, [r4, #0x5c] mov r1, #2 lsl r2, r2, #6 mov r3, #0x15 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #2 ldr r0, [r4, #0x5c] mov r1, #3 lsl r2, r2, #8 mov r3, #0x15 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r0, #0x15 bl BgConfig_Alloc str r0, [r4, #0x30] @@ -483,16 +483,16 @@ MOD12_0222D9B0: ; 0x0222D9B0 bl FUN_020117BC ldr r0, [r4, #0x5c] mov r1, #0 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x5c] mov r1, #1 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x5c] mov r1, #2 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x5c] mov r1, #3 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x5c] bl FUN_02002FEC ldr r0, [r4, #0x58] @@ -1164,7 +1164,7 @@ MOD12_0222DFC4: ; 0x0222DFC4 mov r1, #0x2d mov r2, #0x1d mov r3, #0x15 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x15 mov r1, #0x20 bl AllocFromHeap @@ -1175,11 +1175,11 @@ MOD12_0222DFC4: ; 0x0222DFC4 str r0, [sp, #0x10] ldr r0, [r5, #0x5c] mov r1, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf add r4, r0, #0 ldr r0, [r5, #0x5c] mov r1, #0 - bl FUN_02003204 + bl PaletteData_GetFadedBuf str r0, [sp, #0x14] ldr r0, _0222E0EC ; =MOD12_022451D0 add r1, r7, #0 @@ -3211,24 +3211,24 @@ MOD12_0222EF04: ; 0x0222EF04 mov r1, #0 lsl r2, r2, #8 mov r3, #0x16 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r1, #1 ldr r0, [r5, #0x50] lsl r2, r1, #9 mov r3, #0x16 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #7 ldr r0, [r5, #0x50] mov r1, #2 lsl r2, r2, #6 mov r3, #0x16 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r2, #2 ldr r0, [r5, #0x50] mov r1, #3 lsl r2, r2, #8 mov r3, #0x16 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r0, #0x16 bl BgConfig_Alloc str r0, [r5, #0x30] @@ -3311,7 +3311,7 @@ MOD12_0222EF04: ; 0x0222EF04 ldr r0, [r5, #0x50] ldr r3, _0222F17C ; =0x00007FFF add r2, r1, #0 - bl FUN_02003914 + bl PaletteData_FillPalette mov r1, #1 add r0, r1, #0 str r1, [sp] @@ -3320,7 +3320,7 @@ MOD12_0222EF04: ; 0x0222EF04 ldr r0, [r5, #0x50] ldr r3, _0222F17C ; =0x00007FFF mov r2, #0 - bl FUN_02003914 + bl PaletteData_FillPalette mov r2, #0 str r2, [sp] mov r0, #0xe0 @@ -3328,7 +3328,7 @@ MOD12_0222EF04: ; 0x0222EF04 ldr r0, [r5, #0x50] ldr r3, _0222F17C ; =0x00007FFF mov r1, #2 - bl FUN_02003914 + bl PaletteData_FillPalette mov r2, #0 mov r0, #1 str r2, [sp] @@ -3337,7 +3337,7 @@ MOD12_0222EF04: ; 0x0222EF04 ldr r0, [r5, #0x50] ldr r3, _0222F17C ; =0x00007FFF mov r1, #3 - bl FUN_02003914 + bl PaletteData_FillPalette bl FUN_02033E74 mov r0, #6 str r0, [sp] @@ -3654,16 +3654,16 @@ _0222F3AE: bl FUN_02002CF8 ldr r0, [r4, #0x50] mov r1, #0 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x50] mov r1, #1 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x50] mov r1, #2 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x50] mov r1, #3 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x50] bl FUN_02002FEC ldr r0, [r4, #0x48] @@ -4209,7 +4209,7 @@ MOD12_0222F834: ; 0x0222F834 mov r1, #0x2d mov r2, #0x22 mov r3, #0x16 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -4220,7 +4220,7 @@ MOD12_0222F834: ; 0x0222F834 mov r1, #0x2d mov r2, #0x23 mov r3, #0x16 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r1, [r5] ldr r0, _0222F930 ; =0x00001988 ldr r0, [r1, r0] @@ -4248,7 +4248,7 @@ MOD12_0222F834: ; 0x0222F834 ldr r0, [r5, #0x50] mov r1, #0x26 mov r3, #0x16 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -4283,7 +4283,7 @@ MOD12_0222F834: ; 0x0222F834 mov r1, #0x2d mov r2, #0x24 mov r3, #0x16 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 @@ -4332,7 +4332,7 @@ MOD12_0222F938: ; 0x0222F938 mov r1, #0x2d mov r2, #0x21 mov r3, #0x16 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0x10 pop {r4, pc} @@ -5058,14 +5058,14 @@ MOD12_0222FE4C: ; 0x0222FE4C mov r1, #0 lsl r2, r2, #8 mov r3, #0x17 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r5, #0 add r0, #0xa4 mov r1, #1 ldr r0, [r0] lsl r2, r1, #9 mov r3, #0x17 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r5, #0 add r0, #0xa4 mov r2, #7 @@ -5073,7 +5073,7 @@ MOD12_0222FE4C: ; 0x0222FE4C mov r1, #2 lsl r2, r2, #6 mov r3, #0x17 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r5, #0 add r0, #0xa4 mov r2, #2 @@ -5081,7 +5081,7 @@ MOD12_0222FE4C: ; 0x0222FE4C mov r1, #3 lsl r2, r2, #8 mov r3, #0x17 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r1, #2 mov r0, #0x17 lsl r1, r1, #8 @@ -5484,22 +5484,22 @@ _02230296: add r0, #0xa4 ldr r0, [r0] mov r1, #0 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0 add r0, #0xa4 ldr r0, [r0] mov r1, #1 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0 add r0, #0xa4 ldr r0, [r0] mov r1, #2 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0 add r0, #0xa4 ldr r0, [r0] mov r1, #3 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0 add r0, #0xa4 ldr r0, [r0] @@ -5670,7 +5670,7 @@ MOD12_022304B0: ; 0x022304B0 add r0, #0xa4 ldr r0, [r0] mov r1, #0 - bl FUN_02003204 + bl PaletteData_GetFadedBuf add r4, r0, #0 mov r2, #2 ldr r0, [r5] @@ -5689,7 +5689,7 @@ MOD12_022304B0: ; 0x022304B0 asr r3, r3, #8 lsl r3, r3, #0x18 lsr r3, r3, #0x18 - bl FUN_02003A30 + bl BlendPalettes ldrh r3, [r5, #0xa] ldrh r1, [r5, #8] cmp r1, r3 @@ -6207,7 +6207,7 @@ MOD12_022308F0: ; 0x022308F0 mov r1, #0x2d mov r2, #0x1f mov r3, #0x17 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -6220,7 +6220,7 @@ MOD12_022308F0: ; 0x022308F0 mov r1, #0x2d mov r2, #0x23 mov r3, #0x17 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r1, [r5] ldr r0, _022309C4 ; =0x00001988 ldr r0, [r1, r0] @@ -6250,14 +6250,14 @@ MOD12_022308F0: ; 0x022308F0 ldr r0, [r0] mov r1, #0x26 mov r3, #0x17 - bl FUN_020030E8 + bl PaletteData_LoadNarc add r0, r5, #0 bl MOD12_0223E734 add r0, r5, #0 add r0, #0xa4 ldr r0, [r0] mov r1, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf ldr r1, _022309C8 ; =0x0000110C mov r2, #2 ldr r1, [r5, r1] @@ -8479,10 +8479,10 @@ _02231A98: add r0, r6, #0 mov r1, #0x2d mov r3, #0x15 - bl FUN_020030E8 + bl PaletteData_LoadNarc add r0, r6, #0 mov r1, #1 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf lsl r1, r5, #2 add r1, r4, r1 ldr r1, [r1, #0x34] @@ -8607,7 +8607,7 @@ _02231B90: add r1, r7, r1 ldr r1, [r1, #0x34] mov r3, #0 - bl FUN_02003054 + bl PaletteData_LoadPalette ldr r6, [sp, #0x14] ldr r4, [sp, #0x10] mov r5, #0 @@ -8910,7 +8910,7 @@ MOD12_02231D5C: ; 0x02231D5C str r0, [sp, #0xc] ldr r0, [r2, #0x50] mov r2, #0x25 - bl FUN_02003084 + bl PaletteData_LoadFromNarc add sp, #0x1c pop {r3, r4, r5, r6, pc} nop @@ -9143,7 +9143,7 @@ _02231FC0: ldr r0, [r0, #0x50] mov r2, #1 lsr r3, r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette ldr r0, _022320A0 ; =0x000002E1 ldrb r0, [r6, r0] cmp r0, #0xff @@ -9927,7 +9927,7 @@ MOD12_022325AC: ; 0x022325AC ldr r1, [r7, r1] mov r2, #1 lsr r3, r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _022325EC: @@ -9953,7 +9953,7 @@ _022325EC: ldr r0, [r0, #0x50] mov r2, #1 lsr r3, r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop @@ -10644,7 +10644,7 @@ _02232B46: mov r3, #0x10 lsl r2, r2, #0x14 lsr r2, r2, #0x10 - bl FUN_020039E8 + bl BlendPaletteUnfaded cmp r4, #1 bne _02232B70 add r0, r5, #0 @@ -12129,7 +12129,7 @@ MOD12_02233648: ; 0x02233648 add r2, r2, #1 lsl r2, r2, #0x10 lsr r2, r2, #0x10 - bl FUN_020039E8 + bl BlendPaletteUnfaded mov r1, #8 ldrsh r2, [r4, r1] cmp r2, #0 @@ -15894,7 +15894,7 @@ _02235402: str r0, [sp, #4] ldr r0, [r4] ldr r0, [r0, #0x5c] - bl FUN_020039E8 + bl BlendPaletteUnfaded add sp, #0x10 pop {r3, r4, r5, pc} _0223541C: @@ -15922,7 +15922,7 @@ _02235438: str r0, [sp, #4] ldr r0, [r4] ldr r0, [r0, #0x5c] - bl FUN_020039E8 + bl BlendPaletteUnfaded add sp, #0x10 pop {r3, r4, r5, pc} _02235452: @@ -25922,14 +25922,14 @@ _02239E14: ldr r2, _02239E8C ; =0x00001FFF ldr r0, [r0, #0x50] add r3, r1, #0 - bl FUN_02003A64 + bl BlendPalettesUnfaded mov r3, #0 str r3, [sp] ldr r0, [r4] ldr r2, _02239E90 ; =0x00003FFF ldr r0, [r0, #0x50] mov r1, #2 - bl FUN_02003A64 + bl BlendPalettesUnfaded ldr r0, _02239E94 ; =0x000006EC bl PlaySE ldrb r0, [r4, #0x10] @@ -28300,7 +28300,7 @@ _0223B06C: add r2, r1, #0 ldr r0, [r0, #0x50] add r3, r1, #0 - bl FUN_02003914 + bl PaletteData_FillPalette mov r2, #0 str r2, [sp] mov r0, #0xe0 @@ -28309,7 +28309,7 @@ _0223B06C: mov r1, #2 ldr r0, [r0, #0x50] add r3, r2, #0 - bl FUN_02003914 + bl PaletteData_FillPalette ldrb r0, [r4, #0x10] add sp, #8 add r0, r0, #1 @@ -29079,7 +29079,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 mov r1, #0x1e mov r2, #0x17 lsl r3, r3, #8 - bl FUN_0200317C + bl CopyPaletteFromNarc ldr r0, [r4, #4] mov r2, #0x17 ldr r1, [r0] @@ -29096,7 +29096,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 add r0, #0x40 str r0, [sp, #4] mov r0, #0x2d - bl FUN_0200317C + bl CopyPaletteFromNarc mov r0, #0 mov r1, #0x20 add r4, #0xf0 @@ -29106,7 +29106,7 @@ MOD12_0223B4F8: ; 0x0223B4F8 str r0, [sp, #4] mov r0, #0x2d lsl r3, r1, #4 - bl FUN_0200317C + bl CopyPaletteFromNarc add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 @@ -29230,7 +29230,7 @@ _0223B7D6: ldr r1, [r1] mov r2, #1 mov r3, #0 - bl FUN_02003054 + bl PaletteData_LoadPalette _0223B7F2: ldr r4, [sp, #0x10] mov r5, #0 @@ -30553,7 +30553,7 @@ MOD12_0223C1F4: ; 0x0223C1F4 ldr r0, [r0] mov r2, #0 mov r3, #0x40 - bl FUN_020039E8 + bl BlendPaletteUnfaded add sp, #8 pop {r3, pc} @@ -35423,7 +35423,7 @@ MOD12_0223E750: ; 0x0223E750 add r5, r1, #0 ldr r0, [r0] mov r1, #0 - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf ldr r3, _0223E77C ; =MOD12_0224620C lsl r5, r5, #2 ldrh r1, [r3, r5] @@ -35435,7 +35435,7 @@ MOD12_0223E750: ; 0x0223E750 lsl r3, r3, #0x18 ldr r1, [r4, r1] lsr r3, r3, #0x18 - bl FUN_02003A30 + bl BlendPalettes pop {r3, r4, r5, pc} .align 2, 0 _0223E77C: .word MOD12_0224620C @@ -35646,7 +35646,7 @@ MOD12_0223E8EC: ; 0x0223E8EC mov r1, #0 add r0, #0xa4 ldr r0, [r0] - bl FUN_020031FC + bl PaletteData_GetUnfadedBuf ldrb r1, [r4, #0xa] lsl r3, r1, #1 ldr r1, _0223E94C ; =0x00007FFF @@ -35661,7 +35661,7 @@ MOD12_0223E8EC: ; 0x0223E8EC asr r3, r3, #8 lsl r3, r3, #0x18 lsr r3, r3, #0x18 - bl FUN_02003974 + bl BlendPalette ldrh r1, [r4, #8] cmp r1, #0 bne _0223E932 @@ -36309,7 +36309,7 @@ _0223EE30: add r0, #8 mov r2, #1 lsr r3, r3, #0x18 - bl FUN_02003974 + bl BlendPalette add r1, sp, #4 ldrh r1, [r1] ldr r0, [r5] @@ -41150,14 +41150,14 @@ MOD12_02241210: ; 0x02241210 mov r1, #0 lsl r2, r2, #8 mov r3, #0x18 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r5, #0 add r0, #0xd0 mov r1, #1 ldr r0, [r0] lsl r2, r1, #9 mov r3, #0x18 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r5, #0 add r0, #0xd0 mov r2, #7 @@ -41165,7 +41165,7 @@ MOD12_02241210: ; 0x02241210 mov r1, #2 lsl r2, r2, #6 mov r3, #0x18 - bl FUN_02003008 + bl PaletteData_AllocBuffers add r0, r5, #0 add r0, #0xd0 mov r2, #2 @@ -41173,7 +41173,7 @@ MOD12_02241210: ; 0x02241210 mov r1, #3 lsl r2, r2, #8 mov r3, #0x18 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r0, #0x18 bl BgConfig_Alloc str r0, [r5, #0x30] @@ -41519,22 +41519,22 @@ _022415D4: add r0, #0xd0 ldr r0, [r0] mov r1, #0 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] mov r1, #1 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] mov r1, #2 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] mov r1, #3 - bl FUN_02003038 + bl PaletteData_FreeBuffers add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] @@ -42193,7 +42193,7 @@ MOD12_02241BA0: ; 0x02241BA0 mov r1, #0x2d mov r2, #0x21 mov r3, #0x18 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -43656,7 +43656,7 @@ MOD12_022426BC: ; 0x022426BC mov r1, #0x2d mov r2, #0x22 mov r3, #0x18 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -43669,7 +43669,7 @@ MOD12_022426BC: ; 0x022426BC mov r1, #0x2d mov r2, #0x23 mov r3, #0x18 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r1, [r5] ldr r0, _02242784 ; =0x00001988 ldr r0, [r1, r0] @@ -43699,7 +43699,7 @@ MOD12_022426BC: ; 0x022426BC ldr r0, [r0] mov r1, #0x26 mov r3, #0x18 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r0, [r5, #0x30] mov r1, #2 bl BgClearTilemapBufferAndCommit @@ -43826,7 +43826,7 @@ MOD12_02242804: ; 0x02242804 mov r1, #0x2d mov r2, #0x26 mov r3, #0x18 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -43839,7 +43839,7 @@ MOD12_02242804: ; 0x02242804 mov r1, #0x2d mov r2, #0x23 mov r3, #0x18 - bl FUN_020030E8 + bl PaletteData_LoadNarc ldr r1, [r6] ldr r0, _022429D0 ; =0x00001988 ldr r0, [r1, r0] @@ -43869,7 +43869,7 @@ MOD12_02242804: ; 0x02242804 ldr r0, [r0] mov r1, #0x26 mov r3, #0x18 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0xc mov r1, #0x18 bl String_ctor @@ -44010,7 +44010,7 @@ MOD12_022429E0: ; 0x022429E0 ldr r0, [r0] mov r1, #1 mov r2, #2 - bl FUN_02003914 + bl PaletteData_FillPalette mov r3, #0 mov r0, #1 str r3, [sp] @@ -44020,7 +44020,7 @@ MOD12_022429E0: ; 0x022429E0 ldr r0, [r4] mov r1, #3 mov r2, #2 - bl FUN_02003914 + bl PaletteData_FillPalette add sp, #8 pop {r4, pc} diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index 480aa929..73e8460b 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -49734,7 +49734,7 @@ MOD16_021EE5D0: ; 0x021EE5D0 ldr r1, [r1] mov r2, #0x30 add r3, r7, #0 - bl FUN_02003974 + bl BlendPalette ldr r0, [sp, #4] mov r1, #1 bl NNS_G2dGetImagePaletteLocation @@ -49759,7 +49759,7 @@ MOD16_021EE5D0: ; 0x021EE5D0 ldr r1, [r1] mov r2, #0x50 add r3, r7, #0 - bl FUN_02003974 + bl BlendPalette ldr r0, [sp, #8] mov r1, #1 bl NNS_G2dGetImagePaletteLocation diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index cbb58d60..d58310fa 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -466,7 +466,7 @@ _021D77F2: add r2, #0x22 lsl r2, r2, #0x10 lsr r2, r2, #0x10 - bl FUN_020039E8 + bl BlendPaletteUnfaded ldrb r0, [r5, #0x16] strb r0, [r5, #0x17] mov r0, #0 @@ -780,7 +780,7 @@ _021D7ABC: lsl r2, r3, #0x10 lsr r2, r2, #0x10 mov r3, #1 - bl FUN_020039E8 + bl BlendPaletteUnfaded ldrb r0, [r4, #0x16] strb r0, [r4, #0x17] mov r0, #0 @@ -798,7 +798,7 @@ _021D7AEA: add r2, #0x22 lsl r2, r2, #0x10 lsr r2, r2, #0x10 - bl FUN_020039E8 + bl BlendPaletteUnfaded ldrb r0, [r4, #0x15] ldrb r1, [r4, #0x14] cmp r0, #0 @@ -1134,12 +1134,12 @@ MOD61_021D7CE8: ; 0x021D7CE8 ldr r3, [r5] mov r1, #0 mov r2, #0xe0 - bl FUN_02003008 + bl PaletteData_AllocBuffers ldr r0, [r5, #0x30] ldr r3, [r5] mov r1, #2 mov r2, #0x60 - bl FUN_02003008 + bl PaletteData_AllocBuffers mov r0, #0x60 str r0, [sp] ldr r1, [sp, #0x24] @@ -1147,7 +1147,7 @@ MOD61_021D7CE8: ; 0x021D7CE8 ldr r0, [r5, #0x30] ldr r1, [r1, #0xc] add r3, r2, #0 - bl FUN_02003054 + bl PaletteData_LoadPalette ldrb r0, [r5, #0xc] cmp r0, #1 bne _021D7E00 @@ -1159,7 +1159,7 @@ MOD61_021D7CE8: ; 0x021D7CE8 mov r2, #0 add r1, #0x60 mov r3, #0x10 - bl FUN_02003054 + bl PaletteData_LoadPalette _021D7E00: mov r0, #2 str r0, [sp] @@ -1170,7 +1170,7 @@ _021D7E00: ldr r0, [r5, #0x30] ldr r3, [r5] mov r1, #0x13 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -1181,7 +1181,7 @@ _021D7E00: ldr r3, [r5] mov r1, #0xe mov r2, #6 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -1192,7 +1192,7 @@ _021D7E00: ldr r3, [r5] mov r1, #0xe mov r2, #7 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -1203,7 +1203,7 @@ _021D7E00: ldr r3, [r5] mov r1, #0x26 mov r2, #0x18 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -1215,7 +1215,7 @@ _021D7E00: ldr r3, [r5] mov r1, #0x26 add r2, #0x19 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0x10 mov r1, #0 str r0, [sp] @@ -1223,7 +1223,7 @@ _021D7E00: ldr r0, [r5, #0x30] add r2, r1, #0 mov r3, #0x70 - bl FUN_020039E8 + bl BlendPaletteUnfaded mov r0, #0x10 str r0, [sp] mov r2, #0 @@ -1231,7 +1231,7 @@ _021D7E00: ldr r0, [r5, #0x30] mov r1, #2 mov r3, #0x30 - bl FUN_020039E8 + bl BlendPaletteUnfaded ldr r0, [r5, #0x30] mov r1, #1 bl FUN_020038F0 @@ -1365,10 +1365,10 @@ MOD61_021D7FB4: ; 0x021D7FB4 bl FreeToHeap ldr r0, [r4, #0x30] mov r1, #2 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x30] mov r1, #0 - bl FUN_02003038 + bl PaletteData_FreeBuffers ldr r0, [r4, #0x30] bl FUN_02002FEC mov r1, #0 diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index 313e1dd9..35c6e17d 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -3115,7 +3115,7 @@ MOD62_0222ED34: ; 0x0222ED34 add r0, r4, #0 mov r1, #0x26 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x35 @@ -3136,7 +3136,7 @@ MOD62_0222ED34: ; 0x0222ED34 add r0, r4, #0 mov r1, #0x26 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x20 @@ -3147,7 +3147,7 @@ MOD62_0222ED34: ; 0x0222ED34 mov r1, #0xe mov r2, #7 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0xc pop {r3, r4, r5, r6, pc} thumb_func_end MOD62_0222ED34 @@ -3180,7 +3180,7 @@ MOD62_0222EDBC: ; 0x0222EDBC add r0, r4, #0 mov r1, #0x26 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] mov r0, #0x35 @@ -3201,7 +3201,7 @@ MOD62_0222EDBC: ; 0x0222EDBC add r0, r4, #0 mov r1, #0x26 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #1 str r0, [sp] mov r0, #0x20 @@ -3212,7 +3212,7 @@ MOD62_0222EDBC: ; 0x0222EDBC mov r1, #0xe mov r2, #7 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #1 str r0, [sp] mov r0, #0x20 @@ -3223,7 +3223,7 @@ MOD62_0222EDBC: ; 0x0222EDBC mov r1, #0xe mov r2, #7 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #1 str r0, [sp] mov r0, #0x20 @@ -3235,7 +3235,7 @@ MOD62_0222EDBC: ; 0x0222EDBC add r0, r4, #0 add r2, #0xcb mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0xc pop {r3, r4, r5, r6, pc} .align 2, 0 @@ -3829,7 +3829,7 @@ MOD62_0222F2C8: ; 0x0222F2C8 ldr r0, [r0] add r2, #0xc5 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -3910,7 +3910,7 @@ MOD62_0222F36C: ; 0x0222F36C ldr r0, [r4] add r2, #0xc4 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -3963,7 +3963,7 @@ MOD62_0222F3D4: ; 0x0222F3D4 ldr r0, [r4] add r2, #0xc4 mov r3, #0x35 - bl FUN_020030E8 + bl PaletteData_LoadNarc add sp, #0x10 pop {r4, pc} .align 2, 0 diff --git a/arm9/src/palette.c b/arm9/src/palette.c new file mode 100644 index 00000000..525574e7 --- /dev/null +++ b/arm9/src/palette.c @@ -0,0 +1,760 @@ +#include "global.h" +#include "palette.h" +#include "MI_memory.h" +#include "unk_02002F08.h" +#include "unk_0200CA44.h" + +extern void *FUN_020222E8(); +extern void *FUN_020222F8(); +extern void *FUN_02022308(); +extern void *FUN_02022310(); +extern int abs(int); + +THUMB_FUNC void FUN_02003108(struct PaletteData *paletteData, u32 index, u16 offset, u32 size) +{ + GF_ASSERT(offset * 2 + size <= paletteData->pltt[index].bufSize); + + u16 *ptr; + switch (index) + { + case 0: + ptr = FUN_020222E8(); + break; + case 1: + ptr = FUN_020222F8(); + break; + case 2: + ptr = FUN_02022308(); + break; + case 3: + ptr = FUN_02022310(); + break; + default: + GF_ASSERT(FALSE); + return; + } + + PaletteData_LoadPalette(paletteData, ptr + offset, index, offset, (u16)size); +} + +THUMB_FUNC void CopyPaletteFromNarc( + NarcId narcId, s32 memberId, u32 heap_id, u32 size, u16 offset, void *dest) +{ + NNSG2dPaletteData *pltData; + + void *ptr = GfGfxLoader_GetPlttData(narcId, memberId, &pltData, heap_id); + GF_ASSERT(ptr != NULL); + + if (size == 0) + { + size = pltData->szByte; + } + + MI_CpuCopy16(pltData->pRawData + offset * 2, dest, size); + + FreeToHeap(ptr); +} + +THUMB_FUNC void PaletteData_CopyPalette(struct PaletteData *paletteData, + u32 srcIdx, + u16 srcOffset, + u32 destIdx, + u16 destOffset, + u16 size) +{ + + MI_CpuCopy16(paletteData->pltt[srcIdx].unfadedBuf + srcOffset, + paletteData->pltt[destIdx].unfadedBuf + destOffset, + size); + MI_CpuCopy16(paletteData->pltt[srcIdx].unfadedBuf + srcOffset, + paletteData->pltt[destIdx].fadedBuf + destOffset, + size); +} + +THUMB_FUNC u16 *PaletteData_GetUnfadedBuf(struct PaletteData *paletteData, u32 index) +{ + return paletteData->pltt[index].unfadedBuf; +} + +THUMB_FUNC u16 *PaletteData_GetFadedBuf(struct PaletteData *paletteData, u32 index) +{ + return paletteData->pltt[index].fadedBuf; +} + +THUMB_FUNC u32 FUN_02003210(struct PaletteData *paletteData, + u16 param1, + u16 param2, + s16 delay, + u8 startY, + u8 targetY, + u16 color) +{ + + u16 stc = param2; + u32 r6 = 0; + + for (u8 i = 0; i < 14; i++) + { + if (IsPaletteSelected(param1, i) != 1) + { + continue; + } + + if (IsPaletteSelected(paletteData->activeFadePalettes, i) != 0) + { + continue; + } + + FUN_02003368(i, &paletteData->pltt[i], ¶m2); + + FUN_020033A4(&paletteData->pltt[i].fadeCtrl, param2, delay, startY, targetY, color); + + FUN_02003328(paletteData, i); + + if (i >= 4) + { + FUN_0200359C(paletteData, i, 0x100); + } + else + { + FUN_0200359C(paletteData, i, 0x10); + } + + param2 = stc; + r6 = 1; + } + + if (r6 == 1) + { + paletteData->activeFadePalettes |= param1; + if (paletteData->unk11a_e == 0) + { + paletteData->unk11a_e = 1; + + paletteData->unk118_0 = 1; + paletteData->unk11c = 0; + + // wtf is that? + FUN_0200CA44((void (*)(u32, struct TextPrinter *))FUN_02003464, + (struct TextPrinter *)paletteData, + (u32)(-2)); + } + } + + return r6; +} + +THUMB_FUNC u8 IsPaletteSelected(u16 selectedPalettes, u16 index) +{ + u32 r3 = 1; + if ((selectedPalettes & (1 << index)) == 0) + { + r3 = 0; + } + + return (u8)r3; +} + +THUMB_FUNC void FUN_02003328(struct PaletteData *param0, u16 param1) +{ + if (IsPaletteSelected(param0->unk11a_0, param1) != 1) + { + param0->unk11a_0 |= 1 << param1; + } +} + +THUMB_FUNC void FUN_02003368(s32 param0, struct Palette *param1, u16 *param2) +{ + u8 r0; + if (param0 < 4) + { + r0 = (u8)(param1->bufSize >> 5); + } + else + { + r0 = (u8)(param1->bufSize >> 9); + } + + u16 r4 = 0; + for (u8 i = 0; i < r0; i++) + { + r4 += 1 << i; + } + + *param2 &= r4; +} + +THUMB_FUNC void FUN_020033A4(struct PaletteFadeControl *paletteFade, + u16 selectedPalettes, + s16 delay, + u8 startY, + u8 targetY, + u16 color) +{ + if (delay < 0) + { + paletteFade->deltaY = abs(delay) + 2; + paletteFade->delay = 0; + } + else + { + paletteFade->deltaY = 2; + paletteFade->delay = delay; + } + + paletteFade->selectedPalettes = selectedPalettes; + paletteFade->y = startY; + paletteFade->targetY = targetY; + paletteFade->blendColor = color; + + paletteFade->delayCounter = paletteFade->delay; + + if (startY < targetY) + { + paletteFade->yDec = 0; + return; + } + paletteFade->yDec = 1; +} + +THUMB_FUNC void FUN_02003464(u32 param0, struct PaletteData *param1) +{ + if (param1->unk11c == 1) + { + param1->unk11c = 0; + param1->unk11a_0 = 0; + param1->activeFadePalettes = 0; + param1->unk11a_e = 0; + FUN_0200CAB4((s32)param0); + return; + } + + if (param1->unk118_0 == 1) + { + param1->unk11a_0 = param1->activeFadePalettes; + FUN_02003500(param1); + FUN_02003520(param1); + + if (param1->activeFadePalettes == 0) + { + param1->unk11a_e = 0; + FUN_0200CAB4((s32)param0); + } + } +} + +THUMB_FUNC void FUN_02003500(struct PaletteData *param0) +{ + for (u8 i = 0; i < 4; i++) + { + FUN_02003540(param0, i, 0x10); + } +} + +THUMB_FUNC void FUN_02003520(struct PaletteData *param0) +{ + for (u8 i = 4; i < 14; i++) + { + FUN_02003540(param0, i, 0x100); + } +} + +THUMB_FUNC void FUN_02003540(struct PaletteData *paletteData, u8 index, u32 param2) +{ + if (IsPaletteSelected(paletteData->activeFadePalettes, index) != 0) + { + if (paletteData->pltt[index].fadeCtrl.delayCounter < + paletteData->pltt[index].fadeCtrl.delay) + { + paletteData->pltt[index].fadeCtrl.delayCounter++; + return; + } + + paletteData->pltt[index].fadeCtrl.delayCounter = 0; + FUN_0200359C(paletteData, index, param2); + } +} + +THUMB_FUNC void FUN_0200359C(struct PaletteData *paletteData, u32 index, u32 param2) +{ + + for (u32 i = 0; i < 0x10; i++) + { + if (IsPaletteSelected(paletteData->pltt[index].fadeCtrl.selectedPalettes, (u16)i) != 0) + { + FUN_020035F8(paletteData->pltt[index].unfadedBuf + param2 * i, + paletteData->pltt[index].fadedBuf + param2 * i, + &paletteData->pltt[index].fadeCtrl, + param2); + } + } + + FUN_02003684(paletteData, (u8)index, &paletteData->pltt[index].fadeCtrl); +} + +THUMB_FUNC void FUN_020035F8( + u16 *src, u16 *dest, struct PaletteFadeControl *fadeCtrl, u32 numEntries) +{ + for (u32 i = 0; i < numEntries; i++) + { + u8 lo = (u8)((src[i] & 0x1f) + + ((((fadeCtrl->blendColor & 0x1f) - (src[i] & 0x1f)) * fadeCtrl->y) >> 4)); + + u8 hi = (u8)(((src[i] >> 10) & 0x1f) + + (((((fadeCtrl->blendColor >> 10) & 0x1f) - ((src[i] >> 10) & 0x1f)) * + fadeCtrl->y) >> + 4)); + u8 mid = + (u8)(((src[i] >> 5) & 0x1f) + + (((((fadeCtrl->blendColor >> 5) & 0x1f) - ((src[i] >> 5) & 0x1f)) * fadeCtrl->y) >> + 4)); + + dest[i] = (u16)((hi << 10) | (mid << 5) | lo); + } +} + +THUMB_FUNC void FUN_02003684( + struct PaletteData *paletteData, u8 index, struct PaletteFadeControl *fadeCtrl) +{ + if (fadeCtrl->y == fadeCtrl->targetY) + { + if ((paletteData->activeFadePalettes & (1 << index)) == 0) + { + return; + } + + paletteData->activeFadePalettes ^= (1 << index); + + return; + } + + s16 val; + if (fadeCtrl->yDec == 0) + { + val = (s16)fadeCtrl->y; + val += fadeCtrl->deltaY; + if (val > fadeCtrl->targetY) + { + val = (s16)fadeCtrl->targetY; + } + + fadeCtrl->y = val; + return; + } + + val = (s16)fadeCtrl->y; + val -= fadeCtrl->deltaY; + if (val < fadeCtrl->targetY) + { + val = (s16)fadeCtrl->targetY; + } + + fadeCtrl->y = val; +} + +THUMB_FUNC void FUN_0200372C(struct PaletteData *paletteData) +{ + if (paletteData->unk11a_f == 0 && paletteData->unk118_0 != 1) + { + return; + } + + for (s32 i = 0; i < 14; i++) + { + if (paletteData->unk11a_f != 0 || + (paletteData->pltt[i].fadedBuf != 0 && + IsPaletteSelected(paletteData->unk11a_0, (u16)i) != 0)) + { + DC_FlushRange(paletteData->pltt[i].fadedBuf, paletteData->pltt[i].bufSize); + + switch (i) + { + case 0: + GX_LoadBGPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); + break; + case 1: + GXS_LoadBGPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); + break; + case 2: + GX_LoadOBJPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); + break; + case 3: + GXS_LoadOBJPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); + break; + case 4: + GX_BeginLoadBGExtPltt(); + GX_LoadBGExtPltt( + paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); + GX_EndLoadBGExtPltt(); + break; + case 5: + GX_BeginLoadBGExtPltt(); + GX_LoadBGExtPltt( + paletteData->pltt[i].fadedBuf, 0x2000, paletteData->pltt[i].bufSize); + GX_EndLoadBGExtPltt(); + break; + case 6: + GX_BeginLoadBGExtPltt(); + GX_LoadBGExtPltt( + paletteData->pltt[i].fadedBuf, 0x4000, paletteData->pltt[i].bufSize); + GX_EndLoadBGExtPltt(); + break; + case 7: + GX_BeginLoadBGExtPltt(); + GX_LoadBGExtPltt( + paletteData->pltt[i].fadedBuf, 0x6000, paletteData->pltt[i].bufSize); + GX_EndLoadBGExtPltt(); + break; + case 8: + GXS_BeginLoadBGExtPltt(); + GXS_LoadBGExtPltt( + paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); + GXS_EndLoadBGExtPltt(); + break; + case 9: + GXS_BeginLoadBGExtPltt(); + GXS_LoadBGExtPltt( + paletteData->pltt[i].fadedBuf, 0x2000, paletteData->pltt[i].bufSize); + GXS_EndLoadBGExtPltt(); + break; + case 10: + GXS_BeginLoadBGExtPltt(); + GXS_LoadBGExtPltt( + paletteData->pltt[i].fadedBuf, 0x4000, paletteData->pltt[i].bufSize); + GXS_EndLoadBGExtPltt(); + break; + case 11: + GXS_BeginLoadBGExtPltt(); + GXS_LoadBGExtPltt( + paletteData->pltt[i].fadedBuf, 0x6000, paletteData->pltt[i].bufSize); + GXS_EndLoadBGExtPltt(); + break; + case 12: + GX_BeginLoadOBJExtPltt(); + GX_LoadOBJExtPltt( + paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); + GX_EndLoadOBJExtPltt(); + break; + case 13: + GXS_BeginLoadOBJExtPltt(); + GXS_LoadOBJExtPltt( + paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); + GXS_EndLoadOBJExtPltt(); + break; + } + } + } + + paletteData->unk11a_0 = paletteData->activeFadePalettes; + if (paletteData->unk11a_0 == 0) + { + paletteData->unk118_0 = 0; + } +} + +THUMB_FUNC u16 FUN_020038E4(struct PaletteData *paletteData) +{ + return paletteData->activeFadePalettes; +} + +THUMB_FUNC void FUN_020038F0(struct PaletteData *paletteData, u32 param1) +{ + paletteData->unk11a_f = param1; +} + +THUMB_FUNC void PaletteData_FillPalette(struct PaletteData *paletteData, + u32 index, + u32 selection, + u16 value, + u16 startOffset, + u16 endOffset) +{ + GF_ASSERT(endOffset * 2 <= paletteData->pltt[index].bufSize); + if (selection == 1 || selection == 2) + { + MI_CpuFill16(&paletteData->pltt[index].unfadedBuf[startOffset], + value, + (u32)((endOffset - startOffset) * 2)); + } + + if (selection == 0 || selection == 2) + { + MI_CpuFill16(&paletteData->pltt[index].fadedBuf[startOffset], + value, + (u32)((endOffset - startOffset) * 2)); + } +} + +#ifdef NONMATCHING +THUMB_FUNC void BlendPalette(u16 *src, u16 *dest, u16 numEntries, u8 coeff, u16 blendColor) +{ + s32 r12 = ((u32)(blendColor << 0x1b)) >> 0x1b; + s32 lr = ((u32)(blendColor << 0x16)) >> 0x1b; + s32 st8 = ((u32)(blendColor << 0x11)) >> 0x1b; + s32 lo, mid, hi; + + for (u16 i = 0; i < numEntries; i++) + { + lo = (((u32)(src[i] << 0x1b)) >> 0x1b); + mid = (((u32)(src[i] << 0x16)) >> 0x1b); + hi = (((u32)(src[i] << 0x11)) >> 0x1b); + + dest[i] = (lo + ((r12 - lo) * coeff) >> 4) | (mid + ((lr - mid) * coeff) >> 4) << 5 | + (hi + ((st8 - hi) * coeff) >> 4) << 10; + } +} +#else +asm void BlendPalette(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4) +{ + // clang-format off + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + add r0, sp, #0x10 + ldrh r0, [r0, #0x10] + str r1, [sp, #0x4] + add r7, r2, #0x0 + lsl r1, r0, #0x1b + lsr r1, r1, #0x1b + mov r12, r1 + lsl r1, r0, #0x16 + lsl r0, r0, #0x11 + lsr r1, r1, #0x1b + lsr r0, r0, #0x1b + mov r2, #0x0 + mov lr, r1 + str r0, [sp, #0x8] + cmp r7, #0x0 + bls _020039E2 +_0200399A: + ldr r0, [sp, #0x0] + lsl r6, r2, #0x1 + ldrh r4, [r0, r6] + lsl r0, r4, #0x1b + lsr r1, r0, #0x1b + lsl r0, r4, #0x16 + lsl r4, r4, #0x11 + lsr r5, r4, #0x1b + ldr r4, [sp, #0x8] + lsr r0, r0, #0x1b + sub r4, r4, r5 + mul r4, r3 + asr r4, r4, #0x4 + add r4, r5, r4 + lsl r5, r4, #0xa + mov r4, r12 + sub r4, r4, r1 + mul r4, r3 + asr r4, r4, #0x4 + add r1, r1, r4 + mov r4, lr + sub r4, r4, r0 + mul r4, r3 + asr r4, r4, #0x4 + add r0, r0, r4 + lsl r0, r0, #0x5 + orr r0, r1 + add r1, r5, #0x0 + orr r1, r0 + ldr r0, [sp, #0x4] + strh r1, [r0, r6] + add r0, r2, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + cmp r2, r7 + blo _0200399A +_020039E2: + add sp, #0xc + pop {r4-r7, pc} + // clang-format on +} +#endif + +THUMB_FUNC void BlendPaletteUnfaded(struct PaletteData *paletteData, + u32 index, + u16 offset, + u16 numEntries, + u8 coeff, + u16 blendColor) +{ + BOOL r0 = FALSE; + if (paletteData->pltt[index].unfadedBuf != 0 && paletteData->pltt[index].fadedBuf != 0) + { + r0 = TRUE; + } + + GF_ASSERT(r0); + + BlendPalette(paletteData->pltt[index].unfadedBuf + offset, + paletteData->pltt[index].fadedBuf + offset, + numEntries, + coeff, + blendColor); +} + +THUMB_FUNC void BlendPalettes(u16 *src, u16 *dest, u16 selectedPalettes, u8 coeff, u16 blendColor) +{ + while (selectedPalettes != 0) + { + if ((selectedPalettes & 1) != 0) + { + BlendPalette(src, dest, 0x10, coeff, blendColor); + } + + selectedPalettes >>= 1; + dest += 0x10; + src += 0x10; + } +} + +THUMB_FUNC void BlendPalettesUnfaded( + struct PaletteData *paletteData, u32 index, u16 selectedPalettes, u8 coeff, u16 blendColor) +{ + u32 r4 = 0; + BOOL r0 = FALSE; + if (paletteData->pltt[index].unfadedBuf != 0 && paletteData->pltt[index].fadedBuf != 0) + { + r0 = TRUE; + } + + GF_ASSERT(r0); + + while (selectedPalettes != 0) + { + if ((selectedPalettes & 1) != 0) + { + BlendPaletteUnfaded(paletteData, index, (u16)r4, 0x10, coeff, blendColor); + } + + selectedPalettes >>= 1; + r4 += 0x10; + } +} + +#ifdef NONMATCHING +THUMB_FUNC void TintPalette_CustomTone(u16 *palette, u32 count, u32 rTone, u32 gTone, u32 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 * 76 + g * 151 + b * 29) >> 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); + } +} +#else +asm void TintPalette_CustomTone(u16 *palette, u32 count, u32 rTone, u32 gTone, u32 bTone) +{ + // clang-format off + push {r3-r7, lr} + mov lr, r1 + mov r12, r2 + add r7, r3, #0x0 + mov r4, #0x0 + cmp r1, #0x0 + ble _02003B3C + ldr r6, [sp, #0x18] +_02003AD4: + ldrh r3, [r0, #0x0] + mov r1, #0x1f + add r2, r3, #0x0 + asr r5, r3, #0xa + and r2, r1 + and r5, r1 + mov r1, #0x1d + mul r1, r5 + mov r5, #0x4c + mul r5, r2 + asr r3, r3, #0x5 + mov r2, #0x1f + and r3, r2 + mov r2, #0x97 + mul r2, r3 + add r2, r5, r2 + add r1, r1, r2 + asr r3, r1, #0x8 + mov r1, r12 + add r2, r1, #0x0 + mul r2, r3 + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + asr r2, r1, #0x8 + add r1, r7, #0x0 + mul r1, r3 + mul r3, r6 + lsl r1, r1, #0x10 + lsl r3, r3, #0x10 + lsr r1, r1, #0x10 + lsr r3, r3, #0x10 + asr r1, r1, #0x8 + asr r3, r3, #0x8 + cmp r2, #0x1f + ble _02003B1C + mov r2, #0x1f +_02003B1C: + cmp r1, #0x1f + ble _02003B22 + mov r1, #0x1f +_02003B22: + cmp r3, #0x1f + ble _02003B28 + mov r3, #0x1f +_02003B28: + lsl r3, r3, #0xa + lsl r1, r1, #0x5 + orr r1, r3 + orr r1, r2 + strh r1, [r0, #0x0] + add r4, r4, #0x1 + mov r1, lr + add r0, r0, #0x2 + cmp r4, r1 + blt _02003AD4 +_02003B3C: + pop {r3-r7, pc} + // clang-format on +} +#endif + +THUMB_FUNC void FUN_02003B40(struct PaletteData *paletteData, + NarcId narcId, + s32 memberId, + u32 heap_id, + u32 index, + u32 size, + u16 offset, + u32 rTone, + u32 gTone, + u32 bTone) +{ + NNSG2dPaletteData *pltData; + void *ptr = GfGfxLoader_GetPlttData(narcId, memberId, &pltData, heap_id); + GF_ASSERT(ptr != NULL); + + if (size == 0) + { + size = pltData->szByte; + } + + TintPalette_CustomTone(pltData->pRawData, 0x10, rTone, gTone, bTone); + PaletteData_LoadPalette(paletteData, pltData->pRawData, index, offset, (u16)size); + + FreeToHeap(ptr); +} diff --git a/arm9/src/unk_02002F08.c b/arm9/src/unk_02002F08.c index b81da622..5a1eca36 100644 --- a/arm9/src/unk_02002F08.c +++ b/arm9/src/unk_02002F08.c @@ -60,53 +60,54 @@ THUMB_FUNC s32 FUN_02002F9C(u32 param0, struct String *str) UNK_02106FC8->unk94[param0], String_c_str(str)); } -THUMB_FUNC struct UnkStruct_02002F08 *FUN_02002FD0(u32 heap_id) +THUMB_FUNC struct PaletteData *FUN_02002FD0(u32 heap_id) { - struct UnkStruct_02002F08 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02002F08)); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct_02002F08)); + struct PaletteData *ptr = AllocFromHeap(heap_id, sizeof(struct PaletteData)); + MI_CpuFill8(ptr, 0, sizeof(struct PaletteData)); return ptr; } -THUMB_FUNC void FUN_02002FEC(struct UnkStruct_02002F08 *ptr) +THUMB_FUNC void FUN_02002FEC(struct PaletteData *ptr) { FreeToHeap(ptr); } -THUMB_FUNC void FUN_02002FF4( - struct UnkStruct_02002F08 *param0, u32 param1, void *param2, void *param3, u32 size) +THUMB_FUNC void PaletteData_SetBuffers( + struct PaletteData *paletteData, u32 index, void *unfadedBuf, void *fadedBuf, u32 size) { - param0->unk000[param1].unk00 = param2; - param0->unk000[param1].unk04 = param3; - param0->unk000[param1].unk08 = size; + paletteData->pltt[index].unfadedBuf = unfadedBuf; + paletteData->pltt[index].fadedBuf = fadedBuf; + paletteData->pltt[index].bufSize = size; } -THUMB_FUNC void FUN_02003008(struct UnkStruct_02002F08 *param0, u32 param1, u32 size, u32 heap_id) +THUMB_FUNC void PaletteData_AllocBuffers( + struct PaletteData *paletteData, u32 index, u32 size, u32 heap_id) { void *ptr = AllocFromHeap(heap_id, size); void *ptr2 = AllocFromHeap(heap_id, size); - FUN_02002FF4(param0, param1, ptr, ptr2, size); + PaletteData_SetBuffers(paletteData, index, ptr, ptr2, size); } -THUMB_FUNC void FUN_02003038(struct UnkStruct_02002F08 *param0, u32 param1) +THUMB_FUNC void PaletteData_FreeBuffers(struct PaletteData *paletteData, u32 index) { - FreeToHeap(param0->unk000[param1].unk00); - FreeToHeap(param0->unk000[param1].unk04); + FreeToHeap(paletteData->pltt[index].unfadedBuf); + FreeToHeap(paletteData->pltt[index].fadedBuf); } -THUMB_FUNC void FUN_02003054( - struct UnkStruct_02002F08 *param0, const void *param1, u32 param2, u32 offset, u16 size) +THUMB_FUNC void PaletteData_LoadPalette( + struct PaletteData *paletteData, const void *src, u32 index, u32 offset, u16 size) { - MIi_CpuCopy16(param1, param0->unk000[param2].unk00 + offset, size); - MIi_CpuCopy16(param1, param0->unk000[param2].unk04 + offset, size); + MIi_CpuCopy16(src, paletteData->pltt[index].unfadedBuf + offset, size); + MIi_CpuCopy16(src, paletteData->pltt[index].fadedBuf + offset, size); } -THUMB_FUNC void FUN_02003084(struct UnkStruct_02002F08 *param0, +THUMB_FUNC void PaletteData_LoadFromNarc(struct PaletteData *paletteData, NarcId narcId, s32 memberId, u32 heap_id, - u32 param4, + u32 index, u32 size, u16 offset, u16 param7) @@ -121,19 +122,19 @@ THUMB_FUNC void FUN_02003084(struct UnkStruct_02002F08 *param0, size = pltData->szByte; } - GF_ASSERT(size + offset * 2 <= param0->unk000[param4].unk08); + GF_ASSERT(size + offset * 2 <= paletteData->pltt[index].bufSize); - FUN_02003054(param0, pltData->pRawData + param7 * 2, param4, offset, (u16)size); + PaletteData_LoadPalette(paletteData, pltData->pRawData + param7 * 2, index, offset, (u16)size); FreeToHeap(ptr); } -THUMB_FUNC void FUN_020030E8(struct UnkStruct_02002F08 *param0, +THUMB_FUNC void PaletteData_LoadNarc(struct PaletteData *paletteData, NarcId narcId, s32 memberId, u32 heap_id, - u32 param4, + u32 index, u32 size, u16 offset) { - FUN_02003084(param0, narcId, memberId, heap_id, param4, size, offset, 0); + PaletteData_LoadFromNarc(paletteData, narcId, memberId, heap_id, index, size, offset, 0); } diff --git a/include/palette.h b/include/palette.h new file mode 100644 index 00000000..469c680f --- /dev/null +++ b/include/palette.h @@ -0,0 +1,73 @@ +#ifndef POKEDIAMOND_PALETTE_H +#define POKEDIAMOND_PALETTE_H + +#include "global.h" +#include "filesystem.h" +#include "unk_02002F08.h" + +void FUN_02003108(struct PaletteData *paletteData, u32 index, u16 offset, u32 size); +void CopyPaletteFromNarc( + NarcId narcId, s32 memberId, u32 heap_id, u32 size, u16 offset, void *dest); +void PaletteData_CopyPalette(struct PaletteData *paletteData, + u32 srcIdx, + u16 srcOffset, + u32 destIdx, + u16 destOffset, + u16 size); +u16 *PaletteData_GetUnfadedBuf(struct PaletteData *paletteData, u32 index); +u16 *PaletteData_GetFadedBuf(struct PaletteData *paletteData, u32 index); +u32 FUN_02003210(struct PaletteData *paletteData, + u16 param1, + u16 param2, + s16 delay, + u8 startY, + u8 targetY, + u16 color); +u8 IsPaletteSelected(u16 selectedPalettes, u16 index); +void FUN_02003328(struct PaletteData *param0, u16 param1); +void FUN_02003368(s32 param0, struct Palette *param1, u16 *param2); +void FUN_020033A4(struct PaletteFadeControl *paletteFade, + u16 selectedPalettes, + s16 delay, + u8 startY, + u8 targetY, + u16 color); +void FUN_02003464(u32 param0, struct PaletteData *param1); +void FUN_02003500(struct PaletteData *param0); +void FUN_02003520(struct PaletteData *param0); +void FUN_02003540(struct PaletteData *paletteData, u8 index, u32 param2); +void FUN_0200359C(struct PaletteData *paletteData, u32 index, u32 param2); +void FUN_020035F8(u16 *src, u16 *dest, struct PaletteFadeControl *fadeCtrl, u32 numEntries); +void FUN_02003684(struct PaletteData *paletteData, u8 index, struct PaletteFadeControl *fadeCtrl); +void FUN_0200372C(struct PaletteData *paletteData); +u16 FUN_020038E4(struct PaletteData *paletteData); +void FUN_020038F0(struct PaletteData *paletteData, u32 param1); +void PaletteData_FillPalette(struct PaletteData *paletteData, + u32 index, + u32 selection, + u16 value, + u16 startOffset, + u16 endOffset); +void BlendPalette(u16 *src, u16 *dest, u16 numEntries, u8 coeff, u16 blendColor); +void BlendPaletteUnfaded(struct PaletteData *paletteData, + u32 index, + u16 offset, + u16 numEntries, + u8 coeff, + u16 blendColor); +void BlendPalettes(u16 *src, u16 *dest, u16 selectedPalettes, u8 coeff, u16 blendColor); +void BlendPalettesUnfaded( + struct PaletteData *paletteData, u32 index, u16 selectedPalettes, u8 coeff, u16 blendColor); +void TintPalette_CustomTone(u16 *palette, u32 count, u32 rTone, u32 gTone, u32 bTone); +void FUN_02003B40(struct PaletteData *paletteData, + NarcId narcId, + s32 memberId, + u32 heap_id, + u32 index, + u32 size, + u16 offset, + u32 rTone, + u32 gTone, + u32 bTone); + +#endif // POKEDIAMOND_PALETTE_H diff --git a/include/unk_02002F08.h b/include/unk_02002F08.h index 773d9246..be551dc4 100644 --- a/include/unk_02002F08.h +++ b/include/unk_02002F08.h @@ -5,20 +5,50 @@ #include "gf_gfx_loader.h" #include "string16.h" +struct PlttData +{ + u16 r : 5; // red + u16 g : 5; // green + u16 b : 5; // blue + u16 unused_15 : 1; +}; -struct UnkStruct_02002F08 +struct PaletteFadeControl { - struct - { - u16 *unk00; - u16 *unk04; - u32 unk08; - u32 unk0c; - u32 unk10; - } unk000[14]; - - u32 unk118; - u32 unk11c; + u16 selectedPalettes; + + u16 delay : 6; + u16 y : 5; + u16 targetY : 5; + + u16 blendColor : 15; + u16 yDec : 1; + + u16 deltaY : 4; + u16 delayCounter : 6; + u16 unk06_a : 6; +}; + +struct Palette +{ + u16 *unfadedBuf; + u16 *fadedBuf; + u32 bufSize; + struct PaletteFadeControl fadeCtrl; +}; + +struct PaletteData +{ + struct Palette pltt[14]; + + u16 unk118_0 : 2; + u16 activeFadePalettes : 14; + u16 unk11a_0 : 14; + u16 unk11a_e : 1; + u16 unk11a_f : 1; + u8 unk11c; + u8 unk11d; + u16 unk11e; }; s32 FUN_02002F08(u32 param0, struct String *str, u32 param2); @@ -26,13 +56,28 @@ u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3); u32 FUN_02002F58(const u16 *str); u32 FUN_02002F90(struct String *str); s32 FUN_02002F9C(u32 param0, struct String *str); -struct UnkStruct_02002F08 *FUN_02002FD0(u32 heap_id); -void FUN_02002FEC(struct UnkStruct_02002F08 *ptr); -void FUN_02002FF4(struct UnkStruct_02002F08 *param0, u32 param1, void *param2, void *param3, u32 size); -void FUN_02003008(struct UnkStruct_02002F08 *param0, u32 param1, u32 size, u32 heap_id); -void FUN_02003038(struct UnkStruct_02002F08 *param0, u32 param1); -void FUN_02003054(struct UnkStruct_02002F08 *param0, const void *param1, u32 param2, u32 offset, u16 size); -void FUN_02003084(struct UnkStruct_02002F08 *param0, NarcId narcId, s32 memberId, u32 heap_id, u32 param4, u32 size, u16 offset, u16 param7); -void FUN_020030E8(struct UnkStruct_02002F08 *param0, NarcId narcId, s32 memberId, u32 heap_id, u32 param4, u32 size, u16 offset); - -#endif //POKEDIAMOND_UNK_02002F08_H +struct PaletteData *FUN_02002FD0(u32 heap_id); +void FUN_02002FEC(struct PaletteData *ptr); +void PaletteData_SetBuffers( + struct PaletteData *paletteData, u32 index, void *unfadedBuf, void *fadedBuf, u32 size); +void PaletteData_AllocBuffers(struct PaletteData *paletteData, u32 index, u32 size, u32 heap_id); +void PaletteData_FreeBuffers(struct PaletteData *paletteData, u32 index); +void PaletteData_LoadPalette( + struct PaletteData *paletteData, const void *src, u32 index, u32 offset, u16 size); +void PaletteData_LoadFromNarc(struct PaletteData *paletteData, + NarcId narcId, + s32 memberId, + u32 heap_id, + u32 index, + u32 size, + u16 offset, + u16 param7); +void PaletteData_LoadNarc(struct PaletteData *paletteData, + NarcId narcId, + s32 memberId, + u32 heap_id, + u32 index, + u32 size, + u16 offset); + +#endif // POKEDIAMOND_UNK_02002F08_H |