From 5558fb073ac92ebd1e3c3dc2a632a20542d6f580 Mon Sep 17 00:00:00 2001 From: Sryder Date: Sun, 18 Oct 2020 19:10:19 +0100 Subject: [PATCH] Basic additive transmap/blend support Can currently be used on sprites only added to flames by default because it makes sense --- src/dehacked.c | 4 ++++ src/hardware/hw_main.c | 1 + src/info.c | 14 +++++++------- src/p_mobj.h | 1 + src/p_pspr.h | 2 ++ src/r_draw.c | 3 ++- 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 2d7b58ac9..b57d52c7f 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -11123,6 +11123,7 @@ struct { {"FF_TRANS70",FF_TRANS70}, {"FF_TRANS80",FF_TRANS80}, {"FF_TRANS90",FF_TRANS90}, + {"FF_TRANSADD",FF_TRANSADD}, // compatibility // Transparency for SOCs is pre-shifted {"TR_TRANS10",tr_trans10<PolyColor.s.alpha = 0x4c;return PF_Translucent; case tr_trans80 : pSurf->PolyColor.s.alpha = 0x33;return PF_Translucent; case tr_trans90 : pSurf->PolyColor.s.alpha = 0x19;return PF_Translucent; + case tr_transadd : pSurf->PolyColor.s.alpha = 0xFF;return PF_Additive; } return PF_Translucent; } diff --git a/src/info.c b/src/info.c index 6d5bac1ea..cfa51f9cd 100644 --- a/src/info.c +++ b/src/info.c @@ -2231,9 +2231,9 @@ state_t states[NUMSTATES] = {SPR_CHAN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CEZCHAIN // Flame - {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE, 3*8, {A_FlameParticle}, 7, 3, S_FLAME}, // S_FLAME - {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|8, TICRATE, {NULL}, 3, 3, S_NULL}, // S_FLAMEPARTICLE - {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL}, // S_FLAMEREST + {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|FF_TRANSADD, 3*8, {A_FlameParticle}, 7, 3, S_FLAME}, // S_FLAME + {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|FF_TRANSADD|8, TICRATE, {NULL}, 3, 3, S_NULL}, // S_FLAMEPARTICLE + {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|FF_TRANSADD, -1, {NULL}, 7, 3, S_NULL}, // S_FLAMEREST // Eggman statue {SPR_ESTA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGSTATUE1 @@ -4383,10 +4383,10 @@ state_t states[NUMSTATES] = {SPR_AUDI, 4|FF_ANIMATE, -1, {NULL}, 1, 17, S_NULL}, // S_AUDIENCE_CHAO_LOSE - {SPR_FLAM, 0, 3, {NULL}, 0, 0, S_FLAYM2}, // S_FLAYM1, - {SPR_FLAM, 1, 3, {NULL}, 0, 0, S_FLAYM3}, // S_FLAYM2, - {SPR_FLAM, 2, 3, {NULL}, 0, 0, S_FLAYM4}, // S_FLAYM3, - {SPR_FLAM, 3, 3, {NULL}, 0, 0, S_FLAYM1}, // S_FLAYM4, + {SPR_FLAM, FF_FULLBRIGHT|FF_TRANSADD|0, 3, {NULL}, 0, 0, S_FLAYM2}, // S_FLAYM1, + {SPR_FLAM, FF_FULLBRIGHT|FF_TRANSADD|1, 3, {NULL}, 0, 0, S_FLAYM3}, // S_FLAYM2, + {SPR_FLAM, FF_FULLBRIGHT|FF_TRANSADD|2, 3, {NULL}, 0, 0, S_FLAYM4}, // S_FLAYM3, + {SPR_FLAM, FF_FULLBRIGHT|FF_TRANSADD|3, 3, {NULL}, 0, 0, S_FLAYM1}, // S_FLAYM4, {SPR_DECO, 0, -1, {NULL}, 0, 0, S_NULL}, // S_DEVIL, {SPR_DECO, 1, -1, {NULL}, 0, 0, S_NULL}, // S_ANGEL, diff --git a/src/p_mobj.h b/src/p_mobj.h index cd0cc3bc7..04a75c85e 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -268,6 +268,7 @@ typedef enum MFD_TRANS70 = 0x0070, MFD_TRANS80 = 0x0080, MFD_TRANS90 = 0x0090, + MFD_TRANSADD = 0x00A0, MFD_TRANSMASK = 0x00F0, // Brightness override flags MFD_FULLBRIGHT = 0x0100, diff --git a/src/p_pspr.h b/src/p_pspr.h index 6eaf33279..eaa469cd7 100644 --- a/src/p_pspr.h +++ b/src/p_pspr.h @@ -59,6 +59,7 @@ #define FF_TRANS70 (tr_trans70<