summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-05-05 12:24:15 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-05-05 12:24:15 -0400
commit7f07bd6607df54aa26590d62c561f15daaaf9671 (patch)
tree3ed086083289987bc978b328d1e0492cdbeb0e86
parent2555f72246e68d3e85e22b33f5b440a3fd8559ba (diff)
blend_palette
-rw-r--r--asm/blend_palette.s186
-rw-r--r--asm/field_fadetransition.s8
-rw-r--r--asm/field_weather.s12
-rw-r--r--asm/start_menu.s12
-rw-r--r--include/field_weather.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/blend_palette.c46
-rw-r--r--src/seagallop.c2
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();