diff --git a/src/game/data/data_0160b0.c b/src/game/data/data_0160b0.c index 17295f491..32330b5e7 100644 --- a/src/game/data/data_0160b0.c +++ b/src/game/data/data_0160b0.c @@ -943,102 +943,22 @@ u32 var80070fe0 = 0x0000000a; u32 var80070fe4 = 0x00000018; u32 var80070fe8 = 0x00000000; u32 var80070fec = 0x00000000; -u32 var80070ff0 = 0x01010000; -u32 var80070ff4 = 0x8007fb10; -u32 var80070ff8 = 0x8007fb0c; -u32 var80070ffc = 0x00ff0000; -u32 var80071000 = 0x000000a0; -u32 var80071004 = 0x01060000; -u32 var80071008 = 0x00000000; -u32 var8007100c = 0x00000050; -u32 var80071010 = 0x00010000; -u32 var80071014 = 0x8007fb18; -u32 var80071018 = 0x8007fb14; -u32 var8007101c = 0x00ff0000; -u32 var80071020 = 0x000000a0; -u32 var80071024 = 0x03070000; -u32 var80071028 = 0x00000000; -u32 var8007102c = 0x00000078; -u32 var80071030 = 0x00000100; -u32 var80071034 = 0x8007fb18; -u32 var80071038 = 0x8007fb14; -u32 var8007103c = 0xff000000; -u32 var80071040 = 0xffffffa0; -u32 var80071044 = 0x03070000; -u32 var80071048 = 0x00000000; -u32 var8007104c = 0x00000078; -u32 var80071050 = 0x00010000; -u32 var80071054 = 0x8007fb18; -u32 var80071058 = 0x8007fb14; -u32 var8007105c = 0x00ff0000; -u32 var80071060 = 0x000000a0; -u32 var80071064 = 0x01060000; -u32 var80071068 = 0x00000000; -u32 var8007106c = 0x00000078; -u32 var80071070 = 0x01010000; -u32 var80071074 = 0x8007fb10; -u32 var80071078 = 0x8007fb0c; -u32 var8007107c = 0x00ffc000; -u32 var80071080 = 0x000000a0; -u32 var80071084 = 0x01060000; -u32 var80071088 = 0x00000000; -u32 var8007108c = 0x00000028; -u32 var80071090 = 0x00000000; -u32 var80071094 = 0x8007fb18; -u32 var80071098 = 0x8007fb14; -u32 var8007109c = 0x00ff0000; -u32 var800710a0 = 0x000000a0; -u32 var800710a4 = 0x01050000; -u32 var800710a8 = 0x00000000; -u32 var800710ac = 0x00000078; -u32 var800710b0 = 0x01000000; -u32 var800710b4 = 0x8007fb10; -u32 var800710b8 = 0x8007fb0c; -u32 var800710bc = 0x00ff0000; -u32 var800710c0 = 0x000000a0; -u32 var800710c4 = 0x03050000; -u32 var800710c8 = 0x00000000; -u32 var800710cc = 0x00000078; -u32 var800710d0 = 0x01010000; -u32 var800710d4 = 0x8007fb10; -u32 var800710d8 = 0x8007fb0c; -u32 var800710dc = 0x00ff0000; -u32 var800710e0 = 0x000000a0; -u32 var800710e4 = 0x03050000; -u32 var800710e8 = 0x00000000; -u32 var800710ec = 0xffffffff; -u32 var800710f0 = 0x01010000; -u32 var800710f4 = 0x8007fb10; -u32 var800710f8 = 0x8007fb0c; -u32 var800710fc = 0x00ffc000; -u32 var80071100 = 0x000000a0; -u32 var80071104 = 0x03060000; -u32 var80071108 = 0x00000000; -u32 var8007110c = 0x000001f4; -u32 var80071110 = 0x01010000; -u32 var80071114 = 0x8007fb08; -u32 var80071118 = 0x8007fb04; -u32 var8007111c = 0x00ff0000; -u32 var80071120 = 0x000000a0; -u32 var80071124 = 0x01060000; -u32 var80071128 = 0x00000000; -u32 var8007112c = 0x00000078; -u32 var80071130 = 0x01010000; -u32 var80071134 = 0x8007fb10; -u32 var80071138 = 0x8007fb0c; -u32 var8007113c = 0x00ff0000; -u32 var80071140 = 0x000000a0; -u32 var80071144 = 0x01060000; -u32 var80071148 = 0x00000000; -u32 var8007114c = 0x000000f0; -u32 var80071150 = 0x00000000; -u32 var80071154 = 0x8007fb10; -u32 var80071158 = 0x8007fb0c; -u32 var8007115c = 0x00ff0000; -u32 var80071160 = 0x000000a0; -u32 var80071164 = 0x03080000; -u32 var80071168 = 0x00000000; -u32 var8007116c = 0x00000078; + +struct hudmessageconfig g_HudMessageConfigs[] = { + /* 0*/ { 1, 1, 0, (void*)0x8007fb10, (void*)0x8007fb0c, 0x00ff0000, 0x000000a0, 1, 6, 0, 0, 80 }, // bottom left + /* 1*/ { 0, 1, 0, (void*)0x8007fb18, (void*)0x8007fb14, 0x00ff0000, 0x000000a0, 3, 7, 0, 0, 120 }, // middle of screen, larger font, like objectives + /* 2*/ { 0, 0, 1, (void*)0x8007fb18, (void*)0x8007fb14, 0xff000000, 0xffffffa0, 3, 7, 0, 0, 120 }, // middle of screen, larger font, like objectives + /* 3*/ { 0, 1, 0, (void*)0x8007fb18, (void*)0x8007fb14, 0x00ff0000, 0x000000a0, 1, 6, 0, 0, 120 }, // bottom left, large font + /* 4*/ { 1, 1, 0, (void*)0x8007fb10, (void*)0x8007fb0c, 0x00ffc000, 0x000000a0, 1, 6, 0, 0, 40 }, // bottom left + /* 5*/ { 0, 0, 0, (void*)0x8007fb18, (void*)0x8007fb14, 0x00ff0000, 0x000000a0, 1, 5, 0, 0, 120 }, // top left, large font + /* 6*/ { 1, 0, 0, (void*)0x8007fb10, (void*)0x8007fb0c, 0x00ff0000, 0x000000a0, 3, 5, 0, 0, 120 }, // top middle + /* 7*/ { 1, 1, 0, (void*)0x8007fb10, (void*)0x8007fb0c, 0x00ff0000, 0x000000a0, 3, 5, 0, 0, -1 }, // top middle + /* 8*/ { 1, 1, 0, (void*)0x8007fb10, (void*)0x8007fb0c, 0x00ffc000, 0x000000a0, 3, 6, 0, 0, 500 }, // bottom middle + /* 9*/ { 1, 1, 0, (void*)0x8007fb08, (void*)0x8007fb04, 0x00ff0000, 0x000000a0, 1, 6, 0, 0, 120 }, // bottom left, smaller font + /*10*/ { 1, 1, 0, (void*)0x8007fb10, (void*)0x8007fb0c, 0x00ff0000, 0x000000a0, 1, 6, 0, 0, 240 }, // bottom left but longer duration + /*11*/ { 0, 0, 0, (void*)0x8007fb10, (void*)0x8007fb0c, 0x00ff0000, 0x000000a0, 3, 8, 0, 0, 120 }, // none +}; + u32 var80071170 = 0x2e3b213f; u32 var80071174 = 0x2c000000; u32 var80071178 = 0x00000000; diff --git a/src/game/game_0dcdb0.c b/src/game/game_0dcdb0.c index 35eac7dff..00a4c55e7 100644 --- a/src/game/game_0dcdb0.c +++ b/src/game/game_0dcdb0.c @@ -1286,49 +1286,28 @@ glabel func0f0ddeac /* f0ddf18: 00601025 */ or $v0,$v1,$zero ); -GLOBAL_ASM( -glabel currentPlayerQueueMessage -/* f0ddf1c: 3c0f8007 */ lui $t7,%hi(var80070ff0) -/* f0ddf20: 25ef0ff0 */ addiu $t7,$t7,%lo(var80070ff0) -/* f0ddf24: 00057140 */ sll $t6,$a1,0x5 -/* f0ddf28: 27bdffb8 */ addiu $sp,$sp,-72 -/* f0ddf2c: 01cf1021 */ addu $v0,$t6,$t7 -/* f0ddf30: 90580002 */ lbu $t8,0x2($v0) -/* f0ddf34: 8c590004 */ lw $t9,0x4($v0) -/* f0ddf38: 8c480008 */ lw $t0,0x8($v0) -/* f0ddf3c: 8c49000c */ lw $t1,0xc($v0) -/* f0ddf40: 8c4a0010 */ lw $t2,0x10($v0) -/* f0ddf44: 904b0014 */ lbu $t3,0x14($v0) -/* f0ddf48: 844c0016 */ lh $t4,0x16($v0) -/* f0ddf4c: 904d0015 */ lbu $t5,0x15($v0) -/* f0ddf50: 844e0018 */ lh $t6,0x18($v0) -/* f0ddf54: afbf0044 */ sw $ra,0x44($sp) -/* f0ddf58: 240fffff */ addiu $t7,$zero,-1 -/* f0ddf5c: afaf0034 */ sw $t7,0x34($sp) -/* f0ddf60: 90460000 */ lbu $a2,0x0($v0) -/* f0ddf64: 90470001 */ lbu $a3,0x1($v0) -/* f0ddf68: afa00038 */ sw $zero,0x38($sp) -/* f0ddf6c: afb80010 */ sw $t8,0x10($sp) -/* f0ddf70: afb90014 */ sw $t9,0x14($sp) -/* f0ddf74: afa80018 */ sw $t0,0x18($sp) -/* f0ddf78: afa9001c */ sw $t1,0x1c($sp) -/* f0ddf7c: afaa0020 */ sw $t2,0x20($sp) -/* f0ddf80: afab0024 */ sw $t3,0x24($sp) -/* f0ddf84: afac0028 */ sw $t4,0x28($sp) -/* f0ddf88: afad002c */ sw $t5,0x2c($sp) -/* f0ddf8c: 0fc37baf */ jal func0f0deebc -/* f0ddf90: afae0030 */ sw $t6,0x30($sp) -/* f0ddf94: 8fbf0044 */ lw $ra,0x44($sp) -/* f0ddf98: 27bd0048 */ addiu $sp,$sp,0x48 -/* f0ddf9c: 03e00008 */ jr $ra -/* f0ddfa0: 00000000 */ sll $zero,$zero,0x0 -); +void currentPlayerQueueMessage(char *text, s32 confignum) +{ + func0f0deebc(text, confignum, + g_HudMessageConfigs[confignum].unk00, + g_HudMessageConfigs[confignum].unk01, + g_HudMessageConfigs[confignum].unk02, + g_HudMessageConfigs[confignum].unk04, + g_HudMessageConfigs[confignum].unk08, + g_HudMessageConfigs[confignum].colour, + g_HudMessageConfigs[confignum].unk10, + g_HudMessageConfigs[confignum].alignh, + g_HudMessageConfigs[confignum].unk16, + g_HudMessageConfigs[confignum].alignv, + g_HudMessageConfigs[confignum].unk18, + -1, 0); +} GLOBAL_ASM( glabel func0f0ddfa4 /* f0ddfa4: 27bdffb8 */ addiu $sp,$sp,-72 -/* f0ddfa8: 3c0f8007 */ lui $t7,%hi(var80070ff0) -/* f0ddfac: 25ef0ff0 */ addiu $t7,$t7,%lo(var80070ff0) +/* f0ddfa8: 3c0f8007 */ lui $t7,%hi(g_HudMessageConfigs) +/* f0ddfac: 25ef0ff0 */ addiu $t7,$t7,%lo(g_HudMessageConfigs) /* f0ddfb0: 00057140 */ sll $t6,$a1,0x5 /* f0ddfb4: 01cf1021 */ addu $v0,$t6,$t7 /* f0ddfb8: 90580002 */ lbu $t8,0x2($v0) @@ -1367,8 +1346,8 @@ glabel func0f0ddfa4 GLOBAL_ASM( glabel func0f0de034 /* f0de034: 27bdffb8 */ addiu $sp,$sp,-72 -/* f0de038: 3c0f8007 */ lui $t7,%hi(var80070ff0) -/* f0de03c: 25ef0ff0 */ addiu $t7,$t7,%lo(var80070ff0) +/* f0de038: 3c0f8007 */ lui $t7,%hi(g_HudMessageConfigs) +/* f0de03c: 25ef0ff0 */ addiu $t7,$t7,%lo(g_HudMessageConfigs) /* f0de040: 00057140 */ sll $t6,$a1,0x5 /* f0de044: 01cf1021 */ addu $v0,$t6,$t7 /* f0de048: afa60050 */ sw $a2,0x50($sp) @@ -1489,12 +1468,12 @@ glabel func0f0de160 .L0f0de1f0: /* f0de1f0: 8fb904c4 */ lw $t9,0x4c4($sp) /* f0de1f4: 0015c080 */ sll $t8,$s5,0x2 -/* f0de1f8: 3c0f8007 */ lui $t7,%hi(var80070ff0) +/* f0de1f8: 3c0f8007 */ lui $t7,%hi(g_HudMessageConfigs) /* f0de1fc: 00197140 */ sll $t6,$t9,0x5 /* f0de200: 3c198007 */ lui $t9,%hi(var80070fb4) /* f0de204: 0338c821 */ addu $t9,$t9,$t8 /* f0de208: 8f390fb4 */ lw $t9,%lo(var80070fb4)($t9) -/* f0de20c: 25ef0ff0 */ addiu $t7,$t7,%lo(var80070ff0) +/* f0de20c: 25ef0ff0 */ addiu $t7,$t7,%lo(g_HudMessageConfigs) /* f0de210: 01cf8021 */ addu $s0,$t6,$t7 /* f0de214: 3c0e800a */ lui $t6,%hi(g_Vars+0x2ac) /* f0de218: ae19000c */ sw $t9,0xc($s0) @@ -2726,7 +2705,7 @@ glabel func0f0deebc /* f0df2f8: ae2c01d4 */ sw $t4,0x1d4($s1) /* f0df2fc: 8fad0230 */ lw $t5,0x230($sp) /* f0df300: 8fb901fc */ lw $t9,0x1fc($sp) -/* f0df304: 3c0a8007 */ lui $t2,%hi(var8007100c) +/* f0df304: 3c0a8007 */ lui $t2,%hi(g_HudMessageConfigs+0x1c) /* f0df308: 31ae0004 */ andi $t6,$t5,0x4 /* f0df30c: 11c00007 */ beqz $t6,.L0f0df32c /* f0df310: 00195940 */ sll $t3,$t9,0x5 @@ -2738,7 +2717,7 @@ glabel func0f0deebc /* f0df328: ae3801bc */ sw $t8,0x1bc($s1) .L0f0df32c: /* f0df32c: 014b5021 */ addu $t2,$t2,$t3 -/* f0df330: 8d4a100c */ lw $t2,%lo(var8007100c)($t2) +/* f0df330: 8d4a100c */ lw $t2,%lo(g_HudMessageConfigs+0x1c)($t2) /* f0df334: 24030001 */ addiu $v1,$zero,0x1 /* f0df338: ae2a01bc */ sw $t2,0x1bc($s1) /* f0df33c: 8fac022c */ lw $t4,0x22c($sp) diff --git a/src/include/game/data/data_0160b0.h b/src/include/game/data/data_0160b0.h index 9d5a64606..9912405aa 100644 --- a/src/include/game/data/data_0160b0.h +++ b/src/include/game/data/data_0160b0.h @@ -134,7 +134,7 @@ extern u32 var80070f9c; extern u32 var80070fa0; extern u32 var80070fe8; extern u32 var80070fec; -extern u32 var80070ff0; +extern struct hudmessageconfig g_HudMessageConfigs[]; extern u32 var80071170; extern u32 var80071180; extern u32 var80071184; diff --git a/src/include/game/game_0dcdb0.h b/src/include/game/game_0dcdb0.h index 5e74fe401..2e60f5e3b 100644 --- a/src/include/game/game_0dcdb0.h +++ b/src/include/game/game_0dcdb0.h @@ -13,13 +13,15 @@ u32 func0f0ddd44(void); void func0f0ddda0(void); u32 func0f0dde60(void); u32 func0f0ddeac(void); -void currentPlayerQueueMessage(char *text, u32 arg1); +void currentPlayerQueueMessage(char *text, s32 confignum); void func0f0ddfa4(char *text, s32 arg1, s32 arg2); void func0f0de034(char *text, u32 arg1, u32 arg2); u32 func0f0de0d4(void); u32 func0f0de160(void); u32 func0f0de7fc(void); -u32 func0f0deebc(void); +u32 func0f0deebc(char *text, s32 confignum, u8 conf00, u8 conf01, u8 conf02, + void *conf04, void *conf08, u32 colour, u32 conf10, u8 alignh, s16 conf16, + u8 alignv, s16 conf18, s32 arg14, s32 arg15); void func0f0df364(void); void currentPlayerUnsetFlag(u32 flag); void currentPlayerSetFlag(u32 flag); diff --git a/src/include/types.h b/src/include/types.h index db461507f..8566fc2b2 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5257,4 +5257,19 @@ struct mpteaminfo { s32 score; }; +struct hudmessageconfig { + /*0x00*/ u8 unk00; + /*0x01*/ u8 unk01; + /*0x02*/ u8 unk02; + /*0x04*/ void *unk04; + /*0x08*/ void *unk08; + /*0x0c*/ u32 colour; + /*0x10*/ u32 unk10; + /*0x14*/ u8 alignh; + /*0x15*/ u8 alignv; + /*0x16*/ s16 unk16; + /*0x18*/ s16 unk18; + /*0x1c*/ s32 duration; +}; + #endif