diff --git a/src/game/game_1531a0.c b/src/game/game_1531a0.c index 6366ee7d8..35056f177 100644 --- a/src/game/game_1531a0.c +++ b/src/game/game_1531a0.c @@ -470,8 +470,8 @@ void func0f153d50(u32 arg0, u32 arg1, u32 arg2) var800a45d0.unk4c = arg0; var800a45d0.unk50 = arg1; var800a45d0.unk54 = arg2; - var800a45d0.colour1 = 0x44444400; - var800a45d0.colour2 = 0xffffff00; + var800a45d0.colour58 = 0x44444400; + var800a45d0.colour5c = 0xffffff00; } void func0f153d88(f32 arg0) @@ -480,10 +480,10 @@ void func0f153d88(f32 arg0) var800a45d0.unk60 = arg0 * arg0 * 110.0f; } -void func0f153e38(u32 colour1, u32 colour2) +void func0f153e38(u32 colour51, u32 colour2) { - var800a45d0.colour1 = colour1; - var800a45d0.colour2 = colour2; + var800a45d0.colour58 = colour51; + var800a45d0.colour5c = colour2; } void func0f153e4c(void) @@ -1627,13 +1627,13 @@ glabel func0f1543ac Gfx *func0f154ecc(Gfx *gdl, u32 arg1, u32 arg2) { - u32 colour = func0f1543ac(arg1, arg2, var800a45d0.unk04); + u32 colour = func0f1543ac(arg1, arg2, var800a45d0.colour04); - if (colour != var800a45d0.colour3) { + if (colour != var800a45d0.colour44) { gDPSetPrimColorViaWord(gdl++, 0, 0, colour); } - var800a45d0.colour3 = colour; + var800a45d0.colour44 = colour; return gdl; } @@ -3242,60 +3242,26 @@ glabel textRenderProjected /* f1566c8: 27bd00c0 */ addiu $sp,$sp,0xc0 ); -GLOBAL_ASM( -glabel func0f1566cc -/* f1566cc: 27bdffe8 */ addiu $sp,$sp,-24 -/* f1566d0: 00803825 */ or $a3,$a0,$zero -/* f1566d4: afa5001c */ sw $a1,0x1c($sp) -/* f1566d8: 3c09800a */ lui $t1,%hi(var800a45d0) -/* f1566dc: 00a02025 */ or $a0,$a1,$zero -/* f1566e0: 252945d0 */ addiu $t1,$t1,%lo(var800a45d0) -/* f1566e4: afbf0014 */ sw $ra,0x14($sp) -/* f1566e8: afa60020 */ sw $a2,0x20($sp) -/* f1566ec: 00c02825 */ or $a1,$a2,$zero -/* f1566f0: 8d260004 */ lw $a2,0x4($t1) -/* f1566f4: 0fc550eb */ jal func0f1543ac -/* f1566f8: afa70018 */ sw $a3,0x18($sp) -/* f1566fc: 3c09800a */ lui $t1,%hi(var800a45d0) -/* f156700: 252945d0 */ addiu $t1,$t1,%lo(var800a45d0) -/* f156704: 8d2e0044 */ lw $t6,0x44($t1) -/* f156708: 8fa70018 */ lw $a3,0x18($sp) -/* f15670c: 00404025 */ or $t0,$v0,$zero -/* f156710: 104e0005 */ beq $v0,$t6,.L0f156728 -/* f156714: 00e01825 */ or $v1,$a3,$zero -/* f156718: 3c0ffb00 */ lui $t7,0xfb00 -/* f15671c: ac6f0000 */ sw $t7,0x0($v1) -/* f156720: 24e70008 */ addiu $a3,$a3,0x8 -/* f156724: ac620004 */ sw $v0,0x4($v1) -.L0f156728: -/* f156728: ad280044 */ sw $t0,0x44($t1) -/* f15672c: 8fa4001c */ lw $a0,0x1c($sp) -/* f156730: 8fa50020 */ lw $a1,0x20($sp) -/* f156734: 8d260008 */ lw $a2,0x8($t1) -/* f156738: 0fc550eb */ jal func0f1543ac -/* f15673c: afa70018 */ sw $a3,0x18($sp) -/* f156740: 3c09800a */ lui $t1,%hi(var800a45d0) -/* f156744: 252945d0 */ addiu $t1,$t1,%lo(var800a45d0) -/* f156748: 8d390008 */ lw $t9,0x8($t1) -/* f15674c: 8d2b0048 */ lw $t3,0x48($t1) -/* f156750: 2401ff00 */ addiu $at,$zero,-256 -/* f156754: 305800ff */ andi $t8,$v0,0xff -/* f156758: 03215024 */ and $t2,$t9,$at -/* f15675c: 030a4025 */ or $t0,$t8,$t2 -/* f156760: 110b0006 */ beq $t0,$t3,.L0f15677c -/* f156764: 8fa70018 */ lw $a3,0x18($sp) -/* f156768: 00e01025 */ or $v0,$a3,$zero -/* f15676c: 3c0cfa00 */ lui $t4,0xfa00 -/* f156770: ac4c0000 */ sw $t4,0x0($v0) -/* f156774: ac480004 */ sw $t0,0x4($v0) -/* f156778: 24e70008 */ addiu $a3,$a3,0x8 -.L0f15677c: -/* f15677c: 8fbf0014 */ lw $ra,0x14($sp) -/* f156780: ad280048 */ sw $t0,0x48($t1) -/* f156784: 27bd0018 */ addiu $sp,$sp,0x18 -/* f156788: 03e00008 */ jr $ra -/* f15678c: 00e01025 */ or $v0,$a3,$zero -); +Gfx *func0f1566cc(Gfx *gdl, u32 arg1, u32 arg2) +{ + u32 colour = func0f1543ac(arg1, arg2, var800a45d0.colour04); + + if (colour != var800a45d0.colour44) { + gDPSetColor(gdl++, G_SETENVCOLOR, colour); + } + + var800a45d0.colour44 = colour; + + colour = (var800a45d0.colour08 & 0xffffff00) | (func0f1543ac(arg1, arg2, var800a45d0.colour08) & 0xff); + + if (colour != var800a45d0.colour48) { + gDPSetPrimColorViaWord(gdl++, 0, 0, colour); + } + + var800a45d0.colour48 = colour; + + return gdl; +} GLOBAL_ASM( glabel func0f156790 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 7e59aff80..64c088e02 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -15362,7 +15362,6 @@ struct var800a45c4 *var800a45c4 = NULL; u32 var800a45c8 = 0; u32 var800a45cc = 0; struct var800a45d0 var800a45d0 = {0}; -u32 var800a4630 = 0; Gfx *var800a4634 = NULL; u32 var800a4638 = 0; u32 var800a463c = 0; diff --git a/src/include/game/game_1531a0.h b/src/include/game/game_1531a0.h index ead691186..941480c93 100644 --- a/src/include/game/game_1531a0.h +++ b/src/include/game/game_1531a0.h @@ -31,7 +31,7 @@ void func0f153e38(u32 colour1, u32 colour2); void func0f153e4c(void); s32 func0f153e58(void); u32 func0f153e94(s32 x, s32 y, s32 arg2); -u32 func0f1543ac(u32 arg0, u32 arg1, u32 arg2); +u32 func0f1543ac(u32 arg0, u32 arg1, u32 colour); Gfx *func0f154ecc(Gfx *gdl, u32 arg1, u32 arg2); u32 func0f154f38(void); u32 func0f1552d4(void); @@ -39,7 +39,7 @@ u32 func0f15568c(void); u32 func0f156024(void); u32 func0f156030(void); Gfx *textRenderProjected(Gfx *gdl, s32 *x, s32 *y, char *text, u32 font1, u32 font2, s32 colour, s16 width, s16 height, s32 arg9, u32 arg10); -u32 func0f1566cc(void); +Gfx *func0f1566cc(Gfx *gdl, u32 arg1, u32 arg2); u32 func0f156790(void); u32 func0f156a24(void); Gfx *textRender(Gfx *gdl, s32 *x, s32 *y, char *text, u32 arg4, u32 arg5, u32 arg6, u32 colour, s16 arg8, s16 arg9, u32 arg10, u32 arg11); diff --git a/src/include/types.h b/src/include/types.h index bb4a84c48..123832e75 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -6530,8 +6530,8 @@ struct menucolourpalette { struct var800a45d0 { /*0x00*/ u8 unk00; - /*0x04*/ u32 unk04; - /*0x08*/ u32 unk08; + /*0x04*/ u32 colour04; + /*0x08*/ u32 colour08; /*0x0c*/ s32 unk0c; /*0x10*/ s32 unk10; /*0x14*/ f32 unk14; @@ -6548,13 +6548,13 @@ struct var800a45d0 { /*0x38*/ s32 x1; /*0x3c*/ s32 x2; /*0x40*/ u32 unk40; - /*0x44*/ u32 colour3; - /*0x48*/ u32 unk48; + /*0x44*/ u32 colour44; + /*0x48*/ u32 colour48; /*0x4c*/ u32 unk4c; /*0x50*/ u32 unk50; /*0x54*/ u32 unk54; - /*0x58*/ u32 colour1; - /*0x5c*/ u32 colour2; + /*0x58*/ u32 colour58; + /*0x5c*/ u32 colour5c; /*0x60*/ u32 unk60; };