1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00

Add special blend mode for Bust-A-Move 3 DX

Fixed Bust-A-Move 3 DX: missing screens during intro #625
This commit is contained in:
Sergey Lipskiy 2016-04-15 18:00:45 +06:00
parent 9819d7a704
commit f767eb79d2
4 changed files with 28 additions and 3 deletions

View File

@ -375,6 +375,13 @@ void ShaderCombiner::updateFogMode(bool _bForce)
nFogUsage = 5;
}
break;
case 0x55f0:
// CLR_MEM * A_FOG + CLR_FOG * 1MA
if (gDP.otherMode.cycleType == G_CYC_1CYCLE) {
nSpecialBlendMode = 4;
nFogUsage = 5;
}
break;
/* Brings troubles with Roadsters sky
case 0xc702:
// Donald Duck

View File

@ -647,6 +647,13 @@ void ShaderCombiner::updateFogMode(bool _bForce)
nFogUsage = 5;
}
break;
case 0x55f0:
// CLR_MEM * A_FOG + CLR_FOG * 1MA
if (gDP.otherMode.cycleType == G_CYC_1CYCLE) {
nSpecialBlendMode = 4;
nFogUsage = 5;
}
break;
/* Brings troubles with Roadsters sky
case 0xc702:
// Donald Duck

View File

@ -417,6 +417,12 @@ void OGLRender::_setBlendMode() const
glBlendFunc(GL_ONE, GL_ZERO);
break;
case 0x55f0:
// Bust-A-Move 3 DX
// CLR_MEM * A_FOG + CLR_FOG * 1MA
glBlendFunc(GL_ONE, GL_SRC_ALPHA);
break;
case 0x0F1A:
if (gDP.otherMode.cycleType == G_CYC_1CYCLE)
glBlendFunc(GL_ONE, GL_ZERO);

View File

@ -77,14 +77,19 @@ GLuint createShaderProgram(const char * _strVertex, const char * _strFragment)
static
const char* fragment_shader_blender =
// Mace
" if (uSpecialBlendMode == 1) \n"
" if (uSpecialBlendMode == 1) \n"
" color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); \n"
// Bomberman2
" else if (uSpecialBlendMode == 2) \n"
" else if (uSpecialBlendMode == 2) \n"
" color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); \n"
// Conker BFD
" else if (uSpecialBlendMode == 3) \n"
" else if (uSpecialBlendMode == 3) \n"
" color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); \n"
// Bust-A-Move 3 DX
" else if (uSpecialBlendMode == 4) { \n"
" color1 = uFogColor.rgb * (1.0 - alpha1); \n"
" alpha1 = uFogColor.a; \n"
" } \n"
;
static