mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-09 13:45:23 -04:00
Matched several functions (#1020)
* matchmaker, matchmaker * more matches * one fix * I'll format you good * cleanup Co-authored-by: petrie911 <pmontag@PHYS-S129.iowa.uiowa.edu>
This commit is contained in:
+16
-22
@@ -488,6 +488,7 @@ void func_800EADB0(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) {
|
||||
}
|
||||
}
|
||||
#else
|
||||
void func_800EADB0(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_demo/func_800EADB0.s")
|
||||
#endif
|
||||
|
||||
@@ -1111,8 +1112,6 @@ void func_800ECD7C(CutsceneContext* csCtx, u8** cutscenePtr, s16 index) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// Some stack issues, and a few instructions in the "wrong" places
|
||||
/**
|
||||
* Loops over the cutscene data itself (`cutscenePtr`), applying the effects of each command instantaneously (for most
|
||||
* commands).
|
||||
@@ -1141,14 +1140,13 @@ void func_800ECD7C(CutsceneContext* csCtx, u8** cutscenePtr, s16 index) {
|
||||
*/
|
||||
void Cutscene_ProcessCommands(PlayState* play, CutsceneContext* csCtx, u8* cutscenePtr) {
|
||||
s32 i;
|
||||
s16 phi_s0;
|
||||
s32 totalEntries;
|
||||
s32 j;
|
||||
u32 cmdType; // sp5C
|
||||
s32 pad;
|
||||
s32 cmdEntries; // sp58
|
||||
s32 cutsceneEndFrame; // sp50
|
||||
s16 phi_s0_23;
|
||||
s32 totalEntries;
|
||||
u32 cmdType;
|
||||
s32 cmdEntries;
|
||||
s32 pad2;
|
||||
s32 cutsceneEndFrame;
|
||||
CsCmdBase* cmd;
|
||||
|
||||
// Read the command list count and the ending frame for this cutscene
|
||||
@@ -1177,14 +1175,14 @@ void Cutscene_ProcessCommands(PlayState* play, CutsceneContext* csCtx, u8* cutsc
|
||||
// Check special cases of command types. This are generic ActorActions
|
||||
// Ranges: [0x64, 0x96), 0xC9, [0x1C2, 0x258)
|
||||
if (((cmdType >= 100) && (cmdType < 150)) || (cmdType == 201) || ((cmdType >= 450) && (cmdType < 600))) {
|
||||
for (phi_s0 = 0; phi_s0 < ARRAY_COUNT(D_801F4DC8); phi_s0++) {
|
||||
if ((u16)cmdType == D_801F4DC8[phi_s0]) {
|
||||
func_800ECD7C(csCtx, &cutscenePtr, phi_s0);
|
||||
for (j = 0; j < ARRAY_COUNT(D_801F4DC8); j = (s16)(j + 1)) {
|
||||
if (D_801F4DC8[j] == (u16)cmdType) {
|
||||
func_800ECD7C(csCtx, &cutscenePtr, j);
|
||||
cmdType = -2;
|
||||
break;
|
||||
} else if (D_801F4DC8[phi_s0] == 0) {
|
||||
D_801F4DC8[phi_s0] = cmdType;
|
||||
func_800ECD7C(csCtx, &cutscenePtr, phi_s0);
|
||||
} else if (D_801F4DC8[j] == 0) {
|
||||
D_801F4DC8[j] = cmdType;
|
||||
func_800ECD7C(csCtx, &cutscenePtr, j);
|
||||
cmdType = -2;
|
||||
break;
|
||||
}
|
||||
@@ -1314,15 +1312,15 @@ void Cutscene_ProcessCommands(PlayState* play, CutsceneContext* csCtx, u8* cutsc
|
||||
cutscenePtr += sizeof(s32);
|
||||
for (j = 0; j < cmdEntries; j++) {
|
||||
cmd = (CsCmdBase*)cutscenePtr;
|
||||
if ((csCtx->frames >= cmd->startFrame) && (csCtx->frames < cmd->endFrame)) {
|
||||
csCtx->playerAction = (CsCmdActorAction*)cutscenePtr;
|
||||
if ((cmd->startFrame <= csCtx->frames) && (csCtx->frames < cmd->endFrame)) {
|
||||
csCtx->playerAction = (CsCmdActorAction*)cmd;
|
||||
}
|
||||
cutscenePtr += sizeof(CsCmdActorAction);
|
||||
}
|
||||
break;
|
||||
|
||||
case CS_CMD_CAMERA:
|
||||
cutscenePtr = &cutscenePtr[Cutscene_Command_Camera(play, cutscenePtr)];
|
||||
cutscenePtr += Cutscene_Command_Camera(play, cutscenePtr);
|
||||
break;
|
||||
|
||||
case CS_CMD_TERMINATOR:
|
||||
@@ -1349,7 +1347,7 @@ void Cutscene_ProcessCommands(PlayState* play, CutsceneContext* csCtx, u8* cutsc
|
||||
for (j = 0; j < cmdEntries; j++) {
|
||||
cmd = (CsCmdBase*)cutscenePtr;
|
||||
if (cmd->base != 0xFFFF) {
|
||||
Cutscene_Command_Textbox(play, csCtx, (CsCmdTextbox*)cutscenePtr);
|
||||
Cutscene_Command_Textbox(play, csCtx, (CsCmdTextbox*)cmd);
|
||||
}
|
||||
cutscenePtr += sizeof(CsCmdTextbox);
|
||||
}
|
||||
@@ -1395,10 +1393,6 @@ void Cutscene_ProcessCommands(PlayState* play, CutsceneContext* csCtx, u8* cutsc
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
void Cutscene_ProcessCommands(PlayState* play, CutsceneContext* csCtx, u8* cutscenePtr);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_demo/Cutscene_ProcessCommands.s")
|
||||
#endif
|
||||
|
||||
/* End of command handling section */
|
||||
|
||||
|
||||
+21
-44
@@ -254,62 +254,39 @@ void func_8014CCB4(PlayState* play, s16* decodedBufPos, s32* offset, f32* arg3)
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/func_8014D304.s")
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
extern u16* D_801D0188;
|
||||
extern s16* D_801D0250;
|
||||
extern u16 D_801D0188[][9];
|
||||
extern s16 D_801D0250[];
|
||||
|
||||
void func_8014D62C(PlayState* play, s32* arg1, f32* arg2, s16* arg3) {
|
||||
f32 sp3C;
|
||||
s16 temp_s0;
|
||||
s16 temp_s1;
|
||||
s16 temp_s1_2;
|
||||
MessageContext* msgCtx = &play->msgCtx;
|
||||
PauseContext* pauseCtx = &play->pauseCtx;
|
||||
s16 temp_s6;
|
||||
s32 temp_s2;
|
||||
s32 temp_s2_2;
|
||||
u16* temp_v0;
|
||||
s16 temp_s1 = *arg3;
|
||||
s32 temp_s2 = *arg1;
|
||||
f32 sp3C = *arg2;
|
||||
s16 phi_v0;
|
||||
s16 phi_s0;
|
||||
s16 phi_s1;
|
||||
s32 phi_s2;
|
||||
s16 phi_s1_2;
|
||||
s32 phi_s2_2;
|
||||
|
||||
temp_s1 = *arg3;
|
||||
temp_s2 = *arg1;
|
||||
sp3C = *arg2;
|
||||
if ((func_8010A0A4(play) != 0) || (play->sceneNum == 0x4F)) {
|
||||
phi_v0 = 0xA;
|
||||
} else {
|
||||
phi_v0 = play->pauseCtx.unk_238[PAUSE_WORLD_MAP];
|
||||
phi_v0 = pauseCtx->unk_238[PAUSE_WORLD_MAP];
|
||||
}
|
||||
temp_s6 = *(&D_801D0250 + (phi_v0 * 2));
|
||||
phi_s0 = 0;
|
||||
phi_s1_2 = temp_s1;
|
||||
phi_s2_2 = temp_s2;
|
||||
if ((s32)temp_s6 > 0) {
|
||||
phi_s1 = temp_s1;
|
||||
phi_s2 = temp_s2;
|
||||
do {
|
||||
temp_v0 = (phi_v0 * 0x12) + &D_801D0188 + (phi_s0 * 2);
|
||||
(play + 0x4908 + (phi_s1 * 2))->decodedBuffer = (u16)*temp_v0;
|
||||
Font_LoadChar(play, *temp_v0, phi_s2);
|
||||
temp_s0 = phi_s0 + 1;
|
||||
temp_s1_2 = phi_s1 + 1;
|
||||
temp_s2_2 = phi_s2 + 0x80;
|
||||
phi_s0 = temp_s0;
|
||||
phi_s1 = temp_s1_2;
|
||||
phi_s2 = temp_s2_2;
|
||||
phi_s1_2 = temp_s1_2;
|
||||
phi_s2_2 = temp_s2_2;
|
||||
} while ((s32)temp_s0 < (s32)temp_s6);
|
||||
|
||||
temp_s6 = D_801D0250[phi_v0];
|
||||
|
||||
for (phi_s0 = 0; phi_s0 < temp_s6; phi_s0++, temp_s1++, temp_s2 += 0x80) {
|
||||
msgCtx->decodedBuffer.wchar[temp_s1] = D_801D0188[phi_v0][phi_s0];
|
||||
Font_LoadChar(play, D_801D0188[phi_v0][phi_s0], temp_s2);
|
||||
}
|
||||
*arg3 = phi_s1_2 - 1;
|
||||
*arg1 = phi_s2_2;
|
||||
*arg2 = sp3C + ((f32)(temp_s6 - 1) * (16.0f * play->msgCtx.unk12098));
|
||||
|
||||
temp_s1--;
|
||||
sp3C += (temp_s6 - 1) * (16.0f * msgCtx->unk12098);
|
||||
|
||||
*arg3 = temp_s1;
|
||||
*arg1 = temp_s2;
|
||||
*arg2 = sp3C;
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/func_8014D62C.s")
|
||||
#endif
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/func_8014D7B4.s")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user