summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorkrimtonz <33664508+krimtonz@users.noreply.github.com>2020-04-30 13:41:09 -0500
committerGitHub <noreply@github.com>2020-04-30 14:41:09 -0400
commit5525365f7f84132ab6ea184f5cd0929e1c41042f (patch)
tree708e3dcbdc3c5984d23befddf8663bd9cd0b85b9 /src/code
parent16b304d548e227472b6a520371b773a8b664f930 (diff)
Decompiles most FBDemo and transition functions (#92)
* Decompile fbdemo (transition) files * run format.sh * reformat vtx array, fill in a couple unk * match TransitionTriforce_IsDone * add VTX macro, add DW_ wrapping around triangle macros * use new VTX macro, name graphic assets * Naming updates * pr updates * naming updates * remove symbols for COLOR_BUFFER, D_08000000, and D_09000000
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_fbdemo.c114
-rw-r--r--src/code/z_fbdemo_circle.c438
-rw-r--r--src/code/z_fbdemo_fade.c117
-rw-r--r--src/code/z_fbdemo_triforce.c137
-rw-r--r--src/code/z_fbdemo_wipe1.c254
-rw-r--r--src/code/z_parameter.c16
-rw-r--r--src/code/z_play.c327
-rw-r--r--src/code/z_rcp.c14
-rw-r--r--src/code/z_view.c16
9 files changed, 1242 insertions, 191 deletions
diff --git a/src/code/z_fbdemo.c b/src/code/z_fbdemo.c
index e2b6f3cef..5a91cfd6c 100644
--- a/src/code/z_fbdemo.c
+++ b/src/code/z_fbdemo.c
@@ -1,20 +1,116 @@
#include <ultra64.h>
#include <global.h>
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B18B0.s")
+Gfx D_8012AFB0[] = {
+ gsDPPipeSync(),
+ gsDPSetCycleType(G_CYC_FILL),
+ gsDPSetColorImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 0x0F000000),
+ gsDPSetFillColor(RGBA8(0x42, 0x11, 0x42, 0x11)),
+ gsDPFillRectangle(0, 0, 319, 239),
+ gsDPPipeSync(),
+ gsDPSetFillColor(RGBA8(0x42, 0x3F, 0x42, 0x3F)),
+ gsDPFillRectangle(20, 20, 300, 220),
+ gsDPPipeSync(),
+ gsSPEndDisplayList(),
+};
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B1CFC.s")
+Gfx D_8012B000[] = {
+ gsDPPipeSync(),
+ gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
+ gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
+ G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH),
+ gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),
+ gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
+ G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_1PRIMITIVE,
+ G_AC_NONE | G_ZS_PIXEL | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2),
+ gsSPEndDisplayList(),
+};
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B1DBC.s")
+#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_InitGraphics.s")
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B1E84.s")
+#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_InitData.s")
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B2074.s")
+void TransitionUnk_Destroy(TransitionUnk* this) {
+ osSyncPrintf("fbdemo_cleanup(%08x)\n", this);
+ osSyncPrintf("msleep(100);\n");
+ Sleep_Msec(100);
+ if (this->unk_0C != NULL) {
+ SystemArena_FreeDebug(this->unk_0C, "../z_fbdemo.c", 180);
+ this->unk_0C = NULL;
+ }
+ if (this->vtxFrame1 != NULL) {
+ SystemArena_FreeDebug(this->vtxFrame1, "../z_fbdemo.c", 181);
+ this->vtxFrame1 = NULL;
+ }
+ if (this->vtxFrame2 != NULL) {
+ SystemArena_FreeDebug(this->vtxFrame2, "../z_fbdemo.c", 182);
+ this->vtxFrame2 = NULL;
+ }
+ if (this->gfx != NULL) {
+ SystemArena_FreeDebug(this->gfx, "../z_fbdemo.c", 183);
+ this->gfx = NULL;
+ }
+}
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B2188.s")
+TransitionUnk* TransitionUnk_Init(TransitionUnk* this, s32 row, s32 col) {
+ osSyncPrintf("fbdemo_init(%08x, %d, %d)\n", this, row, col);
+ bzero(this, sizeof(*this));
+ this->frame = 0;
+ this->row = row;
+ this->col = col;
+ this->unk_0C = SystemArena_MallocDebug(((row * 8) + 8) * (col + 1), "../z_fbdemo.c", 195);
+ this->vtxFrame1 = SystemArena_MallocDebug((row + 1) * sizeof(Vtx) * (col + 1), "../z_fbdemo.c", 196);
+ this->vtxFrame2 = SystemArena_MallocDebug((row + 1) * sizeof(Vtx) * (col + 1), "../z_fbdemo.c", 197);
+ this->gfx = SystemArena_MallocDebug(((this->col * ((this->row * 9) + 1)) + 2) * sizeof(Gfx), "../z_fbdemo.c", 198);
+ if (this->unk_0C == NULL || this->vtxFrame1 == NULL || this->vtxFrame2 == NULL || this->gfx == NULL) {
+ osSyncPrintf("fbdemo_init allocation error\n");
+ if (this->unk_0C != NULL) {
+ SystemArena_FreeDebug(this->unk_0C, "../z_fbdemo.c", 202);
+ this->unk_0C = NULL;
+ }
+ if (this->vtxFrame1 != NULL) {
+ SystemArena_FreeDebug(this->vtxFrame1, "../z_fbdemo.c", 203);
+ this->vtxFrame1 = NULL;
+ }
+ if (this->vtxFrame2 != NULL) {
+ SystemArena_FreeDebug(this->vtxFrame2, "../z_fbdemo.c", 204);
+ this->vtxFrame2 = NULL;
+ }
+ if (this->gfx != NULL) {
+ SystemArena_FreeDebug(this->gfx, "../z_fbdemo.c", 205);
+ this->gfx = NULL;
+ }
+ return NULL;
+ }
+ TransitionUnk_InitGraphics(this);
+ TransitionUnk_InitData(this);
+ this->frame = 0;
+ return this;
+}
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B22B4.s")
+#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_SetData.s")
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B23E8.s")
+void TransitionUnk_Draw(TransitionUnk* this, Gfx** gfxP) {
+ Gfx* gfx = *gfxP;
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_800B23F0.s")
+ gSPDisplayList(gfx++, D_8012B000);
+ TransitionUnk_SetData(this);
+ gSPMatrix(gfx++, &this->projection, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
+ gSPMatrix(gfx++, &this->modelView, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
+ gSPSegment(gfx++, 10, this->frame == 0 ? this->vtxFrame1 : this->vtxFrame2);
+ gSPSegment(gfx++, 11, this->zBuffer);
+ gSPDisplayList(gfx++, D_8012B000);
+ gSPDisplayList(gfx++, this->gfx);
+ gDPPipeSync(gfx++);
+ this->frame ^= 1;
+ *gfxP = gfx;
+}
+
+#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_Update.s")
+
+void func_800B23E8(TransitionUnk* this) {
+}
+
+s32 func_800B23F0(TransitionUnk* this) {
+ return 0;
+}
diff --git a/src/code/z_fbdemo_circle.c b/src/code/z_fbdemo_circle.c
new file mode 100644
index 000000000..9bae7fa4d
--- /dev/null
+++ b/src/code/z_fbdemo_circle.c
@@ -0,0 +1,438 @@
+#include <global.h>
+
+// unused
+Gfx sCirlceNullDList[] = {
+ gsSPEndDisplayList(),
+};
+
+char sCircleTexDefault[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x13, 0x13, 0x13,
+ 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
+ 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
+ 0x2E, 0x2E, 0x2E, 0x2E, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
+ 0x38, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4A, 0x4A,
+ 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x53, 0x53, 0x53, 0x53, 0x53,
+ 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C,
+ 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65,
+ 0x65, 0x65, 0x65, 0x65, 0x65, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E,
+ 0x6E, 0x6E, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x89, 0x89, 0x89, 0x89,
+ 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
+ 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
+ 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0xA4, 0xA4, 0xA4, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
+ 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xBF, 0xBF, 0xBF,
+ 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9,
+ 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2,
+ 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB,
+ 0xDB, 0xDB, 0xDB, 0xDB, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
+ 0xE4, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xF7, 0xF7,
+ 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+};
+
+char sCircleTexWave[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0x17, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x08, 0x08, 0x07, 0x08,
+ 0x18, 0x18, 0x18, 0x18, 0x1B, 0x15, 0x07, 0x06, 0x06, 0x06, 0x06, 0x08, 0x07, 0x07, 0x0B, 0x15, 0x18, 0x18, 0x18,
+ 0x18, 0x1D, 0x1F, 0x17, 0x17, 0x1A, 0x17, 0x10, 0x07, 0x0A, 0x11, 0x1A, 0x20, 0x17, 0x17, 0x17, 0x1B, 0x20, 0x20,
+ 0x1C, 0x18, 0x18, 0x17, 0x17, 0x0B, 0x19, 0x20, 0x21, 0x20, 0x21, 0x21, 0x1F, 0x1F, 0x1F, 0x20, 0x1C, 0x18, 0x18,
+ 0x21, 0x2C, 0x2B, 0x23, 0x20, 0x20, 0x20, 0x35, 0x35, 0x34, 0x30, 0x26, 0x24, 0x34, 0x37, 0x31, 0x35, 0x39, 0x3B,
+ 0x30, 0x20, 0x1F, 0x1F, 0x39, 0x39, 0x39, 0x39, 0x3C, 0x3D, 0x41, 0x42, 0x3F, 0x39, 0x38, 0x38, 0x40, 0x40, 0x3D,
+ 0x39, 0x38, 0x39, 0x3E, 0x43, 0x47, 0x44, 0x40, 0x40, 0x40, 0x39, 0x38, 0x41, 0x48, 0x49, 0x4D, 0x4F, 0x40, 0x41,
+ 0x47, 0x48, 0x47, 0x43, 0x3E, 0x3D, 0x3D, 0x3D, 0x41, 0x47, 0x46, 0x4A, 0x50, 0x50, 0x59, 0x54, 0x4C, 0x46, 0x49,
+ 0x50, 0x50, 0x4C, 0x4E, 0x53, 0x51, 0x51, 0x50, 0x4F, 0x4F, 0x4F, 0x6A, 0x69, 0x61, 0x59, 0x5F, 0x67, 0x6B, 0x69,
+ 0x6A, 0x6B, 0x64, 0x60, 0x62, 0x5B, 0x57, 0x57, 0x68, 0x68, 0x69, 0x6E, 0x71, 0x6A, 0x68, 0x68, 0x68, 0x68, 0x68,
+ 0x61, 0x5F, 0x66, 0x6C, 0x6C, 0x68, 0x68, 0x69, 0x70, 0x70, 0x6C, 0x68, 0x68, 0x68, 0x68, 0x68, 0x64, 0x66, 0x6F,
+ 0x71, 0x71, 0x67, 0x67, 0x6B, 0x6F, 0x6F, 0x6E, 0x6B, 0x68, 0x68, 0x67, 0x67, 0x65, 0x6D, 0x70, 0x70, 0x70, 0x6C,
+ 0x77, 0x7E, 0x77, 0x74, 0x75, 0x7F, 0x7D, 0x79, 0x6B, 0x6A, 0x6A, 0x70, 0x6D, 0x6E, 0x6E, 0x8E, 0x98, 0x98, 0x98,
+ 0x95, 0x96, 0x98, 0x98, 0x98, 0x8D, 0x8D, 0x8C, 0x89, 0x7D, 0x7A, 0x78, 0x9C, 0x96, 0x97, 0x97, 0x97, 0x97, 0x97,
+ 0x97, 0x97, 0x98, 0xA6, 0xA9, 0xAA, 0xA9, 0xA4, 0xA2, 0xAA, 0x9C, 0x96, 0x97, 0x96, 0x96, 0x95, 0x96, 0x98, 0x9E,
+ 0xA7, 0xA7, 0xA7, 0xA7, 0xAB, 0xB0, 0xB0, 0xAC, 0x9E, 0x96, 0x9C, 0xA5, 0xA7, 0xA5, 0xA4, 0xAC, 0xA6, 0xA7, 0xA7,
+ 0xA7, 0xAC, 0xAF, 0xAF, 0xB0, 0xB1, 0xA8, 0xAC, 0xB0, 0xB1, 0xB0, 0xB3, 0xBD, 0xB0, 0xA7, 0xA7, 0xA8, 0xAF, 0xAF,
+ 0xB4, 0xB9, 0xBD, 0xC2, 0xBB, 0xAF, 0xAF, 0xB0, 0xBD, 0xC0, 0xBE, 0xB2, 0xA8, 0xAA, 0xAE, 0xAE, 0xBF, 0xBF, 0xC1,
+ 0xC7, 0xC7, 0xBC, 0xAF, 0xB7, 0xBE, 0xBF, 0xBF, 0xC0, 0xC6, 0xBD, 0xB3, 0xB1, 0xBE, 0xBE, 0xC5, 0xC7, 0xC7, 0xC7,
+ 0xC4, 0xC8, 0xC2, 0xBE, 0xC1, 0xCE, 0xD8, 0xD8, 0xD3, 0xD0, 0xC3, 0xC6, 0xC3, 0xC5, 0xC5, 0xD0, 0xE0, 0xDF, 0xD6,
+ 0xCB, 0xD0, 0xD8, 0xD7, 0xD7, 0xDC, 0xE0, 0xE2, 0xE3, 0xDA, 0xD1, 0xCE, 0xDD, 0xDF, 0xDF, 0xE0, 0xDE, 0xD7, 0xD5,
+ 0xD6, 0xD6, 0xDE, 0xDF, 0xF2, 0xF1, 0xF2, 0xEB, 0xE6, 0xE1, 0xDF, 0xDD, 0xDF, 0xE8, 0xEB, 0xE3, 0xDF, 0xDF, 0xE1,
+ 0xDE, 0xF2, 0xEF, 0xEF, 0xF0, 0xEE, 0xEE, 0xEF, 0xF1, 0xEF, 0xF6, 0xF8, 0xF5, 0xF4, 0xF4, 0xF3, 0xED, 0xF7, 0xF3,
+ 0xF1, 0xF0, 0xF3, 0xF8, 0xF8, 0xF9, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+};
+
+char sCircleTexRipple[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
+ 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A,
+ 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37,
+ 0x37, 0x37, 0x37, 0x37, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
+ 0x38, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x72, 0x72,
+ 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A,
+ 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A,
+ 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D,
+ 0x7D, 0x7D, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBA, 0xBA, 0xBA, 0xBA,
+ 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
+ 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
+ 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xEF, 0xEF, 0xEF,
+ 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
+ 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
+ 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
+ 0xEA, 0xEA, 0xEA, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF6, 0xF6,
+ 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+};
+
+char sCircleTexStarburst[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x11, 0x08, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x14, 0x0A, 0x02,
+ 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0x19, 0x0C, 0x04, 0x02, 0x00, 0x00,
+ 0x00, 0x09, 0x00, 0x05, 0x00, 0x00, 0x14, 0x00, 0x00, 0x03, 0x1E, 0x0D, 0x05, 0x04, 0x00, 0x00, 0x01, 0x0B, 0x00,
+ 0x08, 0x00, 0x00, 0x1A, 0x00, 0x02, 0x06, 0x23, 0x10, 0x07, 0x07, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x0B, 0x00, 0x00,
+ 0x21, 0x00, 0x03, 0x09, 0x29, 0x15, 0x09, 0x09, 0x00, 0x00, 0x02, 0x13, 0x00, 0x11, 0x00, 0x00, 0x28, 0x00, 0x05,
+ 0x0E, 0x2E, 0x18, 0x0B, 0x0A, 0x00, 0x01, 0x04, 0x16, 0x01, 0x16, 0x00, 0x01, 0x2F, 0x00, 0x07, 0x12, 0x35, 0x1D,
+ 0x0F, 0x0C, 0x00, 0x02, 0x05, 0x1B, 0x02, 0x1C, 0x00, 0x02, 0x38, 0x00, 0x0A, 0x18, 0x3D, 0x23, 0x12, 0x10, 0x01,
+ 0x02, 0x08, 0x21, 0x02, 0x20, 0x00, 0x03, 0x40, 0x00, 0x0D, 0x1E, 0x47, 0x29, 0x15, 0x15, 0x04, 0x04, 0x0D, 0x27,
+ 0x04, 0x28, 0x01, 0x04, 0x4A, 0x00, 0x11, 0x25, 0x55, 0x35, 0x1F, 0x1F, 0x0D, 0x0D, 0x17, 0x33, 0x0D, 0x36, 0x08,
+ 0x0C, 0x58, 0x05, 0x1B, 0x2F, 0x66, 0x42, 0x2D, 0x2E, 0x18, 0x1A, 0x26, 0x43, 0x1A, 0x48, 0x14, 0x17, 0x68, 0x11,
+ 0x2C, 0x3D, 0x76, 0x51, 0x39, 0x3C, 0x24, 0x28, 0x37, 0x54, 0x28, 0x5C, 0x20, 0x23, 0x74, 0x1C, 0x3D, 0x49, 0x85,
+ 0x61, 0x44, 0x49, 0x30, 0x38, 0x47, 0x64, 0x38, 0x6F, 0x2E, 0x31, 0x80, 0x29, 0x50, 0x5B, 0x92, 0x71, 0x4E, 0x58,
+ 0x3C, 0x47, 0x57, 0x74, 0x49, 0x7C, 0x3D, 0x3E, 0x8E, 0x35, 0x63, 0x6E, 0x9D, 0x81, 0x5B, 0x69, 0x49, 0x58, 0x6B,
+ 0x82, 0x5D, 0x89, 0x4F, 0x4A, 0x9C, 0x43, 0x76, 0x81, 0xA9, 0x91, 0x67, 0x79, 0x56, 0x69, 0x81, 0x90, 0x72, 0x9A,
+ 0x61, 0x59, 0xA7, 0x51, 0x8B, 0x93, 0xB4, 0xA2, 0x73, 0x88, 0x65, 0x7C, 0x96, 0x9F, 0x88, 0xA9, 0x74, 0x66, 0xB2,
+ 0x60, 0xA2, 0xA3, 0xBF, 0xB0, 0x7E, 0x96, 0x76, 0x8E, 0xA9, 0xAF, 0x9E, 0xB7, 0x84, 0x74, 0xBC, 0x71, 0xB7, 0xB0,
+ 0xCA, 0xC0, 0x8D, 0xA8, 0x89, 0xA1, 0xBA, 0xBC, 0xB2, 0xC6, 0x92, 0x85, 0xC6, 0x82, 0xC9, 0xBC, 0xD3, 0xCE, 0x9F,
+ 0xB6, 0x9E, 0xB3, 0xC9, 0xC9, 0xC5, 0xD3, 0x9E, 0x99, 0xD0, 0x94, 0xD8, 0xC8, 0xDB, 0xD8, 0xB1, 0xC7, 0xB3, 0xC5,
+ 0xD6, 0xD2, 0xD1, 0xDE, 0xAF, 0xAC, 0xDB, 0xA8, 0xE4, 0xD4, 0xE2, 0xDF, 0xC4, 0xD8, 0xC8, 0xD4, 0xDF, 0xDB, 0xDB,
+ 0xE4, 0xC4, 0xBF, 0xE5, 0xBB, 0xEC, 0xE0, 0xE7, 0xE5, 0xD9, 0xE8, 0xDA, 0xE1, 0xE9, 0xE7, 0xE6, 0xEC, 0xD9, 0xD4,
+ 0xEF, 0xCF, 0xF1, 0xE9, 0xED, 0xEA, 0xEB, 0xF2, 0xE6, 0xE8, 0xF2, 0xF1, 0xEE, 0xF4, 0xEB, 0xE6, 0xF7, 0xDD, 0xF6,
+ 0xF0, 0xF5, 0xF3, 0xF6, 0xF6, 0xF4, 0xF0, 0xF8, 0xF5, 0xF2, 0xFA, 0xF7, 0xF1, 0xFB, 0xE6, 0xFB, 0xF6, 0xFC, 0xFD,
+ 0xFC, 0xFB, 0xFD, 0xFB, 0xFB, 0xFB, 0xFA, 0xFE, 0xFD, 0xFB, 0xFE, 0xF7, 0xFE, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+};
+
+Vtx sCircleVtx[] = {
+ VTX(-25, 0, 0, 0, 4096, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-23, 10, 0, 384, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 192, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-18, 18, 0, 768, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 576, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-10, 23, 0, 1152, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 960, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(0, 25, 0, 1536, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 1344, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(10, 23, 0, 1920, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 1728, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(18, 18, 0, 2304, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 2112, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(23, 10, 0, 2688, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 2496, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(25, 0, 0, 3072, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 2880, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(23, -10, 0, 3456, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 3264, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(18, -18, 0, 3840, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 3648, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(10, -23, 0, 4224, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 4032, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(0, -25, 0, 4608, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 4416, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-10, -23, 0, 4992, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 4800, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-18, -18, 0, 5376, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 5184, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-23, -10, 0, 5760, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(0, 0, -10, 5568, 2048, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-23, -10, 0, 5760, 4096, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(-25, 0, 0, 6144, 4096, 0xFF, 0xFF, 0xFF, 0xFF), VTX(0, 0, -10, 5952, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
+};
+
+Gfx sCircleDList[] = {
+ gsDPPipeSync(),
+ gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
+ G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH),
+ gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH),
+ gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
+ G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
+ G_AC_NONE | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2),
+ gsDPSetCombineMode(G_CC_BLENDPEDECALA, G_CC_BLENDPEDECALA),
+ gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
+ gsDPLoadTextureBlock(0x08000000, G_IM_FMT_I, G_IM_SIZ_8b, 16, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
+ G_TX_NOMIRROR | G_TX_CLAMP, 4, 6, G_TX_NOLOD, G_TX_NOLOD),
+ gsSPDisplayList(0x09000000),
+ gsSPVertex(sCircleVtx, 32, 0),
+ gsSP2Triangles(0, 1, 2, 0, 1, 3, 4, 0),
+ gsSP2Triangles(3, 5, 6, 0, 5, 7, 8, 0),
+ gsSP2Triangles(7, 9, 10, 0, 9, 11, 12, 0),
+ gsSP2Triangles(11, 13, 14, 0, 13, 15, 16, 0),
+ gsSP2Triangles(15, 17, 18, 0, 17, 19, 20, 0),
+ gsSP2Triangles(19, 21, 22, 0, 21, 23, 24, 0),
+ gsSP2Triangles(23, 25, 26, 0, 25, 27, 28, 0),
+ gsSP1Triangle(27, 29, 30, 0),
+ gsSPVertex(&sCircleVtx[31], 3, 0),
+ gsSP1Triangle(0, 1, 2, 0),
+ gsSPEndDisplayList(),
+};
+
+void TransitionCircle_Start(TransitionCircle* this) {
+ this->isDone = 0;
+ switch (this->effect) {
+ case 1:
+ this->texture = sCircleTexWave;
+ break;
+ case 2:
+ this->texture = sCircleTexRipple;
+ break;
+ case 3:
+ this->texture = sCircleTexStarburst;
+ break;
+ default:
+ this->texture = sCircleTexDefault;
+ break;
+ }
+
+ if (this->speed == 0) {
+ this->step = 0x14;
+ } else {
+ this->step = 0xA;
+ }
+
+ if (this->typeColor == 0) {
+ this->color.rgba = RGBA8(0x00, 0x00, 0x00, 0xFF);
+ } else if (this->typeColor == 1) {
+ this->color.rgba = RGBA8(0xA0, 0xA0, 0xA0, 0xFF);
+ } else if (this->typeColor == 2) {
+ // yes, really.
+ this->color.r = 0x64;
+ this->color.g = 0x64;
+ this->color.b = 0x64;
+ this->color.a = 0xFF;
+ } else {
+ this->step = 0x28;
+ this->color.rgba = this->effect == 1 ? RGBA8(0x00, 0x00, 0x00, 0xFF) : RGBA8(0xA0, 0xA0, 0xA0, 0xFF);
+ }
+ if (this->unk_14 != 0) {
+ this->texY = 0;
+ if (this->typeColor == 3) {
+ this->texY = 0xFA;
+ }
+ } else {
+ this->texY = 0x1F4;
+ if (this->effect == 2) {
+ Audio_PlaySoundGeneral(NA_SE_OC_SECRET_WARP_OUT, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
+ }
+ }
+ guPerspective(&this->projection, &this->normal, 60.0f, (4.0f / 3.0f), 10.0f, 12800.0f, 1.0f);
+ guLookAt(&this->lookAt, 0.0f, 0.0f, 400.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
+}
+
+TransitionCircle* TransitionCircle_Init(TransitionCircle* this) {
+ bzero(this, sizeof(*this));
+ return this;
+}
+
+void TransitionCircle_Destroy(TransitionCircle* this) {
+}
+
+void TransitionCircle_Update(TransitionCircle* this, s32 updateRate) {
+ s32 temp_t2;
+ s32 temp_t3;
+
+ if (this->unk_14 != 0) {
+ if (this->texY == 0) {
+ if (this->effect == 2) {
+ Audio_PlaySoundGeneral(NA_SE_OC_SECRET_WARP_IN, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
+ }
+ }
+ this->texY += this->step * 3 / updateRate;
+ if (this->texY >= 0x1F4) {
+ this->texY = 0x1F4;
+ this->isDone = 1;
+ }
+ } else {
+ this->texY -= this->step * 3 / updateRate;
+ if (this->typeColor != 3) {
+ if (this->texY <= 0) {
+ this->texY = 0;
+ this->isDone = 1;
+ }
+ } else {
+ if (this->texY < 0xFB) {
+ this->texY = 0xFA;
+ this->isDone = 1;
+ }
+ }
+ }
+}
+
+void TransitionCircle_Draw(TransitionCircle* this, Gfx** gfxP) {
+ Gfx* gfx = *gfxP;
+ Mtx* modelView = this->modelView[this->frame];
+ char pad[4];
+ Gfx* texScroll;
+
+ // These variables are a best guess based on the other transition types.
+ f32 tPos = 0.0f;
+ f32 rot = 0.0f;
+ f32 scale = 14.8f;
+
+ this->frame ^= 1;
+ gDPPipeSync(gfx++);
+ texScroll = Gfx_BranchTexScroll(&gfx, this->texX, this->texY, 0x10, 0x40);
+ gSPSegment(gfx++, 9, texScroll);
+ gSPSegment(gfx++, 8, this->texture);
+ gDPSetColor(gfx++, G_SETPRIMCOLOR, this->color.rgba);
+ gDPSetColor(gfx++, G_SETENVCOLOR, this->color.rgba);
+ gSPMatrix(gfx++, &this->projection, G_MTX_PROJECTION | G_MTX_LOAD);
+ gSPPerspNormalize(gfx++, this->normal);
+ gSPMatrix(gfx++, &this->lookAt, G_MTX_PROJECTION | G_MTX_NOPUSH | G_MTX_MUL);
+
+ if (scale != 1.0f) {
+ guScale(&modelView[0], scale, scale, 1.0f);
+ gSPMatrix(gfx++, &modelView[0], G_MTX_LOAD);
+ }
+
+ if (rot != 0.0f) {
+ guRotate(&modelView[1], rot, 0.0f, 0.0f, 1.0f);
+ gSPMatrix(gfx++, &modelView[1], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
+ }
+
+ if ((tPos != 0.0f) || (tPos != 0.0f)) {
+ guTranslate(&modelView[2], tPos, tPos, 0.0f);
+ gSPMatrix(gfx++, &modelView[2], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
+ }
+ gSPDisplayList(gfx++, sCircleDList);
+ gDPPipeSync(gfx++);
+ *gfxP = gfx;
+}
+
+s32 TransitionCircle_IsDone(TransitionCircle* this) {
+ return this->isDone;
+}
+
+void TransitionCircle_SetType(TransitionCircle* this, s32 type) {
+ if (type & 0x80) {
+ this->unk_14 = (type >> 5) & 0x1;
+ this->typeColor = (type >> 3) & 0x3;
+ this->speed = type & 0x1;
+ this->effect = (type >> 1) & 0x3;
+ } else if (type == 1) {
+ this->unk_14 = 1;
+ } else {
+ this->unk_14 = 0;
+ }
+}
+
+void TransitionCircle_SetColor(TransitionCircle* this, u32 color) {
+ this->color.rgba = color;
+}
+
+void TransitionCircle_SetEnvColor(TransitionCircle* this, u32 envColor) {
+ this->envColor.rgba = envColor;
+}
diff --git a/src/code/z_fbdemo_fade.c b/src/code/z_fbdemo_fade.c
new file mode 100644
index 000000000..043452aa2
--- /dev/null
+++ b/src/code/z_fbdemo_fade.c
@@ -0,0 +1,117 @@
+#include <global.h>
+#include <vt.h>
+
+static Gfx sRCPSetupFade[] = {
+ gsDPPipeSync(),
+ gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
+ G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH),
+ gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
+ G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_1PRIMITIVE,
+ G_AC_NONE | G_ZS_PIXEL | G_RM_CLD_SURF | G_RM_CLD_SURF2),
+ gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE),
+ gsSPEndDisplayList(),
+};
+
+void TransitionFade_Start(TransitionFade* this) {
+ switch (this->fadeType) {
+ case 0:
+ break;
+ case 1:
+ this->fadeTimer = 0;
+ this->fadeColor.a = this->fadeDirection != 0 ? 0xFF : 0;
+ break;
+ case 2:
+ this->fadeColor.a = 0;
+ break;
+ }
+ this->isDone = 0;
+}
+
+TransitionFade* TransitionFade_Init(TransitionFade* this) {
+ bzero(this, sizeof(*this));
+ return this;
+}
+
+void TransitionFade_Destroy(TransitionFade* this) {
+}
+
+#ifdef NON_MATCHING
+void TransitionFade_Update(TransitionFade* this, s32 updateRate) {
+ char pad[2];
+ s16 newAlpha;
+ s32 alpha;
+
+ switch (this->fadeType) {
+ case 0:
+ break;
+ case 1:
+ this->fadeTimer += updateRate;
+ if (this->fadeTimer >= gSaveContext.fadeDuration) {
+ this->fadeTimer = gSaveContext.fadeDuration;
+ this->isDone = 1;
+ }
+ if (gSaveContext.fadeDuration == 0) {
+ // Divide by 0! Zero is included in ZCommonGet fade_speed
+ osSyncPrintf(VT_COL(RED, WHITE) "0除算! ZCommonGet fade_speed に0がはいってる" VT_RST);
+ }
+ alpha = (this->fadeTimer * 255.0f) / gSaveContext.fadeDuration;
+ this->fadeColor.a = this->fadeDirection != 0 ? 0xFF - alpha : alpha;
+ break;
+ case 2:
+ newAlpha = this->fadeColor.a;
+ if (iREG(50) != 0) {
+ if (iREG(50) < 0) {
+ if (Math_ApproxS(&newAlpha, 0xFF, 0xFF) != 0) {
+ iREG(50) = 0x96;
+ }
+ } else {
+ Math_ApproxS(&iREG(50), 0x14, 0x3C);
+ if (Math_ApproxS(&newAlpha, 0, iREG(50)) != 0) {
+ iREG(50) = 0;
+ this->isDone = 1;
+ }
+ }
+ }
+ this->fadeColor.a = newAlpha;
+ break;
+ }
+}
+#else
+#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo_fade/TransitionFade_Update.s")
+#endif
+
+void TransitionFade_Draw(TransitionFade* this, Gfx** gfxP) {
+ Gfx* gfx;
+ Color_RGBA8* color;
+ if (this->fadeColor.a > 0) {
+ color = &this->fadeColor;
+ gfx = *gfxP;
+ gSPDisplayList(gfx++, sRCPSetupFade);
+ gDPSetPrimColor(gfx++, 0, 0, color->r, color->g, color->b, color->a);
+ gDPFillRectangle(gfx++, 0, 0, gScreenWidth - 1, gScreenHeight - 1);
+ gDPPipeSync(gfx++);
+ *gfxP = gfx;
+ }
+}
+
+s32 TransitionFade_IsDone(TransitionFade* this) {
+ return this->isDone;
+}
+
+void TransitionFade_SetColor(TransitionFade* this, u32 color) {
+ this->fadeColor.rgba = color;
+}
+
+void TransitionFade_SetType(TransitionFade* this, s32 type) {
+ if (type == 1) {
+ this->fadeType = 1;
+ this->fadeDirection = 1;
+ } else if (type == 2) {
+ this->fadeType = 1;
+ this->fadeDirection = 0;
+ } else if (type == 3) {
+ this->fadeType = 2;
+ } else {
+ this->fadeType = 0;
+ }
+}
diff --git a/src/code/z_fbdemo_triforce.c b/src/code/z_fbdemo_triforce.c
new file mode 100644
index 000000000..0583c1aa4
--- /dev/null
+++ b/src/code/z_fbdemo_triforce.c
@@ -0,0 +1,137 @@
+#include <global.h>
+
+Gfx sTriforceDList[] = {
+ gsDPPipeSync(),
+ gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
+ gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
+ G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH),
+ gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),
+ gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
+ G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_1PRIMITIVE,
+ G_AC_NONE | G_ZS_PIXEL | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2),
+ gsSPEndDisplayList(),
+};
+
+Vtx sTriforceVTX[] = {
+ VTX(0, 577, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(1000, -1154, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(-1000, -1154, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(0, -1154, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(500, -288, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-500, -288, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(-32000, 32000, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32000, 32000, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
+ VTX(32000, -32000, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32000, -32000, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
+};
+
+void TransitionTriforce_Start(TransitionTriforce* this) {
+ switch (this->state) {
+ case 1:
+ case 2:
+ this->transPos = 1.0f;
+ return;
+ }
+ this->transPos = 0.03f;
+}
+
+TransitionTriforce* TransitionTriforce_Init(TransitionTriforce* this) {
+ bzero(this, sizeof(*this));
+ func_801045A4(&this->projection, -160.0f, 160.0f, -120.0f, 120.0f, -1000.0f, 1000.0f, 1.0f);
+ this->transPos = 1.0f;
+ this->state = 2;
+ this->step = 0.015f;
+ this->fadeDirection = 1;
+ return this;
+}
+
+void TransitionTriforce_Destroy(TransitionTriforce* this) {
+}
+
+void TransitionTriforce_Update(TransitionTriforce* this, s32 updateRate) {
+ f32 temp_f0;
+ s32 i;
+ for (i = updateRate; i > 0; i--) {
+ if (this->state == 1) {
+ this->transPos = CLAMP_MIN(this->transPos * (1.0f - this->step), 0.03f);
+ } else if (this->state == 2) {
+ this->transPos = CLAMP_MIN(this->transPos - this->step, 0.03f);
+ } else if (this->state == 3) {
+ this->transPos = CLAMP_MAX(this->transPos / (1.0f - this->step), 1.0f);
+ } else if (this->state == 4) {
+ this->transPos = CLAMP_MAX(this->transPos + this->step, 1.0f);
+ }
+ }
+}
+
+void TransitionTriforce_SetColor(TransitionTriforce* this, u32 color) {
+ this->color.rgba = color;
+}
+
+void TransitionTriforce_SetType(TransitionTriforce* this, s32 type) {
+ this->fadeDirection = type;
+}
+
+// unused
+void TransitionTriforce_SetState(TransitionTriforce* this, s32 state) {
+ this->state = state;
+}
+
+void TransitionTriforce_Draw(TransitionTriforce* this, Gfx** gfxP) {
+
+ Gfx* gfx = *gfxP;
+ Mtx* modelView;
+ f32 scale;
+ char pad[4];
+
+ char pad2[4];
+ f32 rotation;
+
+ rotation = this->transPos * 360.0f;
+ modelView = this->modelView[this->frame];
+ scale = this->transPos * 0.625f;
+ this->frame ^= 1;
+ osSyncPrintf("rate=%f tx=%f ty=%f rotate=%f\n", this->transPos, 0.0f, 0.0f, rotation);
+ guScale(&modelView[0], scale, scale, 1.0f);
+ guRotate(&modelView[1], rotation, 0.0f, 0.0f, 1.0f);
+ guTranslate(&modelView[2], 0.0f, 0.0f, 0.0f);
+ gDPPipeSync(gfx++);
+ gSPDisplayList(gfx++, sTriforceDList);
+ gDPSetColor(gfx++, G_SETPRIMCOLOR, this->color.rgba);
+ gDPSetCombineMode(gfx++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
+ gSPMatrix(gfx++, &this->projection, G_MTX_LOAD | G_MTX_PROJECTION);
+ gSPMatrix(gfx++, &modelView[0], G_MTX_LOAD);
+ gSPMatrix(gfx++, &modelView[1], G_MTX_NOPUSH | G_MTX_MODELVIEW | G_MTX_MUL);
+ gSPMatrix(gfx++, &modelView[2], G_MTX_NOPUSH | G_MTX_MODELVIEW | G_MTX_MUL);
+ gSPVertex(gfx++, sTriforceVTX, 10, 0);
+ if (!TransitionTriforce_IsDone(this)) {
+ switch (this->fadeDirection) {
+ case 1:
+ gSP2Triangles(gfx++, 0, 4, 5, 0, 4, 1, 3, 0);
+ gSP1Triangle(gfx++, 5, 3, 2, 0);
+ break;
+ case 2:
+ gSP2Triangles(gfx++, 3, 4, 5, 0, 0, 2, 6, 0);
+ gSP2Triangles(gfx++, 0, 6, 7, 0, 1, 0, 7, 0);
+ gSP2Triangles(gfx++, 1, 7, 8, 0, 1, 8, 9, 0);
+ gSP2Triangles(gfx++, 1, 9, 2, 0, 2, 9, 6, 0);
+ break;
+ }
+ } else {
+ switch (this->fadeDirection) {
+ case 1:
+ break;
+ case 2:
+ gSP1Quadrangle(gfx++, 6, 7, 8, 9, 0);
+ break;
+ }
+ }
+ gDPPipeSync(gfx++);
+ *gfxP = gfx;
+}
+
+s32 TransitionTriforce_IsDone(TransitionTriforce* this) {
+ s32 ret = 0;
+ if (this->state == 1 || this->state == 2) {
+ return this->transPos <= 0.03f;
+
+ } else if (this->state == 3 || this->state == 4) {
+ return this->transPos >= 1.0f;
+ }
+ return ret;
+}
diff --git a/src/code/z_fbdemo_wipe1.c b/src/code/z_fbdemo_wipe1.c
new file mode 100644
index 000000000..c0cacc18c
--- /dev/null
+++ b/src/code/z_fbdemo_wipe1.c
@@ -0,0 +1,254 @@
+#include <global.h>
+
+Vtx sWipeVtx[] = {
+ VTX(-1299, 750, 0, 13653, 2048, 0xAD, 0x30, 0xB8, 0xFF), VTX(-750, 1299, 0, 15019, 2048, 0xD0, 0x53, 0xB8, 0xFF),
+ VTX(0, 0, -500, 14336, 0, 0xCE, 0xCE, 0xA0, 0xFF), VTX(0, 1500, 0, 16384, 2048, 0x00, 0x60, 0xB8, 0xFF),
+ VTX(0, 0, -500, 15701, 0, 0x3D, 0x3D, 0xAD, 0xFF), VTX(0, 1500, 0, 0, 2048, 0x00, 0x60, 0xB8, 0xFF),
+ VTX(750, 1299, 0, 1365, 2048, 0x30, 0x53, 0xB8, 0xFF), VTX(0, 0, -500, 683, 0, 0x3D, 0x3D, 0xAD, 0xFF),
+ VTX(1299, 750, 0, 2731, 2048, 0x53, 0x30, 0xB8, 0xFF), VTX(0, 0, -500, 2048, 0, 0x3D, 0x3D, 0xAD, 0xFF),
+ VTX(1500, 0, 0, 4096, 2048, 0x60, 0x00, 0xB8, 0xFF), VTX(0, 0, -500, 3413, 0, 0x3D, 0x3D, 0xAD, 0xFF),
+ VTX(1299, -750, 0, 5461, 2048, 0x53, 0xD0, 0xB8, 0xFF), VTX(0, 0, -500, 4779, 0, 0x3D, 0x3D, 0xAD, 0xFF),
+ VTX(750, -1299, 0, 6827, 2048, 0x30, 0xAD, 0xB8, 0xFF), VTX(0, 0, -500, 6144, 0, 0xCE, 0xCE, 0xA0, 0xFF),
+ VTX(0, -1500, 0, 8192, 2048, 0x00, 0xA0, 0xB8, 0xFF), VTX(0, 0, -500, 7509, 0, 0xCE, 0xCE, 0xA0, 0xFF),
+ VTX(-750, -1299, 0, 9557, 2048, 0xD0, 0xAD, 0xB8, 0xFF), VTX(0, 0, -500, 8875, 0, 0xCE, 0xCE, 0xA0, 0xFF),
+ VTX(-1299, -750, 0, 10923, 2048, 0xAD, 0xD0, 0xB8, 0xFF), VTX(0, 0, -500, 10240, 0, 0xCE, 0xCE, 0xA0, 0xFF),
+ VTX(-1500, 0, 0, 12288, 2048, 0xA0, 0x00, 0xB8, 0xFF), VTX(0, 0, -500, 11605, 0, 0xCE, 0xCE, 0xA0, 0xFF),
+ VTX(0, 0, -500, 12971, 0, 0xCE, 0xCE, 0xA0, 0xFF),
+};
+
+char sWipeTexture[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01,
+ 0x24, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x12, 0x34, 0x10, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x31, 0x23, 0x45, 0x21, 0x10, 0x00, 0x00, 0x01, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41,
+ 0x34, 0x56, 0x31, 0x10, 0x00, 0x00, 0x01, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x10, 0x02, 0x42, 0x35, 0x66, 0x32, 0x20, 0x00, 0x00,
+ 0x02, 0x00, 0x32, 0x13, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+ 0x01, 0x00, 0x00, 0x00, 0x10, 0x02, 0x53, 0x45, 0x67, 0x42, 0x20, 0x00, 0x00, 0x02, 0x01, 0x32, 0x23, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x12, 0x00, 0x10, 0x00, 0x10, 0x03,
+ 0x64, 0x56, 0x77, 0x53, 0x30, 0x01, 0x00, 0x13, 0x12, 0x42, 0x24, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x31, 0x13, 0x00, 0x11, 0x00, 0x10, 0x03, 0x64, 0x67, 0x77, 0x54, 0x41, 0x01,
+ 0x00, 0x14, 0x12, 0x53, 0x35, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x41, 0x24, 0x11, 0x21, 0x00, 0x20, 0x14, 0x75, 0x67, 0x77, 0x64, 0x51, 0x12, 0x00, 0x24, 0x23, 0x53, 0x46, 0x30,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x52, 0x34, 0x11, 0x31, 0x01, 0x20,
+ 0x15, 0x76, 0x77, 0x87, 0x65, 0x52, 0x13, 0x00, 0x25, 0x34, 0x64, 0x56, 0x31, 0x20, 0x00, 0x00, 0x00, 0x01, 0x31,
+ 0x02, 0x10, 0x00, 0x00, 0x00, 0x10, 0x03, 0x52, 0x35, 0x22, 0x41, 0x02, 0x21, 0x26, 0x77, 0x77, 0x87, 0x75, 0x62,
+ 0x13, 0x11, 0x36, 0x35, 0x65, 0x57, 0x41, 0x30, 0x00, 0x10, 0x00, 0x01, 0x31, 0x12, 0x10, 0x10, 0x00, 0x00, 0x10,
+ 0x04, 0x62, 0x46, 0x23, 0x51, 0x02, 0x21, 0x36, 0x77, 0x78, 0x88, 0x76, 0x63, 0x24, 0x11, 0x46, 0x46, 0x75, 0x67,
+ 0x52, 0x40, 0x01, 0x10, 0x00, 0x02, 0x42, 0x13, 0x10, 0x20, 0x01, 0x00, 0x21, 0x15, 0x63, 0x56, 0x34, 0x51, 0x13,
+ 0x31, 0x47, 0x88, 0x78, 0x88, 0x77, 0x64, 0x24, 0x22, 0x56, 0x56, 0x76, 0x77, 0x53, 0x41, 0x02, 0x10, 0x10, 0x03,
+ 0x53, 0x23, 0x21, 0x31, 0x01, 0x01, 0x31, 0x16, 0x74, 0x66, 0x35, 0x62, 0x14, 0x32, 0x47, 0x88, 0x88, 0x88, 0x87,
+ 0x75, 0x34, 0x22, 0x57, 0x57, 0x76, 0x77, 0x54, 0x51, 0x03, 0x10, 0x11, 0x04, 0x63, 0x34, 0x22, 0x31, 0x02, 0x01,
+ 0x42, 0x26, 0x74, 0x67, 0x46, 0x62, 0x25, 0x42, 0x57, 0x89, 0x88, 0x88, 0x98, 0x75, 0x35, 0x33, 0x67, 0x67, 0x77,
+ 0x77, 0x65, 0x51, 0x03, 0x10, 0x21, 0x14, 0x64, 0x45, 0x33, 0x41, 0x12, 0x12, 0x52, 0x37, 0x75, 0x77, 0x56, 0x72,
+ 0x36, 0x53, 0x67, 0x89, 0x88, 0x89, 0xA8, 0x76, 0x45, 0x44, 0x67, 0x67, 0x87, 0x77, 0x76, 0x62, 0x14, 0x21, 0x32,
+ 0x15, 0x75, 0x55, 0x43, 0x52, 0x13, 0x13, 0x63, 0x47, 0x75, 0x77, 0x57, 0x73, 0x46, 0x54, 0x78, 0x8A, 0x88, 0x9A,
+ 0xA8, 0x77, 0x56, 0x55, 0x77, 0x67, 0x88, 0x88, 0x76, 0x72, 0x25, 0x21, 0x42, 0x26, 0x75, 0x66, 0x54, 0x62, 0x24,
+ 0x23, 0x64, 0x57, 0x76, 0x77, 0x67, 0x74, 0x57, 0x65, 0x78, 0x9B, 0x89, 0x9B, 0xB8, 0x87, 0x56, 0x55, 0x77, 0x78,
+ 0x88, 0x88, 0x87, 0x73, 0x25, 0x21, 0x43, 0x36, 0x76, 0x67, 0x65, 0x63, 0x35, 0x24, 0x75, 0x57, 0x77, 0x77, 0x77,
+ 0x75, 0x67, 0x65, 0x78, 0x9B, 0x89, 0xAB, 0xC8, 0x87, 0x67, 0x66, 0x77, 0x78, 0x98, 0x88, 0x98, 0x74, 0x36, 0x32,
+ 0x54, 0x37, 0x76, 0x77, 0x66, 0x73, 0x45, 0x35, 0x75, 0x67, 0x77, 0x88, 0x77, 0x75, 0x67, 0x66, 0x78, 0xAC, 0x9A,
+ 0xBC, 0xC8, 0x87, 0x67, 0x66, 0x77, 0x78, 0xA9, 0x88, 0x98, 0x75, 0x46, 0x33, 0x65, 0x47, 0x77, 0x77, 0x77, 0x74,
+ 0x56, 0x46, 0x76, 0x77, 0x87, 0x89, 0x88, 0x76, 0x77, 0x76, 0x78, 0xBD, 0x9B, 0xCD, 0xD8, 0x98, 0x77, 0x76, 0x78,
+ 0x78, 0xAA, 0x89, 0x98, 0x76, 0x56, 0x44, 0x66, 0x57, 0x77, 0x77, 0x77, 0x75, 0x67, 0x46, 0x77, 0x78, 0x88, 0x89,
+ 0x88, 0x87, 0x78, 0x87, 0x78, 0xCD, 0x9C, 0xDE, 0xD9, 0x98, 0x77, 0x77, 0x78, 0x88, 0xBA, 0x99, 0xA8, 0x76, 0x66,
+ 0x44, 0x76, 0x67, 0x88, 0x88, 0x88, 0x75, 0x77, 0x56, 0x77, 0x78, 0x99, 0x89, 0x88, 0x88, 0x88, 0x87, 0x88, 0xCD,
+ 0x9D, 0xEE, 0xD9, 0xA8, 0x88, 0x87, 0x88, 0x88, 0xCB, 0x9A, 0xA8, 0x77, 0x67, 0x55, 0x77, 0x77, 0x88, 0x88, 0x88,
+ 0x76, 0x77, 0x67, 0x78, 0x88, 0xAA, 0x8A, 0x98, 0x89, 0x88, 0x98, 0x88, 0xDD, 0xAD, 0xFE, 0xDA, 0xB9, 0x88, 0x98,
+ 0x89, 0x88, 0xDC, 0xAB, 0xB8, 0x88, 0x77, 0x56, 0x77, 0x77, 0x89, 0x88, 0x98, 0x76, 0x77, 0x67, 0x88, 0x88, 0xAA,
+ 0x8A, 0xA8, 0x9A, 0x88, 0xA8, 0x89, 0xDD, 0xAE, 0xFF, 0xDA, 0xC9, 0x88, 0x98, 0x89, 0x88, 0xDD, 0xAC, 0xB8, 0x88,
+ 0x77, 0x66, 0x78, 0x78, 0x99, 0x88, 0x98, 0x77, 0x77, 0x77, 0x89, 0x88, 0xBB, 0x9B, 0xA8, 0x9B, 0x88, 0xB8, 0x8A,
+ 0xED, 0xBE, 0xFF, 0xDB, 0xDA, 0x88, 0xA8, 0x8A, 0x89, 0xED, 0xBD, 0xC8, 0x89, 0x87, 0x67, 0x89, 0x88, 0x9A, 0x88,
+ 0xA8, 0x87, 0x77, 0x77, 0x8A, 0x88, 0xCB, 0x9C, 0xB8, 0xAC, 0x88, 0xC9, 0x8A, 0xFD, 0xCF, 0xFF, 0xEC, 0xEB, 0x89,
+ 0xB8, 0x9B, 0x89, 0xED, 0xCE, 0xC8, 0x9A, 0x87, 0x77, 0x89, 0x88, 0xAB, 0x89, 0xA8, 0x87, 0x88, 0x78, 0x8B, 0x89,
+ 0xDC, 0x9C, 0xC9, 0xBC, 0x88, 0xDA, 0x8B, 0xFE, 0xCF, 0xFF, 0xEC, 0xEB, 0x8A, 0xC9, 0xAC, 0x9A, 0xEE, 0xCE, 0xD8,
+ 0x9A, 0x87, 0x77, 0x8A, 0x88, 0xBC, 0x9A, 0xB8, 0x98, 0x88, 0x78, 0x8B, 0x8A, 0xED, 0x9D, 0xC9, 0xCD, 0x89, 0xEB,
+ 0x8C, 0xFE, 0xDF, 0xFF, 0xFD, 0xFC, 0x9B, 0xD9, 0xBD, 0x9A, 0xFE, 0xDF, 0xE9, 0xAB, 0x88, 0x77, 0x8A, 0x88, 0xCD,
+ 0x9B, 0xC8, 0xA9, 0x88, 0x88, 0x9C, 0x9A, 0xED, 0xAD, 0xD9, 0xDE, 0x89, 0xEB, 0x9C, 0xFE, 0xEF, 0xFF, 0xFE, 0xFD,
+ 0x9B, 0xD9, 0xBD, 0xAB, 0xFE, 0xDF, 0xE9, 0xBC, 0x88, 0x88, 0x8B, 0x98, 0xDD, 0xAB, 0xC9, 0xAA, 0x88, 0x88, 0xAD,
+ 0x9B, 0xED, 0xBE, 0xE9, 0xDE, 0x99, 0xEC, 0x9D, 0xFE, 0xFF, 0xFF, 0xFF, 0xFD, 0xAC, 0xE9, 0xCE, 0xAC, 0xFE, 0xDF,
+ 0xE9, 0xCC, 0x89, 0x88, 0x8C, 0x99, 0xEE, 0xAC, 0xC9, 0xBB, 0x88, 0x88, 0xAE, 0x9B, 0xFD, 0xBF, 0xE9, 0xEE, 0x99,
+ 0xEC, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xAD, 0xE9, 0xDE, 0xBD, 0xFE, 0xEF, 0xEA, 0xDD, 0x99, 0x88, 0x9D, 0xA9,
+ 0xEE, 0xAD, 0xDA, 0xCC, 0x89, 0x88, 0xBE, 0xAC, 0xFE, 0xCF, 0xEA, 0xEE, 0xAA, 0xED, 0x9E, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFE, 0xBE, 0xEA, 0xDF, 0xCE, 0xFE, 0xEF, 0xEB, 0xED, 0x9A, 0x88, 0xAD, 0xAA, 0xFE, 0xBE, 0xDA, 0xDC, 0x99, 0x98,
+ 0xCE, 0xBD, 0xFE, 0xDF, 0xEA, 0xFF, 0xAB, 0xFD, 0xAE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xCE, 0xDA, 0xEF, 0xCE, 0xFE,
+ 0xFF, 0xFC, 0xED, 0x9A, 0x88, 0xBE, 0xBB, 0xFE, 0xBE, 0xDB, 0xED, 0xAA, 0xA9, 0xDF, 0xBD, 0xFD, 0xEF, 0xEB, 0xFF,
+ 0xBC, 0xFE, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDF, 0xEB, 0xEF, 0xDF, 0xFF, 0xFF, 0xFD, 0xFC, 0x9B, 0x99, 0xCE,
+ 0xBC, 0xFE, 0xCF, 0xEC, 0xFE, 0xBB, 0xB9, 0xEF, 0xCE, 0xFD, 0xEF, 0xEC, 0xFF, 0xCD, 0xFE, 0xCE, 0xFE, 0xFF, 0xFF,
+ 0xFF, 0xFE, 0xDF, 0xEC, 0xEF, 0xDF, 0xFF, 0xFF, 0xFD, 0xFC, 0xAC, 0xAA, 0xCE, 0xCD, 0xFE, 0xDF, 0xEC, 0xFE, 0xCC,
+ 0xBA, 0xEF, 0xDE, 0xED, 0xFF, 0xED, 0xFF, 0xDD, 0xEE, 0xCF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0xEC, 0xEF, 0xEF,
+ 0xFF, 0xFF, 0xFE, 0xFC, 0xBC, 0xAB, 0xDD, 0xDD, 0xFE, 0xDF, 0xED, 0xFE, 0xCD, 0xCB, 0xFF, 0xEE, 0xEC, 0xFF, 0xDD,
+ 0xFF, 0xEE, 0xEE, 0xDF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0xED, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFC, 0xCD, 0xAC,
+ 0xED, 0xDE, 0xFE, 0xEF, 0xFE, 0xFE, 0xDE, 0xDC, 0xFF, 0xEF, 0xEC, 0xFF, 0xDE, 0xFF, 0xFF, 0xEE, 0xEF, 0xEE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xCD, 0xAD, 0xFD, 0xDF, 0xFE, 0xEF, 0xFF, 0xFE,
+ 0xEE, 0xED, 0xFF, 0xFF, 0xEC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xFE,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xDD, 0xBE, 0xFD, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0xED, 0xFF, 0xFF, 0xEB, 0xFF,
+ 0xDF, 0xFE, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xEE,
+ 0xBE, 0xFD, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xEB, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFF, 0xEF,
+ 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFE, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFE, 0xEF, 0xEE, 0xFF, 0xFF, 0xFC, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF,
+ 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xAF, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, 0xFE, 0xEF, 0xEE, 0xFF, 0xFF, 0xFC,
+ 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xAF, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, 0xFE, 0xEF, 0xEE, 0xFF, 0xFF, 0xFC, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAE, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xEF, 0xFF, 0xEF, 0xED, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+};
+
+Gfx sWipeDList[] = {
+ gsDPPipeSync(),
+ gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
+ G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH),
+ gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
+ gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
+ G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_1PRIMITIVE,
+ G_AC_NONE | G_ZS_PRIM | G_RM_PASS | G_RM_AA_ZB_TEX_EDGE2),
+ gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, COMBINED, 0,
+ PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0),
+ gsDPSetPrimDepth(0, 0),
+ gsDPLoadTextureBlock_4b(sWipeTexture, G_IM_FMT_I, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 6,
+ 6, 11, G_TX_NOLOD),
+ gsDPLoadMultiBlock_4b(sWipeTexture, 0x0100, 1, G_IM_FMT_I, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
+ G_TX_MIRROR | G_TX_WRAP, 6, 6, 11, 1),
+ gsDPSetTextureLUT(G_TT_NONE),
+ gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
+ gsSPDisplayList(0x08000000),
+ gsSPVertex(sWipeVtx, 25, 0),
+ gsSP2Triangles(0, 1, 2, 0, 1, 3, 4, 0),
+ gsSP2Triangles(5, 6, 7, 0, 6, 8, 9, 0),
+ gsSP2Triangles(8, 10, 11, 0, 10, 12, 13, 0),
+ gsSP2Triangles(12, 14, 15, 0, 14, 16, 17, 0),
+ gsSP2Triangles(16, 18, 19, 0, 18, 20, 21, 0),
+ gsSP2Triangles(20, 22, 23, 0, 22, 0, 24, 0),
+ gsSPEndDisplayList(),
+};
+
+// unused.
+Gfx sWipeSyncDList[] = {
+ gsDPPipeSync(),
+ gsSPEndDisplayList(),
+};
+
+void TransitionWipe_Start(TransitionWipe* this) {
+ this->isDone = 0;
+ if (this->direction) {
+ this->texY = 0x14D;
+ } else {
+ this->texY = 0x264;
+ }
+
+ guPerspective(&this->projection, &this->normal, 60.0f, (4.0 / 3.0f), 10.0f, 12800.0f, 1.0f);
+ guLookAt(&this->lookAt, 0.0f, 0.0f, 400.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
+}
+
+TransitionWipe* TransitionWipe_Init(TransitionWipe* this) {
+ bzero(this, sizeof(*this));
+ return this;
+}
+
+void TransitionWipe_Destroy(TransitionWipe* this) {
+}
+
+void TransitionWipe_Update(TransitionWipe* this, s32 updateRate) {
+ u8 unk1419;
+
+ if (this->direction != 0) {
+ unk1419 = gSaveContext.unk_1419;
+ this->texY += (unk1419 * 3) / updateRate;
+ if (this->texY >= 0x264) {
+ this->texY = 0x264;
+ this->isDone = 1;
+ }
+ } else {
+ unk1419 = gSaveContext.unk_1419;
+ this->texY -= (unk1419 * 3) / updateRate;
+ if (this->texY < 0x14E) {
+ this->texY = 0x14D;
+ this->isDone = 1;
+ }
+ }
+}
+
+void TransitionWipe_Draw(TransitionWipe* this, Gfx** gfxP) {
+ Gfx* gfx = *gfxP;
+ Mtx* modelView;
+ char pad[0x14];
+ Gfx* tex;
+
+ modelView = this->modelView[this->frame];
+ this->frame ^= 1;
+ guScale(&modelView[0], 0.56f, 0.56f, 1.0f);
+ guRotate(&modelView[1], 0.0f, 0.0f, 0.0f, 1.0f);
+ guTranslate(&modelView[2], 0.0f, 0.0f, 0.0f);
+ gDPPipeSync(gfx++);
+ tex = Gfx_BranchTexScroll(&gfx, this->texX, this->texY, 0, 0);
+ gSPSegment(gfx++, 8, tex);
+ gDPSetPrimColor(gfx++, 0, 0x80, this->color.r, this->color.g, this->color.b, 0xFF);
+ gSPMatrix(gfx++, &this->projection, G_MTX_LOAD | G_MTX_PROJECTION);
+ gSPPerspNormalize(gfx++, this->normal);
+ gSPMatrix(gfx++, &this->lookAt, G_MTX_MUL | G_MTX_PROJECTION);
+ gSPMatrix(gfx++, &modelView[0], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
+ gSPMatrix(gfx++, &modelView[1], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
+ gSPMatrix(gfx++, &modelView[2], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
+ gSPDisplayList(gfx++, sWipeDList);
+ gDPPipeSync(gfx++);
+ *gfxP = gfx;
+}
+
+s32 TransitionWipe_IsDone(TransitionWipe* this) {
+ return this->isDone;
+}
+
+void TransitionWipe_SetType(TransitionWipe* this, s32 type) {
+ if (type == 1) {
+ this->direction = 1;
+ } else {
+ this->direction = 0;
+ }
+
+ if (this->direction != 0) {
+ this->texY = 0x14D;
+ } else {
+ this->texY = 0x264;
+ }
+}
+
+void TransitionWipe_SetColor(TransitionWipe* this, u32 color) {
+ this->color.rgba = color;
+}
+
+void TransitionWipe_SetEnvColor(TransitionWipe* this, u32 color) {
+ this->envColor.rgba = color;
+}
diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c
index 6b51e685c..860678a28 100644
--- a/src/code/z_parameter.c
+++ b/src/code/z_parameter.c
@@ -651,7 +651,7 @@ void func_80083108(GlobalContext* globalCtx) {
Interface_ChangeAlpha(6);
}
- if (globalCtx->unk_1241B != 0) {
+ if (globalCtx->transitionMode != 0) {
Interface_ChangeAlpha(1);
} else if (gSaveContext.minigameState == 1) {
Interface_ChangeAlpha(8);
@@ -1047,7 +1047,7 @@ void func_80083108(GlobalContext* globalCtx) {
if (sp28) {
gSaveContext.unk_13EA = 0;
- if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_1241B == 0)) {
+ if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) {
Interface_ChangeAlpha(50);
osSyncPrintf("???????? alpha_change( 50 ); ?????\n");
} else {
@@ -1064,7 +1064,7 @@ void Interface_SetSceneRestrictions(GlobalContext* globalCtx) {
// clang-format off
interfaceCtx->restrictions.hGauge = interfaceCtx->restrictions.bButton =
interfaceCtx->restrictions.aButton = interfaceCtx->restrictions.bottles =
- interfaceCtx->restrictions.tradeItems = interfaceCtx->restrictions.hookshot =
+ interfaceCtx->restrictions.tradeItems = interfaceCtx->restrictions.hookshot =
interfaceCtx->restrictions.ocarina = interfaceCtx->restrictions.warpSongs =
interfaceCtx->restrictions.sunsSong = interfaceCtx->restrictions.farores =
interfaceCtx->restrictions.dinsNayrus = interfaceCtx->restrictions.all = 0;
@@ -2497,7 +2497,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
case 7:
if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.flag == 0) &&
(globalCtx->msgCtx.msgMode == 0) && (globalCtx->unk_10A20 == 0) && (globalCtx->sceneLoadFlag == 0) &&
- (globalCtx->unk_1241B == 0) && !Gameplay_InCsMode(globalCtx)) {
+ (globalCtx->transitionMode == 0) && !Gameplay_InCsMode(globalCtx)) {
if ((gSaveContext.magic == 0) || ((func_8008F2F8(globalCtx) >= 2) && (func_8008F2F8(globalCtx) < 5)) ||
((gSaveContext.equips.buttonItems[1] != ITEM_LENS) &&
(gSaveContext.equips.buttonItems[2] != ITEM_LENS) &&
@@ -3099,7 +3099,7 @@ void func_8008A994(InterfaceContext* interfaceCtx) {
Viewport viewport;
// clang-format off
- viewport.bottomY = SCREEN_HEIGHT; viewport.rightX = SCREEN_WIDTH;
+ viewport.bottomY = SCREEN_HEIGHT; viewport.rightX = SCREEN_WIDTH;
viewport.topY = 0; viewport.leftX = 0;
// clang-format on
@@ -3574,7 +3574,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.flag == 0) && (globalCtx->unk_10A20 == 0) &&
(msgCtx->msgMode == 0) && !(player->stateFlags2 & 0x01000000) && (globalCtx->sceneLoadFlag == 0) &&
- (globalCtx->unk_1241B == 0) && !Gameplay_InCsMode(globalCtx) && (gSaveContext.minigameState != 1) &&
+ (globalCtx->transitionMode == 0) && !Gameplay_InCsMode(globalCtx) && (gSaveContext.minigameState != 1) &&
(globalCtx->unk_11E5C < 2) &&
!((globalCtx->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(globalCtx, 0x38))) {
sp274 = 0;
@@ -4136,7 +4136,7 @@ void Interface_Update(GlobalContext* globalCtx) {
if ((gSaveContext.timer1State >= 3) && (globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.flag == 0) &&
(msgCtx->msgMode == 0) && !(player->stateFlags2 & 0x01000000) && (globalCtx->sceneLoadFlag == 0) &&
- (globalCtx->unk_1241B == 0) && !Gameplay_InCsMode(globalCtx)) {}
+ (globalCtx->transitionMode == 0) && !Gameplay_InCsMode(globalCtx)) {}
if (gSaveContext.rupeeAccumulator != 0) {
if (gSaveContext.rupeeAccumulator > 0) {
@@ -4216,7 +4216,7 @@ void Interface_Update(GlobalContext* globalCtx) {
WREG(7) = interfaceCtx->unk_1F4;
if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.flag == 0) && (msgCtx->msgMode == 0) &&
- (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_10A20 == 0) && (globalCtx->unk_1241B == 0) &&
+ (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_10A20 == 0) && (globalCtx->transitionMode == 0) &&
((globalCtx->csCtx.state == 0) || !func_8008E988(globalCtx))) {
if ((gSaveContext.magicAcquired != 0) && (gSaveContext.magicLevel == 0)) {
gSaveContext.magicLevel = gSaveContext.doubleMagic + 1;
diff --git a/src/code/z_play.c b/src/code/z_play.c
index 4805eed6f..2723d2fa3 100644
--- a/src/code/z_play.c
+++ b/src/code/z_play.c
@@ -6,8 +6,8 @@ void* D_8012D1F0 = NULL;
UNK_TYPE D_8012D1F4 = 0; // unused
Input* D_8012D1F8 = NULL;
-TransitionStruct D_801613B0;
-s32 D_80161490;
+TransitionUnk sTrnsnUnk;
+s32 gTrnsnUnkState;
VisMonoStruct D_80161498;
Color_RGBA8 D_801614B0;
FaultClient D_801614B8;
@@ -48,49 +48,49 @@ void func_800BC590(GlobalContext* globalCtx) {
#ifdef NON_MATCHING
// single minor ordering difference
-void func_800BC5E0(GlobalContext* globalCtx, s32 arg1) {
+void func_800BC5E0(GlobalContext* globalCtx, s32 transitionType) {
TransitionContext* transitionCtx = &globalCtx->transitionCtx;
bzero(transitionCtx, sizeof(TransitionContext));
- transitionCtx->unk_228 = arg1;
-
- if ((transitionCtx->unk_228 >> 5) == 1) {
- transitionCtx->unk_22C = func_800B301C;
- transitionCtx->unk_230 = func_800B3044;
- transitionCtx->unk_23C = func_800B2E30;
- transitionCtx->unk_24C = func_800B346C;
- transitionCtx->unk_238 = func_800B31D0;
- transitionCtx->unk_234 = func_800B304C;
- transitionCtx->unk_240 = func_800B3474;
- transitionCtx->unk_244 = func_800B34CC;
- transitionCtx->unk_248 = func_800B34D4;
+ transitionCtx->transitionType = transitionType;
+
+ if ((transitionCtx->transitionType >> 5) == 1) {
+ transitionCtx->init = TransitionCircle_Init;
+ transitionCtx->destroy = TransitionCircle_Destroy;
+ transitionCtx->start = TransitionCircle_Start;
+ transitionCtx->isDone = TransitionCircle_IsDone;
+ transitionCtx->draw = TransitionCircle_Draw;
+ transitionCtx->update = TransitionCircle_Update;
+ transitionCtx->setType = TransitionCircle_SetType;
+ transitionCtx->setColor = TransitionCircle_SetColor;
+ transitionCtx->setEnvColor = TransitionCircle_SetEnvColor;
return;
}
- switch (transitionCtx->unk_228) {
+ switch (transitionCtx->transitionType) {
case 1:
- transitionCtx->unk_22C = func_800B2438;
- transitionCtx->unk_230 = func_800B24D0;
- transitionCtx->unk_23C = func_800B2400;
- transitionCtx->unk_24C = func_800B2944;
- transitionCtx->unk_238 = func_800B2604;
- transitionCtx->unk_234 = func_800B24D8;
- transitionCtx->unk_240 = func_800B25F4;
- transitionCtx->unk_244 = func_800B25EC;
- transitionCtx->unk_248 = NULL;
+ transitionCtx->init = TransitionTriforce_Init;
+ transitionCtx->destroy = TransitionTriforce_Destroy;
+ transitionCtx->start = TransitionTriforce_Start;
+ transitionCtx->isDone = TransitionTriforce_IsDone;
+ transitionCtx->draw = TransitionTriforce_Draw;
+ transitionCtx->update = TransitionTriforce_Update;
+ transitionCtx->setType = TransitionTriforce_SetType;
+ transitionCtx->setColor = TransitionTriforce_SetColor;
+ transitionCtx->setEnvColor = NULL;
return;
case 0:
case 8:
- transitionCtx->unk_22C = func_800B2A88;
- transitionCtx->unk_230 = func_800B2AB0;
- transitionCtx->unk_23C = func_800B29D0;
- transitionCtx->unk_24C = func_800B2DD4;
- transitionCtx->unk_238 = func_800B2B98;
- transitionCtx->unk_234 = func_800B2AB8;
- transitionCtx->unk_240 = func_800B2DDC;
- transitionCtx->unk_244 = func_800B2E1C;
- transitionCtx->unk_248 = NULL;
+ transitionCtx->init = TransitionWipe_Init;
+ transitionCtx->destroy = TransitionWipe_Destroy;
+ transitionCtx->start = TransitionWipe_Start;
+ transitionCtx->isDone = TransitionWipe_IsDone;
+ transitionCtx->draw = TransitionWipe_Draw;
+ transitionCtx->update = TransitionWipe_Update;
+ transitionCtx->setType = TransitionWipe_SetType;
+ transitionCtx->setColor = TransitionWipe_SetColor;
+ transitionCtx->setEnvColor = NULL;
return;
case 2:
case 3:
@@ -101,34 +101,34 @@ void func_800BC5E0(GlobalContext* globalCtx, s32 arg1) {
case 17:
case 18:
case 19:
- transitionCtx->unk_22C = func_800B3538;
- transitionCtx->unk_230 = func_800B3560;
- transitionCtx->unk_23C = func_800B34E0;
- transitionCtx->unk_24C = func_800B37DC;
- transitionCtx->unk_238 = func_800B3718;
- transitionCtx->unk_234 = func_800B3568;
- transitionCtx->unk_240 = func_800B37EC;
- transitionCtx->unk_244 = func_800B37E4;
- transitionCtx->unk_248 = NULL;
+ transitionCtx->init = TransitionFade_Init;
+ transitionCtx->destroy = TransitionFade_Destroy;
+ transitionCtx->start = TransitionFade_Start;
+ transitionCtx->isDone = TransitionFade_IsDone;
+ transitionCtx->draw = TransitionFade_Draw;
+ transitionCtx->update = TransitionFade_Update;
+ transitionCtx->setType = TransitionFade_SetType;
+ transitionCtx->setColor = TransitionFade_SetColor;
+ transitionCtx->setEnvColor = NULL;
return;
case 9:
case 10:
- globalCtx->unk_1241B = 4;
+ globalCtx->transitionMode = 4;
return;
case 11:
- globalCtx->unk_1241B = 10;
+ globalCtx->transitionMode = 10;
return;
case 12:
- globalCtx->unk_1241B = 7;
+ globalCtx->transitionMode = 7;
return;
case 14:
- globalCtx->unk_1241B = 12;
+ globalCtx->transitionMode = 12;
return;
case 15:
- globalCtx->unk_1241B = 14;
+ globalCtx->transitionMode = 14;
return;
case 16:
- globalCtx->unk_1241B = 16;
+ globalCtx->transitionMode = 16;
return;
}
@@ -139,7 +139,7 @@ void func_800BC5E0(GlobalContext* globalCtx, s32 arg1) {
#endif
void func_800BC88C(GlobalContext* globalCtx) {
- globalCtx->transitionCtx.unk_228 = -1;
+ globalCtx->transitionCtx.transitionType = -1;
}
Gfx* func_800BC8A0(GlobalContext* globalCtx, Gfx* gfx) {
@@ -161,19 +161,19 @@ void Gameplay_Destroy(GlobalContext* globalCtx) {
Effect_SS_Clear(globalCtx);
CollisionCheck_DestroyContext(globalCtx, &globalCtx->colChkCtx);
- if (D_80161490 == 3) {
- func_800B1DBC(&D_801613B0);
- D_80161490 = 0;
+ if (gTrnsnUnkState == 3) {
+ TransitionUnk_Destroy(&sTrnsnUnk);
+ gTrnsnUnkState = 0;
}
- if (globalCtx->unk_1241B == 3) {
- globalCtx->transitionCtx.unk_230(&globalCtx->transitionCtx);
+ if (globalCtx->transitionMode == 3) {
+ globalCtx->transitionCtx.destroy(&globalCtx->transitionCtx.data);
func_800BC88C(globalCtx);
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
}
func_800B3968();
- func_800B3560(&globalCtx->sub_1241C);
+ TransitionFade_Destroy(&globalCtx->transitionFade);
func_800AD054(&D_80161498);
if (gSaveContext.linkAge != globalCtx->linkAgeOnLoad) {
@@ -336,8 +336,8 @@ void Gameplay_Init(GlobalContext* globalCtx) {
func_800C0EA8(&globalCtx->preRenderCtx);
func_800C0E70(&globalCtx->preRenderCtx, 0x140, 0xF0, 0, 0, 0);
func_800C0ED8(&globalCtx->preRenderCtx, 0x140, 0xF0, 0, 0);
- D_80161490 = 0;
- globalCtx->unk_1241B = 0;
+ gTrnsnUnkState = 0;
+ globalCtx->transitionMode = 0;
func_8008E6A0(&globalCtx->sub_7B8);
func_800FD9A0((u32)osGetTime());
Matrix_Init(&globalCtx->state);
@@ -361,10 +361,10 @@ void Gameplay_Init(GlobalContext* globalCtx) {
}
func_800B3908();
- func_800B3538(&globalCtx->sub_1241C);
- func_800B37EC(&globalCtx->sub_1241C, 3);
- func_800B37E4(&globalCtx->sub_1241C, RGBA8(0xA0, 0xA0, 0xA0, 0xFF));
- func_800B34E0(&globalCtx->sub_1241C);
+ TransitionFade_Init(&globalCtx->transitionFade);
+ TransitionFade_SetType(&globalCtx->transitionFade, 3);
+ TransitionFade_SetColor(&globalCtx->transitionFade, RGBA8(0xA0, 0xA0, 0xA0, 0xFF));
+ TransitionFade_Start(&globalCtx->transitionFade);
func_800AD000(&D_80161498);
D_801614B0.a = 0x00;
func_8006C3A0(globalCtx);
@@ -458,30 +458,30 @@ void Gameplay_Update(GlobalContext* globalCtx) {
gSegments[2] = PHYSICAL_TO_VIRTUAL(globalCtx->sceneSegment);
if (func_8008E6AC(&globalCtx->sub_7B8, &input[1]) != 0) {
- if ((globalCtx->unk_1241B == 0) && (globalCtx->sceneLoadFlag != 0)) {
- globalCtx->unk_1241B = 1;
+ if ((globalCtx->transitionMode == 0) && (globalCtx->sceneLoadFlag != 0)) {
+ globalCtx->transitionMode = 1;
}
- if (D_80161490 != 0) {
- switch (D_80161490) {
+ if (gTrnsnUnkState != 0) {
+ switch (gTrnsnUnkState) {
case 2:
- if (func_800B1E84(&D_801613B0, 10, 7) == 0) {
+ if (TransitionUnk_Init(&sTrnsnUnk, 10, 7) == 0) {
osSyncPrintf("fbdemo_init呼出し失敗!\n"); // "fbdemo_init call failed!"
- D_80161490 = 0;
+ gTrnsnUnkState = 0;
} else {
- D_801613B0.unk_DC = gZBuffer;
- D_80161490 = 3;
+ sTrnsnUnk.zBuffer = gZBuffer;
+ gTrnsnUnkState = 3;
R_UPDATE_RATE = 1;
}
break;
case 3:
- func_800B23E8(&D_801613B0);
+ func_800B23E8(&sTrnsnUnk);
break;
}
}
- if (globalCtx->unk_1241B != 0) {
- switch (globalCtx->unk_1241B) {
+ if (globalCtx->transitionMode != 0) {
+ switch (globalCtx->transitionMode) {
case 1:
if (globalCtx->sceneLoadFlag != -0x14) {
s16 sp6E = 0;
@@ -508,78 +508,91 @@ void Gameplay_Update(GlobalContext* globalCtx) {
func_800BC5E0(globalCtx, CREG(12));
}
- if (globalCtx->unk_1241B >= 4) {
+ if (globalCtx->transitionMode >= 4) {
break;
}
case 2:
- globalCtx->transitionCtx.unk_22C(&globalCtx->transitionCtx);
+ globalCtx->transitionCtx.init(&globalCtx->transitionCtx.data);
- if ((globalCtx->transitionCtx.unk_228 >> 5) == 1) {
- globalCtx->transitionCtx.unk_240(&globalCtx->transitionCtx,
- globalCtx->transitionCtx.unk_228 | 0x80);
+ if ((globalCtx->transitionCtx.transitionType >> 5) == 1) {
+ globalCtx->transitionCtx.setType(&globalCtx->transitionCtx.data,
+ globalCtx->transitionCtx.transitionType | 0x80);
}
gSaveContext.unk_1419 = 14;
- if ((globalCtx->transitionCtx.unk_228 == 8) || (globalCtx->transitionCtx.unk_228 == 9)) {
+ if ((globalCtx->transitionCtx.transitionType == 8) ||
+ (globalCtx->transitionCtx.transitionType == 9)) {
gSaveContext.unk_1419 = 28;
}
gSaveContext.fadeDuration = 60;
- if ((globalCtx->transitionCtx.unk_228 == 4) || (globalCtx->transitionCtx.unk_228 == 5)) {
+ if ((globalCtx->transitionCtx.transitionType == 4) ||
+ (globalCtx->transitionCtx.transitionType == 5)) {
gSaveContext.fadeDuration = 20;
- } else if ((globalCtx->transitionCtx.unk_228 == 6) || (globalCtx->transitionCtx.unk_228 == 7)) {
+ } else if ((globalCtx->transitionCtx.transitionType == 6) ||
+ (globalCtx->transitionCtx.transitionType == 7)) {
gSaveContext.fadeDuration = 150;
- } else if (globalCtx->transitionCtx.unk_228 == 17) {
+ } else if (globalCtx->transitionCtx.transitionType == 17) {
gSaveContext.fadeDuration = 2;
}
- if ((globalCtx->transitionCtx.unk_228 == 3) || (globalCtx->transitionCtx.unk_228 == 5) ||
- (globalCtx->transitionCtx.unk_228 == 7) || (globalCtx->transitionCtx.unk_228 == 13) ||
- (globalCtx->transitionCtx.unk_228 == 17)) {
- globalCtx->transitionCtx.unk_244(&globalCtx->transitionCtx, RGBA8(0xA0, 0xA0, 0xA0, 0xFF));
- if (globalCtx->transitionCtx.unk_248 != NULL) {
- globalCtx->transitionCtx.unk_248(&globalCtx->transitionCtx, RGBA8(0xA0, 0xA0, 0xA0, 0xFF));
+ if ((globalCtx->transitionCtx.transitionType == 3) ||
+ (globalCtx->transitionCtx.transitionType == 5) ||
+ (globalCtx->transitionCtx.transitionType == 7) ||
+ (globalCtx->transitionCtx.transitionType == 13) ||
+ (globalCtx->transitionCtx.transitionType == 17)) {
+ globalCtx->transitionCtx.setColor(&globalCtx->transitionCtx.data,
+ RGBA8(0xA0, 0xA0, 0xA0, 0xFF));
+ if (globalCtx->transitionCtx.setEnvColor != NULL) {
+ globalCtx->transitionCtx.setEnvColor(&globalCtx->transitionCtx.data,
+ RGBA8(0xA0, 0xA0, 0xA0, 0xFF));
}
- } else if (globalCtx->transitionCtx.unk_228 == 18) {
- globalCtx->transitionCtx.unk_244(&globalCtx->transitionCtx, RGBA8(0x8C, 0x8C, 0x64, 0xFF));
- if (globalCtx->transitionCtx.unk_248 != NULL) {
- globalCtx->transitionCtx.unk_248(&globalCtx->transitionCtx, RGBA8(0x8C, 0x8C, 0x64, 0xFF));
+ } else if (globalCtx->transitionCtx.transitionType == 18) {
+ globalCtx->transitionCtx.setColor(&globalCtx->transitionCtx.data,
+ RGBA8(0x8C, 0x8C, 0x64, 0xFF));
+ if (globalCtx->transitionCtx.setEnvColor != NULL) {
+ globalCtx->transitionCtx.setEnvColor(&globalCtx->transitionCtx.data,
+ RGBA8(0x8C, 0x8C, 0x64, 0xFF));
}
- } else if (globalCtx->transitionCtx.unk_228 == 19) {
- globalCtx->transitionCtx.unk_244(&globalCtx->transitionCtx, RGBA8(0x46, 0x64, 0x6E, 0xFF));
- if (globalCtx->transitionCtx.unk_248 != NULL) {
- globalCtx->transitionCtx.unk_248(&globalCtx->transitionCtx, RGBA8(0x46, 0x64, 0x6E, 0xFF));
+ } else if (globalCtx->transitionCtx.transitionType == 19) {
+ globalCtx->transitionCtx.setColor(&globalCtx->transitionCtx.data,
+ RGBA8(0x46, 0x64, 0x6E, 0xFF));
+ if (globalCtx->transitionCtx.setEnvColor != NULL) {
+ globalCtx->transitionCtx.setEnvColor(&globalCtx->transitionCtx.data,
+ RGBA8(0x46, 0x64, 0x6E, 0xFF));
}
} else {
- globalCtx->transitionCtx.unk_244(&globalCtx->transitionCtx, RGBA8(0x00, 0x00, 0x00, 0x00));
- if (globalCtx->transitionCtx.unk_248 != NULL) {
- globalCtx->transitionCtx.unk_248(&globalCtx->transitionCtx, RGBA8(0x00, 0x00, 0x00, 0x00));
+ globalCtx->transitionCtx.setColor(&globalCtx->transitionCtx.data,
+ RGBA8(0x00, 0x00, 0x00, 0x00));
+ if (globalCtx->transitionCtx.setEnvColor != NULL) {
+ globalCtx->transitionCtx.setEnvColor(&globalCtx->transitionCtx.data,
+ RGBA8(0x00, 0x00, 0x00, 0x00));
}
}
if (globalCtx->sceneLoadFlag == -0x14) {
- globalCtx->transitionCtx.unk_240(&globalCtx->transitionCtx, 1);
+ globalCtx->transitionCtx.setType(&globalCtx->transitionCtx.data, 1);
} else {
- globalCtx->transitionCtx.unk_240(&globalCtx->transitionCtx, 2);
+ globalCtx->transitionCtx.setType(&globalCtx->transitionCtx.data, 2);
}
- globalCtx->transitionCtx.unk_23C(&globalCtx->transitionCtx);
+ globalCtx->transitionCtx.start(&globalCtx->transitionCtx);
- if (globalCtx->transitionCtx.unk_228 == 13) {
- globalCtx->unk_1241B = 11;
+ if (globalCtx->transitionCtx.transitionType == 13) {
+ globalCtx->transitionMode = 11;
} else {
- globalCtx->unk_1241B = 3;
+ globalCtx->transitionMode = 3;
}
break;
case 3:
- if (globalCtx->transitionCtx.unk_24C(&globalCtx->transitionCtx) != 0) {
- if (globalCtx->transitionCtx.unk_228 >= 56) {
+ if (globalCtx->transitionCtx.isDone(&globalCtx->transitionCtx) != 0) {
+ if (globalCtx->transitionCtx.transitionType >= 56) {
if (globalCtx->sceneLoadFlag == -0x14) {
- globalCtx->transitionCtx.unk_230(&globalCtx->transitionCtx);
+ globalCtx->transitionCtx.destroy(&globalCtx->transitionCtx);
func_800BC88C(globalCtx);
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
}
} else if (globalCtx->sceneLoadFlag != -0x14) {
globalCtx->state.running = 0;
@@ -593,23 +606,23 @@ void Gameplay_Update(GlobalContext* globalCtx) {
SET_NEXT_GAMESTATE(&globalCtx->state, func_80811A20, char[0x1CAE0]);
}
} else {
- globalCtx->transitionCtx.unk_230(&globalCtx->transitionCtx);
+ globalCtx->transitionCtx.destroy(&globalCtx->transitionCtx);
func_800BC88C(globalCtx);
- globalCtx->unk_1241B = 0;
- if (D_80161490 == 3) {
- func_800B1DBC(&D_801613B0);
- D_80161490 = 0;
+ globalCtx->transitionMode = 0;
+ if (gTrnsnUnkState == 3) {
+ TransitionUnk_Destroy(&sTrnsnUnk);
+ gTrnsnUnkState = 0;
R_UPDATE_RATE = 3;
}
}
globalCtx->sceneLoadFlag = 0;
} else {
- globalCtx->transitionCtx.unk_234(&globalCtx->transitionCtx, R_UPDATE_RATE);
+ globalCtx->transitionCtx.update(&globalCtx->transitionCtx.data, R_UPDATE_RATE);
}
break;
}
- switch (globalCtx->unk_1241B) {
+ switch (globalCtx->transitionMode) {
case 4:
D_801614C8 = 0;
globalCtx->envCtx.unk_E1 = 1;
@@ -618,10 +631,10 @@ void Gameplay_Update(GlobalContext* globalCtx) {
globalCtx->envCtx.unk_E2[2] = 0xA0;
if (globalCtx->sceneLoadFlag != -0x14) {
globalCtx->envCtx.unk_E2[3] = 0;
- globalCtx->unk_1241B = 5;
+ globalCtx->transitionMode = 5;
} else {
globalCtx->envCtx.unk_E2[3] = 0xFF;
- globalCtx->unk_1241B = 6;
+ globalCtx->transitionMode = 6;
}
break;
@@ -632,7 +645,7 @@ void Gameplay_Update(GlobalContext* globalCtx) {
SET_NEXT_GAMESTATE(&globalCtx->state, Gameplay_Init, GlobalContext);
gSaveContext.entranceIndex = globalCtx->nextEntranceIndex;
globalCtx->sceneLoadFlag = 0;
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
} else {
D_801614C8++;
}
@@ -641,10 +654,10 @@ void Gameplay_Update(GlobalContext* globalCtx) {
case 6:
globalCtx->envCtx.unk_E2[3] = (1 - D_801614C8 / 20.0f) * 255.0f;
if (D_801614C8 >= 20 && 1) {
- D_80161490 = 0;
+ gTrnsnUnkState = 0;
R_UPDATE_RATE = 3;
globalCtx->sceneLoadFlag = 0;
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
globalCtx->envCtx.unk_E1 = 0;
} else {
D_801614C8++;
@@ -659,10 +672,10 @@ void Gameplay_Update(GlobalContext* globalCtx) {
globalCtx->envCtx.unk_E2[2] = 0x96;
if (globalCtx->sceneLoadFlag != -0x14) {
globalCtx->envCtx.unk_E2[3] = 0;
- globalCtx->unk_1241B = 5;
+ globalCtx->transitionMode = 5;
} else {
globalCtx->envCtx.unk_E2[3] = 0xFF;
- globalCtx->unk_1241B = 6;
+ globalCtx->transitionMode = 6;
}
break;
@@ -673,30 +686,30 @@ void Gameplay_Update(GlobalContext* globalCtx) {
SET_NEXT_GAMESTATE(&globalCtx->state, Gameplay_Init, GlobalContext);
gSaveContext.entranceIndex = globalCtx->nextEntranceIndex;
globalCtx->sceneLoadFlag = 0;
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
} else {
- D_80161490 = 0;
+ gTrnsnUnkState = 0;
R_UPDATE_RATE = 3;
globalCtx->sceneLoadFlag = 0;
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
}
break;
case 11:
if (gSaveContext.unk_1410 != 0) {
- globalCtx->unk_1241B = 3;
+ globalCtx->transitionMode = 3;
}
break;
case 12:
if (globalCtx->sceneLoadFlag != -0x14) {
globalCtx->envCtx.unk_E6 = 1;
- globalCtx->unk_1241B = 13;
+ globalCtx->transitionMode = 13;
} else {
globalCtx->envCtx.unk_E6 = 2;
globalCtx->envCtx.unk_E7 = 0xFF;
globalCtx->envCtx.unk_E8 = 0xFF;
- globalCtx->unk_1241B = 13;
+ globalCtx->transitionMode = 13;
}
break;
@@ -704,10 +717,10 @@ void Gameplay_Update(GlobalContext* globalCtx) {
Audio_PlaySoundGeneral(0x20C0, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
if (globalCtx->sceneLoadFlag == -0x14) {
if (globalCtx->envCtx.unk_E7 < 0x6E) {
- D_80161490 = 0;
+ gTrnsnUnkState = 0;
R_UPDATE_RATE = 3;
globalCtx->sceneLoadFlag = 0;
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
}
} else {
if (globalCtx->envCtx.unk_E8 == 0xFF) {
@@ -716,7 +729,7 @@ void Gameplay_Update(GlobalContext* globalCtx) {
SET_NEXT_GAMESTATE(&globalCtx->state, Gameplay_Init, GlobalContext);
gSaveContext.entranceIndex = globalCtx->nextEntranceIndex;
globalCtx->sceneLoadFlag = 0;
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
}
}
break;
@@ -727,9 +740,9 @@ void Gameplay_Update(GlobalContext* globalCtx) {
globalCtx->envCtx.unk_E7 = 0xFF;
globalCtx->envCtx.unk_E8 = 0xFF;
LOG_STRING("来た!!!!!!!!!!!!!!!!!!!!!", "../z_play.c", 3471); // "It's here!!!!!!!!!"
- globalCtx->unk_1241B = 15;
+ globalCtx->transitionMode = 15;
} else {
- globalCtx->unk_1241B = 12;
+ globalCtx->transitionMode = 12;
}
break;
@@ -737,10 +750,10 @@ void Gameplay_Update(GlobalContext* globalCtx) {
Audio_PlaySoundGeneral(0x20C0, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
if (globalCtx->sceneLoadFlag == -0x14) {
if (globalCtx->envCtx.unk_E7 <= 0) {
- D_80161490 = 0;
+ gTrnsnUnkState = 0;
R_UPDATE_RATE = 3;
globalCtx->sceneLoadFlag = 0;
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
}
}
break;
@@ -752,17 +765,17 @@ void Gameplay_Update(GlobalContext* globalCtx) {
globalCtx->envCtx.unk_E2[1] = 0;
globalCtx->envCtx.unk_E2[2] = 0;
globalCtx->envCtx.unk_E2[3] = 0xFF;
- globalCtx->unk_1241B = 17;
+ globalCtx->transitionMode = 17;
break;
case 17:
if (gSaveContext.unk_1410 != 0) {
globalCtx->envCtx.unk_E2[3] = gSaveContext.unk_1410;
if (gSaveContext.unk_1410 < 0x65) {
- D_80161490 = 0;
+ gTrnsnUnkState = 0;
R_UPDATE_RATE = 3;
globalCtx->sceneLoadFlag = 0;
- globalCtx->unk_1241B = 0;
+ globalCtx->transitionMode = 0;
}
}
break;
@@ -774,7 +787,7 @@ void Gameplay_Update(GlobalContext* globalCtx) {
}
temp = HREG(63);
- if (1 && (D_80161490 != 3)) {
+ if (1 && (gTrnsnUnkState != 3)) {
if (1 && temp) {
LOG_NUM("1", 1, "../z_play.c", 3542);
}
@@ -989,7 +1002,7 @@ void Gameplay_Update(GlobalContext* globalCtx) {
LOG_NUM("1", 1, "../z_play.c", 3783);
}
- func_800B3568(&globalCtx->sub_1241C, R_UPDATE_RATE);
+ TransitionFade_Update(&globalCtx->transitionFade, R_UPDATE_RATE);
}
}
@@ -1116,11 +1129,11 @@ void Gameplay_Draw(GlobalContext* globalCtx) {
if ((HREG(80) != 10) || (HREG(92) != 0)) {
Gfx* sp1CC = gfxCtx->polyOpa.p;
- Gfx* sp1D0 = Graph_GfxPlusOne(gfxCtx->polyOpa.p);
- gSPDisplayList(gfxCtx->overlay.p++, sp1D0);
+ Gfx* gfxP = Graph_GfxPlusOne(gfxCtx->polyOpa.p);
+ gSPDisplayList(gfxCtx->overlay.p++, gfxP);
- if ((globalCtx->unk_1241B == 3) || (globalCtx->unk_1241B == 11) ||
- (globalCtx->transitionCtx.unk_228 >= 56)) {
+ if ((globalCtx->transitionMode == 3) || (globalCtx->transitionMode == 11) ||
+ (globalCtx->transitionCtx.transitionType >= 56)) {
View view; // 0xA0
Viewport viewport; // 0x90
@@ -1133,25 +1146,25 @@ void Gameplay_Draw(GlobalContext* globalCtx) {
// clang-format on
View_SetViewport(&view, &viewport);
- func_800AB9EC(&view, 15, &sp1D0);
- globalCtx->transitionCtx.unk_238(&globalCtx->transitionCtx, &sp1D0);
+ func_800AB9EC(&view, 15, &gfxP);
+ globalCtx->transitionCtx.draw(&globalCtx->transitionCtx.data, &gfxP);
}
- func_800B3718(&globalCtx->sub_1241C, &sp1D0);
+ TransitionFade_Draw(&globalCtx->transitionFade, &gfxP);
if (D_801614B0.a > 0x00) {
D_80161498.color.rgba = D_801614B0.rgba;
- func_800AD5C0(&D_80161498, &sp1D0);
+ func_800AD5C0(&D_80161498, &gfxP);
}
- gSPEndDisplayList(sp1D0++);
- Graph_BranchDlist(sp1CC, sp1D0);
- gfxCtx->polyOpa.p = sp1D0;
+ gSPEndDisplayList(gfxP++);
+ Graph_BranchDlist(sp1CC, gfxP);
+ gfxCtx->polyOpa.p = gfxP;
}
- if (D_80161490 == 3) {
+ if (gTrnsnUnkState == 3) {
Gfx* sp88 = gfxCtx->polyOpa.p;
- func_800B2188(&D_801613B0, &sp88);
+ TransitionUnk_Draw(&sTrnsnUnk, &sp88);
gfxCtx->polyOpa.p = sp88;
goto Gameplay_Draw_DrawOverlayElements;
} else {
@@ -1282,7 +1295,7 @@ void Gameplay_Draw(GlobalContext* globalCtx) {
DebugDisplay_DrawObjects(globalCtx);
}
- if ((R_PAUSE_MENU_MODE == 1) || (D_80161490 == 1)) {
+ if ((R_PAUSE_MENU_MODE == 1) || (gTrnsnUnkState == 1)) {
Gfx* sp70 = gfxCtx->overlay.p;
globalCtx->preRenderCtx.unk_10 = gfxCtx->curFrameBuffer;
globalCtx->preRenderCtx.unk_14 = gZBuffer;
@@ -1292,7 +1305,7 @@ void Gameplay_Draw(GlobalContext* globalCtx) {
func_800C20B4(&globalCtx->preRenderCtx, &sp70);
R_PAUSE_MENU_MODE = 2;
} else {
- D_80161490 = 2;
+ gTrnsnUnkState = 2;
}
gfxCtx->overlay.p = sp70;
globalCtx->preRenderCtx.unk_A3 = 2;
diff --git a/src/code/z_rcp.c b/src/code/z_rcp.c
index 11ae43221..511cf8447 100644
--- a/src/code/z_rcp.c
+++ b/src/code/z_rcp.c
@@ -1371,21 +1371,17 @@ void func_80094D4C(GraphicsContext* gfxCtx) {
Graph_CloseDisps(dispRefs, gfxCtx, "../z_rcp.c", 2116);
}
-#ifdef NON_MATCHING
-// regalloc differences
-void Gfx_BranchTexScroll(Gfx** gfxp, u32 x, u32 y, s32 width, s32 height) {
+Gfx* Gfx_BranchTexScroll(Gfx** gfxp, u32 x, u32 y, s32 width, s32 height) {
Gfx* displayList = Graph_DlistAlloc(gfxp, 3 * sizeof(Gfx));
gDPTileSync(displayList);
gDPSetTileSize(displayList + 1, 0, x, y, (x + ((width - 1) << 2)), (y + ((height - 1) << 2)));
gSPEndDisplayList(displayList + 2);
+ return displayList;
}
-#else
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_rcp/Gfx_BranchTexScroll.s")
-#endif
-void func_80094E54(Gfx** gfxp, u32 x, u32 y) {
- Gfx_BranchTexScroll(gfxp, x, y, 0, 0);
+Gfx* func_80094E54(Gfx** gfxp, u32 x, u32 y) {
+ return Gfx_BranchTexScroll(gfxp, x, y, 0, 0);
}
Gfx* func_80094E78(GraphicsContext* gfxCtx, u32 x, u32 y) {
@@ -1474,7 +1470,7 @@ void func_80095248(GraphicsContext* gfxCtx, u8 r, u8 g, u8 b) {
gDPSetDepthImage(gfxCtx->polyXlu.p++, gZBuffer);
gDPSetDepthImage(gfxCtx->overlay.p++, gZBuffer);
- if ((R_PAUSE_MENU_MODE < 2) && (D_80161490 < 2)) {
+ if ((R_PAUSE_MENU_MODE < 2) && (gTrnsnUnkState < 2)) {
ret = func_800B38FC();
if (HREG(80) == 16) {
diff --git a/src/code/z_view.c b/src/code/z_view.c
index 613f66529..00f4e92bd 100644
--- a/src/code/z_view.c
+++ b/src/code/z_view.c
@@ -351,8 +351,8 @@ s32 func_800AAA9C(View* view) {
}
func_800ABE74(view->eye.x, view->eye.y, view->eye.z);
- guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z,
- view->unk_40.x, view->unk_40.y, view->unk_40.z);
+ guLookAt(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z,
+ view->unk_40.x, view->unk_40.y, view->unk_40.z);
view->viewing = *viewing;
@@ -500,8 +500,8 @@ s32 func_800AB560(View* view) {
}
func_800ABE74(view->eye.x, view->eye.y, view->eye.z);
- guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z,
- view->unk_40.x, view->unk_40.y, view->unk_40.z);
+ guLookAt(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z,
+ view->unk_40.x, view->unk_40.y, view->unk_40.z);
view->viewing = *viewing;
@@ -518,8 +518,8 @@ s32 func_800AB944(View* view) {
Graph_OpenDisps(dispRefs, view->gfxCtx, "../z_view.c", 878);
func_800ABE74(view->eye.x, view->eye.y, view->eye.z);
- guLookAtReflect(view->viewingPtr, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y,
- view->unk_34.z, view->unk_40.x, view->unk_40.y, view->unk_40.z);
+ guLookAt(view->viewingPtr, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z,
+ view->unk_40.x, view->unk_40.y, view->unk_40.z);
Graph_CloseDisps(dispRefs, view->gfxCtx, "../z_view.c", 886);
@@ -582,8 +582,8 @@ s32 func_800AB9EC(View* view, s32 arg1, Gfx** gfxp) {
view->viewingPtr = viewing;
func_800ABE74(view->eye.x, view->eye.y, view->eye.z);
- guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z,
- view->unk_40.x, view->unk_40.y, view->unk_40.z);
+ guLookAt(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z,
+ view->unk_40.x, view->unk_40.y, view->unk_40.z);
view->viewing = *viewing;