mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-02-24 23:01:47 -05:00
move old customizations into new custom draw
This commit is contained in:
parent
c75ca4a1ce
commit
16b25308ca
@ -1,6 +1,9 @@
|
|||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
#include "soh/ShipInit.hpp"
|
#include "soh/ShipInit.hpp"
|
||||||
|
|
||||||
|
#include "textures/nintendo_rogo_static/nintendo_rogo_static.h"
|
||||||
|
#include "assets/objects/gameplay_keep/gameplay_keep.h"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "z64.h"
|
#include "z64.h"
|
||||||
@ -10,19 +13,115 @@ extern "C" {
|
|||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
extern void Title_Calc(TitleContext*);
|
extern void Title_Calc(TitleContext*);
|
||||||
extern void Title_Draw(TitleContext*);
|
extern void Title_SetupView(TitleContext*, f32, f32, f32);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void CustomLogoTitle_Main(void* gameState) {
|
#define dgShipLogoDL "__OTR__textures/nintendo_rogo_static/gShipLogoDL"
|
||||||
TitleContext* titleContext = (TitleContext*)gameState;
|
static const ALIGN_ASSET(2) char gShipLogoDL[] = dgShipLogoDL;
|
||||||
|
|
||||||
|
#define dnintendo_rogo_static_Tex_LUS_000000 "__OTR__textures/nintendo_rogo_static/nintendo_rogo_static_Tex_LUS_000000"
|
||||||
|
static const ALIGN_ASSET(2) char nintendo_rogo_static_Tex_LUS_000000[] = dnintendo_rogo_static_Tex_LUS_000000;
|
||||||
|
|
||||||
|
extern "C" void CustomLogoTitle_Draw(TitleContext* titleContext) {
|
||||||
|
static s16 sTitleRotY = 0;
|
||||||
|
static Lights1 sTitleLights = gdSPDefLights1(0x64, 0x64, 0x64, 0xFF, 0xFF, 0xFF, 0x45, 0x45, 0x45);
|
||||||
|
|
||||||
|
u16 y;
|
||||||
|
u16 idx;
|
||||||
|
s32 pad1;
|
||||||
|
Vec3f v3;
|
||||||
|
Vec3f v1;
|
||||||
|
Vec3f v2;
|
||||||
|
s32 pad2[2];
|
||||||
|
|
||||||
|
OPEN_DISPS(titleContext->state.gfxCtx);
|
||||||
|
|
||||||
|
v3.x = 69;
|
||||||
|
v3.y = 69;
|
||||||
|
v3.z = 69;
|
||||||
|
v2.x = -4949.148;
|
||||||
|
v2.y = 4002.5417;
|
||||||
|
v1.x = 0;
|
||||||
|
v1.y = 0;
|
||||||
|
v1.z = 0;
|
||||||
|
v2.z = 1119.0837;
|
||||||
|
|
||||||
|
func_8002EABC(&v1, &v2, &v3, titleContext->state.gfxCtx);
|
||||||
|
gSPSetLights1(POLY_OPA_DISP++, sTitleLights);
|
||||||
|
Title_SetupView(titleContext, 0, 150.0, 300.0);
|
||||||
|
Gfx_SetupDL_25Opa(titleContext->state.gfxCtx);
|
||||||
|
Matrix_Translate(-53.0, -5.0, 0, MTXMODE_NEW);
|
||||||
|
Matrix_Scale(1.0, 1.0, 1.0, MTXMODE_APPLY);
|
||||||
|
Matrix_RotateZYX(0, sTitleRotY, 0, MTXMODE_APPLY);
|
||||||
|
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(titleContext->state.gfxCtx), G_MTX_LOAD);
|
||||||
|
if (CVarGetInteger(CVAR_ENHANCEMENT("AuthenticLogo"), 0)) {
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gNintendo64LogoDL);
|
||||||
|
} else {
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gShipLogoDL);
|
||||||
|
}
|
||||||
|
Gfx_SetupDL_39Opa(titleContext->state.gfxCtx);
|
||||||
|
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);
|
||||||
|
gDPSetCombineLERP(POLY_OPA_DISP++, TEXEL1, PRIMITIVE, ENV_ALPHA, TEXEL0, 0, 0, 0, TEXEL0, PRIMITIVE, ENVIRONMENT,
|
||||||
|
COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0);
|
||||||
|
if (CVarGetInteger(CVAR_COSMETIC("Title.NintendoLogo.Changed"), 0)) {
|
||||||
|
Color_RGB8 nintendoLogoColor = CVarGetColor24(CVAR_COSMETIC("Title.NintendoLogo.Value"), (Color_RGB8){0, 0, 255});
|
||||||
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
|
||||||
|
gDPSetEnvColor(POLY_OPA_DISP++, nintendoLogoColor.r, nintendoLogoColor.g, nintendoLogoColor.b, 128);
|
||||||
|
} else {
|
||||||
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 170, 255, 255, 255);
|
||||||
|
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 255, 128);
|
||||||
|
}
|
||||||
|
|
||||||
|
gDPLoadMultiBlock(POLY_OPA_DISP++, nintendo_rogo_static_Tex_001800, 0x100, 1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0,
|
||||||
|
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 2, 11);
|
||||||
|
|
||||||
|
for (idx = 0, y = 94; idx < 16; idx++, y += 2)
|
||||||
|
{
|
||||||
|
gDPLoadMultiTile(POLY_OPA_DISP++, CVarGetInteger(CVAR_ENHANCEMENT("AuthenticLogo"), 0) ? nintendo_rogo_static_Tex_000000 : nintendo_rogo_static_Tex_LUS_000000, 0, G_TX_RENDERTILE, G_IM_FMT_I, G_IM_SIZ_8b, 192, 32,
|
||||||
|
0, idx * 2, 192 - 1, (idx + 1) * 2 - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||||
|
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||||
|
|
||||||
|
gDPSetTileSize(POLY_OPA_DISP++, 0, 0, 0, (192 - 1) << G_TEXTURE_IMAGE_FRAC,
|
||||||
|
(2 - 1) << G_TEXTURE_IMAGE_FRAC);
|
||||||
|
|
||||||
|
gDPSetTileSize(POLY_OPA_DISP++, 1, titleContext->uls, (titleContext->ult & 0x7F) - idx * 4, 0, 0);
|
||||||
|
gSPTextureRectangle(POLY_OPA_DISP++, 388, y << 2, 1156, (y + 2) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw ice block around spinning N or ship.
|
||||||
|
if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) {
|
||||||
|
f32 scale = 0.4f;
|
||||||
|
|
||||||
|
gSPSegment(POLY_OPA_DISP++, 0x08,
|
||||||
|
(uintptr_t)Gfx_TwoTexScroll(titleContext->state.gfxCtx, 0, 0, (0 - 1) % 128, 32, 32, 1,
|
||||||
|
0, (1 * -2) % 128, 32, 32));
|
||||||
|
|
||||||
|
Matrix_Translate(0.0f, -10.0f, 0.0f, MTXMODE_APPLY);
|
||||||
|
Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(titleContext->state.gfxCtx),
|
||||||
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gDPSetEnvColor(POLY_OPA_DISP++, 0, 50, 100, 255);
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gEffIceFragment3DL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Environment_FillScreen(titleContext->state.gfxCtx, 0, 0, 0, (s16)titleContext->coverAlpha, FILL_SCREEN_XLU);
|
||||||
|
|
||||||
|
sTitleRotY += (300 * CVarGetFloat(CVAR_COSMETIC("N64Logo.SpinSpeed"), 1.0f));
|
||||||
|
|
||||||
|
CLOSE_DISPS(titleContext->state.gfxCtx);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" void CustomLogoTitle_Main(TitleContext* titleContext) {
|
||||||
OPEN_DISPS(titleContext->state.gfxCtx);
|
OPEN_DISPS(titleContext->state.gfxCtx);
|
||||||
|
|
||||||
gSPSegment(POLY_OPA_DISP++, 0, (uintptr_t)NULL);
|
gSPSegment(POLY_OPA_DISP++, 0, (uintptr_t)NULL);
|
||||||
gSPSegment(POLY_OPA_DISP++, 1, (uintptr_t)titleContext->staticSegment);
|
gSPSegment(POLY_OPA_DISP++, 1, (uintptr_t)titleContext->staticSegment);
|
||||||
Gfx_SetupFrame(titleContext->state.gfxCtx, 0, 0, 0);
|
Gfx_SetupFrame(titleContext->state.gfxCtx, 0, 0, 0);
|
||||||
Title_Calc(titleContext);
|
Title_Calc(titleContext);
|
||||||
Title_Draw(titleContext);
|
CustomLogoTitle_Draw(titleContext);
|
||||||
|
|
||||||
if (titleContext->exit || CVarGetInteger(CVAR_DEVELOPER_TOOLS("SkipLogoTitle"), 0)) {
|
if (titleContext->exit || CVarGetInteger(CVAR_DEVELOPER_TOOLS("SkipLogoTitle"), 0)) {
|
||||||
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
||||||
@ -54,7 +153,6 @@ void OnZTitleUpdateSkipLogoTitle(void* gameState) {
|
|||||||
|
|
||||||
void OnZTitleInitReplaceTitleMainWithCustom(void* gameState) {
|
void OnZTitleInitReplaceTitleMainWithCustom(void* gameState) {
|
||||||
TitleContext* titleContext = (TitleContext*)gameState;
|
TitleContext* titleContext = (TitleContext*)gameState;
|
||||||
|
|
||||||
titleContext->state.main = (GameStateFunc)CustomLogoTitle_Main;
|
titleContext->state.main = (GameStateFunc)CustomLogoTitle_Main;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user