Decompile currentPlayerScissorWithinViewportF

This commit is contained in:
Ryan Dwyer
2021-02-18 20:29:19 +10:00
parent f2300bfb0b
commit b218470c6b
8 changed files with 36 additions and 58 deletions
+2 -2
View File
@@ -6646,9 +6646,9 @@ Gfx *chrRender(struct prop *prop, Gfx *gdl, bool withalpha)
}
if (func0f08e5a8(prop->rooms, &screenbox) > 0 && (chr->chrflags & CHRCFLAG_UNPLAYABLE) == 0) {
gdl = currentPlayerSetScissor(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
gdl = currentPlayerScissorWithinViewport(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
} else {
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
}
renderdata.unk08 = sp100;
+4 -4
View File
@@ -936,7 +936,7 @@ Gfx *coreRender(Gfx *gdl)
gdl = func0000b1d0(gdl);
gdl = func0000b330(gdl);
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
gdl = func0f0fbc30(gdl);
} else if (g_Vars.stagenum == STAGE_4MBMENU) {
gSPClipRatio(gdl++, FRUSTRATIO_2);
@@ -950,7 +950,7 @@ Gfx *coreRender(Gfx *gdl)
func00016748(1);
gdl = func0000b1d0(gdl);
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
gdl = func0f0fbc30(gdl);
if (g_Vars.currentplayer->pausemode != PAUSEMODE_UNPAUSED) {
@@ -1046,7 +1046,7 @@ Gfx *coreRender(Gfx *gdl)
func0f176298();
gdl = func0000b280(gdl);
gdl = func0000b1d0(gdl);
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
func0f13c510();
if ((g_Vars.stagenum != STAGE_CITRAINING || (var80087260 <= 0 && g_MenuData.root != MENUROOT_MPSETUP))
@@ -1071,7 +1071,7 @@ Gfx *coreRender(Gfx *gdl)
g_Vars.lockscreen--;
} else if (var8009dfc0) {
gdl = func0000b330(gdl);
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
func00016748(1);
if (g_Vars.currentplayer->unk1c50_01) {
+2 -2
View File
@@ -2907,9 +2907,9 @@ Gfx *explosionRender(struct prop *prop, Gfx *gdl, bool withalpha)
s32 tmp;
if (func0f08e5a8(prop->rooms, &screenbox) > 0) {
gdl = currentPlayerSetScissor(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
gdl = currentPlayerScissorWithinViewport(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
} else {
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
}
gSPClearGeometryMode(gdl++, G_CULL_BOTH | G_FOG);
+1 -1
View File
@@ -410,7 +410,7 @@ Gfx *propsRender(Gfx *gdl, s16 arg1, s32 arg2, s16 *arg3)
}
}
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
return gdl;
}
+4 -4
View File
@@ -30684,14 +30684,14 @@ glabel var7f1aa82c
/* f08173c: 87a6009a */ lh $a2,0x9a($sp)
/* f081740: 87a7009c */ lh $a3,0x9c($sp)
/* f081744: afa8007c */ sw $t0,0x7c($sp)
/* f081748: 0fc57306 */ jal currentPlayerSetScissor
/* f081748: 0fc57306 */ jal currentPlayerScissorWithinViewport
/* f08174c: afa90010 */ sw $t1,0x10($sp)
/* f081750: 10000005 */ b .L0f081768
/* f081754: 8fa8007c */ lw $t0,0x7c($sp)
.L0f081758:
/* f081758: 8fa400fc */ lw $a0,0xfc($sp)
.L0f08175c:
/* f08175c: 0fc572dd */ jal func0f15cb74
/* f08175c: 0fc572dd */ jal currentPlayerScissorToViewport
/* f081760: afa8007c */ sw $t0,0x7c($sp)
/* f081764: 8fa8007c */ lw $t0,0x7c($sp)
.L0f081768:
@@ -31149,9 +31149,9 @@ glabel var7f1aa82c
// }
//
// if ((obj->flags2 & OBJFLAG2_04000000) == 0 && func0f08e5a8(prop->rooms, &screenbox) > 0) {
// gdl = currentPlayerSetScissor(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
// gdl = currentPlayerScissorWithinViewport(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
// } else {
// gdl = func0f15cb74(gdl);
// gdl = currentPlayerScissorToViewport(gdl);
// }
//
// renderdata.unk08 = sp84;
+18 -40
View File
@@ -2810,7 +2810,7 @@ glabel func0f15a2c4
/* f15a4a8: afaa0238 */ sw $t2,0x238($sp)
/* f15a4ac: ad320004 */ sw $s2,0x4($t1)
/* f15a4b0: ad310000 */ sw $s1,0x0($t1)
/* f15a4b4: 0fc572dd */ jal func0f15cb74
/* f15a4b4: 0fc572dd */ jal currentPlayerScissorToViewport
/* f15a4b8: 8fa40238 */ lw $a0,0x238($sp)
/* f15a4bc: 3c12800a */ lui $s2,%hi(var800a4ce4)
/* f15a4c0: 26524ce4 */ addiu $s2,$s2,%lo(var800a4ce4)
@@ -2853,7 +2853,7 @@ glabel func0f15a2c4
/* f15a544: 1020ffe8 */ beqz $at,.L0f15a4e8
/* f15a548: 00000000 */ nop
.L0f15a54c:
/* f15a54c: 0fc572dd */ jal func0f15cb74
/* f15a54c: 0fc572dd */ jal currentPlayerScissorToViewport
/* f15a550: 8fa40238 */ lw $a0,0x238($sp)
/* f15a554: 244e0008 */ addiu $t6,$v0,0x8
/* f15a558: afae0238 */ sw $t6,0x238($sp)
@@ -2903,7 +2903,7 @@ glabel func0f15a2c4
/* f15a600: 44063000 */ mfc1 $a2,$f6
/* f15a604: 46805420 */ cvt.s.w $f16,$f10
/* f15a608: 44052000 */ mfc1 $a1,$f4
/* f15a60c: 0fc572ed */ jal func0f15cbb4
/* f15a60c: 0fc572ed */ jal currentPlayerScissorWithinViewportF
/* f15a610: e7b00010 */ swc1 $f16,0x10($sp)
/* f15a614: 244d0008 */ addiu $t5,$v0,0x8
/* f15a618: afad0238 */ sw $t5,0x238($sp)
@@ -3049,7 +3049,7 @@ glabel func0f15a6f4
/* f15a808: 00000000 */ nop
.L0f15a80c:
/* f15a80c: 02202025 */ or $a0,$s1,$zero
/* f15a810: 0fc572dd */ jal func0f15cb74
/* f15a810: 0fc572dd */ jal currentPlayerScissorToViewport
/* f15a814: 0000a025 */ or $s4,$zero,$zero
/* f15a818: 3c03800a */ lui $v1,%hi(g_Vars+0x284)
/* f15a81c: 8c63a244 */ lw $v1,%lo(g_Vars+0x284)($v1)
@@ -3427,7 +3427,7 @@ glabel func0f15a6f4
/* f15ad64: 44063000 */ mfc1 $a2,$f6
/* f15ad68: 46805420 */ cvt.s.w $f16,$f10
/* f15ad6c: 44052000 */ mfc1 $a1,$f4
/* f15ad70: 0fc572ed */ jal func0f15cbb4
/* f15ad70: 0fc572ed */ jal currentPlayerScissorWithinViewportF
/* f15ad74: e7b00010 */ swc1 $f16,0x10($sp)
/* f15ad78: 00402025 */ or $a0,$v0,$zero
/* f15ad7c: 0fc59928 */ jal func0f1664a0
@@ -3497,7 +3497,7 @@ glabel func0f15a6f4
.L0f15ae6c:
/* f15ae6c: 0fc599b2 */ jal gfxConsiderDisableFog
/* f15ae70: 02202025 */ or $a0,$s1,$zero
/* f15ae74: 0fc572dd */ jal func0f15cb74
/* f15ae74: 0fc572dd */ jal currentPlayerScissorToViewport
/* f15ae78: 00402025 */ or $a0,$v0,$zero
/* f15ae7c: 3c0f0103 */ lui $t7,0x103
/* f15ae80: 35ef0040 */ ori $t7,$t7,0x40
@@ -3584,7 +3584,7 @@ glabel func0f15a6f4
/* f15afb8: 44062000 */ mfc1 $a2,$f4
/* f15afbc: 468042a0 */ cvt.s.w $f10,$f8
/* f15afc0: 44059000 */ mfc1 $a1,$f18
/* f15afc4: 0fc572ed */ jal func0f15cbb4
/* f15afc4: 0fc572ed */ jal currentPlayerScissorWithinViewportF
/* f15afc8: e7aa0010 */ swc1 $f10,0x10($sp)
/* f15afcc: 00402025 */ or $a0,$v0,$zero
/* f15afd0: 0fc59928 */ jal func0f1664a0
@@ -6686,7 +6686,7 @@ Gfx *bgRender(Gfx *gdl)
gdl = func0f1664a0(gdl, 0);
gdl = func0f164150(gdl);
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
gdl = gfxConsiderDisableFog(gdl);
gSPMatrix(gdl++, var80092870, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
@@ -6706,45 +6706,23 @@ glabel func0f15cb5c
/* f15cb70: c7000004 */ lwc1 $f0,0x4($t8)
);
Gfx *func0f15cb74(Gfx *gdl)
Gfx *currentPlayerScissorToViewport(Gfx *gdl)
{
return currentPlayerSetScissor(gdl,
return currentPlayerScissorWithinViewport(gdl,
g_Vars.currentplayer->viewleft,
g_Vars.currentplayer->viewtop,
g_Vars.currentplayer->viewleft + g_Vars.currentplayer->viewx,
g_Vars.currentplayer->viewtop + g_Vars.currentplayer->viewy);
}
GLOBAL_ASM(
glabel func0f15cbb4
/* f15cbb4: 27bdffd8 */ addiu $sp,$sp,-40
/* f15cbb8: afbf001c */ sw $ra,0x1c($sp)
/* f15cbbc: 44876000 */ mtc1 $a3,$f12
/* f15cbc0: afa40028 */ sw $a0,0x28($sp)
/* f15cbc4: afa5002c */ sw $a1,0x2c($sp)
/* f15cbc8: 0fc25e7a */ jal ceil
/* f15cbcc: afa60030 */ sw $a2,0x30($sp)
/* f15cbd0: afa20020 */ sw $v0,0x20($sp)
/* f15cbd4: 0fc25e7a */ jal ceil
/* f15cbd8: c7ac0038 */ lwc1 $f12,0x38($sp)
/* f15cbdc: c7a4002c */ lwc1 $f4,0x2c($sp)
/* f15cbe0: c7a80030 */ lwc1 $f8,0x30($sp)
/* f15cbe4: 8fa40028 */ lw $a0,0x28($sp)
/* f15cbe8: 4600218d */ trunc.w.s $f6,$f4
/* f15cbec: 8fa70020 */ lw $a3,0x20($sp)
/* f15cbf0: afa20010 */ sw $v0,0x10($sp)
/* f15cbf4: 4600428d */ trunc.w.s $f10,$f8
/* f15cbf8: 44053000 */ mfc1 $a1,$f6
/* f15cbfc: 44065000 */ mfc1 $a2,$f10
/* f15cc00: 0fc57306 */ jal currentPlayerSetScissor
/* f15cc04: 00000000 */ nop
/* f15cc08: 8fbf001c */ lw $ra,0x1c($sp)
/* f15cc0c: 27bd0028 */ addiu $sp,$sp,0x28
/* f15cc10: 03e00008 */ jr $ra
/* f15cc14: 00000000 */ nop
);
Gfx *currentPlayerScissorWithinViewportF(Gfx *gdl, f32 viewleft, f32 viewtop, f32 viewright, f32 viewbottom)
{
gdl = currentPlayerScissorWithinViewport(gdl, viewleft, viewtop, ceil(viewright), ceil(viewbottom));
Gfx *currentPlayerSetScissor(Gfx *gdl, s32 viewleft, s32 viewtop, s32 viewright, s32 viewbottom)
return gdl;
}
Gfx *currentPlayerScissorWithinViewport(Gfx *gdl, s32 viewleft, s32 viewtop, s32 viewright, s32 viewbottom)
{
if (viewleft < g_Vars.currentplayer->viewleft) {
viewleft = g_Vars.currentplayer->viewleft;
@@ -14665,7 +14643,7 @@ glabel var7f1b76c0
/* f164168: f7b60018 */ sdc1 $f22,0x18($sp)
/* f16416c: 0fc569bd */ jal func0f15a6f4
/* f164170: f7b40010 */ sdc1 $f20,0x10($sp)
/* f164174: 0fc572dd */ jal func0f15cb74
/* f164174: 0fc572dd */ jal currentPlayerScissorToViewport
/* f164178: 00402025 */ or $a0,$v0,$zero
/* f16417c: 3c03800a */ lui $v1,%hi(g_Vars)
/* f164180: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars)
+2 -2
View File
@@ -2064,9 +2064,9 @@ Gfx *smokeRender(struct prop *prop, Gfx *gdl, bool withalpha)
}
if (func0f08e5a8(prop->rooms, &screenbox) > 0) {
gdl = currentPlayerSetScissor(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
gdl = currentPlayerScissorWithinViewport(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
} else {
gdl = func0f15cb74(gdl);
gdl = currentPlayerScissorToViewport(gdl);
}
gSPClearGeometryMode(gdl++, G_CULL_BOTH | G_FOG);
+3 -3
View File
@@ -34,9 +34,9 @@ void currentPlayerSetScaleBg2Gfx(f32 arg0);
void func0f15c920(void);
void func0f15ca00(void);
Gfx *bgRender(Gfx *gdl);
Gfx *func0f15cb74(Gfx *gdl);
u32 func0f15cbb4(void);
Gfx *currentPlayerSetScissor(Gfx *gdl, s32 viewleft, s32 viewtop, s32 viewright, s32 viewbottom);
Gfx *currentPlayerScissorToViewport(Gfx *gdl);
Gfx *currentPlayerScissorWithinViewportF(Gfx *gdl, f32 viewleft, f32 viewtop, f32 viewright, f32 viewbottom);
Gfx *currentPlayerScissorWithinViewport(Gfx *gdl, s32 viewleft, s32 viewtop, s32 viewright, s32 viewbottom);
void func0f15cd28(void);
bool func0f15cd90(u32 room, struct screenbox *arg1);
bool func0f15d08c(struct coord *a, struct coord *b);