mirror of
https://github.com/nunuhara/xsystem4.git
synced 2026-10-07 06:18:14 +03:00
Implement SACT2.SP_SetBrightness
Used in Pastel Chime Continue.
This commit is contained in:
@@ -91,6 +91,8 @@ int sact_SP_IsPtInRect(int sp_no, int x, int y);
|
||||
int sact_CG_GetMetrics(int cg_no, struct page **page);
|
||||
int sact_SP_GetAMapValue(int sp_no, int x, int y);
|
||||
int sact_SP_GetPixelValue(int sp_no, int x, int y, int *r, int *g, int *b);
|
||||
int sact_SP_SetBrightness(int sp_no, int brightness);
|
||||
int sact_SP_GetBrightness(int sp_no);
|
||||
int sact_GAME_MSG_GetNumOf(void);
|
||||
void sact_IntToZenkaku(struct string **s, int value, int figures, int zero_pad);
|
||||
void sact_IntToHankaku(struct string **s, int value, int figures, int zero_pad);
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ struct sact_sprite {
|
||||
|
||||
/*
|
||||
* XXX: There are two different sprite renderers:
|
||||
* * SACT2 - only shader param is blend rate
|
||||
* * SACT2 - blend rate and brightness (stored in multiply_color field)
|
||||
* * ChipmunkSpriteEngine - blend rate, add color, multiply color, surface area
|
||||
* (uses parts shader)
|
||||
*
|
||||
|
||||
@@ -16,11 +16,13 @@
|
||||
|
||||
uniform sampler2D tex;
|
||||
uniform float blend_rate;
|
||||
uniform vec3 multiply_color;
|
||||
|
||||
in vec2 tex_coord;
|
||||
out vec4 frag_color;
|
||||
|
||||
void main() {
|
||||
frag_color = texture(tex, tex_coord);
|
||||
frag_color = texture(tex, tex_coord);
|
||||
frag_color.rgb *= multiply_color;
|
||||
frag_color.a *= blend_rate;
|
||||
}
|
||||
|
||||
+11
-7
@@ -841,16 +841,20 @@ void sact_CG_BlendAMapBin(int dst, int dx, int dy, int src, int sx, int sy, int
|
||||
//void SACT2_Debug_Pause(void);
|
||||
//void SACT2_Debug_GetFuncStack(struct string **s, int nest);
|
||||
|
||||
int SACT2_SP_SetBrightness(int sp_no, int brightness)
|
||||
int sact_SP_SetBrightness(int sp_no, int brightness)
|
||||
{
|
||||
if (brightness != 255)
|
||||
WARNING("Unimplemented HLL function: SACT2.SP_SetBrightness(%d, %d)", sp_no, brightness);
|
||||
struct sact_sprite *sp = sact_try_get_sprite(sp_no);
|
||||
if (!sp) return 0;
|
||||
sprite_set_multiply_color(sp, brightness, brightness, brightness);
|
||||
sprite_dirty(sp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int SACT2_SP_GetBrightness(int sp_no)
|
||||
int sact_SP_GetBrightness(int sp_no)
|
||||
{
|
||||
return 255;
|
||||
struct sact_sprite *sp = sact_try_get_sprite(sp_no);
|
||||
if (!sp) return 0;
|
||||
return sp->multiply_color.r;
|
||||
}
|
||||
|
||||
#define SACT_EXPORTS \
|
||||
@@ -994,8 +998,8 @@ int SACT2_SP_GetBrightness(int sp_no)
|
||||
HLL_TODO_EXPORT(Debug_GetFuncStack, SACT2_Debug_GetFuncStack), \
|
||||
HLL_EXPORT(SP_GetAMapValue, sact_SP_GetAMapValue), \
|
||||
HLL_EXPORT(SP_GetPixelValue, sact_SP_GetPixelValue), \
|
||||
HLL_EXPORT(SP_SetBrightness, SACT2_SP_SetBrightness), \
|
||||
HLL_EXPORT(SP_GetBrightness, SACT2_SP_GetBrightness)
|
||||
HLL_EXPORT(SP_SetBrightness, sact_SP_SetBrightness), \
|
||||
HLL_EXPORT(SP_GetBrightness, sact_SP_GetBrightness)
|
||||
|
||||
HLL_WARN_UNIMPLEMENTED( , void, SACTDX, SetVolumeMixerMasterGroupNum, int n);
|
||||
HLL_WARN_UNIMPLEMENTED( , void, SACTDX, SetVolumeMixerSEGroupNum, int n);
|
||||
|
||||
@@ -41,8 +41,6 @@
|
||||
static bool fps_show = false;
|
||||
|
||||
HLL_WARN_UNIMPLEMENTED( , void, StoatSpriteEngine, JoypadQuake_Set, int num, int type, int magnitude);
|
||||
HLL_WARN_UNIMPLEMENTED(0, int, StoatSpriteEngine, SP_SetBrightness, int sp_no, int brightness);
|
||||
HLL_WARN_UNIMPLEMENTED(0, int, StoatSpriteEngine, SP_GetBrightness, int sp_no);
|
||||
HLL_WARN_UNIMPLEMENTED( , void, StoatSpriteEngine, SetVolumeMixerMasterGroupNum, int n);
|
||||
HLL_WARN_UNIMPLEMENTED( , void, StoatSpriteEngine, SetVolumeMixerSEGroupNum, int n);
|
||||
HLL_WARN_UNIMPLEMENTED( , void, StoatSpriteEngine, SetVolumeMixerBGMGroupNum, int n);
|
||||
@@ -1098,8 +1096,8 @@ HLL_LIBRARY(StoatSpriteEngine,
|
||||
HLL_TODO_EXPORT(Debug_GetFuncStack, SACT2_Debug_GetFuncStack),
|
||||
HLL_EXPORT(SP_GetAMapValue, sact_SP_GetAMapValue),
|
||||
HLL_EXPORT(SP_GetPixelValue, sact_SP_GetPixelValue),
|
||||
HLL_EXPORT(SP_SetBrightness, StoatSpriteEngine_SP_SetBrightness),
|
||||
HLL_EXPORT(SP_GetBrightness, StoatSpriteEngine_SP_GetBrightness),
|
||||
HLL_EXPORT(SP_SetBrightness, sact_SP_SetBrightness),
|
||||
HLL_EXPORT(SP_GetBrightness, sact_SP_GetBrightness),
|
||||
HLL_TODO_EXPORT(SP_CreateCopy, SACTDX_SP_CreateCopy),
|
||||
HLL_TODO_EXPORT(Joypad_GetAnalogStickStatus, SACTDX_Joypad_GetAnalogStickStatus),
|
||||
HLL_TODO_EXPORT(GetDigitalStickStatus, SACTDX_GetDigitalStickStatus),
|
||||
|
||||
@@ -88,6 +88,10 @@ static void prepare_sact_shader(struct gfx_render_job *job, void *data)
|
||||
struct sprite_shader *s = (struct sprite_shader*)job->shader;
|
||||
struct sact_sprite *sp = (struct sact_sprite*)data;
|
||||
glUniform1f(s->blend_rate, sp->blend_rate / 255.0f);
|
||||
glUniform3f(s->multiply_color,
|
||||
sp->multiply_color.r / 255.0f,
|
||||
sp->multiply_color.g / 255.0f,
|
||||
sp->multiply_color.b / 255.0f);
|
||||
}
|
||||
|
||||
static void prepare_chipmunk_shader(struct gfx_render_job *job, void *data)
|
||||
@@ -123,6 +127,7 @@ void sprite_init_sact(void)
|
||||
}
|
||||
gfx_load_shader(&sprite_shader.s, "shaders/render.v.glsl", "shaders/sprite.f.glsl");
|
||||
sprite_shader.blend_rate = glGetUniformLocation(sprite_shader.s.program, "blend_rate");
|
||||
sprite_shader.multiply_color = glGetUniformLocation(sprite_shader.s.program, "multiply_color");
|
||||
sprite_shader.s.prepare = prepare_sact_shader;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user