General Cleanup 7 (#944)

* (f32*) cast

* fireobj

* BgKeikokuSaku h file newline

* dmchar07 flag defines

* EnKakasi h file comments

* ObjKibako2Contents

* ++ ^ 1

* func_80B4BA84

* EnBji01

* EnShn

* render modes

* D_80097F90

* xprintf

* WeatherTag

* Sram_InitDebugSave

* func_80C1DF18

* func_80183430

* ObjRaillift_Move

* DmChar00Struct

* format

* DmNb csAction

* Revert "EnKakasi h file comments"

This reverts commit a6b5f97826.

* title
This commit is contained in:
Derek Hensley 2022-07-23 12:15:09 -07:00 committed by GitHub
parent dfd00a8c1f
commit 63447c5649
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 71 additions and 84 deletions

View File

@ -83,7 +83,7 @@ void GfxPrint_PrintCharImpl(GfxPrint* this, u8 c) {
if (this->flags & GFXP_FLAG_RAINBOW) {
gDPSetTextureLUT(this->dList++, G_TT_RGBA16);
gDPSetCycleType(this->dList++, G_CYC_2CYCLE);
gDPSetRenderMode(this->dList++, G_RM_OPA_CI, G_RM_XLU_SURF2);
gDPSetRenderMode(this->dList++, G_RM_PASS, G_RM_XLU_SURF2);
gDPSetCombineMode(this->dList++, G_CC_INTERFERENCE, G_CC_PASS2);
} else {
gDPSetTextureLUT(this->dList++, G_TT_IA16);

View File

@ -187,7 +187,7 @@ void FireObj_UpdateLight(PlayState* play, FireObjLight* light, FireObj* fire) {
if (fire->state == FIRE_STATE_3) {
Lights_PointSetColorAndRadius(&light->lightInfo, 0, 0, 0, -1);
} else {
radius = ((fire->yScale * 140.0f * fire->sizeInv) + 60.0f);
radius = (fire->yScale * 140.0f * fire->sizeInv) + 60.0f;
Lights_PointGlowSetInfo(&light->lightInfo, fire->position.x, (fire->position.y + (fire->yScale * 6500.0f)),
fire->position.z,

View File

@ -808,8 +808,8 @@ void Sram_InitDebugSave(void) {
Lib_MemCpy(&gSaveContext.save.checksum, &sSaveDebugChecksum, sizeof(gSaveContext.save.checksum));
if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) {
BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A48[((void)0, gSaveContext.save.playerForm & 0xFF)];
C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A50[((void)0, gSaveContext.save.playerForm & 0xFF)];
BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A48[((void)0, gSaveContext.save.playerForm)];
C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A50[((void)0, gSaveContext.save.playerForm)];
}
gSaveContext.save.hasTatl = true;

View File

@ -1,7 +1,7 @@
#include "global.h"
void guRotateF(float m[4][4], float a, float x, float y, float z) {
static float D_80097F90 = 0.017453292; // TODO this is PI / 180.0, we should define pi somewhere
static float D_80097F90 = M_PI / 180.0f;
float sine;
float cosine;
float ab;

View File

@ -51,8 +51,7 @@ int _Printf(PrintCallback pfn, void* arg, const char* fmt, va_list ap) {
}
fmt = ++s;
x.flags = 0;
// TODO the cast isn't necessary because strchr should take it in as const, but it currently doesn't
for (; (t = strchr((char*)fchar, *s)) != NULL; s++) {
for (; (t = strchr(fchar, *s)) != NULL; s++) {
x.flags |= fbit[t - fchar];
}
if (*s == '*') {

View File

@ -15,6 +15,7 @@ typedef struct BgKeikokuSaku {
/* 0x160 */ s16 switchFlag;
/* 0x162 */ s16 timer;
} BgKeikokuSaku; // Size = 0x164
extern const ActorInit Bg_Keikoku_Saku_InitVars;
#endif // Z_BG_KEIKOKU_SAKU_H

View File

@ -74,7 +74,7 @@ void DemoSyoten_Init(Actor* thisx, PlayState* play) {
switch (DEMOSYOTEN_GET_F(&this->actor)) {
case DEMOSYOTEN_F_0:
func_80183430(&this->unk_144, &object_syoten_Blob_001328, &object_syoten_Blob_00023C, this->unk_174,
this->unk_2A6, 0);
this->unk_2A6, NULL);
func_801835EC(&this->unk_144, &object_syoten_Blob_00023C);
this->actor.draw = NULL;
this->actionFunc = func_80C16A74;

View File

@ -120,13 +120,13 @@ static AnimationInfo sAnimations[] = {
{ &object_delf_Anim_000E44, 1.0f, 0.0f, -1.0f, 0, 0.0f },
};
DmChar00Struct D_80AA77A8[] = {
Color_RGBAf D_80AA77A8[] = {
{ 250.0f, 255.0f, 230.0f, 255.0f },
{ 63.0f, 18.0f, 93.0f, 255.0f },
{ 255.0f, 235.0f, 220.0f, 255.0f },
};
DmChar00Struct D_80AA77D8[] = {
Color_RGBAf D_80AA77D8[] = {
{ 220.0f, 160.0f, 80.0f, 255.0f },
{ 250.0f, 40.0f, 10.0f, 255.0f },
{ 255.0f, 235.0f, 220.0f, 255.0f },
@ -934,13 +934,13 @@ void DmChar00_Draw(Actor* thisx, PlayState* play2) {
gSPSegment(POLY_XLU_DISP++, 0x08, &gfx[0]);
gDPPipeSync(gfx++);
gDPSetPrimColor(gfx++, 0, 0x01, (u8)this->unk_240.unk_00, (u8)this->unk_240.unk_04, (u8)this->unk_240.unk_08,
(u8)(this->unk_240.unk_0C * 1));
gDPSetPrimColor(gfx++, 0, 0x01, (u8)this->unk_240.r, (u8)this->unk_240.g, (u8)this->unk_240.b,
(u8)(this->unk_240.a * 1));
gDPSetRenderMode(gfx++, G_RM_PASS, G_RM_ZB_CLD_SURF2);
gSPEndDisplayList(gfx);
gDPSetEnvColor(POLY_XLU_DISP++, (u8)(s8)this->unk_250.unk_00, (u8)(s8)this->unk_250.unk_04,
(u8)(s8)this->unk_250.unk_08, (u8)(s8)((f32)phi_a0 * 1));
gDPSetEnvColor(POLY_XLU_DISP++, (u8)(s8)this->unk_250.r, (u8)(s8)this->unk_250.g, (u8)(s8)this->unk_250.b,
(u8)(s8)((f32)phi_a0 * 1));
gDPSetDither(POLY_XLU_DISP++, G_CD_BAYER);
POLY_XLU_DISP = SkelAnime_Draw(play, this->skelAnime.skeleton, this->skelAnime.jointTable,

View File

@ -13,13 +13,6 @@ typedef void (*DmChar00ActionFunc)(struct DmChar00*, PlayState*);
#define DMCHAR00_0 0
#define DMCHAR00_1 1
typedef struct {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
} DmChar00Struct; // size = 0x10
typedef struct DmChar00 {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
@ -28,8 +21,8 @@ typedef struct DmChar00 {
/* 0x1E2 */ Vec3s morphTable[7];
/* 0x20C */ UNK_TYPE1 unk_20C[0x30];
/* 0x23C */ DmChar00ActionFunc actionFunc;
/* 0x240 */ DmChar00Struct unk_240;
/* 0x250 */ DmChar00Struct unk_250;
/* 0x240 */ Color_RGBAf unk_240;
/* 0x250 */ Color_RGBAf unk_250;
/* 0x260 */ u8 unk_260;
/* 0x261 */ u8 unk_261;
/* 0x262 */ u16 unk_262;

View File

@ -10,11 +10,11 @@ typedef void (*DmChar07ActionFunc)(struct DmChar07*, PlayState*);
#define DMCHAR07_GET_SPOTLIGHTFLAGS(thisx) (((thisx)->params >> 8) & 0x1F)
#define DMCHAR07_GET_TYPE(thisx) ((thisx)->params & 0xFF)
#define DMCHAR07_STAGE_RIGHT_SPOTLIGHT 1 // Deku spotlight
#define DMCHAR07_UPSTAGE_RIGHT_SPOTLIGHT 2 // Goron spotlight
#define DMCHAR07_STAGE_CENTER_SPOTLIGHT 4 // Human spotlight
#define DMCHAR07_UPSTAGE_LEFT_SPOTLIGHT 8 // Zora spotlight
#define DMCHAR07_DOWNSTAGE_CENTER_SPOTLIGHT 16
#define DMCHAR07_STAGE_RIGHT_SPOTLIGHT (1 << 0) // Deku spotlight
#define DMCHAR07_UPSTAGE_RIGHT_SPOTLIGHT (1 << 1) // Goron spotlight
#define DMCHAR07_STAGE_CENTER_SPOTLIGHT (1 << 2) // Human spotlight
#define DMCHAR07_UPSTAGE_LEFT_SPOTLIGHT (1 << 3) // Zora spotlight
#define DMCHAR07_DOWNSTAGE_CENTER_SPOTLIGHT (1 << 4)
typedef enum {
/* 0 */ DMCHAR07_STAGE,

View File

@ -42,8 +42,8 @@ s32 func_80C1DED0(DmNb* this, s32 arg1) {
void func_80C1DF18(DmNb* this, PlayState* play) {
s32 sp2C[] = { 0, 0, 0, 0, 0 };
u16 actionUnk0;
s32 actionIndex;
u16 csAction;
s32 csActionIndex;
if (play->csCtx.state != 0) {
if (this->unk1F8 == 0) {
@ -51,14 +51,14 @@ void func_80C1DF18(DmNb* this, PlayState* play) {
this->unk1F8 = 1;
this->unk1F4 = this->unk1F0;
}
if (Cutscene_CheckActorAction(play, 562)) {
actionIndex = Cutscene_GetActorActionIndex(play, 562);
actionUnk0 = play->csCtx.actorActions[actionIndex]->action;
if (this->unk1EC != (actionUnk0 & 0xFF)) {
this->unk1EC = actionUnk0;
func_80C1DED0(this, sp2C[actionUnk0]);
if (Cutscene_CheckActorAction(play, 0x232)) {
csActionIndex = Cutscene_GetActorActionIndex(play, 0x232);
csAction = play->csCtx.actorActions[csActionIndex]->action;
if (this->unk1EC != (u8)csAction) {
this->unk1EC = csAction;
func_80C1DED0(this, sp2C[csAction]);
}
Cutscene_ActorTranslateAndYaw(&this->actor, play, actionIndex);
Cutscene_ActorTranslateAndYaw(&this->actor, play, csActionIndex);
}
} else if (this->unk1F8 != 0) {
this->unk1F8 = 0;

View File

@ -373,7 +373,7 @@ void EnBji01_Update(Actor* thisx, PlayState* play) {
s32 pad;
this->actionFunc(this, play);
Actor_UpdateBgCheckInfo(play, (Actor*)this, 0.0f, 0.0f, 0.0f, 4);
Actor_UpdateBgCheckInfo(play, &this->actor, 0.0f, 0.0f, 0.0f, 4);
SkelAnime_Update(&this->skelAnime);
if (this->blinkTimer-- <= 0) {

View File

@ -657,7 +657,7 @@ s32 func_80998F9C(EnGs* this, PlayState* play) {
if (this->unk_19D == 2) {
this->unk_19E[0].y += (s32)(this->unk_1DC * (0x10000 / 360.0f));
if ((this->unk_1D4++ <= 40) ^ 1) {
if (this->unk_1D4++ > 40) {
this->unk_1DC = this->unk_1B0[0].y - 1.0f;
this->unk_1E0 = 1.5f;
this->unk_1E4 = this->unk_1B0[1].y - 1.0f;
@ -825,7 +825,7 @@ s32 func_809995A4(EnGs* this, PlayState* play) {
func_800B9010(&this->actor, NA_SE_EV_FIRE_PILLAR - SFX_FLAG);
if ((this->unk_1D4++ < 40) ^ 1) {
if (this->unk_1D4++ >= 40) {
this->unk_19A |= 0x10;
this->actor.uncullZoneForward = 12000.0f;

View File

@ -3692,17 +3692,14 @@ void func_80B4BA84(Actor* thisx, PlayState* play) {
sp2C = this->unk3BC;
this->unk3BC = func_80B44234(this, &D_80B5040C->actor.world.pos);
if (sp2C != this->unk3BC) {
phi_v0 = this->pathIndex;
phi_v0 = this->unk3BC - this->pathIndex;
temp_v0_3 = phi_v0;
if (temp_v0_3 < 0) {
if (phi_v0 < 0) {
phi_v0 += this->endPoint;
}
temp_v0_3 = this->endPoint >> 1;
if (temp_v0_3 < phi_v0) {
if ((this->endPoint >> 1) < phi_v0) {
this->direction = DIRECTION_BACKWARD;
} else if (phi_v0 < temp_v0_3) {
} else if (phi_v0 < (this->endPoint >> 1)) {
this->direction = DIRECTION_FORWARD;
}
}

View File

@ -209,7 +209,7 @@ void func_80A5B508(void) {
sp74[7] = (spAC - temp_f20) * temp_f22 * temp_f24 * temp_f2;
for (i = 0; i < ARRAY_COUNT(D_80A60908); i++) {
ptr = (f32*)&D_80A60908[i].mf[0];
ptr = &D_80A60908[i].xx;
tempf1 = sp74[(i + 0) & 7];
tempf2 = sp74[(i + 1) & 7];
@ -242,8 +242,8 @@ void func_80A5B508(void) {
void func_80A5B954(MtxF* matrix, f32 arg1) {
s32 i;
MtxF* temp = Matrix_GetCurrent();
f32* tmp = (f32*)&temp->mf[0];
f32* tmp2 = (f32*)&matrix->mf[0];
f32* tmp = &temp->xx;
f32* tmp2 = &matrix->xx;
for (i = 0; i < 16; i++) {
*tmp++ += *tmp2++ * arg1;

View File

@ -17,7 +17,6 @@ void EnShn_Update(Actor* thisx, PlayState* play);
void EnShn_Draw(Actor* thisx, PlayState* play);
void func_80AE69E8(EnShn* this, PlayState* play);
void func_80AE6A64(EnShn* this, PlayState* play);
s32 func_80AE6704(EnShn* this, PlayState* play);
// Could be something related to text/dialogue?
static UNK_TYPE D_80AE6F00[] = {
@ -228,7 +227,7 @@ s32 func_80AE65F4(EnShn* this, PlayState* play) {
return false;
}
s32 func_80AE6704(EnShn* thisx, PlayState* play) {
s32 func_80AE6704(Actor* thisx, PlayState* play) {
EnShn* this = THIS;
s32 ret = 0;

View File

@ -7,6 +7,7 @@
struct EnShn;
typedef void (*EnShnActionFunc)(struct EnShn*, PlayState*);
typedef s32 (*MsgEventFunc)(Actor*, PlayState*);
typedef struct EnShn {
/* 0x000 */ Actor actor;
@ -34,7 +35,7 @@ typedef struct EnShn {
/* 0x2CC */ f32 playSpeed;
/* 0x2D0 */ f32 unk_2D0;
/* 0x2D4 */ f32 unk_2D4;
/* 0x2D8 */ s32 unk_2D8;
/* 0x2D8 */ MsgEventFunc unk_2D8;
/* 0x2DC */ s32 prevTalkState;
/* 0x2E0 */ s32 unk_2E0;
/* 0x2E4 */ s32 unk_2E4;

View File

@ -398,7 +398,7 @@ void EnTest7_Init(Actor* thisx, PlayState* play2) {
this->unk_1E94 = player->actor.scale.z;
func_80183430(&this->unk_18CC, &gameplay_keep_Blob_085640, &gameplay_keep_Blob_083534, this->unk_18FC,
this->unk_1BA8, 0);
this->unk_1BA8, NULL);
func_801834A8(&this->unk_18CC, &gameplay_keep_Blob_083534);
func_80AF0838(this->unk_15C);
func_80AF1730(&this->unk_148);

View File

@ -10,7 +10,7 @@ typedef void (*EnWeatherTagActionFunc)(struct EnWeatherTag*, PlayState*);
typedef struct EnWeatherTag {
/* 0x000 */ Actor actor;
/* 0x144 */ EnWeatherTagActionFunc actionFunc;
/* 0x148 */ u8 pad148[0x4]; // todo attempt remove
/* 0x148 */ UNK_TYPE1 pad148[0x4];
/* 0x14C */ u8 pathCount;
/* 0x150 */ Vec3s* pathPoints;
// 154: the code avoids what would be a negative value if signed, but signed wont match

View File

@ -146,7 +146,7 @@ void func_80A1B3D0(void) {
sp74[7] = (spAC - temp_f20) * temp_f22 * temp_f24 * temp_f0 * 0.0013f;
for (i = 0; i < ARRAY_COUNT(D_80A1D838); i++) {
ptr = (f32*)&D_80A1D838[i].mf[0];
ptr = &D_80A1D838[i].xx;
tempf1 = sp74[(i + 0) & 7];
tempf2 = sp74[(i + 1) & 7];

View File

@ -134,7 +134,7 @@ void ObjKibako2_SpawnSkulltula(ObjKibako2* this, PlayState* play) {
}
void ObjKibako2_SpawnContents(ObjKibako2* this, PlayState* play) {
if (KIBAKO2_CONTENTS(&this->dyna.actor) == CONTENTS_COLLECTIBLE) {
if (KIBAKO2_CONTENTS(&this->dyna.actor) == OBJKIBAKO2_CONTENTS_COLLECTIBLE) {
ObjKibako2_SpawnCollectible(this, play);
} else {
ObjKibako2_SpawnSkulltula(this, play);
@ -157,14 +157,14 @@ void ObjKibako2_Init(Actor* thisx, PlayState* play) {
this->dyna.actor.shape.rot.z = 0;
this->dyna.actor.world.rot.x = 0;
this->dyna.actor.shape.rot.x = 0;
if (contents == CONTENTS_COLLECTIBLE) {
if (contents == OBJKIBAKO2_CONTENTS_COLLECTIBLE) {
if (Item_CanDropBigFairy(play, KIBAKO2_COLLECTIBLE_ID(&this->dyna.actor),
KIBAKO2_COLLECTIBLE_FLAG(&this->dyna.actor))) {
this->unk_1AC = 1;
this->dyna.actor.flags |= ACTOR_FLAG_10;
}
}
if ((contents != CONTENTS_SKULLTULA) || !ObjKibako2_ContainsSkulltula(this, play)) {
if ((contents != OBJKIBAKO2_CONTENTS_SKULLTULA) || !ObjKibako2_ContainsSkulltula(this, play)) {
this->skulltulaNoiseTimer = -1;
}
this->actionFunc = ObjKibako2_Idle;

View File

@ -9,8 +9,8 @@
#define KIBAKO2_CONTENTS(thisx) (((thisx)->params >> 0xF) & 1)
typedef enum {
/* 0 */ CONTENTS_COLLECTIBLE,
/* 1 */ CONTENTS_SKULLTULA
/* 0 */ OBJKIBAKO2_CONTENTS_COLLECTIBLE,
/* 1 */ OBJKIBAKO2_CONTENTS_SKULLTULA
} ObjKibako2Contents;
struct ObjKibako2;

View File

@ -110,30 +110,29 @@ void ObjRaillift_DoNothing(ObjRaillift* this, PlayState* play) {
}
void ObjRaillift_Move(ObjRaillift* this, PlayState* play) {
s32 isTeleporting;
Actor* thisx = &this->dyna.actor;
Vec3f nextPoint;
f32 speed;
f32 target;
f32 step;
s32 isTeleporting;
s32 isPosUpdated;
Vec3s* initialPoint;
Vec3s* endPoint;
s32 pad;
if (OBJRAILLIFT_HAS_FLAG(&this->dyna.actor)) {
if (!Flags_GetSwitch(play, OBJRAILLIFT_GET_FLAG(&this->dyna.actor))) {
if (OBJRAILLIFT_HAS_FLAG(thisx)) {
if (!Flags_GetSwitch(play, OBJRAILLIFT_GET_FLAG(thisx))) {
this->actionFunc = ObjRaillift_Idle;
return;
}
if (OBJRAILLIFT_GET_TYPE(&this->dyna.actor) == DEKU_FLOWER_PLATFORM) {
func_800B9010(&this->dyna.actor, NA_SE_EV_PLATE_LIFT_LEVEL - SFX_FLAG);
if (OBJRAILLIFT_GET_TYPE(thisx) == DEKU_FLOWER_PLATFORM) {
func_800B9010(thisx, NA_SE_EV_PLATE_LIFT_LEVEL - SFX_FLAG);
}
}
Math_Vec3s_ToVec3f(&nextPoint, &(&this->points[this->curPoint])[this->direction]);
Math_Vec3f_Diff(&nextPoint, &this->dyna.actor.world.pos, &this->dyna.actor.velocity);
speed = Math3D_Vec3fMagnitude(&this->dyna.actor.velocity);
Math_Vec3s_ToVec3f(&nextPoint, this->points + this->curPoint + this->direction);
Math_Vec3f_Diff(&nextPoint, &thisx->world.pos, &thisx->velocity);
speed = Math3D_Vec3fMagnitude(&thisx->velocity);
if ((speed < (this->speed * 8.0f)) && (this->speed > 2.0f)) {
target = ((this->speed - 2.0f) * 0.1f) + 2.0f;
step = this->speed * 0.03f;
@ -142,17 +141,16 @@ void ObjRaillift_Move(ObjRaillift* this, PlayState* play) {
step = this->speed * 0.16f;
}
Math_StepToF(&this->dyna.actor.speedXZ, target, step);
if ((this->dyna.actor.speedXZ + 0.05f) < speed) {
Math_Vec3f_Scale(&this->dyna.actor.velocity, this->dyna.actor.speedXZ / speed);
this->dyna.actor.world.pos.x += this->dyna.actor.velocity.x;
this->dyna.actor.world.pos.y += this->dyna.actor.velocity.y;
this->dyna.actor.world.pos.z += this->dyna.actor.velocity.z;
Math_StepToF(&thisx->speedXZ, target, step);
if ((thisx->speedXZ + 0.05f) < speed) {
Math_Vec3f_Scale(&thisx->velocity, thisx->speedXZ / speed);
thisx->world.pos.x += thisx->velocity.x;
thisx->world.pos.y += thisx->velocity.y;
thisx->world.pos.z += thisx->velocity.z;
} else {
this->curPoint += this->direction;
if (1) {}
this->dyna.actor.speedXZ *= 0.4f;
isTeleporting = OBJRAILLIFT_SHOULD_TELEPORT(&this->dyna.actor);
thisx->speedXZ *= 0.4f;
isTeleporting = OBJRAILLIFT_SHOULD_TELEPORT(thisx);
isPosUpdated = true;
if (((this->curPoint >= this->endPoint) && (this->direction > 0)) ||
((this->curPoint <= 0) && (this->direction < 0))) {
@ -163,9 +161,8 @@ void ObjRaillift_Move(ObjRaillift* this, PlayState* play) {
} else {
endPoint = &this->points[this->endPoint];
this->curPoint = this->direction > 0 ? 0 : this->endPoint;
initialPoint = &this->points[0];
if ((initialPoint->x != endPoint->x) || (initialPoint->y != endPoint->y) ||
(initialPoint->z != endPoint->z)) {
if ((this->points[0].x != endPoint->x) || (this->points[0].y != endPoint->y) ||
(this->points[0].z != endPoint->z)) {
this->actionFunc = ObjRaillift_Teleport;
func_800C62BC(play, &play->colCtx.dyna, this->dyna.bgId);
isPosUpdated = false;
@ -222,7 +219,7 @@ void ObjRaillift_Update(Actor* thisx, PlayState* play) {
f32 step;
this->actionFunc(this, play);
Actor_SetFocus(&this->dyna.actor, 10.0f);
Actor_SetFocus(thisx, 10.0f);
if (this->cutsceneTimer > 0) {
this->cutsceneTimer--;
if (this->cutsceneTimer == 0) {

View File

@ -91,7 +91,7 @@ void Title_Draw(GameState* thisx) {
gDPPipeSync(POLY_OPA_DISP++);
gDPSetCycleType(POLY_OPA_DISP++, G_CYC_2CYCLE);
gDPSetRenderMode(POLY_OPA_DISP++, G_RM_XLU_SURF2, G_RM_OPA_CI | CVG_DST_WRAP);
gDPSetRenderMode(POLY_OPA_DISP++, G_RM_PASS, G_RM_CLD_SURF2);
gDPSetCombineLERP(POLY_OPA_DISP++, TEXEL1, PRIMITIVE, ENV_ALPHA, TEXEL0, 0, 0, 0, TEXEL0, PRIMITIVE, ENVIRONMENT,
COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 170, 255, 255, 255);