mirror of
https://github.com/pmret/papermario.git
synced 2024-09-19 16:01:48 +02:00
6da5c0e41b
* get_spirits_rescued: use enum StoryProgress * rename 6240_len_c00 to fio * rename 1b40_len_20b0 to main_loop * rename 3bf0_len_6f0 to input * rename 42e0_len_1f60 to rumble * rename 6e40_len_500 to curtains * rename 7340_len_b00 crash * match func_8002C890 * intro_logos and state_battle split * rename e940_len_290 to state_startup * split state_logos and state_pause * state_file_select * state_world, state_intro * state_title_screen * state_demo * split game_modes and camera
135 lines
4.1 KiB
C
135 lines
4.1 KiB
C
#include "common.h"
|
|
#include "no_controller.png.h"
|
|
#include "ld_addrs.h"
|
|
|
|
extern s32 D_80076078;
|
|
extern s32 D_800760C0;
|
|
|
|
Gfx D_80077140[] = {
|
|
gsDPPipeSync(),
|
|
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
|
gsDPSetCycleType(G_CYC_1CYCLE),
|
|
gsDPSetTexturePersp(G_TP_NONE),
|
|
gsDPSetTextureDetail(G_TD_CLAMP),
|
|
gsDPSetTextureLOD(G_TL_TILE),
|
|
gsDPSetTextureFilter(G_TF_POINT),
|
|
gsDPSetTextureConvert(G_TC_FILT),
|
|
gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM),
|
|
gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),
|
|
gsDPSetTextureLUT(G_TT_NONE),
|
|
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_8b, no_controller_png_width, no_controller_png),
|
|
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 16, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD,
|
|
G_TX_NOMIRROR | G_TX_CLAMP, 7, G_TX_NOLOD),
|
|
gsDPLoadSync(),
|
|
gsDPLoadTile(G_TX_LOADTILE, 0, 0, 0x01FC, 0x007C),
|
|
gsDPPipeSync(),
|
|
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 16, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD,
|
|
G_TX_NOMIRROR | G_TX_CLAMP, 7, G_TX_NOLOD),
|
|
gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, 0x01FC, 0x007C),
|
|
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
|
|
gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH),
|
|
gsSPEndDisplayList(),
|
|
};
|
|
|
|
Gfx D_800771E8[] = {
|
|
gsSPTextureRectangle(0x0180, 0x0260, 0x0380, 0x02E0, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400),
|
|
gsDPPipeSync(),
|
|
gsSPEndDisplayList(),
|
|
};
|
|
|
|
// BSS
|
|
extern Mtx D_8009BAA8[];
|
|
|
|
void initialize_curtains(void) {
|
|
gCurtainDrawCallback = NULL;
|
|
gCurtainScale = 2.0f;
|
|
gCurtainScaleGoal = 2.0f;
|
|
gCurtainFade = 0.0f;
|
|
gCurtainFadeGoal = 0.0f;
|
|
}
|
|
|
|
void update_curtains(void) {
|
|
}
|
|
|
|
void render_curtains(void) {
|
|
if (gCurtainScaleGoal != gCurtainScale) {
|
|
gCurtainScale += (gCurtainScaleGoal - gCurtainScale) * 0.1;
|
|
}
|
|
|
|
if (gCurtainFadeGoal != gCurtainFade) {
|
|
gCurtainFade += (gCurtainFadeGoal - gCurtainFade) * 0.03;
|
|
}
|
|
|
|
if (gCurtainScale < 1.9) {
|
|
Mtx m;
|
|
f32 scale;
|
|
s8 rgb;
|
|
|
|
gDPPipeSync(gMasterGfxPos++);
|
|
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(D_8009A64C));
|
|
gSPDisplayList(gMasterGfxPos++, &D_800760C0);
|
|
|
|
guFrustumF(m.m[0], -80.0f, 80.0f, -60.0f, 60.0f, 160.0f, 640.0f, 1.0f);
|
|
guMtxF2L(m.m[0], &D_8009BAA8[0]);
|
|
|
|
gSPMatrix(gMasterGfxPos++, &D_8009BAA8[0], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
|
|
|
scale = gCurtainScale - 0.01;
|
|
if (scale < 1.0f) {
|
|
scale = 1.0f;
|
|
}
|
|
|
|
guPositionF(m.m[0], 0.0f, 0.0f, 0.0f, scale * 0.1, 0.0f, 0.0f, -320.0f);
|
|
|
|
guMtxF2L(m.m[0], &D_8009BAA8[1]);
|
|
|
|
gSPMatrix(gMasterGfxPos++, &D_8009BAA8[1], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
|
rgb = 255.0f - (gCurtainFade * 255.0f);
|
|
gDPSetPrimColor(gMasterGfxPos++, 0, 0, rgb, rgb, rgb, 255);
|
|
gSPDisplayList(gMasterGfxPos++, &D_80076078);
|
|
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
|
|
gDPPipeSync(gMasterGfxPos++);
|
|
}
|
|
|
|
if (gCurtainDrawCallback != NULL) {
|
|
gCurtainDrawCallback();
|
|
}
|
|
|
|
if (!(gGameStatusPtr->contBitPattern & 1)) {
|
|
if ((get_game_mode() == 0x10) || (get_game_mode() == 2) || (gGameStatusPtr->demoState != 0)) {
|
|
s32 alpha = ((gGameStatusPtr->frameCounter) % 0x18) << 5;
|
|
|
|
if (alpha > 255) {
|
|
alpha = 255;
|
|
}
|
|
|
|
gSPDisplayList(gMasterGfxPos++, &D_800760C0);
|
|
gSPDisplayList(gMasterGfxPos++, &D_80077140);
|
|
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0xFF, 0x20, 0x10, alpha);
|
|
gSPDisplayList(gMasterGfxPos++, &D_800771E8);
|
|
}
|
|
}
|
|
}
|
|
|
|
void set_curtain_scale_goal(f32 scale) {
|
|
gCurtainScaleGoal = scale;
|
|
}
|
|
|
|
void set_curtain_scale(f32 scale) {
|
|
gCurtainScaleGoal = scale;
|
|
gCurtainScale = scale;
|
|
}
|
|
|
|
void set_curtain_draw_callback(UNK_FUN_PTR(callback)) {
|
|
gCurtainDrawCallback = callback;
|
|
}
|
|
|
|
void set_curtain_fade_goal(f32 fade) {
|
|
gCurtainFadeGoal = fade;
|
|
}
|
|
|
|
void set_curtain_fade(f32 fade) {
|
|
gCurtainFadeGoal = fade;
|
|
gCurtainFade = fade;
|
|
}
|