diff --git a/docs/piracychecks.md b/docs/piracychecks.md index 935561880..3f10cb0b4 100644 --- a/docs/piracychecks.md +++ b/docs/piracychecks.md @@ -132,9 +132,9 @@ The decomp project wraps all decompiled piracy checks in `#if PIRACYCHECKS` stat --- -### func0f0069dc +### menuTickTimers -**When Called:** Unknown. +**When Called:** On every frame except credits. **What It Checks:** Checksums `func00015fd0` to make sure it hasn't been modified. @@ -144,7 +144,7 @@ The decomp project wraps all decompiled piracy checks in `#if PIRACYCHECKS` stat **When Called:** Unknown. -**What It Checks:** Checksums `func0f0069dc` to make sure it hasn't been modified. +**What It Checks:** Checksums `menuTickTimers` to make sure it hasn't been modified. **Payload:** Corrupts `bgBuildTables` by adding a fixed amount to 16 bytes within that function. diff --git a/src/game/activemenu.c b/src/game/activemenu.c index 791113e79..d94e5ffee 100644 --- a/src/game/activemenu.c +++ b/src/game/activemenu.c @@ -179,7 +179,7 @@ s32 amPickTargetMenuList(s32 operation, struct menuitem *item, union handlerdata colour = teamcolours[g_MpAllChrConfigPtrs[chrindex]->team] | renderdata->colour & 0xff; if (renderdata->unk10) { - u32 weight = func0f006b08(40) * 255; + u32 weight = menuGetSinOscFrac(40) * 255; colour = colourBlend(renderdata->colour | 0xffffff00, colourBlend(colour, colour & 0xff, 0x7f), weight); } @@ -1240,7 +1240,7 @@ Gfx *amRenderSlot(Gfx *gdl, char *text, s16 x, s16 y, s32 mode, s32 flags) } if (flags & AMSLOTFLAG_ACTIVE) { - colour = colourBlend(0xffaf8fff, colour, func0f006b54(10) * 255.0f); + colour = colourBlend(0xffaf8fff, colour, menuGetCosOscFrac(10) * 255.0f); } colour = (u32)(g_AmMenus[g_AmIndex].alphafrac * (colour & 0xff)) | (colour & 0xffffff00); diff --git a/src/game/bg.c b/src/game/bg.c index e2ce90b07..f7d7049fe 100644 --- a/src/game/bg.c +++ b/src/game/bg.c @@ -3763,8 +3763,8 @@ void func0f15c920(void) #if PIRACYCHECKS if ((var8007fc3c & 0xff) == 0xff) { u32 checksum = 0; - s32 *ptr = (s32 *)&func0f0069dc; - s32 *end = (s32 *)&func0f006b08; + s32 *ptr = (s32 *)&menuTickTimers; + s32 *end = (s32 *)&menuGetSinOscFrac; while (ptr < end) { checksum ^= ~*ptr; diff --git a/src/game/bondgun.c b/src/game/bondgun.c index 6a0d0f556..a841d190d 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -12103,7 +12103,7 @@ void bgunTickMaulerCharge(void) } if (hand->audiohandle) { - f32 speed = 0.5f + hand->matmot1 / 3.0f + sinf(var80061630 * M_PI * 32.0f) * 0.03f; + f32 speed = 0.5f + hand->matmot1 / 3.0f + sinf(g_20SecIntervalFrac * M_PI * 32.0f) * 0.03f; if (hand->matmot1 < 0.1f || !charging) { audioStop(hand->audiohandle); @@ -16812,7 +16812,7 @@ Gfx *bgunDrawHud(Gfx *gdl) gDPFillRectangleScaled(gdl++, x - 1, y - 1, xpos - 11, bottom); gdl = text0f153838(gdl); - textSetWaveBlend(var80061630 * 50.0f, 0, 50); + textSetWaveBlend(g_20SecIntervalFrac * 50.0f, 0, 50); textSetWaveColours(0xffffffff, 0xffffffff); gdl = textRenderProjected(gdl, &x, &y, str, g_CharsHandelGothicXs, g_FontHandelGothicXs, colour, textwidth, 1000, 0, 0); textResetBlends(); @@ -16880,7 +16880,7 @@ Gfx *bgunDrawHud(Gfx *gdl) gdl = text0f153838(gdl); - textSetWaveBlend(var80061630 * 50.0f, 0, 50); + textSetWaveBlend(g_20SecIntervalFrac * 50.0f, 0, 50); textSetWaveColours(0xffffffff, 0xffffffff); gdl = textRenderProjected(gdl, &x, &y, str, diff --git a/src/game/bondview.c b/src/game/bondview.c index 298dedf15..5120e92d9 100644 --- a/src/game/bondview.c +++ b/src/game/bondview.c @@ -328,7 +328,7 @@ Gfx *bviewDrawSlayerRocketInterlace(Gfx *gdl, u32 colour, u32 alpha) s32 y; s32 viewleft = viGetViewLeft(); f32 angle = 0.52359879016876f; - s32 offset = (s32)(var80061630 * 600.0f) % 12; + s32 offset = (s32)(g_20SecIntervalFrac * 600.0f) % 12; f32 increment; var8007f840++; @@ -375,7 +375,7 @@ Gfx *bviewDrawFilmInterlace(Gfx *gdl, u32 colour, u32 alpha) s32 y; s32 viewwidth = viGetViewWidth(); s32 viewleft = viGetViewLeft(); - s32 offset = (s32)(var80061630 * 600.0f) % 12; + s32 offset = (s32)(g_20SecIntervalFrac * 600.0f) % 12; u32 stack; var8007f840++; @@ -18003,7 +18003,7 @@ Gfx *bviewDrawHorizonScanner(Gfx *gdl) tmplensheight = viewheight - 30; } - if (((s32)(var80061630 * 30.0f) & 1) == 1) { + if (((s32)(g_20SecIntervalFrac * 30.0f) & 1) == 1) { sprintf(arrows, ">> "); } else { sprintf(arrows, " >>"); @@ -18022,7 +18022,7 @@ Gfx *bviewDrawHorizonScanner(Gfx *gdl) // Prepare text buffers sprintf(directiontext, "%s %s:%03d", arrows, &directions[(turnangle + 22) / 45], turnangle); - sprintf(hertztext, "%s %s%s%4.2fh", arrows, "", "", func0f006b54(4) * 4.6f + 917.4f); + sprintf(hertztext, "%s %s%s%4.2fh", arrows, "", "", menuGetCosOscFrac(4) * 4.6f + 917.4f); fovy = viGetFovY(); @@ -18406,7 +18406,7 @@ glabel var7f1b04c8nb /* f14296c: afa30010 */ sw $v1,0x10($sp) /* f142970: 3c014080 */ lui $at,0x4080 /* f142974: 44816000 */ mtc1 $at,$f12 -/* f142978: 0fc019fe */ jal func0f006b54 +/* f142978: 0fc019fe */ jal menuGetCosOscFrac /* f14297c: 00000000 */ sll $zero,$zero,0x0 /* f142980: 3c017f1b */ lui $at,0x7f1b /* f142984: c42a04c4 */ lwc1 $f10,0x4c4($at) diff --git a/src/game/dyntex.c b/src/game/dyntex.c index 44ce0e025..e02cc0b01 100644 --- a/src/game/dyntex.c +++ b/src/game/dyntex.c @@ -75,7 +75,7 @@ s32 g_DyntexVerticesCount = 0; void dyntexUpdateLinear(struct gfxvtx *vertices, struct dyntextype *type) { - s16 tmp = (s32) (var80061634 * 10.0f * 4096.0f) % 4096; + s16 tmp = (s32) (g_Lv80SecIntervalFrac * 10.0f * 4096.0f) % 4096; s32 i; for (i = 0; i < type->numvertices; i++) { @@ -100,7 +100,7 @@ void dyntexUpdateReset(struct gfxvtx *vertices, struct dyntextype *type) void dyntexUpdateMonitor(struct gfxvtx *vertices, struct dyntextype *type) { - s16 tmp = (s32) (var80061634 * 4.0f * 4096.0f) % 4096; + s16 tmp = (s32) (g_Lv80SecIntervalFrac * 4.0f * 4096.0f) % 4096; s32 i; for (i = 0; i < type->numvertices; i++) { @@ -113,7 +113,7 @@ void dyntexUpdateMonitor(struct gfxvtx *vertices, struct dyntextype *type) void dyntexUpdateOcean(struct gfxvtx *vertices, struct dyntextype *type) { - f32 f24 = var80061634 * 5.0f; + f32 f24 = g_Lv80SecIntervalFrac * 5.0f; f32 angle; s32 i; @@ -136,7 +136,7 @@ void dyntexUpdateOcean(struct gfxvtx *vertices, struct dyntextype *type) void dyntexUpdateArrows(struct gfxvtx *vertices, struct dyntextype *type) { - s32 tmp = ((s32) ((1.0f - var80061634) * 60.0f * 8.0f) % 8) * 256; + s32 tmp = ((s32) ((1.0f - g_Lv80SecIntervalFrac) * 60.0f * 8.0f) % 8) * 256; s32 i; for (i = 0; i < type->numvertices; i++) { diff --git a/src/game/endscreen.c b/src/game/endscreen.c index 7be31abd4..193644e73 100644 --- a/src/game/endscreen.c +++ b/src/game/endscreen.c @@ -1000,7 +1000,7 @@ s32 endscreenHandleCheatInfo(s32 operation, struct menuitem *item, union handler if (operation == MENUOP_GETCOLOUR && ((g_Menus[g_MpPlayerNum].endscreen.cheatinfo & 0x200) || item->param == 5)) { // Timed cheat just got unlocked, and this item is the timed cheat name - u32 weight = func0f006b08(40) * 255; + u32 weight = menuGetSinOscFrac(40) * 255; mainOverrideVariable("ctcol", &cheatcolour); diff --git a/src/game/game_006900.c b/src/game/game_006900.c index e26bd5e0f..140c13518 100644 --- a/src/game/game_006900.c +++ b/src/game/game_006900.c @@ -10,8 +10,19 @@ #include "data.h" #include "types.h" -f32 var80061630 = 0; -f32 var80061634 = 0; +/** + * Increments from 0 to 1 over 20 seconds then snaps back to 0. + * + * The value is commonly used for menus, so it increments while paused. + */ +f32 g_20SecIntervalFrac = 0; + +/** + * Increments from 0 to 1 over 80 seconds then snaps back to 0. + * + * The value is paused when the game is paused. + */ +f32 g_Lv80SecIntervalFrac = 0; /** * Blends two colours together. @@ -29,22 +40,22 @@ u32 colourBlend(u32 a, u32 b, u32 aweight) | ((aweight * (a & 0xff) + bweight * (b & 0xff)) >> 8); } -void func0f0069dc(void) +void menuTickTimers(void) { #if VERSION >= VERSION_PAL_BETA - var80061630 = var80061630 + g_Vars.diffframe240freal / 4800.0f; + g_20SecIntervalFrac = g_20SecIntervalFrac + g_Vars.diffframe240freal / 4800.0f; #else - var80061630 = var80061630 + g_Vars.diffframe240f / 4800.0f; + g_20SecIntervalFrac = g_20SecIntervalFrac + g_Vars.diffframe240f / 4800.0f; #endif - if (var80061630 > 1.0f) { - var80061630 -= 1.0f; + if (g_20SecIntervalFrac > 1.0f) { + g_20SecIntervalFrac -= 1.0f; } - var80061634 = var80061634 + LVUPDATE240FREAL() / 4800.0f; + g_Lv80SecIntervalFrac = g_Lv80SecIntervalFrac + LVUPDATE240FREAL() / 4800.0f; - if (var80061634 > 1.0f) { - var80061634 -= 1.0f; + if (g_Lv80SecIntervalFrac > 1.0f) { + g_Lv80SecIntervalFrac -= 1.0f; } #if PIRACYCHECKS @@ -73,29 +84,62 @@ void func0f0069dc(void) #endif } -f32 func0f006b08(f32 arg0) +/** + * Return a float that represents a frac on a sine wave, based on a global timer. + * + * A full oscillation goes from 0.5 -> 1 -> 0 -> 0.5. + * + * freq is the amount of oscillations per 20 seconds. + */ +f32 menuGetSinOscFrac(f32 freq) { - return sinf((arg0 * var80061630 + arg0 * var80061630) * M_PI) * 0.5f + .5f; + return sinf((freq * g_20SecIntervalFrac + freq * g_20SecIntervalFrac) * M_PI) / 2.0f + 0.5f; } -f32 func0f006b54(f32 arg0) +/** + * Return a float that represents a frac on a cosine wave, based on a global timer. + * + * A full oscillation goes from 1 -> 0 -> 1. + * + * freq is the amount of oscillations per 20 seconds. + */ +f32 menuGetCosOscFrac(f32 freq) { - return cosf((arg0 * var80061630 + arg0 * var80061630) * M_PI) * 0.5f + .5f; + return cosf((freq * g_20SecIntervalFrac + freq * g_20SecIntervalFrac) * M_PI) / 2.0f + 0.5f; } -f32 func0f006ba0(f32 arg0) +/** + * Return a float that represents a linear frac, based on a global timer. + * + * A full interval goes from 0 to 1 at a constant speed, + * then snaps back to 0 for the next interval. + * + * freq is the amount of intervals per 20 seconds. + */ +f32 menuGetLinearIntervalFrac(f32 freq) { - f32 tmp = var80061630 * arg0; + f32 tmp = g_20SecIntervalFrac * freq; tmp -= (s32)tmp; return tmp; } -f32 func0f006bd0(f32 arg0) +/** + * Return a float that oscillates between 0 and 1, with a pause at each end. + * + * frac 0.00 to 0.25 -> result will be a scale from 0 to 1 + * frac 0.25 to 0.50 -> result will be 1 + * frac 0.50 to 0.75 -> result will be a scale from 1 to 0 + * frac 0.75 to 1.00 -> result will be 0 + * + * It's used on the Combat Simulator's character selection menu + * to determine the camera's zoom. + */ +f32 menuGetLinearOscPauseFrac(f32 frac) { - s32 ival = arg0 * 4.0f; - f32 fval = arg0 * 4.0f - (f32)(ival / 4) * 4.0f; + s32 ival = frac * 4.0f; + f32 fval = frac * 4.0f - (f32)(ival / 4) * 4.0f; if (fval < 1.0f) { return fval; diff --git a/src/game/game_1531a0.c b/src/game/game_1531a0.c index acb6888b4..ebc76d2a6 100644 --- a/src/game/game_1531a0.c +++ b/src/game/game_1531a0.c @@ -2444,7 +2444,7 @@ Gfx *textRenderProjected(Gfx *gdl, s32 *x, s32 *y, char *text, struct fontchar * if (var8007fbd8) { #if VERSION >= VERSION_JPN_FINAL - func0f006b08(40); + menuGetSinOscFrac(40); newx = *x / g_ScaleX; newy = *y; tmpcolour = var800a463c; @@ -2492,7 +2492,7 @@ Gfx *textRenderProjected(Gfx *gdl, s32 *x, s32 *y, char *text, struct fontchar * g_Blend.types = savedtypes; g_Blend.diagmode = savedmode; #else - alpha = (1.0f - func0f006b08(40.0f)) * 100.0f + 150.0f; + alpha = (1.0f - menuGetSinOscFrac(40.0f)) * 100.0f + 150.0f; newx = *x / g_ScaleX; newy = *y; tmpcolour = var800a463c; diff --git a/src/game/mainmenu.c b/src/game/mainmenu.c index 137f4dd51..a1d829c6c 100644 --- a/src/game/mainmenu.c +++ b/src/game/mainmenu.c @@ -3824,8 +3824,8 @@ s32 inventoryMenuDialog(s32 operation, struct menudialogdef *dialogdef, union ha if (operation == MENUOP_TICK) { if (g_Menus[g_MpPlayerNum].curdialog && g_Menus[g_MpPlayerNum].curdialog->definition == dialogdef) { g_Menus[g_MpPlayerNum].unk840.unk574 -= g_Vars.diffframe60; - g_Menus[g_MpPlayerNum].unk840.unk54c = 18.849555969238f * var80061630; - g_Menus[g_MpPlayerNum].unk840.unk524 = 18.849555969238f * var80061630; + g_Menus[g_MpPlayerNum].unk840.unk54c = 18.849555969238f * g_20SecIntervalFrac; + g_Menus[g_MpPlayerNum].unk840.unk524 = 18.849555969238f * g_20SecIntervalFrac; g_Menus[g_MpPlayerNum].unk840.unk528 = 0; g_Menus[g_MpPlayerNum].unk840.unk550 = 0; diff --git a/src/game/menu.c b/src/game/menu.c index 0927b0643..2e7edb71d 100644 --- a/src/game/menu.c +++ b/src/game/menu.c @@ -1904,7 +1904,7 @@ Gfx *menuRenderModels(Gfx *gdl, struct menu840 *thing, s32 arg2) if (node) { struct modelrodata_position *rodata = &node->rodata->position; - f32 f0 = func0f006bd0(thing->unk574 / TICKS(480.0f)); + f32 f0 = menuGetLinearOscPauseFrac(thing->unk574 / TICKS(480.0f)); sp2fc.f[0] = 0.0f; sp2fc.f[1] = 0.0f - (rodata->pos.f[1] / 7.6f * (1.0f - f0 * f0)); @@ -2283,7 +2283,7 @@ Gfx *menuRenderModels(Gfx *gdl, struct menu840 *thing, s32 arg2) Mtxf spe0; sp160 = model0001a524(node, 0); mtx4LoadIdentity(&sp120); - mtx4LoadXRotation(func0f006b54(4), &sp120); + mtx4LoadXRotation(menuGetCosOscFrac(4), &sp120); mtx4MultMtx4((Mtxf *)((u32)sp3b4 + sp160 * sizeof(Mtxf)), &sp120, &spe0); mtx4Copy(&spe0, (Mtxf *)((u32)sp3b4 + sp160 * sizeof(Mtxf))); } @@ -2787,7 +2787,7 @@ glabel var7f1b2948 /* f0f0978: 448d4000 */ mtc1 $t5,$f8 /* f0f097c: 8c500004 */ lw $s0,0x4($v0) /* f0f0980: 468042a0 */ cvt.s.w $f10,$f8 -/* f0f0984: 0fc01a1d */ jal func0f006bd0 +/* f0f0984: 0fc01a1d */ jal menuGetLinearOscPauseFrac /* f0f0988: 46045303 */ div.s $f12,$f10,$f4 /* f0f098c: 44806000 */ mtc1 $zero,$f12 /* f0f0990: 3c013f80 */ lui $at,0x3f80 @@ -3732,7 +3732,7 @@ glabel var7f1b2948 /* f0f175c: 27a40124 */ addiu $a0,$sp,0x124 /* f0f1760: 3c014080 */ lui $at,0x4080 /* f0f1764: 44816000 */ mtc1 $at,$f12 -/* f0f1768: 0fc019fe */ jal func0f006b54 +/* f0f1768: 0fc019fe */ jal menuGetCosOscFrac /* f0f176c: 00000000 */ sll $zero,$zero,0x0 /* f0f1770: 46000306 */ mov.s $f12,$f0 /* f0f1774: 0c005c9e */ jal mtx4LoadXRotation @@ -4631,13 +4631,13 @@ Gfx *dialogRender(Gfx *gdl, struct menudialog *dialog, struct menu *menu, bool l // Draw chevrons u32 colour1; u32 colour; - u32 weight = func0f006b08(10) * 255.0f; + u32 weight = menuGetSinOscFrac(10) * 255.0f; colour1 = MIXCOLOUR(dialog, unk00); colour = colourBlend(0xffffffff, colour1, weight); - gdl = menugfxDrawDialogChevron(gdl, dialogleft - 5, (dialogtop + dialogbottom) / 2, 9, 1, colour, colour, func0f006b08(20)); - gdl = menugfxDrawDialogChevron(gdl, dialogright + 5, (dialogtop + dialogbottom) / 2, 9, 3, colour, colour, func0f006b08(20)); + gdl = menugfxDrawDialogChevron(gdl, dialogleft - 5, (dialogtop + dialogbottom) / 2, 9, 1, colour, colour, menuGetSinOscFrac(20)); + gdl = menugfxDrawDialogChevron(gdl, dialogright + 5, (dialogtop + dialogbottom) / 2, 9, 3, colour, colour, menuGetSinOscFrac(20)); if (g_MenuData.root == MENUROOT_MAINMENU || g_MenuData.root == MENUROOT_4MBFILEMGR @@ -7965,7 +7965,7 @@ glabel var7f1b381cjf /* f0fd19c: 18400092 */ blez $v0,.JF0f0fd3e8 /* f0fd1a0: 3c0141a0 */ lui $at,0x41a0 /* f0fd1a4: 44816000 */ mtc1 $at,$f12 -/* f0fd1a8: 0fc01ae2 */ jal func0f006b08 +/* f0fd1a8: 0fc01ae2 */ jal menuGetSinOscFrac /* f0fd1ac: 00000000 */ nop /* f0fd1b0: 3c01437f */ lui $at,0x437f /* f0fd1b4: 44813000 */ mtc1 $at,$f6 @@ -8586,7 +8586,7 @@ Gfx *menuRender(Gfx *gdl) } if (g_MenuData.playerjoinalpha[i] > 0) { - u32 weight = func0f006b08(20) * 255.0f; + u32 weight = menuGetSinOscFrac(20) * 255.0f; // "Player %d: " sprintf(text, langGet(L_MPMENU_482), i + 1); diff --git a/src/game/menugfx.c b/src/game/menugfx.c index b38e32125..346e04db9 100644 --- a/src/game/menugfx.c +++ b/src/game/menugfx.c @@ -859,8 +859,8 @@ Gfx *menugfxRenderBgGreenHaze(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2) for (i = 0; i < 2; i++) { s16 tmp = i * 256; - f0 = var80061630; - f26 = M_BADTAU * var80061630; + f0 = g_20SecIntervalFrac; + f26 = M_BADTAU * g_20SecIntervalFrac; if (i == 1) { f26 = -f26; @@ -893,14 +893,14 @@ Gfx *menugfxRenderBgGreenHaze(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2) s0 = cosf(f26) * f22; t5 = -sinf(f26) * f24; - vertices[i * 4 + 0].s = tmp - s2 - (s0); - vertices[i * 4 + 0].t = tmp - s3 - (t5); - vertices[i * 4 + 1].s = tmp + s2 - (s0); - vertices[i * 4 + 1].t = tmp + s3 - (t5); - vertices[i * 4 + 2].s = tmp + s2 + (s0); - vertices[i * 4 + 2].t = tmp + s3 + (t5); - vertices[i * 4 + 3].s = tmp - s2 + (s0); - vertices[i * 4 + 3].t = tmp - s3 + (t5); + vertices[i * 4 + 0].s = tmp - s2 - s0; + vertices[i * 4 + 0].t = tmp - s3 - t5; + vertices[i * 4 + 1].s = tmp + s2 - s0; + vertices[i * 4 + 1].t = tmp + s3 - t5; + vertices[i * 4 + 2].s = tmp + s2 + s0; + vertices[i * 4 + 2].t = tmp + s3 + t5; + vertices[i * 4 + 3].s = tmp - s2 + s0; + vertices[i * 4 + 3].t = tmp - s3 + t5; } vertices[0].colour = 0; @@ -920,7 +920,7 @@ Gfx *menugfxRenderBgGreenHaze(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2) gDPSetColorArray(gdl++, osVirtualToPhysical(colours), 4); gDPSetVerticeArray(gdl++, osVirtualToPhysical(vertices), 8); - if (var80061630 > 0.5f) { + if (g_20SecIntervalFrac > 0.5f) { gDPTri4(gdl++, 4, 5, 6, 6, 7, 4, 0, 1, 2, 2, 3, 0); } else { gDPTri4(gdl++, 0, 1, 2, 2, 3, 0, 4, 5, 6, 6, 7, 4); @@ -1870,9 +1870,9 @@ Gfx *menugfxDrawShimmer(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour, bo minalpha = 0; if (reverse) { - v0 = 6.0f * var80061630 * 600.0f; + v0 = 6.0f * g_20SecIntervalFrac * 600.0f; } else { - v0 = (1.0f - var80061630) * 6.0f * 600.0f; + v0 = (1.0f - g_20SecIntervalFrac) * 6.0f * 600.0f; } if (y2 - y1 < x2 - x1) { @@ -2191,7 +2191,7 @@ Gfx *menugfxRenderBgFailure(Gfx *gdl) u32 alpha1; u32 alpha2; - spb4 = M_TAU * var80061630; + spb4 = M_TAU * g_20SecIntervalFrac; var8009de98 = var8009de9c = 0; @@ -2245,8 +2245,8 @@ Gfx *menugfxRenderBgFailure(Gfx *gdl) s0 += 120; s7 += 120; - alpha1 = func0f006b54(4) * 127.0f; - alpha2 = func0f006b54(4) * 55.0f; + alpha1 = menuGetCosOscFrac(4) * 127.0f; + alpha2 = menuGetCosOscFrac(4) * 55.0f; gdl = menugfxDrawPlane(gdl, s6, s3, s2, s0, 0xffff0000 | alpha2, 0xffff0000 | alpha1, MENUPLANE_02); gdl = menugfxDrawPlane(gdl, s2, s0, s1, s7, 0xffff0000 | alpha1, 0xffff0000 | alpha2, MENUPLANE_03); @@ -2270,8 +2270,8 @@ Gfx *menugfxRenderBgFailure(Gfx *gdl) s0 += 120; s7 += 120; - alpha1 = (1.0f - func0f006b54(4)) * 99.0f; - alpha2 = (1.0f - func0f006b54(4)) * 33.0f; + alpha1 = (1.0f - menuGetCosOscFrac(4)) * 99.0f; + alpha2 = (1.0f - menuGetCosOscFrac(4)) * 33.0f; gdl = menugfxDrawPlane(gdl, s6, s3, s2, s0, 0xffffff00 | alpha2, 0xffffff00 | alpha1, MENUPLANE_02); gdl = menugfxDrawPlane(gdl, s2, s0, s1, s7, 0xffffff00 | alpha1, 0xffffff00 | alpha2, MENUPLANE_03); @@ -2301,8 +2301,8 @@ Gfx *menugfxRenderBgCone(Gfx *gdl) u32 colour; // Cone 1 - baseangle = M_TAU * var80061630 * 2.0f; - colourupper = (u32) (func0f006b08(1.0f) * 255.0f) << 16; + baseangle = M_TAU * g_20SecIntervalFrac * 2.0f; + colourupper = (u32) (menuGetSinOscFrac(1.0f) * 255.0f) << 16; gdl = func0f0d4a3c(gdl, 0); @@ -2330,9 +2330,9 @@ Gfx *menugfxRenderBgCone(Gfx *gdl) } // Cone 2 - colourupper = (u32) (255.0f - func0f006b54(1.0f) * 255.0f) << 16; + colourupper = (u32) (255.0f - menuGetCosOscFrac(1.0f) * 255.0f) << 16; - baseangle = M_TAU * var80061630; + baseangle = M_TAU * g_20SecIntervalFrac; if (1); @@ -2424,7 +2424,7 @@ Gfx *menugfxRenderBgFailureCopy(Gfx *gdl) u32 alpha1; u32 alpha2; - spb4 = M_TAU * var80061630; + spb4 = M_TAU * g_20SecIntervalFrac; var8009de98 = var8009de9c = 0; @@ -2478,8 +2478,8 @@ Gfx *menugfxRenderBgFailureCopy(Gfx *gdl) s0 += 120; s7 += 120; - alpha1 = func0f006b54(4) * 127.0f; - alpha2 = func0f006b54(4) * 55.0f; + alpha1 = menuGetCosOscFrac(4) * 127.0f; + alpha2 = menuGetCosOscFrac(4) * 55.0f; gdl = menugfxDrawPlane(gdl, s6, s3, s2, s0, 0xffff0000 | alpha2, 0xffff0000 | alpha1, MENUPLANE_02); gdl = menugfxDrawPlane(gdl, s2, s0, s1, s7, 0xffff0000 | alpha1, 0xffff0000 | alpha2, MENUPLANE_03); @@ -2503,8 +2503,8 @@ Gfx *menugfxRenderBgFailureCopy(Gfx *gdl) s0 += 120; s7 += 120; - alpha1 = (1.0f - func0f006b54(4)) * 99.0f; - alpha2 = (1.0f - func0f006b54(4)) * 33.0f; + alpha1 = (1.0f - menuGetCosOscFrac(4)) * 99.0f; + alpha2 = (1.0f - menuGetCosOscFrac(4)) * 33.0f; gdl = menugfxDrawPlane(gdl, s6, s3, s2, s0, 0xffffff00 | alpha2, 0xffffff00 | alpha1, MENUPLANE_02); gdl = menugfxDrawPlane(gdl, s2, s0, s1, s7, 0xffffff00 | alpha1, 0xffffff00 | alpha2, MENUPLANE_03); @@ -2598,7 +2598,7 @@ Gfx *menugfxRenderBgSuccess(Gfx *gdl) } } - f0 = func0f006ba0(10.0f); + f0 = menuGetLinearIntervalFrac(10.0f); // Draw the two haze layers var8009de98 = 0; diff --git a/src/game/menuitem.c b/src/game/menuitem.c index 133d912da..c38fa9820 100644 --- a/src/game/menuitem.c +++ b/src/game/menuitem.c @@ -453,7 +453,7 @@ Gfx *menuitemListRender(Gfx *gdl, struct menurendercontext *context) if (optionindex == itemdata->unk02 && context->focused) { u32 spb0; - u32 weight = func0f006b08(40.0f) * 255.0f; + u32 weight = menuGetSinOscFrac(40.0f) * 255.0f; spb0 = MIXCOLOUR(context->dialog, focused); colour = colourBlend(colour, colour & 0xff, 127); @@ -853,14 +853,14 @@ Gfx *menuitemDropdownRender(Gfx *gdl, struct menurendercontext *context) if (context->focused != 0) { if ((context->focused & 2) != 0) { u32 tmpcolour; - u32 weight = func0f006b08(20) * 255.0f; \ + u32 weight = menuGetSinOscFrac(20) * 255.0f; \ tmpcolour = MIXCOLOUR(context->dialog, focused); colour = colourBlend(colour, colour & 0xff, 0x7f); colour = colourBlend(colour, tmpcolour, weight); } else { u32 tmpcolour; - u32 weight = func0f006b08(40) * 255.0f; \ + u32 weight = menuGetSinOscFrac(40) * 255.0f; \ tmpcolour = MIXCOLOUR(context->dialog, focused); colour = colourBlend(colour, colour & 0xff, 0x7f); @@ -1137,7 +1137,7 @@ Gfx *menuitemKeyboardRender(Gfx *gdl, struct menurendercontext *context) gdl = text0f153780(gdl); // Render cursor - alpha = func0f006b08(40) * 255; + alpha = menuGetSinOscFrac(40) * 255; if (context->dialog->transitionfrac < 0) { cursorcolour = g_MenuColourPalettes[context->dialog->type].focused; @@ -1201,7 +1201,7 @@ Gfx *menuitemKeyboardRender(Gfx *gdl, struct menurendercontext *context) // If this button is the focused one, set highlighted colour if (col == data->col && row == data->row) { - alpha = func0f006b08(40) * 255; + alpha = menuGetSinOscFrac(40) * 255; if (context->dialog->transitionfrac < 0) { tmpcolour = g_MenuColourPalettes[context->dialog->type].focused; @@ -2767,7 +2767,7 @@ Gfx *menuitemSelectableRender(Gfx *gdl, struct menurendercontext *context) // use in the else branch. The lui is loading a value into $at for the // float to u32 conversion for weight. u32 colour2; - u32 weight = func0f006b08(40) * 255; \ + u32 weight = menuGetSinOscFrac(40) * 255; \ if (context->dialog->transitionfrac < 0) { \ colour2 = g_MenuColourPalettes[context->dialog->type].focused; \ } else { \ @@ -2917,7 +2917,7 @@ Gfx *menuitemSliderRender(Gfx *gdl, struct menurendercontext *context) if (context->focused) { if (context->focused & 2) { u32 tmpcolour; - u32 weight = func0f006b08(40) * 255.0f; + u32 weight = menuGetSinOscFrac(40) * 255.0f; tmpcolour = MIXCOLOUR(context->dialog, focused); @@ -2941,14 +2941,14 @@ Gfx *menuitemSliderRender(Gfx *gdl, struct menurendercontext *context) if (context->focused != 0) { if (context->focused & 2) { u32 tmpcolour; - u32 weight = func0f006b08(20) * 255.0f; + u32 weight = menuGetSinOscFrac(20) * 255.0f; tmpcolour = MIXCOLOUR(context->dialog, focused); colour = colourBlend(colour, colour & 0xff, 0x7f); colour = colourBlend(colour, tmpcolour, weight); } else { u32 tmpcolour; - u32 weight = func0f006b08(40) * 255.0f; + u32 weight = menuGetSinOscFrac(40) * 255.0f; tmpcolour = MIXCOLOUR(context->dialog, focused); colour = colourBlend(colour, colour & 0xff, 0x7f); @@ -3117,7 +3117,7 @@ Gfx *menuitemCarouselRender(Gfx *gdl, struct menurendercontext *context) if (context->focused) { u32 colour1; - u32 weight = func0f006b08(40) * 255; + u32 weight = menuGetSinOscFrac(40) * 255; if (context->dialog->transitionfrac < 0) { colour1 = g_MenuColourPalettes[context->dialog->type].focused; @@ -3284,7 +3284,7 @@ Gfx *menuitemCheckboxRender(Gfx *gdl, struct menurendercontext *context) // use in the else branch. The lui is loading a value into $at for the // float to u32 conversion for weight. u32 focuscolour; - u32 weight = func0f006b08(40) * 255; \ + u32 weight = menuGetSinOscFrac(40) * 255; \ if (context->dialog->transitionfrac < 0) { \ focuscolour = g_MenuColourPalettes[context->dialog->type].focused; } else { @@ -4472,7 +4472,7 @@ Gfx *menuitemPlayerStatsRender(Gfx *gdl, struct menurendercontext *context) gdl = text0f153628(gdl); // Write selected player's name - weight = func0f006b08(40) * 255; + weight = menuGetSinOscFrac(40) * 255; if (context->dialog->transitionfrac < 0) { selectioncolour = g_MenuColourPalettes[context->dialog->type].focused; @@ -5111,7 +5111,7 @@ Gfx *menuitemControllerRenderLines(Gfx *gdl, struct menurendercontext *context, #endif }; - speed = (s32)(-var80061630 * 4.0f * 50.0f) % 4; + speed = (s32)(-g_20SecIntervalFrac * 4.0f * 50.0f) % 4; alpha = alpha >> 1; gDPPipeSync(gdl++); diff --git a/src/game/menutick.c b/src/game/menutick.c index 039afe7a5..59916d5e4 100644 --- a/src/game/menutick.c +++ b/src/game/menutick.c @@ -68,7 +68,7 @@ void menuTick(void) g_ScaleX = g_ViRes == VIRES_HI ? 2 : 1; #endif - func0f0069dc(); + menuTickTimers(); if (g_MenuData.count) { // empty diff --git a/src/game/mplayer/ingame.c b/src/game/mplayer/ingame.c index 1761c06db..f89ea2d30 100644 --- a/src/game/mplayer/ingame.c +++ b/src/game/mplayer/ingame.c @@ -627,7 +627,7 @@ s32 mpPlacementMenuHandler(s32 operation, struct menuitem *item, union handlerda { if (operation == MENUOP_GETCOLOUR) { if (g_PlayerConfigsArray[g_MpPlayerNum].base.placement == 0) { // winner - data->label.colour2 = colourBlend(data->label.colour2, 0xffff00ff, func0f006b08(40) * 255); + data->label.colour2 = colourBlend(data->label.colour2, 0xffff00ff, menuGetSinOscFrac(40) * 255); } } @@ -708,7 +708,7 @@ s32 mpPlayerTitleMenuHandler(s32 operation, struct menuitem *item, union handler { if (operation == MENUOP_GETCOLOUR) { if (g_PlayerConfigsArray[g_MpPlayerNum].title != g_PlayerConfigsArray[g_MpPlayerNum].newtitle) { - data->label.colour2 = colourBlend(data->label.colour2, 0xffff00ff, func0f006b08(40) * 255); + data->label.colour2 = colourBlend(data->label.colour2, 0xffff00ff, menuGetSinOscFrac(40) * 255); } } diff --git a/src/game/mplayer/mplayer.c b/src/game/mplayer/mplayer.c index 728b46017..b9fc8fd1b 100644 --- a/src/game/mplayer/mplayer.c +++ b/src/game/mplayer/mplayer.c @@ -1209,7 +1209,7 @@ Gfx *mpRenderModalText(Gfx *gdl) #endif if (g_MpSetup.paused == MPPAUSEMODE_PAUSED) { - s32 red = (s32) ((1.0f - var80061630) * 20.0f * 255.0f) % 255; + s32 red = (s32) ((1.0f - g_20SecIntervalFrac) * 20.0f * 255.0f) % 255; s32 stack2; gdl = text0f153628(gdl); diff --git a/src/game/mplayer/scenarios.c b/src/game/mplayer/scenarios.c index 7f9f48179..90b117bc4 100644 --- a/src/game/mplayer/scenarios.c +++ b/src/game/mplayer/scenarios.c @@ -730,7 +730,7 @@ bool scenarioHighlightProp(struct prop *prop, s32 *colour) colour[0] = 0; colour[1] = 0xcd; colour[2] = 0xff; - colour[3] = func0f006b08(20) * 255; + colour[3] = menuGetSinOscFrac(20) * 255; return true; } } @@ -769,7 +769,7 @@ bool scenarioHighlightProp(struct prop *prop, s32 *colour) colour[0] = tmp >> 24 & 0xff; colour[1] = tmp >> 16 & 0xff; colour[2] = tmp >> 8 & 0xff; - colour[3] = pulse ? (s32)(func0f006b08(20) * 128) : 75; + colour[3] = pulse ? (s32)(menuGetSinOscFrac(20) * 128) : 75; return true; } @@ -777,7 +777,7 @@ bool scenarioHighlightProp(struct prop *prop, s32 *colour) colour[0] = 0; colour[1] = 0xcd; colour[2] = 0xff; - colour[3] = func0f006b08(20) * 205; + colour[3] = menuGetSinOscFrac(20) * 205; return true; } } diff --git a/src/game/nbomb.c b/src/game/nbomb.c index 3fd841933..b6428d4d4 100644 --- a/src/game/nbomb.c +++ b/src/game/nbomb.c @@ -166,7 +166,7 @@ Gfx *func0f0073ac(Gfx *gdl, struct coord *pos, f32 arg2) gDPSetRenderMode(gdl++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2); - var8009cb00 = 2048.0f * var80061630; + var8009cb00 = 2048.0f * g_20SecIntervalFrac; var8009cb04 = 0; vertices = gfxAllocateVertices(6); @@ -319,7 +319,7 @@ Gfx *nbombCreateGdl(void) index = 1; } - var8009cb00 = (s32)(var80061630 * 64.0f * 32.0f * 16.0f) % 0x800; + var8009cb00 = (s32)(g_20SecIntervalFrac * 64.0f * 32.0f * 16.0f) % 0x800; gdl = gdlstart = gfxAllocate(gdlsizes[index]); @@ -1273,7 +1273,7 @@ void nbombsTick(void) somevalue = 32767; if (g_NbombAudioHandle) { - f32 speed = func0f006b08(20) * 0.02f + 0.4f; + f32 speed = menuGetSinOscFrac(20) * 0.02f + 0.4f; if (youngest240 > TICKS(300)) { somevalue = (1.0f - (f32)(youngest240 - TICKS(300)) / (PAL ? 41.0f : 50.0f)) * 32767.0f; @@ -1555,8 +1555,8 @@ glabel nbombRenderOverlay /* f00a600: 44816000 */ mtc1 $at,$f12 /* f00a604: 3c014200 */ lui $at,0x4200 /* f00a608: 44817000 */ mtc1 $at,$f14 -/* f00a60c: 3c018006 */ lui $at,%hi(var80061630) -/* f00a610: c4201630 */ lwc1 $f0,%lo(var80061630)($at) +/* f00a60c: 3c018006 */ lui $at,%hi(g_20SecIntervalFrac) +/* f00a610: c4201630 */ lwc1 $f0,%lo(g_20SecIntervalFrac)($at) /* f00a614: c7a40074 */ lwc1 $f4,0x74($sp) /* f00a618: 00514821 */ addu $t1,$v0,$s1 /* f00a61c: 46001202 */ mul.s $f8,$f2,$f0 @@ -1866,8 +1866,8 @@ glabel nbombRenderOverlay /* f00a600: 44816000 */ mtc1 $at,$f12 /* f00a604: 3c014200 */ lui $at,0x4200 /* f00a608: 44817000 */ mtc1 $at,$f14 -/* f00a60c: 3c018006 */ lui $at,%hi(var80061630) -/* f00a610: c4201630 */ lwc1 $f0,%lo(var80061630)($at) +/* f00a60c: 3c018006 */ lui $at,%hi(g_20SecIntervalFrac) +/* f00a610: c4201630 */ lwc1 $f0,%lo(g_20SecIntervalFrac)($at) /* f00a614: c7a40074 */ lwc1 $f4,0x74($sp) /* f00a618: 00514821 */ addu $t1,$v0,$s1 /* f00a61c: 46001202 */ mul.s $f8,$f2,$f0 @@ -2139,8 +2139,8 @@ Gfx *nbombRenderOverlay(Gfx *gdl) sp50 = true; - s2 = (s32) (8.0f * var80061630 * 128.0f * 32.0f) % 2048; - sp5e = ((s32)(campos.f[1] * 8.0f) % 2048) + (s32)(2.0f * var80061630 * 128.0f * 32.0f); + s2 = (s32) (8.0f * g_20SecIntervalFrac * 128.0f * 32.0f) % 2048; + sp5e = ((s32)(campos.f[1] * 8.0f) % 2048) + (s32)(2.0f * g_20SecIntervalFrac * 128.0f * 32.0f); if (1); if (1); @@ -2206,616 +2206,33 @@ Gfx *nbombRenderOverlay(Gfx *gdl) } #endif -#if MATCHING -GLOBAL_ASM( -glabel gasRender -.late_rodata -glabel var7f1a7f44 -.word 0xc6557000 -glabel var7f1a7f48 -.word 0xc4b82000 -glabel var7f1a7f4c -.word 0x3e4ccccd -glabel var7f1a7f50 -.word 0x40c907a9 -glabel var7f1a7f54 -.word 0x453b8000 -.text -/* f00a940: 27bdfef0 */ addiu $sp,$sp,-272 -/* f00a944: 3c013f80 */ lui $at,0x3f80 -/* f00a948: 44810000 */ mtc1 $at,$f0 -/* f00a94c: 3c0f7f1a */ lui $t7,%hi(var7f1a7e80) -/* f00a950: afb10028 */ sw $s1,0x28($sp) -/* f00a954: 3c06800a */ lui $a2,%hi(g_Vars) -/* f00a958: 25ef7e80 */ addiu $t7,$t7,%lo(var7f1a7e80) -/* f00a95c: 24c69fc0 */ addiu $a2,$a2,%lo(g_Vars) -/* f00a960: afbf002c */ sw $ra,0x2c($sp) -/* f00a964: afb00024 */ sw $s0,0x24($sp) -/* f00a968: afa40110 */ sw $a0,0x110($sp) -/* f00a96c: 00008825 */ or $s1,$zero,$zero -/* f00a970: afa000ec */ sw $zero,0xec($sp) -/* f00a974: 25ea0030 */ addiu $t2,$t7,0x30 -/* f00a978: 27ae00bc */ addiu $t6,$sp,0xbc -/* f00a97c: e7a00108 */ swc1 $f0,0x108($sp) -.L0f00a980: -/* f00a980: 8de10000 */ lw $at,0x0($t7) -/* f00a984: 25ef000c */ addiu $t7,$t7,0xc -/* f00a988: 25ce000c */ addiu $t6,$t6,0xc -/* f00a98c: adc1fff4 */ sw $at,-0xc($t6) -/* f00a990: 8de1fff8 */ lw $at,-0x8($t7) -/* f00a994: adc1fff8 */ sw $at,-0x8($t6) -/* f00a998: 8de1fffc */ lw $at,-0x4($t7) -/* f00a99c: 15eafff8 */ bne $t7,$t2,.L0f00a980 -/* f00a9a0: adc1fffc */ sw $at,-0x4($t6) -/* f00a9a4: 8ccb04b4 */ lw $t3,0x4b4($a2) -/* f00a9a8: 24010019 */ addiu $at,$zero,0x19 -/* f00a9ac: 556101e9 */ bnel $t3,$at,.L0f00b154 -/* f00a9b0: 8fad00ec */ lw $t5,0xec($sp) -/* f00a9b4: 8cc30284 */ lw $v1,0x284($a2) -/* f00a9b8: e7a000b8 */ swc1 $f0,0xb8($sp) -/* f00a9bc: 27b000bc */ addiu $s0,$sp,0xbc -/* f00a9c0: c4641bb0 */ lwc1 $f4,0x1bb0($v1) -/* f00a9c4: e7a400fc */ swc1 $f4,0xfc($sp) -/* f00a9c8: c4661bb4 */ lwc1 $f6,0x1bb4($v1) -/* f00a9cc: e7a60100 */ swc1 $f6,0x100($sp) -/* f00a9d0: c4681bb8 */ lwc1 $f8,0x1bb8($v1) -/* f00a9d4: e7a80104 */ swc1 $f8,0x104($sp) -/* f00a9d8: 27a400fc */ addiu $a0,$sp,0xfc -.L0f00a9dc: -/* f00a9dc: 0fc586b7 */ jal roomContainsCoord -/* f00a9e0: 86050002 */ lh $a1,0x2($s0) -/* f00a9e4: 10400002 */ beqz $v0,.L0f00a9f0 -/* f00a9e8: 26100004 */ addiu $s0,$s0,0x4 -/* f00a9ec: 24110001 */ addiu $s1,$zero,0x1 -.L0f00a9f0: -/* f00a9f0: 27ac00ec */ addiu $t4,$sp,0xec -/* f00a9f4: 560cfff9 */ bnel $s0,$t4,.L0f00a9dc -/* f00a9f8: 27a400fc */ addiu $a0,$sp,0xfc -/* f00a9fc: 16200025 */ bnez $s1,.L0f00aa94 -/* f00aa00: 27a400fc */ addiu $a0,$sp,0xfc -/* f00aa04: 3c017f1a */ lui $at,%hi(var7f1a7f44) -/* f00aa08: c4247f44 */ lwc1 $f4,%lo(var7f1a7f44)($at) -/* f00aa0c: c7aa0104 */ lwc1 $f10,0x104($sp) -/* f00aa10: 3c017f1a */ lui $at,%hi(var7f1a7f48) -/* f00aa14: c4287f48 */ lwc1 $f8,%lo(var7f1a7f48)($at) -/* f00aa18: c7a600fc */ lwc1 $f6,0xfc($sp) -/* f00aa1c: 46045001 */ sub.s $f0,$f10,$f4 -/* f00aa20: 3c01c39a */ lui $at,0xc39a -/* f00aa24: 44812000 */ mtc1 $at,$f4 -/* f00aa28: 46083081 */ sub.s $f2,$f6,$f8 -/* f00aa2c: c7aa0100 */ lwc1 $f10,0x100($sp) -/* f00aa30: 46045381 */ sub.s $f14,$f10,$f4 -/* f00aa34: 46021182 */ mul.s $f6,$f2,$f2 -/* f00aa38: 00000000 */ nop -/* f00aa3c: 460e7202 */ mul.s $f8,$f14,$f14 -/* f00aa40: 46083280 */ add.s $f10,$f6,$f8 -/* f00aa44: 46000102 */ mul.s $f4,$f0,$f0 -/* f00aa48: 0c012974 */ jal sqrtf -/* f00aa4c: 460a2300 */ add.s $f12,$f4,$f10 -/* f00aa50: 3c0144a6 */ lui $at,0x44a6 -/* f00aa54: 44816000 */ mtc1 $at,$f12 -/* f00aa58: 00000000 */ nop -/* f00aa5c: 460c003c */ c.lt.s $f0,$f12 -/* f00aa60: 00000000 */ nop -/* f00aa64: 45020022 */ bc1fl .L0f00aaf0 -/* f00aa68: c7a40108 */ lwc1 $f4,0x108($sp) -/* f00aa6c: 460c0203 */ div.s $f8,$f0,$f12 -/* f00aa70: 3c013f80 */ lui $at,0x3f80 -/* f00aa74: 44813000 */ mtc1 $at,$f6 -/* f00aa78: 24110001 */ addiu $s1,$zero,0x1 -/* f00aa7c: 24040032 */ addiu $a0,$zero,0x32 -/* f00aa80: 46083101 */ sub.s $f4,$f6,$f8 -/* f00aa84: 0fc02911 */ jal gasGetDoorFrac -/* f00aa88: e7a40108 */ swc1 $f4,0x108($sp) -/* f00aa8c: 10000017 */ b .L0f00aaec -/* f00aa90: e7a000b8 */ swc1 $f0,0xb8($sp) -.L0f00aa94: -/* f00aa94: 0fc586b7 */ jal roomContainsCoord -/* f00aa98: 24050091 */ addiu $a1,$zero,0x91 -/* f00aa9c: 50400014 */ beqzl $v0,.L0f00aaf0 -/* f00aaa0: c7a40108 */ lwc1 $f4,0x108($sp) -/* f00aaa4: 0fc02911 */ jal gasGetDoorFrac -/* f00aaa8: 24040030 */ addiu $a0,$zero,0x30 -/* f00aaac: 24040031 */ addiu $a0,$zero,0x31 -/* f00aab0: 0fc02911 */ jal gasGetDoorFrac -/* f00aab4: e7a000b0 */ swc1 $f0,0xb0($sp) -/* f00aab8: c7a200b0 */ lwc1 $f2,0xb0($sp) -/* f00aabc: 3c017f1a */ lui $at,%hi(var7f1a7f4c) -/* f00aac0: 4600103c */ c.lt.s $f2,$f0 -/* f00aac4: 00000000 */ nop -/* f00aac8: 45020004 */ bc1fl .L0f00aadc -/* f00aacc: e7a200b8 */ swc1 $f2,0xb8($sp) -/* f00aad0: 10000002 */ b .L0f00aadc -/* f00aad4: e7a000b8 */ swc1 $f0,0xb8($sp) -/* f00aad8: e7a200b8 */ swc1 $f2,0xb8($sp) -.L0f00aadc: -/* f00aadc: c7aa00b8 */ lwc1 $f10,0xb8($sp) -/* f00aae0: c4267f4c */ lwc1 $f6,%lo(var7f1a7f4c)($at) -/* f00aae4: 46065200 */ add.s $f8,$f10,$f6 -/* f00aae8: e7a800b8 */ swc1 $f8,0xb8($sp) -.L0f00aaec: -/* f00aaec: c7a40108 */ lwc1 $f4,0x108($sp) -.L0f00aaf0: -/* f00aaf0: c7aa00b8 */ lwc1 $f10,0xb8($sp) -/* f00aaf4: 3c0d800a */ lui $t5,%hi(g_Vars+0x2ac) -/* f00aaf8: 460a2182 */ mul.s $f6,$f4,$f10 -/* f00aafc: 12200017 */ beqz $s1,.L0f00ab5c -/* f00ab00: e7a60108 */ swc1 $f6,0x108($sp) -/* f00ab04: 8dada26c */ lw $t5,%lo(g_Vars+0x2ac)($t5) -/* f00ab08: 24010006 */ addiu $at,$zero,0x6 -/* f00ab0c: 3c02800a */ lui $v0,%hi(g_CutsceneCurAnimFrame60) -/* f00ab10: 15a10012 */ bne $t5,$at,.L0f00ab5c -/* f00ab14: 00000000 */ nop -/* f00ab18: 8c42de10 */ lw $v0,%lo(g_CutsceneCurAnimFrame60)($v0) -/* f00ab1c: 28410884 */ slti $at,$v0,0x884 -/* f00ab20: 50200004 */ beqzl $at,.L0f00ab34 -/* f00ab24: 28410a28 */ slti $at,$v0,0xa28 -/* f00ab28: 1000000c */ b .L0f00ab5c -/* f00ab2c: 00008825 */ or $s1,$zero,$zero -/* f00ab30: 28410a28 */ slti $at,$v0,0xa28 -.L0f00ab34: -/* f00ab34: 10200009 */ beqz $at,.L0f00ab5c -/* f00ab38: 2459f77c */ addiu $t9,$v0,-2180 -/* f00ab3c: 44994000 */ mtc1 $t9,$f8 -/* f00ab40: 3c0143d2 */ lui $at,0x43d2 -/* f00ab44: 44815000 */ mtc1 $at,$f10 -/* f00ab48: 46804120 */ cvt.s.w $f4,$f8 -/* f00ab4c: c7a60108 */ lwc1 $f6,0x108($sp) -/* f00ab50: 460a2003 */ div.s $f0,$f4,$f10 -/* f00ab54: 46003202 */ mul.s $f8,$f6,$f0 -/* f00ab58: e7a80108 */ swc1 $f8,0x108($sp) -.L0f00ab5c: -/* f00ab5c: 5220017d */ beqzl $s1,.L0f00b154 -/* f00ab60: 8fad00ec */ lw $t5,0xec($sp) -/* f00ab64: 0fc59e73 */ jal gfxAllocateColours -/* f00ab68: 24040001 */ addiu $a0,$zero,0x1 -/* f00ab6c: afa200a4 */ sw $v0,0xa4($sp) -/* f00ab70: 0fc59e59 */ jal gfxAllocateVertices -/* f00ab74: 24040008 */ addiu $a0,$zero,0x8 -/* f00ab78: 0c002f40 */ jal viGetViewLeft -/* f00ab7c: 00408025 */ or $s0,$v0,$zero -/* f00ab80: 0002c080 */ sll $t8,$v0,0x2 -/* f00ab84: 0302c021 */ addu $t8,$t8,$v0 -/* f00ab88: 0018c040 */ sll $t8,$t8,0x1 -/* f00ab8c: 0c002f44 */ jal viGetViewTop -/* f00ab90: a7b8009e */ sh $t8,0x9e($sp) -/* f00ab94: 00025080 */ sll $t2,$v0,0x2 -/* f00ab98: 01425021 */ addu $t2,$t2,$v0 -/* f00ab9c: 000a5040 */ sll $t2,$t2,0x1 -/* f00aba0: 0c002f40 */ jal viGetViewLeft -/* f00aba4: a7aa009c */ sh $t2,0x9c($sp) -/* f00aba8: 00028c00 */ sll $s1,$v0,0x10 -/* f00abac: 00117c03 */ sra $t7,$s1,0x10 -/* f00abb0: 0c002f22 */ jal viGetViewWidth -/* f00abb4: 01e08825 */ or $s1,$t7,$zero -/* f00abb8: 00516021 */ addu $t4,$v0,$s1 -/* f00abbc: 000c6880 */ sll $t5,$t4,0x2 -/* f00abc0: 01ac6821 */ addu $t5,$t5,$t4 -/* f00abc4: 000d6840 */ sll $t5,$t5,0x1 -/* f00abc8: 0c002f44 */ jal viGetViewTop -/* f00abcc: a7ad009a */ sh $t5,0x9a($sp) -/* f00abd0: 00028c00 */ sll $s1,$v0,0x10 -/* f00abd4: 0011cc03 */ sra $t9,$s1,0x10 -/* f00abd8: 0c002f26 */ jal viGetViewHeight -/* f00abdc: 03208825 */ or $s1,$t9,$zero -/* f00abe0: 00517821 */ addu $t7,$v0,$s1 -/* f00abe4: 000f7080 */ sll $t6,$t7,0x2 -/* f00abe8: 3c03800a */ lui $v1,%hi(g_Vars+0x284) -/* f00abec: 8c63a244 */ lw $v1,%lo(g_Vars+0x284)($v1) -/* f00abf0: 01cf7021 */ addu $t6,$t6,$t7 -/* f00abf4: 000e7040 */ sll $t6,$t6,0x1 -/* f00abf8: a7ae0098 */ sh $t6,0x98($sp) -/* f00abfc: c4641bb0 */ lwc1 $f4,0x1bb0($v1) -/* f00ac00: c4601bbc */ lwc1 $f0,0x1bbc($v1) -/* f00ac04: c46e1bc4 */ lwc1 $f14,0x1bc4($v1) -/* f00ac08: e7a4008c */ swc1 $f4,0x8c($sp) -/* f00ac0c: c46a1bb8 */ lwc1 $f10,0x1bb8($v1) -/* f00ac10: 46000307 */ neg.s $f12,$f0 -/* f00ac14: 0fc259d4 */ jal atan2f -/* f00ac18: e7aa0088 */ swc1 $f10,0x88($sp) -/* f00ac1c: 3c017f1a */ lui $at,%hi(var7f1a7f50) -/* f00ac20: c4267f50 */ lwc1 $f6,%lo(var7f1a7f50)($at) -/* f00ac24: 3c014080 */ lui $at,0x4080 -/* f00ac28: 44816000 */ mtc1 $at,$f12 -/* f00ac2c: 46060203 */ div.s $f8,$f0,$f6 -/* f00ac30: 0fc01ac2 */ jal func0f006b08 -/* f00ac34: e7a80078 */ swc1 $f8,0x78($sp) -/* f00ac38: c7a4008c */ lwc1 $f4,0x8c($sp) -/* f00ac3c: c7aa0088 */ lwc1 $f10,0x88($sp) -/* f00ac40: 3c014200 */ lui $at,0x4200 -/* f00ac44: 44819000 */ mtc1 $at,$f18 -/* f00ac48: 460a2180 */ add.s $f6,$f4,$f10 -/* f00ac4c: 3c017f1a */ lui $at,%hi(var7f1a7f54) -/* f00ac50: c4287f54 */ lwc1 $f8,%lo(var7f1a7f54)($at) -/* f00ac54: 3c013f00 */ lui $at,0x3f00 -/* f00ac58: 46083083 */ div.s $f2,$f6,$f8 -/* f00ac5c: 44814000 */ mtc1 $at,$f8 -/* f00ac60: 3c0140c0 */ lui $at,0x40c0 -/* f00ac64: 4600110d */ trunc.w.s $f4,$f2 -/* f00ac68: 440c2000 */ mfc1 $t4,$f4 -/* f00ac6c: 46080101 */ sub.s $f4,$f0,$f8 -/* f00ac70: c7a80078 */ lwc1 $f8,0x78($sp) -/* f00ac74: 448c5000 */ mtc1 $t4,$f10 -/* f00ac78: 00000000 */ nop -/* f00ac7c: 468051a0 */ cvt.s.w $f6,$f10 -/* f00ac80: 44815000 */ mtc1 $at,$f10 -/* f00ac84: 3c013fc0 */ lui $at,0x3fc0 -/* f00ac88: 46061401 */ sub.s $f16,$f2,$f6 -/* f00ac8c: 460a2183 */ div.s $f6,$f4,$f10 -/* f00ac90: 44815000 */ mtc1 $at,$f10 -/* f00ac94: 3c014300 */ lui $at,0x4300 -/* f00ac98: e7b00038 */ swc1 $f16,0x38($sp) -/* f00ac9c: 46083100 */ add.s $f4,$f6,$f8 -/* f00aca0: 460a8182 */ mul.s $f6,$f16,$f10 -/* f00aca4: 44815000 */ mtc1 $at,$f10 -/* f00aca8: 3c014080 */ lui $at,0x4080 -/* f00acac: 44816000 */ mtc1 $at,$f12 -/* f00acb0: 46062380 */ add.s $f14,$f4,$f6 -/* f00acb4: 460e7200 */ add.s $f8,$f14,$f14 -/* f00acb8: 460a4102 */ mul.s $f4,$f8,$f10 -/* f00acbc: 00000000 */ nop -/* f00acc0: 46122182 */ mul.s $f6,$f4,$f18 -/* f00acc4: 4600320d */ trunc.w.s $f8,$f6 -/* f00acc8: 44194000 */ mfc1 $t9,$f8 -/* f00accc: 00000000 */ nop -/* f00acd0: 07210004 */ bgez $t9,.L0f00ace4 -/* f00acd4: 333807ff */ andi $t8,$t9,0x7ff -/* f00acd8: 13000002 */ beqz $t8,.L0f00ace4 -/* f00acdc: 00000000 */ nop -/* f00ace0: 2718f800 */ addiu $t8,$t8,-2048 -.L0f00ace4: -/* f00ace4: 0fc01ad5 */ jal func0f006b54 -/* f00ace8: a7b80076 */ sh $t8,0x76($sp) -/* f00acec: 3c014200 */ lui $at,0x4200 -/* f00acf0: 44819000 */ mtc1 $at,$f18 -/* f00acf4: 3c013f00 */ lui $at,0x3f00 -/* f00acf8: 44815000 */ mtc1 $at,$f10 -/* f00acfc: 3c01c110 */ lui $at,0xc110 -/* f00ad00: 44813000 */ mtc1 $at,$f6 -/* f00ad04: 460a0101 */ sub.s $f4,$f0,$f10 -/* f00ad08: c7aa0078 */ lwc1 $f10,0x78($sp) -/* f00ad0c: c7b00038 */ lwc1 $f16,0x38($sp) -/* f00ad10: 3c014300 */ lui $at,0x4300 -/* f00ad14: 46062203 */ div.s $f8,$f4,$f6 -/* f00ad18: 240c0001 */ addiu $t4,$zero,0x1 -/* f00ad1c: afac00ec */ sw $t4,0xec($sp) -/* f00ad20: 8fa40110 */ lw $a0,0x110($sp) -/* f00ad24: 460a4100 */ add.s $f4,$f8,$f10 -/* f00ad28: 44814000 */ mtc1 $at,$f8 -/* f00ad2c: 3c014100 */ lui $at,0x4100 -/* f00ad30: 46102380 */ add.s $f14,$f4,$f16 -/* f00ad34: 460e7180 */ add.s $f6,$f14,$f14 -/* f00ad38: 46083282 */ mul.s $f10,$f6,$f8 -/* f00ad3c: c7a80100 */ lwc1 $f8,0x100($sp) -/* f00ad40: 46125102 */ mul.s $f4,$f10,$f18 -/* f00ad44: 44815000 */ mtc1 $at,$f10 -/* f00ad48: 3c018006 */ lui $at,%hi(var80061630) -/* f00ad4c: c4221630 */ lwc1 $f2,%lo(var80061630)($at) -/* f00ad50: 3c014300 */ lui $at,0x4300 -/* f00ad54: 46021300 */ add.s $f12,$f2,$f2 -/* f00ad58: 4600218d */ trunc.w.s $f6,$f4 -/* f00ad5c: 460a4102 */ mul.s $f4,$f8,$f10 -/* f00ad60: 44814000 */ mtc1 $at,$f8 -/* f00ad64: 3c014280 */ lui $at,0x4280 -/* f00ad68: 44113000 */ mfc1 $s1,$f6 -/* f00ad6c: 46086282 */ mul.s $f10,$f12,$f8 -/* f00ad70: 44814000 */ mtc1 $at,$f8 -/* f00ad74: 06210004 */ bgez $s1,.L0f00ad88 -/* f00ad78: 322f07ff */ andi $t7,$s1,0x7ff -/* f00ad7c: 11e00002 */ beqz $t7,.L0f00ad88 -/* f00ad80: 00000000 */ nop -/* f00ad84: 25eff800 */ addiu $t7,$t7,-2048 -.L0f00ad88: -/* f00ad88: 4600218d */ trunc.w.s $f6,$f4 -/* f00ad8c: 46125102 */ mul.s $f4,$f10,$f18 -/* f00ad90: 000f7400 */ sll $t6,$t7,0x10 -/* f00ad94: 000e5c03 */ sra $t3,$t6,0x10 -/* f00ad98: 46086282 */ mul.s $f10,$f12,$f8 -/* f00ad9c: 44023000 */ mfc1 $v0,$f6 -/* f00ada0: 01608825 */ or $s1,$t3,$zero -/* f00ada4: 04410004 */ bgez $v0,.L0f00adb8 -/* f00ada8: 304d07ff */ andi $t5,$v0,0x7ff -/* f00adac: 11a00002 */ beqz $t5,.L0f00adb8 -/* f00adb0: 00000000 */ nop -/* f00adb4: 25adf800 */ addiu $t5,$t5,-2048 -.L0f00adb8: -/* f00adb8: 4600218d */ trunc.w.s $f6,$f4 -/* f00adbc: 46125102 */ mul.s $f4,$f10,$f18 -/* f00adc0: 01a01025 */ or $v0,$t5,$zero -/* f00adc4: 440b3000 */ mfc1 $t3,$f6 -/* f00adc8: 00000000 */ nop -/* f00adcc: 004b6821 */ addu $t5,$v0,$t3 -/* f00add0: 4600218d */ trunc.w.s $f6,$f4 -/* f00add4: a7ad00fa */ sh $t5,0xfa($sp) -/* f00add8: 440f3000 */ mfc1 $t7,$f6 -/* f00addc: 00000000 */ nop -/* f00ade0: 004f5821 */ addu $t3,$v0,$t7 -/* f00ade4: 0fc351e7 */ jal func0f0d479c -/* f00ade8: a7ab0072 */ sh $t3,0x72($sp) -/* f00adec: 3c05800b */ lui $a1,%hi(g_TexGeneralConfigs) -/* f00adf0: 87a80072 */ lh $t0,0x72($sp) -/* f00adf4: 87a900fa */ lh $t1,0xfa($sp) -/* f00adf8: 8ca5b5a8 */ lw $a1,%lo(g_TexGeneralConfigs)($a1) -/* f00adfc: 240d0002 */ addiu $t5,$zero,0x2 -/* f00ae00: 24190001 */ addiu $t9,$zero,0x1 -/* f00ae04: afa20110 */ sw $v0,0x110($sp) -/* f00ae08: afb90014 */ sw $t9,0x14($sp) -/* f00ae0c: afad0010 */ sw $t5,0x10($sp) -/* f00ae10: 27a40110 */ addiu $a0,$sp,0x110 -/* f00ae14: 24060004 */ addiu $a2,$zero,0x4 -/* f00ae18: 24070001 */ addiu $a3,$zero,0x1 -/* f00ae1c: afa00018 */ sw $zero,0x18($sp) -/* f00ae20: a7a80072 */ sh $t0,0x72($sp) -/* f00ae24: a7a900fa */ sh $t1,0xfa($sp) -/* f00ae28: 0fc2ce70 */ jal texSelect -/* f00ae2c: 24a50048 */ addiu $a1,$a1,0x0048 -/* f00ae30: 8fb80110 */ lw $t8,0x110($sp) -/* f00ae34: 87a80072 */ lh $t0,0x72($sp) -/* f00ae38: 87a900fa */ lh $t1,0xfa($sp) -/* f00ae3c: 270a0008 */ addiu $t2,$t8,0x8 -/* f00ae40: afaa0110 */ sw $t2,0x110($sp) -/* f00ae44: 3c0fe700 */ lui $t7,0xe700 -/* f00ae48: af0f0000 */ sw $t7,0x0($t8) -/* f00ae4c: af000004 */ sw $zero,0x4($t8) -/* f00ae50: 8fae0110 */ lw $t6,0x110($sp) -/* f00ae54: 3c0cba00 */ lui $t4,0xba00 -/* f00ae58: 358c1402 */ ori $t4,$t4,0x1402 -/* f00ae5c: 25cb0008 */ addiu $t3,$t6,0x8 -/* f00ae60: afab0110 */ sw $t3,0x110($sp) -/* f00ae64: adc00004 */ sw $zero,0x4($t6) -/* f00ae68: adcc0000 */ sw $t4,0x0($t6) -/* f00ae6c: 8fad0110 */ lw $t5,0x110($sp) -/* f00ae70: 3c18b900 */ lui $t8,0xb900 -/* f00ae74: 37180002 */ ori $t8,$t8,0x2 -/* f00ae78: 25b90008 */ addiu $t9,$t5,0x8 -/* f00ae7c: afb90110 */ sw $t9,0x110($sp) -/* f00ae80: ada00004 */ sw $zero,0x4($t5) -/* f00ae84: adb80000 */ sw $t8,0x0($t5) -/* f00ae88: 8faa0110 */ lw $t2,0x110($sp) -/* f00ae8c: 3c0efc12 */ lui $t6,0xfc12 -/* f00ae90: 3c0bff33 */ lui $t3,0xff33 -/* f00ae94: 254f0008 */ addiu $t7,$t2,0x8 -/* f00ae98: afaf0110 */ sw $t7,0x110($sp) -/* f00ae9c: 356bffff */ ori $t3,$t3,0xffff -/* f00aea0: 35ce1824 */ ori $t6,$t6,0x1824 -/* f00aea4: ad4e0000 */ sw $t6,0x0($t2) -/* f00aea8: ad4b0004 */ sw $t3,0x4($t2) -/* f00aeac: 8fac0110 */ lw $t4,0x110($sp) -/* f00aeb0: 24183000 */ addiu $t8,$zero,0x3000 -/* f00aeb4: 3c19b600 */ lui $t9,0xb600 -/* f00aeb8: 258d0008 */ addiu $t5,$t4,0x8 -/* f00aebc: afad0110 */ sw $t5,0x110($sp) -/* f00aec0: ad980004 */ sw $t8,0x4($t4) -/* f00aec4: ad990000 */ sw $t9,0x0($t4) -/* f00aec8: 8faa0110 */ lw $t2,0x110($sp) -/* f00aecc: 87a7009c */ lh $a3,0x9c($sp) -/* f00aed0: 87a6009e */ lh $a2,0x9e($sp) -/* f00aed4: 254f0008 */ addiu $t7,$t2,0x8 -/* f00aed8: afaf0110 */ sw $t7,0x110($sp) -/* f00aedc: 3c0eba00 */ lui $t6,0xba00 -/* f00aee0: 35ce0602 */ ori $t6,$t6,0x602 -/* f00aee4: 240b00c0 */ addiu $t3,$zero,0xc0 -/* f00aee8: ad4b0004 */ sw $t3,0x4($t2) -/* f00aeec: ad4e0000 */ sw $t6,0x0($t2) -/* f00aef0: 8fac0110 */ lw $t4,0x110($sp) -/* f00aef4: 3c19ba00 */ lui $t9,0xba00 -/* f00aef8: 37390c02 */ ori $t9,$t9,0xc02 -/* f00aefc: 258d0008 */ addiu $t5,$t4,0x8 -/* f00af00: afad0110 */ sw $t5,0x110($sp) -/* f00af04: 24182000 */ addiu $t8,$zero,0x2000 -/* f00af08: ad980004 */ sw $t8,0x4($t4) -/* f00af0c: ad990000 */ sw $t9,0x0($t4) -/* f00af10: 8faa0110 */ lw $t2,0x110($sp) -/* f00af14: 3c0eb900 */ lui $t6,0xb900 -/* f00af18: 3c0b0050 */ lui $t3,0x50 -/* f00af1c: 254f0008 */ addiu $t7,$t2,0x8 -/* f00af20: afaf0110 */ sw $t7,0x110($sp) -/* f00af24: 356b4340 */ ori $t3,$t3,0x4340 -/* f00af28: 35ce031d */ ori $t6,$t6,0x31d -/* f00af2c: ad4e0000 */ sw $t6,0x0($t2) -/* f00af30: ad4b0004 */ sw $t3,0x4($t2) -/* f00af34: 8fac0110 */ lw $t4,0x110($sp) -/* f00af38: 3c19ba00 */ lui $t9,0xba00 -/* f00af3c: 37391301 */ ori $t9,$t9,0x1301 -/* f00af40: 258d0008 */ addiu $t5,$t4,0x8 -/* f00af44: afad0110 */ sw $t5,0x110($sp) -/* f00af48: 3c180008 */ lui $t8,0x8 -/* f00af4c: ad980004 */ sw $t8,0x4($t4) -/* f00af50: ad990000 */ sw $t9,0x0($t4) -/* f00af54: a6070002 */ sh $a3,0x2($s0) -/* f00af58: a6060000 */ sh $a2,0x0($s0) -/* f00af5c: 87a40098 */ lh $a0,0x98($sp) -/* f00af60: 87a3009a */ lh $v1,0x9a($sp) -/* f00af64: 2402fff6 */ addiu $v0,$zero,-10 -/* f00af68: a6020004 */ sh $v0,0x4($s0) -/* f00af6c: a6020010 */ sh $v0,0x10($s0) -/* f00af70: a602001c */ sh $v0,0x1c($s0) -/* f00af74: a6020028 */ sh $v0,0x28($s0) -/* f00af78: a6020034 */ sh $v0,0x34($s0) -/* f00af7c: a6020040 */ sh $v0,0x40($s0) -/* f00af80: a602004c */ sh $v0,0x4c($s0) -/* f00af84: a6020058 */ sh $v0,0x58($s0) -/* f00af88: a6110008 */ sh $s1,0x8($s0) -/* f00af8c: a608000a */ sh $t0,0xa($s0) -/* f00af90: a607000e */ sh $a3,0xe($s0) -/* f00af94: a6070032 */ sh $a3,0x32($s0) -/* f00af98: a607003e */ sh $a3,0x3e($s0) -/* f00af9c: a6060024 */ sh $a2,0x24($s0) -/* f00afa0: a6060030 */ sh $a2,0x30($s0) -/* f00afa4: a6060054 */ sh $a2,0x54($s0) -/* f00afa8: a604001a */ sh $a0,0x1a($s0) -/* f00afac: a6040026 */ sh $a0,0x26($s0) -/* f00afb0: a604004a */ sh $a0,0x4a($s0) -/* f00afb4: a6040056 */ sh $a0,0x56($s0) -/* f00afb8: a603000c */ sh $v1,0xc($s0) -/* f00afbc: a6030018 */ sh $v1,0x18($s0) -/* f00afc0: a603003c */ sh $v1,0x3c($s0) -/* f00afc4: a6030048 */ sh $v1,0x48($s0) -/* f00afc8: 87a40076 */ lh $a0,0x76($sp) -/* f00afcc: 262203c0 */ addiu $v0,$s1,0x3c0 -/* f00afd0: 25030280 */ addiu $v1,$t0,0x280 -/* f00afd4: a6020014 */ sh $v0,0x14($s0) -/* f00afd8: a6020020 */ sh $v0,0x20($s0) -/* f00afdc: a6030022 */ sh $v1,0x22($s0) -/* f00afe0: a611002c */ sh $s1,0x2c($s0) -/* f00afe4: a603002e */ sh $v1,0x2e($s0) -/* f00afe8: a2000007 */ sb $zero,0x7($s0) -/* f00afec: a2000013 */ sb $zero,0x13($s0) -/* f00aff0: a200001f */ sb $zero,0x1f($s0) -/* f00aff4: a200002b */ sb $zero,0x2b($s0) -/* f00aff8: a6080016 */ sh $t0,0x16($s0) -/* f00affc: a609003a */ sh $t1,0x3a($s0) -/* f00b000: a6040038 */ sh $a0,0x38($s0) -/* f00b004: 8fa500a4 */ lw $a1,0xa4($sp) -/* f00b008: 252301e0 */ addiu $v1,$t1,0x1e0 -/* f00b00c: 24820280 */ addiu $v0,$a0,0x280 -/* f00b010: a6020044 */ sh $v0,0x44($s0) -/* f00b014: a6020050 */ sh $v0,0x50($s0) -/* f00b018: a6030052 */ sh $v1,0x52($s0) -/* f00b01c: a603005e */ sh $v1,0x5e($s0) -/* f00b020: a2000037 */ sb $zero,0x37($s0) -/* f00b024: a2000043 */ sb $zero,0x43($s0) -/* f00b028: a200004f */ sb $zero,0x4f($s0) -/* f00b02c: a200005b */ sb $zero,0x5b($s0) -/* f00b030: 3c0142fe */ lui $at,0x42fe -/* f00b034: a6090046 */ sh $t1,0x46($s0) -/* f00b038: a604005c */ sh $a0,0x5c($s0) -/* f00b03c: c7aa0108 */ lwc1 $f10,0x108($sp) -/* f00b040: 44814000 */ mtc1 $at,$f8 -/* f00b044: 240f0001 */ addiu $t7,$zero,0x1 -/* f00b048: 3c0d0700 */ lui $t5,0x700 -/* f00b04c: 460a4102 */ mul.s $f4,$f8,$f10 -/* f00b050: 3c014f00 */ lui $at,0x4f00 -/* f00b054: 35ad0004 */ ori $t5,$t5,0x4 -/* f00b058: 444af800 */ cfc1 $t2,$31 -/* f00b05c: 44cff800 */ ctc1 $t7,$31 -/* f00b060: 00000000 */ nop -/* f00b064: 460021a4 */ cvt.w.s $f6,$f4 -/* f00b068: 444ff800 */ cfc1 $t7,$31 -/* f00b06c: 00000000 */ nop -/* f00b070: 31ef0078 */ andi $t7,$t7,0x78 -/* f00b074: 51e00013 */ beqzl $t7,.L0f00b0c4 -/* f00b078: 440f3000 */ mfc1 $t7,$f6 -/* f00b07c: 44813000 */ mtc1 $at,$f6 -/* f00b080: 240f0001 */ addiu $t7,$zero,0x1 -/* f00b084: 46062181 */ sub.s $f6,$f4,$f6 -/* f00b088: 44cff800 */ ctc1 $t7,$31 -/* f00b08c: 00000000 */ nop -/* f00b090: 460031a4 */ cvt.w.s $f6,$f6 -/* f00b094: 444ff800 */ cfc1 $t7,$31 -/* f00b098: 00000000 */ nop -/* f00b09c: 31ef0078 */ andi $t7,$t7,0x78 -/* f00b0a0: 15e00005 */ bnez $t7,.L0f00b0b8 -/* f00b0a4: 00000000 */ nop -/* f00b0a8: 440f3000 */ mfc1 $t7,$f6 -/* f00b0ac: 3c018000 */ lui $at,0x8000 -/* f00b0b0: 10000007 */ b .L0f00b0d0 -/* f00b0b4: 01e17825 */ or $t7,$t7,$at -.L0f00b0b8: -/* f00b0b8: 10000005 */ b .L0f00b0d0 -/* f00b0bc: 240fffff */ addiu $t7,$zero,-1 -/* f00b0c0: 440f3000 */ mfc1 $t7,$f6 -.L0f00b0c4: -/* f00b0c4: 00000000 */ nop -/* f00b0c8: 05e0fffb */ bltz $t7,.L0f00b0b8 -/* f00b0cc: 00000000 */ nop -.L0f00b0d0: -/* f00b0d0: 3c013faf */ lui $at,0x3faf -/* f00b0d4: 34211100 */ ori $at,$at,0x1100 -/* f00b0d8: 01e17025 */ or $t6,$t7,$at -/* f00b0dc: acae0000 */ sw $t6,0x0($a1) -/* f00b0e0: 8fb10110 */ lw $s1,0x110($sp) -/* f00b0e4: 44caf800 */ ctc1 $t2,$31 -/* f00b0e8: 00a02025 */ or $a0,$a1,$zero -/* f00b0ec: 262c0008 */ addiu $t4,$s1,0x8 -/* f00b0f0: afac0110 */ sw $t4,0x110($sp) -/* f00b0f4: 0c012d20 */ jal osVirtualToPhysical -/* f00b0f8: ae2d0000 */ sw $t5,0x0($s1) -/* f00b0fc: ae220004 */ sw $v0,0x4($s1) -/* f00b100: 8fb90110 */ lw $t9,0x110($sp) -/* f00b104: 3c0a0470 */ lui $t2,0x470 -/* f00b108: 354a0060 */ ori $t2,$t2,0x60 -/* f00b10c: 27380008 */ addiu $t8,$t9,0x8 -/* f00b110: afb80110 */ sw $t8,0x110($sp) -/* f00b114: af2a0000 */ sw $t2,0x0($t9) -/* f00b118: 02002025 */ or $a0,$s0,$zero -/* f00b11c: 0c012d20 */ jal osVirtualToPhysical -/* f00b120: afb90044 */ sw $t9,0x44($sp) -/* f00b124: 8fa50044 */ lw $a1,0x44($sp) -/* f00b128: 3c0bb100 */ lui $t3,0xb100 -/* f00b12c: 3c0c7654 */ lui $t4,0x7654 -/* f00b130: aca20004 */ sw $v0,0x4($a1) -/* f00b134: 8faf0110 */ lw $t7,0x110($sp) -/* f00b138: 358c3210 */ ori $t4,$t4,0x3210 -/* f00b13c: 356b4602 */ ori $t3,$t3,0x4602 -/* f00b140: 25ee0008 */ addiu $t6,$t7,0x8 -/* f00b144: afae0110 */ sw $t6,0x110($sp) -/* f00b148: adec0004 */ sw $t4,0x4($t7) -/* f00b14c: adeb0000 */ sw $t3,0x0($t7) -/* f00b150: 8fad00ec */ lw $t5,0xec($sp) -.L0f00b154: -/* f00b154: 51a00005 */ beqzl $t5,.L0f00b16c -/* f00b158: 8fbf002c */ lw $ra,0x2c($sp) -/* f00b15c: 0fc35272 */ jal func0f0d49c8 -/* f00b160: 8fa40110 */ lw $a0,0x110($sp) -/* f00b164: afa20110 */ sw $v0,0x110($sp) -/* f00b168: 8fbf002c */ lw $ra,0x2c($sp) -.L0f00b16c: -/* f00b16c: 8fa20110 */ lw $v0,0x110($sp) -/* f00b170: 8fb00024 */ lw $s0,0x24($sp) -/* f00b174: 8fb10028 */ lw $s1,0x28($sp) -/* f00b178: 03e00008 */ jr $ra -/* f00b17c: 27bd0110 */ addiu $sp,$sp,0x110 -); - -const u32 var7f1a7e80[] = {0x00000092}; -const u32 var7f1a7e84[] = {0x00000093}; -const u32 var7f1a7e88[] = {0x00000094}; -const u32 var7f1a7e8c[] = {0x00000095}; -const u32 var7f1a7e90[] = {0x00000096}; -const u32 var7f1a7e94[] = {0x00000097}; -const u32 var7f1a7e98[] = {0x00000098}; -const u32 var7f1a7e9c[] = {0x00000099}; -const u32 var7f1a7ea0[] = {0x0000009a}; -const u32 var7f1a7ea4[] = {0x00000091}; -const u32 var7f1a7ea8[] = {0x0000008f}; -const u32 var7f1a7eac[] = {0x00000090}; -#else -// Mismatch: Float calculations Gfx *gasRender(Gfx *gdl) { bool show = false; - f32 alphafrac = 1.0f; // 108 - struct coord campos; // fc - s16 spfa; // fa + f32 alphafrac = 1.0f; + struct coord campos; + s16 layer2t; u32 alpha; s32 i; - bool drawn = false; // ec - const u32 gasrooms[] = { 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x91, 0x8f, 0x90 }; // bc - f32 intensityfrac; // b8 - u32 stack; - f32 frac1; // b0 - f32 frac2; + bool drawn = false; - f32 distance; - u32 *colours; // a4 - struct gfxvtx *vertices; - s16 viewleft; // 9e - s16 viewtop; // 9c - s16 viewright; // 9a - s16 viewbottom; // 98 - f32 fVar19; - f32 camposx; // 8c - f32 camposz; // 88 - f32 sp78; // 78 - s16 sp76; // 76 - s16 sp72; // 72 - s16 sVar15; - s32 uVar21; - f32 sp38; // 38 + const s32 gasrooms[] = { + 0x92, + 0x93, + 0x94, + 0x95, + 0x96, + 0x97, + 0x98, + 0x99, + 0x9a, + 0x91, + 0x8f, + 0x90, + }; if (g_Vars.stagenum == STAGE_ESCAPE) { - intensityfrac = 1.0f; + f32 intensityfrac = 1.0f; campos.x = g_Vars.currentplayer->cam_pos.x; campos.y = g_Vars.currentplayer->cam_pos.y; @@ -2829,7 +2246,7 @@ Gfx *gasRender(Gfx *gdl) if (!show) { // Outside of the gas rooms list - check distance to abitrary point - distance = sqrtf( + f32 distance = sqrtf( (campos.f[0] - -1473.0f) * (campos.f[0] - -1473.0f) + (campos.f[1] - -308.0f) * (campos.f[1] - -308.0f) + (campos.f[2] - -13660.0f) * (campos.f[2] - -13660.0f)); @@ -2842,8 +2259,8 @@ Gfx *gasRender(Gfx *gdl) } else { if (roomContainsCoord(&campos, 0x91)) { // In the small room between the first two doors - frac1 = gasGetDoorFrac(0x30); - frac2 = gasGetDoorFrac(0x31); + f32 frac1 = gasGetDoorFrac(0x30); + f32 frac2 = gasGetDoorFrac(0x31); if (frac2 > frac1) { intensityfrac = frac2; @@ -2860,54 +2277,49 @@ Gfx *gasRender(Gfx *gdl) if (show && g_Vars.tickmode == TICKMODE_CUTSCENE) { if (g_CutsceneCurAnimFrame60 < 2180) { show = false; - } else { - if (g_CutsceneCurAnimFrame60 < 2600) { - alphafrac *= (g_CutsceneCurAnimFrame60 - 2180) / 420.0f; - } + } else if (g_CutsceneCurAnimFrame60 < 2600) { + f32 tmp = (g_CutsceneCurAnimFrame60 - 2180) / 420.0f; + alphafrac *= tmp; } } if (show) { - f32 lookx; - f32 lookz; - f32 tmp; - f32 tmp2; - s32 tmp3; - colours = gfxAllocateColours(1); - vertices = gfxAllocateVertices(8); - viewleft = viGetViewLeft() * 10; - viewtop = viGetViewTop() * 10; - viewright = (viGetViewLeft() + viGetViewWidth()) * 10; - viewbottom = (viGetViewTop() + viGetViewHeight()) * 10; + u32 *colours = gfxAllocateColours(1); + struct gfxvtx *vertices = gfxAllocateVertices(8); + s16 viewleft = viGetViewLeft() * 10; + s16 viewtop = viGetViewTop() * 10; + s16 viewright = (s16) (viGetViewLeft() + viGetViewWidth()) * 10; + s16 viewbottom = (s16) (viGetViewTop() + viGetViewHeight()) * 10; + f32 lookx = g_Vars.currentplayer->cam_look.x; + f32 lookz = g_Vars.currentplayer->cam_look.z; + f32 camposx = g_Vars.currentplayer->cam_pos.x; + f32 camposz = g_Vars.currentplayer->cam_pos.z; + f32 f2; + f32 f16; + s32 stack; + f32 sp78; + s16 layer2s; + s16 layer1s; + s16 layer1t; - lookx = g_Vars.currentplayer->cam_look.x; - lookz = g_Vars.currentplayer->cam_look.z; - camposx = g_Vars.currentplayer->cam_pos.f[0]; - camposz = g_Vars.currentplayer->cam_pos.f[2]; + f2 = (camposx + camposz) / 3000.0f; + f16 = (f2 - (s32) f2); sp78 = atan2f(-lookx, lookz) / M_BADTAU; - sp38 = (func0f006b08(4) - 0.5f) / 6.0f; - fVar19 = (camposx + camposz) / 3000.0f; - fVar19 -= (s32)fVar19; - tmp = sp38 + sp78 + fVar19 * 1.5f; + layer2s = ((s32) (2.0f * ((menuGetSinOscFrac(4.0f) - 0.5f) / 6.0f + sp78 + f16 * 1.5f) * 128.0f * 32.0f) % 2048); + layer1s = ((s32) (2.0f * ((menuGetCosOscFrac(4.0f) - 0.5f) / -9.0f + sp78 + f16) * 128.0f * 32.0f) % 2048); - sp76 = (s32)((2.0f * tmp) * 128.0f * 32.0f) % 0x800; + layer2t = (s16) ((s32) (campos.y * 8.0f) % 2048) + (s16) (2.0f * g_20SecIntervalFrac * 128.0f * 32.0f); + layer1t = (s16) ((s32) (campos.y * 8.0f) % 2048) + (s16) (2.0f * g_20SecIntervalFrac * 64.0f * 32.0f); - tmp2 = (func0f006b54(4) - 0.5f) / -9.0f; drawn = true; - fVar19 = tmp2 + sp78 + sp38; - - sVar15 = (s32)((2.0f * fVar19) * 128.0f * 32.0f) % 0x800; - - tmp3 = (s32)(campos.y * 8.0f) % 0x800; - - spfa = tmp3 + (s32)((2.0f * var80061630) * 128.0f * 32.0f); - sp72 = tmp3 + (s32)((2.0f * var80061630) * 64.0f * 32.0f); gdl = func0f0d479c(gdl); - texSelect(&gdl, &g_TexGeneralConfigs[6], 4, 1, 2, 1, NULL); + if (1); + + texSelect(&gdl, &g_TexGeneralConfigs[6], 4, 1, 2, true, NULL); gDPPipeSync(gdl++); gDPSetCycleType(gdl++, G_CYC_1CYCLE); @@ -2922,53 +2334,66 @@ Gfx *gasRender(Gfx *gdl) vertices[0].x = viewleft; vertices[0].y = viewtop; vertices[0].z = -10; - vertices[1].z = -10; - vertices[2].z = -10; - vertices[3].z = -10; - vertices[4].z = -10; - vertices[5].z = -10; - vertices[6].z = -10; - vertices[7].z = -10; - vertices[0].s = sVar15; - vertices[0].t = sp72; - vertices[1].y = viewtop; - vertices[4].y = viewtop; - vertices[5].y = viewtop; - vertices[3].x = viewleft; - vertices[4].x = viewleft; - vertices[7].x = viewleft; - vertices[2].y = viewbottom; - vertices[3].y = viewbottom; - vertices[6].y = viewbottom; - vertices[7].y = viewbottom; + vertices[1].x = viewright; + vertices[1].y = viewtop; + vertices[1].z = -10; + vertices[2].x = viewright; + vertices[2].y = viewbottom; + vertices[2].z = -10; + + vertices[3].x = viewleft; + vertices[3].y = viewbottom; + vertices[3].z = -10; + + vertices[4].x = viewleft; + vertices[4].y = viewtop; + vertices[4].z = -10; + vertices[5].x = viewright; + vertices[5].y = viewtop; + vertices[5].z = -10; + vertices[6].x = viewright; - vertices[1].s = sVar15 + 960; - vertices[2].s = sVar15 + 960; - vertices[2].t = sp72 + 640; - vertices[3].s = sVar15; - vertices[3].t = sp72 + 640; + vertices[6].y = viewbottom; + vertices[6].z = -10; + + vertices[7].x = viewleft; + vertices[7].y = viewbottom; + vertices[7].z = -10; + + vertices[0].s = layer1s; + vertices[0].t = layer1t; + vertices[1].s = layer1s + 960; + vertices[1].t = layer1t; + vertices[2].s = layer1s + 960; + vertices[2].t = layer1t + 640; + vertices[3].s = layer1s; + vertices[3].t = layer1t + 640; + vertices[0].colour = 0; vertices[1].colour = 0; vertices[2].colour = 0; vertices[3].colour = 0; - vertices[1].t = sp72; - vertices[4].t = spfa; - vertices[4].s = sp76; - vertices[5].s = sp76 + 640; - vertices[6].s = sp76 + 640; - vertices[6].t = spfa + 480; - vertices[7].t = spfa + 480; + + vertices[4].s = layer2s; + vertices[4].t = layer2t; + vertices[5].s = layer2s + 640; + vertices[5].t = layer2t; + vertices[6].s = layer2s + 640; + vertices[6].t = layer2t + 480; + vertices[7].s = layer2s; + vertices[7].t = layer2t + 480; + vertices[4].colour = 0; vertices[5].colour = 0; vertices[6].colour = 0; vertices[7].colour = 0; - vertices[5].t = spfa; - vertices[7].s = sp76; - colours[0] = 0x3faf1100 | (u32)(alphafrac * 127.0f); + alpha = 127.0f * alphafrac; + + colours[0] = 0x3faf1100 | alpha; gDPSetColorArray(gdl++, osVirtualToPhysical(colours), 1); gDPSetVerticeArray(gdl++, osVirtualToPhysical(vertices), 8); @@ -2983,4 +2408,3 @@ Gfx *gasRender(Gfx *gdl) return gdl; } -#endif diff --git a/src/game/savebuffer.c b/src/game/savebuffer.c index 98af09c5f..18705c2ef 100644 --- a/src/game/savebuffer.c +++ b/src/game/savebuffer.c @@ -329,15 +329,15 @@ Gfx *menugfxDrawPlane(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u32 vertices[3].z = -10 - a1; if (type == MENUPLANE_10) { - t1 = var80061630 * sp34 * 64.0f * 32.0f; + t1 = g_20SecIntervalFrac * sp34 * 64.0f * 32.0f; } else { - t1 = (var80061630 - 0.5f) * sp34 * 64.0f * 32.0f; + t1 = (g_20SecIntervalFrac - 0.5f) * sp34 * 64.0f * 32.0f; } if (type == MENUPLANE_10) { - a1_2 = (var80061630 - 0.5f) * sp30 * 64.0f * 32.0f; + a1_2 = (g_20SecIntervalFrac - 0.5f) * sp30 * 64.0f * 32.0f; } else { - a1_2 = var80061630 * sp30 * 64.0f * 32.0f; + a1_2 = g_20SecIntervalFrac * sp30 * 64.0f * 32.0f; } vertices[0].s = sp2e + t1; diff --git a/src/game/sky.c b/src/game/sky.c index 21e2d4638..47142e4c3 100644 --- a/src/game/sky.c +++ b/src/game/sky.c @@ -4542,7 +4542,7 @@ Gfx *sky0f126c3c(Gfx *gdl, f32 x, f32 y, f32 z, f32 arg4, f32 arg5) */ Gfx *sky0f126de8(Gfx *gdl) { - f32 sp154 = var80061630 * M_BADTAU; + f32 sp154 = g_20SecIntervalFrac * M_BADTAU; s32 i; f32 f20 = 0.0f; f32 f20_2; diff --git a/src/game/stars.c b/src/game/stars.c index 4db12f449..3f15c28a5 100644 --- a/src/game/stars.c +++ b/src/game/stars.c @@ -224,10 +224,10 @@ Gfx *starsRender(Gfx *gdl) isddtower = true; } - colours[0] = colourBlend(0xffffff7f, 0x7777777f, func0f006b08(2) * 255); - colours[1] = colourBlend(0x0000aa7f, 0x2222ff7f, func0f006b08(4) * 255); - colours[2] = colourBlend(0x0000ff7f, 0x5555ff7f, func0f006b54(2) * 255); - colours[3] = colourBlend(0xaaaaff7f, 0x7777ff7f, func0f006b54(4) * 255); + colours[0] = colourBlend(0xffffff7f, 0x7777777f, menuGetSinOscFrac(2) * 255); + colours[1] = colourBlend(0x0000aa7f, 0x2222ff7f, menuGetSinOscFrac(4) * 255); + colours[2] = colourBlend(0x0000ff7f, 0x5555ff7f, menuGetCosOscFrac(2) * 255); + colours[3] = colourBlend(0xaaaaff7f, 0x7777ff7f, menuGetCosOscFrac(4) * 255); if (isddtower) { for (i = 0; i < 3; i++) { diff --git a/src/game/title.c b/src/game/title.c index c565c945c..e1f3c001e 100644 --- a/src/game/title.c +++ b/src/game/title.c @@ -8037,7 +8037,7 @@ Gfx *titleRenderRarePresents(Gfx *gdl) g_TitleAudioHandle = NULL; } - if (((s32)(var80061630 * 80.0f) % 2) == 0) { + if (((s32)(g_20SecIntervalFrac * 80.0f) % 2) == 0) { u32 colour = (colourcomponent << 8) | 0x7f7fffff | (colourcomponent << 16); gdl = text0f153a34(gdl, x + 2, y, x + 12, y + 20, colour); } diff --git a/src/game/trainingmenus.c b/src/game/trainingmenus.c index 3f38a39ad..bc18a02e0 100644 --- a/src/game/trainingmenus.c +++ b/src/game/trainingmenus.c @@ -230,8 +230,8 @@ s32 frTrainingInfoMenuDialog(s32 operation, struct menudialogdef *dialogdef, uni case MENUOP_TICK: if (g_Menus[g_MpPlayerNum].curdialog && g_Menus[g_MpPlayerNum].curdialog->definition == dialogdef) { g_Menus[g_MpPlayerNum].unk840.unk574 -= g_Vars.diffframe60; - g_Menus[g_MpPlayerNum].unk840.unk54c = 18.849555969238f * var80061630; - g_Menus[g_MpPlayerNum].unk840.unk524 = 18.849555969238f * var80061630; + g_Menus[g_MpPlayerNum].unk840.unk54c = 18.849555969238f * g_20SecIntervalFrac; + g_Menus[g_MpPlayerNum].unk840.unk524 = 18.849555969238f * g_20SecIntervalFrac; g_Menus[g_MpPlayerNum].unk840.unk528 = 0; g_Menus[g_MpPlayerNum].unk840.unk550 = 0; } @@ -1935,8 +1935,8 @@ s32 dtTrainingDetailsMenuDialog(s32 operation, struct menudialogdef *dialogdef, g_Menus[g_MpPlayerNum].unk840.unk574 = TICKS(120); } - g_Menus[g_MpPlayerNum].unk840.unk54c = 18.849555969238f * var80061630; - g_Menus[g_MpPlayerNum].unk840.unk524 = 18.849555969238f * var80061630; + g_Menus[g_MpPlayerNum].unk840.unk54c = 18.849555969238f * g_20SecIntervalFrac; + g_Menus[g_MpPlayerNum].unk840.unk524 = 18.849555969238f * g_20SecIntervalFrac; g_Menus[g_MpPlayerNum].unk840.unk550 = 0; g_Menus[g_MpPlayerNum].unk840.unk528 = 0; } diff --git a/src/include/data.h b/src/include/data.h index 1c67db3ca..9fd572a17 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -105,8 +105,8 @@ extern char udigs[]; extern Gfx var80061360[]; extern Gfx var80061380[]; extern Gfx var800613a0[]; -extern f32 var80061630; -extern f32 var80061634; +extern f32 g_20SecIntervalFrac; +extern f32 g_Lv80SecIntervalFrac; extern bool g_NbombsActive; extern s32 g_WeatherActive; extern u32 var80062410; diff --git a/src/include/game/game_006900.h b/src/include/game/game_006900.h index a83c9e0b8..203a12c51 100644 --- a/src/include/game/game_006900.h +++ b/src/include/game/game_006900.h @@ -5,10 +5,10 @@ #include "types.h" u32 colourBlend(u32 a, u32 b, u32 weight); -void func0f0069dc(void); -f32 func0f006b08(f32 arg0); -f32 func0f006b54(f32 arg0); -f32 func0f006ba0(f32 arg0); -f32 func0f006bd0(f32 arg0); +void menuTickTimers(void); +f32 menuGetSinOscFrac(f32 freq); +f32 menuGetCosOscFrac(f32 freq); +f32 menuGetLinearIntervalFrac(f32 freq); +f32 menuGetLinearOscPauseFrac(f32 frac); #endif diff --git a/src/include/types.h b/src/include/types.h index 57563fbeb..c1ab6ee49 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -117,7 +117,7 @@ struct g_vars { /*000040*/ s32 diffframe240; /*000044*/ f32 lvupdate240f; /*000048*/ f32 diffframe240f; - /*00004c*/ f32 lvupdate240freal; // actually a 60 value? + /*00004c*/ f32 lvupdate240freal; // actually a 60 value /*000050*/ f32 lvupdate240frealprev; /*000054*/ s32 lastframe240; /*000058*/ s32 thisframe240; diff --git a/tools/mkrom/piracy.c b/tools/mkrom/piracy.c index 35878b723..27f0e21f2 100644 --- a/tools/mkrom/piracy.c +++ b/tools/mkrom/piracy.c @@ -165,6 +165,6 @@ void piracy_patch(void) patch(algo08, "chrConsiderGrenadeThrow", "bgReset"); patch(algo09, "bgunTickGunLoad", "tagsReset"); patch(algo10, "explosionAlertChrs", "glassDestroy"); - patch(algo11, "func0f0069dc", "mtxGetObfuscatedRomBase"); - patch(algo12, "func0f15c920", "func0f0069dc"); + patch(algo11, "menuTickTimers", "mtxGetObfuscatedRomBase"); + patch(algo12, "func0f15c920", "menuTickTimers"); }