diff --git a/src/game/data/data_000000.c b/src/game/data/data_000000.c index 26149f70e..fa0322f84 100644 --- a/src/game/data/data_000000.c +++ b/src/game/data/data_000000.c @@ -3729,7 +3729,7 @@ u32 var8005d9c0 = 0x00000000; u32 var8005d9c4 = 0x00000000; u32 var8005d9c8 = 0x00000001; u32 var8005d9cc = 0x00000000; -u32 var8005d9d0 = 0x00000000; +s32 var8005d9d0 = 0x00000000; u32 var8005d9d4 = 0x00000000; u32 var8005d9d8[] = { diff --git a/src/game/debug.c b/src/game/debug.c index fef775578..fd13fa324 100644 --- a/src/game/debug.c +++ b/src/game/debug.c @@ -11,7 +11,7 @@ #include "gvars/gvars.h" #include "types.h" -u32 var80075d60 = 0x00000002; +s32 var80075d60 = 0x00000002; u32 var80075d64 = 0x00000002; u32 var80075d68 = 0x00000002; u32 var80075d6c = 0x00000002; diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index 1a7a123fc..8872c59e7 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -12491,7 +12491,7 @@ Gfx *func0f0c07c8(Gfx *gdl) if (g_Vars.currentplayer->cameramode == CAMERAMODE_THIRDPERSON) { gdl = func0f0aeed8(gdl); gdl = func0f15b114(gdl); - gdl = func0f0dfad0(gdl); + gdl = hudRenderMessages(gdl); if (g_Vars.currentplayer->isdead == false) { gdl = currentPlayerDrawFade(gdl); @@ -12782,7 +12782,7 @@ Gfx *func0f0c07c8(Gfx *gdl) } gdl = func0f18f874(gdl); - gdl = func0f0dfad0(gdl); + gdl = hudRenderMessages(gdl); gdl = currentPlayerDrawFade(gdl); } else { gdl = func0f15b114(gdl); @@ -12820,7 +12820,7 @@ Gfx *func0f0c07c8(Gfx *gdl) gdl = func0f153780(gdl); } - gdl = func0f0dfad0(gdl); + gdl = hudRenderMessages(gdl); gdl = currentPlayerDrawFade(gdl); } diff --git a/src/game/game_0dcdb0.c b/src/game/game_0dcdb0.c index 59636f9a5..146aea46c 100644 --- a/src/game/game_0dcdb0.c +++ b/src/game/game_0dcdb0.c @@ -90,7 +90,7 @@ glabel func0f0dcdb0 /* f0dcdb8: 90420fb0 */ lbu $v0,%lo(var80070fb0)($v0) ); -s32 func0f0dcdbc(void) +s32 hudIsZoomRangeVisible(void) { return optionsGetShowZoomRange(g_Vars.currentplayerstats->mpindex) && (PLAYERCOUNT() == 1 @@ -104,7 +104,7 @@ s32 func0f0dcdbc(void) } GLOBAL_ASM( -glabel func0f0dcef4 +glabel hudRenderMissionTimer /* f0dcef4: 27bdff70 */ addiu $sp,$sp,-144 /* f0dcef8: afbf0034 */ sw $ra,0x34($sp) /* f0dcefc: afa40090 */ sw $a0,0x90($sp) @@ -229,7 +229,7 @@ glabel func0f0dcef4 /* f0dd0b0: 01c87821 */ addu $t7,$t6,$t0 /* f0dd0b4: 01ea1821 */ addu $v1,$t7,$t2 /* f0dd0b8: afa3003c */ sw $v1,0x3c($sp) -/* f0dd0bc: 0fc3736f */ jal func0f0dcdbc +/* f0dd0bc: 0fc3736f */ jal hudIsZoomRangeVisible /* f0dd0c0: afa70080 */ sw $a3,0x80($sp) /* f0dd0c4: 8fa3003c */ lw $v1,0x3c($sp) /* f0dd0c8: 24050001 */ addiu $a1,$zero,0x1 @@ -368,7 +368,7 @@ glabel func0f0dcef4 #if VERSION >= VERSION_NTSC_FINAL GLOBAL_ASM( -glabel func0f0dd2ac +glabel hudRenderZoomRange /* f0dd2ac: 27bdff40 */ addiu $sp,$sp,-192 /* f0dd2b0: afbf003c */ sw $ra,0x3c($sp) /* f0dd2b4: afb00038 */ sw $s0,0x38($sp) @@ -752,7 +752,7 @@ glabel func0f0dd2ac ); #else GLOBAL_ASM( -glabel func0f0dd2ac +glabel hudRenderZoomRange /* f0dd28c: 27bdff40 */ addiu $sp,$sp,-192 /* f0dd290: afbf003c */ sw $ra,0x3c($sp) /* f0dd294: afb00038 */ sw $s0,0x38($sp) @@ -1137,7 +1137,7 @@ glabel func0f0dd2ac #endif GLOBAL_ASM( -glabel func0f0dd848 +glabel hudRenderMessageBox .late_rodata glabel var7f1adeac .word 0x40490fdb @@ -2932,7 +2932,7 @@ glabel hudmsgCreate // g_HudMessages[index].playernum == g_Vars.currentplayernum //void hudmsgCreate(char *text, s32 type, s32 conf00, s32 conf01, s32 conf02, // struct hudmessagething *conf04, struct hudmessagething *conf08, -// u32 textcolour, u32 shadowcolour, +// u32 textcolour, u32 glowcolour, // u32 alignh, s32 conf16, u32 alignv, s32 conf18, s32 arg14, u32 flags) //{ // char *pos; @@ -2964,8 +2964,8 @@ glabel hudmsgCreate // s32 dupeofindex = -1; // // for (index = 0; index < g_NumHudMessages; index++) { -// if (g_HudMessages[index].state -// && g_HudMessages[index].state != HUDMSGSTATE_ONSCREEN +// if (g_HudMessages[index].state != HUDMSGSTATE_FREE +// && g_HudMessages[index].state != HUDMSGSTATE_FADINGOUT // && g_HudMessages[index].playernum == g_Vars.currentplayernum // && g_HudMessages[index].hash == hash) { // dupeofindex = index; @@ -3041,18 +3041,18 @@ glabel hudmsgCreate // msg->type = type; // msg->id = g_NextHudMessageId++; // msg->state = HUDMSGSTATE_QUEUED; -// msg->unk006 = 0; -// msg->unk001 = conf00; +// msg->timer = 0; +// msg->boxed = conf00; // msg->unk002 = conf01; -// msg->unk003 = conf02; -// msg->unk008 = conf04->unk00; -// msg->unk00c = conf08->unk00; +// msg->flash = conf02; +// msg->font1 = conf04->unk00; +// msg->font2 = conf08->unk00; // msg->textcolour = textcolour; -// msg->shadowcolour = shadowcolour; +// msg->glowcolour = glowcolour; // msg->alignh = alignh; // msg->alignv = alignv; -// msg->unk01c = uStack24; -// msg->unk01e = uStack28; +// msg->width = uStack24; +// msg->height = uStack28; // msg->unk1cc = uStack32; // msg->unk1d0 = conf16; // msg->unk1d4 = conf18; @@ -3575,28 +3575,28 @@ void hudmsgRemoveForDeadPlayer(s32 playernum) && g_HudMessages[i].playernum == playernum && (g_HudMessages[i].flags & HUDMSGFLAG_ONLYIFALIVE)) { g_HudMessages[i].state = HUDMSGSTATE_FREE; - g_HudMessages[i].unk006 = 0; + g_HudMessages[i].timer = 0; } } } GLOBAL_ASM( -glabel func0f0dfad0 +glabel hudRenderMessages .late_rodata glabel var7f1adedc .word 0x40490fdb glabel var7f1adee0 -.word func0f0dfad0+0xa34 # f0e0504 +.word hudRenderMessages+0xa34 # f0e0504 glabel var7f1adee4 -.word func0f0dfad0+0xa34 # f0e0504 +.word hudRenderMessages+0xa34 # f0e0504 glabel var7f1adee8 -.word func0f0dfad0+0xa34 # f0e0504 +.word hudRenderMessages+0xa34 # f0e0504 glabel var7f1adeec -.word func0f0dfad0+0x3ec # f0dfebc +.word hudRenderMessages+0x3ec # f0dfebc glabel var7f1adef0 -.word func0f0dfad0+0x644 # f0e0114 +.word hudRenderMessages+0x644 # f0e0114 glabel var7f1adef4 -.word func0f0dfad0+0x7c8 # f0e0298 +.word hudRenderMessages+0x7c8 # f0e0298 .text /* f0dfad0: 27bdff00 */ addiu $sp,$sp,-256 /* f0dfad4: 3c0f8007 */ lui $t7,%hi(g_HiResActive) @@ -3961,7 +3961,7 @@ glabel var7f1adef4 /* f0e000c: e7b40014 */ swc1 $f20,0x14($sp) /* f0e0010: 02402025 */ or $a0,$s2,$zero /* f0e0014: 2706fffd */ addiu $a2,$t8,-3 -/* f0e0018: 0fc37612 */ jal func0f0dd848 +/* f0e0018: 0fc37612 */ jal hudRenderMessageBox /* f0e001c: 25c5fffd */ addiu $a1,$t6,-3 /* f0e0020: 0c002f02 */ jal viGetX /* f0e0024: 00409025 */ or $s2,$v0,$zero @@ -4064,7 +4064,7 @@ glabel var7f1adef4 /* f0e0194: afa30018 */ sw $v1,0x18($sp) /* f0e0198: e7b40014 */ swc1 $f20,0x14($sp) /* f0e019c: 02402025 */ or $a0,$s2,$zero -/* f0e01a0: 0fc37612 */ jal func0f0dd848 +/* f0e01a0: 0fc37612 */ jal hudRenderMessageBox /* f0e01a4: 2566fffd */ addiu $a2,$t3,-3 /* f0e01a8: 0c002f02 */ jal viGetX /* f0e01ac: 00409025 */ or $s2,$v0,$zero @@ -4229,7 +4229,7 @@ glabel var7f1adef4 /* f0e0408: e7b40014 */ swc1 $f20,0x14($sp) /* f0e040c: 02402025 */ or $a0,$s2,$zero /* f0e0410: 2565fffd */ addiu $a1,$t3,-3 -/* f0e0414: 0fc37612 */ jal func0f0dd848 +/* f0e0414: 0fc37612 */ jal hudRenderMessageBox /* f0e0418: 2586fffd */ addiu $a2,$t4,-3 /* f0e041c: 0c002f02 */ jal viGetX /* f0e0420: 00409025 */ or $s2,$v0,$zero @@ -4399,15 +4399,15 @@ glabel var7f1adef4 /* f0e0690: 00000000 */ nop /* f0e0694: 10410004 */ beq $v0,$at,.L0f0e06a8 /* f0e0698: 02402025 */ or $a0,$s2,$zero -/* f0e069c: 0fc373bd */ jal func0f0dcef4 +/* f0e069c: 0fc373bd */ jal hudRenderMissionTimer /* f0e06a0: 8fa500e0 */ lw $a1,0xe0($sp) /* f0e06a4: 00409025 */ or $s2,$v0,$zero .L0f0e06a8: -/* f0e06a8: 0fc3736f */ jal func0f0dcdbc +/* f0e06a8: 0fc3736f */ jal hudIsZoomRangeVisible /* f0e06ac: 00000000 */ nop /* f0e06b0: 10400004 */ beqz $v0,.L0f0e06c4 /* f0e06b4: 02402025 */ or $a0,$s2,$zero -/* f0e06b8: 0fc374ab */ jal func0f0dd2ac +/* f0e06b8: 0fc374ab */ jal hudRenderZoomRange /* f0e06bc: 8fa500e0 */ lw $a1,0xe0($sp) /* f0e06c0: 00409025 */ or $s2,$v0,$zero .L0f0e06c4: @@ -4438,6 +4438,265 @@ glabel var7f1adef4 /* f0e0720: 27bd0100 */ addiu $sp,$sp,0x100 ); +// Mismatch most likely due to variable re-use. +//Gfx *hudRenderMessages(Gfx *gdl) +//{ +// s32 i; +// u32 textcolour; // s3 +// u32 glowcolour; // s4 +// u32 stack; +// f32 sin; +// s32 x; // e8 +// s32 y; // e4 +// s32 timerthing = 255; // e0 +// s32 spdc = true; // dc +// +// // b24 +// if (g_HiResActive == true) { +// g_ScreenWidthMultiplier = 2; +// } else { +// g_ScreenWidthMultiplier = 1; +// } +// +// // b44 +// gdl = func0f153628(gdl); +// +// // b4c +// if ((g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0) +// && var80070764 +// && var8005d9d0 == 0 +// && g_Vars.currentplayernum == 0) { +// // ba4 +// spdc = false; +// } +// +// // bac +// for (i = 0; i < g_NumHudMessages; i++) { +// // bbc +// struct hudmessage *msg = &g_HudMessages[i]; +// +// // c04 +// if (msg->opacity == 0) { +// continue; +// } +// +// // c14 +// if (msg->state == HUDMSGSTATE_FREE +// || msg->state == HUDMSGSTATE_QUEUED +// || (spdc && g_Vars.currentplayernum != msg->playernum)) { +// continue; +// } +// +// // c60 +// if (msg->flash) { +// s32 alpha; +// sin = sinf((msg->timer * M_PI) / 60.0f); +// +// if (sin < 0.0f) { +// sin = -sin; +// } +// +// alpha = 192.0f * sin; +// +// textcolour = (msg->textcolour & 0xffffff00) + alpha; +// glowcolour = msg->glowcolour; +// } else { +// // ce8 +// textcolour = msg->textcolour | 0xa0; +// glowcolour = msg->glowcolour; +// } +// +// // cf8 +// if (msg->opacity != 255) { +// u32 alpha; +// alpha = (msg->opacity * (textcolour & 0xff)) / 255; +// textcolour = (textcolour & 0xffffff00) + (alpha & 0xff); +// alpha = (msg->opacity * (glowcolour & 0xff)) / 255; +// glowcolour = (glowcolour & 0xffffff00) + (alpha & 0xff); +// } +// +// // d70 +// x = msg->x; +// y = msg->y; +// +// if (msg->type == HUDMSGTYPE_SUBTITLE && currentPlayerIsHealthVisible()) { +// y += (s32)(16.0f * currentPlayerGetHealthBarHeightFrac()); +// } +// +// // dd0 +// if (msg->type == HUDMSGTYPE_11) { +// gDPSetScissor(gdl++, 0, +// (x - 4) * g_ScreenWidthMultiplier, 0, +// (x + msg->width + 3) * g_ScreenWidthMultiplier, viGetBufY()); +// } +// +// // e9c +// switch (msg->state) { +// case HUDMSGSTATE_FREE: +// case HUDMSGSTATE_QUEUED: +// break; +// case HUDMSGSTATE_FADINGIN: // f0dfebc +// { +// u32 bordercolour = msg->textcolour | 0x40; +// f32 tmp; +// f32 spc0; +// +// if (msg->opacity != 255) { +// u32 alpha = (msg->opacity * (bordercolour & 0xff)) / 255; +// bordercolour = (bordercolour & 0xffffff00) + (alpha & 0xff); +// } +// +// // f08 +// spc0 = (sqrtf(msg->width * msg->width + msg->height * msg->height) + 132.0f) / 7.0f; +// +// // f58 +// if (spc0 > 30.0f) { +// spc0 = 30.0f; +// } +// +// spc0 = msg->timer / spc0; +// +// // fa0 +// if (spc0 > 1.0f) { +// spc0 = 1.0f; +// } +// +// // fcc +// if (spc0 < 0.0f) { +// spc0 = 0.0f; +// } +// +// tmp = msg->timer * 7.0f; +// +// func0f153c20(x, y, tmp, 0); +// +// // fd8 +// if (msg->boxed) { +// // fe0 +// gdl = hudRenderMessageBox(gdl, x - 3, y - 3, x + msg->width + 2, y + msg->height + 2, 1.0f, bordercolour, spc0); +// // 020 +// gdl = textRenderWhite(gdl, &x, &y, msg->text, msg->font1, msg->font2, textcolour, viGetX(), viGetY(), 0, 0); +// } else { +// // 078 +// gdl = func0f153a34(gdl, x, y, x + msg->width, y + msg->height, 0); +// // 0e4 +// gdl = textRender(gdl, &x, &y, msg->text, msg->font1, msg->font2, textcolour, glowcolour, viGetX(), viGetY(), 0, 0); +// } +// +// if (msg->alignv == 6) { +// timerthing = 0; +// } +// +// func0f153e4c(); +// } +// break; +// case HUDMSGSTATE_ONSCREEN: // f0e0114 +// if (msg->boxed) { +// u32 bordercolour = msg->textcolour | 0x40; +// +// if (msg->opacity != 255) { +// u32 alpha = (msg->opacity * (bordercolour & 0xff)) / 255; +// bordercolour = (bordercolour & 0xffffff00) + (alpha & 0xff); +// } +// +// // 1a0 +// gdl = hudRenderMessageBox(gdl, x - 3, y - 3, x + msg->width + 2, y + msg->height + 2, 1.0f, bordercolour, 1.0f); +// // 1f0 +// gdl = textRenderWhite(gdl, &x, &y, msg->text, msg->font1, msg->font2, textcolour, viGetX(), viGetY(), 0, 0); +// } else { +// // 200 +// gdl = func0f153a34(gdl, x, y, x + msg->width, y + msg->height, 0); +// // 274 +// gdl = textRender(gdl, &x, &y, msg->text, msg->font1, msg->font2, textcolour, glowcolour, viGetX(), viGetY(), 0, 0); +// } +// if (msg->alignv == 6) { +// timerthing = 0; +// } +// break; +// case HUDMSGSTATE_FADINGOUT: // f0e0298 +// { +// u32 bordercolour; +// u32 stack; +// f32 spa8 = (sqrtf(msg->width * msg->width + msg->height * msg->height) + 92.0f) / 7.0f; +// f32 tmp; +// +// bordercolour = msg->textcolour | 0x40; +// +// if (msg->opacity != 255) { +// u32 alpha = (msg->opacity * (bordercolour & 0xff)) / 255; +// bordercolour = (bordercolour & 0xffffff00) + (alpha & 0xff); +// } +// +// tmp = (spa8 - msg->timer) * 7.0f; +// +// // 370 +// func0f153c20(x + msg->width, y + msg->height, tmp, 2); +// +// // 394 +// if (spa8 > 30.0f) { +// spa8 = 30.0f; +// } +// +// // 3bc +// spa8 = msg->timer / spa8; +// +// if (spa8 > 1.0f) { +// spa8 = 1.0f; +// } +// +// // 3d8 +// if (msg->boxed) { +// // 414 +// gdl = hudRenderMessageBox(gdl, x - 3, y - 3, x + msg->width + 2, y + msg->height + 2, 1.0f, bordercolour, 1.0f - spa8); +// // 464 +// gdl = textRenderWhite(gdl, &x, &y, msg->text, msg->font1, msg->font2, textcolour, viGetX(), viGetY(), 0, 0); +// } else { +// // 474 +// gdl = func0f153a34(gdl, x, y, x + msg->width, y + msg->height, 0); +// // 4dc +// gdl = textRender(gdl, &x, &y, msg->text, msg->font1, msg->font2, textcolour, glowcolour, viGetX(), viGetY(), 0, 0); +// } +// +// if (msg->alignv == 6) { +// timerthing = 0; +// } +// +// func0f153e4c(); +// } +// break; +// } +// +// if (msg->type == HUDMSGTYPE_11) { +// gDPSetScissor(gdl++, 0, +// viGetViewLeft(), viGetViewTop(), +// viGetViewLeft() + viGetViewX(), viGetViewTop() + viGetViewY()); +// } +// } +// +// if (timerthing) { +// if (optionsGetShowMissionTime(g_Vars.currentplayerstats->mpindex) +// && var80075d60 == 2 +// && g_Vars.normmplayerisrunning == false +// && g_Vars.stagenum != STAGE_CITRAINING +// && g_Vars.currentplayer->cameramode != CAMERAMODE_EYESPY +// && g_Vars.currentplayer->cameramode != CAMERAMODE_THIRDPERSON) { +// gdl = hudRenderMissionTimer(gdl, timerthing); +// } +// +// if (hudIsZoomRangeVisible()) { +// gdl = hudRenderZoomRange(gdl, timerthing); +// } +// +// gdl = func0f0908b8(gdl); +// } +// +// gdl = func0f153780(gdl); +// +// g_ScreenWidthMultiplier = 1; +// +// return gdl; +//} + void hudmsgsReset(void) { s32 i; diff --git a/src/include/constants.h b/src/include/constants.h index f332d09e1..2cc10b0dd 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -742,9 +742,11 @@ #define HUDMSGFLAG_4 0x4 #define HUDMSGFLAG_ALLOWDUPES 0x8 -#define HUDMSGSTATE_FREE 0 -#define HUDMSGSTATE_QUEUED 1 -#define HUDMSGSTATE_ONSCREEN 5 +#define HUDMSGSTATE_FREE 0 +#define HUDMSGSTATE_QUEUED 1 +#define HUDMSGSTATE_FADINGIN 3 +#define HUDMSGSTATE_ONSCREEN 4 +#define HUDMSGSTATE_FADINGOUT 5 #define HUDMSGTYPE_DEFAULT 0 #define HUDMSGTYPE_OBJECTIVECOMPLETE 1 @@ -753,6 +755,7 @@ #define HUDMSGTYPE_4 4 #define HUDMSGTYPE_SUBTITLE 6 #define HUDMSGTYPE_TRAINING 10 +#define HUDMSGTYPE_11 11 // chr->ivebeenhit values #define IBH_LFOOT 1 diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index c8da9b808..42c42224a 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -87,7 +87,7 @@ extern u32 var8005d880; extern u32 var8005d994; extern u8 var8005d9a0; extern u32 var8005d9cc; -extern u32 var8005d9d0; +extern s32 var8005d9d0; extern u32 var8005d9d4; extern u32 var8005dcc8; extern u32 var8005dcf0; diff --git a/src/include/game/data/data_01a3a0.h b/src/include/game/data/data_01a3a0.h index 1fcd177f7..562be979d 100644 --- a/src/include/game/data/data_01a3a0.h +++ b/src/include/game/data/data_01a3a0.h @@ -58,7 +58,7 @@ extern u32 var80075d18; extern u32 var80075d2c; extern u32 var80075d40; extern u32 var80075d54; -extern u32 var80075d60; +extern s32 var80075d60; extern u32 var80075d64; extern u32 var80075d68; diff --git a/src/include/game/game_0dcdb0.h b/src/include/game/game_0dcdb0.h index 7aaad9668..fc7a4dc46 100644 --- a/src/include/game/game_0dcdb0.h +++ b/src/include/game/game_0dcdb0.h @@ -4,10 +4,10 @@ #include "types.h" u32 func0f0dcdb0(void); -s32 func0f0dcdbc(void); -u32 func0f0dcef4(void); -u32 func0f0dd2ac(void); -u32 func0f0dd848(void); +s32 hudIsZoomRangeVisible(void); +Gfx *hudRenderMissionTimer(Gfx *gdl, s32 arg1); +Gfx *hudRenderZoomRange(Gfx *gdl, s32 arg1); +Gfx *hudRenderMessageBox(Gfx *gdl, s32 x, s32 y, s32 width, s32 height, f32 bgopacity, u32 bordercolour, f32 textopacity); s32 func0f0ddb1c(u32 *arg0, u32 arg1); void func0f0ddd44(s32 value); void hudmsgSystemInit(void); @@ -27,7 +27,7 @@ void func0f0df364(void); void currentPlayerUnsetFlag(u32 flag); void currentPlayerSetFlag(u32 flag); void hudmsgRemoveForDeadPlayer(s32 playernum); -Gfx *func0f0dfad0(Gfx *gdl); +Gfx *hudRenderMessages(Gfx *gdl); void hudmsgsReset(void); #endif diff --git a/src/include/game/game_1531a0.h b/src/include/game/game_1531a0.h index d18c48412..42fb912d3 100644 --- a/src/include/game/game_1531a0.h +++ b/src/include/game/game_1531a0.h @@ -19,7 +19,7 @@ Gfx *func0f153a34(Gfx *gdl, u32 arg1, u32 arg2, u32 arg3, u32 arg4, u32 arg5); u32 func0f153ab0(void); u32 func0f153b40(void); u32 func0f153b6c(void); -u32 func0f153c20(void); +void func0f153c20(s32 x, s32 y, f32 arg2, s32 arg3); u32 func0f153c50(void); u32 func0f153c88(void); u32 func0f153ce8(void); @@ -28,7 +28,7 @@ u32 func0f153d3c(void); u32 func0f153d50(void); u32 func0f153d88(void); u32 func0f153e38(void); -u32 func0f153e4c(void); +void func0f153e4c(void); u32 func0f153e58(void); u32 func0f153e94(void); u32 func0f1543ac(void); diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index a70219647..ca29d99ee 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -331,7 +331,7 @@ u32 func0f09044c(void); u32 func0f0904e0(void); bool func0f090520(void); void func0f09054c(void); -u32 func0f0908b8(void); +Gfx *func0f0908b8(Gfx *gdl); u32 func0f090d34(void); void alarmTick(void); u32 func0f091030(void); diff --git a/src/include/types.h b/src/include/types.h index e503e6a45..ae35aedb0 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5268,18 +5268,19 @@ struct hudmessageconfig { struct hudmessage { /*0x000*/ u8 state; - /*0x001*/ u8 unk001; + /*0x001*/ u8 boxed; /*0x002*/ u8 unk002; - /*0x003*/ u8 unk003; - /*0x004*/ u16 unk004; - /*0x006*/ u16 unk006; - /*0x008*/ u32 unk008; - /*0x00c*/ u32 unk00c; + /*0x003*/ u8 flash; + /*0x004*/ u8 opacity; + /*0x006*/ u16 timer; + /*0x008*/ u32 font1; + /*0x00c*/ u32 font2; /*0x010*/ u32 textcolour; - /*0x014*/ u32 shadowcolour; - /*0x018*/ u32 unk018; - /*0x01c*/ u16 unk01c; - /*0x01e*/ u16 unk01e; + /*0x014*/ u32 glowcolour; + /*0x018*/ u16 x; + /*0x01a*/ u16 y; + /*0x01c*/ u16 width; + /*0x01e*/ u16 height; /*0x020*/ char text[400]; /*0x1b0*/ s32 unk1b0; /*0x1b4*/ u32 type;