Attempt to decompile menuRenderItemMarquee

This commit is contained in:
Ryan Dwyer
2020-09-19 11:46:12 +10:00
parent ca5ff87d8a
commit fe7aa8371a
6 changed files with 246 additions and 107 deletions
+231 -96
View File
@@ -35,10 +35,10 @@ const char var7f1adfb8[] = "";
const char var7f1adfbc[] = "";
const char var7f1adfc0[] = "%d\n";
u32 var80071190 = 0x00000000;
u32 var80071194 = 0x00000000;
u32 var80071198 = 0x00000000;
u32 var8007119c = 0x00000000;
s32 var80071190 = 0x00000000;
s32 var80071194 = 0x00000000;
s32 var80071198 = 0x00000000;
s32 var8007119c = 0x00000000;
u32 var800711a0 = 0x00000000;
u32 var800711a4 = 0x00000000;
u32 var800711a8 = 0x0000000b;
@@ -58,96 +58,6 @@ u32 var800711dc = 0x32330000;
u32 var800711e0 = 0x573a573b;
u32 var800711e4 = 0x573c573d;
u32 var800711e8 = 0x00000000;
u32 var800711ec = 0x20000000;
u32 var800711f0 = 0x00000002;
u32 var800711f4 = 0x0000000c;
u32 var800711f8 = 0x0000000a;
u32 var800711fc = 0xffffffff;
u32 var80071200 = 0x00000003;
u32 var80071204 = 0x00000033;
u32 var80071208 = 0x0000000a;
u32 var8007120c = 0xffffffff;
u32 var80071210 = 0x00000003;
u32 var80071214 = 0x0000000c;
u32 var80071218 = 0x00000003;
u32 var8007121c = 0x0000004b;
u32 var80071220 = 0xffffffff;
u32 var80071224 = 0x00000037;
u32 var80071228 = 0x00000013;
u32 var8007122c = 0x00000040;
u32 var80071230 = 0xffffffff;
u32 var80071234 = 0x0000003f;
u32 var80071238 = 0x00000013;
u32 var8007123c = 0xffffffff;
u32 var80071240 = 0x0000000a;
u32 var80071244 = 0x0000003f;
u32 var80071248 = 0x0000000a;
u32 var8007124c = 0x0000004b;
u32 var80071250 = 0xffffffff;
u32 var80071254 = 0x00000033;
u32 var80071258 = 0x00000017;
u32 var8007125c = 0x00000037;
u32 var80071260 = 0xffffffff;
u32 var80071264 = 0x0000003b;
u32 var80071268 = 0x00000017;
u32 var8007126c = 0x00000044;
u32 var80071270 = 0xffffffff;
u32 var80071274 = 0x00000043;
u32 var80071278 = 0x00000017;
u32 var8007127c = 0xffffffff;
u32 var80071280 = 0x00000011;
u32 var80071284 = 0x00000043;
u32 var80071288 = 0x00000011;
u32 var8007128c = 0x0000004b;
u32 var80071290 = 0xffffffff;
u32 var80071294 = 0x00000037;
u32 var80071298 = 0x0000001b;
u32 var8007129c = 0x00000048;
u32 var800712a0 = 0xffffffff;
u32 var800712a4 = 0x00000047;
u32 var800712a8 = 0x0000001b;
u32 var800712ac = 0xffffffff;
u32 var800712b0 = 0x00000018;
u32 var800712b4 = 0x00000047;
u32 var800712b8 = 0x00000018;
u32 var800712bc = 0x0000004b;
u32 var800712c0 = 0xffffffff;
u32 var800712c4 = 0x00000031;
u32 var800712c8 = 0x0000001f;
u32 var800712cc = 0x0000004b;
u32 var800712d0 = 0xffffffff;
u32 var800712d4 = 0x0000002b;
u32 var800712d8 = 0x0000001c;
u32 var800712dc = 0xffffffff;
u32 var800712e0 = 0x00000026;
u32 var800712e4 = 0x0000002b;
u32 var800712e8 = 0x00000026;
u32 var800712ec = 0x0000004b;
u32 var800712f0 = 0xffffffff;
u32 var800712f4 = 0x0000001e;
u32 var800712f8 = 0x00000023;
u32 var800712fc = 0x00000025;
u32 var80071300 = 0xffffffff;
u32 var80071304 = 0x00000025;
u32 var80071308 = 0x00000023;
u32 var8007130c = 0xffffffff;
u32 var80071310 = 0x0000002d;
u32 var80071314 = 0x00000025;
u32 var80071318 = 0x0000002d;
u32 var8007131c = 0x0000004b;
u32 var80071320 = 0xffffffff;
u32 var80071324 = 0x00000022;
u32 var80071328 = 0x00000034;
u32 var8007132c = 0x0000004b;
u32 var80071330 = 0xffffffff;
u32 var80071334 = 0x0000000c;
u32 var80071338 = 0x0000001e;
u32 var8007133c = 0xffffffff;
u32 var80071340 = 0x0000003b;
u32 var80071344 = 0x0000000c;
u32 var80071348 = 0x0000003b;
u32 var8007134c = 0x0000004b;
u32 var80071350 = 0xffffffff;
GLOBAL_ASM(
glabel func0f0e5ce0
@@ -7526,7 +7436,7 @@ Gfx *menuRenderItemScrollable(Gfx *gdl, struct menurenderthing *thing)
char *streams[2];
char *inptr;
s32 inheading;
s16 *unk14 = thing->unk14;
s16 *unk14 = thing->unk14.s16;
u32 colour;
s32 x;
s32 y;
@@ -10181,6 +10091,231 @@ glabel menuRenderItemMarquee
/* f0eda30: 27bd0088 */ addiu $sp,$sp,0x88
);
u32 var800711ec = 0x20000000;
// Mismatch at 718
//Gfx *menuRenderItemMarquee(Gfx *gdl, struct menurenderthing *thing)
//{
// u16 *unk14 = thing->unk14.u16; // 84
// char *text = menuResolveParam2Text(thing->item); // 80
// s32 x; // 7c
// s32 y; // 78
// u32 colour; // 74
// s32 i = 0; // 70
// s32 textwidth; // 6c
// s32 textheight; // 68
// char string[] = {' ', '\0'}; // 64 - var800711ec
// s32 hasmore;
// u32 font2 = var8007fb0c; // 5c
// u32 font1 = var8007fb10; // 58
//
// if (thing->item->param1 & 0x00000200) {
// font2 = var8007fb04;
// font1 = var8007fb08;
// }
//
// if (!text) {
// return gdl;
// }
//
// // 5b8
// if (thing->unk10->unk40 < 0) {
// colour = g_MenuColourPalettes[thing->unk10->colour1index].unk18;
// } else {
// colour = colourBlend(
// g_MenuColourPalettes[thing->unk10->colour2index].unk18,
// g_MenuColourPalettes[thing->unk10->colour1index].unk18,
// thing->unk10->colourweight);
// }
//
// // 644
// if (thing->unk10->unk0c) {
// colour = colourBlend(colour, 0, 127) & 0xffffff00 | colour & 0xff;
// }
//
// // 674
// x = thing->x + thing->width - *unk14;
// y = thing->y + 2;
// hasmore = true;
//
// while (hasmore == true) {
// if (text[i] == '\0') {
// hasmore = false;
// } else {
// string[0] = text[i];
// textMeasure(&textheight, &textwidth, string, font1, font2, 0);
//
// if (x + textwidth > thing->x) {
// hasmore = false;
// } else {
// x += textwidth;
// hasmore = true;
// i++;
// }
// }
// }
//
// // 718
// // thing->x is loaded into a0 but should be t4. Additionally, the loads of
// // thing->x and g_ScreenWidthMultiplier are swapped.
// var80071190 = thing->x * g_ScreenWidthMultiplier;
// var80071194 = (thing->x + thing->width) * g_ScreenWidthMultiplier;
// var80071198 = thing->y;
// var8007119c = thing->y + thing->height - 1;
//
// if (var80071190 < 0) {
// var80071190 = 0;
// }
//
// if (var80071194 < 0) {
// var80071194 = 0;
// }
//
// if (var80071198 < 0) {
// var80071198 = 0;
// }
//
// if (var8007119c < 0) {
// var8007119c = 0;
// }
//
// if (var80071190 > viGetBufX()) {
// var80071190 = viGetBufX();
// }
//
// if (var80071194 > viGetBufX()) {
// var80071194 = viGetBufX();
// }
//
// if (var80071198 > viGetBufY()) {
// var80071198 = viGetBufY();
// }
//
// if (var8007119c > viGetBufY()) {
// var8007119c = viGetBufY();
// }
//
// if (var80071194 < var80071190) {
// var80071194 = var80071190;
// }
//
// if (var8007119c < var80071198) {
// var8007119c = var80071198;
// }
//
// gDPSetScissor(gdl++, G_SC_NON_INTERLACE, var80071190, var80071198, var80071194, var8007119c);
//
// func0f153d24();
//
// if (thing->item->param1 & 0x00000800) {
// func0f153ce8(thing->x, thing->x + thing->width, 0xe);
// } else {
// func0f153ce8(thing->x, thing->x, 0xe);
// }
//
// gdl = func0f153628(gdl);
// gdl = textRenderWhite(gdl, &x, &y, &text[i], font1, font2,
// colour, thing->width + thing->x - x, thing->height, 0, 0);
// gdl = func0f153780(gdl);
// gdl = func0f0f50fc(gdl);
//
// func0f153d3c();
//
// unk14[2] = thing->width;
//
// return gdl;
//}
u32 var800711f0 = 0x00000002;
u32 var800711f4 = 0x0000000c;
u32 var800711f8 = 0x0000000a;
u32 var800711fc = 0xffffffff;
u32 var80071200 = 0x00000003;
u32 var80071204 = 0x00000033;
u32 var80071208 = 0x0000000a;
u32 var8007120c = 0xffffffff;
u32 var80071210 = 0x00000003;
u32 var80071214 = 0x0000000c;
u32 var80071218 = 0x00000003;
u32 var8007121c = 0x0000004b;
u32 var80071220 = 0xffffffff;
u32 var80071224 = 0x00000037;
u32 var80071228 = 0x00000013;
u32 var8007122c = 0x00000040;
u32 var80071230 = 0xffffffff;
u32 var80071234 = 0x0000003f;
u32 var80071238 = 0x00000013;
u32 var8007123c = 0xffffffff;
u32 var80071240 = 0x0000000a;
u32 var80071244 = 0x0000003f;
u32 var80071248 = 0x0000000a;
u32 var8007124c = 0x0000004b;
u32 var80071250 = 0xffffffff;
u32 var80071254 = 0x00000033;
u32 var80071258 = 0x00000017;
u32 var8007125c = 0x00000037;
u32 var80071260 = 0xffffffff;
u32 var80071264 = 0x0000003b;
u32 var80071268 = 0x00000017;
u32 var8007126c = 0x00000044;
u32 var80071270 = 0xffffffff;
u32 var80071274 = 0x00000043;
u32 var80071278 = 0x00000017;
u32 var8007127c = 0xffffffff;
u32 var80071280 = 0x00000011;
u32 var80071284 = 0x00000043;
u32 var80071288 = 0x00000011;
u32 var8007128c = 0x0000004b;
u32 var80071290 = 0xffffffff;
u32 var80071294 = 0x00000037;
u32 var80071298 = 0x0000001b;
u32 var8007129c = 0x00000048;
u32 var800712a0 = 0xffffffff;
u32 var800712a4 = 0x00000047;
u32 var800712a8 = 0x0000001b;
u32 var800712ac = 0xffffffff;
u32 var800712b0 = 0x00000018;
u32 var800712b4 = 0x00000047;
u32 var800712b8 = 0x00000018;
u32 var800712bc = 0x0000004b;
u32 var800712c0 = 0xffffffff;
u32 var800712c4 = 0x00000031;
u32 var800712c8 = 0x0000001f;
u32 var800712cc = 0x0000004b;
u32 var800712d0 = 0xffffffff;
u32 var800712d4 = 0x0000002b;
u32 var800712d8 = 0x0000001c;
u32 var800712dc = 0xffffffff;
u32 var800712e0 = 0x00000026;
u32 var800712e4 = 0x0000002b;
u32 var800712e8 = 0x00000026;
u32 var800712ec = 0x0000004b;
u32 var800712f0 = 0xffffffff;
u32 var800712f4 = 0x0000001e;
u32 var800712f8 = 0x00000023;
u32 var800712fc = 0x00000025;
u32 var80071300 = 0xffffffff;
u32 var80071304 = 0x00000025;
u32 var80071308 = 0x00000023;
u32 var8007130c = 0xffffffff;
u32 var80071310 = 0x0000002d;
u32 var80071314 = 0x00000025;
u32 var80071318 = 0x0000002d;
u32 var8007131c = 0x0000004b;
u32 var80071320 = 0xffffffff;
u32 var80071324 = 0x00000022;
u32 var80071328 = 0x00000034;
u32 var8007132c = 0x0000004b;
u32 var80071330 = 0xffffffff;
u32 var80071334 = 0x0000000c;
u32 var80071338 = 0x0000001e;
u32 var8007133c = 0xffffffff;
u32 var80071340 = 0x0000003b;
u32 var80071344 = 0x0000000c;
u32 var80071348 = 0x0000003b;
u32 var8007134c = 0x0000004b;
u32 var80071350 = 0xffffffff;
GLOBAL_ASM(
glabel func0f0eda34
/* f0eda34: 27bdffa8 */ addiu $sp,$sp,-88
@@ -13134,7 +13269,7 @@ Gfx *menuRenderItem(Gfx *gdl, struct menurenderthing *thing)
case MENUITEMTYPE_SLIDER: return menuRenderItemSlider(gdl);
case MENUITEMTYPE_CHECKBOX: return menuRenderItemCheckbox(gdl);
case MENUITEMTYPE_SCROLLABLE: return menuRenderItemScrollable(gdl, thing);
case MENUITEMTYPE_MARQUEE: return menuRenderItemMarquee(gdl);
case MENUITEMTYPE_MARQUEE: return menuRenderItemMarquee(gdl, thing);
case MENUITEMTYPE_LABEL: return menuRenderItemLabel(gdl);
case MENUITEMTYPE_METER: return menuRenderItemMeter(gdl, thing);
case MENUITEMTYPE_SEPARATOR: return menuRenderItemSeparator(gdl, thing);
+4 -4
View File
@@ -139,10 +139,10 @@ extern struct hudmessageconfig g_HudMessageConfigs[];
extern u32 var80071170;
extern u32 var80071180;
extern u32 var80071184;
extern u32 var80071190;
extern u32 var80071194;
extern u32 var80071198;
extern u32 var8007119c;
extern s32 var80071190;
extern s32 var80071194;
extern s32 var80071198;
extern s32 var8007119c;
extern u32 var800711a0;
extern u32 var800711a4;
extern u32 var800711ac;
+1 -1
View File
@@ -36,7 +36,7 @@ char *menuItemScrollableGetText(u32 type);
Gfx *menuRenderItemScrollable(Gfx *gdl, struct menurenderthing *thing);
u32 func0f0ed264(void);
void func0f0ed514(u16 *arg0);
Gfx *menuRenderItemMarquee(Gfx *gdl);
Gfx *menuRenderItemMarquee(Gfx *gdl, struct menurenderthing *thing);
u32 func0f0eda34(void);
void func0f0edb50(u16 *arg0);
Gfx *menuRenderItem07(Gfx *gdl);
+1 -1
View File
@@ -47,7 +47,7 @@ void func0f0f372c(u8 *arg0, f32 x, f32 y, f32 arg3, f32 arg4, f32 arg5, f32 arg6
void func0f0f37a4(u8 *arg0);
u32 func0f0f38b0(void);
u32 func0f0f5004(void);
u32 func0f0f50fc(void);
Gfx *func0f0f50fc(Gfx *gdl);
u32 func0f0f5360(void);
u32 func0f0f74a8(void);
u32 func0f0f7594(void);
+4 -4
View File
@@ -22,9 +22,9 @@ u32 func0f153b6c(void);
void func0f153c20(s32 x, s32 y, f32 arg2, s32 arg3);
u32 func0f153c50(void);
u32 func0f153c88(void);
u32 func0f153ce8(void);
u32 func0f153d24(void);
u32 func0f153d3c(void);
void func0f153ce8(s32 x1, s32 x2, u32 arg2);
void func0f153d24(void);
void func0f153d3c(void);
u32 func0f153d50(void);
u32 func0f153d88(void);
void func0f153e38(u32 colour1, u32 colour2);
@@ -43,7 +43,7 @@ u32 func0f1566cc(void);
u32 func0f156790(void);
u32 func0f156a24(void);
Gfx *textRender(Gfx *gdl, s32 *x, s32 *y, char *text, u32 arg4, u32 arg5, s32 arg6, u32 colour, s16 arg8, s16 arg9, u32 arg10, u32 arg11);
void textMeasure(s32 *textheight, s32 *textwidth, char *text, u32 arg3, u32 arg4, u32 arg5);
void textMeasure(s32 *textheight, s32 *textwidth, char *text, u32 font1, u32 font2, u32 arg5);
void textWrap(s32 width, char *in, char *out, u32 font1, u32 font2);
u32 func0f1577f0(void);
u32 func0f1578c8(void);
+5 -1
View File
@@ -6809,7 +6809,11 @@ struct menurenderthing {
struct menuitem *item;
bool focused;
struct menurenderthing10 *unk10;
s16 *unk14;
union {
s16 *s16;
u16 *u16;
} unk14;
};
struct menucolourpalette {