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:
petrie911
2022-08-15 13:55:42 -05:00
committed by GitHub
parent 78684187fe
commit c5254084c2
11 changed files with 132 additions and 235 deletions
+16 -22
View File
@@ -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
View File
@@ -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")