#include "patches.h" #include "overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.h" #include "overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.h" #include "overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.h" #include "overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.h" #include "overlays/actors/ovl_Oceff_Wipe5/z_oceff_wipe5.h" #include "overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.h" #include "overlays/actors/ovl_Oceff_Wipe7/z_oceff_wipe7.h" #include "overlays/actors/ovl_Eff_Stk/z_eff_stk.h" #include "transform_ids.h" // @recomp Custom verts to extend the effects past the camera so they cover any aspect ratio. Vtx time_override_verts[156] = { {{ {-165, 227, 0}, 0, {1229, 1024}, {183, 183, 183, 0} }}, {{ {-206, 283, 300}, 0, {1229, 512}, {183, 183, 183, 160} }}, {{ {0, 350, 300}, 0, {1024, 512}, {183, 183, 183, 160} }}, {{ {-165, 227, 0}, 0, {1229, 1024}, {183, 183, 183, 0} }}, {{ {0, 350, 300}, 0, {1024, 512}, {183, 183, 183, 160} }}, {{ {0, 280, 0}, 0, {1024, 1024}, {183, 183, 183, 0} }}, {{ {-206, 283, 300}, 0, {1229, 512}, {183, 183, 183, 160} }}, {{ {-294, 405, 1000}, 0, {1229, 0}, {183, 183, 183, 255} }}, {{ {0, 500, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {-206, 283, 300}, 0, {1229, 512}, {183, 183, 183, 160} }}, {{ {0, 500, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {0, 350, 300}, 0, {1024, 512}, {183, 183, 183, 160} }}, {{ {-266, 87, 0}, 0, {1434, 1024}, {183, 183, 183, 0} }}, {{ {-333, 108, 300}, 0, {1434, 512}, {183, 183, 183, 160} }}, {{ {-206, 283, 300}, 0, {1229, 512}, {183, 183, 183, 160} }}, {{ {-266, 87, 0}, 0, {1434, 1024}, {183, 183, 183, 0} }}, {{ {-206, 283, 300}, 0, {1229, 512}, {183, 183, 183, 160} }}, {{ {-165, 227, 0}, 0, {1229, 1024}, {183, 183, 183, 0} }}, {{ {-333, 108, 300}, 0, {1434, 512}, {183, 183, 183, 160} }}, {{ {-476, 155, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {-294, 405, 1000}, 0, {1229, 0}, {183, 183, 183, 255} }}, {{ {-333, 108, 300}, 0, {1434, 512}, {183, 183, 183, 160} }}, {{ {-294, 405, 1000}, 0, {1229, 0}, {183, 183, 183, 255} }}, {{ {-206, 283, 300}, 0, {1229, 512}, {183, 183, 183, 160} }}, {{ {-266, -87, 0}, 0, {1638, 1024}, {183, 183, 183, 0} }}, {{ {-333, -108, 300}, 0, {1638, 512}, {183, 183, 183, 160} }}, {{ {-333, 108, 300}, 0, {1434, 512}, {183, 183, 183, 160} }}, {{ {-266, -87, 0}, 0, {1638, 1024}, {183, 183, 183, 0} }}, {{ {-266, 87, 0}, 0, {1434, 1024}, {183, 183, 183, 0} }}, {{ {-333, -108, 300}, 0, {1638, 512}, {183, 183, 183, 160} }}, {{ {-476, -155, 1000}, 0, {1638, 0}, {183, 183, 183, 255} }}, {{ {-476, 155, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {-333, -108, 300}, 0, {1638, 512}, {183, 183, 183, 160} }}, {{ {-476, 155, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {-333, 108, 300}, 0, {1434, 512}, {183, 183, 183, 160} }}, {{ {-165, -227, 0}, 0, {1843, 1024}, {183, 183, 183, 0} }}, {{ {-206, -283, 300}, 0, {1843, 512}, {183, 183, 183, 160} }}, {{ {-333, -108, 300}, 0, {1638, 512}, {183, 183, 183, 160} }}, {{ {-165, -227, 0}, 0, {1843, 1024}, {183, 183, 183, 0} }}, {{ {-333, -108, 300}, 0, {1638, 512}, {183, 183, 183, 160} }}, {{ {-266, -87, 0}, 0, {1638, 1024}, {183, 183, 183, 0} }}, {{ {-206, -283, 300}, 0, {1843, 512}, {183, 183, 183, 160} }}, {{ {-294, -405, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {-476, -155, 1000}, 0, {1638, 0}, {183, 183, 183, 255} }}, {{ {-206, -283, 300}, 0, {1843, 512}, {183, 183, 183, 160} }}, {{ {-476, -155, 1000}, 0, {1638, 0}, {183, 183, 183, 255} }}, {{ {0, -280, 0}, 0, {2048, 1024}, {183, 183, 183, 0} }}, {{ {0, -350, 300}, 0, {2048, 512}, {183, 183, 183, 160} }}, {{ {-206, -283, 300}, 0, {1843, 512}, {183, 183, 183, 160} }}, {{ {-165, -227, 0}, 0, {1843, 1024}, {183, 183, 183, 0} }}, {{ {0, -350, 300}, 0, {2048, 512}, {183, 183, 183, 160} }}, {{ {0, -500, 1000}, 0, {2048, 0}, {183, 183, 183, 255} }}, {{ {-294, -405, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {0, -350, 300}, 0, {2048, 512}, {183, 183, 183, 160} }}, {{ {-294, -405, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {-206, -283, 300}, 0, {1843, 512}, {183, 183, 183, 160} }}, {{ {165, -227, 0}, 0, {205, 1024}, {183, 183, 183, 0} }}, {{ {206, -283, 300}, 0, {205, 512}, {183, 183, 183, 160} }}, {{ {0, -350, 300}, 0, {0, 512}, {183, 183, 183, 160} }}, {{ {165, -227, 0}, 0, {205, 1024}, {183, 183, 183, 0} }}, {{ {0, -350, 300}, 0, {0, 512}, {183, 183, 183, 160} }}, {{ {0, -280, 0}, 0, {0, 1024}, {183, 183, 183, 0} }}, {{ {206, -283, 300}, 0, {205, 512}, {183, 183, 183, 160} }}, {{ {294, -405, 1000}, 0, {205, 0}, {183, 183, 183, 255} }}, {{ {0, -500, 1000}, 0, {0, 0}, {183, 183, 183, 255} }}, {{ {206, -283, 300}, 0, {205, 512}, {183, 183, 183, 160} }}, {{ {0, -500, 1000}, 0, {0, 0}, {183, 183, 183, 255} }}, {{ {0, -350, 300}, 0, {0, 512}, {183, 183, 183, 160} }}, {{ {266, -87, 0}, 0, {410, 1024}, {183, 183, 183, 0} }}, {{ {333, -108, 300}, 0, {410, 512}, {183, 183, 183, 160} }}, {{ {206, -283, 300}, 0, {205, 512}, {183, 183, 183, 160} }}, {{ {266, -87, 0}, 0, {410, 1024}, {183, 183, 183, 0} }}, {{ {206, -283, 300}, 0, {205, 512}, {183, 183, 183, 160} }}, {{ {165, -227, 0}, 0, {205, 1024}, {183, 183, 183, 0} }}, {{ {333, -108, 300}, 0, {410, 512}, {183, 183, 183, 160} }}, {{ {476, -155, 1000}, 0, {410, 0}, {183, 183, 183, 255} }}, {{ {294, -405, 1000}, 0, {205, 0}, {183, 183, 183, 255} }}, {{ {333, -108, 300}, 0, {410, 512}, {183, 183, 183, 160} }}, {{ {294, -405, 1000}, 0, {205, 0}, {183, 183, 183, 255} }}, {{ {206, -283, 300}, 0, {205, 512}, {183, 183, 183, 160} }}, {{ {266, 87, 0}, 0, {614, 1024}, {183, 183, 183, 0} }}, {{ {333, 108, 300}, 0, {614, 512}, {183, 183, 183, 160} }}, {{ {333, -108, 300}, 0, {410, 512}, {183, 183, 183, 160} }}, {{ {266, 87, 0}, 0, {614, 1024}, {183, 183, 183, 0} }}, {{ {333, -108, 300}, 0, {410, 512}, {183, 183, 183, 160} }}, {{ {266, -87, 0}, 0, {410, 1024}, {183, 183, 183, 0} }}, {{ {333, 108, 300}, 0, {614, 512}, {183, 183, 183, 160} }}, {{ {476, 155, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {476, -155, 1000}, 0, {410, 0}, {183, 183, 183, 255} }}, {{ {333, -108, 300}, 0, {410, 512}, {183, 183, 183, 160} }}, {{ {165, 227, 0}, 0, {819, 1024}, {183, 183, 183, 0} }}, {{ {206, 283, 300}, 0, {819, 512}, {183, 183, 183, 160} }}, {{ {333, 108, 300}, 0, {614, 512}, {183, 183, 183, 160} }}, {{ {165, 227, 0}, 0, {819, 1024}, {183, 183, 183, 0} }}, {{ {333, 108, 300}, 0, {614, 512}, {183, 183, 183, 160} }}, {{ {266, 87, 0}, 0, {614, 1024}, {183, 183, 183, 0} }}, {{ {206, 283, 300}, 0, {819, 512}, {183, 183, 183, 160} }}, {{ {294, 405, 1000}, 0, {819, 0}, {183, 183, 183, 255} }}, {{ {476, 155, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {206, 283, 300}, 0, {819, 512}, {183, 183, 183, 160} }}, {{ {476, 155, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {333, 108, 300}, 0, {614, 512}, {183, 183, 183, 160} }}, {{ {0, 280, 0}, 0, {1024, 1024}, {183, 183, 183, 0} }}, {{ {0, 350, 300}, 0, {1024, 512}, {183, 183, 183, 160} }}, {{ {206, 283, 300}, 0, {819, 512}, {183, 183, 183, 160} }}, {{ {0, 280, 0}, 0, {1024, 1024}, {183, 183, 183, 0} }}, {{ {206, 283, 300}, 0, {819, 512}, {183, 183, 183, 160} }}, {{ {165, 227, 0}, 0, {819, 1024}, {183, 183, 183, 0} }}, {{ {0, 350, 300}, 0, {1024, 512}, {183, 183, 183, 160} }}, {{ {0, 500, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {294, 405, 1000}, 0, {819, 0}, {183, 183, 183, 255} }}, {{ {0, 350, 300}, 0, {1024, 512}, {183, 183, 183, 160} }}, {{ {294, 405, 1000}, 0, {819, 0}, {183, 183, 183, 255} }}, {{ {206, 283, 300}, 0, {819, 512}, {183, 183, 183, 160} }}, {{ {-294, 405, 1000}, 0, {1229, 0}, {169, 218, 84, 255} }}, {{ {-476, 155, 1000}, 0, {1434, 0}, {30, 58, 147, 255} }}, {{ {-758, 247, 2422}, 0, {1373, -1039}, {182, 183, 183, 255} }}, {{ {-468, 645, 2422}, 0, {1168, -1039}, {191, 190, 169, 255} }}, {{ {294, -405, 1000}, 0, {205, 0}, {9, 53, 141, 255} }}, {{ {476, -155, 1000}, 0, {410, 0}, {228, 185, 101, 255} }}, {{ {758, -247, 2422}, 0, {349, -1039}, {183, 182, 183, 255} }}, {{ {468, -645, 2422}, 0, {144, -1039}, {179, 169, 206, 255} }}, {{ {476, 155, 1000}, 0, {614, 0}, {132, 13, 230, 255} }}, {{ {294, 405, 1000}, 0, {819, 0}, {245, 133, 27, 255} }}, {{ {468, 645, 2422}, 0, {758, -1039}, {183, 183, 182, 255} }}, {{ {476, 155, 1000}, 0, {614, 0}, {132, 13, 230, 255} }}, {{ {468, 645, 2422}, 0, {758, -1039}, {183, 183, 182, 255} }}, {{ {758, 247, 2422}, 0, {553, -1039}, {198, 165, 189, 255} }}, {{ {294, 405, 1000}, 0, {819, 0}, {139, 219, 32, 255} }}, {{ {0, 500, 1000}, 0, {1024, 0}, {58, 149, 220, 255} }}, {{ {0, 796, 2422}, 0, {964, -1039}, {183, 183, 182, 255} }}, {{ {468, 645, 2422}, 0, {758, -1039}, {206, 174, 173, 255} }}, {{ {-476, -155, 1000}, 0, {1638, 0}, {197, 146, 231, 255} }}, {{ {-294, -405, 1000}, 0, {1843, 0}, {138, 232, 215, 255} }}, {{ {-468, -645, 2422}, 0, {1782, -1039}, {182, 182, 183, 255} }}, {{ {-758, -247, 2422}, 0, {1577, -1039}, {174, 195, 181, 255} }}, {{ {-294, -405, 1000}, 0, {1843, 0}, {9, 157, 177, 255} }}, {{ {0, -500, 1000}, 0, {2048, 0}, {170, 166, 25, 255} }}, {{ {0, -796, 2422}, 0, {1988, -1039}, {183, 182, 183, 255} }}, {{ {-468, -645, 2422}, 0, {1782, -1039}, {172, 183, 195, 255} }}, {{ {-476, 155, 1000}, 0, {1434, 0}, {159, 188, 45, 255} }}, {{ {-476, -155, 1000}, 0, {1638, 0}, {186, 54, 165, 255} }}, {{ {-758, -247, 2422}, 0, {1578, -1039}, {182, 183, 183, 255} }}, {{ {-758, 247, 2422}, 0, {1374, -1039}, {184, 193, 173, 255} }}, {{ {0, -500, 1000}, 0, {0, 0}, {49, 230, 142, 255} }}, {{ {294, -405, 1000}, 0, {205, 0}, {222, 163, 79, 255} }}, {{ {468, -645, 2422}, 0, {144, -1039}, {183, 182, 183, 255} }}, {{ {0, -796, 2422}, 0, {-60, -1039}, {173, 175, 204, 255} }}, {{ {476, -155, 1000}, 0, {410, 0}, {182, 64, 175, 255} }}, {{ {476, 155, 1000}, 0, {614, 0}, {214, 169, 82, 255} }}, {{ {758, 247, 2422}, 0, {554, -1039}, {183, 183, 182, 255} }}, {{ {758, -247, 2422}, 0, {350, -1039}, {187, 165, 201, 255} }}, {{ {0, 500, 1000}, 0, {1024, 0}, {169, 211, 81, 255} }}, {{ {-294, 405, 1000}, 0, {1229, 0}, {89, 233, 168, 255} }}, {{ {-468, 645, 2422}, 0, {1168, -1039}, {182, 183, 182, 255} }}, {{ {0, 796, 2422}, 0, {964, -1039}, {198, 185, 168, 255} }}, }; Gfx time_override_dl[] = { gsSPVertex(time_override_verts + 0, 32, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), gsSP2Triangles(24, 25, 26, 0, 27, 26, 28, 0), gsSP1Triangle(29, 30, 31, 0), gsSPVertex(time_override_verts + 32, 30, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), gsSP2Triangles(12, 13, 5, 0, 14, 15, 16, 0), gsSP2Triangles(14, 16, 17, 0, 18, 19, 20, 0), gsSP2Triangles(21, 22, 23, 0, 24, 25, 26, 0), gsSP1Triangle(27, 28, 29, 0), gsSPVertex(time_override_verts + 62, 31, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), gsSP1Triangle(28, 29, 30, 0), gsSPVertex(time_override_verts + 93, 32, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), gsSP2Triangles(21, 23, 24, 0, 25, 26, 27, 0), gsSP2Triangles(25, 27, 28, 0, 29, 30, 31, 0), gsSPVertex(time_override_verts + 125, 31, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(3, 5, 6, 0, 7, 8, 9, 0), gsSP2Triangles(7, 9, 10, 0, 11, 12, 13, 0), gsSP2Triangles(11, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(15, 17, 18, 0, 19, 20, 21, 0), gsSP2Triangles(19, 21, 22, 0, 23, 24, 25, 0), gsSP2Triangles(23, 25, 26, 0, 27, 28, 29, 0), gsSP1Triangle(27, 29, 30, 0), gsSPEndDisplayList(), }; Vtx epona_override_verts[100] = { {{ {88, 121, 0}, 0, {1638, 2048}, {183, 183, 183, 0} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {143, 46, 0}, 0, {1229, 2048}, {183, 183, 183, 0} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {143, 46, 0}, 0, {1229, 2048}, {183, 183, 183, 0} }}, {{ {0, 150, 0}, 0, {2048, 2048}, {183, 183, 183, 0} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {88, 121, 0}, 0, {1638, 2048}, {183, 183, 183, 0} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {88, 121, 0}, 0, {1638, 2048}, {183, 183, 183, 0} }}, {{ {-88, 121, 0}, 0, {2458, 2048}, {183, 183, 183, 0} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {183, 183, 183, 255} }}, {{ {0, 150, 0}, 0, {2048, 2048}, {183, 183, 183, 0} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {183, 183, 183, 255} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {0, 150, 0}, 0, {2048, 2048}, {183, 183, 183, 0} }}, {{ {-143, 46, 0}, 0, {2867, 2048}, {183, 183, 183, 0} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {183, 183, 183, 255} }}, {{ {-88, 121, 0}, 0, {2458, 2048}, {183, 183, 183, 0} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {183, 183, 183, 255} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {183, 183, 183, 255} }}, {{ {-88, 121, 0}, 0, {2458, 2048}, {183, 183, 183, 0} }}, {{ {-143, -46, 0}, 0, {3277, 2048}, {183, 183, 183, 0} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {183, 183, 183, 255} }}, {{ {-143, 46, 0}, 0, {2867, 2048}, {183, 183, 183, 0} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {183, 183, 183, 255} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {183, 183, 183, 255} }}, {{ {-143, 46, 0}, 0, {2867, 2048}, {183, 183, 183, 0} }}, {{ {-88, -121, 0}, 0, {3686, 2048}, {183, 183, 183, 0} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {183, 183, 183, 255} }}, {{ {-143, -46, 0}, 0, {3277, 2048}, {183, 183, 183, 0} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {183, 183, 183, 255} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {183, 183, 183, 255} }}, {{ {-143, -46, 0}, 0, {3277, 2048}, {183, 183, 183, 0} }}, {{ {0, -150, 0}, 0, {4096, 2048}, {183, 183, 183, 0} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {183, 183, 183, 255} }}, {{ {-88, -121, 0}, 0, {3686, 2048}, {183, 183, 183, 0} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {183, 183, 183, 255} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {183, 183, 183, 255} }}, {{ {-88, -121, 0}, 0, {3686, 2048}, {183, 183, 183, 0} }}, {{ {93, -285, 1000}, 0, {4301, 0}, {183, 183, 183, 255} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {183, 183, 183, 255} }}, {{ {0, -150, 0}, 0, {4096, 2048}, {183, 183, 183, 0} }}, {{ {143, -46, 0}, 0, {819, 2048}, {183, 183, 183, 0} }}, {{ {243, -176, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {88, -121, 0}, 0, {410, 2048}, {183, 183, 183, 0} }}, {{ {243, -176, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {93, -285, 1000}, 0, {205, 0}, {183, 183, 183, 255} }}, {{ {88, -121, 0}, 0, {410, 2048}, {183, 183, 183, 0} }}, {{ {143, 46, 0}, 0, {1229, 2048}, {183, 183, 183, 0} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {143, -46, 0}, 0, {819, 2048}, {183, 183, 183, 0} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {243, -176, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {143, -46, 0}, 0, {819, 2048}, {183, 183, 183, 0} }}, {{ {88, -121, 0}, 0, {410, 2048}, {183, 183, 183, 0} }}, {{ {93, -285, 1000}, 0, {205, 0}, {183, 183, 183, 255} }}, {{ {0, -150, 0}, 0, {0, 2048}, {183, 183, 183, 0} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {170, 213, 83, 255} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {234, 71, 153, 255} }}, {{ {-447, 0, 2021}, 0, {2971, -2092}, {182, 181, 186, 255} }}, {{ {-362, 262, 2021}, 0, {2561, -2092}, {183, 184, 181, 255} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {239, 135, 220, 255} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {142, 201, 253, 255} }}, {{ {-139, -425, 2021}, 0, {3791, -2092}, {185, 181, 182, 255} }}, {{ {-362, -262, 2021}, 0, {3381, -2092}, {181, 184, 183, 255} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {147, 50, 214, 255} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {211, 150, 53, 255} }}, {{ {362, 262, 2021}, 0, {1333, -2092}, {181, 185, 181, 255} }}, {{ {447, 0, 2021}, 0, {923, -2092}, {184, 179, 185, 255} }}, {{ {243, -176, 1000}, 0, {614, 0}, {231, 85, 165, 255} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {208, 187, 95, 255} }}, {{ {447, 0, 2021}, 0, {923, -2092}, {183, 185, 181, 255} }}, {{ {362, -262, 2021}, 0, {513, -2092}, {182, 180, 186, 255} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {174, 164, 31, 255} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {150, 25, 191, 255} }}, {{ {-362, -262, 2021}, 0, {3381, -2092}, {183, 180, 184, 255} }}, {{ {-447, 0, 2021}, 0, {2971, -2092}, {182, 184, 181, 255} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {58, 185, 168, 255} }}, {{ {93, -285, 1000}, 0, {4301, 0}, {192, 165, 60, 255} }}, {{ {139, -425, 2021}, 0, {4200, -2092}, {184, 183, 181, 255} }}, {{ {-139, -425, 2021}, 0, {3790, -2092}, {180, 182, 185, 255} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {133, 235, 21, 255} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {13, 130, 245, 255} }}, {{ {139, 425, 2021}, 0, {1743, -2092}, {180, 185, 184, 255} }}, {{ {362, 262, 2021}, 0, {1333, -2092}, {186, 180, 182, 255} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {190, 217, 101, 255} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {67, 23, 151, 255} }}, {{ {-362, 262, 2021}, 0, {2561, -2092}, {180, 181, 187, 255} }}, {{ {-139, 425, 2021}, 0, {2153, -2092}, {184, 183, 181, 255} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {171, 203, 78, 255} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {77, 183, 186, 255} }}, {{ {-139, 425, 2021}, 0, {2152, -2092}, {179, 183, 186, 255} }}, {{ {139, 425, 2021}, 0, {1742, -2092}, {185, 182, 181, 255} }}, {{ {93, -285, 1000}, 0, {205, 0}, {58, 29, 147, 255} }}, {{ {243, -176, 1000}, 0, {614, 0}, {221, 182, 97, 255} }}, {{ {362, -262, 2021}, 0, {513, -2092}, {184, 184, 181, 255} }}, {{ {139, -425, 2021}, 0, {105, -2092}, {181, 181, 186, 255} }}, }; Gfx epona_override_dl[] = { gsSPVertex(epona_override_verts + 0, 30, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), gsSPVertex(epona_override_verts + 30, 30, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), gsSPVertex(epona_override_verts + 60, 32, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), gsSPVertex(epona_override_verts + 92, 8, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), gsSPEndDisplayList(), }; Vtx saria_override_verts[100] = { {{ {88, 121, 0}, 0, {1638, 2048}, {183, 183, 183, 0} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {143, 46, 0}, 0, {1229, 2048}, {183, 183, 183, 0} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {143, 46, 0}, 0, {1229, 2048}, {183, 183, 183, 0} }}, {{ {0, 150, 0}, 0, {2048, 2048}, {183, 183, 183, 0} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {88, 121, 0}, 0, {1638, 2048}, {183, 183, 183, 0} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {183, 183, 183, 255} }}, {{ {88, 121, 0}, 0, {1638, 2048}, {183, 183, 183, 0} }}, {{ {-88, 121, 0}, 0, {2458, 2048}, {183, 183, 183, 0} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {183, 183, 183, 255} }}, {{ {0, 150, 0}, 0, {2048, 2048}, {183, 183, 183, 0} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {183, 183, 183, 255} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {183, 183, 183, 255} }}, {{ {0, 150, 0}, 0, {2048, 2048}, {183, 183, 183, 0} }}, {{ {-143, 46, 0}, 0, {2867, 2048}, {183, 183, 183, 0} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {183, 183, 183, 255} }}, {{ {-88, 121, 0}, 0, {2458, 2048}, {183, 183, 183, 0} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {183, 183, 183, 255} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {183, 183, 183, 255} }}, {{ {-88, 121, 0}, 0, {2458, 2048}, {183, 183, 183, 0} }}, {{ {-143, -46, 0}, 0, {3277, 2048}, {183, 183, 183, 0} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {183, 183, 183, 255} }}, {{ {-143, 46, 0}, 0, {2867, 2048}, {183, 183, 183, 0} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {183, 183, 183, 255} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {183, 183, 183, 255} }}, {{ {-143, 46, 0}, 0, {2867, 2048}, {183, 183, 183, 0} }}, {{ {-88, -121, 0}, 0, {3686, 2048}, {183, 183, 183, 0} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {183, 183, 183, 255} }}, {{ {-143, -46, 0}, 0, {3277, 2048}, {183, 183, 183, 0} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {183, 183, 183, 255} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {183, 183, 183, 255} }}, {{ {-143, -46, 0}, 0, {3277, 2048}, {183, 183, 183, 0} }}, {{ {0, -150, 0}, 0, {4096, 2048}, {183, 183, 183, 0} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {183, 183, 183, 255} }}, {{ {-88, -121, 0}, 0, {3686, 2048}, {183, 183, 183, 0} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {183, 183, 183, 255} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {183, 183, 183, 255} }}, {{ {-88, -121, 0}, 0, {3686, 2048}, {183, 183, 183, 0} }}, {{ {88, -121, 0}, 0, {410, 2048}, {183, 183, 183, 0} }}, {{ {93, -285, 1000}, 0, {205, 0}, {183, 183, 183, 255} }}, {{ {0, -150, 0}, 0, {0, 2048}, {183, 183, 183, 0} }}, {{ {93, -285, 1000}, 0, {4301, 0}, {183, 183, 183, 255} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {183, 183, 183, 255} }}, {{ {0, -150, 0}, 0, {4096, 2048}, {183, 183, 183, 0} }}, {{ {143, -46, 0}, 0, {819, 2048}, {183, 183, 183, 0} }}, {{ {243, -176, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {88, -121, 0}, 0, {410, 2048}, {183, 183, 183, 0} }}, {{ {243, -176, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {93, -285, 1000}, 0, {205, 0}, {183, 183, 183, 255} }}, {{ {88, -121, 0}, 0, {410, 2048}, {183, 183, 183, 0} }}, {{ {143, 46, 0}, 0, {1229, 2048}, {183, 183, 183, 0} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {143, -46, 0}, 0, {819, 2048}, {183, 183, 183, 0} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {183, 183, 183, 255} }}, {{ {243, -176, 1000}, 0, {614, 0}, {183, 183, 183, 255} }}, {{ {143, -46, 0}, 0, {819, 2048}, {183, 183, 183, 0} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {132, 235, 21, 255} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {13, 130, 245, 255} }}, {{ {142, 436, 2178}, 0, {1843, 0}, {180, 186, 183, 255} }}, {{ {372, 270, 2178}, 0, {1434, 0}, {186, 181, 181, 255} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {174, 164, 31, 255} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {149, 25, 192, 255} }}, {{ {-372, -270, 2178}, 0, {3482, 0}, {183, 180, 185, 255} }}, {{ {-459, 0, 2178}, 0, {3072, 0}, {182, 184, 182, 255} }}, {{ {243, -176, 1000}, 0, {614, 0}, {232, 84, 164, 255} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {207, 187, 95, 255} }}, {{ {459, 0, 2178}, 0, {1024, 0}, {183, 184, 180, 255} }}, {{ {372, -270, 2178}, 0, {614, 0}, {183, 179, 186, 255} }}, {{ {93, -285, 1000}, 0, {205, 0}, {59, 28, 147, 255} }}, {{ {243, -176, 1000}, 0, {614, 0}, {221, 183, 97, 255} }}, {{ {372, -270, 2178}, 0, {614, 0}, {184, 183, 181, 255} }}, {{ {142, -436, 2178}, 0, {205, 0}, {181, 180, 187, 255} }}, {{ {93, 285, 1000}, 0, {1843, 0}, {171, 203, 78, 255} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {77, 184, 186, 255} }}, {{ {-142, 436, 2178}, 0, {2253, 0}, {179, 184, 185, 255} }}, {{ {142, 436, 2178}, 0, {1843, 0}, {185, 183, 180, 255} }}, {{ {-93, 285, 1000}, 0, {2253, 0}, {190, 217, 101, 255} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {67, 24, 151, 255} }}, {{ {-372, 270, 2178}, 0, {2662, 0}, {180, 182, 187, 255} }}, {{ {-142, 436, 2178}, 0, {2253, 0}, {184, 184, 180, 255} }}, {{ {-243, -176, 1000}, 0, {3482, 0}, {239, 135, 221, 255} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {142, 201, 253, 255} }}, {{ {-142, -436, 2178}, 0, {3891, 0}, {185, 181, 183, 255} }}, {{ {-372, -270, 2178}, 0, {3482, 0}, {180, 184, 184, 255} }}, {{ {300, 0, 1000}, 0, {1024, 0}, {147, 50, 213, 255} }}, {{ {243, 176, 1000}, 0, {1434, 0}, {211, 149, 53, 255} }}, {{ {372, 270, 2178}, 0, {1434, 0}, {182, 186, 180, 255} }}, {{ {459, 0, 2178}, 0, {1024, 0}, {185, 179, 184, 255} }}, {{ {-243, 176, 1000}, 0, {2662, 0}, {171, 212, 83, 255} }}, {{ {-300, 0, 1000}, 0, {3072, 0}, {233, 71, 153, 255} }}, {{ {-459, 0, 2178}, 0, {3072, 0}, {181, 181, 187, 255} }}, {{ {-372, 270, 2178}, 0, {2662, 0}, {183, 184, 181, 255} }}, {{ {-93, -285, 1000}, 0, {3891, 0}, {58, 184, 169, 255} }}, {{ {93, -285, 1000}, 0, {4301, 0}, {192, 165, 61, 255} }}, {{ {142, -436, 2178}, 0, {4301, 0}, {184, 182, 181, 255} }}, {{ {-142, -436, 2178}, 0, {3891, 0}, {180, 182, 186, 255} }}, }; Gfx saria_override_dl[] = { gsSPVertex(saria_override_verts + 0, 30, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), gsSPVertex(saria_override_verts + 30, 30, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), gsSPVertex(saria_override_verts + 60, 32, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), gsSPVertex(saria_override_verts + 92, 8, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), gsSPEndDisplayList(), }; Vtx scarecrow_override_verts[49] = { {{ {88, 121, 0}, 0, {819, 504}, {255, 255, 255, 0} }}, {{ {243, 176, 1000}, 0, {717, -8}, {255, 255, 255, 255} }}, {{ {143, 46, 0}, 0, {614, 504}, {255, 255, 255, 0} }}, {{ {0, 150, 0}, 0, {1024, 504}, {255, 255, 255, 0} }}, {{ {93, 285, 1000}, 0, {922, -8}, {255, 255, 255, 255} }}, {{ {-88, 121, 0}, 0, {1229, 504}, {255, 255, 255, 0} }}, {{ {-93, 285, 1000}, 0, {1126, -8}, {255, 255, 255, 255} }}, {{ {-143, 46, 0}, 0, {1434, 504}, {255, 255, 255, 0} }}, {{ {-243, 176, 1000}, 0, {1331, -8}, {255, 255, 255, 255} }}, {{ {-143, -46, 0}, 0, {1638, 504}, {255, 255, 255, 0} }}, {{ {-300, 0, 1000}, 0, {1536, -8}, {255, 255, 255, 255} }}, {{ {-88, -121, 0}, 0, {1843, 504}, {255, 255, 255, 0} }}, {{ {-243, -176, 1000}, 0, {1741, -8}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {2048, 504}, {255, 255, 255, 0} }}, {{ {-93, -285, 1000}, 0, {1946, -8}, {255, 255, 255, 255} }}, {{ {88, -121, 0}, 0, {205, 504}, {255, 255, 255, 0} }}, {{ {93, -285, 1000}, 0, {102, -8}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {0, 504}, {255, 255, 255, 0} }}, {{ {143, -46, 0}, 0, {410, 504}, {255, 255, 255, 0} }}, {{ {243, -176, 1000}, 0, {307, -8}, {255, 255, 255, 255} }}, {{ {300, 0, 1000}, 0, {512, -8}, {255, 255, 255, 255} }}, {{ {355, 257, 2036}, 0, {670, -538}, {255, 255, 255, 255} }}, {{ {439, 0, 2036}, 0, {465, -538}, {255, 255, 255, 255} }}, {{ {136, 417, 2036}, 0, {875, -538}, {255, 255, 255, 255} }}, {{ {355, 257, 2036}, 0, {669, -538}, {255, 255, 255, 255} }}, {{ {-136, 417, 2036}, 0, {1079, -538}, {255, 255, 255, 255} }}, {{ {136, 417, 2036}, 0, {875, -538}, {255, 255, 255, 255} }}, {{ {-355, 257, 2036}, 0, {1283, -538}, {255, 255, 255, 255} }}, {{ {-136, 417, 2036}, 0, {1079, -538}, {255, 255, 255, 255} }}, {{ {-439, 0, 2036}, 0, {1489, -538}, {255, 255, 255, 255} }}, {{ {-355, 257, 2036}, 0, {1284, -538}, {255, 255, 255, 255} }}, {{ {-355, -257, 2036}, 0, {1694, -538}, {255, 255, 255, 255} }}, {{ {-243, -176, 1000}, 0, {1741, -8}, {255, 255, 255, 255} }}, {{ {-93, -285, 1000}, 0, {1946, -8}, {255, 255, 255, 255} }}, {{ {-136, -417, 2036}, 0, {1899, -538}, {255, 255, 255, 255} }}, {{ {-355, -257, 2036}, 0, {1693, -538}, {255, 255, 255, 255} }}, {{ {93, -285, 1000}, 0, {2150, -8}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {2048, 504}, {255, 255, 255, 0} }}, {{ {136, -417, 2036}, 0, {2103, -538}, {255, 255, 255, 255} }}, {{ {-136, -417, 2036}, 0, {1899, -538}, {255, 255, 255, 255} }}, {{ {243, -176, 1000}, 0, {307, -8}, {255, 255, 255, 255} }}, {{ {93, -285, 1000}, 0, {102, -8}, {255, 255, 255, 255} }}, {{ {88, -121, 0}, 0, {205, 504}, {255, 255, 255, 0} }}, {{ {355, -257, 2036}, 0, {259, -538}, {255, 255, 255, 255} }}, {{ {136, -417, 2036}, 0, {55, -538}, {255, 255, 255, 255} }}, {{ {300, 0, 1000}, 0, {512, -8}, {255, 255, 255, 255} }}, {{ {143, -46, 0}, 0, {410, 504}, {255, 255, 255, 0} }}, {{ {439, 0, 2036}, 0, {465, -538}, {255, 255, 255, 255} }}, {{ {355, -257, 2036}, 0, {260, -538}, {255, 255, 255, 255} }}, }; Gfx scarecrow_override_dl[] = { gsSPVertex(scarecrow_override_verts + 0, 32, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 0, 0), gsSP2Triangles(5, 6, 3, 0, 7, 8, 5, 0), gsSP2Triangles(9, 10, 7, 0, 11, 12, 9, 0), gsSP2Triangles(13, 14, 11, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 15, 0, 2, 20, 18, 0), gsSP2Triangles(1, 20, 2, 0, 20, 1, 21, 0), gsSP2Triangles(20, 21, 22, 0, 4, 1, 0, 0), gsSP2Triangles(1, 4, 23, 0, 1, 23, 24, 0), gsSP2Triangles(6, 4, 3, 0, 4, 6, 25, 0), gsSP2Triangles(4, 25, 26, 0, 8, 6, 5, 0), gsSP2Triangles(6, 8, 27, 0, 6, 27, 28, 0), gsSP2Triangles(10, 8, 7, 0, 8, 10, 29, 0), gsSP2Triangles(8, 29, 30, 0, 12, 10, 9, 0), gsSP2Triangles(10, 12, 31, 0, 10, 31, 29, 0), gsSP1Triangle(14, 12, 11, 0), gsSPVertex(scarecrow_override_verts + 32, 17, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 1, 5, 0, 1, 4, 6, 0), gsSP2Triangles(1, 6, 7, 0, 8, 9, 10, 0), gsSP2Triangles(9, 8, 11, 0, 9, 11, 12, 0), gsSP2Triangles(13, 8, 14, 0, 8, 13, 15, 0), gsSP1Triangle(8, 15, 16, 0), gsSPEndDisplayList(), }; Vtx oceff5_override_verts[49] = { {{ {88, 121, 0}, 0, {819, 1024}, {255, 255, 255, 0} }}, {{ {243, 176, 1000}, 0, {717, 0}, {255, 255, 255, 255} }}, {{ {143, 46, 0}, 0, {614, 1024}, {255, 255, 255, 0} }}, {{ {0, 150, 0}, 0, {1024, 1024}, {255, 255, 255, 0} }}, {{ {93, 285, 1000}, 0, {922, 0}, {255, 255, 255, 255} }}, {{ {-88, 121, 0}, 0, {1229, 1024}, {255, 255, 255, 0} }}, {{ {-93, 285, 1000}, 0, {1126, 0}, {255, 255, 255, 255} }}, {{ {-143, 46, 0}, 0, {1434, 1024}, {255, 255, 255, 0} }}, {{ {-243, 176, 1000}, 0, {1331, 0}, {255, 255, 255, 255} }}, {{ {-143, -46, 0}, 0, {1638, 1024}, {255, 255, 255, 0} }}, {{ {-300, 0, 1000}, 0, {1536, 0}, {255, 255, 255, 255} }}, {{ {-88, -121, 0}, 0, {1843, 1024}, {255, 255, 255, 0} }}, {{ {-243, -176, 1000}, 0, {1741, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {-93, -285, 1000}, 0, {1946, 0}, {255, 255, 255, 255} }}, {{ {88, -121, 0}, 0, {205, 1024}, {255, 255, 255, 0} }}, {{ {93, -285, 1000}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {0, 1024}, {255, 255, 255, 0} }}, {{ {143, -46, 0}, 0, {410, 1024}, {255, 255, 255, 0} }}, {{ {243, -176, 1000}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {300, 0, 1000}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {318, 231, 1846}, 0, {685, -863}, {255, 255, 255, 255} }}, {{ {393, 0, 1846}, 0, {480, -863}, {255, 255, 255, 255} }}, {{ {122, 373, 1846}, 0, {890, -863}, {255, 255, 255, 255} }}, {{ {318, 231, 1846}, 0, {685, -863}, {255, 255, 255, 255} }}, {{ {-122, 373, 1846}, 0, {1094, -863}, {255, 255, 255, 255} }}, {{ {122, 373, 1846}, 0, {890, -863}, {255, 255, 255, 255} }}, {{ {-318, 231, 1846}, 0, {1299, -863}, {255, 255, 255, 255} }}, {{ {-122, 373, 1846}, 0, {1094, -863}, {255, 255, 255, 255} }}, {{ {-393, 0, 1846}, 0, {1504, -863}, {255, 255, 255, 255} }}, {{ {-318, 231, 1846}, 0, {1299, -863}, {255, 255, 255, 255} }}, {{ {-318, -231, 1846}, 0, {1709, -863}, {255, 255, 255, 255} }}, {{ {-243, -176, 1000}, 0, {1741, 0}, {255, 255, 255, 255} }}, {{ {-93, -285, 1000}, 0, {1946, 0}, {255, 255, 255, 255} }}, {{ {-122, -373, 1846}, 0, {1914, -863}, {255, 255, 255, 255} }}, {{ {-318, -231, 1846}, 0, {1709, -863}, {255, 255, 255, 255} }}, {{ {93, -285, 1000}, 0, {2150, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {122, -373, 1846}, 0, {2118, -863}, {255, 255, 255, 255} }}, {{ {-122, -373, 1846}, 0, {1914, -863}, {255, 255, 255, 255} }}, {{ {243, -176, 1000}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {93, -285, 1000}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {88, -121, 0}, 0, {205, 1024}, {255, 255, 255, 0} }}, {{ {318, -231, 1846}, 0, {275, -863}, {255, 255, 255, 255} }}, {{ {122, -373, 1846}, 0, {70, -863}, {255, 255, 255, 255} }}, {{ {300, 0, 1000}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {143, -46, 0}, 0, {410, 1024}, {255, 255, 255, 0} }}, {{ {393, 0, 1846}, 0, {480, -863}, {255, 255, 255, 255} }}, {{ {318, -231, 1846}, 0, {275, -863}, {255, 255, 255, 255} }}, }; Gfx oceff5_override_dl[] = { gsSPVertex(oceff5_override_verts + 0, 32, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 0, 0), gsSP2Triangles(5, 6, 3, 0, 7, 8, 5, 0), gsSP2Triangles(9, 10, 7, 0, 11, 12, 9, 0), gsSP2Triangles(13, 14, 11, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 15, 0, 2, 20, 18, 0), gsSP2Triangles(1, 20, 2, 0, 20, 1, 21, 0), gsSP2Triangles(20, 21, 22, 0, 4, 1, 0, 0), gsSP2Triangles(1, 4, 23, 0, 1, 23, 24, 0), gsSP2Triangles(6, 4, 3, 0, 4, 6, 25, 0), gsSP2Triangles(4, 25, 26, 0, 8, 6, 5, 0), gsSP2Triangles(6, 8, 27, 0, 6, 27, 28, 0), gsSP2Triangles(10, 8, 7, 0, 8, 10, 29, 0), gsSP2Triangles(8, 29, 30, 0, 12, 10, 9, 0), gsSP2Triangles(10, 12, 31, 0, 10, 31, 29, 0), gsSP1Triangle(14, 12, 11, 0), gsSPVertex(oceff5_override_verts + 32, 17, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 1, 5, 0, 1, 4, 6, 0), gsSP2Triangles(1, 6, 7, 0, 8, 9, 10, 0), gsSP2Triangles(9, 8, 11, 0, 9, 11, 12, 0), gsSP2Triangles(13, 8, 14, 0, 8, 13, 15, 0), gsSP1Triangle(8, 15, 16, 0), gsSPEndDisplayList(), }; Vtx oceff6_override_verts[49] = { {{ {88, 121, 0}, 0, {819, 1024}, {255, 255, 255, 0} }}, {{ {243, 176, 1000}, 0, {717, 0}, {255, 255, 255, 255} }}, {{ {143, 46, 0}, 0, {614, 1024}, {255, 255, 255, 0} }}, {{ {0, 150, 0}, 0, {1024, 1024}, {255, 255, 255, 0} }}, {{ {93, 285, 1000}, 0, {922, 0}, {255, 255, 255, 255} }}, {{ {-88, 121, 0}, 0, {1229, 1024}, {255, 255, 255, 0} }}, {{ {-93, 285, 1000}, 0, {1126, 0}, {255, 255, 255, 255} }}, {{ {-143, 46, 0}, 0, {1434, 1024}, {255, 255, 255, 0} }}, {{ {-243, 176, 1000}, 0, {1331, 0}, {255, 255, 255, 255} }}, {{ {-143, -46, 0}, 0, {1638, 1024}, {255, 255, 255, 0} }}, {{ {-300, 0, 1000}, 0, {1536, 0}, {255, 255, 255, 255} }}, {{ {-88, -121, 0}, 0, {1843, 1024}, {255, 255, 255, 0} }}, {{ {-243, -176, 1000}, 0, {1741, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {-93, -285, 1000}, 0, {1946, 0}, {255, 255, 255, 255} }}, {{ {88, -121, 0}, 0, {205, 1024}, {255, 255, 255, 0} }}, {{ {93, -285, 1000}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {0, 1024}, {255, 255, 255, 0} }}, {{ {143, -46, 0}, 0, {410, 1024}, {255, 255, 255, 0} }}, {{ {243, -176, 1000}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {300, 0, 1000}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {319, 231, 2005}, 0, {685, -1024}, {255, 255, 255, 255} }}, {{ {394, 0, 2005}, 0, {480, -1024}, {255, 255, 255, 255} }}, {{ {122, 375, 2005}, 0, {890, -1024}, {255, 255, 255, 255} }}, {{ {319, 231, 2005}, 0, {685, -1024}, {255, 255, 255, 255} }}, {{ {-122, 375, 2005}, 0, {1094, -1024}, {255, 255, 255, 255} }}, {{ {122, 375, 2005}, 0, {890, -1024}, {255, 255, 255, 255} }}, {{ {-319, 231, 2005}, 0, {1299, -1024}, {255, 255, 255, 255} }}, {{ {-122, 375, 2005}, 0, {1094, -1024}, {255, 255, 255, 255} }}, {{ {-394, 0, 2005}, 0, {1504, -1024}, {255, 255, 255, 255} }}, {{ {-319, 231, 2005}, 0, {1299, -1024}, {255, 255, 255, 255} }}, {{ {-319, -231, 2005}, 0, {1709, -1024}, {255, 255, 255, 255} }}, {{ {-243, -176, 1000}, 0, {1741, 0}, {255, 255, 255, 255} }}, {{ {-93, -285, 1000}, 0, {1946, 0}, {255, 255, 255, 255} }}, {{ {-122, -375, 2005}, 0, {1914, -1024}, {255, 255, 255, 255} }}, {{ {-319, -231, 2005}, 0, {1709, -1024}, {255, 255, 255, 255} }}, {{ {93, -285, 1000}, 0, {2150, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {122, -375, 2005}, 0, {2118, -1024}, {255, 255, 255, 255} }}, {{ {-122, -375, 2005}, 0, {1914, -1024}, {255, 255, 255, 255} }}, {{ {243, -176, 1000}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {93, -285, 1000}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {88, -121, 0}, 0, {205, 1024}, {255, 255, 255, 0} }}, {{ {319, -231, 2005}, 0, {275, -1024}, {255, 255, 255, 255} }}, {{ {122, -375, 2005}, 0, {70, -1024}, {255, 255, 255, 255} }}, {{ {300, 0, 1000}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {143, -46, 0}, 0, {410, 1024}, {255, 255, 255, 0} }}, {{ {394, 0, 2005}, 0, {480, -1024}, {255, 255, 255, 255} }}, {{ {319, -231, 2005}, 0, {275, -1024}, {255, 255, 255, 255} }}, }; Gfx oceff6_override_dl[] = { gsSPVertex(oceff6_override_verts + 0, 32, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 0, 0), gsSP2Triangles(5, 6, 3, 0, 7, 8, 5, 0), gsSP2Triangles(9, 10, 7, 0, 11, 12, 9, 0), gsSP2Triangles(13, 14, 11, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 15, 0, 2, 20, 18, 0), gsSP2Triangles(1, 20, 2, 0, 20, 1, 21, 0), gsSP2Triangles(20, 21, 22, 0, 4, 1, 0, 0), gsSP2Triangles(1, 4, 23, 0, 1, 23, 24, 0), gsSP2Triangles(6, 4, 3, 0, 4, 6, 25, 0), gsSP2Triangles(4, 25, 26, 0, 8, 6, 5, 0), gsSP2Triangles(6, 8, 27, 0, 6, 27, 28, 0), gsSP2Triangles(10, 8, 7, 0, 8, 10, 29, 0), gsSP2Triangles(8, 29, 30, 0, 12, 10, 9, 0), gsSP2Triangles(10, 12, 31, 0, 10, 31, 29, 0), gsSP1Triangle(14, 12, 11, 0), gsSPVertex(oceff6_override_verts + 32, 17, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 1, 5, 0, 1, 4, 6, 0), gsSP2Triangles(1, 6, 7, 0, 8, 9, 10, 0), gsSP2Triangles(9, 8, 11, 0, 9, 11, 12, 0), gsSP2Triangles(13, 8, 14, 0, 8, 13, 15, 0), gsSP1Triangle(8, 15, 16, 0), gsSPEndDisplayList(), }; Vtx healing_override_verts[49] = { {{ {88, 121, 0}, 0, {819, 1024}, {255, 255, 255, 0} }}, {{ {243, 176, 1000}, 0, {717, 0}, {255, 255, 255, 255} }}, {{ {143, 46, 0}, 0, {614, 1024}, {255, 255, 255, 0} }}, {{ {0, 150, 0}, 0, {1024, 1024}, {255, 255, 255, 0} }}, {{ {93, 285, 1000}, 0, {922, 0}, {255, 255, 255, 255} }}, {{ {-88, 121, 0}, 0, {1229, 1024}, {255, 255, 255, 0} }}, {{ {-93, 285, 1000}, 0, {1126, 0}, {255, 255, 255, 255} }}, {{ {-143, 46, 0}, 0, {1434, 1024}, {255, 255, 255, 0} }}, {{ {-243, 176, 1000}, 0, {1331, 0}, {255, 255, 255, 255} }}, {{ {-143, -46, 0}, 0, {1638, 1024}, {255, 255, 255, 0} }}, {{ {-300, 0, 1000}, 0, {1536, 0}, {255, 255, 255, 255} }}, {{ {-88, -121, 0}, 0, {1843, 1024}, {255, 255, 255, 0} }}, {{ {-243, -176, 1000}, 0, {1741, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {-93, -285, 1000}, 0, {1946, 0}, {255, 255, 255, 255} }}, {{ {88, -121, 0}, 0, {205, 1024}, {255, 255, 255, 0} }}, {{ {93, -285, 1000}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {0, 1024}, {255, 255, 255, 0} }}, {{ {143, -46, 0}, 0, {410, 1024}, {255, 255, 255, 0} }}, {{ {243, -176, 1000}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {300, 0, 1000}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {399, 289, 2168}, 0, {651, -1200}, {255, 255, 255, 255} }}, {{ {493, 0, 2168}, 0, {446, -1200}, {255, 255, 255, 255} }}, {{ {153, 468, 2168}, 0, {856, -1200}, {255, 255, 255, 255} }}, {{ {399, 289, 2168}, 0, {651, -1200}, {255, 255, 255, 255} }}, {{ {-153, 468, 2168}, 0, {1061, -1200}, {255, 255, 255, 255} }}, {{ {153, 468, 2168}, 0, {857, -1200}, {255, 255, 255, 255} }}, {{ {-399, 289, 2168}, 0, {1265, -1200}, {255, 255, 255, 255} }}, {{ {-153, 468, 2168}, 0, {1060, -1200}, {255, 255, 255, 255} }}, {{ {-493, 0, 2168}, 0, {1470, -1200}, {255, 255, 255, 255} }}, {{ {-399, 289, 2168}, 0, {1265, -1200}, {255, 255, 255, 255} }}, {{ {-399, -289, 2168}, 0, {1675, -1200}, {255, 255, 255, 255} }}, {{ {-243, -176, 1000}, 0, {1741, 0}, {255, 255, 255, 255} }}, {{ {-93, -285, 1000}, 0, {1946, 0}, {255, 255, 255, 255} }}, {{ {-153, -468, 2168}, 0, {1880, -1200}, {255, 255, 255, 255} }}, {{ {-399, -289, 2168}, 0, {1675, -1200}, {255, 255, 255, 255} }}, {{ {93, -285, 1000}, 0, {2150, 0}, {255, 255, 255, 255} }}, {{ {0, -150, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {153, -468, 2168}, 0, {2085, -1200}, {255, 255, 255, 255} }}, {{ {-153, -468, 2168}, 0, {1881, -1200}, {255, 255, 255, 255} }}, {{ {243, -176, 1000}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {93, -285, 1000}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {88, -121, 0}, 0, {205, 1024}, {255, 255, 255, 0} }}, {{ {399, -289, 2168}, 0, {241, -1200}, {255, 255, 255, 255} }}, {{ {153, -468, 2168}, 0, {36, -1200}, {255, 255, 255, 255} }}, {{ {300, 0, 1000}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {143, -46, 0}, 0, {410, 1024}, {255, 255, 255, 0} }}, {{ {493, 0, 2168}, 0, {446, -1200}, {255, 255, 255, 255} }}, {{ {399, -289, 2168}, 0, {241, -1200}, {255, 255, 255, 255} }}, }; Gfx healing_override_dl[] = { gsSPVertex(healing_override_verts + 0, 32, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 0, 0), gsSP2Triangles(5, 6, 3, 0, 7, 8, 5, 0), gsSP2Triangles(9, 10, 7, 0, 11, 12, 9, 0), gsSP2Triangles(13, 14, 11, 0, 15, 16, 17, 0), gsSP2Triangles(18, 19, 15, 0, 2, 20, 18, 0), gsSP2Triangles(1, 20, 2, 0, 20, 1, 21, 0), gsSP2Triangles(20, 21, 22, 0, 4, 1, 0, 0), gsSP2Triangles(1, 4, 23, 0, 1, 23, 24, 0), gsSP2Triangles(6, 4, 3, 0, 4, 6, 25, 0), gsSP2Triangles(4, 25, 26, 0, 8, 6, 5, 0), gsSP2Triangles(6, 8, 27, 0, 6, 27, 28, 0), gsSP2Triangles(10, 8, 7, 0, 8, 10, 29, 0), gsSP2Triangles(8, 29, 30, 0, 12, 10, 9, 0), gsSP2Triangles(10, 12, 31, 0, 10, 31, 29, 0), gsSP1Triangle(14, 12, 11, 0), gsSPVertex(healing_override_verts + 32, 17, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 1, 5, 0, 1, 4, 6, 0), gsSP2Triangles(1, 6, 7, 0, 8, 9, 10, 0), gsSP2Triangles(9, 8, 11, 0, 9, 11, 12, 0), gsSP2Triangles(13, 8, 14, 0, 8, 13, 15, 0), gsSP1Triangle(8, 15, 16, 0), gsSPEndDisplayList(), }; Vtx skull_kid_curse_1_override_verts[52] = { // 008A38 {{ {71, 23, 0}, 0, {614, 1024}, {255, 255, 255, 0} }}, {{ {121, 88, 500}, 0, {716, 0}, {255, 255, 255, 255} }}, {{ {44, 61, 0}, 0, {819, 1024}, {255, 255, 255, 0} }}, {{ {46, 143, 500}, 0, {921, 0}, {255, 255, 255, 255} }}, {{ {0, 75, 0}, 0, {1024, 1024}, {255, 255, 255, 0} }}, {{ {-46, 143, 500}, 0, {1126, 0}, {255, 255, 255, 255} }}, {{ {-44, 61, 0}, 0, {1228, 1024}, {255, 255, 255, 0} }}, {{ {-121, 88, 500}, 0, {1331, 0}, {255, 255, 255, 255} }}, {{ {-71, 23, 0}, 0, {1433, 1024}, {255, 255, 255, 0} }}, {{ {-150, 0, 500}, 0, {1536, 0}, {255, 255, 255, 255} }}, {{ {-71, -23, 0}, 0, {1638, 1024}, {255, 255, 255, 0} }}, {{ {-121, -88, 500}, 0, {1740, 0}, {255, 255, 255, 255} }}, {{ {-44, -61, 0}, 0, {1843, 1024}, {255, 255, 255, 0} }}, {{ {-46, -143, 500}, 0, {1945, 0}, {255, 255, 255, 255} }}, {{ {0, -75, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {0, -75, 0}, 0, {0, 1024}, {255, 255, 255, 0} }}, {{ {46, -143, 500}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {44, -61, 0}, 0, {204, 1024}, {255, 255, 255, 0} }}, {{ {121, -88, 500}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {71, -23, 0}, 0, {409, 1024}, {255, 255, 255, 0} }}, {{ {150, 0, 500}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {248, 0, 1080}, 0, {580, -1192}, {255, 255, 255, 255} }}, {{ {200, 146, 1080}, 0, {782, -1192}, {255, 255, 255, 255} }}, {{ {200, 146, 1080}, 0, {782, -1192}, {255, 255, 255, 255} }}, {{ {76, 237, 1080}, 0, {989, -1192}, {255, 255, 255, 255} }}, {{ {76, 237, 1080}, 0, {988, -1192}, {255, 255, 255, 255} }}, {{ {-76, 237, 1080}, 0, {1193, -1192}, {255, 255, 255, 255} }}, {{ {-76, 237, 1080}, 0, {1194, -1192}, {255, 255, 255, 255} }}, {{ {-200, 146, 1080}, 0, {1397, -1192}, {255, 255, 255, 255} }}, {{ {-200, 146, 1080}, 0, {1397, -1192}, {255, 255, 255, 255} }}, {{ {-248, 0, 1080}, 0, {1604, -1192}, {255, 255, 255, 255} }}, {{ {-248, 0, 1080}, 0, {1604, -1192}, {255, 255, 255, 255} }}, {{ {-121, -88, 500}, 0, {1740, 0}, {255, 255, 255, 255} }}, {{ {-248, 0, 1080}, 0, {1604, -1192}, {255, 255, 255, 255} }}, {{ {-200, -146, 1080}, 0, {1806, -1192}, {255, 255, 255, 255} }}, {{ {-44, -61, 0}, 0, {1843, 1024}, {255, 255, 255, 0} }}, {{ {-46, -143, 500}, 0, {1945, 0}, {255, 255, 255, 255} }}, {{ {-200, -146, 1080}, 0, {1806, -1192}, {255, 255, 255, 255} }}, {{ {-76, -237, 1080}, 0, {2013, -1192}, {255, 255, 255, 255} }}, {{ {0, -75, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {46, -143, 500}, 0, {2150, 0}, {255, 255, 255, 255} }}, {{ {-76, -237, 1080}, 0, {2012, -1192}, {255, 255, 255, 255} }}, {{ {76, -237, 1080}, 0, {2217, -1192}, {255, 255, 255, 255} }}, {{ {44, -61, 0}, 0, {204, 1024}, {255, 255, 255, 0} }}, {{ {46, -143, 500}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {121, -88, 500}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {76, -237, 1080}, 0, {170, -1192}, {255, 255, 255, 255} }}, {{ {200, -146, 1080}, 0, {373, -1192}, {255, 255, 255, 255} }}, {{ {71, -23, 0}, 0, {409, 1024}, {255, 255, 255, 0} }}, {{ {150, 0, 500}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {200, -146, 1080}, 0, {373, -1192}, {255, 255, 255, 255} }}, {{ {248, 0, 1080}, 0, {580, -1192}, {255, 255, 255, 255} }}, }; extern u64 object_stk2_Tex_008B50[]; extern u64 object_stk2_Tex_008B50[]; Gfx skull_kid_curse_1_override_dl[] = { // 008A38 gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), gsDPPipeSync(), gsDPSetCombineLERP(TEXEL1, PRIMITIVE, PRIM_LOD_FRAC, TEXEL0, TEXEL1, 0, PRIM_LOD_FRAC, TEXEL0, PRIMITIVE, ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, SHADE, 0), gsDPSetPrimColor(0, 0x80, 255, 255, 100, 255), gsDPSetEnvColor(255, 0, 150, 255), gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_XLU_SURF2), gsDPSetTextureLUT(G_TT_NONE), gsDPLoadTextureBlock(object_stk2_Tex_008B50, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 6, 1, 15), gsDPLoadMultiBlock(object_stk2_Tex_008B50, 0x0000, 1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 6, 15, 14), gsSPDisplayList(0x08000000), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), gsSPVertex(skull_kid_curse_1_override_verts + 0, 32, 0), gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), gsSP2Triangles(4, 5, 6, 0, 6, 7, 8, 0), gsSP2Triangles(8, 9, 10, 0, 10, 11, 12, 0), gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), gsSP2Triangles(17, 18, 19, 0, 19, 20, 0, 0), gsSP2Triangles(0, 20, 1, 0, 1, 20, 21, 0), gsSP2Triangles(1, 21, 22, 0, 2, 1, 3, 0), gsSP2Triangles(3, 1, 23, 0, 3, 23, 24, 0), gsSP2Triangles(4, 3, 5, 0, 5, 3, 25, 0), gsSP2Triangles(5, 25, 26, 0, 6, 5, 7, 0), gsSP2Triangles(7, 5, 27, 0, 7, 27, 28, 0), gsSP2Triangles(8, 7, 9, 0, 9, 7, 29, 0), gsSP2Triangles(9, 29, 30, 0, 10, 9, 11, 0), gsSP1Triangle(11, 9, 31, 0), gsSPVertex(skull_kid_curse_1_override_verts + 32, 20, 0), gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), gsSP2Triangles(4, 0, 5, 0, 4, 5, 6, 0), gsSP2Triangles(7, 4, 8, 0, 8, 4, 9, 0), gsSP2Triangles(8, 9, 10, 0, 11, 12, 13, 0), gsSP2Triangles(13, 12, 14, 0, 13, 14, 15, 0), gsSP2Triangles(16, 13, 17, 0, 17, 13, 18, 0), gsSP1Triangle(17, 18, 19, 0), gsSPEndDisplayList(), }; Vtx skull_kid_curse_2_override_verts[52] = { // 008920 {{ {86, -28, 0}, 0, {409, 1024}, {255, 255, 255, 0} }}, {{ {180, 0, 500}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {86, 28, 0}, 0, {614, 1024}, {255, 255, 255, 0} }}, {{ {53, -73, 0}, 0, {204, 1024}, {255, 255, 255, 0} }}, {{ {146, -106, 500}, 0, {307, 0}, {255, 255, 255, 255} }}, {{ {0, -90, 0}, 0, {0, 1024}, {255, 255, 255, 0} }}, {{ {56, -171, 500}, 0, {102, 0}, {255, 255, 255, 255} }}, {{ {-53, -73, 0}, 0, {1843, 1024}, {255, 255, 255, 0} }}, {{ {-56, -171, 500}, 0, {1945, 0}, {255, 255, 255, 255} }}, {{ {0, -90, 0}, 0, {2048, 1024}, {255, 255, 255, 0} }}, {{ {-86, -28, 0}, 0, {1638, 1024}, {255, 255, 255, 0} }}, {{ {-146, -106, 500}, 0, {1740, 0}, {255, 255, 255, 255} }}, {{ {-86, 28, 0}, 0, {1433, 1024}, {255, 255, 255, 0} }}, {{ {-180, 0, 500}, 0, {1536, 0}, {255, 255, 255, 255} }}, {{ {-53, 73, 0}, 0, {1228, 1024}, {255, 255, 255, 0} }}, {{ {-146, 106, 500}, 0, {1331, 0}, {255, 255, 255, 255} }}, {{ {0, 90, 0}, 0, {1024, 1024}, {255, 255, 255, 0} }}, {{ {-56, 171, 500}, 0, {1126, 0}, {255, 255, 255, 255} }}, {{ {53, 73, 0}, 0, {819, 1024}, {255, 255, 255, 0} }}, {{ {56, 171, 500}, 0, {921, 0}, {255, 255, 255, 255} }}, {{ {146, 106, 500}, 0, {716, 0}, {255, 255, 255, 255} }}, {{ {218, -159, 1080}, 0, {359, -1185}, {255, 255, 255, 255} }}, {{ {269, 0, 1080}, 0, {562, -1185}, {255, 255, 255, 255} }}, {{ {84, -256, 1080}, 0, {152, -1185}, {255, 255, 255, 255} }}, {{ {218, -159, 1080}, 0, {359, -1185}, {255, 255, 255, 255} }}, {{ {56, -171, 500}, 0, {2150, 0}, {255, 255, 255, 255} }}, {{ {-84, -256, 1080}, 0, {1996, -1185}, {255, 255, 255, 255} }}, {{ {84, -256, 1080}, 0, {2201, -1185}, {255, 255, 255, 255} }}, {{ {-218, -159, 1080}, 0, {1792, -1185}, {255, 255, 255, 255} }}, {{ {-84, -256, 1080}, 0, {1995, -1185}, {255, 255, 255, 255} }}, {{ {-269, 0, 1080}, 0, {1586, -1185}, {255, 255, 255, 255} }}, {{ {-218, -159, 1080}, 0, {1791, -1185}, {255, 255, 255, 255} }}, {{ {-180, 0, 500}, 0, {1536, 0}, {255, 255, 255, 255} }}, {{ {-146, 106, 500}, 0, {1331, 0}, {255, 255, 255, 255} }}, {{ {-218, 159, 1080}, 0, {1383, -1185}, {255, 255, 255, 255} }}, {{ {-269, 0, 1080}, 0, {1586, -1185}, {255, 255, 255, 255} }}, {{ {-53, 73, 0}, 0, {1228, 1024}, {255, 255, 255, 0} }}, {{ {-56, 171, 500}, 0, {1126, 0}, {255, 255, 255, 255} }}, {{ {-84, 256, 1080}, 0, {1176, -1185}, {255, 255, 255, 255} }}, {{ {-218, 159, 1080}, 0, {1383, -1185}, {255, 255, 255, 255} }}, {{ {0, 90, 0}, 0, {1024, 1024}, {255, 255, 255, 0} }}, {{ {56, 171, 500}, 0, {921, 0}, {255, 255, 255, 255} }}, {{ {84, 256, 1080}, 0, {972, -1185}, {255, 255, 255, 255} }}, {{ {-84, 256, 1080}, 0, {1177, -1185}, {255, 255, 255, 255} }}, {{ {53, 73, 0}, 0, {819, 1024}, {255, 255, 255, 0} }}, {{ {146, 106, 500}, 0, {716, 0}, {255, 255, 255, 255} }}, {{ {218, 159, 1080}, 0, {768, -1185}, {255, 255, 255, 255} }}, {{ {84, 256, 1080}, 0, {971, -1185}, {255, 255, 255, 255} }}, {{ {86, 28, 0}, 0, {614, 1024}, {255, 255, 255, 0} }}, {{ {180, 0, 500}, 0, {512, 0}, {255, 255, 255, 255} }}, {{ {269, 0, 1080}, 0, {562, -1185}, {255, 255, 255, 255} }}, {{ {218, 159, 1080}, 0, {767, -1185}, {255, 255, 255, 255} }}, }; extern u64 object_stk2_Tex_009750[]; extern u64 object_stk2_Tex_009350[]; Gfx skull_kid_curse_2_override_dl[] = { // 008920 gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), gsDPPipeSync(), gsDPSetCombineLERP(TEXEL1, PRIMITIVE, PRIM_LOD_FRAC, TEXEL0, TEXEL1, 0, PRIM_LOD_FRAC, TEXEL0, PRIMITIVE, ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, SHADE, 0), gsDPSetPrimColor(0, 0x80, 0, 0, 255, 255), gsDPSetEnvColor(0, 220, 0, 255), gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_INTER2), gsDPSetTextureLUT(G_TT_NONE), gsDPLoadTextureBlock(object_stk2_Tex_009750, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 5, 6, 15, 14), gsDPLoadMultiBlock(object_stk2_Tex_009350, 0x0100, 1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 15, 1), gsSPDisplayList(0x09000000), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), gsSPVertex(skull_kid_curse_2_override_verts + 0, 32, 0), gsSP2Triangles(0, 1, 2, 0, 3, 4, 0, 0), gsSP2Triangles(5, 6, 3, 0, 7, 8, 9, 0), gsSP2Triangles(10, 11, 7, 0, 12, 13, 10, 0), gsSP2Triangles(14, 15, 12, 0, 16, 17, 14, 0), gsSP2Triangles(18, 19, 16, 0, 2, 20, 18, 0), gsSP2Triangles(0, 4, 1, 0, 1, 4, 21, 0), gsSP2Triangles(1, 21, 22, 0, 3, 6, 4, 0), gsSP2Triangles(4, 6, 23, 0, 4, 23, 24, 0), gsSP2Triangles(9, 8, 25, 0, 25, 8, 26, 0), gsSP2Triangles(25, 26, 27, 0, 7, 11, 8, 0), gsSP2Triangles(8, 11, 28, 0, 8, 28, 29, 0), gsSP2Triangles(10, 13, 11, 0, 11, 13, 30, 0), gsSP2Triangles(11, 30, 31, 0, 12, 15, 13, 0), gsSPVertex(skull_kid_curse_2_override_verts + 32, 20, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), gsSP2Triangles(4, 5, 1, 0, 1, 5, 6, 0), gsSP2Triangles(1, 6, 7, 0, 8, 9, 5, 0), gsSP2Triangles(5, 9, 10, 0, 5, 10, 11, 0), gsSP2Triangles(12, 13, 9, 0, 9, 13, 14, 0), gsSP2Triangles(9, 14, 15, 0, 16, 17, 13, 0), gsSP2Triangles(13, 17, 18, 0, 13, 18, 19, 0), gsSPEndDisplayList(), }; // Sets the flag to 1 for any vertex that has an alpha of 255. void set_vertex_flags(Vtx* verts, s32 count) { for (s32 i = 0; i < count; i++) { if (verts[i].v.cn[3] == 160) { verts[i].v.flag = 1; } else if (verts[i].v.cn[3] == 255) { verts[i].v.flag = 2; } } } // Sets the flags for every override vertex list. void set_all_vertex_flags() { static bool flags_set = false; // Set the flags on all the vertices first if they haven't been set yet. if (!flags_set) { set_vertex_flags(time_override_verts, ARRAY_COUNT(time_override_verts)); set_vertex_flags(epona_override_verts, ARRAY_COUNT(epona_override_verts)); set_vertex_flags(saria_override_verts, ARRAY_COUNT(saria_override_verts)); set_vertex_flags(scarecrow_override_verts, ARRAY_COUNT(scarecrow_override_verts)); set_vertex_flags(oceff5_override_verts, ARRAY_COUNT(oceff5_override_verts)); set_vertex_flags(oceff6_override_verts, ARRAY_COUNT(oceff6_override_verts)); set_vertex_flags(healing_override_verts, ARRAY_COUNT(healing_override_verts)); flags_set = true; } } // Patches the given DL to replace a vertex command at the given position with a branch to the new DL. void patch_ocarina_effect(Actor* actor, Gfx* original_dl, u32 dl_offset, Gfx* override_dl) { Gfx* reloc_dl = (Gfx*)actor_relocate(actor, original_dl); set_all_vertex_flags(); // Check if the DL hasn't been patched yet. if (reloc_dl[dl_offset].words.w0 >> 24 == G_VTX) { // Redirect the DL away from the original vertex command and to the override DL. gSPBranchList(&reloc_dl[dl_offset], override_dl); } } // Sets the alpha value for every vertex in the list with a set flag value. void set_ocarina_vertex_alphas(Vtx* verts, s32 count, u8 alpha) { for (s32 i = 0; i < count; i++) { if (verts[i].v.flag) { verts[i].v.cn[3] = alpha; } } } extern Gfx sSongOfTimeFrustumMaterialDL[]; void OceffWipe_Draw(Actor* thisx, PlayState* play) { u32 scroll = play->state.frames & 0xFF; OceffWipe* this = (OceffWipe*)thisx; f32 z; s32 pad; u8 alphaTable[3]; s32 i; Vec3f eye = GET_ACTIVE_CAM(play)->eye; Vtx* vtxPtr; Vec3f quakeOffset; // @recomp Tag the effect vertices if they haven't been already. set_all_vertex_flags(); quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); OPEN_DISPS(play->state.gfxCtx); if (this->counter < 32) { z = Math_SinS(this->counter << 9) * 1360.0f; } else { z = 1360.0f; } if (this->counter >= 80) { alphaTable[0] = 0; alphaTable[1] = (100 - this->counter) * 8; alphaTable[2] = (100 - this->counter) * 12; } else { alphaTable[0] = 0; alphaTable[1] = 160; alphaTable[2] = 255; } // @recomp Modify this loop to use the vertex's flag instead of a lookup table. for (i = 0; i < ARRAY_COUNT(time_override_verts); i++) { time_override_verts[i].v.cn[3] = alphaTable[time_override_verts[i].v.flag]; } Gfx_SetupDL25_Xlu(play->state.gfxCtx); Matrix_Translate(eye.x + quakeOffset.x, eye.y + quakeOffset.y, eye.z + quakeOffset.z, MTXMODE_NEW); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); Matrix_ReplaceRotation(&play->billboardMtxF); Matrix_RotateXS(0x708, MTXMODE_APPLY); Matrix_Translate(0.0f, 0.0f, -z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if (this->actor.params != OCEFF_WIPE_ZL) { gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 170, 255, 255, 255); gDPSetEnvColor(POLY_XLU_DISP++, 0, 150, 255, 128); } else { gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 200, 255); gDPSetEnvColor(POLY_XLU_DISP++, 100, 0, 255, 128); } // @recomp Manual relocation, TODO remove when automated. gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, &sSongOfTimeFrustumMaterialDL)); gSPDisplayList(POLY_XLU_DISP++, Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, 0 - scroll, scroll * -2, 32, 32, 1, 0 - scroll, scroll * -2, 32, 32)); // @recomp Use the new DL instead of the original. gSPDisplayList(POLY_XLU_DISP++, time_override_dl); CLOSE_DISPS(play->state.gfxCtx); } extern Gfx sEponaSongFrustumMaterialDL[]; void OceffWipe2_Draw(Actor* thisx, PlayState* play) { u32 scroll = play->state.frames & 0xFF; OceffWipe2* this = (OceffWipe2*)thisx; f32 z; u8 alpha; s32 pad[2]; Vec3f eye = GET_ACTIVE_CAM(play)->eye; Vtx* vtxPtr; Vec3f quakeOffset; // @recomp Tag the effect vertices if they haven't been already. set_all_vertex_flags(); quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); if (this->timer < 32) { z = Math_SinS(this->timer * 0x200) * 1220.0f; } else { z = 1220.0f; } if (this->timer >= 80) { alpha = 12 * (100 - this->timer); } else { alpha = 255; } // @recomp Replace the set alpha loop with a vertex flag check instead. set_ocarina_vertex_alphas(epona_override_verts, ARRAY_COUNT(epona_override_verts), alpha); OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx); Matrix_Translate(eye.x + quakeOffset.x, eye.y + quakeOffset.y, eye.z + quakeOffset.z, MTXMODE_NEW); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); Matrix_ReplaceRotation(&play->billboardMtxF); Matrix_RotateXS(0x708, MTXMODE_APPLY); Matrix_Translate(0.0f, 0.0f, -z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 170, 255); gDPSetEnvColor(POLY_XLU_DISP++, 255, 100, 0, 128); // @recomp Manual relocation, TODO remove when automated. gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, sEponaSongFrustumMaterialDL)); gSPDisplayList(POLY_XLU_DISP++, Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, scroll * 6, scroll * -6, 64, 64, 1, scroll * -6, 0, 64, 64)); // @recomp Use the new DL instead of the original. gSPDisplayList(POLY_XLU_DISP++, epona_override_dl); CLOSE_DISPS(play->state.gfxCtx); } extern Gfx sSariaSongFrustrumMaterialDL[]; void OceffWipe3_Draw(Actor* thisx, PlayState* play) { u32 scroll = play->state.frames & 0xFFF; OceffWipe3* this = (OceffWipe3*)thisx; f32 z; u8 alpha; s32 pad[2]; Vec3f eye = GET_ACTIVE_CAM(play)->eye; Vtx* vtxPtr; Vec3f quakeOffset; // @recomp Tag the effect vertices if they haven't been already. set_all_vertex_flags(); quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); if (this->counter < 32) { z = Math_SinS(this->counter * 512) * 1220.0f; } else { z = 1220.0f; } if (this->counter >= 80) { alpha = 12 * (100 - this->counter); } else { alpha = 255; } // @recomp Replace the set alpha loop with a vertex flag check instead. set_ocarina_vertex_alphas(saria_override_verts, ARRAY_COUNT(saria_override_verts), alpha); OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx); Matrix_Translate(eye.x + quakeOffset.x, eye.y + quakeOffset.y, eye.z + quakeOffset.z, MTXMODE_NEW); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); Matrix_ReplaceRotation(&play->billboardMtxF); Matrix_RotateXS(0x708, MTXMODE_APPLY); Matrix_Translate(0.0f, 0.0f, -z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 170, 255); gDPSetEnvColor(POLY_XLU_DISP++, 100, 200, 0, 128); // @recomp Manual relocation, TODO remove when automated. gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, &sSariaSongFrustrumMaterialDL)); gSPDisplayList(POLY_XLU_DISP++, Gfx_TwoTexScroll(play->state.gfxCtx, 0, scroll * 12, scroll * -12, 64, 64, 1, scroll * 8, scroll * -8, 64, 64)); // @recomp Use the new DL instead of the original. gSPDisplayList(POLY_XLU_DISP++, saria_override_dl); CLOSE_DISPS(play->state.gfxCtx); } extern Gfx sScarecrowSongUnusedMaterialDL[]; extern Gfx sScarecrowSongMaterialDL[]; extern Gfx sScarecrowSongModelDL[]; void OceffWipe4_Draw(Actor* thisx, PlayState* play) { u32 scroll = play->state.frames & 0xFFF; OceffWipe4* this = (OceffWipe4*)thisx; f32 z; u8 alpha; s32 pad[2]; Vec3f eye = GET_ACTIVE_CAM(play)->eye; Vec3f quakeOffset; // @recomp Apply the patch to the DL if necessary. patch_ocarina_effect(thisx, sScarecrowSongModelDL, 11, scarecrow_override_dl); quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); if (this->counter < 16) { z = Math_SinS(this->counter * 0x400) * 1220.0f; } else { z = 1220.0f; } if (this->counter >= 30) { alpha = 12 * (50 - this->counter); } else { alpha = 255; } // @recomp Replace the set alpha loop with a vertex flag check instead. set_ocarina_vertex_alphas(scarecrow_override_verts, ARRAY_COUNT(scarecrow_override_dl), alpha); OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx); Matrix_Translate(eye.x + quakeOffset.x, eye.y + quakeOffset.y, eye.z + quakeOffset.z, MTXMODE_NEW); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); Matrix_ReplaceRotation(&play->billboardMtxF); Matrix_RotateXS(0x708, MTXMODE_APPLY); Matrix_Translate(0.0f, 0.0f, -z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); // @recomp Manual relocations, TODO remove when automated. if (this->actor.params == OCEFF_WIPE4_UNUSED) { gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, sScarecrowSongUnusedMaterialDL)); } else { gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, sScarecrowSongMaterialDL)); } gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, sScarecrowSongModelDL)); gSPDisplayList(POLY_XLU_DISP++, Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, scroll * 2, scroll * -2, 32, 64, 1, scroll * -1, scroll, 32, 32)); gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, &sScarecrowSongModelDL[11])); CLOSE_DISPS(play->state.gfxCtx); } static u8 sPrimColors[] = { 255, 255, 200, 255, 255, 200, 200, 255, 255, 255, 255, 200, 255, 200, 255, }; static u8 sEnvColors[] = { 50, 200, 0, 255, 50, 0, 0, 100, 255, 255, 150, 0, 255, 0, 200, }; extern Gfx gOceff5DL[]; extern AnimatedMaterial gOceff5TexAnim[]; void OceffWipe5_Draw(Actor* thisx, PlayState* play) { OceffWipe5* this = (OceffWipe5*)thisx; f32 z; s32 pad; s32 i; s32 pad2; Vec3f activeCamEye = GET_ACTIVE_CAM(play)->eye; Camera* activeCam = GET_ACTIVE_CAM(play); Vec3f quakeOffset; u8 alpha; s32 colorIndex = OCEFF_WIPE5_GET_SONG_TYPE(thisx) * 3; f32 phi_fv1 = 1220.0f; // @recomp Apply the patch to the DL if necessary. patch_ocarina_effect(thisx, gOceff5DL, 21, oceff5_override_dl); if ((((OCEFF_WIPE5_GET_SONG_TYPE(thisx) == 2) && (play->sceneId == SCENE_LABO)) && ((play->csCtx.scriptIndex == 0) || (play->csCtx.scriptIndex == 1))) && (play->csCtx.state != CS_STATE_IDLE)) { phi_fv1 = 1150.0f; } if (colorIndex >= 13) { colorIndex = 0; } quakeOffset = Camera_GetQuakeOffset(activeCam); if (this->counter < 32) { z = Math_SinS(this->counter << 9) * phi_fv1; } else { z = phi_fv1; } if (this->counter >= 80) { alpha = 12 * (100 - this->counter); } else { alpha = 255; } // @recomp Replace the set alpha loop with a vertex flag check instead. set_ocarina_vertex_alphas(oceff5_override_verts, ARRAY_COUNT(oceff5_override_verts), alpha); OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx); Matrix_Translate(activeCamEye.x + quakeOffset.x, activeCamEye.y + quakeOffset.y, activeCamEye.z + quakeOffset.z, MTXMODE_NEW); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); Matrix_ReplaceRotation(&play->billboardMtxF); Matrix_RotateXS(0x708, MTXMODE_APPLY); Matrix_Translate(0.0f, 0.0f, -z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, sPrimColors[colorIndex], sPrimColors[colorIndex + 1], sPrimColors[colorIndex + 2], 255); gDPSetEnvColor(POLY_XLU_DISP++, sEnvColors[colorIndex], sEnvColors[colorIndex + 1], sEnvColors[colorIndex + 2], 255); // @recomp Manual relocations, TODO remove when automated. AnimatedMat_Draw(play, (AnimatedMaterial*)actor_relocate(thisx, gOceff5TexAnim)); gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, gOceff5DL)); CLOSE_DISPS(play->state.gfxCtx); } extern Gfx gOceff6DL[]; extern AnimatedMaterial ovl_Oceff_Wipe6_Matanimheader_000338[]; void OceffWipe6_Draw(Actor* thisx, PlayState* play) { OceffWipe6* this = (OceffWipe6*)thisx; f32 z; u8 alpha; s32 i; s32 counter; Vec3f activeCamEye; s32 pad; Vec3f quakeOffset; s32 pad2; // @recomp Apply the patch to the DL if necessary. patch_ocarina_effect(thisx, gOceff6DL, 23, oceff6_override_dl); activeCamEye = GET_ACTIVE_CAM(play)->eye; quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); if (this->counter < 32) { counter = this->counter; z = Math_SinS(counter * 0x200) * 1220.0f; } else { z = 1220.0f; } if (this->counter >= 80) { alpha = 12 * (100 - this->counter); } else { alpha = 255; } // @recomp Replace the set alpha loop with a vertex flag check instead. set_ocarina_vertex_alphas(oceff6_override_verts, ARRAY_COUNT(oceff6_override_verts), alpha); OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx); Matrix_Translate(activeCamEye.x + quakeOffset.x, activeCamEye.y + quakeOffset.y, activeCamEye.z + quakeOffset.z, MTXMODE_NEW); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); Matrix_ReplaceRotation(&play->billboardMtxF); Matrix_RotateXS(0x708, MTXMODE_APPLY); Matrix_Translate(0.0f, 0.0f, -z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); // @recomp Manual relocations, TODO remove these when automatic. AnimatedMat_Draw(play, (AnimatedMaterial*)actor_relocate(thisx, ovl_Oceff_Wipe6_Matanimheader_000338)); gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, gOceff6DL)); CLOSE_DISPS(play->state.gfxCtx); } extern Gfx sSongOfHealingEffectFrustumDL[]; extern AnimatedMaterial sSongofHealingEffectTexAnim[]; void OceffWipe7_Draw(Actor* thisx, PlayState* play) { OceffWipe7* this = (OceffWipe7*)thisx; f32 z; u8 alpha; s32 i; s32 counter; Vec3f activeCamEye = GET_ACTIVE_CAM(play)->eye; s32 pad; Vec3f quakeOffset; s32 pad2; // @recomp Apply the patch to the DL if necessary. patch_ocarina_effect(thisx, sSongOfHealingEffectFrustumDL, 23, healing_override_dl); quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); if (this->counter < 32) { z = Math_SinS(this->counter * 0x200) * 1220.0f; } else { z = 1220.0f; } if (this->counter >= 80) { alpha = 12 * (100 - this->counter); } else { alpha = 255; } // @recomp Replace the set alpha loop with a vertex flag check instead. set_ocarina_vertex_alphas(healing_override_verts, ARRAY_COUNT(healing_override_verts), alpha); OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx); Matrix_Translate(activeCamEye.x + quakeOffset.x, activeCamEye.y + quakeOffset.y, activeCamEye.z + quakeOffset.z, MTXMODE_NEW); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); Matrix_ReplaceRotation(&play->billboardMtxF); Matrix_RotateXS(0x708, MTXMODE_APPLY); Matrix_Translate(0.0f, 0.0f, -z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); // @recomp Manual relocations, TODO remove when automated. AnimatedMat_Draw(play, (AnimatedMaterial*)actor_relocate(thisx, sSongofHealingEffectTexAnim)); gSPDisplayList(POLY_XLU_DISP++, (Gfx*)actor_relocate(thisx, &sSongOfHealingEffectFrustumDL)); CLOSE_DISPS(play->state.gfxCtx); } extern AnimatedMaterial object_stk2_Matanimheader_009F60[]; // @recomp Patch the Skull Kid curse effect as well, which works similarly to the ocarina effects. // In this case, the patch also includes effect transform tagging patches. void EffStk_Draw(Actor* thisx, PlayState* play) { EffStk* this = (EffStk*)thisx; s32 pad; Camera* activeCam = GET_ACTIVE_CAM(play); Vec3f eye = activeCam->eye; Vec3f quakeOffset; quakeOffset = Camera_GetQuakeOffset(activeCam); OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx); Matrix_Translate(eye.x + quakeOffset.x, eye.y + quakeOffset.y, eye.z + quakeOffset.z, MTXMODE_NEW); Matrix_Scale(0.2f, 0.2f, 0.2f, MTXMODE_APPLY); Matrix_ReplaceRotation(&play->billboardMtxF); Matrix_Translate(0.0f, 0.0f, this->unk148, MTXMODE_APPLY); Mtx* mtx = Matrix_NewMtx(play->state.gfxCtx); // @recomp Tag the transform. Do not allow edits as this will get edited by the billboard detection and we'll want to skip position during a camera cut too. if (camera_was_skipped()) { gEXMatrixGroupDecomposedSkipPosRot(POLY_XLU_DISP++, actor_transform_id(thisx), G_EX_PUSH, G_MTX_MODELVIEW, G_EX_EDIT_NONE); } else { gEXMatrixGroupDecomposedNormal(POLY_XLU_DISP++, actor_transform_id(thisx), G_EX_PUSH, G_MTX_MODELVIEW, G_EX_EDIT_NONE); } gSPMatrix(POLY_XLU_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); AnimatedMat_DrawAlphaStep(play, Lib_SegmentedToVirtual(object_stk2_Matanimheader_009F60), 1.0f, this->unk144); gDPSetColorDither(POLY_XLU_DISP++, G_CD_NOISE); gDPSetAlphaDither(POLY_XLU_DISP++, G_AD_NOISE); // @recomp Use the new DLs instead of the originals. gSPDisplayList(POLY_XLU_DISP++, skull_kid_curse_2_override_dl); gSPDisplayList(POLY_XLU_DISP++, skull_kid_curse_1_override_dl); // @recomp Pop the transform tag. gEXPopMatrixGroup(POLY_XLU_DISP++, G_MTX_MODELVIEW); CLOSE_DISPS(play->state.gfxCtx); }