mirror of https://github.com/zeldaret/mm.git
Merge branch 'play' of https://github.com/Decompollaborate/mm into play
This commit is contained in:
commit
dbc31ad4c7
|
|
@ -1882,7 +1882,7 @@ void func_8011C808(PlayState* play);
|
|||
// void func_8011CA64(void);
|
||||
// void func_8011E3B4(void);
|
||||
// void func_8011E730(void);
|
||||
// void func_8011F0E0(UNK_TYPE4 ctxt);
|
||||
void func_8011F0E0(PlayState* play);
|
||||
// void func_80120F90(void);
|
||||
// void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14);
|
||||
// void func_80121064(void);
|
||||
|
|
@ -2361,7 +2361,7 @@ void func_80140EA0(Struct_80140E80* arg0);
|
|||
// void func_80141200(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_8014151C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_80141678(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_80141778(void);
|
||||
void func_80141778(Struct_80140E80* arg0, Gfx** gfxp, void* unk_18E60, GraphicsContext* gfxCtx);
|
||||
void VisMono_Init(VisMono* this);
|
||||
void VisMono_Destroy(VisMono* this);
|
||||
// void VisMono_DesaturateTLUT(u16* tlut);
|
||||
|
|
@ -2431,7 +2431,7 @@ u8 Message_GetState(MessageContext* msgCtx);
|
|||
// void func_80153E7C(void);
|
||||
// void func_80153EF0(void);
|
||||
void func_801541D4(PlayState* play, Gfx** gfxp);
|
||||
// void func_80156758(void);
|
||||
void func_80156758(PlayState* play);
|
||||
void func_8015680C(PlayState* play);
|
||||
void func_801586A4(PlayState* play);
|
||||
void Message_Init(PlayState* play);
|
||||
|
|
@ -2556,8 +2556,8 @@ void Play_Draw(PlayState* play);
|
|||
void func_80168DAC(PlayState* play);
|
||||
void Play_Main(GameState* thisx);
|
||||
s32 Play_InCsMode(PlayState* play);
|
||||
f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** arg2, s32* arg3, Vec3f* feetPosPtr);
|
||||
// void func_801691F0(void);
|
||||
f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* feetPos);
|
||||
void func_801691F0(PlayState* this, MtxF* mtx, Vec3f* feetPos);
|
||||
void* Play_LoadScene(PlayState* play, RomFile* entry);
|
||||
void func_8016927C(PlayState* play, s16 sParm2);
|
||||
// void func_801692C4(PlayState* play, UNK_TYPE1 uParm2);
|
||||
|
|
@ -2601,9 +2601,9 @@ void Play_Init(GameState* gameState);
|
|||
// void func_8016CD4C(void);
|
||||
// void func_8016E40C(void);
|
||||
// void func_8016EA90(void);
|
||||
// void func_8016F1A8(void);
|
||||
void func_8016F1A8(HiresoStruct* arg0, GraphicsContext* gfxCtx);
|
||||
// void func_8016F4EC(void);
|
||||
void func_8016F5A8(PlayState* play, s8* pcParm2, Input* iParm3);
|
||||
void func_8016F5A8(PlayState* play, HiresoStruct* arg1, Input* input);
|
||||
void func_8016FC78(HiresoStruct* this);
|
||||
void func_8016FC98(HiresoStruct* this);
|
||||
void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg);
|
||||
|
|
@ -2778,11 +2778,11 @@ void func_801780F0(Mtx* param_1, f32 param_2, f32 param_3, f32 param_4, f32 para
|
|||
// void func_801781EC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
void func_8017842C(MtxF* arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9, f32 arg10);
|
||||
void func_80178750(void);
|
||||
// void func_80178818(void);
|
||||
void func_80178818(void);
|
||||
void func_80178978(void);
|
||||
// void func_801789D4(void);
|
||||
u32 SysCfb_GetFbPtr(s32 index);
|
||||
u32 SysCfb_GetZBuffer(void);
|
||||
void* SysCfb_GetFbPtr(s32 index);
|
||||
void* SysCfb_GetZBuffer(void);
|
||||
// UNK_TYPE4 func_80178A24(void);
|
||||
// void func_80178A34(void);
|
||||
s32 func_80178A94(s32 param_1, s32 param_2);
|
||||
|
|
|
|||
|
|
@ -3275,7 +3275,7 @@ extern UNK_TYPE2 D_801FBBCC;
|
|||
extern UNK_TYPE2 D_801FBBCE;
|
||||
// extern UNK_TYPE1 D_801FBBD0;
|
||||
// extern UNK_TYPE1 D_801FBBD2;
|
||||
// extern UNK_TYPE1 D_801FBBD4;
|
||||
extern u8 D_801FBBD4;
|
||||
// extern UNK_TYPE1 D_801FBBE0;
|
||||
extern Vec3f D_801FBBF0;
|
||||
extern LineSegment Math3D_ColSphereTri_line;
|
||||
|
|
|
|||
|
|
@ -1193,7 +1193,7 @@ struct PlayState {
|
|||
/* 0x18E54 */ SceneTableEntry* loadedScene;
|
||||
/* 0x18E58 */ UNK_PTR unk_18E58;
|
||||
/* 0x18E5C */ UNK_PTR unk_18E5C;
|
||||
/* 0x18E60 */ UNK_PTR unk_18E60;
|
||||
/* 0x18E60 */ void* unk_18E60;
|
||||
/* 0x18E64 */ void* unk_18E64;
|
||||
/* 0x18E68 */ void* unk_18E68;
|
||||
/* 0x18E6C */ char unk_18E6C[0x3EC];
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ void Graph_SetNextGfxPool(GraphicsContext* gfxCtx) {
|
|||
gfxCtx->workBuffer = pool->workBuffer;
|
||||
gfxCtx->debugBuffer = pool->debugBuffer;
|
||||
|
||||
gfxCtx->curFrameBuffer = (u16*)SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2);
|
||||
gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2);
|
||||
gSegments[0x0F] = gfxCtx->curFrameBuffer;
|
||||
|
||||
gfxCtx->zbuffer = SysCfb_GetZBuffer();
|
||||
|
|
|
|||
|
|
@ -17,9 +17,59 @@ extern Struct_80140E80 D_801F6D38;
|
|||
extern Struct_80140E80* D_801F6D4C;
|
||||
extern HiresoStruct D_801F6D50;
|
||||
extern u8 D_801F6DFC;
|
||||
extern s8 D_801F6DFD;
|
||||
extern u8 D_801F6DFD;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165460.s")
|
||||
void func_80165460(PlayState* this) {
|
||||
GraphicsContext* gfxCtx = this->state.gfxCtx;
|
||||
s32 alpha;
|
||||
Gfx* gfx;
|
||||
Gfx* dlistHead;
|
||||
|
||||
if (SREG(93) != 0) {
|
||||
alpha = SREG(92);
|
||||
|
||||
if (D_801F6DFD == 0) {
|
||||
D_801F6DFD = 1;
|
||||
}
|
||||
} else if (SREG(91) != 0) {
|
||||
alpha = SREG(90);
|
||||
|
||||
if (D_801F6DFD == 0) {
|
||||
D_801F6DFD = 1;
|
||||
}
|
||||
} else {
|
||||
alpha = 0;
|
||||
D_801F6DFD = 0;
|
||||
}
|
||||
|
||||
if (D_801F6DFD != 0) {
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
dlistHead = POLY_OPA_DISP;
|
||||
gfx = Graph_GfxPlusOne(dlistHead);
|
||||
|
||||
gSPDisplayList(OVERLAY_DISP++, gfx);
|
||||
|
||||
this->pauseBgPreRender.fbuf = gfxCtx->curFrameBuffer;
|
||||
this->pauseBgPreRender.fbufSave = this->unk_18E64;
|
||||
|
||||
if (D_801F6DFD == 2) {
|
||||
func_80170AE0(&this->pauseBgPreRender, &gfx, alpha);
|
||||
} else {
|
||||
D_801F6DFD = 2;
|
||||
}
|
||||
|
||||
func_801705B4(&this->pauseBgPreRender, &gfx);
|
||||
|
||||
gSPEndDisplayList(gfx++);
|
||||
|
||||
Graph_BranchDlist(dlistHead, gfx);
|
||||
|
||||
POLY_OPA_DISP = gfx;
|
||||
|
||||
CLOSE_DISPS(gfxCtx);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80165608(void) {
|
||||
SREG(91) = 0;
|
||||
|
|
@ -33,7 +83,9 @@ void func_80165630(void) {
|
|||
D_801F6DFD = 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165658.s")
|
||||
void func_80165658(u32 arg0) {
|
||||
SREG(90) = arg0;
|
||||
}
|
||||
|
||||
void func_8016566C(u32 arg0) {
|
||||
SREG(90) = arg0;
|
||||
|
|
@ -47,13 +99,22 @@ void func_80165690(void) {
|
|||
void func_801656A4(u8* arg0, u16* arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801656A4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DB8.s")
|
||||
void func_80165DB8(s32 arg0) {
|
||||
SREG(92) = arg0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DCC.s")
|
||||
void func_80165DCC(s32 arg0) {
|
||||
SREG(92) = arg0;
|
||||
SREG(93) = 1;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DF0.s")
|
||||
void func_80165DF0(void) {
|
||||
SREG(93) = 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165E04.s")
|
||||
void func_80165E04(void) {
|
||||
SREG(89) = 1;
|
||||
}
|
||||
|
||||
void func_80165E1C(PreRender* prerender) {
|
||||
PreRender_ApplyFilters(prerender);
|
||||
|
|
@ -234,13 +295,13 @@ void Play_Destroy(GameState* thisx) {
|
|||
if (D_801F6DFC != 0) {
|
||||
MsgEvent_SendNullTask();
|
||||
func_80178750();
|
||||
gfxCtx->curFrameBuffer = (u16*)SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2);
|
||||
gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2);
|
||||
gfxCtx->zbuffer = SysCfb_GetZBuffer();
|
||||
gfxCtx->viMode = D_801FBB88;
|
||||
gfxCtx->viConfigFeatures = gViConfigFeatures;
|
||||
gfxCtx->xScale = gViConfigXScale;
|
||||
gfxCtx->yScale = gViConfigYScale;
|
||||
gfxCtx->updateViMode = 1;
|
||||
gfxCtx->updateViMode = true;
|
||||
D_801F6DFC = 0;
|
||||
}
|
||||
|
||||
|
|
@ -372,13 +433,117 @@ Input* D_801D0D60 = NULL;
|
|||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Update.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80167DE4.s")
|
||||
void func_80167DE4(PlayState* play) {
|
||||
if (D_801F6DFC == 0) {
|
||||
if (play->pauseCtx.unk_1F0 != 0) {
|
||||
D_801F6DFC = 1;
|
||||
D_801F6D50.unk_00 = 0;
|
||||
}
|
||||
} else {
|
||||
if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_L) ||
|
||||
CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_B) ||
|
||||
CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_START) || (gIrqMgrResetStatus != 0)) {
|
||||
D_801F6DFC = 0;
|
||||
play->pauseCtx.unk_1F0 = 0;
|
||||
D_801F6D50.unk_00 = 0;
|
||||
play->msgCtx.msgLength = 0;
|
||||
play->msgCtx.msgMode = 0;
|
||||
play->msgCtx.currentTextId = 0;
|
||||
play->msgCtx.stateTimer = 0;
|
||||
play_sound(NA_SE_SY_CANCEL);
|
||||
}
|
||||
}
|
||||
if (D_801F6DFC != 0) {
|
||||
func_8016F5A8(play, &D_801F6D50, play->state.input);
|
||||
func_8015680C(play);
|
||||
} else {
|
||||
Play_Update(play);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80167F0C.s")
|
||||
void func_80167F0C(PlayState* this) {
|
||||
Gfx* sp34;
|
||||
Gfx* sp30;
|
||||
GraphicsContext* gfxCtx;
|
||||
|
||||
if ((this->pauseCtx.state != 0) || (this->pauseCtx.debugEditor != 0)) {
|
||||
KaleidoScopeCall_Draw(this);
|
||||
}
|
||||
|
||||
if (gSaveContext.gameMode == 0) {
|
||||
func_8011F0E0(this);
|
||||
}
|
||||
|
||||
if (((this->pauseCtx.state == 0) && (this->pauseCtx.debugEditor == 0)) || (this->msgCtx.currentTextId != 0xFF)) {
|
||||
func_80156758(this);
|
||||
}
|
||||
|
||||
if (this->gameOverCtx.state != 0) {
|
||||
GameOver_FadeLights(this);
|
||||
}
|
||||
|
||||
if (gSaveContext.screenScaleFlag != 0) {
|
||||
gfxCtx = this->state.gfxCtx;
|
||||
D_801F6D4C->scale = gSaveContext.screenScale / 1000.0f;
|
||||
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
sp30 = POLY_OPA_DISP;
|
||||
sp34 = Graph_GfxPlusOne(sp30);
|
||||
gSPDisplayList(OVERLAY_DISP++, sp34);
|
||||
|
||||
func_80141778(D_801F6D4C, &sp34, this->unk_18E60, gfxCtx);
|
||||
|
||||
gSPEndDisplayList(sp34++);
|
||||
Graph_BranchDlist(sp30, sp34);
|
||||
POLY_OPA_DISP = sp34;
|
||||
|
||||
CLOSE_DISPS(gfxCtx);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Draw.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80168DAC.s")
|
||||
void func_80168DAC(PlayState* this) {
|
||||
GraphicsContext* gfxCtx = this->state.gfxCtx;
|
||||
|
||||
{
|
||||
GraphicsContext* gfxCtx2 = this->state.gfxCtx;
|
||||
|
||||
if (D_801F6DFC != 0) {
|
||||
if (D_801FBBD4 != 1) {
|
||||
MsgEvent_SendNullTask();
|
||||
func_80178818();
|
||||
gfxCtx2->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx2->framebufferIdx % 2);
|
||||
gfxCtx2->zbuffer = SysCfb_GetZBuffer();
|
||||
gfxCtx2->viMode = D_801FBB88;
|
||||
gfxCtx2->viConfigFeatures = gViConfigFeatures;
|
||||
gfxCtx2->xScale = gViConfigXScale;
|
||||
gfxCtx2->yScale = gViConfigYScale;
|
||||
gfxCtx2->updateViMode = true;
|
||||
}
|
||||
} else {
|
||||
if (D_801FBBD4 != 0) {
|
||||
MsgEvent_SendNullTask();
|
||||
func_80178750();
|
||||
gfxCtx2->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx2->framebufferIdx % 2);
|
||||
gfxCtx2->zbuffer = SysCfb_GetZBuffer();
|
||||
gfxCtx2->viMode = D_801FBB88;
|
||||
gfxCtx2->viConfigFeatures = gViConfigFeatures;
|
||||
gfxCtx2->xScale = gViConfigXScale;
|
||||
gfxCtx2->yScale = gViConfigYScale;
|
||||
gfxCtx2->updateViMode = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((D_801F6DFC != 0) && ((SREG(2) != 2) || (gZBufferPtr == NULL))) {
|
||||
func_8016F1A8(&D_801F6D50, gfxCtx);
|
||||
func_80156758(this);
|
||||
} else {
|
||||
Play_Draw(this);
|
||||
}
|
||||
}
|
||||
|
||||
void Play_Main(GameState* thisx);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Main.s")
|
||||
|
|
@ -387,9 +552,38 @@ s32 Play_InCsMode(PlayState* this) {
|
|||
return (this->csCtx.state != 0) || Player_InCsMode(this);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80169100.s")
|
||||
f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* feetPos) {
|
||||
f32 floorHeight = BgCheck_EntityRaycastFloor3(&play->colCtx, poly, bgId, feetPos);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801691F0.s")
|
||||
if (floorHeight > BGCHECK_Y_MIN) {
|
||||
func_800C0094(*poly, feetPos->x, floorHeight, feetPos->z, mtx);
|
||||
} else {
|
||||
mtx->xy = 0.0f;
|
||||
mtx->zx = 0.0f;
|
||||
mtx->yx = 0.0f;
|
||||
mtx->xx = 0.0f;
|
||||
mtx->wz = 0.0f;
|
||||
mtx->xz = 0.0f;
|
||||
mtx->wy = 0.0f;
|
||||
mtx->wx = 0.0f;
|
||||
mtx->zz = 0.0f;
|
||||
mtx->yz = 0.0f;
|
||||
mtx->zy = 0.0f;
|
||||
mtx->yy = 1.0f;
|
||||
mtx->xw = feetPos->x;
|
||||
mtx->yw = feetPos->y;
|
||||
mtx->zw = feetPos->z;
|
||||
mtx->ww = 1.0f;
|
||||
}
|
||||
return floorHeight;
|
||||
}
|
||||
|
||||
void func_801691F0(PlayState* this, MtxF* mtx, Vec3f* feetPos) {
|
||||
CollisionPoly* poly;
|
||||
s32 bgId;
|
||||
|
||||
func_80169100(this, mtx, &poly, &bgId, feetPos);
|
||||
}
|
||||
|
||||
void* Play_LoadScene(PlayState* this, RomFile* entry) {
|
||||
size_t size = entry->vromEnd - entry->vromStart;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
#include "global.h"
|
||||
|
||||
#define SCENE_ENTRY(name, textId, config) \
|
||||
{ { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, textId, 0, config, 0 }
|
||||
{ { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, textId, 0, config, 0, 0 }
|
||||
|
||||
#define SCENE_ENTRY_NONE() \
|
||||
{ { 0, 0 }, 0, 0, 0, 0 }
|
||||
{ { 0, 0 }, 0, 0, 0, 0, 0 }
|
||||
|
||||
SceneTableEntry gSceneTable[] = {
|
||||
/* 0x00 */ SCENE_ENTRY(Z2_20SICHITAI2, 0x0116, SCENE_DRAW_CFG_MAT_ANIM),
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ void MapSelect_LoadGame(MapSelectState* this, u32 entrance, s32 spawn) {
|
|||
|
||||
if (spawn != 0) {
|
||||
gSaveContext.save.entrance =
|
||||
Entrance_Create((s32)gSaveContext.save.entrance >> 9, spawn, gSaveContext.save.entrance & 0xF);
|
||||
Entrance_Create(gSaveContext.save.entrance >> 9, spawn, gSaveContext.save.entrance & 0xF);
|
||||
}
|
||||
if (gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 0)) {
|
||||
gSaveContext.save.day = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue