diff options
author | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-06-27 12:23:19 +0200 |
---|---|---|
committer | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-06-27 12:23:19 +0200 |
commit | ba803600ac7ceef20799ee7b0c4da0409cbbbea1 (patch) | |
tree | f842473c94b523334ed49a45d493c3f4fa21266c | |
parent | 9000931f5c47a0b6e8ee6f2ac0069db61868bd32 (diff) |
partially document unk_020030E8.c
-rw-r--r-- | arm9/asm/unk_02006D98.s | 4 | ||||
-rw-r--r-- | arm9/asm/unk_020142EC.s | 4 | ||||
-rw-r--r-- | arm9/global.inc | 18 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E3444.s | 2 | ||||
-rw-r--r-- | arm9/modules/08/asm/module_08.s | 26 | ||||
-rw-r--r-- | arm9/modules/09/asm/module_09.s | 4 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11_thumb1.s | 16 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11_thumb2.s | 36 | ||||
-rw-r--r-- | arm9/modules/12/asm/module_12.s | 58 | ||||
-rw-r--r-- | arm9/modules/16/asm/module_16.s | 4 | ||||
-rw-r--r-- | arm9/modules/61/asm/module_61.s | 10 | ||||
-rw-r--r-- | arm9/src/unk_020030E8.c | 409 | ||||
-rw-r--r-- | include/unk_02002F08.h | 31 | ||||
-rw-r--r-- | include/unk_020030E8.h | 28 |
14 files changed, 328 insertions, 322 deletions
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 e7c3e769..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] diff --git a/arm9/global.inc b/arm9/global.inc index 12a68207..4f028bbd 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -251,19 +251,19 @@ .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/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s index 902d44d7..1cc36e88 100644 --- a/arm9/modules/08/asm/module_08.s +++ b/arm9/modules/08/asm/module_08.s @@ -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 @@ -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} @@ -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 diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 5ca32f7e..c5b40b5e 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2224,7 +2224,7 @@ MOD09_02212F8C: ; 0x02212F8C 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 @@ -2300,7 +2300,7 @@ MOD09_02212F8C: ; 0x02212F8C 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 diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s index 3f932185..1040df95 100644 --- a/arm9/modules/11/asm/module_11_thumb1.s +++ b/arm9/modules/11/asm/module_11_thumb1.s @@ -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 diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 8af139bc..1905bce4 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -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] @@ -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 @@ -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 @@ -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: @@ -84526,7 +84526,7 @@ _0225854E: 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 @@ -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 6c817679..53833b86 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -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 @@ -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] @@ -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 @@ -6257,7 +6257,7 @@ MOD12_022308F0: ; 0x022308F0 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] @@ -8482,7 +8482,7 @@ _02231A98: 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] @@ -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 @@ -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] @@ -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 3a7d9e76..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 @@ -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 diff --git a/arm9/src/unk_020030E8.c b/arm9/src/unk_020030E8.c index 74abf49b..d9e410dc 100644 --- a/arm9/src/unk_020030E8.c +++ b/arm9/src/unk_020030E8.c @@ -10,34 +10,34 @@ extern void *FUN_02022308(); extern void *FUN_02022310(); extern int abs(int); -THUMB_FUNC void FUN_02003108(struct PaletteData *param0, u32 param1, u16 param2, u32 param3) +THUMB_FUNC void FUN_02003108(struct PaletteData *paletteData, u32 index, u16 offset, u32 size) { - GF_ASSERT(param2 * 2 + param3 <= param0->pltt[param1].bufSize); + GF_ASSERT(offset * 2 + size <= paletteData->pltt[index].bufSize); - u16 *r1; - switch (param1) + u16 *ptr; + switch (index) { case 0: - r1 = FUN_020222E8(); + ptr = FUN_020222E8(); break; case 1: - r1 = FUN_020222F8(); + ptr = FUN_020222F8(); break; case 2: - r1 = FUN_02022308(); + ptr = FUN_02022308(); break; case 3: - r1 = FUN_02022310(); + ptr = FUN_02022310(); break; default: GF_ASSERT(FALSE); return; } - PaletteData_LoadPalette(param0, r1 + param2, param1, param2, (u16)param3); + PaletteData_LoadPalette(paletteData, ptr + offset, index, offset, (u16)size); } -THUMB_FUNC void FUN_0200317C( +THUMB_FUNC void CopyPaletteFromNarc( NarcId narcId, s32 memberId, u32 heap_id, u32 size, u16 offset, void *dest) { NNSG2dPaletteData *pltData; @@ -55,63 +55,63 @@ THUMB_FUNC void FUN_0200317C( FreeToHeap(ptr); } -THUMB_FUNC void FUN_020031B8( - struct PaletteData *param0, u32 param1, u16 param2, u32 param3, u16 param4, u16 param5) +THUMB_FUNC void PaletteData_CopyPalette( + struct PaletteData *paletteData, u32 srcIdx, u16 srcOffset, u32 destIdx, u16 destOffset, u16 size) { MI_CpuCopy16( - param0->pltt[param1].unfadedBuf + param2, param0->pltt[param3].unfadedBuf + param4, param5); + paletteData->pltt[srcIdx].unfadedBuf + srcOffset, paletteData->pltt[destIdx].unfadedBuf + destOffset, size); MI_CpuCopy16( - param0->pltt[param1].unfadedBuf + param2, param0->pltt[param3].fadedBuf + param4, param5); + paletteData->pltt[srcIdx].unfadedBuf + srcOffset, paletteData->pltt[destIdx].fadedBuf + destOffset, size); } -THUMB_FUNC u16 *FUN_020031FC(struct PaletteData *param0, u32 param1) +THUMB_FUNC u16 *PaletteData_GetUnfadedBuf(struct PaletteData *paletteData, u32 index) { - return param0->pltt[param1].unfadedBuf; + return paletteData->pltt[index].unfadedBuf; } -THUMB_FUNC u16 *FUN_02003204(struct PaletteData *param0, u32 param1) +THUMB_FUNC u16 *PaletteData_GetFadedBuf(struct PaletteData *paletteData, u32 index) { - return param0->pltt[param1].fadedBuf; + return paletteData->pltt[index].fadedBuf; } -THUMB_FUNC u32 FUN_02003210(struct PaletteData *param0, +THUMB_FUNC u32 FUN_02003210(struct PaletteData *paletteData, u16 param1, u16 param2, - s16 param3, - u8 param6, - u8 param7, - u16 param8) + s16 delay, + u8 startY, + u8 targetY, + u16 color) { u16 stc = param2; u32 r6 = 0; - for (u8 r4 = 0; r4 < 14; r4++) + for (u8 i = 0; i < 14; i++) { - if (FUN_02003314(param1, r4) != 1) + if (IsPaletteSelected(param1, i) != 1) { continue; } - if (FUN_02003314(param0->unk118_2, r4) != 0) + if (IsPaletteSelected(paletteData->activeFadePalettes, i) != 0) { continue; } - FUN_02003368(r4, ¶m0->pltt[r4], ¶m2); + FUN_02003368(i, &paletteData->pltt[i], ¶m2); - FUN_020033A4(¶m0->pltt[r4].unk0c, param2, param3, param6, param7, param8); + FUN_020033A4(&paletteData->pltt[i].fadeCtrl, param2, delay, startY, targetY, color); - FUN_02003328(param0, r4); + FUN_02003328(paletteData, i); - if (r4 >= 4) + if (i >= 4) { - FUN_0200359C(param0, r4, 0x100); + FUN_0200359C(paletteData, i, 0x100); } else { - FUN_0200359C(param0, r4, 0x10); + FUN_0200359C(paletteData, i, 0x10); } param2 = stc; @@ -120,17 +120,17 @@ THUMB_FUNC u32 FUN_02003210(struct PaletteData *param0, if (r6 == 1) { - param0->unk118_2 |= param1; - if (param0->unk11a_e == 0) + paletteData->activeFadePalettes |= param1; + if (paletteData->unk11a_e == 0) { - param0->unk11a_e = 1; + paletteData->unk11a_e = 1; - param0->unk118_0 = 1; - param0->unk11c = 0; + paletteData->unk118_0 = 1; + paletteData->unk11c = 0; // wtf is that? FUN_0200CA44((void (*)(u32, struct TextPrinter *))FUN_02003464, - (struct TextPrinter *)param0, + (struct TextPrinter *)paletteData, (u32)(-2)); } } @@ -138,10 +138,10 @@ THUMB_FUNC u32 FUN_02003210(struct PaletteData *param0, return r6; } -THUMB_FUNC u8 FUN_02003314(u16 param0, u16 param1) +THUMB_FUNC u8 IsPaletteSelected(u16 selectedPalettes, u16 index) { u32 r3 = 1; - if ((param0 & (1 << param1)) == 0) + if ((selectedPalettes & (1 << index)) == 0) { r3 = 0; } @@ -151,7 +151,7 @@ THUMB_FUNC u8 FUN_02003314(u16 param0, u16 param1) THUMB_FUNC void FUN_02003328(struct PaletteData *param0, u16 param1) { - if (FUN_02003314(param0->unk11a_0, param1) != 1) + if (IsPaletteSelected(param0->unk11a_0, param1) != 1) { param0->unk11a_0 |= 1 << param1; } @@ -178,37 +178,37 @@ THUMB_FUNC void FUN_02003368(s32 param0, struct Palette *param1, u16 *param2) *param2 &= r4; } -THUMB_FUNC void FUN_020033A4(struct PaletteControl *param0, - u16 param1, - s16 param2, - u8 param3, - u8 param4, - u16 param5) +THUMB_FUNC void FUN_020033A4(struct PaletteFadeControl *paletteFade, + u16 selectedPalettes, + s16 delay, + u8 startY, + u8 targetY, + u16 color) { - if (param2 < 0) + if (delay < 0) { - param0->unk06_0 = abs(param2) + 2; - param0->unk02_0 = 0; + paletteFade->deltaY = abs(delay) + 2; + paletteFade->delay = 0; } else { - param0->unk06_0 = 2; - param0->unk02_0 = param2; + paletteFade->deltaY = 2; + paletteFade->delay = delay; } - param0->unk00 = param1; - param0->unk02_6 = param3; - param0->unk02_b = param4; - param0->unk04_0 = param5; + paletteFade->selectedPalettes = selectedPalettes; + paletteFade->y = startY; + paletteFade->targetY = targetY; + paletteFade->blendColor = color; - param0->unk06_4 = param0->unk02_0; + paletteFade->delayCounter = paletteFade->delay; - if (param3 < param4) + if (startY < targetY) { - param0->unk04_f = 0; + paletteFade->yDec = 0; return; } - param0->unk04_f = 1; + paletteFade->yDec = 1; } THUMB_FUNC void FUN_02003464(u32 param0, struct PaletteData *param1) @@ -217,7 +217,7 @@ THUMB_FUNC void FUN_02003464(u32 param0, struct PaletteData *param1) { param1->unk11c = 0; param1->unk11a_0 = 0; - param1->unk118_2 = 0; + param1->activeFadePalettes = 0; param1->unk11a_e = 0; FUN_0200CAB4((s32)param0); return; @@ -225,11 +225,11 @@ THUMB_FUNC void FUN_02003464(u32 param0, struct PaletteData *param1) if (param1->unk118_0 == 1) { - param1->unk11a_0 = param1->unk118_2; + param1->unk11a_0 = param1->activeFadePalettes; FUN_02003500(param1); FUN_02003520(param1); - if (param1->unk118_2 == 0) + if (param1->activeFadePalettes == 0) { param1->unk11a_e = 0; FUN_0200CAB4((s32)param0); @@ -253,232 +253,233 @@ THUMB_FUNC void FUN_02003520(struct PaletteData *param0) } } -THUMB_FUNC void FUN_02003540(struct PaletteData *param0, u8 param1, u32 param2) +THUMB_FUNC void FUN_02003540(struct PaletteData *paletteData, u8 index, u32 param2) { - if (FUN_02003314(param0->unk118_2, param1) != 0) + if (IsPaletteSelected(paletteData->activeFadePalettes, index) != 0) { - if (param0->pltt[param1].unk0c.unk06_4 < param0->pltt[param1].unk0c.unk02_0) + if (paletteData->pltt[index].fadeCtrl.delayCounter < paletteData->pltt[index].fadeCtrl.delay) { - param0->pltt[param1].unk0c.unk06_4++; + paletteData->pltt[index].fadeCtrl.delayCounter++; return; } - param0->pltt[param1].unk0c.unk06_4 = 0; - FUN_0200359C(param0, param1, param2); + paletteData->pltt[index].fadeCtrl.delayCounter = 0; + FUN_0200359C(paletteData, index, param2); } } -THUMB_FUNC void FUN_0200359C(struct PaletteData *param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_0200359C(struct PaletteData *paletteData, u32 index, u32 param2) { - for (u32 r6 = 0; r6 < 0x10; r6++) + for (u32 i = 0; i < 0x10; i++) { - if (FUN_02003314(param0->pltt[param1].unk0c.unk00, (u16)r6) != 0) + if (IsPaletteSelected(paletteData->pltt[index].fadeCtrl.selectedPalettes, (u16)i) != 0) { - FUN_020035F8(param0->pltt[param1].unfadedBuf + param2 * r6, - param0->pltt[param1].fadedBuf + param2 * r6, - ¶m0->pltt[param1].unk0c, + FUN_020035F8(paletteData->pltt[index].unfadedBuf + param2 * i, + paletteData->pltt[index].fadedBuf + param2 * i, + &paletteData->pltt[index].fadeCtrl, param2); } } - FUN_02003684(param0, (u8)param1, ¶m0->pltt[param1].unk0c); + FUN_02003684(paletteData, (u8)index, &paletteData->pltt[index].fadeCtrl); } THUMB_FUNC void FUN_020035F8( - u16 *param0, u16 *param1, struct PaletteControl *param2, u32 param3) + u16 *src, u16 *dest, struct PaletteFadeControl *fadeCtrl, u32 numEntries) { - for (u32 i = 0; i < param3; i++) + for (u32 i = 0; i < numEntries; i++) { - u8 lo = (u8)((param0[i] & 0x1f) + - ((((param2->unk04_0 & 0x1f) - (param0[i] & 0x1f)) * param2->unk02_6) >> 4)); + u8 lo = (u8)((src[i] & 0x1f) + + ((((fadeCtrl->blendColor & 0x1f) - (src[i] & 0x1f)) * fadeCtrl->y) >> 4)); - u8 hi = (u8)(((param0[i] >> 10) & 0x1f) + - (((((param2->unk04_0 >> 10) & 0x1f) - ((param0[i] >> 10) & 0x1f)) * - param2->unk02_6) >> + u8 hi = (u8)(((src[i] >> 10) & 0x1f) + + (((((fadeCtrl->blendColor >> 10) & 0x1f) - ((src[i] >> 10) & 0x1f)) * + fadeCtrl->y) >> 4)); - u8 mid = (u8)(((param0[i] >> 5) & 0x1f) + - (((((param2->unk04_0 >> 5) & 0x1f) - ((param0[i] >> 5) & 0x1f)) * - param2->unk02_6) >> + u8 mid = (u8)(((src[i] >> 5) & 0x1f) + + (((((fadeCtrl->blendColor >> 5) & 0x1f) - ((src[i] >> 5) & 0x1f)) * + fadeCtrl->y) >> 4)); - param1[i] = (u16)((hi << 10) | (mid << 5) | lo); + dest[i] = (u16)((hi << 10) | (mid << 5) | lo); } } THUMB_FUNC void FUN_02003684( - struct PaletteData *param0, u8 param1, struct PaletteControl *param2) + struct PaletteData *paletteData, u8 index, struct PaletteFadeControl *fadeCtrl) { - s16 r4; - if (param2->unk02_6 == param2->unk02_b) + if (fadeCtrl->y == fadeCtrl->targetY) { - if ((param0->unk118_2 & (1 << param1)) == 0) + if ((paletteData->activeFadePalettes & (1 << index)) == 0) { return; } - param0->unk118_2 ^= (1 << param1); + paletteData->activeFadePalettes ^= (1 << index); return; } - if (param2->unk04_f == 0) + + s16 val; + if (fadeCtrl->yDec == 0) { - r4 = (s16)param2->unk02_6; - r4 += param2->unk06_0; - if (r4 > param2->unk02_b) + val = (s16)fadeCtrl->y; + val += fadeCtrl->deltaY; + if (val > fadeCtrl->targetY) { - r4 = (s16)param2->unk02_b; + val = (s16)fadeCtrl->targetY; } - param2->unk02_6 = r4; + fadeCtrl->y = val; return; } - r4 = (s16)param2->unk02_6; - r4 -= param2->unk06_0; - if (r4 < param2->unk02_b) + val = (s16)fadeCtrl->y; + val -= fadeCtrl->deltaY; + if (val < fadeCtrl->targetY) { - r4 = (s16)param2->unk02_b; + val = (s16)fadeCtrl->targetY; } - param2->unk02_6 = r4; + fadeCtrl->y = val; } -THUMB_FUNC void FUN_0200372C(struct PaletteData *param0) +THUMB_FUNC void FUN_0200372C(struct PaletteData *paletteData) { - if (param0->unk11a_f == 0 && param0->unk118_0 != 1) + if (paletteData->unk11a_f == 0 && paletteData->unk118_0 != 1) { return; } - for (s32 r5 = 0; r5 < 14; r5++) + for (s32 i = 0; i < 14; i++) { - if (param0->unk11a_f != 0 || - (param0->pltt[r5].fadedBuf != 0 && FUN_02003314(param0->unk11a_0, (u16)r5) != 0)) + if (paletteData->unk11a_f != 0 || + (paletteData->pltt[i].fadedBuf != 0 && IsPaletteSelected(paletteData->unk11a_0, (u16)i) != 0)) { - DC_FlushRange(param0->pltt[r5].fadedBuf, param0->pltt[r5].bufSize); + DC_FlushRange(paletteData->pltt[i].fadedBuf, paletteData->pltt[i].bufSize); - switch (r5) + switch (i) { case 0: - GX_LoadBGPltt(param0->pltt[r5].fadedBuf, 0, param0->pltt[r5].bufSize); + GX_LoadBGPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); break; case 1: - GXS_LoadBGPltt(param0->pltt[r5].fadedBuf, 0, param0->pltt[r5].bufSize); + GXS_LoadBGPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); break; case 2: - GX_LoadOBJPltt(param0->pltt[r5].fadedBuf, 0, param0->pltt[r5].bufSize); + GX_LoadOBJPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); break; case 3: - GXS_LoadOBJPltt(param0->pltt[r5].fadedBuf, 0, param0->pltt[r5].bufSize); + GXS_LoadOBJPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); break; case 4: GX_BeginLoadBGExtPltt(); - GX_LoadBGExtPltt(param0->pltt[r5].fadedBuf, 0, param0->pltt[r5].bufSize); + GX_LoadBGExtPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); GX_EndLoadBGExtPltt(); break; case 5: GX_BeginLoadBGExtPltt(); - GX_LoadBGExtPltt(param0->pltt[r5].fadedBuf, 0x2000, param0->pltt[r5].bufSize); + GX_LoadBGExtPltt(paletteData->pltt[i].fadedBuf, 0x2000, paletteData->pltt[i].bufSize); GX_EndLoadBGExtPltt(); break; case 6: GX_BeginLoadBGExtPltt(); - GX_LoadBGExtPltt(param0->pltt[r5].fadedBuf, 0x4000, param0->pltt[r5].bufSize); + GX_LoadBGExtPltt(paletteData->pltt[i].fadedBuf, 0x4000, paletteData->pltt[i].bufSize); GX_EndLoadBGExtPltt(); break; case 7: GX_BeginLoadBGExtPltt(); - GX_LoadBGExtPltt(param0->pltt[r5].fadedBuf, 0x6000, param0->pltt[r5].bufSize); + GX_LoadBGExtPltt(paletteData->pltt[i].fadedBuf, 0x6000, paletteData->pltt[i].bufSize); GX_EndLoadBGExtPltt(); break; case 8: GXS_BeginLoadBGExtPltt(); - GXS_LoadBGExtPltt(param0->pltt[r5].fadedBuf, 0, param0->pltt[r5].bufSize); + GXS_LoadBGExtPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); GXS_EndLoadBGExtPltt(); break; case 9: GXS_BeginLoadBGExtPltt(); - GXS_LoadBGExtPltt(param0->pltt[r5].fadedBuf, 0x2000, param0->pltt[r5].bufSize); + GXS_LoadBGExtPltt(paletteData->pltt[i].fadedBuf, 0x2000, paletteData->pltt[i].bufSize); GXS_EndLoadBGExtPltt(); break; case 10: GXS_BeginLoadBGExtPltt(); - GXS_LoadBGExtPltt(param0->pltt[r5].fadedBuf, 0x4000, param0->pltt[r5].bufSize); + GXS_LoadBGExtPltt(paletteData->pltt[i].fadedBuf, 0x4000, paletteData->pltt[i].bufSize); GXS_EndLoadBGExtPltt(); break; case 11: GXS_BeginLoadBGExtPltt(); - GXS_LoadBGExtPltt(param0->pltt[r5].fadedBuf, 0x6000, param0->pltt[r5].bufSize); + GXS_LoadBGExtPltt(paletteData->pltt[i].fadedBuf, 0x6000, paletteData->pltt[i].bufSize); GXS_EndLoadBGExtPltt(); break; case 12: GX_BeginLoadOBJExtPltt(); - GX_LoadOBJExtPltt(param0->pltt[r5].fadedBuf, 0, param0->pltt[r5].bufSize); + GX_LoadOBJExtPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); GX_EndLoadOBJExtPltt(); break; case 13: GXS_BeginLoadOBJExtPltt(); - GXS_LoadOBJExtPltt(param0->pltt[r5].fadedBuf, 0, param0->pltt[r5].bufSize); + GXS_LoadOBJExtPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize); GXS_EndLoadOBJExtPltt(); break; } } } - param0->unk11a_0 = param0->unk118_2; - if (param0->unk11a_0 == 0) + paletteData->unk11a_0 = paletteData->activeFadePalettes; + if (paletteData->unk11a_0 == 0) { - param0->unk118_0 = 0; + paletteData->unk118_0 = 0; } } -THUMB_FUNC u16 FUN_020038E4(struct PaletteData *param0) +THUMB_FUNC u16 FUN_020038E4(struct PaletteData *paletteData) { - return param0->unk118_2; + return paletteData->activeFadePalettes; } -THUMB_FUNC void FUN_020038F0(struct PaletteData *param0, u32 param1) +THUMB_FUNC void FUN_020038F0(struct PaletteData *paletteData, u32 param1) { - param0->unk11a_f = param1; + paletteData->unk11a_f = param1; } -THUMB_FUNC void FUN_02003914( - struct PaletteData *param0, u32 param1, u32 param2, u16 param3, u16 param4, u16 param5) +THUMB_FUNC void PaletteData_FillPalette( + struct PaletteData *paletteData, u32 index, u32 selection, u16 value, u16 startOffset, u16 endOffset) { - GF_ASSERT(param5 * 2 <= param0->pltt[param1].bufSize); - if (param2 - 1 <= 1) + GF_ASSERT(endOffset * 2 <= paletteData->pltt[index].bufSize); + if (selection == 1 || selection == 2) { - MI_CpuFill16(¶m0->pltt[param1].unfadedBuf[param4], param3, (u32)((param5 - param4) * 2)); + MI_CpuFill16(&paletteData->pltt[index].unfadedBuf[startOffset], value, (u32)((endOffset - startOffset) * 2)); } - if (param2 == 0 || param2 == 2) + if (selection == 0 || selection == 2) { - MI_CpuFill16(¶m0->pltt[param1].fadedBuf[param4], param3, (u32)((param5 - param4) * 2)); + MI_CpuFill16(&paletteData->pltt[index].fadedBuf[startOffset], value, (u32)((endOffset - startOffset) * 2)); } } #ifdef NONMATCHING -THUMB_FUNC void FUN_02003974(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4) +THUMB_FUNC void BlendPalette(u16 *src, u16 *dest, u16 numEntries, u8 coeff, u16 blendColor) { - s32 r12 = ((u32)(param4 << 0x1b)) >> 0x1b; - s32 lr = ((u32)(param4 << 0x16)) >> 0x1b; - s32 st8 = ((u32)(param4 << 0x11)) >> 0x1b; + 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 < param2; i++) + for (u16 i = 0; i < numEntries; i++) { - lo = (((u32)(param0[i] << 0x1b)) >> 0x1b); - mid = (((u32)(param0[i] << 0x16)) >> 0x1b); - hi = (((u32)(param0[i] << 0x11)) >> 0x1b); + lo = (((u32)(src[i] << 0x1b)) >> 0x1b); + mid = (((u32)(src[i] << 0x16)) >> 0x1b); + hi = (((u32)(src[i] << 0x11)) >> 0x1b); - param1[i] = (lo + ((r12 - lo) * param3) >> 4) | (mid + ((lr - mid) * param3) >> 4) << 5 | - (hi + ((st8 - hi) * param3) >> 4) << 10; + dest[i] = (lo + ((r12 - lo) * coeff) >> 4) | (mid + ((lr - mid) * coeff) >> 4) << 5 | + (hi + ((st8 - hi) * coeff) >> 4) << 10; } } #else -asm void FUN_02003974(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4) +asm void BlendPalette(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4) { // clang-format off push {r4-r7, lr} @@ -544,97 +545,93 @@ _020039E2: } #endif -THUMB_FUNC void FUN_020039E8( - struct PaletteData *param0, u32 param1, u16 param2, u16 param3, u8 param4, u16 param5) +THUMB_FUNC void BlendPaletteUnfaded( + struct PaletteData *paletteData, u32 index, u16 offset, u16 numEntries, u8 coeff, u16 blendColor) { BOOL r0 = FALSE; - if (param0->pltt[param1].unfadedBuf != 0 && param0->pltt[param1].fadedBuf != 0) + if (paletteData->pltt[index].unfadedBuf != 0 && paletteData->pltt[index].fadedBuf != 0) { r0 = TRUE; } GF_ASSERT(r0); - FUN_02003974(param0->pltt[param1].unfadedBuf + param2, - param0->pltt[param1].fadedBuf + param2, - param3, - param4, - param5); + BlendPalette(paletteData->pltt[index].unfadedBuf + offset, + paletteData->pltt[index].fadedBuf + offset, + numEntries, + coeff, + blendColor); } -THUMB_FUNC void FUN_02003A30(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4) +THUMB_FUNC void BlendPalettes(u16 *src, u16 *dest, u16 selectedPalettes, u8 coeff, u16 blendColor) { - while (param2 != 0) + while (selectedPalettes != 0) { - if ((param2 & 1) != 0) + if ((selectedPalettes & 1) != 0) { - FUN_02003974(param0, param1, 0x10, param3, param4); + BlendPalette(src, dest, 0x10, coeff, blendColor); } - param2 >>= 1; - param1 += 0x10; - param0 += 0x10; + selectedPalettes >>= 1; + dest += 0x10; + src += 0x10; } } -THUMB_FUNC void FUN_02003A64( - struct PaletteData *param0, u32 param1, u16 param2, u8 param3, u16 param4) +THUMB_FUNC void BlendPalettesUnfaded( + struct PaletteData *paletteData, u32 index, u16 selectedPalettes, u8 coeff, u16 blendColor) { u32 r4 = 0; BOOL r0 = FALSE; - if (param0->pltt[param1].unfadedBuf != 0 && param0->pltt[param1].fadedBuf != 0) + if (paletteData->pltt[index].unfadedBuf != 0 && paletteData->pltt[index].fadedBuf != 0) { r0 = TRUE; } GF_ASSERT(r0); - while (param2 != 0) + while (selectedPalettes != 0) { - if ((param2 & 1) != 0) + if ((selectedPalettes & 1) != 0) { - FUN_020039E8(param0, param1, (u16)r4, 0x10, param3, param4); + BlendPaletteUnfaded(paletteData, index, (u16)r4, 0x10, coeff, blendColor); } - param2 >>= 1; + selectedPalettes >>= 1; r4 += 0x10; } } #ifdef NONMATCHING -THUMB_FUNC void FUN_02003AC4(u16 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +THUMB_FUNC void TintPalette_CustomTone(u16 *palette, u32 count, u32 rTone, u32 gTone, u32 bTone) { - s32 r4, lo, mid, hi, add; - for (r4 = 0; r4 < param1; r4++) + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; i++) { - lo = ((param0[r4]) & 0x1f); - mid = ((param0[r4] >> 5) & 0x1f); - hi = ((param0[r4] >> 10) & 0x1f); + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; - add = (lo * 0x4c + mid * 0x97 + hi * 0x1d) >> 8; + gray = (r *76 + g * 151 + b * 29) >> 8; - lo = (u16)(add * param2) >> 8; - mid = (u16)(add * param3) >> 8; - hi = (u16)(add * param4) >> 8; + r = (u16)((rTone * gray)) >> 8; + g = (u16)((gTone * gray)) >> 8; + b = (u16)((bTone * gray)) >> 8; - if (lo > 0x1f) - { - lo = 0x1f; - } - if (mid > 0x1f) - { - mid = 0x1f; - } - if (hi > 0x1f) - { - hi = 0x1f; - } + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; - param0[r4] = (hi << 10) | (mid << 5) | lo; + *palette++ = (b << 10) | (g << 5) | (r << 0); } } #else -asm void FUN_02003AC4(u16 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +asm void TintPalette_CustomTone(u16 *palette, u32 count, u32 rTone, u32 gTone, u32 bTone) { // clang-format off push {r3-r7, lr} @@ -707,28 +704,28 @@ _02003B3C: } #endif -THUMB_FUNC void FUN_02003B40(struct PaletteData *param0, +THUMB_FUNC void FUN_02003B40(struct PaletteData *paletteData, NarcId narcId, s32 memberId, u32 heap_id, - u32 param4, - u32 param5, - u16 param6, - u32 param7, - u32 param8, - u32 param9) + 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 (param5 == 0) + if (size == 0) { - param5 = pltData->szByte; + size = pltData->szByte; } - FUN_02003AC4(pltData->pRawData, 0x10, param7, param8, param9); - PaletteData_LoadPalette(param0, pltData->pRawData, param4, param6, (u16)param5); + TintPalette_CustomTone(pltData->pRawData, 0x10, rTone, gTone, bTone); + PaletteData_LoadPalette(paletteData, pltData->pRawData, index, offset, (u16)size); FreeToHeap(ptr); } diff --git a/include/unk_02002F08.h b/include/unk_02002F08.h index d5553eb2..c4bfeddd 100644 --- a/include/unk_02002F08.h +++ b/include/unk_02002F08.h @@ -5,19 +5,28 @@ #include "gf_gfx_loader.h" #include "string16.h" -struct PaletteControl + +struct PlttData +{ + u16 r:5; // red + u16 g:5; // green + u16 b:5; // blue + u16 unused_15:1; +}; + +struct PaletteFadeControl { - u16 unk00; + u16 selectedPalettes; - u16 unk02_0 : 6; - u16 unk02_6 : 5; - u16 unk02_b : 5; + u16 delay : 6; + u16 y : 5; + u16 targetY : 5; - u16 unk04_0 : 15; - u16 unk04_f : 1; + u16 blendColor : 15; + u16 yDec : 1; - u16 unk06_0 : 4; - u16 unk06_4 : 6; + u16 deltaY : 4; + u16 delayCounter : 6; u16 unk06_a : 6; }; @@ -26,7 +35,7 @@ struct Palette u16 *unfadedBuf; u16 *fadedBuf; u32 bufSize; - struct PaletteControl unk0c; + struct PaletteFadeControl fadeCtrl; }; struct PaletteData @@ -34,7 +43,7 @@ struct PaletteData struct Palette pltt[14]; u16 unk118_0 : 2; - u16 unk118_2 : 14; + u16 activeFadePalettes : 14; u16 unk11a_0 : 14; u16 unk11a_e : 1; u16 unk11a_f : 1; diff --git a/include/unk_020030E8.h b/include/unk_020030E8.h index 346b9715..bf71ca7f 100644 --- a/include/unk_020030E8.h +++ b/include/unk_020030E8.h @@ -3,11 +3,11 @@ #include "unk_02002F08.h" void FUN_02003108(struct PaletteData *param0, u32 param1, u16 param2, u32 param3); -void FUN_0200317C(NarcId narcId, s32 memberId, u32 heap_id, u32 size, u16 offset, void *dest); -void FUN_020031B8( +void CopyPaletteFromNarc(NarcId narcId, s32 memberId, u32 heap_id, u32 size, u16 offset, void *dest); +void PaletteData_CopyPalette( struct PaletteData *param0, u32 param1, u16 param2, u32 param3, u16 param4, u16 param5); -u16 *FUN_020031FC(struct PaletteData *param0, u32 param1); -u16 *FUN_02003204(struct PaletteData *param0, u32 param1); +u16 *PaletteData_GetUnfadedBuf(struct PaletteData *param0, u32 param1); +u16 *PaletteData_GetFadedBuf(struct PaletteData *param0, u32 param1); u32 FUN_02003210(struct PaletteData *param0, u16 param1, u16 param2, @@ -15,10 +15,10 @@ u32 FUN_02003210(struct PaletteData *param0, u8 param6, u8 param7, u16 param8); -u8 FUN_02003314(u16 param0, u16 param1); +u8 IsPaletteSelected(u16 param0, u16 param1); void FUN_02003328(struct PaletteData *param0, u16 param1); void FUN_02003368(s32 param0, struct Palette *param1, u16 *param2); -void FUN_020033A4(struct PaletteControl *param0, +void FUN_020033A4(struct PaletteFadeControl *param0, u16 param1, s16 param2, u8 param3, @@ -29,20 +29,20 @@ void FUN_02003500(struct PaletteData *param0); void FUN_02003520(struct PaletteData *param0); void FUN_02003540(struct PaletteData *param0, u8 param1, u32 param2); void FUN_0200359C(struct PaletteData *param0, u32 param1, u32 param2); -void FUN_020035F8(u16 *param0, u16 *param1, struct PaletteControl *param2, u32 param3); +void FUN_020035F8(u16 *param0, u16 *param1, struct PaletteFadeControl *param2, u32 param3); void FUN_02003684( - struct PaletteData *param0, u8 param1, struct PaletteControl *param2); + struct PaletteData *param0, u8 param1, struct PaletteFadeControl *param2); void FUN_0200372C(struct PaletteData *param0); u16 FUN_020038E4(struct PaletteData *param0); void FUN_020038F0(struct PaletteData *param0, u32 param1); -void FUN_02003914( +void PaletteData_FillPalette( struct PaletteData *param0, u32 param1, u32 param2, u16 param3, u16 param4, u16 param5); -void FUN_02003974(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4); -void FUN_020039E8( +void BlendPalette(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4); +void BlendPaletteUnfaded( struct PaletteData *param0, u32 param1, u16 param2, u16 param3, u8 param4, u16 param5); -void FUN_02003A30(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4); -void FUN_02003A64(struct PaletteData *param0, u32 param1, u16 param2, u8 param3, u16 param4); -void FUN_02003AC4(u16 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void BlendPalettes(u16 *param0, u16 *param1, u16 param2, u8 param3, u16 param4); +void BlendPalettesUnfaded(struct PaletteData *param0, u32 param1, u16 param2, u8 param3, u16 param4); +void TintPalette_CustomTone(u16 *param0, u32 param1, u32 param2, u32 param3, u32 param4); void FUN_02003B40(struct PaletteData *param0, NarcId narcId, s32 memberId, |