diff options
| author | krimtonz <33664508+krimtonz@users.noreply.github.com> | 2020-04-30 13:41:09 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-30 14:41:09 -0400 |
| commit | 5525365f7f84132ab6ea184f5cd0929e1c41042f (patch) | |
| tree | 708e3dcbdc3c5984d23befddf8663bd9cd0b85b9 /src/code | |
| parent | 16b304d548e227472b6a520371b773a8b664f930 (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.c | 114 | ||||
| -rw-r--r-- | src/code/z_fbdemo_circle.c | 438 | ||||
| -rw-r--r-- | src/code/z_fbdemo_fade.c | 117 | ||||
| -rw-r--r-- | src/code/z_fbdemo_triforce.c | 137 | ||||
| -rw-r--r-- | src/code/z_fbdemo_wipe1.c | 254 | ||||
| -rw-r--r-- | src/code/z_parameter.c | 16 | ||||
| -rw-r--r-- | src/code/z_play.c | 327 | ||||
| -rw-r--r-- | src/code/z_rcp.c | 14 | ||||
| -rw-r--r-- | src/code/z_view.c | 16 |
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; |
