diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-05-05 12:24:15 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-05-05 12:24:15 -0400 |
commit | 7f07bd6607df54aa26590d62c561f15daaaf9671 (patch) | |
tree | 3ed086083289987bc978b328d1e0492cdbeb0e86 | |
parent | 2555f72246e68d3e85e22b33f5b440a3fd8559ba (diff) |
blend_palette
-rw-r--r-- | asm/blend_palette.s | 186 | ||||
-rw-r--r-- | asm/field_fadetransition.s | 8 | ||||
-rw-r--r-- | asm/field_weather.s | 12 | ||||
-rw-r--r-- | asm/start_menu.s | 12 | ||||
-rw-r--r-- | include/field_weather.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/blend_palette.c | 46 | ||||
-rw-r--r-- | src/seagallop.c | 2 |
8 files changed, 65 insertions, 205 deletions
diff --git a/asm/blend_palette.s b/asm/blend_palette.s deleted file mode 100644 index 7c95f18e9..000000000 --- a/asm/blend_palette.s +++ /dev/null @@ -1,186 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start BlendPalette -BlendPalette: @ 8045274 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - mov r12, r1 - lsls r2, 24 - lsrs r7, r2, 24 - mov r0, sp - strh r3, [r0] - movs r6, 0 - cmp r6, r12 - bcs _080452FA - ldr r0, _0804530C @ =gPlttBufferUnfaded - mov r10, r0 - ldr r1, _08045310 @ =gPlttBufferFaded - mov r9, r1 -_080452A2: - mov r0, r8 - adds r5, r6, r0 - lsls r5, 16 - lsrs r5, 15 - mov r1, r10 - adds r0, r5, r1 - ldr r3, [r0] - lsls r4, r3, 27 - lsls r2, r3, 22 - lsls r3, 17 - add r5, r9 - lsrs r4, 27 - ldr r1, [sp] - lsls r0, r1, 27 - lsrs r0, 27 - subs r0, r4 - muls r0, r7 - asrs r0, 4 - adds r4, r0 - lsrs r2, 27 - lsls r0, r1, 22 - lsrs r0, 27 - subs r0, r2 - muls r0, r7 - asrs r0, 4 - adds r2, r0 - lsls r2, 5 - orrs r4, r2 - lsrs r3, 27 - lsls r1, 17 - lsrs r1, 27 - subs r1, r3 - adds r0, r1, 0 - muls r0, r7 - asrs r0, 4 - adds r3, r0 - lsls r3, 10 - orrs r4, r3 - strh r4, [r5] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, r12 - bcc _080452A2 -_080452FA: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804530C: .4byte gPlttBufferUnfaded -_08045310: .4byte gPlttBufferFaded - thumb_func_end BlendPalette - - thumb_func_start sub_8045314 -sub_8045314: @ 8045314 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r5, r0, 0 - adds r6, r2, 0 - adds r4, r3, 0 - lsls r1, 16 - lsrs r2, r1, 16 - cmp r6, 0x10 - bne _08045342 - subs r4, 0x1 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _080453B2 -_08045336: - strh r2, [r5] - adds r5, 0x2 - subs r4, 0x1 - cmp r4, r0 - bne _08045336 - b _080453B2 -_08045342: - movs r0, 0x1F - movs r3, 0x1F - mov r9, r3 - mov r7, r9 - ands r7, r2 - mov r9, r7 - lsrs r2, r1, 21 - ands r2, r0 - mov r12, r2 - lsrs r1, 26 - mov r10, r1 - mov r3, r10 - ands r3, r0 - mov r10, r3 - subs r4, 0x1 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _080453B2 - movs r7, 0x1F - mov r8, r7 -_0804536C: - ldrh r2, [r5] - movs r3, 0x1F - ands r3, r2 - lsls r2, 16 - lsrs r1, r2, 21 - mov r0, r8 - ands r1, r0 - lsrs r2, 26 - ands r2, r0 - mov r7, r9 - subs r0, r7, r3 - muls r0, r6 - lsrs r0, 4 - adds r3, r0 - mov r7, r12 - subs r0, r7, r1 - muls r0, r6 - lsrs r0, 4 - adds r1, r0 - lsls r1, 5 - orrs r3, r1 - mov r1, r10 - subs r0, r1, r2 - muls r0, r6 - lsrs r0, 4 - adds r2, r0 - lsls r2, 10 - orrs r3, r2 - strh r3, [r5] - adds r5, 0x2 - subs r4, 0x1 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _0804536C -_080453B2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8045314 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index 494c3e61e..4039c4009 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -1159,7 +1159,7 @@ DoWarp: @ 807E438 bl ScriptContext2_Enable bl sub_8055F88 bl sub_807DC18 - bl play_some_sound + bl PlayRainStoppingSoundEffect movs r0, 0x9 bl PlaySE ldr r0, _0807E464 @ =gUnknown_3005020 @@ -1182,7 +1182,7 @@ DoDiveWarp: @ 807E470 bl ScriptContext2_Enable bl sub_8055F88 bl sub_807DC18 - bl play_some_sound + bl PlayRainStoppingSoundEffect ldr r0, _0807E494 @ =gUnknown_3005020 ldr r1, _0807E498 @ =sub_807DF64 str r1, [r0] @@ -1807,7 +1807,7 @@ _0807E95C: _0807E966: bl sub_8055F88 _0807E96A: - bl play_some_sound + bl PlayRainStoppingSoundEffect movs r0, 0 strh r0, [r5, 0x8] ldr r0, _0807E97C @ =sub_807E718 @@ -1891,7 +1891,7 @@ _0807EA00: b _0807EAB0 _0807EA10: bl sub_8055F88 - bl play_some_sound + bl PlayRainStoppingSoundEffect ldrb r1, [r7, 0x5] movs r0, 0xD negs r0, r0 diff --git a/asm/field_weather.s b/asm/field_weather.s index 416fd90d4..e8d3ba7ee 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -122,7 +122,7 @@ weather_set: @ 8079CF4 beq _08079D0A cmp r4, 0xD beq _08079D0A - bl play_some_sound + bl PlayRainStoppingSoundEffect _08079D0A: ldr r1, _08079D4C @ =gUnknown_2037F34 ldr r2, _08079D50 @ =0x000006d1 @@ -170,7 +170,7 @@ sub_8079D60: @ 8079D60 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl play_some_sound + bl PlayRainStoppingSoundEffect ldr r0, _08079D84 @ =gUnknown_2037F34 movs r2, 0xDA lsls r2, 3 @@ -193,7 +193,7 @@ sub_8079D8C: @ 8079D8C adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl play_some_sound + bl PlayRainStoppingSoundEffect ldr r1, _08079DB8 @ =gUnknown_2037F34 movs r2, 0xDA lsls r2, 3 @@ -2625,8 +2625,8 @@ _0807AFFA: _0807B000: .4byte 0x000006dd thumb_func_end SetRainStrengthFromSoundEffect - thumb_func_start play_some_sound -play_some_sound: @ 807B004 + thumb_func_start PlayRainStoppingSoundEffect +PlayRainStoppingSoundEffect: @ 807B004 push {lr} bl IsSpecialSEPlaying lsls r0, 24 @@ -2658,7 +2658,7 @@ _0807B03C: _0807B042: pop {r0} bx r0 - thumb_func_end play_some_sound + thumb_func_end PlayRainStoppingSoundEffect thumb_func_start sub_807B048 sub_807B048: @ 807B048 diff --git a/asm/start_menu.s b/asm/start_menu.s index d8178a37a..d165dbc36 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -854,7 +854,7 @@ _0806F424: .4byte gPaletteFade _0806F428: movs r0, 0x29 bl IncrementGameStat - bl play_some_sound + bl PlayRainStoppingSoundEffect bl sub_806EF18 bl sub_80563F0 ldr r0, _0806F448 @ =sub_810275C @@ -881,7 +881,7 @@ sub_806F44C: @ 806F44C .align 2, 0 _0806F460: .4byte gPaletteFade _0806F464: - bl play_some_sound + bl PlayRainStoppingSoundEffect bl sub_806EF18 bl sub_80563F0 ldr r0, _0806F47C @ =CB2_PartyMenuFromStartMenu @@ -908,7 +908,7 @@ sub_806F480: @ 806F480 .align 2, 0 _0806F494: .4byte gPaletteFade _0806F498: - bl play_some_sound + bl PlayRainStoppingSoundEffect bl sub_806EF18 bl sub_80563F0 ldr r0, _0806F4B0 @ =UseFameCheckerFromMenu @@ -935,7 +935,7 @@ sub_806F4B4: @ 806F4B4 .align 2, 0 _0806F4C8: .4byte gPaletteFade _0806F4CC: - bl play_some_sound + bl PlayRainStoppingSoundEffect bl sub_806EF18 bl sub_80563F0 ldr r0, _0806F4E4 @ =sub_80568A8 @@ -974,7 +974,7 @@ sub_806F4FC: @ 806F4FC .align 2, 0 _0806F510: .4byte gPaletteFade _0806F514: - bl play_some_sound + bl PlayRainStoppingSoundEffect bl sub_806EF18 bl sub_80563F0 ldr r0, _0806F534 @ =sub_8088388 @@ -1029,7 +1029,7 @@ sub_806F56C: @ 806F56C .align 2, 0 _0806F580: .4byte gPaletteFade _0806F584: - bl play_some_sound + bl PlayRainStoppingSoundEffect bl sub_80563F0 ldr r0, _0806F59C @ =gUnknown_300502C ldrb r0, [r0] diff --git a/include/field_weather.h b/include/field_weather.h index eeda3b5b5..cf0e34d06 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -12,6 +12,6 @@ void sub_80AEDBC(void); void DoCurrentWeather(void); void SetSav1WeatherFromCurrMapHeader(void); void sub_807B0C4(u16 *, u16 *, u32); -void play_some_sound(void); +void PlayRainStoppingSoundEffect(void); #endif // GUARD_WEATHER_H diff --git a/ld_script.txt b/ld_script.txt index e60cdb4da..1dcfe9b7b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -80,7 +80,7 @@ SECTIONS { asm/trig.o(.text); src/random.o(.text); src/util.o(.text); - asm/blend_palette.o(.text); + src/blend_palette.o(.text); asm/daycare.o(.text); asm/egg_hatch.o(.text); asm/battle_interface.o(.text); diff --git a/src/blend_palette.c b/src/blend_palette.c new file mode 100644 index 000000000..8cd65ae4b --- /dev/null +++ b/src/blend_palette.c @@ -0,0 +1,46 @@ +#include "global.h" +#include "blend_palette.h" +#include "palette.h" + +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) +{ + u16 i; + for (i = 0; i < numEntries; i++) + { + u16 index = i + palOffset; + struct PlttData *data1 = (struct PlttData *)&gPlttBufferUnfaded[index]; + s8 r = data1->r; + s8 g = data1->g; + s8 b = data1->b; + struct PlttData *data2 = (struct PlttData *)&blendColor; + gPlttBufferFaded[index] = ((r + (((data2->r - r) * coeff) >> 4)) << 0) + | ((g + (((data2->g - g) * coeff) >> 4)) << 5) + | ((b + (((data2->b - b) * coeff) >> 4)) << 10); + } +} + +void sub_8045314(u16 * palbuff, u16 blend_pal, u32 coefficient, s32 size) +{ + if (coefficient == 16) + { + while (--size != -1) + { + *palbuff++ = blend_pal; + } + } + else + { + u16 r = (blend_pal >> 0) & 0x1F; + u16 g = (blend_pal >> 5) & 0x1F; + u16 b = (blend_pal >> 10) & 0x1F; + while (--size != -1) + { + u16 r2 = (*palbuff >> 0) & 0x1F; + u16 g2 = (*palbuff >> 5) & 0x1F; + u16 b2 = (*palbuff >> 10) & 0x1F; + *palbuff++ = ((r2 + (((r - r2) * coefficient) >> 4)) << 0) + | ((g2 + (((g - g2) * coefficient) >> 4)) << 5) + | ((b2 + (((b - b2) * coefficient) >> 4)) << 10); + } + } +} diff --git a/src/seagallop.c b/src/seagallop.c index 72813f525..45b0ff3a1 100644 --- a/src/seagallop.c +++ b/src/seagallop.c @@ -320,7 +320,7 @@ static void Task_SeaGallop_3(void) warpInfo = sSeaGallopSpawnTable[gSpecialVar_0x8006]; Overworld_SetWarpDestination(warpInfo[0], warpInfo[1], -1, warpInfo[2], warpInfo[3]); - play_some_sound(); + PlayRainStoppingSoundEffect(); PlaySE(SE_KAIDAN); gUnknown_3005020 = sub_807DF64; warp_in(); |