color macro

This commit is contained in:
farisawan-2000
2020-12-12 19:45:53 -05:00
parent 87b4a3195e
commit c52a054fdb
4 changed files with 31 additions and 2 deletions

View File

@@ -17,14 +17,24 @@ static Gfx s2d_init_dl[] = {
gsDPSetTextureConvert(G_TC_FILT),
gsDPSetAlphaCompare(G_AC_THRESHOLD),
gsDPSetBlendColor(0, 0, 0, 0x01),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
// IA8
gsDPSetCombineLERP(0, 0, 0, ENVIRONMENT,
0, 0, 0, TEXEL0,
0, 0, 0, ENVIRONMENT,
0, 0, 0, TEXEL0),
gsSPEndDisplayList(),
};
int s2d_red = 255, s2d_green = 255, s2d_blue = 255, s2d_alpha = 255;
void setup_font(int idx) {
gDPPipeSync(gDisplayListHead++);
gDPSetTextureFilter(gDisplayListHead++, G_TF_POINT);
gSPDisplayList(gDisplayListHead++, s2d_init_dl);
gDPSetEnvColor(gDisplayListHead++, s2d_red, s2d_green, s2d_blue, s2d_alpha);
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SPRITE, G_RM_XLU_SPRITE2);
gSPObjRenderMode(gDisplayListHead++, G_OBJRM_XLU | G_OBJRM_BILERP);

View File

@@ -6,6 +6,8 @@ extern int myScale;
extern int myDegrees;
extern uObjMtx final_mtx, rot_mtx;
extern int s2d_red, s2d_green, s2d_blue, s2d_alpha;
extern void setup_font(int idx);
extern void mtx_pipeline(uObjMtx *m, int x, int y);

View File

@@ -29,6 +29,7 @@ int s2d_atoi(char *s, char **s2) {
void s2d_print(int x, int y, const char *str, uObjMtx *buf) {
char *p = str;
int tx = 0, ty = 0;
// int r = 0, g = 0, b = 0, a = 0;
if (*p == '\0') return;
do {
char r = *p;
@@ -52,7 +53,21 @@ void s2d_print(int x, int y, const char *str, uObjMtx *buf) {
CH_GET_NEXT(p);
ty = s2d_atoi(p, &p);
break;
case CH_COLOR:
CH_GET_NEXT(p);
s2d_red = s2d_atoi(p, &p);
CH_GET_NEXT(p);
CH_GET_NEXT(p);
s2d_green = s2d_atoi(p, &p);
CH_GET_NEXT(p);
CH_GET_NEXT(p);
s2d_blue = s2d_atoi(p, &p);
CH_GET_NEXT(p);
CH_GET_NEXT(p);
s2d_alpha = s2d_atoi(p, &p);
break;
break;
default:
if (myDegrees == 0)
draw_s2d_glyph(r, (x += (8 * myScale)) + tx, y + ty, (buf++));

View File

@@ -4,10 +4,12 @@
#define SCALE "\x80" // SCALE (some scale)
#define ROTATE "\x81" // ROTATE (degrees) // TODO: maybe add axis?
#define TRANSLATE "\x82" // TRANSLATE (x) (y)
#define COLOR "\x83" // COLOR (r) (g) (b) (a)
#define CH_SCALE '\x80'
#define CH_ROT '\x81'
#define CH_TRANSLATE '\x82'
#define CH_COLOR '\x83'
#define CH_GET_NEXT(x) (*(++x))