Add Silhouette

This commit is contained in:
Arceveti
2021-09-18 15:55:57 -07:00
parent d019fcdbbe
commit e57f1dc59a
35 changed files with 556 additions and 366 deletions

View File

@@ -179,6 +179,12 @@
#define DISABLE_AA
// Makes the coins ia8 64x64 instead of ia16 32x32. Uses new ia8 textures so that vanilla coins look better.
#define IA8_COINS
// Mario's silhouette when behind solid objects/surfaces
// Also enables new render layers, such as LAYER_ALPHA_DECAL.
// The number is the intensity of the silhouette, from 0-255.
// NOTE: The overlap between Mario's model parts is visible on certain HLE plugins.
// Also, this also disables anti-aliasing on Mario, and the outermost pixel edges of the silhouette are slightly visible on Mario's normal model at lower resolutions.
#define SILHOUETTE 127
// Use a much better implementation of reverb over vanilla's fake echo reverb. Great for caves or eerie levels, as well as just a better audio experience in general.
// Reverb parameters can be configured in audio/synthesis.c to meet desired aesthetic/performance needs. Currently US/JP only.
//#define BETTER_REVERB

View File

@@ -40,14 +40,54 @@
#endif
// Layers
#define LAYER_FORCE 0
#define LAYER_OPAQUE 1
#define LAYER_OPAQUE_DECAL 2
#define LAYER_OPAQUE_INTER 3
#define LAYER_ALPHA 4
#define LAYER_TRANSPARENT 5
#define LAYER_TRANSPARENT_DECAL 6
#define LAYER_TRANSPARENT_INTER 7
#if SILHOUETTE
#define LAYER_FORCE 0x0 // is zbuffered
#define LAYER_OPAQUE 0x1 // is zbuffered
#define LAYER_OPAQUE_INTER 0x2 // is zbuffered
#define LAYER_OPAQUE_DECAL 0x3 // is zbuffered
#define LAYER_ALPHA 0x4 // is zbuffered
#define LAYER_ALPHA_DECAL 0x5 // is zbuffered
#define LAYER_SILHOUETTE_OPAQUE 0x6 // is zbuffered
#define LAYER_SILHOUETTE_ALPHA 0x7 // is zbuffered
#define LAYER_OCCLUDE_SILHOUETTE_OPAQUE 0x8 // is zbuffered
#define LAYER_OCCLUDE_SILHOUETTE_ALPHA 0x9 // is zbuffered
#define LAYER_TRANSPARENT_DECAL 0xA // not zbuffered
#define LAYER_TRANSPARENT 0xB // not zbuffered
#define LAYER_TRANSPARENT_INTER 0xC // not zbuffered
#define LAYER_ZB_LAST LAYER_OCCLUDE_SILHOUETTE_ALPHA
#define LAYER_SILHOUETTE_FIRST LAYER_SILHOUETTE_OPAQUE
#define LAYER_LAST_BEFORE_SILHOUETTE (LAYER_SILHOUETTE_FIRST - 1)
#define LAYER_SILHOUETTE_LAST LAYER_SILHOUETTE_ALPHA
#define LAYER_OCCLUDE_SILHOUETTE_FIRST LAYER_OCCLUDE_SILHOUETTE_OPAQUE
#define LAYER_OCCLUDE_SILHOUETTE_LAST LAYER_OCCLUDE_SILHOUETTE_ALPHA
#define LAYER_OPAQUE_ORIG LAYER_OPAQUE
#define LAYER_ALPHA_ORIG LAYER_ALPHA
#else
#define LAYER_FORCE 0x0 // is zbuffered
#define LAYER_OPAQUE 0x1 // is zbuffered
#define LAYER_OPAQUE_DECAL 0x2 // is zbuffered
#define LAYER_OPAQUE_INTER 0x3 // is zbuffered
#define LAYER_ALPHA 0x4 // is zbuffered
#define LAYER_TRANSPARENT 0x5 // not zbuffered
#define LAYER_TRANSPARENT_DECAL 0x6 // not zbuffered
#define LAYER_TRANSPARENT_INTER 0x7 // not zbuffered
#define LAYER_ZB_LAST LAYER_ALPHA
#define LAYER_ALPHA_DECAL 0x4 // is zbuffered
#define LAYER_SILHOUETTE_OPAQUE 0x1 // is zbuffered
#define LAYER_SILHOUETTE_ALPHA 0x4 // is zbuffered
#define LAYER_OCCLUDE_SILHOUETTE_OPAQUE 0x1 // is zbuffered
#define LAYER_OCCLUDE_SILHOUETTE_ALPHA 0x4 // is zbuffered
#endif
#define LAYER_FIRST_NON_ZB (LAYER_ZB_LAST + 1)
#define LAYER_LAST_ALL LAYER_TRANSPARENT_INTER
#define INPUT_NONZERO_ANALOG 0x0001
#define INPUT_A_PRESSED 0x0002