From d687e52009384105fcf4ef6eb43919e5b76625e0 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Sun, 18 Dec 2016 17:08:56 -0500 Subject: [PATCH] - renamed R_DrawParticle_C to R_DrawParticle to remove vestigial ASM hook. - fixed particle crashes, fixed particle color math. --- src/r_draw.cpp | 4 ---- src/r_draw.h | 1 - src/r_things.cpp | 10 ++++++---- src/r_things.h | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/r_draw.cpp b/src/r_draw.cpp index a461e1877..2c5d6fd91 100644 --- a/src/r_draw.cpp +++ b/src/r_draw.cpp @@ -1352,8 +1352,4 @@ namespace swrenderer } } - void R_DrawParticle(vissprite_t *sprite) - { - R_DrawParticle_C(sprite); - } } diff --git a/src/r_draw.h b/src/r_draw.h index 58934981b..f47179c51 100644 --- a/src/r_draw.h +++ b/src/r_draw.h @@ -201,5 +201,4 @@ namespace swrenderer void R_MapTiltedPlane(int y, int x1); void R_MapColoredPlane(int y, int x1); - void R_DrawParticle(vissprite_t *); } diff --git a/src/r_things.cpp b/src/r_things.cpp index 7c178ce8b..03900b321 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -2632,7 +2632,9 @@ static void R_DrawMaskedSegsBehindParticle (const vissprite_t *vis) } } -void R_DrawParticle_C (vissprite_t *vis) +//inline int clamp(int x, int y, int z) { return ((x < y) ? x : (z < y) ? z : y); } + +void R_DrawParticle (vissprite_t *vis) { int spacing; BYTE *dest; @@ -2666,9 +2668,9 @@ void R_DrawParticle_C (vissprite_t *vis) dest = ylookup[yl] + x + dc_destorg; for (int y = 0; y < ycount; y++) { - int dest_r = (GPalette.BaseColors[*dest].r * bglevel + GPalette.BaseColors[color].r * fglevel) >> 10; - int dest_g = (GPalette.BaseColors[*dest].g * bglevel + GPalette.BaseColors[color].g * fglevel) >> 10; - int dest_b = (GPalette.BaseColors[*dest].b * bglevel + GPalette.BaseColors[color].b * fglevel) >> 10; + uint32_t dest_r = MIN((GPalette.BaseColors[*dest].r * bglevel + GPalette.BaseColors[color].r * fglevel) >> 18, 63); + uint32_t dest_g = MIN((GPalette.BaseColors[*dest].g * bglevel + GPalette.BaseColors[color].g * fglevel) >> 18, 63); + uint32_t dest_b = MIN((GPalette.BaseColors[*dest].b * bglevel + GPalette.BaseColors[color].b * fglevel) >> 18, 63); *dest = RGB256k.RGB[dest_r][dest_g][dest_b]; dest += spacing; diff --git a/src/r_things.h b/src/r_things.h index bf32b655f..6b789cdc5 100644 --- a/src/r_things.h +++ b/src/r_things.h @@ -101,7 +101,7 @@ struct vissprite_t vissprite_t() {} }; -void R_DrawParticle_C (vissprite_t *); +void R_DrawParticle (vissprite_t *); void R_ProjectParticle (particle_t *, const sector_t *sector, int shade, int fakeside); extern int MaxVisSprites;